master 2811955668d8 cached
35 files
15.4 MB
4.0M tokens
55 symbols
1 requests
Copy disabled (too large) Download .txt
Showing preview only (16,170K chars total). Download the full file to get everything.
Repository: fuxuemingzhu/MovieLens-Recommender
Branch: master
Commit: 2811955668d8
Files: 35
Total size: 15.4 MB

Directory structure:
gitextract_x74nph22/

├── .gitignore
├── ItemCF.py
├── LFM.py
├── README.md
├── UserCF.py
├── data/
│   ├── ml-100k/
│   │   ├── README
│   │   ├── allbut.pl
│   │   ├── mku.sh
│   │   ├── u.data
│   │   ├── u.genre
│   │   ├── u.info
│   │   ├── u.item
│   │   ├── u.occupation
│   │   ├── u.user
│   │   ├── u1.base
│   │   ├── u1.test
│   │   ├── u2.base
│   │   ├── u2.test
│   │   ├── u3.base
│   │   ├── u3.test
│   │   ├── u4.base
│   │   ├── u4.test
│   │   ├── u5.base
│   │   ├── u5.test
│   │   ├── ua.base
│   │   ├── ua.test
│   │   ├── ub.base
│   │   └── ub.test
│   └── ml-1m/
│       └── README
├── dataset.py
├── main.py
├── most_popular.py
├── random_pred.py
├── similarity.py
└── utils.py

================================================
FILE CONTENTS
================================================

================================================
FILE: .gitignore
================================================
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]

# C extensions
*.so

# Distribution / packaging
.Python
env/
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
*.egg-info/
.installed.cfg
*.egg

# PyInstaller
#  Usually these files are written by a python script from a template
#  before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec

# Installer logs
pip-log.txt
pip-delete-this-directory.txt

# Unit test / coverage reports
htmlcov/
.tox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*,cover

# Translations
*.mo
*.pot

# Django stuff:
*.log

# Sphinx documentation
docs/_build/

# PyBuilder
target/

# Movie rating data

# model
model/

# run log
log/

# vscode
.vscode/

# IDE
.idea/

================================================
FILE: ItemCF.py
================================================
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
@author: fuxuemingzhu 
@site: www.fuxuemingzhu.cn

@file: ItemCF.py
@time: 18-4-16 下午6:17

Description : Item-based Collaborative filtering.
"""
import collections
from operator import itemgetter

import math

from collections import defaultdict

import similarity
import utils
from utils import LogTime


class ItemBasedCF:
    """
    Item-based Collaborative filtering.
    Top-N recommendation.
    """

    def __init__(self, k_sim_movie=20, n_rec_movie=10, use_iuf_similarity=False, save_model=True):
        """
        Init UserBasedCF with n_sim_user and n_rec_movie.
        :return: None
        """
        print("ItemBasedCF start...\n")
        self.k_sim_movie = k_sim_movie
        self.n_rec_movie = n_rec_movie
        self.trainset = None
        self.save_model = save_model
        self.use_iuf_similarity = use_iuf_similarity

    def fit(self, trainset):
        """
        Fit the trainset by calculate movie similarity matrix.
        :param trainset: train dataset
        :return: None
        """
        model_manager = utils.ModelManager()
        try:
            self.movie_sim_mat = model_manager.load_model(
                'movie_sim_mat-iif' if self.use_iuf_similarity else 'movie_sim_mat')
            self.movie_popular = model_manager.load_model('movie_popular')
            self.movie_count = model_manager.load_model('movie_count')
            self.trainset = model_manager.load_model('trainset')
            print('Movie similarity model has saved before.\nLoad model success...\n')
        except OSError:
            print('No model saved before.\nTrain a new model...')
            self.movie_sim_mat, self.movie_popular, self.movie_count = \
                similarity.calculate_item_similarity(trainset=trainset,
                                                     use_iuf_similarity=self.use_iuf_similarity)
            self.trainset = trainset
            print('Train a new model success.')
            if self.save_model:
                model_manager.save_model(self.movie_sim_mat,
                                         'movie_sim_mat-iif' if self.use_iuf_similarity else 'movie_sim_mat')
                model_manager.save_model(self.movie_popular, 'movie_popular')
                model_manager.save_model(self.movie_count, 'movie_count')
                model_manager.save_model(self.trainset, 'trainset')
                print('The new model has saved success.\n')

    def recommend(self, user):
        """
        Find K similar movies and recommend N movies for the user.
        :param user: The user we recommend movies to.
        :return: the N best score movies
        """
        if not self.movie_sim_mat or not self.n_rec_movie or \
                not self.trainset or not self.movie_popular or not self.movie_count:
            raise NotImplementedError('ItemCF has not init or fit method has not called yet.')
        K = self.k_sim_movie
        N = self.n_rec_movie
        predict_score = collections.defaultdict(int)
        if user not in self.trainset:
            print('The user (%s) not in trainset.' % user)
            return
        # print('Recommend movies to user start...')
        watched_movies = self.trainset[user]
        for movie, rating in watched_movies.items():
            for related_movie, similarity_factor in sorted(self.movie_sim_mat[movie].items(),
                                                           key=itemgetter(1), reverse=True)[0:K]:
                if related_movie in watched_movies:
                    continue
                # predict the user's "interest" for each movie
                # the predict_score is sum(similarity_factor * rating)
                predict_score[related_movie] += similarity_factor * rating
                # log steps and times.
        # print('Recommend movies to user success.')
        # return the N best score movies
        return [movie for movie, _ in sorted(predict_score.items(), key=itemgetter(1), reverse=True)[0:N]]

    def test(self, testset):
        """
        Test the recommendation system by recommending scores to all users in testset.
        :param testset: test dataset
        :return:
        """
        if not self.n_rec_movie or not self.trainset or not self.movie_popular or not self.movie_count:
            raise ValueError('ItemCF has not init or fit method has not called yet.')
        self.testset = testset
        print('Test recommendation system start...')
        N = self.n_rec_movie
        #  varables for precision and recall
        hit = 0
        rec_count = 0
        test_count = 0
        # varables for coverage
        all_rec_movies = set()
        # varables for popularity
        popular_sum = 0

        # record the calculate time has spent.
        test_time = LogTime(print_step=1000)
        for i, user in enumerate(self.trainset):
            test_movies = self.testset.get(user, {})
            rec_movies = self.recommend(user)  # type:list
            for movie in rec_movies:
                if movie in test_movies:
                    hit += 1
                all_rec_movies.add(movie)
                popular_sum += math.log(1 + self.movie_popular[movie])
                # log steps and times.
            rec_count += N
            test_count += len(test_movies)
            # print time per 500 times.
            test_time.count_time()
        precision = hit / (1.0 * rec_count)
        recall = hit / (1.0 * test_count)
        coverage = len(all_rec_movies) / (1.0 * self.movie_count)
        popularity = popular_sum / (1.0 * rec_count)

        print('Test recommendation system success.')
        test_time.finish()

        print('precision=%.4f\trecall=%.4f\tcoverage=%.4f\tpopularity=%.4f\n' %
              (precision, recall, coverage, popularity))

    def predict(self, testset):
        """
        Recommend movies to all users in testset.
        :param testset: test dataset
        :return: `dict` : recommend list for each user.
        """
        movies_recommend = defaultdict(list)
        print('Predict scores start...')
        # record the calculate time has spent.
        predict_time = LogTime(print_step=500)
        for i, user in enumerate(testset):
            rec_movies = self.recommend(user)  # type:list
            movies_recommend[user].append(rec_movies)
            # log steps and times.
            predict_time.count_time()
        print('Predict scores success.')
        predict_time.finish()
        return movies_recommend


================================================
FILE: LFM.py
================================================
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
@author: fuxuemingzhu 
@site: www.fuxuemingzhu.cn

@file: LFM.py
@time: 18-6-19 下午2:38

Description : Latent Factor Model
"""
import collections
import random
from operator import itemgetter

import math

from collections import defaultdict

import utils
from utils import LogTime


class LFM:
    """
    Latent Factor Model.
    Top-N recommendation.
    """

    def __init__(self, K, epochs, alpha, lamb, n_rec_movie=10, save_model=True):
        """
        Init LFM with K, T, alpha, lamb
        :param K: Latent Factor dimension
        :param epochs: epochs to go
        :param alpha: study rate
        :param lamb: regular params
        :param save_model: save model
        """
        print("LFM start...\n")
        self.K = K
        self.epochs = epochs
        self.alpha = alpha
        self.lamb = lamb
        self.n_rec_movie = n_rec_movie
        self.save_model = save_model
        self.users_set, self.items_set = set(), set()
        self.items_list = list()
        self.P, self.Q = None, None
        self.trainset = None
        self.testset = None
        self.item_popular, self.items_count = None, None
        self.model_name = 'K={}-epochs={}-alpha={}-lamb={}'.format(self.K, self.epochs, self.alpha, self.lamb)

    def init_model(self, users_set, items_set, K):
        """
        Init model, set P and Q with random numbers.
        :param users_set: Users set
        :param items_set: Items set
        :param K: Latent factor dimension.
        :return: None
        """
        self.P = dict()
        self.Q = dict()
        for user in users_set:
            self.P[user] = [random.random()/math.sqrt(K) for _ in range(K)]
        for item in items_set:
            self.Q[item] = [random.random()/math.sqrt(K) for _ in range(K)]

    def init_users_items_set(self, trainset):
        """
        Get users set and items set.
        :param trainset: train dataset
        :return: Basic users and items set, etc.
        """
        users_set, items_set = set(), set()
        items_list = []
        item_popular = defaultdict(int)
        for user, movies in trainset.items():
            for item in movies:
                item_popular[item] += 1
                users_set.add(user)
                items_set.add(item)
                items_list.append(item)
        items_count = len(items_set)
        return users_set, items_set, items_list, item_popular, items_count

    def gen_negative_sample(self, items: dict):
        """
        Generate negative samples
        :param items: Original items, positive sample
        :return: Positive and negative samples
        """
        samples = dict()
        for item, rate in items.items():
            samples[item] = 1
        for i in range(len(items) * 11):
            item = self.items_list[random.randint(0, len(self.items_list) - 1)]
            if item in samples:
                continue
            samples[item] = 0
            if len(samples) >= 10 * len(items):
                break
        # print(samples)
        return samples

    def predict(self, user, item):
        """
        Predict the rate for item given user and P and Q.
        :param user: Given a user
        :param item: Given a item to predict the rate
        :return: The predict rate
        """
        rate_e = 0
        for k in range(self.K):
            Puk = self.P[user][k]
            Qki = self.Q[item][k]
            rate_e += Puk * Qki
        return rate_e

    def train(self, trainset):
        """
        Train model.
        :param trainset: Origin trainset.
        :return: None
        """
        for epoch in range(self.epochs):
            print('epoch:', epoch)
            for user in trainset:
                samples = self.gen_negative_sample(trainset[user])
                for item, rui in samples.items():
                    eui = rui - self.predict(user, item)
                    for k in range(self.K):
                        self.P[user][k] += self.alpha * (eui * self.Q[item][k] - self.lamb * self.P[user][k])
                        self.Q[item][k] += self.alpha * (eui * self.P[user][k] - self.lamb * self.Q[item][k])
            self.alpha *= 0.9
            # print(self.P)
            # print(self.Q)

    def fit(self, trainset):
        """
        Fit the trainset by optimize the P and Q.
        :param trainset: train dataset
        :return: None
        """
        self.trainset = trainset
        self.users_set, self.items_set, self.items_list, self.item_popular, self.items_count = \
            self.init_users_items_set(trainset)
        model_manager = utils.ModelManager()
        try:
            self.P = model_manager.load_model(self.model_name + '-P')
            self.Q = model_manager.load_model(self.model_name + '-Q')
            print('User origin similarity model has saved before.\nLoad model success...\n')
        except OSError:
            print('No model saved before.\nTrain a new model...')
            self.init_model(self.users_set, self.items_set, self.K)
            self.train(self.trainset)
            print('Train a new model success.')
            if self.save_model:
                model_manager.save_model(self.P, self.model_name + '-P')
                model_manager.save_model(self.Q, self.model_name + '-Q')
            print('The new model has saved success.\n')
        return self.P, self.Q

    def recommend(self, user):
        """
        Recommend N movies for the user.
        :param user: The user we recommend movies to.
        :return: the N best score movies
        """
        rank = collections.defaultdict(float)
        interacted_items = self.trainset[user]
        for item in self.items_set:
            if item in interacted_items.keys():
                continue
            for k, Qik in enumerate(self.Q[item]):
                rank[item] += self.P[user][k] * Qik
        return [movie for movie, _ in sorted(rank.items(), key=itemgetter(1), reverse=True)][:self.n_rec_movie]

    def test(self, testset):
        """
        Test the recommendation system by recommending scores to all users in testset.
        :param testset: test dataset
        :return: None
        """
        self.testset = testset
        print('Test recommendation system start...')
        #  varables for precision and recall
        hit = 0
        rec_count = 0
        test_count = 0
        # varables for coverage
        all_rec_movies = set()
        # varables for popularity
        popular_sum = 0

        # record the calculate time has spent.
        test_time = LogTime(print_step=1000)
        for user in self.users_set:
            test_movies = self.testset.get(user, {})
            rec_movies = self.recommend(user)  # type:list
            for movie in rec_movies:
                if movie in test_movies.keys():
                    hit += 1
                all_rec_movies.add(movie)
                popular_sum += math.log(1 + self.item_popular[movie])
                # log steps and times.
            rec_count += self.n_rec_movie
            test_count += len(test_movies)
            # print time per 500 times.
            test_time.count_time()
        precision = hit / (1.0 * rec_count)
        recall = hit / (1.0 * test_count)
        coverage = len(all_rec_movies) / (1.0 * self.items_count)
        popularity = popular_sum / (1.0 * rec_count)
        print('Test recommendation system success.')
        test_time.finish()
        print('precision=%.4f\trecall=%.4f\tcoverage=%.4f\tpopularity=%.4f\n' %
              (precision, recall, coverage, popularity))


================================================
FILE: README.md
================================================
# MovieLens-Recommender

[MovieLens-Recommender][1] is a pure Python implement of ``Collaborative Filtering``. Which contains ``User Based Collaborative Filtering(UserCF)`` and ``Item Based Collaborative Filtering(ItemCF)``. As comparisons, ``Random Based Recommendation`` and ``Most-Popular Based Recommendation`` are also included. The famous ``Latent Factor Model(LFM)`` is added in this Repo,too.

The buildin-datasets are ``Movielens-1M`` and ``Movielens-100k``. But of course, you can use other custom datasets.

Besides, there are two models named ``UserCF-IIF`` and ``ItemCF-IUF``, which have improvement to ``UseCF`` and ``ItemCF``. They eliminate the influence of very popular users or items.

# Overview

The book 《[推荐系统实践](https://book.douban.com/subject/10769749/)》 written by *Xiang Liang* is quite wonderful for those people who don't have much knowledge about Recommendation System. But the book only offers each function's implement of ``Collaborative Filtering``. A good architecture project with datasets-build and model-validation process are required.

So I made [MovieLens-Recommender][1] project, which is a pure Python implement of ``Collaborative Filtering`` based on the ideas of the book.

This repository is based on [MovieLens-RecSys][2], which is also a good implement of ``Collaborative Filtering``. But its efficiency is so damn poor!

Besides, [Surprise][3] is a very popular Python *scikit* building and analyzing recommender systems. So, I Mix the advantages of these two projects, and here comes ``MovieLens-Recommender``.

My Recommendation System contains four steps:

- Create trainset and testset
- Train a recommender model
- Give recommendations
- Evaluate results

At the end of a recommendation process, four numbers are given to measure the recommendation model, which are:

- Precision
- Recall
- Coverage
- Popularity

**No python extensions(e.g. Numpy/pandas) are needed!**

# Getting started

**1. Download**

``Git`` is awesome~

```shell
git clone https://github.com/fuxuemingzhu/MovieLens-Recommender.git
```

`Movielens-1M` and `Movielens-100k` datasets are under the `data/` folder.

**2. Run**

The configures are in `main.py`. Pleas choose the dataset and model you want to use and set the proper test_size. The default values in `main.py` are shown below:

```python
dataset_name = 'ml-100k'
# dataset_name = 'ml-1m'
# model_type = 'UserCF'
# model_type = 'UserCF-IIF'
# model_type = 'ItemCF'
# model_type = 'Random'
# model_type = 'MostPopular'
model_type = 'ItemCF-IUF'
# model_type = 'LFM'
test_size = 0.1
```

Then run ``python main.py`` in your command line. There will be a recommendation model built on the dataset you choose above.

Note: my code only tested on python3, so python3 is prefer.

```shell
Python main.py
#Python3 main.py
```
if you are using Linux, this command will redirect the whole output into a file.

```shell
Python main.py > run.log 2>&1 &
#Python3 main.py > run.log 2>&1 &
```

This command will run in background. You can wait for the result, or use `tail -f run.log` to see the real time result.

All model will be saved to `model/` fold, which means the time will be cut down in your next run.

**3. Output**

Here is a example run result of ItemCF model trained on ml-1m with test_size = 0.10. No mater which model are chosen, the output log will like this.

```
**********************************************************************
    This is ItemCF model trained on ml-1m with test_size = 0.10
**********************************************************************

ItemBasedCF start...

No model saved before.
Train a new model...
counting movies number and popularity...
counting movies number and popularity success.
total movie number = 3693
generate items co-rated similarity matrix...
 steps(0), 0.00 seconds have spent..
 steps(1000), 18.50 seconds have spent..
 steps(2000), 46.39 seconds have spent..
 steps(3000), 63.52 seconds have spent..
 steps(4000), 87.37 seconds have spent..
 steps(5000), 111.83 seconds have spent..
 steps(6000), 132.71 seconds have spent..
generate items co-rated similarity matrix success.
total  step number is 6040
total 133.61 seconds have spent

calculate item-item similarity matrix...
 steps(0), 0.00 seconds have spent..
 steps(1000), 1.77 seconds have spent..
 steps(2000), 3.47 seconds have spent..
 steps(3000), 5.01 seconds have spent..
calculate item-item similarity matrix success.
total  step number is 3693
total 5.67 seconds have spent

Train a new model success.
The new model has saved success.

recommend for userid = 1:
['1196', '364', '1265', '318', '2081', '1282', '1198', '2716', '1', '2096']

recommend for userid = 100:
['2916', '1580', '457', '1240', '589', '1291', '780', '1036', '1610', '1214']

recommend for userid = 233:
['1022', '594', '1282', '2087', '2078', '1196', '608', '2081', '593', '1393']

recommend for userid = 666:
['296', '1704', '593', '356', '1196', '589', '1580', '50', '1393', '1']

recommend for userid = 888:
['2916', '457', '480', '2628', '1265', '1610', '1198', '1573', '2762', '1527']

Test recommendation system start...
 steps(0), 0.10 seconds have spent..
 steps(1000), 291.42 seconds have spent..
 steps(2000), 627.60 seconds have spent..
 steps(3000), 898.21 seconds have spent..
 steps(4000), 1219.94 seconds have spent..
 steps(5000), 1523.29 seconds have spent..
 steps(6000), 1817.46 seconds have spent..
Test recommendation system success.
total  step number is 6040
total 1829.26 seconds have spent

precision=0.1900	recall=0.1147	coverage=0.1673	popularity=7.3911

total Main Function step number is 0
total 1972.49 seconds have spent
```

# Benchmarks

Here are four models' benchmarks over Precision、Recall、Coverage、Popularity. The testsize is 0.1.

These results are nearly same with *Xiang Liang*'s book, which proves that my algorithms are right.

**Movielens 1M:**

|    Movielens 1M    | Precision | Recall | Coverage | Popularity |
| :------------------: | --------: | -----: | -------: | ---------: |
| UserCF | 19.84% | 11.97% | 28.16% | 7.2023 |
| ItemCF | 19.00% | 11.47% | 16.73% | 7.3911 |
| UserCF-IIF | 19.77% | 11.93% | 29.62% | 7.1660 |
| ItemCF-IUF | 18.71% | 11.29% | 15.03% | 7.4748 |
| LFM | / | / | / | / |
| Random | 0.54% | 0.33% | 100.00% | 4.4075 |
| Most Popular | 10.59% | 6.39% | 2.76% | 7.7462 |

**Movielens 100k:**

|    Movielens 100k    | Precision | Recall | Coverage | Popularity |
| :------------------: | --------: | -----: | -------: | ---------: |
| UserCF | 19.69% | 18.50% | 22.20% | 5.4928 |
| ItemCF | 17.89% | 16.80% | 13.23% | 5.6202 |
| UserCF-IIF | 19.57% | 18.38% | 22.74% | 5.4716 |
| ItemCF-IUF | 20.38% | 12.30% | 17.30% | 7.3643 |
| LFM | 20.29% | 19.06% | 27.41% | 4.9983 |
| Random | 0.82% | 0.77% | 99.64% | 3.0332 |
| Most Popular | 10.54% | 9.90% | 4.07% | 5.9578 |

# Notice

UserCF is faser than ItemCF. Using `ml-100k` instead of `ml-1m` will speed up the predict process.

Caculating similarity matrix is quite slow. Please wait for the result patiently.

LFM will make negative samples when running. And when the ratio of Neg./Pos. goes to larger, the performance goes to better.

LFM has more parameters to tune, and I don't spend much time to do this. I believe you will do quite better!

# Licence

Apache License.

    Copyright 2018 fuxuemingzhu

    Licensed under the Apache License, Version 2.0 (the "License");
    you may not use this file except in compliance with the License.
    You may obtain a copy of the License at

        http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.


  [1]: https://github.com/fuxuemingzhu/MovieLens-Recommender
  [2]: https://github.com/Lockvictor/MovieLens-RecSys
  [3]: https://github.com/NicolasHug/Surprise

================================================
FILE: UserCF.py
================================================
# -*- coding = utf-8 -*-
"""
User-based Collaborative filtering.

Created on 2018-04-15

@author: fuxuemingzhu
"""
import collections
from operator import itemgetter

import math

from collections import defaultdict

import similarity
import utils
from utils import LogTime


class UserBasedCF:
    """
    User-based Collaborative filtering.
    Top-N recommendation.
    """

    def __init__(self, k_sim_user=20, n_rec_movie=10, use_iif_similarity=False, save_model=True):
        """
        Init UserBasedCF with n_sim_user and n_rec_movie.
        :return: None
        """
        print("UserBasedCF start...\n")
        self.k_sim_user = k_sim_user
        self.n_rec_movie = n_rec_movie
        self.trainset = None
        self.save_model = save_model
        self.use_iif_similarity = use_iif_similarity

    def fit(self, trainset):
        """
        Fit the trainset by calculate user similarity matrix.
        :param trainset: train dataset
        :return: None
        """
        model_manager = utils.ModelManager()
        try:
            self.user_sim_mat = model_manager.load_model(
                'user_sim_mat-iif' if self.use_iif_similarity else 'user_sim_mat')
            self.movie_popular = model_manager.load_model('movie_popular')
            self.movie_count = model_manager.load_model('movie_count')
            self.trainset = model_manager.load_model('trainset')
            print('User origin similarity model has saved before.\nLoad model success...\n')
        except OSError:
            print('No model saved before.\nTrain a new model...')
            self.user_sim_mat, self.movie_popular, self.movie_count = \
                similarity.calculate_user_similarity(trainset=trainset,
                                                     use_iif_similarity=self.use_iif_similarity)
            self.trainset = trainset
            print('Train a new model success.')
            if self.save_model:
                model_manager.save_model(self.user_sim_mat,
                                         'user_sim_mat-iif' if self.use_iif_similarity else 'user_sim_mat')
                model_manager.save_model(self.movie_popular, 'movie_popular')
                model_manager.save_model(self.movie_count, 'movie_count')
            print('The new model has saved success.\n')

    def recommend(self, user):
        """
        Find K similar users and recommend N movies for the user.
        :param user: The user we recommend movies to.
        :return: the N best score movies
        """
        if not self.user_sim_mat or not self.n_rec_movie or \
                not self.trainset or not self.movie_popular or not self.movie_count:
            raise NotImplementedError('UserCF has not init or fit method has not called yet.')
        K = self.k_sim_user
        N = self.n_rec_movie
        predict_score = collections.defaultdict(int)
        if user not in self.trainset:
            print('The user (%s) not in trainset.' % user)
            return
        # print('Recommend movies to user start...')
        watched_movies = self.trainset[user]
        for similar_user, similarity_factor in sorted(self.user_sim_mat[user].items(),
                                                      key=itemgetter(1), reverse=True)[0:K]:
            for movie, rating in self.trainset[similar_user].items():
                if movie in watched_movies:
                    continue
                # predict the user's "interest" for each movie
                # the predict_score is sum(similarity_factor * rating)
                predict_score[movie] += similarity_factor * rating
                # log steps and times.
        # print('Recommend movies to user success.')
        # return the N best score movies
        return [movie for movie, _ in sorted(predict_score.items(), key=itemgetter(1), reverse=True)[0:N]]

    def test(self, testset):
        """
        Test the recommendation system by recommending scores to all users in testset.
        :param testset: test dataset
        :return:
        """
        if not self.n_rec_movie or not self.trainset or not self.movie_popular or not self.movie_count:
            raise ValueError('UserCF has not init or fit method has not called yet.')
        self.testset = testset
        print('Test recommendation system start...')
        N = self.n_rec_movie
        #  varables for precision and recall
        hit = 0
        rec_count = 0
        test_count = 0
        # varables for coverage
        all_rec_movies = set()
        # varables for popularity
        popular_sum = 0

        # record the calculate time has spent.
        test_time = LogTime(print_step=1000)
        for i, user in enumerate(self.trainset):
            test_movies = self.testset.get(user, {})
            rec_movies = self.recommend(user)  # type:list
            for movie in rec_movies:
                if movie in test_movies:
                    hit += 1
                all_rec_movies.add(movie)
                popular_sum += math.log(1 + self.movie_popular[movie])
                # log steps and times.
            rec_count += N
            test_count += len(test_movies)
            # print time per 500 times.
            test_time.count_time()
        precision = hit / (1.0 * rec_count)
        recall = hit / (1.0 * test_count)
        coverage = len(all_rec_movies) / (1.0 * self.movie_count)
        popularity = popular_sum / (1.0 * rec_count)

        print('Test recommendation system success.')
        test_time.finish()

        print('precision=%.4f\trecall=%.4f\tcoverage=%.4f\tpopularity=%.4f\n' %
              (precision, recall, coverage, popularity))

    def predict(self, testset):
        """
        Recommend movies to all users in testset.
        :param testset: test dataset
        :return: `dict` : recommend list for each user.
        """
        movies_recommend = defaultdict(list)
        print('Predict scores start...')
        # record the calculate time has spent.
        predict_time = LogTime(print_step=500)
        for i, user in enumerate(testset):
            rec_movies = self.recommend(user)  # type:list
            movies_recommend[user].append(rec_movies)
            # log steps and times.
            predict_time.count_time()
        print('Predict scores success.')
        predict_time.finish()
        return movies_recommend


================================================
FILE: data/ml-100k/README
================================================
SUMMARY & USAGE LICENSE
=============================================

MovieLens data sets were collected by the GroupLens Research Project
at the University of Minnesota.
 
This data set consists of:
	* 100,000 ratings (1-5) from 943 users on 1682 movies. 
	* Each user has rated at least 20 movies. 
        * Simple demographic info for the users (age, gender, occupation, zip)

The data was collected through the MovieLens web site
(movielens.umn.edu) during the seven-month period from September 19th, 
1997 through April 22nd, 1998. This data has been cleaned up - users
who had less than 20 ratings or did not have complete demographic
information were removed from this data set. Detailed descriptions of
the data file can be found at the end of this file.

Neither the University of Minnesota nor any of the researchers
involved can guarantee the correctness of the data, its suitability
for any particular purpose, or the validity of results based on the
use of the data set.  The data set may be used for any research
purposes under the following conditions:

     * The user may not state or imply any endorsement from the
       University of Minnesota or the GroupLens Research Group.

     * The user must acknowledge the use of the data set in
       publications resulting from the use of the data set
       (see below for citation information).

     * The user may not redistribute the data without separate
       permission.

     * The user may not use this information for any commercial or
       revenue-bearing purposes without first obtaining permission
       from a faculty member of the GroupLens Research Project at the
       University of Minnesota.

If you have any further questions or comments, please contact GroupLens
<grouplens-info@cs.umn.edu>. 

CITATION
==============================================

To acknowledge use of the dataset in publications, please cite the 
following paper:

F. Maxwell Harper and Joseph A. Konstan. 2015. The MovieLens Datasets:
History and Context. ACM Transactions on Interactive Intelligent
Systems (TiiS) 5, 4, Article 19 (December 2015), 19 pages.
DOI=http://dx.doi.org/10.1145/2827872


ACKNOWLEDGEMENTS
==============================================

Thanks to Al Borchers for cleaning up this data and writing the
accompanying scripts.

PUBLISHED WORK THAT HAS USED THIS DATASET
==============================================

Herlocker, J., Konstan, J., Borchers, A., Riedl, J.. An Algorithmic
Framework for Performing Collaborative Filtering. Proceedings of the
1999 Conference on Research and Development in Information
Retrieval. Aug. 1999.

FURTHER INFORMATION ABOUT THE GROUPLENS RESEARCH PROJECT
==============================================

The GroupLens Research Project is a research group in the Department
of Computer Science and Engineering at the University of Minnesota.
Members of the GroupLens Research Project are involved in many
research projects related to the fields of information filtering,
collaborative filtering, and recommender systems. The project is lead
by professors John Riedl and Joseph Konstan. The project began to
explore automated collaborative filtering in 1992, but is most well
known for its world wide trial of an automated collaborative filtering
system for Usenet news in 1996.  The technology developed in the
Usenet trial formed the base for the formation of Net Perceptions,
Inc., which was founded by members of GroupLens Research. Since then
the project has expanded its scope to research overall information
filtering solutions, integrating in content-based methods as well as
improving current collaborative filtering technology.

Further information on the GroupLens Research project, including
research publications, can be found at the following web site:
        
        http://www.grouplens.org/

GroupLens Research currently operates a movie recommender based on
collaborative filtering:

        http://www.movielens.org/

DETAILED DESCRIPTIONS OF DATA FILES
==============================================

Here are brief descriptions of the data.

ml-data.tar.gz   -- Compressed tar file.  To rebuild the u data files do this:
                gunzip ml-data.tar.gz
                tar xvf ml-data.tar
                mku.sh

u.data     -- The full u data set, 100000 ratings by 943 users on 1682 items.
              Each user has rated at least 20 movies.  Users and items are
              numbered consecutively from 1.  The data is randomly
              ordered. This is a tab separated list of 
	         user id | item id | rating | timestamp. 
              The time stamps are unix seconds since 1/1/1970 UTC   

u.info     -- The number of users, items, and ratings in the u data set.

u.item     -- Information about the items (movies); this is a tab separated
              list of
              movie id | movie title | release date | video release date |
              IMDb URL | unknown | Action | Adventure | Animation |
              Children's | Comedy | Crime | Documentary | Drama | Fantasy |
              Film-Noir | Horror | Musical | Mystery | Romance | Sci-Fi |
              Thriller | War | Western |
              The last 19 fields are the genres, a 1 indicates the movie
              is of that genre, a 0 indicates it is not; movies can be in
              several genres at once.
              The movie ids are the ones used in the u.data data set.

u.genre    -- A list of the genres.

u.user     -- Demographic information about the users; this is a tab
              separated list of
              user id | age | gender | occupation | zip code
              The user ids are the ones used in the u.data data set.

u.occupation -- A list of the occupations.

u1.base    -- The data sets u1.base and u1.test through u5.base and u5.test
u1.test       are 80%/20% splits of the u data into training and test data.
u2.base       Each of u1, ..., u5 have disjoint test sets; this if for
u2.test       5 fold cross validation (where you repeat your experiment
u3.base       with each training and test set and average the results).
u3.test       These data sets can be generated from u.data by mku.sh.
u4.base
u4.test
u5.base
u5.test

ua.base    -- The data sets ua.base, ua.test, ub.base, and ub.test
ua.test       split the u data into a training set and a test set with
ub.base       exactly 10 ratings per user in the test set.  The sets
ub.test       ua.test and ub.test are disjoint.  These data sets can
              be generated from u.data by mku.sh.

allbut.pl  -- The script that generates training and test sets where
              all but n of a users ratings are in the training data.

mku.sh     -- A shell script to generate all the u data sets from u.data.


================================================
FILE: data/ml-100k/allbut.pl
================================================
#!/usr/local/bin/perl

# get args
if (@ARGV < 3) {
	print STDERR "Usage: $0 base_name start stop max_test [ratings ...]\n";
	exit 1;
}
$basename = shift;
$start = shift;
$stop = shift;
$maxtest = shift;

# open files
open( TESTFILE, ">$basename.test" ) or die "Cannot open $basename.test for writing\n";
open( BASEFILE, ">$basename.base" ) or die "Cannot open $basename.base for writing\n";

# init variables
$testcnt = 0;

while (<>) {
	($user) = split;
	if (! defined $ratingcnt{$user}) {
		$ratingcnt{$user} = 0;
	}
	++$ratingcnt{$user};
	if (($testcnt < $maxtest || $maxtest <= 0)
	&& $ratingcnt{$user} >= $start && $ratingcnt{$user} <= $stop) {
		++$testcnt;
		print TESTFILE;
	}
	else {
		print BASEFILE;
	}
}


================================================
FILE: data/ml-100k/mku.sh
================================================
#!/bin/sh

trap `rm -f tmp.$$; exit 1` 1 2 15

for i in 1 2 3 4 5
do
	head -`expr $i \* 20000` u.data | tail -20000 > tmp.$$
	sort -t"	" -k 1,1n -k 2,2n tmp.$$ > u$i.test
	head -`expr \( $i - 1 \) \* 20000` u.data > tmp.$$
	tail -`expr \( 5 - $i \) \* 20000` u.data >> tmp.$$
	sort -t"	" -k 1,1n -k 2,2n tmp.$$ > u$i.base
done

allbut.pl ua 1 10 100000 u.data
sort -t"	" -k 1,1n -k 2,2n ua.base > tmp.$$
mv tmp.$$ ua.base
sort -t"	" -k 1,1n -k 2,2n ua.test > tmp.$$
mv tmp.$$ ua.test

allbut.pl ub 11 20 100000 u.data
sort -t"	" -k 1,1n -k 2,2n ub.base > tmp.$$
mv tmp.$$ ub.base
sort -t"	" -k 1,1n -k 2,2n ub.test > tmp.$$
mv tmp.$$ ub.test



================================================
FILE: data/ml-100k/u.data
================================================
196	242	3	881250949
186	302	3	891717742
22	377	1	878887116
244	51	2	880606923
166	346	1	886397596
298	474	4	884182806
115	265	2	881171488
253	465	5	891628467
305	451	3	886324817
6	86	3	883603013
62	257	2	879372434
286	1014	5	879781125
200	222	5	876042340
210	40	3	891035994
224	29	3	888104457
303	785	3	879485318
122	387	5	879270459
194	274	2	879539794
291	1042	4	874834944
234	1184	2	892079237
119	392	4	886176814
167	486	4	892738452
299	144	4	877881320
291	118	2	874833878
308	1	4	887736532
95	546	2	879196566
38	95	5	892430094
102	768	2	883748450
63	277	4	875747401
160	234	5	876861185
50	246	3	877052329
301	98	4	882075827
225	193	4	879539727
290	88	4	880731963
97	194	3	884238860
157	274	4	886890835
181	1081	1	878962623
278	603	5	891295330
276	796	1	874791932
7	32	4	891350932
10	16	4	877888877
284	304	4	885329322
201	979	2	884114233
276	564	3	874791805
287	327	5	875333916
246	201	5	884921594
242	1137	5	879741196
249	241	5	879641194
99	4	5	886519097
178	332	3	882823437
251	100	4	886271884
81	432	2	876535131
260	322	4	890618898
25	181	5	885853415
59	196	5	888205088
72	679	2	880037164
87	384	4	879877127
290	143	5	880474293
42	423	5	881107687
292	515	4	881103977
115	20	3	881171009
20	288	1	879667584
201	219	4	884112673
13	526	3	882141053
246	919	4	884920949
138	26	5	879024232
167	232	1	892738341
60	427	5	883326620
57	304	5	883698581
223	274	4	891550094
189	512	4	893277702
243	15	3	879987440
92	1049	1	890251826
246	416	3	884923047
194	165	4	879546723
241	690	2	887249482
178	248	4	882823954
254	1444	3	886475558
293	5	3	888906576
127	229	5	884364867
225	237	5	879539643
299	229	3	878192429
225	480	5	879540748
276	54	3	874791025
291	144	5	874835091
222	366	4	878183381
267	518	5	878971773
42	403	3	881108684
11	111	4	891903862
95	625	4	888954412
8	338	4	879361873
162	25	4	877635573
87	1016	4	879876194
279	154	5	875296291
145	275	2	885557505
119	1153	5	874781198
62	498	4	879373848
62	382	3	879375537
28	209	4	881961214
135	23	4	879857765
32	294	3	883709863
90	382	5	891383835
286	208	4	877531942
293	685	3	888905170
216	144	4	880234639
166	328	5	886397722
250	496	4	878090499
271	132	5	885848672
160	174	5	876860807
265	118	4	875320714
198	498	3	884207492
42	96	5	881107178
168	151	5	884288058
110	307	4	886987260
58	144	4	884304936
90	648	4	891384754
271	346	4	885844430
62	21	3	879373460
279	832	3	881375854
237	514	4	879376641
94	789	4	891720887
128	485	3	879966895
298	317	4	884182806
44	195	5	878347874
264	200	5	886122352
194	385	2	879524643
72	195	5	880037702
222	750	5	883815120
250	264	3	878089182
41	265	3	890687042
224	245	3	888082216
82	135	3	878769629
262	1147	4	879791710
293	471	3	888904884
216	658	3	880245029
250	140	3	878092059
59	23	5	888205300
286	379	5	877533771
244	815	4	880605185
7	479	4	891352010
174	368	1	886434402
87	274	4	879876734
194	1211	2	879551380
82	1134	2	884714402
13	836	2	882139746
13	272	4	884538403
244	756	2	880605157
305	427	5	886323090
95	787	2	888954930
43	14	2	883955745
299	955	4	889502823
57	419	3	883698454
84	405	3	883452363
269	504	4	891449922
299	111	3	877878184
194	466	4	879525876
160	135	4	876860807
99	268	3	885678247
10	486	4	877886846
259	117	4	874724988
85	427	3	879456350
303	919	4	879467295
213	273	5	878870987
121	514	3	891387947
90	98	5	891383204
49	559	2	888067405
42	794	3	881108425
155	323	2	879371261
68	117	4	876973939
172	177	4	875537965
19	4	4	885412840
268	231	4	875744136
5	2	3	875636053
305	117	2	886324028
44	294	4	883612356
43	137	4	875975656
279	1336	1	875298353
80	466	5	887401701
254	164	4	886472768
298	281	3	884183336
279	1240	1	892174404
66	298	4	883601324
18	443	3	880130193
268	1035	2	875542174
99	79	4	885680138
13	98	4	881515011
26	258	3	891347949
7	455	4	891353086
222	755	4	878183481
200	673	5	884128554
119	328	4	876923913
213	172	5	878955442
276	322	3	874786392
94	1217	3	891723086
130	379	4	875801662
38	328	4	892428688
160	719	3	876857977
293	1267	3	888906966
26	930	2	891385985
130	216	4	875216545
92	1079	3	886443455
256	452	4	882164999
1	61	4	878542420
72	48	4	880036718
56	755	3	892910207
13	360	4	882140926
15	405	2	879455957
92	77	3	875654637
207	476	2	884386343
292	174	5	881105481
232	483	5	888549622
251	748	2	886272175
224	26	3	888104153
181	220	4	878962392
259	255	4	874724710
305	471	4	886323648
52	280	3	882922806
161	202	5	891170769
148	408	5	877399018
125	235	2	892838559
97	228	5	884238860
58	1098	4	884304936
83	234	4	887665548
90	347	4	891383319
272	178	5	879455113
194	181	3	879521396
125	478	4	879454628
110	688	1	886987605
299	14	4	877877775
151	10	5	879524921
269	127	4	891446165
6	14	5	883599249
54	106	3	880937882
303	69	5	879467542
16	944	1	877727122
301	790	4	882078621
276	1091	3	874793035
305	214	2	886323068
194	1028	2	879541148
91	323	2	891438397
87	554	4	879875940
294	109	4	877819599
286	171	4	877531791
200	318	5	884128458
229	328	1	891632142
178	568	4	882826555
303	842	2	879484804
62	65	4	879374686
207	591	3	876018608
92	172	4	875653271
301	401	4	882078040
36	339	5	882157581
70	746	3	884150257
63	242	3	875747190
28	201	3	881961671
279	68	4	875307407
250	7	4	878089716
14	98	3	890881335
299	1018	3	889502324
194	54	3	879525876
303	815	3	879485532
119	237	5	874775038
295	218	5	879966498
268	930	2	875742942
268	2	2	875744173
66	258	4	883601089
233	202	5	879394264
83	623	4	880308578
214	334	3	891542540
192	476	2	881368243
100	344	4	891374868
268	145	1	875744501
301	56	4	882076587
307	89	5	879283786
234	141	3	892334609
83	576	4	880308755
181	264	2	878961624
297	133	4	875240090
38	153	5	892430369
7	382	4	891352093
264	813	4	886122952
181	872	1	878961814
201	146	1	884140579
85	507	4	879456199
269	367	3	891450023
59	468	3	888205855
286	143	4	889651549
193	96	1	889124507
113	595	5	875936424
292	11	5	881104093
130	1014	3	876250718
275	98	4	875155140
189	520	5	893265380
219	82	1	889452455
218	209	5	877488546
123	427	3	879873020
119	222	5	874775311
158	177	4	880134407
222	118	4	877563802
302	322	2	879436875
279	501	3	875308843
301	79	5	882076403
181	3	2	878963441
201	695	1	884140115
13	198	3	881515193
1	189	3	888732928
145	237	5	875270570
23	385	4	874786462
201	767	4	884114505
296	705	5	884197193
42	546	3	881105817
33	872	3	891964230
301	554	3	882078830
16	64	5	877720297
95	135	3	879197562
154	357	4	879138713
77	484	5	884733766
296	508	5	884196584
302	303	2	879436785
244	673	3	880606667
222	77	4	878183616
13	215	5	882140588
16	705	5	877722736
270	452	4	876956264
145	15	2	875270655
187	64	5	879465631
200	304	5	876041644
170	749	5	887646170
101	829	3	877136138
184	218	3	889909840
128	204	4	879967478
181	1295	1	878961781
184	153	3	889911285
1	33	4	878542699
1	160	4	875072547
184	321	5	889906967
54	595	3	880937813
94	343	4	891725009
128	508	4	879967767
23	323	2	874784266
301	227	3	882077222
301	191	3	882075672
112	903	1	892440172
82	183	3	878769848
222	724	3	878181976
218	430	3	877488316
308	1197	4	887739521
303	134	5	879467959
133	751	3	890588547
215	212	2	891435680
69	256	5	882126156
254	662	4	887347350
276	2	4	874792436
104	984	1	888442575
63	1067	3	875747514
267	410	4	878970785
13	56	5	881515011
240	879	3	885775745
286	237	2	875806800
294	271	5	889241426
90	1086	4	891384424
18	26	4	880129731
92	229	3	875656201
308	649	4	887739292
144	89	3	888105691
191	302	4	891560253
59	951	3	888206409
200	96	5	884129409
16	197	5	877726146
61	678	3	892302309
271	199	4	885848448
271	709	3	885849325
142	169	5	888640356
275	597	3	876197678
222	151	3	878182109
87	40	3	879876917
207	258	4	877879172
272	1393	2	879454663
177	333	4	880130397
207	1115	2	879664906
299	577	3	889503806
271	378	4	885849447
305	425	4	886324486
49	959	2	888068912
94	1224	3	891722802
130	1017	3	874953895
10	175	3	877888677
203	321	3	880433418
191	286	4	891560842
43	323	3	875975110
21	558	5	874951695
197	96	5	891409839
13	344	2	888073635
194	66	3	879527264
234	206	4	892334543
308	402	4	887740700
308	640	4	887737036
269	522	5	891447773
94	265	4	891721889
268	62	3	875310824
272	12	5	879455254
121	291	3	891390477
296	20	5	884196921
134	286	3	891732334
180	462	5	877544218
234	612	3	892079140
104	117	2	888465972
38	758	1	892434626
269	845	1	891456255
7	163	4	891353444
234	1451	3	892078343
275	405	2	876197645
52	250	3	882922661
102	823	3	888801465
13	186	4	890704999
178	731	4	882827532
236	71	3	890116671
256	781	5	882165296
263	176	5	891299752
244	186	3	880605697
279	1181	4	875314001
43	815	4	883956189
83	78	2	880309089
151	197	5	879528710
254	436	2	886474216
109	631	3	880579371
297	716	3	875239422
249	188	4	879641067
144	699	4	888106106
301	604	4	882075994
64	392	3	889737542
92	501	2	875653665
222	97	4	878181739
268	436	3	875310745
293	135	5	888905550
213	173	5	878955442
160	460	2	876861185
13	498	4	882139901
59	715	5	888205921
5	17	4	875636198
125	163	5	879454956
174	315	5	886432749
114	505	3	881260203
213	515	4	878870518
23	196	2	874786926
128	15	4	879968827
239	56	4	889179478
181	279	1	878962955
291	80	4	875086354
250	238	4	878089963
201	649	3	884114275
60	60	5	883327734
181	325	2	878961814
119	407	3	887038665
287	1	5	875334088
216	228	3	880245642
216	531	4	880233810
203	471	4	880434463
92	587	3	875660408
13	892	3	882774224
213	176	4	878956338
286	288	5	875806672
117	1047	2	881009697
99	111	1	885678886
11	558	3	891904214
65	47	2	879216672
295	194	4	879517412
269	217	2	891451610
85	259	2	881705026
250	596	5	878089921
137	144	5	881433689
201	960	2	884112077
257	137	4	882049932
111	328	4	891679939
91	480	4	891438875
215	211	4	891436202
181	938	1	878961586
189	1060	5	893264301
1	20	4	887431883
303	404	4	879468375
299	305	3	879737314
187	210	4	879465242
222	278	2	877563913
214	568	4	892668197
293	770	3	888906655
285	191	4	890595859
303	252	3	879544791
96	156	4	884402860
72	1110	3	880037334
115	1067	4	881171009
7	430	3	891352178
116	350	3	886977926
73	480	4	888625753
269	246	5	891457067
263	419	5	891299514
70	431	3	884150257
221	475	4	875244204
72	182	5	880036515
25	357	4	885852757
290	50	5	880473582
189	526	4	893266205
299	303	3	877618584
264	294	3	886121516
200	365	5	884129962
187	135	4	879465653
184	187	4	889909024
63	289	2	875746985
13	229	4	882397650
298	486	3	884183063
235	185	4	889655435
62	712	4	879376178
246	94	2	884923505
54	742	5	880934806
63	762	3	875747688
11	732	3	891904596
92	168	4	875653723
8	550	3	879362356
307	174	4	879283480
303	200	4	879468459
256	849	2	882164603
72	54	3	880036854
164	406	2	889402389
117	150	4	880125101
224	77	4	888103872
193	869	3	889127811
94	184	2	891720862
281	338	2	881200457
130	109	3	874953794
128	371	1	879966954
94	720	1	891723593
182	845	3	885613067
129	873	1	883245452
254	229	4	886474580
64	381	4	879365491
151	176	2	879524293
45	25	4	881014015
193	879	3	889123257
276	922	4	889174849
276	57	3	874787526
234	187	4	892079140
181	306	1	878962006
21	370	1	874951293
293	249	3	888905229
264	721	5	886123656
10	611	5	877886722
197	346	3	891409070
276	142	3	874792945
308	427	4	887736584
221	943	4	875246759
131	126	4	883681514
268	824	2	876518557
109	8	3	880572642
198	58	3	884208173
230	680	4	880484286
181	741	1	878962918
192	1061	4	881368891
234	448	3	892335501
90	900	4	891382309
193	941	4	889124890
128	603	5	879966839
126	905	2	887855283
244	265	4	880606634
90	289	3	891382310
157	25	3	886890787
305	71	3	886323684
119	382	5	874781742
21	222	2	874951382
231	181	4	888605273
280	508	3	891700453
288	132	3	886374129
279	1497	2	890780576
301	33	4	882078228
72	699	3	880036783
90	259	2	891382392
308	55	3	887738760
59	742	3	888203053
94	744	4	891721462
130	642	4	875216933
26	1015	3	891352136
56	121	5	892679480
82	508	2	884714249
62	12	4	879373613
276	40	3	874791871
181	1015	1	878963121
152	301	3	880147407
178	845	4	882824291
217	597	4	889070087
79	303	4	891271203
138	484	4	879024127
308	81	5	887737293
75	284	2	884050393
269	198	4	891447062
307	94	3	877122695
222	781	3	881059677
121	740	3	891390544
269	22	1	891448072
13	864	4	882141924
230	742	5	880485043
269	507	4	891448800
239	1099	5	889179253
245	1028	5	888513447
56	546	3	892679460
295	961	5	879519556
271	1028	2	885848102
222	812	2	881059117
69	240	3	882126156
10	7	4	877892210
22	376	3	878887112
294	931	3	889242857
82	717	1	884714492
279	399	4	875313859
269	234	1	891449406
6	98	5	883600680
243	1039	4	879988184
298	181	4	884125629
282	325	1	881703044
78	323	1	879633567
118	200	5	875384647
283	1114	5	879297545
171	292	4	891034835
70	217	4	884151119
10	100	5	877891747
245	181	4	888513664
107	333	3	891264267
246	561	1	884923445
13	901	1	883670672
276	70	4	874790826
244	17	2	880607205
189	56	5	893265263
226	242	5	883888671
62	1016	4	879373008
276	417	4	874792907
214	478	4	891544052
306	235	4	876504354
222	26	3	878183043
280	631	5	891700751
60	430	5	883326122
56	71	4	892683275
42	274	5	881105817
1	202	5	875072442
13	809	4	882397582
173	289	4	877556988
15	749	1	879455311
185	23	4	883524249
280	540	3	891702304
244	381	4	880604077
150	293	4	878746946
7	497	4	891352134
178	317	4	882826915
178	742	3	882823833
95	1217	3	880572658
234	1462	3	892333865
97	222	5	884238887
109	127	2	880563471
117	268	5	880124306
269	705	2	891448850
130	1246	3	876252497
264	655	4	886123530
207	13	3	875506839
42	588	5	881108147
246	409	2	884923372
87	367	4	879876702
101	304	3	877135677
256	127	4	882164406
92	794	3	875654798
181	762	2	878963418
213	235	1	878955115
92	739	2	876175582
292	661	5	881105561
246	665	4	884922831
274	845	5	878945579
188	692	5	875072583
18	86	4	880129731
5	439	1	878844423
236	632	3	890116254
193	407	4	889127921
144	709	4	888105940
90	1198	5	891383866
48	609	4	879434819
5	225	2	875635723
22	128	5	878887983
311	432	4	884365485
8	22	5	879362183
276	188	4	874792547
222	173	5	878183043
72	866	4	880035887
299	134	4	878192311
1	171	5	889751711
308	295	3	887741461
165	216	4	879525778
222	49	3	878183512
181	121	4	878962623
200	11	5	884129542
234	626	4	892336358
244	707	4	880606243
90	25	5	891384789
208	216	5	883108324
263	96	4	891298336
134	323	4	891732335
279	586	4	892864663
2	292	4	888550774
288	593	2	886892127
49	302	4	888065432
286	153	5	877531406
205	304	3	888284313
22	80	4	878887227
234	318	4	892078890
223	328	3	891548959
15	25	3	879456204
268	147	4	876514002
94	1220	3	891722678
274	405	4	878945840
7	492	5	891352010
268	217	2	875744501
16	55	5	877717956
164	620	3	889402298
290	161	4	880474293
92	515	4	875640800
239	1070	5	889179032
56	449	5	892679308
248	234	4	884534968
234	10	3	891227851
280	1049	2	891702486
308	187	5	887738760
276	64	5	874787441
192	948	3	881368302
122	509	4	879270511
85	588	3	880838306
262	931	2	879790874
201	272	3	886013700
181	870	2	878962623
295	739	4	879518319
263	568	4	891299387
295	39	4	879518279
201	1100	4	884112800
93	820	3	888705966
159	1028	5	880557539
158	665	2	880134532
293	423	3	888906070
82	597	3	878768882
276	181	5	874786488
13	823	5	882397833
217	2	3	889069782
83	660	4	880308256
189	20	5	893264466
222	796	4	878183684
146	1022	5	891458193
267	121	3	878970681
126	294	3	887855087
181	1060	1	878962675
125	80	4	892838865
43	120	4	884029430
13	780	1	882142057
253	259	2	891628883
42	44	3	881108548
77	518	4	884753202
291	686	5	874835165
268	21	3	875742822
262	28	3	879792220
234	81	3	892334680
29	245	3	882820803
236	57	5	890116575
158	729	3	880133116
156	661	4	888185947
232	52	5	888550130
168	866	5	884287927
37	288	4	880915258
141	245	3	884584426
235	230	4	889655162
102	70	3	888803537
77	172	3	884752562
90	506	5	891383319
186	566	5	879023663
44	660	5	878347915
118	774	5	875385198
7	661	5	891351624
49	1003	2	888068651
62	68	1	879374969
42	1028	4	881106072
178	433	4	882827834
85	51	2	879454782
77	474	5	884732407
58	1099	2	892243079
56	1047	4	892911290
197	688	1	891409564
286	99	4	878141681
90	258	3	891382121
181	1288	1	878962349
295	190	4	879517062
224	69	4	888082495
272	317	4	879454977
221	1010	3	875246662
66	877	1	883601089
207	318	5	877124871
234	487	3	892079237
7	648	5	891351653
87	82	5	879875774
195	1052	1	877835102
44	449	5	883613334
306	287	4	876504442
194	172	3	879521474
94	62	3	891722933
167	659	4	892738277
108	100	4	879879720
230	304	5	880484286
181	927	1	878962675
54	302	4	880928519
90	22	4	891384357
181	696	2	878962997
286	357	4	877531537
14	269	4	892242403
311	179	2	884365357
92	121	5	875640679
21	440	1	874951798
244	550	1	880602264
181	405	4	878962919
65	806	4	879216529
37	540	2	880916070
44	443	5	878348289
244	183	4	880606043
1	265	4	878542441
270	25	5	876954456
299	387	2	889502756
94	572	3	891723883
286	746	4	877533058
239	272	5	889181247
216	55	5	880245145
254	121	3	886472369
62	665	2	879376483
178	385	4	882826982
194	23	4	879522819
268	955	3	875745160
188	143	5	875072674
276	294	4	874786366
158	1098	4	880135069
207	845	3	881681663
161	48	1	891170745
305	654	4	886323937
47	324	3	879439078
64	736	4	889739212
191	751	3	891560753
7	378	5	891353011
59	92	5	888204997
69	268	5	882027109
10	461	3	877888944
21	129	4	874951382
58	9	4	884304328
194	152	3	879549996
7	200	5	891353543
113	126	5	875076827
173	328	5	877557028
95	233	4	879196354
16	194	5	877720733
59	323	4	888206809
311	654	3	884365075
292	589	4	881105516
43	203	4	883955224
79	50	4	891271545
235	70	5	889655619
125	190	5	892836309
284	322	3	885329671
303	161	5	879468547
254	378	3	886474396
255	1034	1	883217030
104	301	2	888442275
90	923	5	891383912
6	463	4	883601713
279	122	1	875297433
286	298	4	875807004
222	448	3	878183565
297	57	5	875239383
42	625	3	881108873
130	1217	4	875801778
254	357	3	886472466
109	475	1	880563641
230	1444	2	880485726
244	310	3	880601905
6	301	2	883600406
36	748	4	882157285
256	443	3	882164727
102	515	1	888801316
104	285	4	888465201
21	447	5	874951695
111	301	4	891680028
18	408	5	880129628
25	222	4	885852817
110	944	3	886989501
270	98	5	876955868
68	237	5	876974133
83	215	4	880307940
6	258	2	883268278
89	216	5	879459859
128	317	4	879968029
305	512	4	886323525
184	412	2	889912691
286	175	5	877532470
279	1428	3	888465209
256	86	5	882165103
221	48	5	875245462
140	332	3	879013617
190	977	2	891042938
11	227	3	891905896
201	203	5	884114471
150	181	5	878746685
126	245	3	887854726
20	208	2	879669401
144	742	4	888104122
181	930	1	878963275
109	566	4	880578814
85	1065	3	879455021
213	133	3	878955973
222	379	1	878184290
223	11	3	891550649
215	421	4	891435704
218	208	3	877488366
174	937	5	886432989
275	186	3	880314383
68	742	1	876974198
268	583	4	876513830
160	462	4	876858346
195	273	4	878019342
224	178	4	888082468
5	110	1	875636493
99	1016	5	885678724
2	251	5	888552084
292	9	4	881104148
72	568	4	880037203
85	228	3	882813248
83	281	5	880307072
92	831	2	886443708
7	543	3	891351772
87	401	2	879876813
287	926	4	875334340
1	155	2	878542201
234	632	2	892079538
222	53	5	878184113
24	64	5	875322758
7	554	3	891354639
82	56	3	878769410
161	318	3	891170824
196	393	4	881251863
56	91	4	892683275
82	477	3	876311344
7	472	2	891353357
256	761	4	882164644
226	56	4	883889102
279	741	5	875296891
308	1286	3	887738151
16	8	5	877722736
180	202	3	877128388
203	93	4	880434940
145	56	5	875271896
288	305	4	886372527
84	742	3	883450643
44	644	3	878347818
17	13	3	885272654
313	117	4	891015319
148	1	4	877019411
197	347	4	891409070
21	164	5	874951695
279	982	3	875298314
239	491	5	889181015
185	287	5	883526288
297	89	4	875239125
303	68	4	879467361
186	250	1	879023607
73	206	3	888625754
104	756	2	888465739
94	216	3	885870665
239	194	5	889178833
197	511	5	891409839
280	1	4	891700426
1	117	3	874965739
224	583	1	888103729
303	397	1	879543831
60	162	4	883327734
198	258	4	884204501
239	513	5	889178887
6	69	3	883601277
233	375	4	876374419
85	642	4	882995615
110	38	3	886988574
184	522	3	889908462
99	873	1	885678436
13	418	2	882398763
201	518	4	884112201
13	858	1	882397068
214	131	3	891544465
296	228	4	884197264
222	87	3	878182589
279	725	4	875314144
217	182	2	889070109
85	433	3	879828720
239	234	3	889178762
13	72	4	882141727
194	77	3	879527421
208	663	5	883108476
109	178	3	880572950
230	172	4	880484523
59	485	2	888204466
313	478	3	891014373
70	1133	3	884151344
62	182	5	879375169
198	234	3	884207833
65	125	4	879217509
174	660	5	886514261
90	12	5	891383241
130	1248	3	880396702
100	354	2	891375260
283	432	5	879297965
275	418	3	875154718
311	98	5	884364502
195	751	4	883295500
130	105	4	876251160
269	252	1	891456350
286	73	5	877532965
7	623	3	891354217
56	222	5	892679439
210	204	5	887730676
239	9	5	889180446
96	87	4	884403531
297	73	2	875239691
249	239	3	879572284
94	860	2	891723706
84	121	4	883452307
275	265	4	880314031
135	1046	3	879858003
291	1178	4	875086354
125	382	1	892836623
70	399	4	884068521
311	9	4	884963365
301	523	4	882076146
152	685	5	880149074
244	172	4	880605665
275	1091	2	875154535
53	281	4	879443288
198	118	2	884206513
244	790	4	880608037
26	125	4	891371676
151	13	3	879542688
124	496	1	890286933
24	191	5	875323003
271	65	3	885849419
307	634	3	879283385
294	1245	3	877819265
234	241	2	892335042
25	501	3	885852301
293	137	3	888904653
201	432	3	884111312
75	240	1	884050661
13	181	5	882140354
207	68	2	877125350
2	50	5	888552084
313	566	4	891016220
144	125	4	888104191
188	443	4	875074329
276	324	4	874786419
145	974	1	882182634
72	234	4	880037418
83	385	4	887665549
181	619	3	878963086
109	402	4	880581344
207	107	3	876198301
185	216	4	883526268
14	213	5	890881557
149	319	2	883512658
57	79	5	883698495
230	963	5	880484370
176	875	4	886047442
253	97	4	891628501
284	269	4	885328991
106	526	4	881452685
121	180	3	891388286
62	86	2	879374640
291	418	4	875086920
84	1033	4	883452711
293	380	2	888907527
207	58	3	875991047
194	187	4	879520813
109	97	3	880578711
283	845	4	879297442
297	275	5	874954260
181	334	1	878961749
78	255	4	879633745
11	425	4	891904300
308	59	4	887737647
193	1078	4	889126943
297	234	3	875239018
87	585	4	879877008
250	204	2	878091682
8	50	5	879362124
186	148	4	891719774
312	692	4	891699426
91	683	3	891438351
5	454	1	875721432
291	376	3	875086534
175	127	5	877107640
145	737	2	875272833
7	644	5	891351685
276	419	5	874792907
83	210	5	880307751
102	524	3	888803537
153	174	1	881371140
62	302	3	879371909
49	995	3	888065577
268	298	3	875742647
207	554	2	877822854
313	616	5	891015049
286	44	3	877532173
279	168	5	875296435
276	474	5	889174904
62	59	4	879373821
254	219	1	886475980
83	97	4	880308690
63	100	5	875747319
16	178	5	877719333
297	233	2	875239914
90	945	5	891383866
85	25	2	879452769
42	98	4	881106711
303	393	4	879484981
274	50	5	878944679
104	299	3	888442436
94	792	4	885873006
184	98	4	889908539
293	708	3	888907527
248	589	4	884534968
18	950	3	880130764
217	27	1	889070011
200	892	4	884127082
201	148	1	884140751
296	222	5	884196640
7	662	3	892133739
196	381	4	881251728
69	427	3	882145465
72	196	4	880036747
256	472	4	882152471
128	182	4	879967225
151	747	3	879524564
7	171	3	891351287
286	85	5	877533224
172	220	4	875537441
308	516	4	887736743
190	974	2	891625949
82	756	1	878768741
308	436	4	887739257
59	235	1	888203658
64	1063	3	889739539
145	756	2	885557506
220	298	4	881198966
21	324	4	874950889
285	269	4	890595313
207	65	3	878104594
198	658	3	884208173
220	333	3	881197771
210	70	4	887730589
181	14	1	878962392
158	128	2	880134296
143	682	3	888407741
75	237	2	884050309
199	221	4	883782854
223	1150	2	891549841
297	25	4	874954497
276	78	4	877934828
299	847	4	877877649
293	325	2	888904353
301	138	2	882079446
1	47	4	875072125
164	281	4	889401906
96	673	4	884402860
291	1016	4	874833827
7	451	5	891353892
233	177	4	877661496
6	517	4	883602212
202	283	3	879727153
214	117	4	891543241
184	602	4	889909691
277	257	3	879543487
194	212	1	879524216
95	68	4	879196231
25	257	4	885853415
6	23	4	883601365
38	573	1	892433660
313	436	4	891029877
22	241	3	878888025
262	617	3	879793715
130	569	3	880396494
66	181	5	883601425
21	948	1	874951054
181	1332	1	878962278
262	174	3	879791948
206	302	5	888180227
222	22	5	878183285
76	61	4	875028123
151	703	4	879542460
314	28	5	877888346
13	147	3	882397502
44	258	4	878340824
303	418	4	879483510
16	89	2	877717833
270	558	5	876954927
248	117	5	884535433
125	318	5	879454309
138	523	5	879024043
268	386	2	875743978
291	15	5	874833668
234	147	3	892335372
239	96	5	889178798
15	331	3	879455166
94	155	2	891723807
136	89	4	882848925
223	423	3	891550684
82	194	4	878770027
145	355	3	888396967
280	845	3	891700925
179	339	1	892151366
178	199	4	882826306
307	949	4	877123315
10	488	5	877888613
116	331	3	876451911
23	258	5	876785704
308	174	4	887736696
185	114	4	883524320
188	237	3	875073648
118	654	5	875385007
246	721	4	884921794
234	98	4	892078567
194	239	3	879522917
94	24	4	885873423
122	378	4	879270769
312	100	4	891698613
262	64	5	879793022
154	242	3	879138235
223	763	3	891550067
99	403	4	885680374
83	43	4	880308690
130	307	4	877984546
174	402	5	886513729
256	487	5	882164231
59	177	4	888204349
161	168	1	891171174
244	53	3	880607489
250	196	4	878091818
43	40	3	883956468
285	150	5	890595636
42	953	2	881108815
97	670	5	884239744
122	510	4	879270327
61	323	3	891206450
222	106	2	883816184
4	264	3	892004275
304	259	1	884967253
37	403	5	880915942
49	68	1	888069513
303	1098	4	879467959
165	372	5	879525987
176	324	5	886047292
3	335	1	889237269
56	869	3	892683895
44	15	4	878341343
190	117	4	891033697
29	189	4	882821942
94	174	4	885870231
130	949	3	876251944
117	181	5	880124648
303	779	1	879543418
19	435	5	885412840
194	191	4	879521856
158	24	4	880134261
56	447	4	892679067
262	223	3	879791816
181	1334	1	878962240
214	137	4	891543227
92	747	4	875656164
188	96	5	875073128
58	173	5	884305353
244	154	5	880606385
134	879	4	891732393
298	625	4	884183406
254	230	4	886472400
230	138	3	880485197
16	209	5	877722736
151	835	5	879524199
181	1327	1	878963305
145	1248	3	875272195
200	588	5	884128499
248	257	3	884535840
297	432	4	875239658
312	133	5	891699296
151	12	5	879524368
110	568	3	886988449
305	483	5	886323068
141	258	5	884584338
44	240	4	878346997
186	263	3	879023571
214	213	4	891544414
233	208	4	880610814
104	287	2	888465347
312	153	2	891699491
1	222	4	878873388
206	323	1	888179833
230	419	4	880484587
56	450	3	892679374
94	651	5	891725332
205	316	4	888284710
14	174	5	890881294
268	790	2	876513785
276	1081	3	880913705
83	929	3	880307140
268	580	3	875309344
222	1041	3	881060155
279	89	4	875306910
5	424	1	875635807
112	331	4	884992603
296	429	5	884197330
18	202	3	880130515
13	868	5	882139901
87	210	5	879875734
10	285	5	877889186
181	328	3	878961227
23	463	4	874785843
253	746	3	891628630
234	228	3	892079190
299	1047	2	877880041
66	1	3	883601324
216	174	5	881432488
290	208	3	880475245
79	1161	2	891271697
264	448	2	886122031
4	303	5	892002352
144	831	3	888104805
138	517	4	879024279
64	433	2	889740286
5	1	4	875635748
276	357	5	874787526
62	433	5	879375588
239	475	5	889178689
293	166	3	888905520
130	234	5	875216932
264	70	4	886123596
208	197	5	883108797
24	763	5	875322875
279	1162	3	875314334
3	245	1	889237247
101	596	3	877136564
162	1019	4	877636556
223	908	1	891548802
99	246	3	888469392
239	430	3	889180338
160	160	5	876862078
172	580	4	875538028
303	1160	2	879544629
54	676	5	880935294
44	507	3	878347392
210	97	5	887736454
164	930	4	889402340
299	240	2	877878414
28	217	3	881961671
305	79	3	886324276
18	729	3	880131236
82	343	1	884713755
109	1012	4	880564570
207	25	4	876079113
92	1209	1	875660468
109	1	4	880563619
15	222	3	879455730
58	709	5	884304812
303	693	4	879466771
152	111	5	880148782
194	160	2	879551380
92	241	3	875655961
77	91	3	884752924
244	662	3	880606533
177	321	2	880130481
131	221	3	883681561
197	302	3	891409070
227	50	4	879035347
85	282	3	879829618
295	72	4	879518714
181	1	3	878962392
277	255	4	879544145
279	96	4	875310606
1	253	5	874965970
18	182	4	880130640
276	568	4	882659211
87	177	5	879875940
177	69	1	880131088
213	13	4	878955139
125	134	5	879454532
128	739	4	879969349
291	428	5	874871766
25	208	4	885852337
288	272	5	889225463
207	1350	2	877878772
271	56	3	885848559
5	363	3	875635225
274	748	5	878944406
70	419	5	884065035
311	559	2	884366187
151	919	5	879524368
199	268	5	883782509
201	209	3	884112801
99	274	1	885679157
11	740	4	891903067
59	77	4	888206254
184	277	3	889907971
222	88	4	878183336
38	161	5	892432062
59	418	2	888205188
104	300	3	888442275
298	1346	3	884126061
180	1119	3	877128156
7	674	2	891352659
121	14	5	891390014
268	1041	1	875743735
252	277	4	891456797
303	411	4	879483802
210	527	5	887736232
234	648	3	892826760
312	573	5	891712535
308	215	3	887737483
234	1397	4	892334976
75	546	3	884050422
117	15	5	880125887
246	239	3	884921380
64	516	5	889737376
85	187	5	879454235
239	81	3	889179808
59	54	4	888205921
256	220	3	882151690
216	196	5	880245145
203	282	1	880434919
13	195	3	881515296
144	153	5	888105823
100	268	3	891374982
210	274	5	887730676
94	471	4	891721642
13	807	1	886304229
125	657	3	892836422
65	1142	4	879217349
1	113	5	878542738
76	175	4	875028853
294	508	4	877819532
263	1451	4	891299949
294	930	3	889242704
121	117	1	891388600
85	13	3	879452866
303	426	3	879542535
212	180	1	879303974
6	492	5	883601089
181	240	1	878963122
279	746	5	875310233
303	1109	4	879467936
184	191	4	889908716
310	116	5	879436104
313	22	3	891014870
314	1150	4	877887002
13	121	5	882397503
43	5	4	875981421
58	214	2	884305296
215	164	3	891436633
62	288	2	879371909
280	127	5	891702544
161	898	3	891170191
11	723	5	891904637
94	218	3	891721851
35	243	2	875459046
311	566	4	884366112
48	680	3	879434330
85	604	4	882995132
288	527	3	886373565
184	514	5	889908497
151	929	3	879543457
90	690	4	891383319
11	38	3	891905936
104	1016	1	888466002
106	582	4	881451199
181	1010	1	878962774
37	117	4	880915674
276	845	4	874786807
22	258	5	878886261
70	82	4	884068075
5	98	3	875720691
308	95	4	887737130
60	208	5	883326028
270	778	5	876955711
243	208	4	879989134
92	540	2	875813197
81	280	4	876534214
293	412	1	888905377
200	478	5	884128788
13	308	3	881514726
56	184	4	892679088
116	250	4	876452606
295	172	4	879516986
63	1007	5	875747368
295	235	4	879517943
104	1010	1	888465554
156	641	5	888185677
269	1165	1	891446904
160	430	5	876861799
237	191	4	879376773
287	252	1	875334361
290	132	3	880473993
45	109	5	881012356
224	678	3	888082277
145	764	2	888398257
277	1011	3	879543697
65	100	3	879217558
272	1101	5	879454977
116	255	3	876452524
184	86	5	889908694
285	151	5	890595636
222	148	2	881061164
72	28	4	880036824
271	187	5	885848343
94	211	5	891721142
246	425	5	884921918
115	8	5	881171982
176	327	3	886047176
13	396	3	882141727
129	331	2	883244737
257	1260	2	880496892
95	1	5	879197329
147	904	5	885594015
151	58	4	879524849
184	660	3	889909962
311	386	3	884365747
105	268	4	889214268
158	510	3	880134296
34	312	4	888602742
72	427	5	880037702
263	416	5	891299697
94	1048	4	891722678
200	291	3	891825292
45	118	4	881014550
279	144	4	880850073
145	22	5	875273021
71	89	5	880864462
182	69	5	876435435
193	627	4	889126972
214	302	4	892668197
151	485	5	879525002
102	322	3	883277645
234	571	2	892318158
249	930	2	879640585
195	328	4	884420059
109	258	5	880562908
222	552	2	878184596
282	288	4	879949367
117	758	2	881011217
23	381	4	874787350
112	327	1	884992535
303	145	1	879543573
252	300	4	891448664
151	372	5	879524819
282	327	5	879949417
304	237	5	884968415
290	568	3	880474716
64	160	4	889739288
28	79	4	881961003
168	1278	3	884287560
265	471	4	875320302
18	113	5	880129628
83	82	5	887665423
90	499	5	891383866
234	1186	4	892335707
87	196	5	879877681
26	685	3	891371676
150	129	4	878746946
161	98	4	891171357
70	210	4	884065854
51	182	3	883498790
222	1057	4	881061370
92	176	5	875652981
204	216	4	892513864
164	685	5	889402160
57	682	3	883696824
184	207	4	889908903
60	403	3	883327087
92	180	5	875653016
43	204	4	883956122
222	1042	4	878184514
197	300	4	891409422
92	790	3	875907618
294	282	3	877821796
201	747	2	884113635
201	215	2	884140382
193	410	3	889127633
271	705	4	885849052
214	693	3	891544414
73	657	5	888625422
90	187	4	891383561
315	273	3	879821349
48	309	3	879434132
255	472	1	883216958
270	671	4	876956360
66	7	3	883601355
6	478	4	883602762
101	222	3	877136243
207	1046	4	875509787
144	182	3	888105743
85	83	4	886282959
102	625	3	883748418
158	770	5	880134477
297	588	4	875238579
90	507	5	891383987
271	482	5	885848519
130	901	1	884624044
178	276	3	882823978
90	245	3	891382612
181	1094	1	878963086
311	143	3	884364812
267	17	4	878971773
201	51	2	884140751
194	647	4	879521531
59	387	3	888206562
1	227	4	876892946
116	751	3	890131577
170	292	5	884103732
110	578	3	886988536
60	1021	5	883326185
287	347	4	888177040
197	55	3	891409982
38	679	5	892432062
195	1014	4	879673925
279	227	4	889326161
84	748	4	883449530
31	886	2	881547877
316	98	5	880853743
25	25	5	885853415
168	274	4	884287865
103	24	4	880415847
299	588	4	877880852
194	478	3	879521329
287	294	5	875333873
234	582	4	892334883
279	1048	1	886015533
87	9	4	879877931
181	408	1	878962550
279	1151	2	875744584
49	47	5	888068715
296	855	5	884197352
44	95	4	878347569
92	216	3	875653867
135	39	3	879857931
13	66	3	882141485
262	386	3	879795512
7	676	3	891354499
116	942	3	876454090
318	474	4	884495742
141	826	2	884585437
269	13	4	891446662
222	1044	4	881060578
82	455	4	876311319
279	254	3	879572960
42	685	4	881105972
145	1245	5	875271397
184	161	2	889909640
49	625	3	888067031
177	243	1	882142141
313	99	4	891014029
32	290	3	883717913
308	848	4	887736925
145	448	5	877343121
130	542	3	875801778
130	806	3	875217096
165	288	2	879525673
249	255	3	879571752
49	581	3	888068143
195	300	3	890588925
118	475	5	875384793
130	316	4	888211794
104	293	3	888465166
201	1229	3	884140307
142	82	4	888640356
119	718	5	874774956
303	94	3	879485318
99	50	5	885679998
306	14	5	876503995
92	709	2	875654590
227	295	5	879035387
3	337	1	889236983
94	820	1	891723186
59	1107	4	888206254
30	539	3	885941454
262	821	3	879794887
6	508	3	883599530
311	716	4	884365718
268	364	3	875743979
262	553	4	879795122
214	275	3	891542968
16	56	5	877719863
262	293	2	879790906
293	132	4	888905481
62	132	5	879375022
94	346	4	891725410
13	59	4	882140425
240	313	5	885775604
102	161	2	888801876
83	301	2	891181430
291	7	5	874834481
312	28	4	891698300
31	484	5	881548030
291	70	4	874868146
56	172	5	892737191
109	588	4	880578388
110	1246	2	886989613
59	429	4	888204597
246	1218	3	884922801
65	196	5	879216637
24	367	2	875323241
92	115	3	875654125
308	741	4	887739863
301	660	4	882076782
214	1129	4	892668249
158	241	4	880134445
269	674	2	891451754
308	493	3	887737293
32	151	3	883717850
224	191	4	888082468
215	423	5	891435526
32	1012	4	883717581
154	289	2	879138345
201	509	3	884111546
85	298	4	880581629
180	68	5	877127721
184	36	3	889910195
188	218	5	875074667
305	11	1	886323237
144	508	4	888104150
73	94	1	888625754
194	205	3	879524291
177	203	4	880131026
276	273	4	874786517
198	7	4	884205317
108	290	4	879880076
189	197	5	893265291
73	56	4	888626041
172	462	3	875537717
120	546	2	889490979
101	471	3	877136535
5	102	3	875721196
26	235	2	891372429
268	1249	2	875743793
276	773	3	874792794
13	150	5	882140588
7	401	4	891354257
128	482	4	879967432
104	7	3	888465972
293	39	3	888906804
256	25	5	882150552
90	821	3	891385843
275	69	3	880314089
22	510	5	878887765
312	494	5	891698454
207	192	3	877822350
264	504	5	886122577
137	687	4	881432756
185	740	4	883524475
307	687	1	879114143
42	176	3	881107178
145	472	3	875271128
189	634	3	893265506
262	121	3	879790536
251	148	2	886272547
259	772	4	874724882
239	58	5	889179623
312	921	5	891699295
92	15	3	875640189
81	742	2	876533764
311	419	3	884364931
102	448	3	888803002
249	746	5	879641209
95	527	4	888954440
19	655	3	885412723
79	100	5	891271652
189	751	4	893265046
253	510	5	891628416
201	919	3	884141208
1	17	3	875073198
214	42	5	892668130
7	81	5	891352626
234	132	4	892333865
59	148	3	888203175
13	354	2	888779458
6	469	5	883601155
82	14	4	876311280
109	627	5	880582133
305	50	5	886321799
195	154	3	888737525
277	279	4	879543592
223	8	2	891550684
92	81	3	875654929
201	69	2	884112901
94	58	5	891720540
217	144	4	889069782
244	148	2	880605071
313	200	3	891017736
181	874	1	878961749
116	1216	3	876452582
303	433	4	879467985
117	151	4	880126373
221	327	4	875243968
46	307	3	883611430
91	28	4	891439243
151	317	5	879524610
64	176	4	889737567
90	553	2	891384959
116	271	4	886310197
291	1139	3	874871671
62	111	3	879372670
196	251	3	881251274
303	120	2	879544099
49	547	5	888066187
307	1022	4	879283008
303	176	5	879467260
286	154	4	877533381
291	501	4	875087100
235	87	4	889655162
254	379	1	886474650
276	157	5	874790773
135	1208	3	879858003
57	243	3	883696547
276	1157	2	874795772
7	576	5	892132943
250	404	4	878092144
318	768	2	884498022
234	808	2	892335707
289	282	3	876789180
87	1079	2	879877240
50	823	3	877052784
25	258	5	885853199
18	496	5	880130470
193	790	3	889127381
263	510	4	891298392
209	906	2	883589546
207	716	3	875508783
314	535	4	877887002
250	338	4	883263374
262	568	3	879794113
95	172	4	879196847
94	470	4	891722006
59	583	5	888205921
277	282	4	879543697
303	1286	4	879467413
271	714	3	885848863
269	235	3	891446756
148	140	1	877019882
223	977	2	891550295
210	357	5	887736206
185	199	4	883526268
174	80	1	886515210
235	480	4	889655044
276	939	3	874790855
99	354	2	888469332
308	163	4	887737084
303	738	2	879544276
224	873	2	888082187
298	252	4	884183833
44	208	4	878347420
315	13	4	879821158
215	197	4	891435357
269	9	4	891446246
42	195	5	881107949
293	79	3	888906045
246	68	5	884922341
101	405	4	877137015
92	665	3	875906853
249	88	4	879572668
60	525	5	883325944
13	331	3	881515457
271	750	4	885844698
92	731	4	875653769
254	188	3	886473672
311	203	5	884365201
263	197	4	891299752
201	660	3	884140927
279	79	3	875296461
138	496	4	879024043
209	251	5	883417810
217	7	4	889069741
261	340	5	890454045
176	258	4	886047026
303	1037	3	879544340
81	169	4	876534751
62	114	4	879373568
72	530	4	880037164
276	364	3	877935377
88	750	2	891037276
49	7	4	888067307
263	117	3	891299387
9	298	5	886960055
92	528	4	875657681
249	708	4	879572403
262	754	3	879961283
196	655	5	881251793
207	1436	3	878191574
256	771	2	882164999
276	226	4	874792520
134	313	5	891732150
311	849	3	884365781
181	1383	1	878962086
203	148	3	880434755
247	736	5	893097024
313	745	3	891016583
311	83	5	884364812
251	1014	5	886272486
227	411	4	879035897
59	550	5	888206605
201	206	2	884112029
58	100	5	884304553
249	723	4	879641093
286	1316	5	884583549
11	725	3	891905568
7	228	4	891350845
92	846	3	886443471
160	56	5	876770222
103	127	4	880416331
11	110	3	891905324
87	2	4	879876074
45	763	2	881013563
293	605	3	888907702
291	732	4	874868097
254	575	3	886476165
49	334	4	888065744
222	1284	4	878184422
161	162	2	891171413
268	1	3	875742341
59	215	5	888204430
177	209	4	880130736
151	1298	4	879528520
299	235	1	877878184
29	332	4	882820869
30	435	5	885941156
297	182	3	875239125
315	185	4	879821267
23	172	4	874785889
262	47	2	879794599
321	496	4	879438607
191	754	3	891560366
106	778	4	881453040
7	151	4	891352749
178	678	3	882823530
84	12	5	883452874
94	168	5	891721378
264	33	3	886122644
239	529	5	889179808
90	657	5	891385190
261	875	5	890454351
190	302	5	891033606
112	289	5	884992690
144	106	3	888104684
199	258	4	883782403
224	20	1	888104487
85	501	3	880838306
301	202	5	882076211
145	743	1	888398516
294	127	5	877819265
130	206	3	875801695
103	121	3	880415766
152	412	2	880149328
267	840	4	878970926
286	231	3	877532094
200	24	2	884127370
5	211	4	875636631
160	117	4	876767822
6	357	4	883602422
158	72	3	880135118
297	736	4	875239975
250	244	4	878089786
57	760	2	883697617
58	268	5	884304288
23	1006	3	874785809
301	1228	4	882079423
307	265	3	877122816
276	1095	1	877935135
223	411	1	891550005
92	24	3	875640448
137	300	5	881432524
164	117	5	889401816
276	38	3	874792574
213	294	3	878870226
286	34	5	877534701
232	197	4	888549563
150	221	4	878747017
21	103	1	874951245
130	731	3	876251922
222	441	2	881059920
1	90	4	878542300
189	1005	4	893265971
49	38	1	888068289
311	5	3	884365853
36	307	4	882157227
128	228	3	879969329
151	89	5	879524491
248	475	5	884535446
95	1229	2	879198800
213	609	4	878955533
203	181	5	880434278
308	863	3	887736881
269	47	4	891448386
198	100	1	884207325
297	307	4	878771124
305	189	5	886323303
266	676	3	892257897
197	229	3	891410039
74	272	5	888333194
127	294	4	884363803
194	4	4	879521397
177	56	5	880130618
45	473	3	881014417
57	28	4	883698324
239	187	5	889178798
268	94	2	875743630
238	252	3	883576644
201	1010	3	884140579
131	1281	4	883681561
270	97	4	876955633
159	127	5	880989744
230	202	4	880485352
92	219	4	875654888
318	356	4	884496671
123	531	3	879872671
267	403	4	878971939
232	630	3	888550060
5	382	5	875636587
16	155	3	877719157
180	762	4	877126241
178	282	3	882823978
319	313	5	889816026
180	737	3	877128327
270	736	5	876955087
269	658	2	891448497
293	496	5	888905840
269	793	4	891449880
54	685	3	880935504
21	98	5	874951657
303	209	5	879467328
13	766	4	882139686
314	95	5	877888168
151	387	5	879542353
230	378	5	880485159
201	403	3	884112427
95	1206	4	888956137
270	370	5	876956232
256	716	5	882165135
80	582	3	887401701
303	435	5	879466491
312	121	3	891698174
151	1006	1	879524974
62	258	5	879371909
189	1115	4	893264270
77	195	5	884733695
99	742	5	885679114
291	1028	3	875086561
293	748	2	888904327
181	1342	1	878962168
206	900	1	888179980
83	338	4	883868647
262	179	4	879962570
253	216	4	891628252
223	596	3	891549713
108	50	4	879879739
94	347	5	891724950
293	779	1	888908066
101	281	2	877136842
267	980	3	878970578
201	1245	4	884141015
314	1263	2	877890611
271	111	4	885847956
314	276	1	877886413
18	387	4	880130155
207	4	4	876198457
313	96	5	891015144
21	299	1	874950931
215	144	4	891435107
279	1376	4	886016680
234	1015	2	892079617
296	248	5	884196765
270	83	4	876954995
210	161	5	887736393
201	79	4	884112245
5	376	2	879198045
184	181	4	889907426
104	411	1	888465739
275	449	3	876198328
185	269	5	883524428
276	550	4	874792574
279	1182	3	875314370
216	69	5	880235229
21	457	1	874951054
16	471	3	877724845
147	292	5	885594040
291	250	4	874805927
28	95	3	881956917
29	539	2	882821044
291	471	4	874833746
7	580	3	892132171
181	16	1	878962996
297	218	3	875409827
308	559	4	887740367
87	211	5	879876812
97	89	5	884238939
21	596	3	874951617
59	710	3	888205463
238	756	3	883576476
178	209	4	882826944
186	470	5	879023693
299	615	4	878192555
10	504	5	877892110
110	682	4	886987354
109	101	1	880578186
157	250	1	886890296
267	386	3	878973597
181	327	3	878961780
207	87	4	884386260
47	995	3	879440429
148	114	5	877016735
94	9	5	885872684
60	222	4	883327441
244	409	4	880605294
276	246	4	874786686
90	906	2	891382240
234	20	4	891227979
106	107	4	883876961
216	697	4	883981700
294	1199	2	889242142
323	257	2	878739393
140	268	4	879013684
220	303	4	881198014
67	64	5	875379211
170	299	3	886190476
230	142	4	880485633
299	641	4	889501514
7	581	5	891353477
275	501	3	875154718
44	250	5	878346709
291	214	4	874868146
11	741	5	891902745
59	286	3	888202532
174	395	1	886515154
194	234	3	879521167
57	204	4	883698272
314	417	4	877888855
201	197	4	884113422
184	155	3	889912656
194	792	4	879524504
159	1037	2	884360502
186	983	3	879023152
181	979	2	878963241
68	7	3	876974096
286	721	3	877532329
316	306	4	880853072
280	781	4	891701699
13	14	4	884538727
211	127	4	879461498
187	215	3	879465805
71	134	3	885016614
306	242	5	876503793
64	684	4	889740199
303	277	3	879468547
198	135	5	884208061
232	91	5	888549515
98	47	4	880498898
53	24	3	879442538
299	971	2	889502353
254	1116	3	886473448
7	106	4	891353892
12	300	4	879958639
239	10	5	889180338
238	111	4	883576603
130	267	5	875801239
90	662	5	891385842
63	20	3	875748004
40	268	4	889041430
181	221	1	878962465
298	152	3	884183336
104	327	2	888442202
42	185	4	881107449
181	995	1	878961585
258	288	1	885700919
291	578	4	874835242
148	70	5	877021271
305	187	4	886323189
184	71	4	889911552
94	556	3	891722882
158	1011	4	880132579
7	528	5	891352659
174	237	4	886434047
158	190	5	880134332
201	853	4	884114635
276	43	1	874791383
278	311	4	891295130
229	347	1	891632073
101	252	3	877136628
63	1028	3	875748198
275	520	4	880314218
275	173	3	875154795
62	1073	4	879374752
230	234	4	880484756
109	975	3	880572351
73	357	5	888626007
83	118	3	880307071
4	361	5	892002353
130	245	1	874953526
64	778	5	889739806
15	473	1	879456204
244	89	5	880602210
7	643	4	891350932
219	347	1	889386819
295	704	5	879519266
293	288	3	888904327
125	997	2	892838976
279	487	3	890282182
76	582	3	882607444
272	48	4	879455143
269	285	5	891446165
244	380	4	880608133
271	220	3	885848179
321	287	3	879438857
306	864	3	876504286
224	332	3	888103429
57	1047	4	883697679
145	591	4	879161848
85	277	2	879452938
116	7	2	876453915
52	95	4	882922927
209	688	1	883589626
145	260	4	875269871
208	202	4	883108476
160	187	5	876770168
141	274	5	884585220
260	990	5	890618729
177	299	4	880130500
82	231	2	878769815
223	969	5	891550649
107	271	2	891264432
26	25	3	891373727
297	1016	3	874955131
244	167	3	880607853
15	678	1	879455311
286	709	4	877532748
82	411	3	878768902
167	364	3	892738212
99	181	5	885680138
56	196	2	892678628
293	346	3	888904004
7	650	3	891350965
90	425	4	891384996
228	475	3	889388521
82	919	3	876311280
43	151	4	875975613
10	289	4	877886223
197	515	5	891409935
57	756	3	883697730
246	82	2	884921986
62	24	4	879372633
323	223	4	878739699
13	320	1	882397010
268	63	1	875743792
18	863	3	880130680
271	410	2	885848238
307	509	3	877121019
54	298	4	892681300
295	47	5	879518166
194	237	3	879538959
194	82	2	879524216
311	385	5	884365284
287	257	4	875334224
290	82	4	880473918
262	96	4	879793022
279	491	5	875296435
290	393	3	880475169
145	393	5	875273174
305	61	4	886323378
269	156	5	891449364
276	180	5	874787353
323	298	4	878739275
296	258	5	884196469
18	965	4	880132012
72	528	4	880036664
224	949	3	888104057
125	239	5	892838375
244	652	5	880606533
135	431	2	879857868
138	211	4	879024183
59	604	3	888204927
221	1059	4	875245077
13	451	1	882141872
42	69	4	881107375
10	340	4	880371312
219	882	3	889386741
60	604	4	883327997
125	152	1	879454892
63	50	4	875747292
255	448	3	883216544
311	172	5	884364763
7	582	5	892135347
7	127	5	891351728
189	203	3	893265921
59	470	3	888205714
313	148	2	891031979
234	161	3	892335824
6	143	2	883601053
305	960	1	886324362
226	147	3	883889479
204	340	5	892389195
13	493	5	882140206
186	281	4	879023390
6	275	4	883599102
269	82	2	891450780
69	300	3	882027204
259	959	4	888720593
5	62	4	875637575
181	1164	3	878962464
135	449	3	879857843
222	1207	2	881060659
5	231	2	875635947
286	258	4	877530390
104	249	3	888465675
303	65	4	879467436
295	73	4	879519009
201	686	2	884112352
13	289	2	882140759
184	100	5	889907652
262	786	3	879795319
234	614	3	892334609
1	64	5	875072404
325	485	3	891478599
312	641	5	891698300
207	810	2	877125506
262	509	3	879792818
239	478	5	889178986
142	181	5	888640317
296	242	4	884196057
291	571	2	875086608
13	488	3	890704999
294	676	3	877821514
69	174	5	882145548
195	265	4	888737346
121	509	5	891388145
279	509	3	875296552
49	17	2	888068651
7	196	5	891351432
280	472	2	891702086
221	780	3	875246552
175	96	3	877108051
180	431	4	877442098
311	1222	3	884366010
44	120	4	878346977
318	257	5	884471030
59	588	2	888204389
320	117	4	884748641
256	939	5	882164893
310	24	4	879436242
236	265	2	890116191
83	139	3	880308959
280	128	3	891701188
43	52	4	883955224
18	494	3	880131497
303	87	3	879466421
91	427	4	891439057
318	631	4	884496855
275	258	3	875154310
97	482	5	884238693
174	160	5	886514377
268	470	3	875310745
188	769	2	875074720
94	89	3	885870284
7	44	5	891351728
158	85	4	880135118
256	765	4	882165328
221	69	4	875245641
196	67	5	881252017
232	175	5	888549815
159	685	4	880557347
99	182	4	886518810
175	71	4	877107942
254	624	2	886473254
326	22	4	879874989
303	291	3	879484804
270	53	4	876956106
181	1001	1	878963038
254	418	3	886473078
56	235	1	892911348
11	190	3	891904174
162	181	4	877635798
117	829	3	881010219
268	52	3	875309319
320	177	5	884749360
6	294	2	883599938
210	380	4	887736482
151	969	5	879542510
42	684	4	881108093
62	365	2	879376096
207	121	3	875504876
59	70	3	888204758
26	455	3	891371506
234	705	5	892318002
270	466	5	876955899
97	484	3	884238966
11	660	3	891904573
5	377	1	878844615
56	797	4	892910860
305	923	5	886323237
173	286	5	877556626
67	1095	4	875379287
213	12	5	878955409
268	684	3	875744321
36	883	5	882157581
100	321	1	891375112
269	729	2	891448569
131	100	5	883681418
308	298	5	887741383
14	709	5	879119693
284	305	4	885328906
191	752	3	891560481
222	29	3	878184571
201	421	2	884111708
207	864	3	877750738
303	1315	3	879544791
52	1086	4	882922562
305	529	5	886324097
223	318	4	891550711
22	79	4	878887765
137	546	5	881433116
292	328	3	877560833
249	11	5	879640868
269	616	4	891450453
197	294	4	891409290
42	603	4	881107502
26	1016	3	891377609
7	560	3	892132798
193	435	4	889124439
7	559	5	891354882
299	186	3	889503233
115	127	5	881171760
59	433	5	888205982
217	22	5	889069741
279	709	4	875310195
257	345	4	887066556
279	789	4	875306580
279	919	3	892864663
63	222	3	875747635
178	73	5	882827985
90	1194	4	891383718
111	313	4	891679901
13	848	5	882140001
94	625	4	891723086
59	496	4	888205144
179	905	4	892151331
303	302	4	879465986
299	516	4	889503159
10	505	4	877886846
62	464	4	879375196
56	69	4	892678893
92	289	3	875641367
308	378	3	887740700
13	144	4	882397146
181	1348	1	878962200
15	932	1	879456465
244	155	3	880608599
234	233	2	892335990
15	127	2	879455505
110	1179	2	886989501
181	302	2	878961511
236	313	4	890115777
310	536	4	879436137
37	55	3	880915942
234	617	3	892078741
303	369	1	879544130
75	409	3	884050829
197	518	1	891409982
314	692	5	877888445
187	523	3	879465125
151	402	3	879543423
268	264	3	876513607
224	215	4	888082612
292	195	5	881103568
16	191	5	877719454
99	597	4	885679210
234	482	4	892334803
303	323	1	879466214
233	99	3	877663383
66	249	4	883602158
280	204	3	891700643
301	174	5	882075827
92	1142	4	886442422
99	410	5	885679262
221	1250	2	875247855
97	98	4	884238728
313	673	4	891016622
58	109	4	884304396
270	781	5	876955750
13	476	2	882141997
189	1	5	893264174
67	147	3	875379357
234	50	4	892079237
40	880	3	889041643
294	222	4	877819353
293	629	3	888907753
7	241	4	891354053
87	775	2	879876848
314	1289	2	877887388
131	750	5	883681723
296	48	5	884197091
81	3	4	876592546
151	186	4	879524222
57	926	3	883697831
234	134	5	892333573
53	174	5	879442561
280	544	4	891701302
123	135	5	879872868
109	797	3	880582856
96	479	4	884403758
236	286	5	890115777
201	313	5	884110598
174	471	5	886433804
130	931	2	880396881
151	15	4	879524879
90	529	5	891385132
59	12	5	888204260
3	343	3	889237122
310	845	5	879436534
224	658	1	888103840
4	357	4	892003525
25	615	5	885852611
11	517	2	891905222
298	91	2	884182932
59	170	4	888204430
147	305	4	885593997
314	1518	4	877891426
256	413	4	882163956
234	618	3	892078343
246	8	3	884921245
255	678	2	883215795
92	106	3	875640609
272	127	5	879454725
104	269	5	888441878
276	406	2	874786831
276	34	2	877934264
97	50	5	884239471
150	121	2	878747322
14	530	5	890881433
23	170	4	874785348
13	97	4	882399357
165	325	4	879525672
244	7	4	880602558
95	416	4	888954961
28	98	5	881961531
259	269	3	877923906
82	596	3	876311195
28	173	3	881956220
94	455	3	891721777
276	384	3	874792189
298	8	5	884182748
151	210	4	879524419
77	238	5	884733965
200	241	4	884129782
201	405	4	884112427
193	332	3	889123257
38	139	2	892432786
291	226	5	874834895
113	326	5	875935609
313	191	5	891013829
207	531	4	877878342
214	151	5	892668153
44	123	4	878346532
18	154	4	880131358
297	628	4	874954497
279	116	1	888799670
7	28	5	891352341
115	92	4	881172049
308	581	4	887740500
62	138	1	879376709
81	824	3	876534437
293	1161	2	888905062
13	781	3	882399528
13	338	1	882140740
41	28	4	890687353
280	554	1	891701998
287	249	5	875334430
117	50	5	880126022
178	106	2	882824983
201	117	2	884112487
256	1057	2	882163805
221	204	4	875246008
318	659	4	884495868
262	11	4	879793597
154	488	4	879138831
186	385	4	879023894
303	1095	2	879543988
302	323	2	879436875
198	179	4	884209264
99	168	5	885680374
229	313	2	891631948
126	262	4	887854726
72	226	4	880037307
109	31	4	880577844
34	242	5	888601628
173	323	5	877556926
156	276	3	888185854
122	215	4	879270676
276	583	3	874791444
224	528	3	888082658
208	88	5	883108324
295	483	5	879517348
279	65	1	875306767
43	64	5	875981247
89	197	5	879459859
308	435	4	887737484
315	305	5	881017419
42	1041	4	881109060
164	299	4	889401383
7	153	5	891352220
93	412	2	888706037
125	1180	3	892838865
70	50	4	884064188
177	960	3	880131161
75	476	1	884050393
62	401	3	879376727
130	366	5	876251972
312	228	3	891699040
158	414	4	880135118
279	42	4	875308843
210	58	4	887730177
43	66	4	875981506
151	490	5	879528418
293	665	2	888908117
293	36	1	888908041
102	405	2	888801812
276	291	3	874791169
21	839	1	874951797
194	663	4	879524292
38	432	1	892430282
92	453	1	875906882
311	180	4	884364764
198	214	4	884208273
82	661	4	878769703
267	238	4	878971629
291	466	5	874834768
151	692	3	879524669
60	47	4	883326399
92	79	4	875653198
97	115	5	884239525
314	1218	4	877887525
319	338	2	879977242
5	407	3	875635431
15	685	4	879456288
99	204	4	885679952
123	192	5	879873119
47	340	5	879439078
222	135	5	878181563
224	149	1	888103999
58	284	4	884304519
320	294	4	884748418
268	135	4	875309583
83	640	2	880308550
106	692	3	881453290
287	11	5	875335124
305	186	4	886323902
181	1320	1	878962279
49	49	2	888068990
6	221	4	883599431
85	647	4	879453844
128	736	5	879968352
279	827	1	888426577
271	630	2	885848943
303	748	2	879466214
249	124	5	879572646
280	693	3	891701027
207	827	3	876018501
60	616	3	883327087
21	184	4	874951797
286	628	4	875806800
145	183	5	875272009
311	28	5	884365140
25	228	4	885852920
76	92	4	882606108
246	406	3	884924749
201	292	3	884110598
235	647	4	889655045
286	133	4	877531730
48	174	5	879434723
144	685	3	888105473
5	24	4	879198229
85	272	4	893110061
286	7	4	875807003
64	93	2	889739025
151	429	5	879528673
191	301	4	891561336
287	56	5	875334759
96	153	4	884403624
125	615	3	879454793
150	100	2	878746636
93	15	5	888705388
84	528	5	883453617
318	50	2	884495696
13	167	4	882141659
213	471	3	878870816
178	234	4	882826783
128	418	4	879968164
195	496	4	888737525
13	570	5	882397581
276	843	4	874792989
54	268	5	883963510
305	347	3	886308111
14	474	4	890881557
18	58	4	880130613
263	921	3	891298727
289	849	4	876789943
194	321	3	879520306
11	746	4	891905032
298	842	4	884127249
56	215	5	892678547
13	844	1	882397010
38	465	5	892432476
308	165	3	887736696
214	652	4	891543972
102	300	3	875886434
7	420	5	891353219
61	328	5	891206371
307	100	3	879206424
21	590	1	874951898
311	68	1	884365824
95	1230	1	888956901
303	182	5	879467105
145	13	5	875270507
50	253	5	877052550
194	530	4	879521167
145	1	3	882181396
222	157	4	878181976
7	188	5	891352778
109	100	4	880563080
90	631	5	891384570
7	78	3	891354165
181	1324	1	878962464
201	332	2	884110887
13	685	5	882397582
82	73	4	878769888
267	423	3	878972842
194	1206	1	879554453
269	106	1	891451947
99	895	3	885678304
235	1149	4	889655595
200	665	4	884130621
312	188	3	891698793
145	50	5	885557660
234	71	3	892334338
213	48	5	878955848
244	216	4	880605869
316	588	1	880853992
85	175	4	879828912
124	50	3	890287508
137	237	4	881432965
13	567	1	882396955
151	162	5	879528779
187	116	5	879464978
193	554	3	889126088
49	741	4	888068079
291	54	4	874834963
316	292	4	880853072
271	514	4	885848408
194	404	3	879522445
268	721	3	875743587
277	1197	4	879543768
301	606	3	882076890
89	1048	3	879460027
253	50	4	891628518
102	732	3	888804089
311	662	4	884365018
201	943	3	884114275
246	816	4	884925218
172	488	3	875537965
280	38	3	891701832
43	1057	2	884029777
311	661	3	884365075
59	287	5	888203175
268	83	4	875309344
315	651	3	879799457
145	299	4	875269822
248	174	3	884534992
327	191	4	887820828
268	672	2	875744501
297	286	5	874953892
295	151	4	879517635
13	877	2	882140792
70	584	3	884150236
145	460	1	875271312
275	176	4	880314320
48	259	4	879434270
235	419	5	889655858
83	413	1	891182379
147	258	4	885594040
92	521	4	875813412
246	728	1	884923829
43	284	5	883955441
207	203	3	877124625
234	485	3	892079434
201	587	4	884140975
286	689	5	884583549
69	12	5	882145567
237	494	4	879376553
85	133	4	879453876
276	85	3	874791871
311	366	5	884366010
320	399	3	884749411
114	175	5	881259955
42	121	4	881110578
7	680	4	891350703
154	302	4	879138235
106	660	4	881451631
313	71	4	891030144
90	526	5	891383866
94	186	4	891722278
224	43	3	888104456
44	230	2	883613335
229	315	1	891632945
151	480	5	879524151
311	505	4	884365451
320	202	4	884750946
113	329	3	875935312
255	859	3	883216748
193	827	2	890859916
276	789	3	874791623
259	750	4	888630424
204	172	3	892513819
78	412	4	879634223
85	98	4	879453716
279	393	1	875314093
222	323	3	877562839
288	127	5	886374451
42	606	3	881107538
25	729	4	885852697
119	213	5	874781257
116	185	3	876453519
123	13	3	879873988
315	657	4	879821299
142	243	1	888640199
13	480	3	881515193
201	326	2	884111095
43	631	2	883955675
195	387	4	891762491
95	174	5	879196231
130	332	4	876250582
233	482	4	877661437
44	530	5	878348725
292	86	4	881105778
176	294	2	886047220
157	405	3	886890342
207	787	3	876079054
239	204	3	889180888
251	144	5	886271920
269	923	4	891447169
178	148	4	882824325
138	121	4	879023558
30	82	4	875060217
302	245	2	879436911
34	690	4	888602513
292	276	5	881103915
271	11	4	885848408
69	175	3	882145586
42	456	3	881106113
311	568	5	884365325
183	241	4	892323453
269	411	1	891451013
288	196	5	886373474
268	42	4	875310384
308	634	4	887737334
308	166	3	887737837
57	831	1	883697785
207	410	3	877838946
271	211	5	885849164
16	144	5	877721142
90	603	5	891385132
209	408	4	883417517
299	238	4	877880852
279	1228	4	890779991
128	140	4	879968308
307	173	5	879283786
167	392	1	892738307
22	791	1	878887227
291	159	4	875087488
194	705	2	879524007
10	489	4	877892210
95	128	3	879196354
10	657	4	877892110
59	855	4	888204502
124	11	5	890287645
7	133	5	891353192
256	692	5	882165066
85	629	3	879454685
271	1266	2	885848943
276	1416	3	874792634
155	988	2	879371261
318	476	4	884495164
307	258	5	879283786
28	7	5	881961531
236	729	5	890118372
38	672	3	892434800
7	93	5	891351042
255	217	2	883216600
184	729	3	889909840
154	175	5	879138784
311	403	4	884365889
116	301	3	892683732
94	229	3	891722979
221	508	4	875244160
95	636	1	879196566
44	56	2	878348601
305	203	4	886323839
207	508	4	877879259
130	161	4	875802058
98	163	3	880499053
328	9	4	885045993
178	218	3	882827776
293	293	4	888904795
162	742	4	877635758
128	79	4	879967692
307	1411	4	877124058
269	514	4	891449123
195	186	3	888737240
327	533	4	887822530
189	91	3	893265684
206	1394	1	888179981
95	143	4	880571951
31	682	2	881547834
94	157	5	891725332
73	588	2	888625754
256	819	4	882151052
291	366	3	874868255
222	153	4	878182416
207	98	4	875509887
222	298	4	877563253
286	151	5	875806800
116	262	3	876751342
7	174	5	891350757
148	495	4	877016735
311	495	4	884366066
178	255	4	882824001
181	597	3	878963276
123	847	4	879873193
291	77	4	874834799
237	528	5	879376606
140	301	3	879013747
290	222	4	880731778
177	79	4	880130758
65	202	4	879217852
311	181	4	884364724
125	796	3	892838591
77	168	4	884752721
58	960	4	884305004
117	405	5	880126174
248	127	5	884535084
5	423	4	875636793
254	286	1	887346861
289	7	4	876789628
241	294	3	887250085
213	690	3	878870275
99	508	4	885678840
275	523	4	880314031
168	284	2	884288112
28	380	4	881961394
144	31	3	888105823
198	651	4	884207424
181	1093	1	878962391
221	268	5	876502910
267	739	4	878973276
129	303	3	883244011
301	496	5	882075743
94	33	3	891721919
318	64	4	884495590
298	477	4	884126202
290	476	3	880475837
16	942	4	877719863
130	815	3	874953866
181	304	1	878961586
178	125	4	882824431
42	506	3	881108760
320	284	4	884748818
138	151	4	879023389
197	849	3	891410124
215	157	4	891435573
94	1119	4	891723261
293	724	3	888907061
79	246	5	891271545
279	1492	4	888430806
189	30	4	893266205
233	806	4	880610396
198	24	2	884205385
222	172	5	878183079
276	301	4	877584219
70	417	3	884066823
305	15	1	886322796
201	370	1	884114506
57	409	4	883697655
13	314	1	884538485
206	245	1	888179772
125	173	5	879454100
128	143	5	879967300
92	763	3	886443192
65	56	3	879217816
236	506	5	890118153
262	77	2	879794829
90	958	4	891383561
144	91	2	888106106
63	841	1	875747917
323	117	3	878739355
197	176	5	891409798
277	273	5	879544145
176	288	3	886046979
38	838	2	892433680
99	546	4	885679353
326	186	4	879877143
59	663	4	888204928
59	702	5	888205463
26	15	4	891386369
7	182	4	891350965
112	354	3	891304031
109	154	2	880578121
121	405	2	891390579
293	167	3	888907702
297	198	3	875238923
276	11	5	874787497
222	210	4	878184338
287	92	4	875334896
62	443	3	879375080
106	703	4	881450039
276	1218	4	874792040
230	210	5	880484975
246	184	4	884921948
22	511	4	878887983
165	258	5	879525672
161	174	2	891170800
109	89	4	880573263
305	87	1	886323153
195	181	5	875771440
7	193	5	892135346
326	480	4	879875691
77	125	3	884733014
85	58	4	879829689
186	588	4	879024535
256	280	5	882151167
84	529	5	883453108
74	288	3	888333280
102	432	3	883748418
194	770	4	879525342
267	114	5	878971514
1	92	3	876892425
16	504	5	877718168
211	300	2	879461395
90	31	4	891384673
234	657	4	892079840
60	1020	4	883327018
92	947	4	875654929
158	1	4	880132443
87	1000	3	879877173
276	104	1	874836682
1	228	5	878543541
42	143	4	881108229
43	26	5	883954901
299	1322	3	877878001
130	200	5	875217392
307	71	5	879283169
147	339	5	885594204
311	229	5	884365890
296	286	5	884196209
217	82	5	889069842
80	886	4	883605238
314	9	4	877886375
64	527	4	879365590
249	79	5	879572777
21	298	5	874951382
68	118	2	876974248
215	151	5	891435761
305	238	3	886323617
308	417	3	887740254
102	118	3	888801465
189	120	1	893264954
112	750	4	884992444
130	622	3	875802173
188	474	4	875072674
56	585	3	892911366
56	230	5	892676339
20	11	2	879669401
20	176	2	879669152
222	25	3	877563437
49	148	1	888068195
307	431	4	877123333
144	313	5	888103407
23	404	4	874787860
144	961	3	888106106
160	3	3	876770124
22	227	4	878888067
79	508	3	891271676
18	647	4	880129595
151	481	3	879524669
312	480	5	891698224
256	29	4	882164644
158	568	4	880134532
311	141	4	884366187
303	179	5	879466491
25	478	5	885852271
195	407	2	877835302
152	147	3	880149045
145	1001	4	875271607
151	260	1	879523998
194	576	2	879528568
271	624	2	885849558
162	121	4	877636000
313	65	2	891016962
6	532	3	883600066
22	433	3	878886479
13	915	5	892015023
327	461	3	887746665
200	402	4	884129029
271	22	5	885848518
269	478	4	891448980
315	431	2	879821300
178	121	5	882824291
210	502	3	891035965
76	135	5	875028792
318	648	5	884495534
279	1291	4	875297708
75	121	4	884050450
90	618	5	891385335
44	174	5	878347662
293	729	2	888907145
217	195	5	889069709
224	708	2	888104153
246	121	4	884922627
284	906	3	885328836
301	172	5	882076403
244	31	4	880603484
95	395	3	888956928
303	330	3	879552065
198	640	3	884208651
256	802	3	882164955
46	690	5	883611274
305	209	5	886322966
83	364	1	886534501
224	1208	1	888104554
295	67	4	879519042
116	248	3	876452492
201	37	2	884114635
155	748	2	879371261
318	508	4	884494976
274	288	4	878944379
263	333	2	891296842
145	172	5	882181632
188	191	3	875073128
119	313	5	886176135
270	306	5	876953744
262	91	3	879792713
131	845	4	883681351
250	260	4	878089144
33	307	3	891964148
37	183	4	880930042
6	211	5	883601155
85	517	5	879455238
308	164	4	887738664
42	746	3	881108279
102	1025	2	883278200
311	70	4	884364999
181	1322	1	878962086
17	508	3	885272779
174	396	1	886515104
125	150	1	879454892
181	1364	1	878962464
235	511	5	889655162
1	266	1	885345728
295	727	5	879517682
56	194	5	892676908
83	1035	4	880308959
100	355	4	891375313
106	828	2	883876872
270	327	5	876953900
181	680	1	878961709
115	228	4	881171488
286	771	2	877535119
234	151	3	892334481
16	92	4	877721905
130	410	5	875802105
271	121	2	885848132
320	1157	4	884751336
189	462	5	893265741
313	31	4	891015486
49	238	4	888068762
60	79	4	883326620
13	226	4	882397651
1	121	4	875071823
150	246	5	878746719
13	548	3	882398743
179	751	1	892151565
222	426	1	878181351
7	614	5	891352489
157	1132	3	886891132
193	368	1	889127860
130	993	5	874953665
166	322	5	886397723
62	4	4	879374640
253	183	5	891628341
261	117	4	890455974
269	1020	4	891449571
269	136	4	891449075
322	197	5	887313983
7	647	5	891352489
112	748	3	884992651
170	245	5	884103758
271	823	3	885848237
294	288	5	877818729
151	522	5	879524443
311	213	4	884365075
26	257	3	891371596
291	627	4	875086991
26	7	3	891350826
221	468	3	875246824
318	204	5	884496218
87	996	3	879876848
279	88	1	882146554
279	562	3	890451433
207	14	4	875504876
279	163	5	875313311
230	238	1	880484778
94	235	4	891722980
293	931	1	888905252
121	86	5	891388286
198	180	3	884207298
292	653	4	881105442
92	781	3	875907649
291	572	3	874834944
48	690	4	879434211
102	264	2	883277645
1	114	5	875072173
180	79	3	877442037
255	879	3	883215660
250	2	4	878090414
119	716	5	874782190
101	282	3	877135883
244	220	2	880605264
67	1	3	875379445
291	99	4	875086887
59	238	5	888204553
311	73	4	884366187
177	919	4	880130736
1	132	4	878542889
144	778	4	888106044
1	74	1	889751736
268	68	4	875744173
232	705	5	888549838
49	758	1	888067596
102	313	3	887048184
279	1093	4	875298330
279	1493	1	888465068
22	173	5	878886368
122	715	5	879270741
145	315	5	883840797
119	1101	5	874781779
261	259	4	890454843
1	134	4	875073067
94	45	5	886008764
330	11	4	876546561
291	741	5	874834481
6	180	4	883601311
188	88	4	875075300
299	921	3	889502087
253	203	4	891628651
215	194	4	891436150
291	273	3	874833705
303	867	3	879484373
6	477	1	883599509
307	1110	4	877122208
130	876	4	874953291
95	483	3	879198697
74	326	4	888333329
13	305	4	881514811
4	260	4	892004275
261	294	4	890454217
159	259	4	893255969
137	55	5	881433689
174	699	5	886514220
286	158	3	877533472
87	1183	3	879875995
270	230	3	876955868
91	172	4	891439208
296	272	5	884198772
125	483	4	879454628
62	1118	3	879375537
328	200	4	885046420
296	510	5	884197264
234	500	3	892078890
237	100	5	879376381
150	13	4	878746889
301	610	3	882077176
151	25	4	879528496
271	8	4	885848770
87	303	3	879875471
293	1220	2	888907552
113	294	4	875935277
311	518	3	884365451
181	123	2	878963276
328	905	3	888641999
110	301	2	886987505
288	742	3	886893063
111	887	3	891679692
194	196	3	879524007
239	605	4	889180446
109	5	3	880580637
291	824	4	874833962
16	168	4	877721142
14	357	2	890881294
22	687	1	878887476
207	746	4	877878342
312	1299	4	891698832
268	250	4	875742530
68	411	1	876974596
195	887	4	886782489
271	50	5	885848640
74	9	4	888333458
308	802	3	887738717
144	66	4	888106078
195	14	4	890985390
18	199	3	880129769
13	918	3	892524090
174	41	1	886515063
109	159	4	880578121
227	293	5	879035387
233	357	5	877661553
264	475	5	886122706
205	678	1	888284618
275	1066	3	880313679
56	68	3	892910913
78	1160	5	879634134
130	682	4	881076059
127	380	5	884364950
130	568	5	876251693
58	1100	2	884304979
49	473	3	888067164
13	273	3	882397502
203	336	3	880433474
330	136	5	876546378
109	195	5	880578038
186	406	1	879023272
293	148	1	888907015
280	1028	5	891702276
143	331	5	888407622
183	96	3	891463617
60	699	4	883327539
178	131	4	882827947
297	216	4	875409423
59	1117	4	888203313
276	429	5	874790972
179	258	5	892151270
87	386	2	879877006
198	1169	4	884208834
119	54	4	886176814
297	20	4	874954763
1	98	4	875072404
268	205	5	875309859
279	174	4	875306636
64	187	5	889737395
119	1262	3	890627252
75	1017	5	884050502
27	742	3	891543129
307	21	4	876433101
37	685	3	880915528
82	15	3	876311365
244	238	5	880606118
271	274	3	885848014
174	1014	3	890664424
210	135	5	887736352
262	258	4	879961282
320	68	5	884749327
85	660	4	879829618
311	348	4	884364108
82	208	3	878769815
1	186	4	875073128
145	368	3	888398492
276	401	3	874792094
23	213	3	874785675
64	515	5	889737478
63	237	3	875747342
293	227	2	888906990
322	32	5	887314417
74	285	3	888333428
297	202	3	875238638
82	216	4	878769949
280	145	3	891702198
200	227	5	884129006
290	21	3	880475695
43	820	2	884029742
95	573	1	888954808
181	20	1	878962919
178	926	4	882824671
81	476	2	876534124
194	410	3	879541042
325	402	2	891479706
276	347	4	885159630
207	133	4	875812281
87	135	5	879875649
331	7	4	877196633
315	8	3	879820961
106	435	3	881452355
286	83	5	877531975
87	157	3	879877799
87	163	4	879877083
286	655	3	889651746
232	8	2	888549757
254	380	4	886474456
96	91	5	884403250
232	1	4	880062302
315	98	4	879821193
43	553	4	875981159
305	679	3	886324792
61	690	2	891206407
44	665	1	883613372
92	1016	2	875640582
168	255	1	884287560
276	270	4	879131395
328	568	3	885047896
222	1053	3	881060735
93	222	4	888705295
330	235	5	876544690
82	504	4	878769917
2	314	1	888980085
89	732	5	879459909
38	216	5	892430486
308	85	4	887741245
24	153	4	875323368
235	1464	4	889655266
1	221	5	887431921
222	715	2	878183924
222	69	5	878182338
43	114	5	883954950
331	486	3	877196308
223	322	4	891548920
201	452	1	884114770
158	271	4	880132232
32	249	4	883717645
314	90	2	877888758
313	245	3	891013144
102	576	2	888802722
211	526	4	879459952
268	425	4	875310549
332	770	3	888098170
38	508	2	892429399
280	975	4	891702252
10	463	4	877889186
92	386	3	875907727
268	374	2	875744895
69	258	4	882027204
210	96	4	887736616
213	144	5	878956047
254	50	5	886471151
58	272	5	884647314
327	210	3	887744065
291	385	4	874835141
291	324	1	874805453
246	596	3	884921511
11	714	4	891904214
329	100	4	891655812
86	258	5	879570366
7	621	5	892132773
246	80	2	884923329
308	481	4	887737997
54	820	3	880937992
177	651	3	880130862
10	655	5	877891904
83	631	2	887664566
145	993	3	875270616
255	185	4	883216449
18	607	3	880131752
226	180	4	883889322
234	616	2	892334976
274	25	5	878945541
293	156	4	888905948
83	476	3	880307359
295	173	5	879518257
286	1039	5	877531730
42	48	5	881107821
208	204	3	883108360
232	275	2	885939945
267	94	3	878972558
271	242	4	885844495
125	97	3	879454385
323	333	4	878738865
305	56	1	886323068
145	250	5	882182944
38	1030	5	892434475
202	515	1	879726778
181	975	2	878963343
332	566	4	888360342
108	13	3	879879834
194	520	5	879545114
144	62	2	888105902
194	1183	2	879554453
148	172	5	877016513
144	1147	4	888105587
269	961	5	891457067
290	71	5	880473667
249	597	2	879640436
65	676	5	879217689
301	395	1	882079384
267	546	3	878970877
207	754	4	879577345
201	777	1	884112673
314	1095	3	877887356
210	631	5	887736796
22	456	1	878887413
59	931	2	888203610
92	715	4	875656288
50	475	5	877052167
188	159	3	875074589
303	700	3	879485718
197	288	3	891409387
244	676	4	880604858
44	88	2	878348885
164	597	4	889402225
11	230	4	891905783
6	297	3	883599134
186	925	5	879023152
190	147	4	891033863
184	1137	5	889907812
85	269	3	891289966
185	127	5	883525183
44	257	4	878346689
293	484	5	888906217
150	1	4	878746441
60	179	4	883326566
75	147	3	884050134
269	640	5	891457067
138	493	4	879024382
299	271	3	879737472
92	928	3	886443582
299	24	3	877877732
292	183	5	881103478
5	394	2	879198031
62	559	3	879375912
198	549	3	884208518
288	1039	2	886373565
152	272	5	890322298
42	999	4	881108982
64	333	3	879365313
99	682	2	885678371
59	121	4	888203313
135	233	3	879857843
7	22	5	891351121
24	427	5	875323002
144	747	5	888105473
261	322	4	890454974
201	475	4	884112748
133	258	5	890588639
110	245	3	886987540
5	384	3	875636389
139	268	4	879537876
112	322	4	884992690
234	596	2	891227979
301	184	4	882077222
291	1471	3	874834914
285	216	3	890595900
85	53	3	882995643
275	183	3	880314500
296	275	4	884196555
271	197	4	885848915
29	748	2	882821558
221	172	5	875245907
323	9	4	878739325
111	340	4	891679692
95	176	3	879196298
207	170	4	877125221
136	276	5	882693489
124	616	4	890287645
185	528	4	883526268
167	404	3	892738278
286	341	5	884069544
84	322	3	883449567
151	529	5	879542610
264	401	5	886123656
289	1	3	876789736
144	64	5	888105140
56	29	3	892910913
23	528	4	874786974
328	742	4	885047309
125	785	3	892838558
200	72	4	884129542
249	23	4	879572432
130	56	5	875216283
140	319	4	879013617
49	102	2	888067164
158	483	5	880133225
222	58	3	878182479
194	213	2	879523575
177	89	5	880131088
7	268	3	891350703
59	549	4	888205659
145	411	2	875271522
265	7	2	875320689
248	282	2	884535582
239	47	2	889180169
319	879	5	876280338
42	102	5	881108873
301	1035	4	882078809
326	69	2	879874964
180	67	1	877127591
280	99	2	891700475
145	682	3	879161624
214	79	4	891544306
259	210	4	874725485
57	864	3	883697512
261	597	4	890456142
136	298	4	882693569
293	705	5	888906338
194	470	3	879527421
75	496	5	884051921
202	172	3	879726778
23	183	3	874785728
38	403	1	892432205
52	1009	5	882922328
95	720	2	879196513
65	97	5	879216605
207	290	2	878104627
201	2	2	884112487
190	751	4	891033606
162	685	3	877635917
221	250	5	875244633
92	134	4	875656623
49	695	3	888068957
102	391	2	888802767
6	500	4	883601277
152	25	3	880149045
145	278	4	875272871
328	271	3	885044607
116	750	4	886309481
90	237	4	891385215
221	318	5	875245690
128	283	5	879966729
94	467	4	885873423
221	1218	3	875246745
281	332	4	881200603
294	539	4	889241707
300	948	4	875650018
326	153	4	879875751
62	28	3	879375169
159	249	4	884027269
76	811	4	882606323
74	237	4	888333428
81	411	2	876534244
280	227	3	891702153
224	22	5	888103581
64	77	3	889737420
194	756	1	879549899
15	20	3	879455541
43	328	4	875975061
244	100	4	880604252
327	805	4	887819462
21	928	3	874951616
83	254	2	880327839
14	22	3	890881521
318	610	5	884496525
92	756	3	886443582
222	1078	2	878183449
62	157	3	879374686
13	840	3	886261387
271	300	2	885844583
59	13	5	888203415
208	514	4	883108324
289	815	3	876789581
279	249	3	878878420
326	50	5	879875112
73	12	5	888624976
28	234	4	881956144
6	95	2	883602133
90	354	3	891382240
96	519	4	884402896
7	627	3	891352594
254	649	1	886474619
328	519	5	885046420
247	751	3	893081411
45	472	3	881014417
323	127	5	878739137
268	566	3	875744321
291	816	3	874867852
59	405	3	888203578
200	409	2	884127431
332	975	3	887938631
239	612	5	889178616
22	399	4	878887157
267	147	3	878970681
235	319	4	889654419
87	70	5	879876448
216	143	2	881428956
268	121	2	875743141
239	317	5	889179291
269	922	5	891457067
207	468	4	877124806
270	148	4	876954062
184	559	3	889910418
304	271	4	884968415
331	479	2	877196504
157	283	4	886890692
239	183	5	889180071
261	339	5	890454351
301	58	4	882077285
145	339	3	882181058
10	321	4	879163494
48	308	5	879434292
321	631	4	879440264
32	591	3	883717581
125	1036	2	892839191
1	84	4	875072923
21	742	3	874951617
22	186	5	878886368
292	324	3	881104533
72	129	4	880035588
256	642	4	882164893
92	1095	2	886443728
73	475	4	888625753
290	274	4	880731874
83	543	2	887665445
56	597	3	892679439
83	216	4	880307846
215	22	3	891435161
101	369	2	877136928
328	521	4	885047484
307	175	4	877117651
201	23	4	884111830
197	570	4	891410124
26	286	3	891347400
90	489	5	891384357
98	517	5	880498990
57	250	3	883697223
163	288	3	891220226
1	31	3	875072144
104	324	1	888442404
333	894	3	891045496
311	22	4	884364538
237	211	4	879376515
44	603	4	878347420
22	96	5	878887680
213	546	4	878870903
257	258	3	879029516
327	300	2	887743541
279	1017	3	875296891
53	845	3	879443083
85	97	2	879829667
43	286	4	875975028
181	7	4	878963037
297	574	1	875239092
201	651	4	884111217
320	99	4	884751440
94	180	5	885870284
235	85	4	889655232
305	131	3	886323440
234	229	4	892334189
328	591	3	885047018
328	754	4	885044607
258	323	4	885701062
3	323	2	889237269
16	70	4	877720118
286	425	2	877532013
327	702	2	887819021
200	265	5	884128372
207	131	3	878104377
292	10	5	881104606
214	179	5	892668130
155	321	4	879370963
106	213	4	881453065
200	586	4	884130391
305	216	5	886323563
279	1113	3	888806035
178	984	2	882823530
331	133	3	877196443
58	45	5	884305295
167	1306	5	892738385
151	191	3	879524326
326	168	3	879874859
297	443	2	875240133
191	288	3	891562090
81	471	3	876533586
284	258	4	885329146
5	267	4	875635064
150	325	1	878747322
257	59	5	879547440
145	443	3	882182658
271	191	5	885848448
176	297	3	886047918
158	38	4	880134607
152	716	5	884019001
232	638	5	888549988
109	930	3	880572351
243	660	4	879988422
57	744	5	883698581
145	1057	1	875271312
235	275	5	889655550
181	124	1	878962550
145	182	5	885622510
249	476	3	879640481
44	11	3	878347915
194	566	4	879522819
109	218	4	880578633
49	10	3	888066086
269	210	1	891449608
87	233	4	879876036
314	791	4	877889398
292	132	4	881105340
7	300	4	891350703
291	460	5	874834254
292	176	5	881103478
290	1028	3	880732365
122	427	3	879270165
17	151	4	885272751
59	47	5	888205574
29	689	2	882821705
274	411	3	878945888
190	340	1	891033153
213	50	5	878870456
14	111	3	876965165
321	131	4	879439883
221	1314	3	875247833
195	100	5	875771440
236	187	3	890118340
92	619	4	875640487
303	576	3	879485417
42	210	5	881108633
246	423	3	884920900
181	823	2	878963343
197	231	3	891410124
181	369	3	878963418
130	172	5	875801530
276	1131	3	874796116
252	742	4	891455743
221	1067	3	875244387
292	488	5	881105657
177	124	3	880130881
42	785	4	881109060
1	70	3	875072895
13	178	4	882139829
76	276	5	875027601
269	72	2	891451470
3	331	4	889237455
290	429	4	880474606
159	815	3	880557387
248	474	2	884534672
214	1065	5	892668173
30	181	4	875060217
8	182	5	879362183
238	118	3	883576509
249	176	4	879641109
264	1069	5	886123728
98	655	3	880498861
123	275	4	879873726
181	688	1	878961668
7	162	5	891353444
119	269	3	892564213
181	457	1	878961474
138	483	5	879024280
56	63	3	892910268
291	122	3	874834289
326	468	3	879875572
92	175	4	875653549
293	654	5	888905760
162	1047	5	877635896
303	549	3	879484846
325	504	3	891477905
267	654	5	878971902
130	546	4	876250932
216	577	1	881432453
301	53	1	882078883
91	423	5	891439090
301	384	5	882079315
291	672	3	874867741
18	196	3	880131297
195	1084	4	888737345
222	939	3	878182211
327	274	2	887819462
254	577	1	886476092
332	693	5	888098538
267	55	4	878972785
16	443	5	877727055
158	79	4	880134332
305	14	4	886322893
87	67	4	879877007
313	175	4	891014697
43	498	5	875981275
234	1035	3	892335142
90	11	4	891384113
230	196	5	880484755
1	60	5	875072370
262	185	3	879793164
221	1407	3	875247833
279	382	4	875312947
211	678	3	879461394
287	1016	5	875334430
167	603	4	892738212
119	154	5	874782022
126	878	5	887938392
60	474	5	883326028
296	427	5	884198772
300	243	4	875650068
194	971	3	879551049
83	186	4	880308601
207	1242	5	884386260
311	1116	3	884364623
181	406	1	878962955
130	550	5	878537602
245	222	4	888513212
168	235	2	884288270
256	756	4	882151167
1	177	5	876892701
59	10	4	888203234
223	258	1	891548802
243	225	3	879987655
148	1149	5	877016513
10	48	4	877889058
178	549	4	882827689
295	4	4	879518568
99	124	2	885678886
334	117	3	891544735
263	523	5	891298107
230	402	5	880485445
152	132	5	882475496
189	45	3	893265657
130	231	3	875801422
334	282	4	891544925
91	193	3	891439057
244	97	2	880605514
83	866	3	883867947
222	217	3	881060062
10	203	4	877891967
173	300	4	877556988
269	168	4	891448850
292	100	5	881103999
60	508	4	883327368
197	431	3	891409935
313	265	4	891016853
234	506	4	892318107
234	959	2	892334189
154	484	4	879139096
14	56	5	879119579
201	1211	3	884113806
181	359	1	878961668
52	748	4	882922629
308	579	3	887740700
212	515	4	879303571
13	42	4	882141393
268	99	3	875744744
119	245	4	886176618
44	202	4	878347315
126	884	5	887938392
159	111	4	880556981
90	301	4	891382392
320	42	4	884751712
301	25	3	882075110
114	269	4	881256090
9	691	5	886960055
315	17	1	879821003
137	195	5	881433689
183	562	3	891467003
297	301	4	876529834
334	603	5	891628849
18	954	3	880130640
152	97	5	882475618
184	498	5	889913687
325	430	5	891478028
39	315	4	891400094
231	127	3	879965565
302	309	2	879436820
63	150	4	875747292
201	375	3	884287140
200	103	2	891825521
13	94	3	882142057
297	22	4	875238984
201	844	2	884112537
14	93	3	879119311
240	343	3	885775831
184	716	3	889909987
216	12	5	881432544
38	122	1	892434801
257	276	5	882049973
256	778	4	882165103
200	229	5	884129696
148	177	2	877020715
249	22	5	879572926
184	47	4	889909640
276	58	4	874791169
268	432	3	875310145
224	258	3	888081947
145	25	2	875270655
298	261	4	884126805
244	743	5	880602170
289	410	2	876790361
59	132	5	888205744
301	1112	4	882079294
56	1090	3	892683641
327	192	5	887820828
285	288	5	890595584
133	328	3	890588577
71	346	4	885016248
293	1132	3	888905416
13	908	1	886302385
1	27	2	876892946
271	172	5	885848616
286	269	5	879780839
49	926	1	888069117
290	153	3	880475310
226	270	4	883888639
104	122	3	888465739
311	233	4	884365889
60	178	5	883326399
200	191	5	884128554
128	276	4	879967550
157	748	2	886890015
303	460	4	879543600
5	445	3	875720744
268	540	1	875542174
290	218	2	880475542
181	1346	1	878962086
189	276	3	893264300
90	659	4	891384357
321	134	3	879438607
279	108	4	892174381
197	770	3	891410082
217	566	4	889069903
193	682	1	889123377
34	310	4	888601628
293	157	5	888905779
297	300	3	874953892
24	742	4	875323915
259	405	3	874725120
303	1007	5	879544576
326	282	2	879875964
10	218	4	877889261
334	635	2	891548155
272	8	4	879455015
76	1129	5	875028075
13	300	1	881515736
194	431	4	879524291
256	291	5	882152630
148	185	1	877398385
276	318	5	874787496
227	126	4	879035158
311	553	3	884365451
198	427	4	884207009
13	180	5	882141248
286	100	3	876521650
271	451	3	885849447
59	318	5	888204349
328	655	4	886037429
25	174	5	885853415
90	971	4	891385250
157	150	5	874813703
106	69	4	881449886
173	322	4	877557028
276	1135	4	874791527
276	76	4	874791506
49	546	1	888069636
115	234	5	881171982
307	22	3	879205470
82	218	3	878769748
116	1082	3	876453171
80	50	3	887401533
59	381	5	888205659
236	143	4	890116163
56	174	5	892737191
82	413	1	884714593
82	69	4	878769948
144	727	3	888105765
7	526	5	891351042
49	531	3	888066511
1	260	1	875071713
243	129	2	879987526
313	488	5	891013496
207	273	4	878104569
334	222	4	891544904
83	95	4	880308453
162	230	2	877636860
326	496	5	879874825
236	686	3	890118372
17	9	3	885272558
92	1215	2	890251747
82	147	3	876311473
201	242	4	884110598
223	237	5	891549657
168	295	4	884287615
186	977	3	879023273
246	356	2	884923047
62	135	4	879375080
320	456	3	884748904
48	603	4	879434607
209	269	2	883589606
236	1328	4	890116132
92	673	4	875656392
71	285	3	877319414
5	167	2	875636281
67	240	5	875379566
188	554	2	875074891
326	54	3	879876300
234	462	4	892079840
31	302	4	881547719
228	886	1	889387173
172	603	3	875538027
314	1139	5	877888480
297	652	3	875239346
264	659	5	886122577
118	174	5	875385007
216	286	4	881432501
290	1013	2	880732131
256	278	5	882151517
200	820	3	884127370
49	312	3	888065786
118	433	5	875384793
293	195	3	888906119
13	29	2	882397833
42	405	4	881105541
293	566	3	888907312
125	158	4	892839066
315	230	4	879821300
296	83	5	884199624
188	204	4	875073478
201	4	4	884111830
253	747	3	891628501
315	531	5	879799457
210	134	5	887736070
119	1170	3	890627339
151	509	4	879524778
81	273	4	876533710
324	748	5	880575108
43	15	5	875975546
298	432	4	884183307
250	127	4	878089881
286	1265	5	884069544
203	294	2	880433398
267	226	3	878972463
194	735	4	879524718
303	99	4	879467514
193	195	1	889124507
57	588	4	883698454
92	672	3	875660028
207	269	4	877845577
325	154	3	891478480
280	86	4	891700475
197	449	5	891410124
39	352	5	891400704
197	510	5	891409935
117	1	4	880126083
132	922	5	891278996
271	180	5	885849087
222	433	4	881059876
103	117	4	880416313
201	26	4	884111927
270	387	5	876955689
104	100	4	888465166
95	96	4	879196298
130	204	5	875216718
290	239	2	880474451
314	833	4	877887155
313	969	4	891015387
295	722	4	879518881
269	412	3	891446904
49	1	2	888068651
332	228	5	888359980
301	11	4	882076291
125	434	4	879454100
336	66	3	877756126
1	145	2	875073067
327	230	4	887820448
262	292	4	879961282
313	205	5	891013652
321	523	3	879440687
248	185	3	884534772
38	384	5	892433660
224	778	1	888104057
217	1222	1	889070050
6	475	5	883599478
331	47	5	877196235
38	423	5	892430071
1	174	5	875073198
308	60	3	887737760
207	642	3	875991116
215	1039	5	891436543
56	239	4	892676970
109	1011	3	880571872
10	124	5	877888545
320	210	5	884749227
269	180	3	891448120
290	380	3	880731766
311	205	5	884365357
129	270	3	883243934
109	281	2	880571919
235	898	3	889654553
335	328	3	891566903
13	508	3	882140426
201	558	2	884112537
276	801	3	877935306
81	118	2	876533764
288	200	4	886373534
263	97	4	891299387
293	87	4	888907015
136	117	4	882694498
318	660	3	884497207
295	405	5	879518319
201	480	4	884111598
232	708	4	888550060
197	566	4	891409893
313	180	5	891014898
109	230	5	880579107
168	596	4	884287615
201	980	3	884140927
222	554	2	881060435
115	11	4	881171348
334	224	2	891545020
119	697	5	874782068
198	385	3	884208778
91	507	4	891438977
62	281	3	879373118
239	98	5	889180410
324	1033	4	880575589
201	823	3	884140975
322	50	5	887314418
107	305	4	891264327
64	2	3	889737609
28	50	4	881957090
246	202	3	884922272
168	1197	5	884287927
34	259	2	888602808
286	465	5	889651698
184	521	4	889908873
106	286	4	881449486
198	1117	3	884205252
291	53	5	874834827
25	477	4	885853155
1	159	3	875073180
181	1393	1	878961709
169	301	4	891268622
60	172	4	883326339
178	427	5	882826162
149	327	2	883512689
280	96	4	891700664
205	984	1	888284710
92	431	4	875660164
244	369	4	880605294
308	291	3	887739472
235	684	4	889655162
218	194	3	877488546
307	313	5	888095725
18	69	3	880129527
23	215	2	874787116
184	132	5	889913687
244	237	5	880602334
211	181	1	879461498
236	696	2	890117223
145	672	3	882182689
235	648	4	889655662
116	1016	2	876453376
178	358	1	888512993
11	561	2	891905936
329	512	4	891656347
183	405	4	891464393
308	467	4	887737194
207	576	3	877822904
198	249	2	884205277
100	750	4	891375016
291	168	5	874871800
115	762	4	881170508
151	169	5	879524268
305	403	2	886324792
338	494	3	879438570
292	525	5	881105701
234	671	3	892336257
234	584	3	892333653
279	275	3	875249232
234	638	4	892335989
110	79	4	886988480
106	273	3	881453290
128	111	3	879969215
298	151	3	884183952
42	845	5	881110719
128	747	3	879968742
190	717	3	891042938
1	82	5	878542589
99	421	3	885680772
313	208	3	891015167
13	45	3	882139863
305	302	4	886307860
94	185	5	885873684
271	204	4	885848314
128	83	5	879967691
267	50	5	878974783
142	189	4	888640317
1	56	4	875072716
18	214	4	880132078
188	234	4	875073048
235	100	4	889655550
303	408	4	879467035
100	266	2	891375484
178	302	4	892239796
42	781	4	881108280
18	488	3	880130065
184	14	4	889907738
293	521	3	888906288
293	849	2	888907891
198	156	3	884207058
234	966	4	892334189
181	1351	1	878962168
194	153	3	879546723
1	272	3	887431647
265	279	2	875320462
159	323	4	880485443
332	229	5	888360342
334	229	2	891549777
126	258	4	887853919
200	225	4	876042299
63	246	3	875747514
271	134	3	885848518
179	316	5	892151202
308	959	3	887739335
270	70	5	876955066
181	1198	1	878962585
21	445	3	874951658
326	675	4	879875457
268	823	2	875742942
109	845	4	880571684
339	132	5	891032953
244	95	4	880606418
62	702	2	879376079
321	615	5	879440109
254	141	3	886472836
295	423	4	879517372
271	241	3	885849207
7	519	4	891352831
334	52	4	891548579
136	14	5	882693338
192	1160	4	881367456
259	176	4	874725386
244	509	5	880606017
238	815	2	883576398
73	127	5	888625200
249	455	4	879640326
320	291	4	884749014
13	820	4	882398743
10	283	4	877892276
321	207	3	879440244
201	991	4	884110735
102	559	3	888803052
190	742	3	891033841
311	99	5	884365075
309	333	3	877370419
62	685	2	879373175
116	187	5	886310197
295	966	5	879518060
234	72	3	892335674
255	984	1	883215902
161	582	1	891170800
87	550	4	879876074
59	559	5	888206562
140	322	3	879013684
224	301	3	888082013
90	486	5	891383912
14	792	5	879119651
194	216	3	879523785
222	501	2	881060331
90	311	4	891382163
328	43	3	886038224
7	633	5	891351509
151	228	5	879524345
297	223	5	875238638
207	529	4	878191679
130	930	3	876251072
314	743	1	877886443
181	926	1	878962866
13	509	5	882140691
232	523	4	888549757
201	87	3	884111775
223	470	4	891550767
18	602	3	880131407
82	495	3	878769668
144	403	3	888105636
186	322	5	879022927
250	174	3	878092104
321	194	3	879441225
28	12	4	881956853
28	895	4	882826398
151	405	3	879543055
207	1102	3	880839891
201	164	3	884112627
6	509	4	883602664
42	380	4	881108548
221	895	2	885081339
328	10	4	885047099
270	159	4	876956233
269	340	5	891446132
216	249	3	880232917
201	1424	3	884113114
85	86	4	879454189
95	843	4	880572448
306	275	4	876503894
256	235	3	882153668
85	692	3	879828490
11	312	4	891902157
305	210	3	886323006
181	321	2	878961623
151	7	4	879524610
296	961	5	884197287
119	595	3	874781067
314	929	3	877887356
279	363	5	890451473
188	357	4	875073647
214	872	2	891542492
234	209	4	892317967
5	426	3	878844510
1	80	4	876893008
246	578	2	884923306
294	979	3	877819897
314	73	4	877889205
312	98	4	891698300
208	662	4	883108842
43	382	5	883955702
254	596	4	886473852
3	294	2	889237224
44	153	4	878347234
25	742	4	885852569
94	79	4	885882967
262	406	3	879791537
35	1025	3	875459237
148	501	4	877020297
70	423	5	884066910
83	265	5	880308186
5	222	4	875635174
308	1028	2	887738972
109	62	3	880578711
49	173	3	888067691
314	468	4	877892214
334	1163	4	891544764
269	205	3	891447841
38	318	3	892430071
102	222	3	888801406
329	297	4	891655868
305	1411	3	886324865
236	289	4	890117820
313	131	4	891015513
332	284	5	887938245
121	121	2	891388501
60	183	5	883326399
339	1030	1	891036707
296	544	4	884196938
11	720	1	891904717
263	272	5	891296919
303	203	5	879467669
288	182	4	886374497
291	17	4	874834850
308	628	3	887738104
13	755	3	882399014
64	231	3	889740880
277	24	4	879543931
130	572	3	878537853
293	386	2	888908065
279	368	1	886016352
189	253	4	893264150
296	32	4	884197131
305	169	5	886322893
303	262	5	879466065
95	211	3	879197652
207	1098	4	877879172
110	1248	3	886989126
312	408	4	891698174
279	1413	5	875314434
15	301	4	879455233
116	484	4	886310197
198	51	3	884208455
13	2	3	882397650
332	232	5	888098373
44	55	4	878347455
62	716	4	879375951
148	529	5	877398901
303	421	4	879466966
276	56	5	874791623
311	484	4	884366590
58	475	5	884304609
85	488	4	879455197
330	584	3	876547220
181	1067	1	878962550
301	515	3	882074561
13	830	1	882397581
127	268	1	884363990
37	56	5	880915810
314	924	5	877886921
201	210	2	884111270
198	511	4	884208326
94	742	3	891722214
209	258	2	883589626
305	610	3	886324128
67	405	5	875379794
294	120	2	889242937
246	98	4	884921428
194	162	3	879549899
307	393	3	877123041
95	976	2	879195703
268	252	3	875743182
216	298	5	881721819
5	453	1	879198898
223	845	4	891549713
293	124	4	888904696
224	1119	3	888082634
299	176	4	880699166
130	71	5	875801695
130	50	5	874953665
54	313	4	890608360
62	473	4	879373046
312	495	4	891699372
125	22	5	892836395
318	357	4	884496069
204	748	1	892392030
182	293	3	885613152
49	569	3	888067482
69	56	5	882145428
64	959	4	889739903
325	179	5	891478529
286	272	5	884069298
116	880	3	876680723
215	89	4	891435060
46	333	5	883611374
246	294	2	884924460
213	25	4	878870750
90	213	5	891383718
110	188	4	886988574
212	511	4	879304051
57	1059	3	883697432
57	825	1	883697761
297	282	3	874954845
276	176	5	874792401
106	45	3	881453290
151	66	4	879524974
276	66	3	874791993
269	76	3	891448456
154	286	4	879138235
210	219	3	887808581
306	319	4	876503793
324	471	5	880575412
265	472	3	875320542
85	389	3	882995832
54	325	3	880930146
18	498	4	880129940
271	345	3	885844666
123	22	4	879809943
87	1189	5	879877951
217	810	3	889070050
198	148	3	884206401
116	257	3	876452523
131	274	3	883681351
297	692	3	875239018
266	874	2	892257101
109	796	3	880582856
189	480	5	893265291
22	294	1	878886262
234	471	3	892335074
328	679	2	885049460
56	79	4	892676303
178	978	2	882824983
216	226	3	880244803
38	444	1	892433912
219	179	5	889492687
43	944	2	883956260
279	1484	3	875307587
236	507	3	890115897
296	1009	3	884196921
271	490	4	885848886
206	903	2	888180018
21	295	3	874951349
318	47	2	884496855
59	230	4	888205714
151	175	5	879524244
263	86	4	891299574
308	193	3	887737837
152	125	5	880149165
123	165	5	879872672
169	174	4	891359418
294	10	3	877819490
197	651	5	891409839
263	892	3	891297766
63	109	4	875747731
206	362	1	888180018
52	498	5	882922948
316	213	5	880853516
72	89	3	880037164
189	705	4	893265569
80	87	4	887401307
198	746	4	884207946
85	56	4	879453587
194	56	5	879521936
110	82	4	886988480
99	741	3	885678886
7	195	5	891352626
323	546	2	878739519
21	982	1	874951482
334	93	4	891545020
12	82	4	879959610
43	235	3	875975520
228	288	4	889387173
109	90	3	880583192
13	64	5	882140037
178	288	5	882823353
181	887	1	878962005
123	606	3	879872540
82	64	5	878770169
138	285	4	879023245
87	1182	3	879877043
201	304	2	884110967
70	202	4	884066713
178	655	4	882827247
327	558	4	887746196
315	654	5	879821193
251	55	3	886271856
42	70	3	881109148
311	482	4	884365104
129	272	4	883243972
307	193	3	879205470
10	4	4	877889130
338	211	4	879438092
95	514	2	888954076
342	1047	2	874984854
342	792	3	875318882
201	213	4	884111873
32	276	4	883717913
257	289	4	879029543
14	175	5	879119497
299	174	4	877880961
6	134	5	883602283
320	433	4	884751730
305	257	2	886322122
28	153	3	881961214
308	609	4	887739757
287	218	5	875335424
62	421	5	879375716
269	172	3	891449031
119	628	4	874775185
279	1142	1	890780603
224	1442	3	888104281
308	528	3	887737036
151	435	4	879524131
328	216	3	885045899
295	493	5	879516961
62	96	4	879374835
59	1109	3	888205088
255	258	4	883215406
102	195	4	888801360
128	660	2	879968415
8	79	4	879362286
197	1419	2	891410124
217	578	5	889070087
313	204	4	891014401
162	298	4	877635690
30	289	2	876847817
260	319	2	890618198
57	294	4	883696547
334	86	4	891548295
308	54	2	887740254
210	255	4	887730842
213	447	4	878955598
189	1021	5	893266251
220	306	4	881197664
104	1241	1	888465379
339	582	4	891032793
28	184	4	881961671
51	148	3	883498623
244	157	4	880604119
234	491	4	892079538
275	588	3	875154535
186	53	1	879023882
99	1052	1	885679533
269	131	5	891449728
311	720	3	884366307
270	1119	5	876955729
286	1035	3	877532094
311	94	3	884366187
211	257	5	879461498
239	671	5	889179290
201	98	4	884111312
43	403	4	883956305
315	216	4	879821120
53	924	3	879443303
308	452	2	887741329
338	613	3	879438597
90	357	5	891385132
303	327	1	879466166
247	271	2	893081411
144	303	4	888103407
102	1030	1	892994075
90	739	5	891384789
72	527	4	880036746
286	248	5	875806800
201	32	3	884140049
327	497	4	887818658
141	125	5	884585642
167	675	1	892738277
262	217	3	879792818
151	813	4	879524222
13	859	1	882397040
276	207	4	874795988
246	1073	4	884921380
298	98	4	884127720
23	88	3	874787410
94	700	2	891723427
130	772	4	876251804
5	403	3	875636152
297	176	4	881708055
178	250	4	888514821
128	417	4	879968447
270	281	5	876956137
63	251	4	875747514
42	357	5	881107687
100	288	2	891374603
334	100	5	891544707
162	222	4	877635758
184	1020	4	889908630
13	625	2	882398691
72	79	4	880037119
213	8	3	878955564
82	13	2	878768615
314	735	5	877888855
59	488	3	888205956
14	313	2	890880970
236	200	3	890115856
325	240	1	891479592
286	164	3	877533586
268	768	3	875744895
83	77	4	880308426
313	230	3	891015049
21	218	4	874951696
325	656	4	891478219
283	83	4	879298239
223	323	2	891549017
130	418	5	875801631
28	282	4	881957425
43	7	4	875975520
293	559	2	888906168
286	432	3	878141681
176	272	5	886047068
237	499	2	879376487
332	451	5	888360179
303	273	3	879468274
286	13	2	876521933
327	169	2	887744205
262	50	2	879962366
312	631	5	891699599
102	734	2	892993786
16	655	5	877724066
23	90	2	874787370
249	182	5	879640949
18	209	4	880130861
293	216	4	888905990
308	607	3	887737084
164	689	5	889401490
306	1009	4	876503995
327	655	4	887745303
280	756	4	891701649
106	97	5	881450810
109	147	4	880564679
156	58	4	888185906
133	260	1	890588878
23	511	5	874786770
112	689	4	884992668
116	313	5	886978155
271	13	4	885847714
313	136	5	891014474
240	898	5	885775770
52	405	4	882922610
280	202	3	891701090
262	1278	4	879961819
275	252	2	876197944
187	732	3	879465419
13	428	5	882140588
268	946	3	875310442
234	283	3	891227814
16	151	5	877721905
336	108	3	877757320
235	435	5	889655434
216	274	3	880233061
246	215	2	884921058
13	913	1	892014908
21	439	1	874951820
94	99	3	891721815
82	275	2	884714125
339	55	3	891032765
59	1116	3	888206562
217	685	5	889069782
295	736	5	879966498
170	328	3	884103860
151	826	1	879543212
13	212	5	882399385
223	1	4	891549324
246	196	3	884921861
154	137	3	879138657
158	144	4	880134445
11	120	2	891903935
18	630	3	880132188
197	181	5	891409893
235	433	4	889655596
331	69	5	877196384
244	278	3	880605294
217	540	1	889070087
312	134	5	891698764
299	168	4	878192039
234	1172	3	892079076
224	632	2	888103872
327	474	3	887743986
184	780	4	889913254
62	1107	1	879376159
65	70	1	879216529
101	928	2	877136302
210	465	4	887737131
144	237	4	888104258
320	250	4	884751992
311	692	4	884364652
159	328	3	893255993
128	77	3	879968447
167	48	1	892738277
291	558	4	874867757
56	143	3	892910182
38	392	5	892430120
293	264	3	888904392
115	69	1	881171825
276	250	4	874786784
280	225	4	891701974
295	588	4	879517682
26	321	3	891347949
302	328	3	879436844
145	109	4	875270903
201	380	1	884140825
57	252	2	883697807
280	100	3	891700385
310	258	3	879435606
26	269	4	891347478
308	4	5	887737890
269	174	1	891449124
262	71	4	879794951
221	684	4	875247454
263	521	3	891297988
256	276	3	882151198
1	229	4	878542075
266	508	4	892258004
59	127	5	888204430
325	505	4	891478557
327	133	4	887745662
282	269	4	879949347
151	300	4	879523942
104	283	4	888465582
291	1017	4	874833911
276	770	4	877935446
334	1108	4	891549632
224	879	3	888082099
64	1133	4	889739975
58	42	4	884304936
106	584	4	881453481
159	258	4	893255836
268	248	3	875742530
318	286	3	884470681
6	525	5	883601203
327	431	3	887820384
77	23	4	884753173
95	15	4	879195062
255	452	3	883216672
144	328	3	888103407
102	307	4	883748222
269	1014	3	891446838
184	172	4	889908497
306	306	5	876503792
49	732	3	888069040
181	1347	1	878962052
293	514	4	888906378
330	121	4	876544582
125	1074	3	892838827
291	147	4	874805768
269	214	3	891448547
13	168	4	881515193
305	76	1	886323506
313	435	5	891013803
307	229	5	879538921
314	54	4	877888892
269	529	5	891455815
283	186	5	879298239
158	8	5	880134948
92	87	3	876175077
85	842	3	882995704
20	118	4	879668442
193	393	4	889126808
167	222	4	892737995
201	1187	3	884112201
125	346	1	892835800
144	880	5	888103509
234	628	2	892826612
291	574	1	875087656
224	977	2	888104281
152	780	5	884019189
71	462	5	877319567
151	755	3	879543366
135	229	2	879857843
92	931	1	875644796
95	33	3	880571704
130	125	5	875801963
269	405	1	891450902
297	277	3	875048641
62	527	4	879373692
221	17	4	875245406
11	743	2	891904065
230	50	5	880484755
159	930	4	880557824
174	107	5	886434361
97	7	5	884238939
84	289	5	883449419
63	948	3	875746948
125	143	5	879454793
160	126	3	876769148
316	483	4	880853810
32	117	3	883717555
327	93	4	887744432
13	856	5	886303171
216	202	4	880234346
92	1212	3	876175626
1	140	1	878543133
263	183	4	891298655
5	173	4	875636675
85	372	4	879828720
194	519	4	879521474
109	550	5	880579107
201	198	4	884111873
340	172	4	884990620
49	117	1	888069459
7	642	3	892132277
239	286	1	889178512
198	568	3	884208710
237	23	4	879376606
239	135	5	889178762
5	241	1	875720948
72	382	4	880036691
297	480	4	875238923
249	826	1	879640481
25	127	3	885853030
94	227	3	891722759
195	591	4	892281779
92	85	3	875812364
85	709	5	879828941
308	502	5	887739521
311	117	4	884366852
247	251	4	893081395
235	792	4	889655490
329	326	3	891656639
338	79	4	879438715
244	428	4	880606155
187	70	4	879465394
253	483	5	891628122
194	62	2	879524504
70	71	3	884066399
203	332	5	880433474
49	72	2	888069246
308	673	4	887737243
246	426	3	884923471
280	231	3	891701974
180	433	5	877127273
110	1250	3	886988818
327	811	4	887747363
339	47	4	891032701
194	132	3	879520991
1	225	2	878542738
36	319	2	882157356
342	746	4	875320227
260	1105	5	890618729
40	754	4	889041790
175	31	4	877108051
62	827	2	879373421
138	100	5	879022956
252	9	5	891456797
59	421	5	888206015
110	540	3	886988793
1	235	5	875071589
334	269	3	891544049
301	95	5	882076334
63	6	3	875747439
269	805	2	891450623
151	357	5	879524585
268	404	4	875309430
199	473	4	883783005
22	780	1	878887377
28	441	2	881961782
299	210	4	889502980
317	326	3	891446438
254	384	1	886475790
178	245	3	882823460
297	194	3	875239453
90	966	5	891385843
11	734	3	891905349
325	514	4	891478006
249	411	3	879640436
18	964	3	880132252
311	118	3	884963203
334	293	3	891544840
294	483	4	889854323
297	86	5	875238883
293	647	5	888905760
294	876	3	889241633
286	142	4	877534793
308	569	3	887740410
222	164	4	878181768
49	721	2	888068934
303	1090	1	879485686
73	474	5	888625200
93	845	4	888705321
85	1101	4	879454046
223	216	5	891550925
42	1043	2	881108633
234	212	2	892334883
16	288	3	877717078
13	319	4	882139327
135	294	4	879857575
168	411	1	884288222
72	204	4	880037853
144	523	5	888105338
303	398	1	879485372
128	215	3	879967452
320	11	4	884749255
267	684	4	878973088
60	490	4	883326958
189	694	4	893265946
116	905	2	890131519
249	240	4	879640343
110	300	3	886987380
201	1063	3	884113453
180	121	5	877127830
87	1072	3	879876610
6	209	4	883601713
63	301	5	875747010
179	895	5	892151565
148	98	3	877017714
13	312	1	883670630
15	278	1	879455843
176	305	5	886047068
102	66	3	892992129
293	251	4	888904734
42	204	5	881107821
328	523	5	885046206
206	333	4	888179565
279	67	4	875310419
158	42	3	880134913
70	151	3	884148603
271	661	4	885848373
37	222	3	880915528
279	1095	1	886016480
250	200	5	883263374
103	144	4	880420510
50	1084	5	877052501
128	1141	4	879968827
336	577	1	877757396
275	191	4	880314797
95	173	5	879198547
87	651	4	879875893
21	678	2	874951005
145	1217	2	875272349
13	860	1	882396984
312	676	3	891699295
200	431	5	884129006
102	67	1	892993706
325	506	5	891478180
221	1073	4	875245846
2	297	4	888550871
305	733	3	886324661
275	969	2	880314412
11	215	3	891904389
341	876	4	890757886
231	126	5	888605273
269	474	4	891448823
13	540	3	882398410
102	809	3	888802768
254	240	1	886476165
234	486	3	892079373
256	932	3	882150508
249	58	5	879572516
305	947	4	886322838
262	15	3	879962366
325	187	3	891478455
184	836	4	889909142
11	428	4	891905032
40	258	3	889041981
313	740	2	891016540
276	1314	3	874796412
101	1051	2	877136891
236	699	4	890116095
207	134	4	875991160
215	82	3	891435995
125	945	5	892836465
120	282	4	889490172
293	461	2	888905519
160	93	5	876767572
298	418	4	884183406
326	444	4	879877413
246	849	1	884923687
278	301	2	891294980
166	288	3	886397510
328	4	3	885047895
70	265	4	884067503
298	465	4	884182806
343	186	4	876407485
205	313	3	888284313
201	461	4	884113924
276	1478	3	889174849
91	264	4	891438583
250	294	1	878089033
68	405	3	876974518
246	99	3	884922657
10	704	3	877892050
97	435	4	884238752
99	118	2	885679237
102	302	3	880680541
70	152	4	884149877
41	31	3	890687473
178	179	2	882828320
6	19	4	883602965
89	246	5	879461219
254	257	3	886471389
94	402	4	891723261
42	404	5	881108760
130	566	4	878537558
13	614	4	884538634
286	642	3	877531498
291	410	5	874834481
214	121	4	891543632
246	284	1	884922475
130	413	3	876251127
320	1210	4	884751316
60	810	4	883327201
141	744	5	884584981
288	97	4	886629750
145	750	4	885555884
189	496	5	893265380
130	55	5	875216507
328	431	2	885047822
177	1039	3	880130807
201	281	2	884112352
301	456	3	882074838
136	56	4	882848783
74	15	4	888333542
169	429	3	891359250
1	120	1	875241637
100	302	4	891374528
303	716	2	879467639
216	498	3	880235329
6	476	1	883600175
329	98	4	891656300
230	511	2	880485656
113	321	3	875075887
64	100	4	879365558
13	876	2	881515521
269	771	1	891451754
6	154	3	883602730
327	962	3	887820545
179	345	1	892151565
60	152	4	883328033
222	250	2	877563801
83	252	4	883868598
330	51	5	876546753
125	290	4	892838375
181	286	1	878961173
327	451	4	887819411
161	14	4	891171413
18	82	3	880131236
24	372	4	875323553
200	286	4	884125953
73	202	2	888626577
22	29	1	878888228
96	8	5	884403020
343	1107	3	876406977
297	12	5	875239619
279	1411	3	884556545
110	202	2	886988909
94	257	4	891724178
72	176	2	880037203
102	89	4	888801315
119	684	4	886177338
60	151	5	883326995
295	404	4	879518378
308	447	4	887739056
312	1203	5	891699599
343	55	3	876405129
284	259	2	885329593
276	563	3	874977334
280	736	2	891700341
311	310	4	884363865
18	739	3	880131776
87	209	5	879876488
13	90	3	882141872
58	1097	5	884504973
224	243	2	888082277
279	780	4	875314165
56	568	4	892910797
330	215	5	876547925
7	92	5	891352010
179	315	5	892151202
64	239	3	889740033
297	699	4	875239658
21	424	1	874951293
188	792	2	875075062
91	195	5	891439057
293	194	4	888906045
94	727	5	891722458
274	148	2	878946133
57	282	5	883697223
276	780	3	874792143
216	651	5	880233912
151	241	3	879542645
62	8	5	879373820
197	68	2	891410082
59	385	4	888205659
119	275	5	874774575
118	324	4	875384444
304	298	5	884968415
26	9	4	891386369
312	847	3	891698174
308	965	4	887738387
270	707	5	876954927
297	31	3	881708087
221	100	5	875244125
116	760	3	886309812
119	193	4	874781872
177	300	2	880130434
161	654	3	891171357
303	235	4	879484563
117	174	4	881011393
327	216	3	887818991
327	1098	4	887820828
23	516	4	874787330
181	1051	2	878962586
48	661	5	879434954
76	531	4	875028007
189	129	3	893264378
1	125	3	878542960
312	144	1	891698987
301	410	4	882074460
306	476	3	876504679
38	616	3	892433375
223	298	5	891549570
145	1292	1	875271357
328	528	5	886037457
174	458	4	886433862
303	31	3	879467361
23	83	4	874785926
6	175	4	883601426
173	938	3	877557076
313	239	3	891028873
38	780	4	892434217
184	89	4	889908572
44	155	3	878348947
244	13	4	880604379
13	263	5	881515647
344	479	4	884901093
40	340	2	889041454
141	222	4	884584865
144	286	4	888103370
324	597	4	880575493
222	700	3	881060550
96	484	5	884402860
90	199	5	891384423
1	215	3	876893145
270	379	5	876956232
251	257	3	886272378
246	109	5	884921794
130	90	4	875801920
326	318	5	879875612
9	521	4	886959343
221	32	4	875245223
20	186	3	879669040
37	79	4	880915810
279	871	4	875297410
163	56	4	891220097
84	284	3	883450093
201	676	2	884140927
46	1062	5	883614766
72	82	3	880037242
117	176	5	881012028
269	608	4	891449526
148	214	5	877019882
294	1067	4	877819421
121	174	3	891388063
20	172	3	879669181
59	724	5	888205265
108	125	3	879879864
49	53	4	888067405
294	678	2	877818861
240	301	5	885775683
299	602	3	878191995
246	802	1	884923471
13	788	1	882396914
303	1508	1	879544130
207	1283	4	884386260
255	271	4	883215525
195	477	2	885110922
312	557	5	891699599
144	302	3	888103530
102	399	2	888802722
297	515	5	874954353
106	165	5	881450536
291	421	4	875087352
145	552	5	888398747
89	936	5	879461219
85	71	4	879456308
282	271	3	881702919
339	856	5	891034922
135	227	3	879857843
151	91	2	879542796
221	467	4	875245928
286	196	4	877533543
116	195	4	876453626
94	738	2	891723558
144	172	4	888105312
214	208	5	892668153
234	519	5	892078342
244	596	4	880604735
222	739	4	878184924
74	126	3	888333428
45	127	5	881007272
344	306	5	884814359
116	887	3	881246591
181	1362	1	878962200
144	461	4	888106044
189	1099	5	893266074
53	228	3	879442561
2	290	3	888551441
299	739	3	889502865
313	139	3	891030334
274	275	5	878944679
321	521	2	879441201
134	539	4	891732335
269	486	3	891449922
94	655	4	891720862
262	1220	4	879794296
181	1265	1	878961668
109	4	2	880572756
12	96	4	879959583
109	42	1	880572756
90	307	5	891383319
77	498	5	884734016
314	620	3	877887212
48	210	3	879434886
305	1101	4	886323563
198	357	5	884207267
222	293	3	877563353
207	186	4	877879173
158	580	4	880135093
255	551	1	883216672
87	1047	3	879877280
301	9	3	882074291
279	1498	4	891208884
299	343	3	881605700
339	288	3	891036899
13	782	3	885744650
210	722	4	891036021
200	528	4	884128426
193	693	4	889124374
297	678	3	874954093
128	216	5	879967102
311	38	3	884365954
169	879	5	891268653
174	82	1	886515472
13	440	1	882397040
95	378	4	888954699
321	224	3	879439733
180	83	5	877128388
150	127	5	878746889
332	233	4	888360370
102	83	3	888803487
263	678	2	891297766
128	97	3	879968125
239	288	2	889178513
275	202	3	875155167
311	471	4	884963254
267	145	4	878972903
253	210	4	891628598
250	64	5	878090153
284	339	3	885329671
327	849	2	887822530
11	90	2	891905298
222	93	2	883815577
299	26	4	878192601
276	748	3	883822507
274	496	5	878946473
252	129	4	891456876
244	1225	2	880606818
75	820	3	884050979
194	52	4	879525876
328	627	3	885048365
201	955	3	884114895
253	198	5	891628392
221	39	4	875245798
334	317	3	891546000
271	414	4	885849470
158	525	5	880133288
64	705	5	879365558
294	24	4	877819761
28	480	5	881957002
269	959	5	891457067
299	270	4	878052375
151	655	4	879542645
177	87	4	880130931
269	15	2	891446348
279	740	3	875736276
332	673	5	888360307
269	483	4	891448800
91	682	2	891438184
246	17	2	884922658
290	418	3	880474293
9	487	5	886960056
217	797	4	889070011
234	14	3	891227730
292	1050	4	881105778
65	1129	4	879217258
222	231	2	878182005
299	32	3	877881169
279	685	3	884982881
15	620	4	879456204
68	178	5	876974755
293	210	3	888905665
43	931	1	884029742
344	278	3	884900454
56	368	3	892911589
339	30	3	891032765
144	518	3	888106182
125	734	3	892838977
12	735	5	879960826
269	484	3	891448895
90	179	5	891385389
185	237	4	883526268
243	275	3	879987084
269	1091	2	891451705
11	429	5	891904335
13	88	4	882141485
120	25	5	889490370
198	402	3	884209147
165	304	3	879525672
138	98	5	879024043
94	561	3	891722882
293	188	3	888906288
39	258	4	891400280
159	237	3	880485766
344	39	3	884901290
69	1017	5	882126156
230	673	3	880485573
160	124	4	876767360
44	228	5	883613334
298	1142	4	884183572
345	1160	3	884994606
94	133	4	885882685
121	122	2	891390501
325	109	2	891478528
160	1019	5	876857977
205	333	4	888284618
343	44	3	876406640
321	1028	2	879441064
102	986	1	888802319
268	123	3	875742794
19	153	4	885412840
125	511	5	879454699
332	1188	5	888098374
90	132	5	891384673
16	657	5	877723882
316	50	1	880853654
272	11	4	879455143
85	380	4	882995704
279	1118	3	875310631
269	761	2	891451374
75	696	4	884050979
249	469	4	879641285
311	671	3	884365954
58	222	4	884304656
254	99	3	886473254
308	632	3	887738057
125	1272	1	879454892
49	40	1	888069222
83	1101	2	880308256
16	294	4	877717116
94	214	5	891725332
295	624	5	879518654
152	866	5	880149224
128	227	2	879968946
119	235	5	874774956
122	1268	2	879270711
276	561	2	874792745
251	109	4	886272547
7	90	3	891352984
184	275	5	889913687
262	628	2	879962366
279	13	3	875249210
181	764	1	878962866
21	56	5	874951658
298	660	3	884182838
98	321	3	880498519
145	949	4	875272652
164	458	4	889402050
232	64	4	888549441
184	126	3	889907971
269	209	4	891448895
26	100	5	891386368
57	1093	3	883697352
117	338	3	886019636
297	97	5	875239871
276	969	4	874792839
119	1263	3	886177338
345	722	3	884993783
318	72	4	884498540
246	410	1	884923175
158	809	3	880134675
178	651	4	882826915
254	625	3	886473808
21	106	2	874951447
225	136	5	879540707
41	486	4	890687305
234	191	4	892334765
78	289	4	879633567
90	9	4	891385787
313	415	2	891030367
180	716	1	877128119
344	462	2	884901156
268	810	2	875744388
195	227	3	888737346
72	603	4	880037417
31	135	4	881548030
303	1267	3	879484327
64	731	3	889739648
62	89	5	879374640
151	662	4	879525054
189	1372	4	893264429
213	79	5	878956263
219	13	1	889452455
345	708	3	884992786
244	712	3	880607925
220	288	5	881197887
1	6	5	887431973
239	923	5	889179033
290	202	4	880474590
194	523	5	879521596
200	831	4	891825565
346	213	3	874948173
267	214	4	878972342
100	340	3	891374707
42	521	2	881107989
214	45	4	891543952
264	320	4	886122261
145	1102	1	888398162
10	22	5	877888812
299	71	3	878192238
313	608	4	891017585
209	242	4	883589606
221	92	4	875245989
293	646	3	888906244
184	1012	3	889907448
70	260	2	884065247
90	30	5	891385843
144	1169	4	888106044
1	104	1	875241619
21	288	3	874950932
6	523	5	883601528
248	181	4	884535374
168	409	4	884287846
234	878	2	892336477
44	238	4	878347598
296	1073	5	884197330
296	96	5	884197287
206	288	5	888179565
76	100	5	875028391
327	50	3	887745574
308	811	4	887739212
338	168	3	879438225
125	238	3	892838322
299	1074	3	889502786
85	203	5	879455402
77	431	5	884733695
18	367	4	880130802
293	572	2	888907931
286	228	3	889651576
246	568	4	884922451
174	902	3	890168363
268	163	2	875743656
291	555	1	874868629
151	478	5	879524471
269	63	1	891450857
11	97	4	891904300
83	748	2	886534501
83	125	5	880306811
145	717	3	888398702
56	426	4	892683303
339	435	4	891032189
35	242	2	875459166
18	462	3	880130065
194	708	3	879528106
14	514	4	879119579
345	651	4	884992493
279	415	3	875314313
12	471	5	879959670
126	332	2	887853735
16	22	5	877721071
116	758	1	876452980
220	325	1	881198435
151	328	3	879523838
280	11	5	891700570
10	155	4	877889186
73	1149	4	888626299
180	213	5	877128388
13	831	3	882398385
181	1291	1	878963167
92	132	3	875812211
345	202	3	884992218
269	482	3	891448823
59	241	4	888205574
322	508	4	887314073
18	25	3	880131591
343	135	5	876404568
62	856	4	879374866
144	528	4	888105846
24	662	5	875323440
108	282	3	879880055
95	518	4	888954076
276	383	2	877934828
187	427	5	879465597
13	315	5	884538466
332	98	5	888359903
12	172	4	879959088
347	22	5	881654005
201	8	3	884141438
90	855	5	891383752
193	1132	3	889127660
99	203	4	885680723
122	708	5	879270605
15	742	2	879456049
222	1239	2	881060762
57	56	3	883698646
332	595	4	887938574
6	498	4	883601053
339	58	3	891032379
268	154	4	875743563
102	202	4	892991269
213	474	2	878955635
73	196	4	888626177
283	70	4	879298206
122	212	5	879270567
201	454	2	884111830
298	652	3	884183099
7	10	4	891352864
314	29	5	877889234
130	1277	4	876250897
201	275	4	884113634
304	681	2	884967167
130	748	4	874953526
118	176	5	875384793
182	237	3	885613067
13	794	4	882399615
242	934	5	879741196
69	1134	5	882072998
77	153	5	884732685
151	196	4	879542670
279	202	4	875307587
233	958	5	875508372
284	682	3	885329322
181	301	2	878961303
286	419	5	889651990
327	14	4	887744167
256	195	5	882164406
331	1100	2	877196634
102	186	4	888803487
119	338	1	892565167
234	316	4	891033851
295	378	4	879518233
14	100	5	876965165
184	1006	3	889910078
216	721	4	880245213
130	148	4	876251127
130	229	4	875802173
158	100	5	880132401
222	972	2	881059758
122	792	3	879270459
59	14	5	888203234
31	705	5	881548110
254	501	3	886476281
297	475	5	874954426
193	328	3	889122993
292	28	4	881105734
1	49	3	878542478
242	1152	5	879741196
267	559	3	878972614
82	705	3	878769598
292	1039	4	881105778
14	455	4	880929745
308	511	5	887737130
236	170	5	890116451
334	4	3	891548345
130	1215	2	876251389
145	203	5	875271948
156	205	3	888185735
340	435	4	884990546
94	385	2	891721975
94	109	4	891721974
168	988	2	884287145
313	151	1	891014982
96	645	5	884403020
308	109	3	887738894
94	393	3	891721684
21	995	2	874950932
5	234	2	875720692
317	350	5	891446819
102	62	3	888801812
118	156	5	875384946
276	786	3	874791694
116	259	4	876452186
81	93	3	876533657
92	595	3	886443534
250	111	4	878091915
344	215	3	884900818
320	148	4	884748708
79	124	5	891271870
94	313	4	891724925
1	206	4	876893205
128	966	4	879968071
269	664	5	891457067
318	795	2	884498766
16	940	2	877721236
54	276	5	880931595
291	1109	4	874834768
298	172	4	884124993
234	292	4	891033821
106	15	3	883876518
114	1104	5	881260352
299	137	4	877877535
301	771	2	882079256
73	7	4	888625956
332	44	3	888360342
308	1019	4	887738570
187	28	4	879465597
94	783	2	891723495
15	137	4	879455939
286	56	2	877531469
222	756	4	877564031
18	699	5	880130802
68	245	3	876973777
134	748	5	891732365
334	1207	2	891550121
243	223	4	879988262
322	479	5	887313892
334	481	5	891546206
243	13	4	879987362
268	16	3	875306691
90	241	5	891384611
267	484	5	878971542
233	48	5	877663184
77	4	3	884752721
184	92	3	889908657
148	596	5	877020297
59	664	4	888205614
110	734	2	886989566
285	628	2	890595636
244	101	5	880603288
314	366	4	877891354
303	654	5	879467328
186	333	3	891718820
92	785	3	875660304
151	486	5	879525002
6	188	3	883602462
293	125	2	888905086
194	51	4	879549793
291	552	3	874834963
87	790	4	879876885
299	50	4	877877775
56	1	4	892683248
277	9	4	879543336
174	823	4	886434376
92	1047	1	875644796
177	182	5	880130684
41	751	4	890686872
1	76	4	878543176
113	262	2	875075983
271	657	4	885848559
323	7	2	878739355
303	373	2	879544276
138	238	5	879024382
325	98	4	891478079
106	64	4	881449830
222	155	4	878184113
345	367	4	884993069
273	328	3	891293048
144	1039	4	888105587
157	127	5	886890541
211	310	3	879461394
56	31	4	892679259
168	1016	5	884287615
303	129	5	879468547
76	258	3	875027206
223	249	2	891549876
60	28	5	883326155
321	507	3	879441336
141	932	3	884585128
73	286	4	888792192
226	480	4	883888853
90	713	4	891385466
272	172	4	879455043
19	313	2	885411792
145	286	3	875269755
342	764	1	875318762
224	322	2	888082013
328	1126	3	885046580
268	552	2	876514108
179	354	4	892151331
308	526	3	887739426
267	693	4	878972266
345	402	4	884993464
6	213	4	883602462
12	143	5	879959635
210	160	4	887737210
290	546	2	880475564
293	300	2	888904004
58	248	4	884794774
303	181	5	879468082
298	498	5	884182573
347	501	4	881654410
236	172	3	890116539
102	121	3	888801673
290	404	3	880475341
92	123	2	875640251
151	274	5	879542369
6	432	4	883601713
256	1289	4	882150552
43	216	5	875981128
189	632	5	893265624
263	514	3	891299387
22	117	4	878887869
250	44	4	878090199
269	188	2	891450675
278	98	4	891295360
155	294	3	879371194
140	334	2	879013684
18	190	4	880130155
239	198	5	889181047
104	342	3	888442437
251	258	3	886271496
72	64	5	880036549
305	338	3	886308252
72	566	4	880037277
339	226	2	891034744
1	72	4	878542678
194	511	4	879520991
316	549	5	880854049
201	150	4	884139983
206	1127	4	888180081
48	187	5	879434954
279	418	3	875733888
94	153	5	891725333
217	53	1	889069974
94	765	3	891723619
250	485	4	878092104
79	288	3	891272015
230	393	3	880485110
128	64	5	879966954
311	367	3	884365780
76	518	3	875498895
62	153	4	879374686
6	515	4	883599273
215	11	2	891436024
145	569	4	877343156
213	715	5	878955915
94	1199	3	891724798
10	294	3	879163524
344	181	3	884901047
53	100	5	879442537
20	678	4	879667684
207	294	3	875504669
123	285	5	879873830
256	1028	4	882151690
174	94	2	886515062
5	154	3	875636691
308	488	4	887736696
222	436	4	878184358
200	7	4	876042451
65	121	4	879217458
7	485	5	891351851
295	843	4	879517994
63	111	3	875747896
7	511	5	891351624
198	11	4	884207392
295	1503	2	879517082
267	28	4	878972524
91	99	2	891439386
151	321	4	879523900
13	302	5	881514811
293	1098	2	888905519
42	131	2	881108548
328	1135	1	885045528
14	519	5	890881335
234	142	2	892334852
230	154	4	880485159
152	98	2	882473974
164	313	5	889401284
55	144	5	878176398
318	1014	2	884494919
3	332	1	889237224
290	818	3	880732656
125	175	2	879455184
243	93	2	879987173
21	670	3	874951696
268	228	4	875309945
7	654	5	892135347
82	178	4	878769629
318	524	3	884496123
89	381	4	879459999
301	123	4	882074726
193	673	4	889126551
1	185	4	875072631
323	79	4	878739829
21	219	5	874951797
197	328	4	891409290
184	15	3	889907812
313	482	5	891016193
109	823	3	880572296
152	167	5	882477430
297	629	3	875410013
167	1147	4	892738384
264	524	3	886123596
280	571	3	891702338
222	577	1	878185137
21	591	3	874951382
210	501	4	887736998
280	230	3	891702153
86	286	3	879569555
320	174	4	884749255
144	50	5	888103929
256	97	4	882165103
65	427	5	879216734
198	429	4	884207691
184	217	3	889910394
151	709	5	879524778
18	530	4	880129877
43	724	4	875981390
86	319	3	879569555
242	305	5	879741340
97	28	5	884238778
114	195	4	881260861
188	69	4	875072009
301	230	4	882077033
85	241	3	882995340
129	313	3	883243934
106	77	4	881451716
261	748	3	890454310
188	7	5	875073477
13	208	5	882140624
342	288	5	875318267
299	286	4	877618524
311	204	5	884365617
125	813	1	879455184
276	463	4	874792839
13	421	2	882140389
141	472	5	884585274
222	550	3	878184623
191	896	3	891562090
144	516	2	888105197
216	1047	3	881428365
151	213	5	879524849
144	845	4	888104191
4	356	3	892003459
96	64	5	884403336
160	79	4	876859413
49	369	1	888069329
110	332	3	886987287
209	351	2	883589546
178	1004	4	882827375
344	97	3	884901156
11	203	4	891905856
241	307	4	887249795
239	312	2	889181247
276	719	3	877935336
18	191	4	880130193
141	535	5	884585195
18	971	4	880131878
162	42	3	877636675
342	591	3	875318629
278	525	5	891295330
102	217	2	888803149
16	447	5	877724066
343	82	5	876405735
109	357	2	880572528
301	732	4	882077351
303	202	5	879468149
250	378	4	878092059
234	507	4	892334803
217	68	3	889069974
87	523	5	879875649
95	26	3	880571951
245	94	2	888513081
95	289	2	879191590
334	1008	4	891545126
201	896	3	884110766
126	323	3	887853568
150	475	5	878746764
59	871	2	888203865
227	9	3	879035431
169	603	5	891359171
293	553	3	888907453
201	190	4	884111873
58	8	4	884304955
303	840	2	879543988
328	1106	2	893195825
58	850	5	884305150
299	101	2	889501721
339	573	3	891036016
235	198	3	889655044
58	347	3	888638515
291	455	5	874805958
178	275	5	882823857
99	1119	4	885680348
296	292	5	884196057
343	569	3	876406421
18	513	4	880129769
312	238	3	891699510
62	294	1	879373215
97	428	4	884239553
215	64	4	891435804
343	47	4	876405130
334	223	5	891545973
349	411	4	879466232
311	433	3	884364931
236	134	4	890116282
27	596	2	891542987
64	211	4	889739318
144	713	4	888104322
110	22	4	886987826
109	665	5	880582384
1	96	5	875072716
267	597	3	878970805
89	127	5	879441335
59	258	3	888202749
239	1245	5	889181092
222	96	5	878181739
8	294	3	879361521
95	137	3	879192404
280	566	4	891701188
311	469	5	884366227
11	521	2	891904174
222	1226	4	883815840
184	645	3	889910123
17	1	4	885272579
223	69	5	891550889
64	429	4	889737800
262	252	3	879790603
87	154	4	879876564
286	96	4	877532385
207	53	1	881681725
334	8	4	891547171
79	937	2	891271180
276	147	4	874786686
314	328	4	877885887
127	286	1	884364525
94	203	5	885870577
348	628	4	886523256
348	370	4	886523621
206	896	4	888180018
85	508	2	879453040
312	639	5	891698391
59	1009	4	888203095
344	1283	2	889814587
188	211	4	875075062
343	371	2	876405893
184	972	3	889909962
308	746	4	887739056
62	298	4	879372304
244	1017	4	880604583
135	54	3	879858003
14	151	5	876964725
327	469	4	887822623
148	71	5	877019251
6	156	3	883602212
52	257	3	882922806
130	58	2	876251619
222	413	3	881061213
76	12	3	882606060
44	317	4	878347633
293	172	5	888905618
95	32	1	888954726
130	47	3	875801470
12	97	5	879960826
38	99	5	892430829
13	409	3	882141872
198	188	5	884208200
328	144	4	885045740
12	204	5	879960826
241	750	5	887249576
216	628	4	880235546
201	357	4	884111217
194	582	1	879535549
72	45	5	880037853
308	736	3	887738760
128	427	5	879966685
346	582	3	874951783
178	546	3	888514680
128	422	4	879968598
44	82	4	878348885
280	419	3	891701047
13	910	2	890704721
312	1021	3	891698365
85	639	3	879454189
222	313	4	883814858
107	321	2	891264432
5	436	5	875720717
102	418	3	883748450
309	326	5	877370383
198	97	3	884207112
339	97	4	891034626
280	316	5	891700184
303	325	1	879466249
189	60	3	893265773
279	1209	4	875314350
293	68	3	888906990
222	234	2	878181387
184	855	4	889909474
292	657	5	881103711
323	1017	3	878739394
303	450	3	879544386
276	1210	2	877934988
300	322	4	875650018
59	972	4	888206125
286	704	2	877531941
249	13	4	879640396
234	521	3	892079077
83	294	3	887665569
8	457	1	879361825
279	1500	5	875306613
200	218	5	884129410
150	268	5	878746257
257	305	4	882049607
8	385	1	879362124
28	100	5	881957425
119	86	4	874782068
155	328	2	879370860
246	368	1	884924813
273	345	3	891293108
174	117	5	886434136
230	125	5	880485090
232	921	4	888549929
198	323	2	884204637
14	13	4	880929778
276	448	4	874792692
95	742	4	879193512
103	126	5	880420002
94	101	2	891720996
234	1463	5	892333573
267	187	5	878972071
244	324	4	880601905
279	577	1	889151559
238	476	3	883576799
158	228	5	880134296
286	815	3	876521966
195	298	4	888737703
190	282	3	891033773
92	42	4	875653664
269	211	4	891449075
188	628	5	875074200
343	712	4	876406391
343	375	2	876406978
321	483	5	879439658
45	121	4	881013563
279	397	4	890780547
23	483	4	884550048
322	192	5	887313984
13	318	3	882139686
175	56	2	877107790
91	331	5	891438245
159	1002	3	884027027
185	196	4	883524172
244	179	5	880603833
348	405	4	886523174
296	950	4	884196741
43	371	4	883955269
16	230	5	877720813
262	275	4	879961980
102	686	3	888801673
214	408	4	891543952
277	151	3	879543768
3	328	5	889237455
119	526	2	886177762
49	168	5	888068686
63	288	3	875746948
320	118	1	884748868
92	825	4	875640487
72	68	3	880037242
271	133	4	885848971
194	317	4	879521657
13	898	1	884538403
279	1495	4	889984565
308	656	3	887736622
253	568	4	891628295
267	1401	4	878971816
244	226	1	880602264
295	401	3	879519390
268	141	3	875744832
344	119	5	884814457
33	328	4	891964187
344	619	4	885770181
347	1035	3	881654522
235	22	4	889655044
313	114	4	891013554
90	613	4	891383835
72	12	5	880036664
320	173	5	884750946
271	435	4	885848802
94	644	5	886008390
194	648	4	879521936
130	276	4	878537447
340	1	5	884990988
49	56	5	888067307
307	143	3	879283203
263	486	4	891299148
1	213	2	876892896
308	826	3	887739427
151	464	4	879524089
345	88	4	884992940
265	328	4	875320084
240	300	3	885775563
82	191	4	878769748
25	498	4	885852086
151	100	3	879524514
222	40	1	881060550
197	385	2	891409893
293	655	3	888905618
280	404	3	891701114
210	404	5	887736739
234	213	3	892079190
318	248	3	884494976
104	544	3	888465413
336	619	3	877759833
308	475	4	887737193
23	228	4	874785582
234	850	2	892336047
94	232	3	891721584
1	233	2	878542552
144	304	4	888103466
295	1040	2	879519180
130	228	4	875216420
275	630	3	880315243
63	250	5	875747789
20	194	3	879669152
354	462	3	891218116
308	322	2	887736408
145	185	4	875271838
110	1206	3	886988321
303	410	4	879484846
317	300	4	891446313
180	631	5	877544373
343	76	4	876407565
345	48	5	884902317
301	89	2	882076046
181	1312	1	878962349
102	233	3	888801622
64	222	4	889739733
303	233	4	879484981
41	313	3	890685449
229	260	1	891632437
144	855	4	888105510
59	569	4	888206161
191	313	5	891560481
305	212	3	886324058
14	408	5	879119348
279	216	3	884983225
316	735	4	880854337
193	288	1	889123777
216	231	2	880245109
201	537	3	884141053
348	240	3	886523839
22	683	1	878886307
104	823	1	888465554
341	294	3	890757997
169	172	5	891359317
213	509	4	878955372
101	840	3	877136659
90	313	5	891382163
159	831	2	880557604
65	191	4	879216797
114	204	3	881260441
215	205	3	891435161
184	259	3	889907096
121	125	2	891388600
279	992	4	889151559
94	1074	2	891723427
59	229	3	888205921
73	479	5	888625127
59	7	4	888202941
254	472	3	886474456
29	358	2	882821044
145	553	3	875272786
230	199	3	880484755
234	731	2	892336194
52	116	4	882922328
218	33	4	881288386
203	117	4	880434810
99	346	4	885678415
146	307	3	891457905
59	100	5	888202899
298	144	4	884182838
343	655	5	876405697
297	98	5	875238579
119	866	3	874774575
24	129	3	875246185
181	824	1	878963305
334	250	3	891544840
32	250	4	883717684
181	1384	1	878962052
92	48	4	875653307
197	748	3	891409323
116	840	1	886309958
251	121	4	886272118
2	312	3	888550631
158	68	3	880134532
275	304	3	876197368
145	174	5	882181728
279	1487	1	875314076
234	8	5	892079585
193	234	3	889126551
339	270	2	891036753
64	8	4	889737968
354	133	3	891217547
215	239	3	891436297
184	531	4	889910653
233	174	5	877661553
222	182	4	881058666
7	168	5	891351509
90	435	5	891383350
140	289	4	879013719
315	223	5	879799486
293	781	2	888907644
240	288	5	885775536
222	829	3	877563934
311	378	5	884366363
201	271	4	884110967
161	56	3	891171257
181	882	1	878962006
311	951	3	884365548
7	269	3	891349991
43	241	4	883955441
59	208	5	888205533
323	246	4	878739177
224	325	1	888082045
318	197	5	884496030
178	1012	4	884837364
214	531	4	891544222
49	313	3	888065527
95	737	3	879197021
345	174	4	884992367
333	66	5	891045515
174	255	5	886434114
21	569	3	874951820
328	402	3	885047627
280	323	2	891700106
308	233	3	887738346
314	623	5	877890927
292	510	4	881104093
276	684	4	874792436
237	1192	5	879376553
7	285	5	891351813
58	340	4	884305708
62	1060	1	879373007
151	224	5	879524293
96	100	5	884403758
354	242	5	891180399
79	269	5	891271792
91	131	2	891439471
299	645	4	877881276
344	283	4	884814432
62	1136	3	879375977
152	220	5	884035907
92	1041	3	875907675
342	723	3	875319659
268	949	2	875743909
234	501	4	892334543
178	135	2	882826915
267	470	4	878972931
159	871	4	880557003
236	79	4	890118417
254	183	4	886472713
238	181	3	883576336
329	129	3	891655905
293	282	2	888905170
135	176	4	879857765
204	258	2	892388976
294	547	3	877819972
151	494	4	879524244
311	258	4	884363706
244	1178	3	880608134
270	596	5	876954456
83	892	2	891181444
296	1142	5	884196524
301	483	4	882076403
130	222	4	874953769
102	173	3	888803602
299	1227	1	878192556
16	228	5	877720733
334	461	3	891547744
343	187	4	876406006
256	1119	3	882165032
21	217	3	874951727
276	22	5	874787496
315	234	3	879821349
194	30	3	879524504
244	54	2	880607335
87	629	4	879877006
49	213	3	888066486
255	249	5	883216245
325	865	3	891478079
178	210	5	884837073
279	167	3	875312441
11	47	4	891904551
311	82	5	884364436
292	405	3	881104820
58	1106	4	892068866
57	866	3	883697915
162	174	4	877636772
310	832	1	879436035
345	473	2	884991244
354	257	3	891216735
164	322	4	889401432
117	421	5	881012601
330	447	4	876546619
339	475	5	891032856
5	42	5	875636360
82	11	4	878769992
209	898	3	883460304
214	285	5	892668153
60	751	2	883325421
220	301	4	881197948
214	1039	4	891544269
133	315	4	890588524
13	764	2	882141997
338	204	3	879438063
178	193	4	882826868
11	204	3	891904920
186	591	4	879023073
193	117	4	889125913
264	516	5	886123655
248	100	4	884534716
178	284	4	888514680
117	168	5	881012550
224	569	3	888104313
223	248	1	891549683
162	50	5	877635662
129	339	2	883244737
7	432	4	891352831
77	181	3	884732278
279	662	2	875310631
287	39	5	875336652
157	273	5	886889876
331	190	3	877196308
177	1	3	880130699
286	234	3	877532093
10	656	5	877886846
89	117	5	879441357
327	143	4	888251408
116	806	4	876453800
207	313	4	885066537
87	519	4	879877652
28	174	5	881956334
181	1128	1	878962279
297	56	5	875239422
246	100	4	884921033
188	173	5	875075118
119	486	4	874781547
283	588	4	879297965
188	210	4	875071891
291	770	4	874834799
109	278	3	880571770
11	402	4	891904662
248	928	3	884536117
258	313	5	885700778
256	576	3	882164603
187	792	5	879465340
291	175	2	874867966
189	652	5	893265428
313	163	2	891016757
181	1371	1	878962240
239	479	5	889178762
119	546	4	874775914
144	521	4	888105312
305	298	4	886322150
343	823	3	876403851
326	732	5	879877143
95	675	2	888954310
279	408	5	875249210
276	456	2	874787237
345	151	5	884991191
184	604	4	889908693
277	129	4	879543653
197	720	2	891410039
253	294	4	891627829
303	9	5	879466830
296	654	5	884197419
32	246	4	883717521
279	530	3	890780576
49	590	1	888067579
95	474	4	880570909
318	1032	3	884498210
318	194	5	884495590
286	683	5	884583549
191	307	3	891560935
48	50	4	879434723
298	195	4	884183277
171	245	3	891034801
339	82	4	891035850
81	926	3	876533824
207	42	4	877878688
269	153	3	891449346
303	1071	2	879485352
7	54	3	892132380
339	198	5	891033382
11	435	4	891904968
23	421	5	874786770
188	511	2	875072211
137	327	4	881432671
76	690	2	882607017
38	720	5	892432424
221	1035	3	875246124
59	928	4	888203449
13	814	5	886302261
318	315	5	884470294
342	607	3	875318963
200	121	5	876042268
269	654	4	891448980
7	89	5	891351082
136	847	4	882693371
254	243	2	887347834
183	483	5	892323452
84	265	5	883453617
151	193	4	879524491
70	751	4	884063601
314	938	3	877886099
291	1239	2	874835279
234	192	3	892078984
38	67	4	892434312
156	12	3	888185853
56	228	3	892676340
354	463	4	891217575
311	178	5	884364437
122	214	2	879270676
314	591	5	877887002
1	258	5	878873389
230	209	1	880485283
42	142	4	881109271
328	750	4	885044519
130	357	5	875216933
267	464	5	878974783
267	324	3	878970114
190	300	4	891033606
276	853	5	889174849
193	465	3	889126867
59	126	5	888202899
347	416	3	881654715
109	69	4	880572561
296	948	1	884196149
28	143	4	881956564
351	340	1	879481424
59	760	2	888203659
318	503	4	884497402
181	335	1	878961748
48	654	5	879434792
94	693	4	891720921
215	450	2	891436470
82	518	4	878769747
155	325	2	879371261
303	318	5	879466523
23	28	3	874786793
1	81	5	875072865
303	416	3	879468179
320	472	3	884748750
57	410	3	883697378
305	192	2	886323275
293	144	4	888905819
13	387	3	886304229
327	215	4	887820695
327	886	2	887737493
299	367	4	878192497
9	286	5	886960055
111	326	3	891680131
246	451	2	884923003
260	1025	5	890618729
293	239	3	888907166
305	151	4	886324433
116	1253	2	876454109
124	166	5	890287645
161	213	2	891171887
198	15	3	884205185
313	132	5	891013589
268	717	1	876513785
113	100	4	875935610
42	281	3	881105728
234	709	4	892079337
128	609	4	879967550
293	1101	3	888906677
156	64	3	888185677
194	808	2	879527999
25	455	4	885853415
282	258	5	879949367
327	82	2	887820448
64	56	5	889737542
201	276	5	884111598
314	126	2	877886971
325	177	5	891478627
136	747	4	882848866
181	1318	1	878962349
280	265	4	891700588
271	283	4	885847876
262	405	2	879962367
6	205	3	883600878
308	283	3	887737194
6	133	4	883601459
130	158	5	875801897
85	289	3	879452334
239	530	5	889179290
122	553	3	879270741
7	530	5	891350900
334	59	5	891546000
18	14	5	880130431
95	132	3	880570993
313	670	3	891029877
279	412	3	875297708
184	462	4	889908873
102	685	3	888801876
271	732	4	885848672
10	64	4	877886598
164	125	5	889402071
276	230	4	882659602
216	367	3	881428365
49	628	4	888068167
141	50	4	884584735
114	191	3	881309511
82	127	2	878769777
207	1378	3	877878714
55	56	4	878176397
89	221	1	879441687
334	474	3	891546257
160	21	1	876769480
311	326	2	884364047
286	191	4	877531407
23	177	4	884550003
32	100	3	883717662
332	156	4	888359944
236	478	3	890118106
251	50	5	886272086
7	489	3	891353477
59	134	5	888204841
43	117	4	883954853
99	258	5	885678696
295	153	5	879517324
1	78	1	878543176
6	70	3	883601427
13	894	1	883670742
279	753	2	875307443
11	735	3	891904300
92	778	4	875811457
257	151	4	882050266
23	705	4	874785526
320	411	3	884749119
288	202	5	889225535
234	921	4	892079434
358	469	4	891271063
13	341	2	886952422
343	275	5	876408139
326	646	2	879875112
256	172	3	882164443
90	272	5	891382121
294	118	3	877819941
321	30	4	879439658
339	133	4	891033165
205	289	4	888284710
236	307	4	890117902
244	747	4	880606760
303	194	5	879466742
6	481	5	883600914
236	204	3	890118393
90	269	5	891382310
181	319	3	878961173
193	268	3	889122906
159	451	5	884360502
312	675	5	891698485
234	79	3	892079910
214	7	5	892668130
303	480	4	879466523
7	657	4	891351234
305	806	3	886322720
18	89	3	880130065
181	676	3	878962392
180	421	5	877128388
119	272	5	886611471
160	432	3	876861185
227	244	3	879035205
189	1098	4	893265506
291	1253	3	874834944
54	327	5	880928893
95	417	3	888956158
318	239	4	884497235
303	506	4	879467328
340	405	5	884991817
62	306	4	879371909
279	702	4	875309760
181	742	4	878962623
197	187	5	891409798
10	702	3	877886722
296	279	4	884196640
269	179	4	891447141
5	422	4	875636767
58	663	2	884304728
343	20	5	876408138
270	441	5	876956420
312	1124	4	891698553
310	748	3	879435729
236	735	5	890116599
13	452	3	882397039
291	470	3	874834768
92	281	3	875812331
295	412	2	879519237
346	245	4	875266665
46	127	5	883616133
62	100	4	879372276
343	12	5	876405735
103	300	3	880416727
174	369	1	886515272
85	566	3	879454273
217	554	3	889070050
31	504	5	881548110
82	476	3	878768765
91	265	5	891439018
48	202	4	879434791
130	3	5	876250897
83	22	5	880307724
59	188	4	888205188
236	661	3	890116451
152	255	5	884035936
352	55	1	884289728
262	790	3	879795379
326	503	3	879876542
145	200	4	877343121
216	172	4	880234639
233	57	5	880190451
314	1520	3	877892052
131	313	5	883681723
307	427	3	877121988
360	334	4	880353736
292	124	4	881104147
152	1028	5	880149197
314	268	5	877885836
160	175	4	876860808
277	117	4	879544145
318	49	3	884497257
354	694	5	891217299
294	250	5	877819459
264	1270	2	886122194
276	249	4	874786632
222	1089	1	877563659
218	504	3	881288574
56	623	3	892910268
13	25	1	882141686
13	632	3	884538664
292	151	5	881104268
130	374	4	875217392
24	508	4	875323833
318	384	3	884498210
93	275	4	888705224
7	142	3	891354090
144	293	4	888104283
308	1046	4	887740649
78	269	3	879633467
276	228	4	880913800
142	895	4	888640143
234	294	3	891033715
234	1123	3	892335342
87	1190	4	879876336
286	790	1	877535208
318	934	4	884495382
215	474	4	891435022
68	1047	1	876974379
7	423	5	891351509
110	204	3	886989276
346	62	3	875263634
72	181	1	880037203
303	160	4	879468375
200	357	5	884128498
262	845	4	879962052
235	474	5	889655112
326	526	5	879874964
125	949	3	892838623
7	156	5	891351653
347	79	5	881653890
13	416	3	882398934
127	227	4	884364867
13	502	5	882141458
308	490	4	887738104
222	672	1	878183777
251	132	5	886271641
109	742	5	880564457
97	655	5	884238860
222	94	3	878184866
303	234	5	879467260
295	1459	5	879519237
325	143	1	891479017
186	742	3	879023073
68	1028	4	876974430
15	696	2	879456262
256	662	2	882165032
28	271	4	881955281
49	129	2	888068079
127	300	5	884364017
102	326	3	879082298
144	900	4	888103371
314	204	5	877888644
293	153	4	888905948
79	286	5	891271792
315	302	5	879799301
181	1202	1	878962720
23	188	3	877817151
83	323	4	883868420
59	48	5	888204502
294	7	4	877819563
257	307	4	879029581
49	3	3	888068877
56	98	4	892679067
43	225	2	875975579
280	125	2	891701148
346	4	4	874948105
292	429	5	881105587
151	1065	3	879542413
178	849	3	882828021
145	281	4	875272299
327	90	3	887819194
130	183	5	875801369
213	11	4	878956156
42	451	2	881108982
268	1059	3	875743310
279	727	3	890780864
18	194	3	880129816
312	57	5	891699599
69	109	3	882145428
112	306	5	891299783
308	170	3	887737130
325	474	5	891478392
314	785	3	877890960
327	949	4	887819316
94	829	2	891724800
222	419	2	878182279
42	25	3	881110670
296	685	4	884196896
189	274	4	893264735
280	381	3	891700925
144	22	5	888105439
109	245	3	880562908
119	658	5	874782127
172	697	3	875536498
18	515	5	880130155
222	364	1	878185137
87	393	4	879876703
244	208	5	880606300
363	391	2	891498811
332	148	5	887938486
272	474	5	879454753
95	523	4	879197562
102	183	4	888801360
294	299	3	877818982
27	925	3	891543245
164	984	4	889401456
121	9	5	891390013
340	204	4	884990004
115	530	5	881172117
334	72	3	891549192
268	31	4	875310311
60	514	4	883326300
145	637	3	882182689
90	6	4	891384357
344	508	4	884814697
98	70	3	880499018
279	1000	4	875314313
279	390	3	875744641
157	407	4	886891218
334	289	3	891544491
307	527	5	878066938
327	237	4	887745494
308	116	4	887737594
211	687	2	879437184
189	173	5	893265160
271	200	5	885849356
342	1007	4	874984507
328	188	5	885046498
144	204	2	888105116
43	298	4	875975211
268	826	1	875743065
149	269	5	883512557
92	252	4	886443582
339	214	3	891033226
18	286	5	880129305
169	181	5	891359276
189	281	2	893264766
254	238	3	886473120
250	1014	4	883263439
130	946	4	875801830
172	657	3	875538027
10	615	4	877892276
216	95	3	881428365
95	24	3	879192542
360	116	3	880354275
301	692	3	882076619
345	121	3	884991384
164	245	5	889401362
323	744	5	878739436
264	558	5	886122447
197	340	2	891409199
237	28	4	879376435
196	306	4	881251021
179	305	4	892151270
342	132	5	875319129
56	82	4	892676314
346	187	3	874948030
118	547	5	875385228
332	1150	3	887938631
250	742	3	878089786
193	871	3	890860319
293	447	4	888907290
348	928	5	886523683
339	12	5	891032659
292	343	2	881103478
209	349	2	883589546
23	99	4	874786098
49	258	2	888065895
234	490	4	892079803
201	447	5	884112581
43	501	4	883955605
290	550	3	880475807
276	290	4	874786854
346	322	3	886273541
292	252	3	881104881
363	405	4	891497015
355	300	4	879486529
351	879	5	879481461
211	263	3	879461395
332	696	3	887938760
118	185	5	875384979
308	483	3	887736843
100	689	3	891375212
241	880	5	887249889
253	566	4	891628578
292	919	5	881103508
334	207	4	891545950
223	255	4	891549382
313	174	4	891014499
244	1098	5	880605578
299	501	3	889501790
328	284	3	885047593
18	71	4	880131236
232	471	3	880062414
311	174	5	884364538
7	608	4	891351653
201	708	4	884140247
345	285	5	884901701
184	1136	4	889912890
130	49	4	875802236
232	22	3	888549988
46	288	2	883611307
213	151	5	878955886
210	216	4	887737603
75	475	5	884049939
90	323	3	891382634
14	7	5	876965061
1	212	4	875072895
272	772	2	879455220
332	1016	5	887916529
117	597	4	881010052
184	287	4	889908050
79	813	5	891271792
10	200	5	877889261
119	144	4	887038665
158	277	4	880132658
59	570	4	888205745
322	185	5	887313850
129	995	2	883245452
42	692	4	881107773
298	496	5	884127603
318	481	4	884496156
293	134	5	888905618
60	1126	4	883327174
285	538	5	890595479
345	919	2	884991077
72	70	4	880036691
342	25	2	875318328
94	31	4	891721286
223	717	1	891550470
339	190	4	891034215
130	346	4	884623704
218	265	3	881288408
362	333	5	885019261
334	450	1	891550338
176	751	1	886046979
145	1212	2	875272196
189	815	3	893264558
60	485	4	883327222
293	257	2	888904696
306	100	4	876504286
308	319	4	887736408
130	53	3	876251972
320	501	3	884751462
321	1194	5	879438607
155	319	3	879370963
338	310	3	879437522
214	325	3	891542622
49	418	3	888067031
57	1028	3	883697432
236	185	5	890118307
138	617	4	879024128
232	173	4	888549674
331	100	4	877196308
297	157	2	875238853
95	88	4	880571016
268	333	4	876513565
58	156	5	884304955
299	378	3	878192680
294	327	3	877818982
286	1091	4	877534859
234	601	3	892334765
207	156	2	878104438
269	492	4	891449550
357	284	4	878951691
255	53	3	883216672
92	717	3	886443416
13	161	5	882397741
65	197	5	879216769
17	237	2	885272628
167	698	4	892738307
313	609	3	891014782
42	99	5	881108346
65	210	4	879217913
303	366	3	879485221
233	98	5	877661724
354	86	5	891218312
268	1090	2	875745536
7	226	5	891353614
81	7	4	876533545
323	886	3	878738997
119	87	5	874781829
299	418	4	889501790
174	456	1	886515240
8	89	4	879362124
79	900	4	891271245
232	215	3	888549563
271	338	1	885847194
356	313	5	891405651
177	271	2	882141868
181	458	3	878962350
6	151	3	883599558
363	1495	5	891497278
117	751	5	886018996
306	744	4	876504054
90	494	5	891383241
117	368	3	881010610
181	1386	1	878962119
233	418	4	877664010
44	542	3	878348036
13	303	4	881514876
127	243	5	884364764
92	561	3	875812413
236	864	2	890117073
234	660	4	892334543
363	1168	2	891496587
177	150	4	880130807
117	121	4	880126038
301	514	3	882076021
194	1	4	879539127
276	496	4	882659476
221	1210	3	875246887
363	673	2	891496543
218	516	5	877488692
85	414	4	879828720
60	498	5	883326566
188	233	3	875074266
144	960	2	888105784
184	88	3	889909551
83	412	1	883868208
194	631	2	879546551
11	751	2	891902092
178	1051	3	885784583
318	1023	2	884495091
328	132	5	885046420
142	28	4	888640404
293	657	4	888905582
13	437	1	882397068
246	231	1	884922898
346	727	1	874947794
323	199	4	878739953
194	510	4	879521474
99	123	3	885678997
280	483	4	891701066
314	1276	4	877887179
305	943	2	886323464
106	923	4	881453355
174	383	1	886515171
62	955	4	879374072
10	223	5	877888545
234	526	3	892334045
92	660	4	875654125
361	273	3	879441215
1	143	1	875072631
332	258	5	887916151
286	559	4	877534081
308	805	4	887739471
326	448	3	879877349
323	22	5	878739743
365	301	5	891303586
23	315	3	884550320
256	783	4	882165328
3	334	3	889237122
195	99	3	888737277
236	223	5	890116032
38	389	5	892433660
95	505	3	888954513
351	873	3	879481643
271	83	4	885848408
297	250	1	874955085
91	351	4	891438617
119	472	4	874775406
42	1051	4	881106270
270	703	4	876955019
311	526	5	884364873
94	562	3	891721494
352	746	4	884290361
350	174	5	882346720
233	286	3	876690514
250	1	4	883263374
154	806	4	879139040
255	569	1	883216672
229	875	1	891632402
332	1013	3	887938798
58	237	4	884304396
320	976	2	884749567
307	169	5	879283625
110	794	3	886988909
244	818	2	880605010
330	596	5	876544690
343	474	5	876406677
59	25	4	888203270
64	173	5	889737454
280	934	2	891702291
283	627	4	879297966
314	120	3	877887094
336	13	3	877756890
312	587	3	891699399
222	411	3	878185137
181	933	1	878962675
270	741	5	876953967
59	65	4	888205265
174	63	4	886514985
313	44	3	891015049
264	208	5	886123415
59	382	4	888205574
301	511	4	882075803
341	877	3	890758113
60	1124	4	883326652
303	849	3	879485589
1	151	4	875072865
13	786	3	886303088
56	94	4	892910292
59	175	4	888205300
58	246	5	884304592
234	95	3	892079689
365	15	3	891304152
164	148	5	889402203
194	202	3	879524216
151	425	4	879528647
83	1043	3	880308807
116	180	5	886310197
49	347	3	888065487
233	644	5	880610635
102	271	2	888781860
144	285	4	888103969
71	475	5	877319330
145	1077	3	875272245
299	742	4	877878339
263	79	4	891298047
276	631	3	874796412
308	968	4	887739987
1	51	4	878543275
269	435	3	891449011
95	736	4	888954170
311	708	5	884366397
244	90	4	880607684
313	318	4	891013712
258	310	5	885700778
123	485	5	879872792
334	183	4	891545950
130	743	2	878537778
269	64	4	891447960
328	451	4	885048159
43	300	5	875975135
130	12	4	875216340
90	185	5	891384959
12	132	5	879959465
189	216	5	893265478
207	135	2	877822350
315	55	5	879821267
5	139	3	875721260
195	469	3	880710046
88	302	3	891037111
153	678	2	881370935
148	1012	4	877400154
270	155	5	876955770
218	273	4	881288351
145	674	4	877343184
223	369	1	891550253
222	4	3	878183924
128	785	2	879968243
192	127	4	881367456
228	651	4	889388521
354	191	4	891217082
328	82	4	885046537
344	716	3	884901403
38	450	1	892432624
269	137	4	891446193
248	55	4	884534793
310	304	5	879435664
13	612	4	882140318
130	335	3	875801254
62	774	1	879376483
135	77	4	879858003
294	264	2	877819090
89	813	5	879461219
194	433	3	879523104
94	39	3	891721317
318	396	1	884498684
151	223	5	879524088
181	1120	1	878962279
312	234	5	891712535
177	175	5	880130972
297	50	5	874954541
313	162	3	891017270
275	89	3	875154878
293	202	3	888906490
330	465	5	876547250
323	100	4	878739177
135	566	3	879857930
229	358	1	891632437
288	900	5	886372155
295	1221	5	879518455
162	151	3	877636191
87	55	4	879875774
128	378	5	879967804
268	267	3	875742077
282	302	5	879949347
361	222	2	879441253
280	286	4	891700185
334	276	4	891545089
361	387	3	879441008
87	385	5	879875818
344	175	5	884901110
312	481	5	891698893
130	1047	5	875801897
357	222	5	878951498
190	118	3	891033906
308	192	5	887736696
106	8	4	881452405
357	928	4	878952041
320	678	3	884748418
217	117	4	889069842
216	764	2	880233153
230	633	4	880485283
263	82	4	891299697
233	495	4	877661364
314	672	5	877888723
204	310	1	892389073
279	240	4	889151559
188	195	3	875073179
177	179	5	880131057
181	330	1	878961668
184	458	3	889907925
86	872	3	879570366
79	313	2	891271086
53	181	4	879443046
125	204	5	879454139
326	528	3	879875112
276	747	4	874795448
238	300	4	883575836
39	333	4	891400214
201	175	2	884140022
276	746	4	874791806
13	334	1	886952467
117	12	5	881011350
301	651	5	882075994
280	790	4	891702013
3	350	3	889237076
345	956	4	884916322
174	393	4	886514837
181	866	1	878963037
290	158	5	880474977
360	238	4	880355845
247	257	4	893081396
162	117	4	877635869
43	336	4	880317271
258	311	4	885700946
348	819	4	886523710
191	328	3	891562090
215	483	4	891435022
184	665	2	889910098
114	157	2	881260611
184	52	4	889910034
49	821	1	888069246
233	212	5	877665324
345	173	5	884902317
55	1089	1	878176134
293	99	3	888906402
13	353	4	886261450
99	196	4	885680578
49	325	3	888065744
367	1012	4	876689825
123	127	5	879809943
194	383	1	879554842
141	825	4	884585247
323	150	4	878739568
279	1180	2	890781034
330	575	4	876547165
109	1244	3	880571872
177	318	4	880130618
85	792	4	879828941
248	249	4	884536117
298	237	5	884126240
276	139	4	889174904
23	257	3	890276940
52	657	5	882922833
201	1194	4	884111899
330	8	5	876546236
268	403	4	875309914
70	176	4	884066573
280	53	5	891702544
234	152	4	892826701
13	759	2	882398542
325	181	4	891478160
268	269	4	876513523
154	202	3	879139096
222	689	4	881058008
354	269	4	891180399
42	222	4	881105882
99	232	4	886519075
96	170	5	884403866
111	1024	3	891679939
87	300	3	879875418
328	349	2	888641949
13	190	4	882397145
347	227	4	881654734
117	258	4	880126022
229	286	4	891633029
329	591	2	891655812
345	508	4	884901000
291	396	4	874867757
320	1188	4	884749411
94	34	1	891723558
72	515	4	880036602
218	695	3	881288574
18	12	5	880129991
346	1110	1	875264985
218	762	4	877489091
178	58	5	882827134
334	302	5	891544177
303	49	2	879483901
145	1208	4	875272196
42	925	4	881106113
329	79	4	891656391
286	11	5	877531975
33	343	4	891964344
326	79	4	879875203
339	183	4	891032828
308	521	3	887736798
264	1225	3	886123530
130	672	5	875801920
114	183	5	881260545
276	229	3	874792483
11	383	2	891905555
256	202	3	882165032
273	311	4	891292905
116	661	4	876454023
13	137	5	882139804
332	82	5	888098524
6	479	5	883601053
91	689	5	891438617
79	137	4	891271870
308	265	3	887737647
10	651	4	877888812
295	1401	5	879966498
18	181	3	880131631
49	299	2	888068651
343	423	5	876408139
92	423	3	875655990
244	762	3	880604616
363	288	4	891493723
43	423	4	883955498
201	1425	3	884111637
84	31	4	883453755
59	1047	2	888203371
234	157	2	892334400
300	328	3	875650068
345	1082	2	884994569
191	269	3	891562090
268	114	5	875744966
147	269	4	885593812
71	222	3	877319375
76	59	4	875027981
232	462	4	888549879
102	248	3	877915935
205	326	4	888284454
200	25	4	876042234
311	431	4	884365201
197	195	5	891409798
356	937	2	891406040
303	1016	3	879544727
101	815	3	877136392
119	1259	3	874780996
264	56	5	886122261
210	447	5	887737631
276	63	3	874792168
308	178	4	887737719
64	181	4	889737420
303	1014	3	879544588
271	284	3	885847956
201	513	3	884114069
92	628	4	875639823
54	333	5	880928745
301	187	4	882076403
81	410	4	876533946
31	498	4	881548111
21	234	5	874951657
311	212	3	884366397
264	792	5	886123415
132	137	4	891278996
307	463	5	879283786
311	275	4	884963136
22	403	5	878887810
43	318	5	875975717
201	61	2	884111986
186	770	2	879023819
125	475	1	879454244
339	73	3	891035003
145	120	2	888398563
51	132	4	883498655
130	84	4	876252497
347	144	5	881654186
110	715	2	886989440
100	905	3	891375630
311	470	3	884365140
189	248	4	893264174
365	1017	4	891304213
44	227	4	883613334
201	1098	2	884112747
295	25	5	879518042
193	276	4	890860319
125	1093	1	892839412
10	711	4	877888812
276	272	5	885871447
43	1053	3	883955859
342	427	4	875319254
14	211	4	879119693
8	190	4	879362183
280	144	2	891700514
333	739	5	891045410
11	721	3	891905279
94	380	3	891722760
8	686	3	879362356
115	462	4	881171273
264	559	5	886122446
299	297	3	877877691
299	1021	3	878192721
268	483	5	875309859
95	202	4	879198209
24	25	4	875246258
159	546	4	880557621
174	312	5	886432972
368	379	4	889783562
293	943	2	888906576
186	550	4	879023985
250	582	4	878090114
185	638	4	883524364
234	566	2	892335108
221	257	4	875244475
187	659	5	879465274
313	187	4	891014373
116	199	4	876454174
109	9	3	880564607
174	412	1	886433919
7	208	5	891352220
371	97	5	877487440
296	255	2	884196584
280	82	2	891700925
271	275	4	885847693
110	791	2	886989473
59	926	1	888203708
217	576	1	889070087
145	665	5	877343212
334	204	4	891547190
42	568	4	881107256
200	143	5	884128499
89	387	5	879459909
311	588	4	884365284
235	269	4	889654530
287	156	5	875336804
344	204	4	884901024
43	289	4	875975085
99	11	5	885680138
145	159	4	875272299
200	82	5	884129656
269	316	4	891446132
13	517	5	882139746
184	208	4	889908985
327	144	4	887820293
218	517	3	877488634
6	487	5	883600785
279	792	3	875308843
268	161	3	875744199
85	124	5	882813248
75	472	4	884050733
18	483	4	880129940
234	291	3	892335342
196	238	4	881251820
318	750	4	884469971
2	281	3	888980240
295	102	4	879518339
276	81	4	874791101
194	1409	2	879552662
291	1078	4	875086920
145	896	2	888396828
160	762	3	876769148
290	216	4	880475218
174	1254	1	886434421
327	435	4	888251521
145	471	4	885622707
83	465	4	880308578
277	591	4	879543768
214	56	5	892668130
345	1315	3	884994631
330	44	5	876546920
328	1277	3	885049084
6	131	5	883602048
334	693	3	891547083
156	192	4	888185735
91	479	4	891439208
130	22	5	875217265
75	271	5	884051635
328	265	5	885045993
291	379	3	874834827
222	815	2	877563716
347	168	5	881653798
328	510	5	885046376
290	423	5	880474422
12	157	5	879959138
151	114	5	879524268
294	603	5	889854323
244	232	4	880608670
130	63	4	876252521
259	762	2	883372151
58	425	5	884304979
245	112	4	888513575
184	1232	3	889910123
122	727	4	879270849
144	129	4	888104234
305	357	5	886323189
16	96	5	877717833
1	175	5	875072547
7	618	4	891350900
16	546	4	877726944
80	45	4	887401585
173	294	5	877556864
104	1017	1	888465634
161	523	3	891170686
179	1316	3	892151489
12	71	4	879959635
59	141	4	888206605
339	636	4	891035248
321	485	4	879439787
201	204	4	884113082
59	516	4	888204430
56	118	4	892679460
191	332	2	891562090
65	318	5	879217689
249	993	3	879571779
145	229	3	885557699
262	336	3	879961474
235	52	4	889656168
116	604	3	876454174
49	476	1	888069222
286	325	1	889651253
221	588	3	875246209
197	344	4	891409070
198	23	4	884208491
207	28	4	877822162
345	251	5	884994119
145	760	2	888398123
316	1084	4	880853953
77	179	5	884752806
83	575	4	880309339
328	55	4	885046655
178	1035	4	882828350
346	33	5	875261753
89	26	3	879459909
334	1315	4	891545185
263	69	5	891298914
53	199	5	879442384
312	498	5	891699568
213	1	2	878870719
270	173	5	876955531
85	690	2	890255371
85	404	3	882994947
184	949	3	889909618
330	823	3	876544872
230	1050	3	880485136
184	255	3	889907468
312	132	5	891699121
322	179	5	887314416
32	118	3	883717967
184	1010	4	889907896
18	180	4	880130252
55	89	5	878176398
373	588	3	877098821
274	546	3	878945918
363	97	2	891496513
177	197	4	880130758
87	796	4	879877280
24	477	5	875323594
137	261	5	882805603
253	237	4	891628002
298	200	3	884183063
344	597	2	884900454
305	638	5	886324128
85	499	4	879455114
44	168	5	878347504
33	258	4	891964066
293	8	3	888905736
365	109	2	891304106
90	42	4	891384885
99	963	3	885679998
176	250	4	886047963
234	414	4	892336021
308	515	3	887737536
314	983	4	877892488
85	1168	3	882995908
137	50	5	881432937
130	1016	4	874953698
117	1057	2	881010401
225	64	4	879539727
109	117	5	880564457
85	199	5	879829438
15	924	3	879456204
179	269	3	892151064
154	333	3	879138287
170	333	4	886190330
49	202	3	888068816
62	183	4	879374893
343	1132	4	876403746
43	866	4	883956417
95	471	5	884266051
116	294	2	876453376
95	2	2	888955909
223	120	2	891550504
151	419	3	879524878
291	1098	4	875086330
303	79	5	879466891
15	289	3	879455262
308	443	3	887740500
43	316	5	892349752
334	77	3	891549247
26	864	2	891383899
130	779	4	878537558
138	514	5	879024043
234	237	3	892336021
297	79	3	875239125
335	324	1	891567098
334	620	2	891545540
276	597	3	874787150
69	689	3	882027284
297	864	3	874954541
153	64	5	881371005
184	699	5	889909914
58	568	4	884304838
178	480	3	882826048
348	288	5	886522495
62	173	5	879374732
307	428	4	877118113
222	946	2	878182237
117	240	3	880126038
10	705	4	877892050
94	1032	2	891723807
326	185	5	879875203
59	739	4	888206485
307	189	4	877121617
339	431	4	891035488
318	182	4	884496549
321	494	4	879440318
217	185	3	889069659
72	435	5	880037242
249	431	5	879641194
299	1141	4	877880522
13	888	2	886261388
151	972	4	879543366
235	705	5	889655204
160	4	4	876861754
12	15	5	879959670
62	78	2	879376612
314	42	5	877888610
89	151	5	879441507
230	582	4	880485380
120	9	4	889489886
316	614	2	880854267
331	454	3	877196702
40	271	2	889041523
345	172	4	884991831
55	1016	1	878176005
92	1213	2	875907079
73	28	3	888626468
373	694	5	877098643
373	707	4	877100378
336	405	3	877760374
325	484	5	891478643
8	301	4	879361550
141	237	4	884584865
141	1258	4	884585071
345	216	5	884901701
87	88	5	879876672
209	1105	2	883589568
7	587	4	891353950
290	98	4	880474235
16	692	4	877719158
175	176	3	877107255
185	197	5	883524428
328	331	4	885045085
244	20	4	880604758
181	1048	2	878963275
246	840	4	884924045
269	293	3	891446308
246	385	1	884922272
221	789	4	875245739
130	150	5	874953558
109	176	5	880577868
174	332	5	886432901
94	28	4	885873159
85	1098	4	879828912
48	522	2	879434886
237	98	4	879376327
293	23	4	888905865
313	494	3	891016193
178	70	4	882827083
293	322	2	888904456
6	528	4	883602174
236	15	5	890116628
38	393	5	892430282
276	737	4	890979964
143	328	4	888407656
276	854	4	874791806
90	693	3	891385752
18	960	4	880131004
251	222	4	886272547
7	172	4	891350965
44	106	2	878347076
85	382	4	879454820
184	13	3	889907839
286	20	4	876521858
56	219	5	892679144
345	403	3	884992922
45	1061	2	881016056
73	156	4	888625835
254	125	3	886473158
184	202	3	889909768
360	309	2	880354094
214	236	5	892668153
18	179	4	880129877
57	1094	2	883697990
363	616	3	891498135
200	29	4	884130540
148	228	4	877016514
63	323	1	875746986
270	66	4	876955531
6	28	2	883603013
291	834	3	874834358
314	143	5	877890234
82	520	3	878769703
346	218	3	875263574
103	222	3	880415875
189	657	5	893265123
154	182	5	879138783
13	384	2	882141814
291	1083	3	874834876
148	473	5	877399322
271	1091	4	885849648
264	219	5	886122447
154	50	5	879138657
370	56	2	879434587
27	298	4	891543164
268	395	2	875744021
82	480	4	878769373
94	118	3	891723295
342	1368	5	874984507
299	889	3	884023918
177	245	3	880130534
44	185	4	878347569
371	175	1	877487266
186	237	2	879023934
102	176	3	888801360
43	238	2	883955160
326	134	3	879875797
243	713	3	879987495
349	105	2	879466283
82	25	2	878768435
257	50	5	882049897
14	70	1	879119692
346	17	1	874950839
6	467	4	883602284
227	276	4	879035251
157	298	4	886889876
290	1336	3	880733010
189	847	4	893264150
86	889	5	879570973
249	333	4	879571521
42	211	4	881107880
152	790	5	884018821
328	1248	3	885047417
193	485	5	889124252
59	709	5	888204997
293	228	3	888906315
346	977	3	875264110
207	183	2	875509832
239	1020	3	889180920
301	77	3	882076751
248	183	5	884534772
288	12	4	886374130
303	451	5	879468581
255	436	4	883216544
210	202	5	887737338
363	102	4	891498681
299	479	4	878192556
92	834	1	875906882
323	327	4	878738910
374	1047	3	880394179
249	628	3	879640306
222	401	2	878184422
122	70	5	879270606
122	511	5	879270084
23	32	3	874785809
10	696	4	877892276
144	298	3	888103988
196	663	5	881251911
152	966	5	882829150
157	740	2	886889876
18	610	4	880130861
107	258	4	891264466
125	999	4	892838288
334	475	4	891544953
207	171	3	880839802
85	480	4	879453658
111	269	5	891679692
12	191	5	879960801
304	322	4	884968415
342	544	1	875318606
201	482	4	884111360
333	748	4	891044596
167	1126	5	892738418
303	1224	2	879485475
222	62	4	878183616
6	136	5	883600842
223	276	4	891549324
340	1133	5	884991742
70	546	2	884066211
244	764	5	880605158
355	310	4	879485423
230	185	4	880485090
295	210	4	879518378
308	98	3	887737334
210	49	3	891036116
130	1228	3	878537681
249	456	3	879640549
215	230	3	891436469
207	1118	3	878104017
136	313	2	882693234
276	117	4	874786568
216	824	3	880233253
269	50	3	891448926
293	466	3	888906655
275	142	2	880315197
136	1142	4	882693569
112	347	1	891302716
292	1014	3	881104424
77	176	4	884752757
314	941	3	877889971
181	829	1	878962675
200	33	4	884129602
291	551	2	874867824
301	152	3	882077285
291	237	4	874805668
334	716	3	891548758
216	218	4	880234933
358	482	2	891270510
13	243	3	882140966
100	289	3	891375359
119	12	3	874781915
268	558	3	875309304
94	273	4	885872684
200	205	4	884128458
333	98	4	891045496
256	161	5	882164559
265	409	3	875320462
268	108	3	875742992
320	3	4	884748978
90	178	5	891384611
347	609	4	881654064
286	405	3	876522150
136	223	4	882848820
344	537	4	884814432
244	22	4	880605665
350	1	4	882345734
299	127	5	877877434
221	129	5	875244331
328	403	3	885047281
181	21	1	878963381
254	174	5	886471720
158	566	3	880134499
262	419	3	879791710
243	1466	3	879988104
230	7	3	880484476
301	411	1	882074867
104	347	2	888442140
348	1	4	886523078
208	302	1	883108157
151	675	2	879524368
105	258	5	889214306
72	210	4	880037242
322	89	3	887314185
280	180	4	891700453
10	367	4	877892437
156	137	4	888185735
372	159	5	876869894
363	316	3	891493918
178	866	4	882825357
181	112	1	878962955
346	232	3	875263877
114	507	3	881260303
14	14	3	879119311
271	248	4	886106129
354	847	3	891216713
263	328	4	891297330
258	893	1	885701099
100	691	4	891375260
259	12	5	874809192
90	604	5	891383350
130	367	4	875801369
327	293	3	887745574
57	173	5	883698408
239	493	5	889180616
318	305	2	884470682
13	776	2	882398934
339	32	5	891032255
253	188	4	891628416
311	199	4	884365485
311	226	4	884366397
283	42	5	879298333
125	386	3	892838827
361	26	3	879440941
283	24	4	879297867
334	210	3	891546405
181	1390	1	878962052
336	202	1	877757909
254	222	4	886471346
276	544	3	889174870
89	83	4	879459884
268	265	3	875310603
311	748	4	884364071
270	17	2	876956064
344	196	4	884901328
58	480	3	884305220
328	31	4	886036884
234	221	2	891227814
60	633	4	883326995
2	13	4	888551922
321	180	4	879440612
131	1	4	883681384
307	91	4	879283514
264	709	5	886123727
181	1282	1	878962496
102	403	3	888801812
197	808	3	891409893
308	487	4	887736798
374	126	3	880393223
6	117	2	883599431
367	250	5	876689824
299	257	2	877877732
25	480	4	885852008
87	208	5	879876403
277	748	3	879543879
332	655	5	888360248
16	735	3	877720186
236	419	5	890116282
11	736	4	891906411
1	107	4	875241619
6	32	4	883601311
72	124	4	880035636
214	952	3	891543176
305	52	2	886323506
345	297	4	884994156
269	902	5	891446132
336	864	1	877757837
314	402	4	877888758
33	313	5	891963290
345	1017	2	884991303
346	392	3	875266064
123	50	3	879873726
161	286	2	891169991
330	204	5	876546839
234	781	2	892335764
181	148	2	878963204
262	238	4	879792713
233	492	5	880923253
200	294	4	884125953
213	135	5	878956101
130	596	4	874953825
346	167	2	875264209
142	362	3	888639920
325	135	5	891478006
83	28	4	880308284
90	521	4	891384570
13	530	5	881515295
314	765	3	877889480
361	275	4	879440694
334	436	3	891548203
314	147	4	877886584
363	906	2	891493795
92	183	4	875653960
247	272	4	893081381
230	51	4	880484937
44	755	3	878347742
98	209	2	880498935
326	674	3	879877433
303	96	5	879466830
92	318	2	875653307
12	196	5	879959553
94	64	5	885870362
327	288	4	887743600
288	317	4	886374497
373	724	5	877103935
337	106	2	875184682
179	301	4	892151565
267	7	5	878970503
241	332	3	887249841
87	182	4	879875737
311	679	4	884365580
58	20	1	884304538
276	77	3	874795751
194	450	1	879555001
236	51	5	890116709
44	9	5	878341196
354	480	4	891217897
303	62	2	879484159
134	300	3	891732220
92	692	4	875653805
338	604	4	879438326
224	86	3	888082612
341	880	5	890757997
194	218	4	879524892
94	1206	3	891723593
332	300	5	887916188
180	111	5	877127747
321	709	4	879441308
108	181	3	879879985
199	242	5	883782485
46	313	5	883611274
85	855	3	879827989
188	504	3	875074589
174	333	4	886432811
153	22	2	881371140
119	188	4	874781742
45	476	3	881015729
287	346	5	888177040
14	498	5	890881384
189	21	2	893264619
363	189	5	891495070
367	246	4	876689612
268	82	3	875310784
14	181	5	889666215
200	570	4	884130484
91	529	4	891438977
195	258	4	882859352
194	559	2	879521937
301	281	4	882074903
60	272	4	889286840
278	347	4	891294932
181	1370	1	878962550
344	477	3	884900353
44	209	5	878347315
38	225	5	892433062
18	276	5	880130829
91	82	5	891439386
336	395	2	877757094
305	156	4	886323068
102	810	2	888802508
181	1272	1	878962349
156	317	4	888185906
365	258	4	891303515
32	122	2	883718250
6	15	3	883599302
236	756	1	890117353
234	965	3	892079538
232	498	4	888549467
130	625	5	875801750
291	41	4	875086636
344	25	4	884814480
222	232	4	878183985
13	907	1	884538485
378	554	3	880333540
214	327	5	892668196
279	762	3	875297199
363	1007	5	891499355
297	135	4	875238608
13	232	3	890704999
13	861	3	882139774
87	79	5	879875856
195	61	3	888737277
158	11	4	880134398
13	48	5	882139863
189	121	2	893264816
344	663	5	884900993
14	922	4	880929651
181	840	1	878963204
181	1259	1	878962496
94	50	5	891720996
206	904	1	888180081
89	707	5	879459884
62	1128	2	879372831
288	340	5	886372155
329	515	4	891655932
354	882	4	891216157
291	101	4	875087198
153	127	3	881371140
285	168	4	890595900
303	153	5	879466421
13	505	3	882140389
246	675	4	884920978
93	476	4	888705879
268	129	2	875742437
325	1411	4	891478981
226	7	4	883889479
297	175	4	875238883
344	451	4	884901403
233	69	5	877665324
87	684	5	879875774
70	472	3	884148885
181	1378	1	878962169
260	300	3	890618198
200	45	3	884128372
246	720	1	884923592
92	527	3	875653549
330	50	5	876544366
82	103	2	878768665
299	496	3	878192154
28	218	3	881961601
64	83	3	889737654
262	1054	2	879791536
59	102	2	888205956
294	325	3	877818861
294	471	4	877820189
344	58	3	884814697
276	46	3	874791145
21	974	3	874951416
43	993	3	875975211
72	644	4	880036602
273	902	5	891293008
54	1016	4	890609001
276	265	4	874792483
328	162	4	885048004
90	813	4	891384997
161	127	3	891171698
305	245	1	886308147
69	9	4	882126086
273	900	3	891292873
95	14	5	879197329
177	289	2	880130534
334	922	4	891544810
64	420	3	889739678
119	562	4	886177206
23	419	3	874787204
154	480	5	879138784
271	25	3	885847876
276	231	3	874796373
60	671	4	883327175
279	464	4	875310041
42	12	4	881107502
320	576	3	884749411
279	226	4	880850073
378	63	3	880333719
347	465	3	881654825
15	508	2	879455789
328	370	3	885048986
204	292	5	892388857
378	367	3	880055002
295	485	4	879517558
255	763	5	883217072
67	121	4	875379683
328	443	4	885048235
57	237	4	883697182
20	405	3	879668555
243	28	4	879988215
94	1210	3	891723558
328	371	4	885046773
188	148	4	875074667
308	204	4	887737891
344	568	5	884901419
130	685	3	874953895
206	258	4	888179602
119	111	5	886176779
347	208	2	881654480
151	514	4	879524797
13	21	3	882399040
373	598	3	877112076
210	186	4	887730532
144	274	3	888104382
58	813	5	884304430
76	474	5	875498278
294	147	4	877819845
184	77	3	889910217
137	222	5	881432908
311	527	4	884365780
259	235	2	883372151
43	597	3	883956229
92	196	4	875654222
254	162	3	886472643
95	83	5	880573288
104	475	4	888465582
214	248	4	891543001
128	790	4	879969277
293	55	4	888906096
195	1013	3	877156636
11	135	4	891904335
178	178	4	882826395
270	156	5	876955899
269	1480	1	891451725
151	234	4	879524819
174	1001	1	886515030
151	428	5	879542510
276	164	4	874792663
130	333	5	875801239
332	288	5	887916151
189	143	5	893266027
43	847	5	875975468
188	13	4	875073408
172	485	3	875538028
262	44	2	879794446
135	802	2	879858003
304	275	4	884968264
308	393	4	887740367
342	1071	4	875319497
76	333
Download .txt
gitextract_x74nph22/

├── .gitignore
├── ItemCF.py
├── LFM.py
├── README.md
├── UserCF.py
├── data/
│   ├── ml-100k/
│   │   ├── README
│   │   ├── allbut.pl
│   │   ├── mku.sh
│   │   ├── u.data
│   │   ├── u.genre
│   │   ├── u.info
│   │   ├── u.item
│   │   ├── u.occupation
│   │   ├── u.user
│   │   ├── u1.base
│   │   ├── u1.test
│   │   ├── u2.base
│   │   ├── u2.test
│   │   ├── u3.base
│   │   ├── u3.test
│   │   ├── u4.base
│   │   ├── u4.test
│   │   ├── u5.base
│   │   ├── u5.test
│   │   ├── ua.base
│   │   ├── ua.test
│   │   ├── ub.base
│   │   └── ub.test
│   └── ml-1m/
│       └── README
├── dataset.py
├── main.py
├── most_popular.py
├── random_pred.py
├── similarity.py
└── utils.py
Download .txt
SYMBOL INDEX (55 symbols across 9 files)

FILE: ItemCF.py
  class ItemBasedCF (line 24) | class ItemBasedCF:
    method __init__ (line 30) | def __init__(self, k_sim_movie=20, n_rec_movie=10, use_iuf_similarity=...
    method fit (line 42) | def fit(self, trainset):
    method recommend (line 71) | def recommend(self, user):
    method test (line 101) | def test(self, testset):
    method predict (line 147) | def predict(self, testset):

FILE: LFM.py
  class LFM (line 24) | class LFM:
    method __init__ (line 30) | def __init__(self, K, epochs, alpha, lamb, n_rec_movie=10, save_model=...
    method init_model (line 54) | def init_model(self, users_set, items_set, K):
    method init_users_items_set (line 69) | def init_users_items_set(self, trainset):
    method gen_negative_sample (line 87) | def gen_negative_sample(self, items: dict):
    method predict (line 106) | def predict(self, user, item):
    method train (line 120) | def train(self, trainset):
    method fit (line 139) | def fit(self, trainset):
    method recommend (line 164) | def recommend(self, user):
    method test (line 179) | def test(self, testset):

FILE: UserCF.py
  class UserBasedCF (line 21) | class UserBasedCF:
    method __init__ (line 27) | def __init__(self, k_sim_user=20, n_rec_movie=10, use_iif_similarity=F...
    method fit (line 39) | def fit(self, trainset):
    method recommend (line 67) | def recommend(self, user):
    method test (line 97) | def test(self, testset):
    method predict (line 143) | def predict(self, testset):

FILE: dataset.py
  class DataSet (line 44) | class DataSet:
    method __init__ (line 51) | def __init__(self):
    method load_dataset (line 55) | def load_dataset(cls, name='ml-100k'):
    method parse_line (line 80) | def parse_line(cls, line: str, sep: str):
    method train_test_split (line 98) | def train_test_split(cls, ratings, test_size=0.2):

FILE: main.py
  function run_model (line 19) | def run_model(model_name, dataset_name, test_size=0.3, clean=False):
  function recommend_test (line 57) | def recommend_test(model, user_list):

FILE: most_popular.py
  class MostPopular (line 23) | class MostPopular:
    method __init__ (line 29) | def __init__(self, n_rec_movie=10, save_model=True):
    method fit (line 39) | def fit(self, trainset):
    method recommend (line 67) | def recommend(self, user):
    method test (line 85) | def test(self, testset):
    method predict (line 132) | def predict(self, testset):

FILE: random_pred.py
  class RandomPredict (line 22) | class RandomPredict:
    method __init__ (line 28) | def __init__(self, n_rec_movie=10, save_model=True):
    method fit (line 38) | def fit(self, trainset):
    method recommend (line 63) | def recommend(self, user):
    method test (line 81) | def test(self, testset):
    method predict (line 127) | def predict(self, testset):

FILE: similarity.py
  function calculate_user_similarity (line 18) | def calculate_user_similarity(trainset, use_iif_similarity=False):
  function calculate_item_similarity (line 92) | def calculate_item_similarity(trainset, use_iuf_similarity=False):
  function calculate_movie_popular (line 152) | def calculate_movie_popular(trainset):

FILE: utils.py
  class LogTime (line 16) | class LogTime:
    method __init__ (line 25) | def __init__(self, print_step=20000, words=''):
    method count_time (line 38) | def count_time(self):
    method finish (line 50) | def finish(self):
    method get_curr_step (line 58) | def get_curr_step(self):
    method get_total_time (line 61) | def get_total_time(self):
  class ModelManager (line 65) | class ModelManager:
    method __init__ (line 75) | def __init__(cls, dataset_name=None, test_size=0.3):
    method save_model (line 83) | def save_model(self, model, save_name: str):
    method load_model (line 96) | def load_model(self, model_name: str):
    method clean_workspace (line 109) | def clean_workspace(clean=False):
Copy disabled (too large) Download .json
Condensed preview — 35 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (19,371K chars).
[
  {
    "path": ".gitignore",
    "chars": 787,
    "preview": "# Byte-compiled / optimized / DLL files\n__pycache__/\n*.py[cod]\n\n# C extensions\n*.so\n\n# Distribution / packaging\n.Python\n"
  },
  {
    "path": "ItemCF.py",
    "chars": 6556,
    "preview": "#!/usr/bin/env python\n# -*- coding: utf-8 -*-\n\"\"\"\n@author: fuxuemingzhu \n@site: www.fuxuemingzhu.cn\n\n@file: ItemCF.py\n@t"
  },
  {
    "path": "LFM.py",
    "chars": 7640,
    "preview": "#!/usr/bin/env python\n# -*- coding: utf-8 -*-\n\"\"\"\n@author: fuxuemingzhu \n@site: www.fuxuemingzhu.cn\n\n@file: LFM.py\n@time"
  },
  {
    "path": "README.md",
    "chars": 8037,
    "preview": "# MovieLens-Recommender\n\n[MovieLens-Recommender][1] is a pure Python implement of ``Collaborative Filtering``. Which con"
  },
  {
    "path": "UserCF.py",
    "chars": 6385,
    "preview": "# -*- coding = utf-8 -*-\n\"\"\"\nUser-based Collaborative filtering.\n\nCreated on 2018-04-15\n\n@author: fuxuemingzhu\n\"\"\"\nimpor"
  },
  {
    "path": "data/ml-100k/README",
    "chars": 6750,
    "preview": "SUMMARY & USAGE LICENSE\n=============================================\n\nMovieLens data sets were collected by the GroupLe"
  },
  {
    "path": "data/ml-100k/allbut.pl",
    "chars": 716,
    "preview": "#!/usr/local/bin/perl\n\n# get args\nif (@ARGV < 3) {\n\tprint STDERR \"Usage: $0 base_name start stop max_test [ratings ...]\\"
  },
  {
    "path": "data/ml-100k/mku.sh",
    "chars": 643,
    "preview": "#!/bin/sh\n\ntrap `rm -f tmp.$$; exit 1` 1 2 15\n\nfor i in 1 2 3 4 5\ndo\n\thead -`expr $i \\* 20000` u.data | tail -20000 > tm"
  },
  {
    "path": "data/ml-100k/u.data",
    "chars": 1979173,
    "preview": "196\t242\t3\t881250949\n186\t302\t3\t891717742\n22\t377\t1\t878887116\n244\t51\t2\t880606923\n166\t346\t1\t886397596\n298\t474\t4\t884182806\n11"
  },
  {
    "path": "data/ml-100k/u.genre",
    "chars": 202,
    "preview": "unknown|0\nAction|1\nAdventure|2\nAnimation|3\nChildren's|4\nComedy|5\nCrime|6\nDocumentary|7\nDrama|8\nFantasy|9\nFilm-Noir|10\nHo"
  },
  {
    "path": "data/ml-100k/u.info",
    "chars": 36,
    "preview": "943 users\n1682 items\n100000 ratings\n"
  },
  {
    "path": "data/ml-100k/u.item",
    "chars": 236332,
    "preview": "1|Toy Story (1995)|01-Jan-1995||http://us.imdb.com/M/title-exact?Toy%20Story%20(1995)|0|0|0|1|1|1|0|0|0|0|0|0|0|0|0|0|0|"
  },
  {
    "path": "data/ml-100k/u.occupation",
    "chars": 193,
    "preview": "administrator\nartist\ndoctor\neducator\nengineer\nentertainment\nexecutive\nhealthcare\nhomemaker\nlawyer\nlibrarian\nmarketing\nno"
  },
  {
    "path": "data/ml-100k/u.user",
    "chars": 22628,
    "preview": "1|24|M|technician|85711\n2|53|F|other|94043\n3|23|M|writer|32067\n4|24|M|technician|43537\n5|33|F|other|15213\n6|42|M|executi"
  },
  {
    "path": "data/ml-100k/u1.base",
    "chars": 1586544,
    "preview": "1\t1\t5\t874965758\n1\t2\t3\t876893171\n1\t3\t4\t878542960\n1\t4\t3\t876893119\n1\t5\t3\t889751712\n1\t7\t4\t875071561\n1\t8\t1\t875072484\n1\t9\t5\t87"
  },
  {
    "path": "data/ml-100k/u1.test",
    "chars": 392629,
    "preview": "1\t6\t5\t887431973\n1\t10\t3\t875693118\n1\t12\t5\t878542960\n1\t14\t5\t874965706\n1\t17\t3\t875073198\n1\t20\t4\t887431883\n1\t23\t4\t875072895\n1\t"
  },
  {
    "path": "data/ml-100k/u2.base",
    "chars": 1583948,
    "preview": "1\t3\t4\t878542960\n1\t4\t3\t876893119\n1\t5\t3\t889751712\n1\t6\t5\t887431973\n1\t7\t4\t875071561\n1\t10\t3\t875693118\n1\t11\t2\t875072262\n1\t12\t5"
  },
  {
    "path": "data/ml-100k/u2.test",
    "chars": 395225,
    "preview": "1\t1\t5\t874965758\n1\t2\t3\t876893171\n1\t8\t1\t875072484\n1\t9\t5\t878543541\n1\t21\t1\t878542772\n1\t22\t4\t875072404\n1\t26\t3\t875072442\n1\t30\t"
  },
  {
    "path": "data/ml-100k/u3.base",
    "chars": 1582546,
    "preview": "1\t1\t5\t874965758\n1\t2\t3\t876893171\n1\t3\t4\t878542960\n1\t4\t3\t876893119\n1\t6\t5\t887431973\n1\t7\t4\t875071561\n1\t8\t1\t875072484\n1\t9\t5\t87"
  },
  {
    "path": "data/ml-100k/u3.test",
    "chars": 396627,
    "preview": "1\t5\t3\t889751712\n1\t11\t2\t875072262\n1\t16\t5\t878543541\n1\t25\t4\t875071805\n1\t35\t1\t878542420\n1\t41\t2\t876892818\n1\t45\t5\t875241687\n1\t"
  },
  {
    "path": "data/ml-100k/u4.base",
    "chars": 1581878,
    "preview": "1\t1\t5\t874965758\n1\t2\t3\t876893171\n1\t3\t4\t878542960\n1\t5\t3\t889751712\n1\t6\t5\t887431973\n1\t8\t1\t875072484\n1\t9\t5\t878543541\n1\t10\t3\t8"
  },
  {
    "path": "data/ml-100k/u4.test",
    "chars": 397295,
    "preview": "1\t4\t3\t876893119\n1\t7\t4\t875071561\n1\t42\t5\t876892425\n1\t43\t4\t878542869\n1\t55\t5\t875072688\n1\t58\t4\t878542960\n1\t95\t4\t875072303\n1\t1"
  },
  {
    "path": "data/ml-100k/u5.base",
    "chars": 1581776,
    "preview": "1\t1\t5\t874965758\n1\t2\t3\t876893171\n1\t4\t3\t876893119\n1\t5\t3\t889751712\n1\t6\t5\t887431973\n1\t7\t4\t875071561\n1\t8\t1\t875072484\n1\t9\t5\t87"
  },
  {
    "path": "data/ml-100k/u5.test",
    "chars": 397397,
    "preview": "1\t3\t4\t878542960\n1\t13\t5\t875071805\n1\t15\t5\t875071608\n1\t18\t4\t887432020\n1\t19\t5\t875071515\n1\t28\t4\t875072173\n1\t29\t1\t878542869\n1\t"
  },
  {
    "path": "data/ml-100k/ua.base",
    "chars": 1792501,
    "preview": "1\t1\t5\t874965758\n1\t2\t3\t876893171\n1\t3\t4\t878542960\n1\t4\t3\t876893119\n1\t5\t3\t889751712\n1\t6\t5\t887431973\n1\t7\t4\t875071561\n1\t8\t1\t87"
  },
  {
    "path": "data/ml-100k/ua.test",
    "chars": 186672,
    "preview": "1\t20\t4\t887431883\n1\t33\t4\t878542699\n1\t61\t4\t878542420\n1\t117\t3\t874965739\n1\t155\t2\t878542201\n1\t160\t4\t875072547\n1\t171\t5\t8897517"
  },
  {
    "path": "data/ml-100k/ub.base",
    "chars": 1792476,
    "preview": "1\t1\t5\t874965758\n1\t2\t3\t876893171\n1\t3\t4\t878542960\n1\t4\t3\t876893119\n1\t5\t3\t889751712\n1\t6\t5\t887431973\n1\t7\t4\t875071561\n1\t8\t1\t87"
  },
  {
    "path": "data/ml-100k/ub.test",
    "chars": 186697,
    "preview": "1\t17\t3\t875073198\n1\t47\t4\t875072125\n1\t64\t5\t875072404\n1\t90\t4\t878542300\n1\t92\t3\t876892425\n1\t113\t5\t878542738\n1\t222\t4\t878873388"
  },
  {
    "path": "data/ml-1m/README",
    "chars": 5577,
    "preview": "SUMMARY\n================================================================================\n\nThese files contain 1,000,209 "
  },
  {
    "path": "dataset.py",
    "chars": 4241,
    "preview": "# -*- coding = utf-8 -*-\n\"\"\"\nThe :mod:`dataset` module defines the :class:`Dataset` class\nand other subclasses which are"
  },
  {
    "path": "main.py",
    "chars": 2594,
    "preview": "# -*- coding = utf-8 -*-\n\"\"\"\nMain function to build recommendation systems.\n\nCreated on 2018-04-16\n\n@author: fuxuemingzh"
  },
  {
    "path": "most_popular.py",
    "chars": 5621,
    "preview": "#!/usr/bin/env python\n# -*- coding: utf-8 -*-\n\"\"\"\n@author: fuxuemingzhu \n@site: www.fuxuemingzhu.cn\n\n@file: most_popular"
  },
  {
    "path": "random_pred.py",
    "chars": 5229,
    "preview": "#!/usr/bin/env python\n# -*- coding: utf-8 -*-\n\"\"\"\n@author: fuxuemingzhu \n@site: www.fuxuemingzhu.cn\n\n@file: random_pred."
  },
  {
    "path": "similarity.py",
    "chars": 6905,
    "preview": "# -*- coding = utf-8 -*-\n\"\"\"\nCalculate user similarity matrix.\n\nCreated on 2018-04-15\n\n@author: fuxuemingzhu\n\"\"\"\nimport "
  },
  {
    "path": "utils.py",
    "chars": 3498,
    "preview": "# -*- coding = utf-8 -*-\n\"\"\"\nUtils in order to simplify coding.\n\nCreated on 2018-04-16\n\n@author: fuxuemingzhu\n\"\"\"\nimport"
  }
]

About this extraction

This page contains the full source code of the fuxuemingzhu/MovieLens-Recommender GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 35 files (15.4 MB), approximately 4.0M tokens, and a symbol index with 55 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!