├── .gitignore ├── LICENSE ├── README.md ├── class_rebal.py ├── config.py ├── custom_layers ├── normalization.py └── unpooling_layer.py ├── data ├── prior_factor.npy ├── prior_prob.npy └── prior_prob_smoothed.npy ├── data_generator.py ├── demo.py ├── image_augmentation.py ├── images ├── 0_category_aug.png ├── 0_gt.png ├── 0_image.png ├── 0_image_aug.png ├── 0_out.png ├── 1_category_aug.png ├── 1_gt.png ├── 1_image.png ├── 1_image_aug.png ├── 1_out.png ├── 2_category_aug.png ├── 2_gt.png ├── 2_image.png ├── 2_image_aug.png ├── 2_out.png ├── 3_category_aug.png ├── 3_gt.png ├── 3_image.png ├── 3_image_aug.png ├── 3_out.png ├── 4_category_aug.png ├── 4_gt.png ├── 4_image.png ├── 4_image_aug.png ├── 4_out.png ├── 5_category_aug.png ├── 5_gt.png ├── 5_image.png ├── 5_image_aug.png ├── 5_out.png ├── 6_category_aug.png ├── 6_gt.png ├── 6_image.png ├── 6_image_aug.png ├── 6_out.png ├── 7_category_aug.png ├── 7_gt.png ├── 7_image.png ├── 7_image_aug.png ├── 7_out.png ├── 8_category_aug.png ├── 8_gt.png ├── 8_image.png ├── 8_image_aug.png ├── 8_out.png ├── 9_category_aug.png ├── 9_gt.png ├── 9_image.png ├── 9_image_aug.png ├── 9_out.png ├── dataset.png ├── dist.png ├── learning_curve.png ├── legend.png └── segnet.png ├── legend.py ├── model.py ├── names.txt ├── poster.pdf ├── pre-process.py ├── seg37list.mat ├── train.py ├── train_ids.txt ├── unit_tests.py ├── utils.py ├── valid_ids.txt └── vgg16.py /.gitignore: -------------------------------------------------------------------------------- 1 | .idea/ 2 | __pycache__/ 3 | data/ 4 | logs/ 5 | models/ 6 | sample.png 7 | temp/ 8 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 刘杨 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 语义分割 2 | 3 | 用SegNet进行室内语义分割。 4 | 5 | ## 依赖 6 | - [NumPy](http://docs.scipy.org/doc/numpy-1.10.1/user/install.html) 7 | - [Tensorflow](https://www.tensorflow.org/versions/r0.8/get_started/os_setup.html) 8 | - [Keras](https://keras.io/#installation) 9 | - [OpenCV](https://opencv-python-tutroals.readthedocs.io/en/latest/) 10 | 11 | ## 数据集 12 | 13 | ![image](https://github.com/foamliu/Semantic-Segmentation/raw/master/images/dataset.png) 14 | 15 | 按照 [说明](http://3dvision.princeton.edu/projects/2015/SUNrgbd/) 下载 SUN RGB-D 数据集,放在 data 目录内。 16 | 17 | ```bash 18 | $ wget http://3dvision.princeton.edu/projects/2015/SUNrgbd/data/SUNRGBD.zip 19 | $ wget http://3dvision.princeton.edu/projects/2015/SUNrgbd/data/SUNRGBDtoolbox.zip 20 | ``` 21 | 22 | ## 架构 23 | 24 | ![image](https://github.com/foamliu/Semantic-Segmentation/raw/master/images/segnet.png) 25 | 26 | 27 | ## ImageNet 预训练模型 28 | 下载 [VGG16](https://github.com/fchollet/deep-learning-models/releases/download/v0.1/vgg16_weights_tf_dim_ordering_tf_kernels.h5) 放在 models 目录内。 29 | 30 | ## 用法 31 | ### 数据预处理 32 | 该数据集包含SUNRGBD V1的10335个RGBD图像,执行下述命令提取训练图像: 33 | ```bash 34 | $ python pre-process.py 35 | ``` 36 | 37 | 像素分布: 38 | 39 | ![image](https://github.com/foamliu/Semantic-Segmentation/raw/master/images/dist.png) 40 | 41 | ### 数据集增强 42 | 图片 | 分割 | 图片 | 分割 | 43 | |---|---|---|---| 44 | |![image](https://github.com/foamliu/Semantic-Segmentation/raw/master/images/0_image_aug.png) |![image](https://github.com/foamliu/Semantic-Segmentation/raw/master/images/0_category_aug.png) |![image](https://github.com/foamliu/Semantic-Segmentation/raw/master/images/1_image_aug.png) |![image](https://github.com/foamliu/Semantic-Segmentation/raw/master/images/1_category_aug.png) | 45 | |![image](https://github.com/foamliu/Semantic-Segmentation/raw/master/images/2_image_aug.png) |![image](https://github.com/foamliu/Semantic-Segmentation/raw/master/images/2_category_aug.png) |![image](https://github.com/foamliu/Semantic-Segmentation/raw/master/images/3_image_aug.png) |![image](https://github.com/foamliu/Semantic-Segmentation/raw/master/images/3_category_aug.png) | 46 | |![image](https://github.com/foamliu/Semantic-Segmentation/raw/master/images/4_image_aug.png) |![image](https://github.com/foamliu/Semantic-Segmentation/raw/master/images/4_category_aug.png) |![image](https://github.com/foamliu/Semantic-Segmentation/raw/master/images/5_image_aug.png) |![image](https://github.com/foamliu/Semantic-Segmentation/raw/master/images/5_category_aug.png) | 47 | |![image](https://github.com/foamliu/Semantic-Segmentation/raw/master/images/6_image_aug.png) |![image](https://github.com/foamliu/Semantic-Segmentation/raw/master/images/6_category_aug.png) |![image](https://github.com/foamliu/Semantic-Segmentation/raw/master/images/7_image_aug.png) |![image](https://github.com/foamliu/Semantic-Segmentation/raw/master/images/7_category_aug.png) | 48 | |![image](https://github.com/foamliu/Semantic-Segmentation/raw/master/images/8_image_aug.png) |![image](https://github.com/foamliu/Semantic-Segmentation/raw/master/images/8_category_aug.png) |![image](https://github.com/foamliu/Semantic-Segmentation/raw/master/images/9_image_aug.png) |![image](https://github.com/foamliu/Semantic-Segmentation/raw/master/images/9_category_aug.png) | 49 | 50 | ### 训练 51 | ```bash 52 | $ python train.py 53 | ``` 54 | 55 | 如果想可视化训练过程,可执行: 56 | ```bash 57 | $ tensorboard --logdir path_to_current_dir/logs 58 | ``` 59 | 60 | ![image](https://github.com/foamliu/Semantic-Segmentation/raw/master/images/learning_curve.png) 61 | 62 | ### 演示 63 | 64 | 下载 [预训练模型](https://github.com/foamliu/Semantic-Segmentation/releases/download/v1.0/model.81-3.5244.hdf5) 放在 models 目录,然后执行: 65 | 66 | 67 | ```bash 68 | $ python demo.py 69 | ``` 70 | 71 | 图例: 72 | 73 | ![image](https://github.com/foamliu/Semantic-Segmentation/raw/master/images/legend.png) 74 | 75 | 输入 | 真实 | 输出 | 76 | |---|---|---| 77 | |![image](https://github.com/foamliu/Semantic-Segmentation/raw/master/images/0_image.png) | ![image](https://github.com/foamliu/Semantic-Segmentation/raw/master/images/0_gt.png) | ![image](https://github.com/foamliu/Semantic-Segmentation/raw/master/images/0_out.png)| 78 | |![image](https://github.com/foamliu/Semantic-Segmentation/raw/master/images/1_image.png) | ![image](https://github.com/foamliu/Semantic-Segmentation/raw/master/images/1_gt.png) | ![image](https://github.com/foamliu/Semantic-Segmentation/raw/master/images/1_out.png)| 79 | |![image](https://github.com/foamliu/Semantic-Segmentation/raw/master/images/2_image.png) | ![image](https://github.com/foamliu/Semantic-Segmentation/raw/master/images/2_gt.png) | ![image](https://github.com/foamliu/Semantic-Segmentation/raw/master/images/2_out.png)| 80 | |![image](https://github.com/foamliu/Semantic-Segmentation/raw/master/images/3_image.png) | ![image](https://github.com/foamliu/Semantic-Segmentation/raw/master/images/3_gt.png) | ![image](https://github.com/foamliu/Semantic-Segmentation/raw/master/images/3_out.png)| 81 | |![image](https://github.com/foamliu/Semantic-Segmentation/raw/master/images/4_image.png) | ![image](https://github.com/foamliu/Semantic-Segmentation/raw/master/images/4_gt.png) | ![image](https://github.com/foamliu/Semantic-Segmentation/raw/master/images/4_out.png)| 82 | |![image](https://github.com/foamliu/Semantic-Segmentation/raw/master/images/5_image.png) | ![image](https://github.com/foamliu/Semantic-Segmentation/raw/master/images/5_gt.png) | ![image](https://github.com/foamliu/Semantic-Segmentation/raw/master/images/5_out.png)| 83 | |![image](https://github.com/foamliu/Semantic-Segmentation/raw/master/images/6_image.png) | ![image](https://github.com/foamliu/Semantic-Segmentation/raw/master/images/6_gt.png) | ![image](https://github.com/foamliu/Semantic-Segmentation/raw/master/images/6_out.png)| 84 | |![image](https://github.com/foamliu/Semantic-Segmentation/raw/master/images/7_image.png) | ![image](https://github.com/foamliu/Semantic-Segmentation/raw/master/images/7_gt.png) | ![image](https://github.com/foamliu/Semantic-Segmentation/raw/master/images/7_out.png)| 85 | |![image](https://github.com/foamliu/Semantic-Segmentation/raw/master/images/8_image.png) | ![image](https://github.com/foamliu/Semantic-Segmentation/raw/master/images/8_gt.png) | ![image](https://github.com/foamliu/Semantic-Segmentation/raw/master/images/8_out.png)| 86 | |![image](https://github.com/foamliu/Semantic-Segmentation/raw/master/images/9_image.png) | ![image](https://github.com/foamliu/Semantic-Segmentation/raw/master/images/9_gt.png) | ![image](https://github.com/foamliu/Semantic-Segmentation/raw/master/images/9_out.png)| 87 | 88 | -------------------------------------------------------------------------------- /class_rebal.py: -------------------------------------------------------------------------------- 1 | import os 2 | 3 | import cv2 as cv 4 | import matplotlib.pylab as plt 5 | import numpy as np 6 | from console_progressbar import ProgressBar 7 | from scipy.interpolate import interp1d 8 | from scipy.signal import gaussian, convolve 9 | 10 | from config import num_classes, seg_path 11 | 12 | 13 | def compute_class_prior(do_plot=False): 14 | names = [f for f in os.listdir(seg_path) if f.lower().endswith('.png')] 15 | num_samples = len(names) 16 | prior_prob = np.zeros(num_classes) 17 | pb = ProgressBar(total=num_samples, prefix='Compute class prior', suffix='', decimals=3, length=50, fill='=') 18 | for i in range(num_samples): 19 | name = names[i] 20 | filename = os.path.join(seg_path, name) 21 | category = np.ravel(cv.imread(filename, 0)) 22 | counts = np.bincount(category) 23 | idxs = np.nonzero(counts)[0] 24 | prior_prob[idxs] += counts[idxs] 25 | pb.print_progress_bar(i + 1) 26 | 27 | prior_prob = prior_prob / (1.0 * np.sum(prior_prob)) 28 | 29 | # Save 30 | np.save(os.path.join(data_dir, "prior_prob.npy"), prior_prob) 31 | 32 | if do_plot: 33 | plt.hist(prior_prob, bins=100) 34 | plt.yscale("log") 35 | plt.show() 36 | 37 | 38 | def smooth_class_prior(sigma=5, do_plot=False): 39 | prior_prob = np.load(os.path.join(data_dir, "prior_prob.npy")) 40 | # add an epsilon to prior prob to avoid 0 vakues and possible NaN 41 | prior_prob += 1E-3 * np.min(prior_prob) 42 | # renormalize 43 | prior_prob = prior_prob / (1.0 * np.sum(prior_prob)) 44 | 45 | # Smooth with gaussian 46 | f = interp1d(np.arange(prior_prob.shape[0]), prior_prob) 47 | xx = np.linspace(0, prior_prob.shape[0] - 1, 1000) 48 | yy = f(xx) 49 | window = gaussian(2000, sigma) # 2000 pts in the window, sigma=5 50 | smoothed = convolve(yy, window / window.sum(), mode='same') 51 | fout = interp1d(xx, smoothed) 52 | prior_prob_smoothed = np.array([fout(i) for i in range(prior_prob.shape[0])]) 53 | prior_prob_smoothed = prior_prob_smoothed / np.sum(prior_prob_smoothed) 54 | 55 | # Save 56 | file_name = os.path.join(data_dir, "prior_prob_smoothed.npy") 57 | np.save(file_name, prior_prob_smoothed) 58 | 59 | if do_plot: 60 | plt.plot(prior_prob) 61 | plt.plot(prior_prob_smoothed, "g--") 62 | plt.plot(xx, smoothed, "r-") 63 | plt.yscale("log") 64 | plt.show() 65 | 66 | 67 | def compute_prior_factor(gamma=0.5, alpha=1, do_plot=False): 68 | file_name = os.path.join(data_dir, "prior_prob_smoothed.npy") 69 | prior_prob_smoothed = np.load(file_name) 70 | 71 | u = np.ones_like(prior_prob_smoothed) 72 | u = u / np.sum(1.0 * u) 73 | 74 | prior_factor = (1 - gamma) * prior_prob_smoothed + gamma * u 75 | prior_factor = np.power(prior_factor, -alpha) 76 | 77 | # renormalize 78 | prior_factor = prior_factor / (np.sum(prior_factor * prior_prob_smoothed)) 79 | 80 | file_name = os.path.join(data_dir, "prior_factor.npy") 81 | np.save(file_name, prior_factor) 82 | 83 | if do_plot: 84 | plt.plot(prior_factor) 85 | plt.yscale("log") 86 | plt.show() 87 | 88 | 89 | if __name__ == '__main__': 90 | data_dir = 'data/' 91 | do_plot = True 92 | 93 | compute_class_prior(do_plot=True) 94 | smooth_class_prior(do_plot=True) 95 | compute_prior_factor(do_plot=True) 96 | -------------------------------------------------------------------------------- /config.py: -------------------------------------------------------------------------------- 1 | import hdf5storage 2 | 3 | img_rows, img_cols = 256, 256 4 | channel = 3 5 | batch_size = 16 6 | epochs = 1000 7 | patience = 50 8 | num_samples = 10335 9 | num_train_samples = 8268 10 | # num_samples - num_train_samples 11 | num_valid_samples = 2067 12 | num_classes = 38 13 | kernel = 3 14 | weight_decay = 1e-2 15 | 16 | folder_metadata = 'data/SUNRGBDtoolbox/Metadata/' 17 | folder_2D_segmentation = 'annotation2Dfinal' 18 | folder_rgb_image = 'image' 19 | seg_path = 'data/SUNRGBD2Dseg/' 20 | 21 | seg37list = hdf5storage.loadmat('seg37list.mat')['seg37list'][0] 22 | seg37list = [seg[0] for seg in seg37list] 23 | # print(seg37list) 24 | # ['wall', 25 | # 'floor', 26 | # 'cabinet', 27 | # 'bed', 28 | # 'chair', 29 | # 'sofa', 30 | # 'table', 31 | # 'door', 32 | # 'window', 33 | # 'bookshelf', 34 | # 'picture', 35 | # 'counter', 36 | # 'blinds', 37 | # 'desk', 38 | # 'shelves', 39 | # 'curtain', 40 | # 'dresser', 41 | # 'pillow', 42 | # 'mirror', 43 | # 'floor_mat', 44 | # 'clothes', 45 | # 'ceiling', 46 | # 'books', 47 | # 'fridge', 48 | # 'tv', 49 | # 'paper', 50 | # 'towel', 51 | # 'shower_curtain', 52 | # 'box', 53 | # 'whiteboard', 54 | # 'person', 55 | # 'night_stand', 56 | # 'toilet', 57 | # 'sink', 58 | # 'lamp', 59 | # 'bathtub', 60 | # 'bag'] 61 | 62 | # all = [seg37list, other] 63 | 64 | objectColors = ['#000000', '#2523ad', '#066ff1', '#abebbb', '#64071f', '#e6840a', '#ccf808', '#636371', '#9d0eea', 65 | '#007567', '#a20084', '#4c7f57', '#e20724', '#0f5406', '#fd4465', '#75ce74', '#25cb7e', '#f62d45', 66 | '#fcda9f', '#f7a337', '#44e9c0', '#0abc21', '#330d75', '#0f18bf', '#5e7f46', '#f417c0', '#b57670', 67 | '#dcae65', '#79dd07', '#ce6f38', '#7143a4', '#61632d', '#80ea5b', '#27a355', '#09cb29', '#5f989e', 68 | '#c08035', '#6a1446'] 69 | colors = [[int(c[1:3], 16), int(c[3:5], 16), int(c[5:7], 16)] for c in objectColors] 70 | 71 | crop_size = 512 72 | -------------------------------------------------------------------------------- /custom_layers/normalization.py: -------------------------------------------------------------------------------- 1 | import theano.tensor as T 2 | from keras.layers.core import Layer 3 | 4 | 5 | class LRN2D(Layer): 6 | """ 7 | This code is adapted from pylearn2. 8 | License at: https://github.com/lisa-lab/pylearn2/blob/master/LICENSE.txt 9 | """ 10 | 11 | def __init__(self, alpha=1e-4, k=2, beta=0.75, n=5): 12 | if n % 2 == 0: 13 | raise NotImplementedError("LRN2D only works with odd n. n provided: " + str(n)) 14 | super(LRN2D, self).__init__() 15 | self.alpha = alpha 16 | self.k = k 17 | self.beta = beta 18 | self.n = n 19 | 20 | def get_output(self, train): 21 | X = self.get_input(train) 22 | b, ch, r, c = X.shape 23 | half_n = self.n // 2 24 | input_sqr = T.sqr(X) 25 | extra_channels = T.alloc(0., b, ch + 2 * half_n, r, c) 26 | input_sqr = T.set_subtensor(extra_channels[:, half_n:half_n + ch, :, :], input_sqr) 27 | scale = self.k 28 | for i in range(self.n): 29 | scale += self.alpha * input_sqr[:, i:i + ch, :, :] 30 | scale = scale ** self.beta 31 | return X / scale 32 | 33 | def get_config(self): 34 | return {"name": self.__class__.__name__, 35 | "alpha": self.alpha, 36 | "k": self.k, 37 | "beta": self.beta, 38 | "n": self.n} 39 | -------------------------------------------------------------------------------- /custom_layers/unpooling_layer.py: -------------------------------------------------------------------------------- 1 | from keras import backend as K 2 | from keras.engine.topology import Layer 3 | from keras.layers import Reshape, Concatenate, Lambda, Multiply 4 | 5 | 6 | class Unpooling(Layer): 7 | 8 | def __init__(self, **kwargs): 9 | super(Unpooling, self).__init__(**kwargs) 10 | 11 | def build(self, input_shape): 12 | super(Unpooling, self).build(input_shape) 13 | 14 | def call(self, inputs, **kwargs): 15 | x = inputs[:, 1] 16 | # print('x.shape: ' + str(K.int_shape(x))) 17 | bool_mask = Lambda(lambda t: K.greater_equal(t[:, 0], t[:, 1]), 18 | output_shape=K.int_shape(x)[1:])(inputs) 19 | # print('bool_mask.shape: ' + str(K.int_shape(bool_mask))) 20 | mask = Lambda(lambda t: K.cast(t, dtype='float32'))(bool_mask) 21 | # print('mask.shape: ' + str(K.int_shape(mask))) 22 | x = Multiply()([mask, x]) 23 | # print('x.shape: ' + str(K.int_shape(x))) 24 | return x 25 | 26 | def compute_output_shape(self, input_shape): 27 | return input_shape[0], input_shape[2], input_shape[3], input_shape[4] 28 | -------------------------------------------------------------------------------- /data/prior_factor.npy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/foamliu/Scene-Understanding/e8a4c2f6ce41fcde04202e6129d9bc406d4ff200/data/prior_factor.npy -------------------------------------------------------------------------------- /data/prior_prob.npy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/foamliu/Scene-Understanding/e8a4c2f6ce41fcde04202e6129d9bc406d4ff200/data/prior_prob.npy -------------------------------------------------------------------------------- /data/prior_prob_smoothed.npy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/foamliu/Scene-Understanding/e8a4c2f6ce41fcde04202e6129d9bc406d4ff200/data/prior_prob_smoothed.npy -------------------------------------------------------------------------------- /data_generator.py: -------------------------------------------------------------------------------- 1 | import os 2 | import random 3 | from random import shuffle 4 | 5 | import cv2 as cv 6 | import hdf5storage 7 | import numpy as np 8 | from keras.applications.vgg16 import preprocess_input 9 | from keras.utils import Sequence 10 | from keras.utils import to_categorical 11 | 12 | from config import folder_metadata 13 | from config import img_rows, img_cols, batch_size 14 | from config import num_classes 15 | from utils import get_image, get_category, random_crop 16 | 17 | 18 | class DataGenSequence(Sequence): 19 | def __init__(self, usage): 20 | self.usage = usage 21 | 22 | with open('{}_ids.txt'.format(usage), 'r') as f: 23 | ids = f.read().splitlines() 24 | self.ids = list(map(int, ids)) 25 | 26 | with open('names.txt', 'r') as f: 27 | self.names = f.read().splitlines() 28 | 29 | def __len__(self): 30 | return int(np.ceil(len(self.ids) / float(batch_size))) 31 | 32 | def __getitem__(self, idx): 33 | i = idx * batch_size 34 | 35 | length = min(batch_size, (len(self.ids) - i)) 36 | X = np.empty((length, img_rows, img_cols, 3), dtype=np.float32) 37 | Y = np.empty((length, img_rows, img_cols, num_classes), dtype=np.float32) 38 | 39 | for i_batch in range(length): 40 | id = self.ids[i + i_batch] 41 | name = self.names[id] 42 | image = get_image(name) 43 | category = get_category(id) 44 | image, category = random_crop(image, category) 45 | 46 | image = cv.cvtColor(image, cv.COLOR_BGR2RGB) 47 | 48 | X[i_batch] = image 49 | Y[i_batch] = to_categorical(category, num_classes) 50 | 51 | X = preprocess_input(X) 52 | 53 | return X, Y 54 | 55 | def on_epoch_end(self): 56 | np.random.shuffle(self.ids) 57 | 58 | 59 | def train_gen(): 60 | return DataGenSequence('train') 61 | 62 | 63 | def valid_gen(): 64 | return DataGenSequence('valid') 65 | 66 | 67 | def split_data(): 68 | filename = os.path.join(folder_metadata, 'SUNRGBDMeta.mat') 69 | meta = hdf5storage.loadmat(filename) 70 | names = [] 71 | for item in meta['SUNRGBDMeta'][0]: 72 | name = item[0][0] 73 | names.append(name) 74 | 75 | num_samples = len(names) # 10335 76 | print('num_samples: ' + str(num_samples)) 77 | 78 | num_train_samples = int(num_samples * 0.8) 79 | print('num_train_samples: ' + str(num_train_samples)) 80 | num_valid_samples = num_samples - num_train_samples 81 | print('num_valid_samples: ' + str(num_valid_samples)) 82 | valid_ids = random.sample(range(num_train_samples), num_valid_samples) 83 | valid_ids = list(map(str, valid_ids)) 84 | train_ids = [str(n) for n in range(num_train_samples) if n not in valid_ids] 85 | shuffle(valid_ids) 86 | shuffle(train_ids) 87 | 88 | with open('names.txt', 'w') as file: 89 | file.write('\n'.join(names)) 90 | 91 | with open('valid_ids.txt', 'w') as file: 92 | file.write('\n'.join(valid_ids)) 93 | 94 | with open('train_ids.txt', 'w') as file: 95 | file.write('\n'.join(train_ids)) 96 | 97 | 98 | if __name__ == '__main__': 99 | split_data() 100 | -------------------------------------------------------------------------------- /demo.py: -------------------------------------------------------------------------------- 1 | # import the necessary packages 2 | import os 3 | import random 4 | 5 | import cv2 as cv 6 | import keras.backend as K 7 | import numpy as np 8 | from keras.applications.vgg16 import preprocess_input 9 | 10 | from config import img_rows, img_cols, num_classes 11 | from model import build_model 12 | from utils import get_image, get_category, random_crop, to_bgr 13 | 14 | if __name__ == '__main__': 15 | model_weights_path = 'models/model.81-3.5244.hdf5' 16 | model = build_model() 17 | model.load_weights(model_weights_path) 18 | 19 | print(model.summary()) 20 | 21 | with open('names.txt', 'r') as f: 22 | names = f.read().splitlines() 23 | 24 | filename = 'valid_ids.txt' 25 | with open(filename, 'r') as f: 26 | ids = f.read().splitlines() 27 | ids = list(map(int, ids)) 28 | samples = random.sample(ids, 10) 29 | print('samples: ' + str(samples)) 30 | 31 | for i in range(len(samples)): 32 | id = samples[i] 33 | name = names[id] 34 | image_bgr = get_image(name) 35 | category = get_category(id) 36 | image_bgr, category = random_crop(image_bgr, category) 37 | 38 | image_rgb = cv.cvtColor(image_bgr, cv.COLOR_BGR2RGB) 39 | colorful_category = to_bgr(category) 40 | print('Start processing image: {}'.format(name)) 41 | 42 | x_test = np.empty((1, img_rows, img_cols, 3), dtype=np.float32) 43 | x_test[0, :, :, 0:3] = image_rgb 44 | x_test = preprocess_input(x_test) 45 | 46 | out = model.predict(x_test) 47 | out = np.reshape(out, (img_rows, img_cols, num_classes)) 48 | out = np.argmax(out, axis=2) 49 | out = to_bgr(out) 50 | 51 | if not os.path.exists('images'): 52 | os.makedirs('images') 53 | 54 | cv.imwrite('images/{}_image.png'.format(i), image_bgr) 55 | cv.imwrite('images/{}_out.png'.format(i), out) 56 | cv.imwrite('images/{}_gt.png'.format(i), colorful_category) 57 | 58 | K.clear_session() 59 | -------------------------------------------------------------------------------- /image_augmentation.py: -------------------------------------------------------------------------------- 1 | import random 2 | 3 | import cv2 as cv 4 | import numpy as np 5 | from imgaug import augmenters as iaa 6 | from tqdm import tqdm 7 | 8 | from config import img_rows, img_cols 9 | from utils import get_image, get_category, to_bgr 10 | 11 | seq = iaa.Sequential([ 12 | iaa.Fliplr(0.5), 13 | iaa.CropAndPad( 14 | percent=(-0.25, 0.25), 15 | pad_mode=["wrap"], 16 | ), 17 | iaa.Affine( 18 | scale={"x": (0.8, 1.2), "y": (0.8, 1.2)}, 19 | translate_percent={"x": (-0.2, 0.2), "y": (-0.2, 0.2)}, 20 | rotate=(-25, 25), 21 | shear=(-8, 8), 22 | order=[0], 23 | mode='wrap' 24 | ) 25 | ]) 26 | seq_det = seq.to_deterministic() 27 | 28 | seq_img = iaa.Sequential([ 29 | iaa.GaussianBlur(sigma=(0, 0.5)), 30 | iaa.ContrastNormalization((0.75, 1.5)), 31 | iaa.AdditiveGaussianNoise(loc=0, scale=(0.0, 0.05 * 255), per_channel=0.5), 32 | iaa.Multiply((0.8, 1.2), per_channel=0.2), 33 | 34 | ], random_order=True) 35 | 36 | if __name__ == '__main__': 37 | with open('names.txt', 'r') as f: 38 | names = f.read().splitlines() 39 | 40 | filename = 'valid_ids.txt' 41 | with open(filename, 'r') as f: 42 | ids = f.read().splitlines() 43 | ids = list(map(int, ids)) 44 | id = random.choice(ids) 45 | name = names[id] 46 | image = get_image(name) 47 | category = get_category(id) 48 | 49 | image = cv.resize(image, (img_rows, img_cols), cv.INTER_NEAREST) 50 | category = cv.resize(category, (img_rows, img_cols), cv.INTER_NEAREST) 51 | 52 | length = 10 53 | images = np.zeros((length, img_rows, img_cols, 3), np.uint8) 54 | categories = np.zeros((length, img_rows, img_cols), np.uint8) 55 | for i in tqdm(range(length)): 56 | images[i] = image.copy() 57 | categories[i] = category.copy() 58 | 59 | images_aug = seq_img.augment_images(images) 60 | images_aug = seq_det.augment_images(images_aug) 61 | categories_aug = seq_det.augment_images(categories) 62 | 63 | for i in range(length): 64 | image = images_aug[i] 65 | category_bgr = to_bgr(categories_aug[i].astype(np.uint8)) 66 | cv.imwrite('images/{}_image_aug.png'.format(i), image) 67 | cv.imwrite('images/{}_category_aug.png'.format(i), category_bgr) 68 | -------------------------------------------------------------------------------- /images/0_category_aug.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/foamliu/Scene-Understanding/e8a4c2f6ce41fcde04202e6129d9bc406d4ff200/images/0_category_aug.png -------------------------------------------------------------------------------- /images/0_gt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/foamliu/Scene-Understanding/e8a4c2f6ce41fcde04202e6129d9bc406d4ff200/images/0_gt.png -------------------------------------------------------------------------------- /images/0_image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/foamliu/Scene-Understanding/e8a4c2f6ce41fcde04202e6129d9bc406d4ff200/images/0_image.png -------------------------------------------------------------------------------- /images/0_image_aug.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/foamliu/Scene-Understanding/e8a4c2f6ce41fcde04202e6129d9bc406d4ff200/images/0_image_aug.png -------------------------------------------------------------------------------- /images/0_out.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/foamliu/Scene-Understanding/e8a4c2f6ce41fcde04202e6129d9bc406d4ff200/images/0_out.png -------------------------------------------------------------------------------- /images/1_category_aug.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/foamliu/Scene-Understanding/e8a4c2f6ce41fcde04202e6129d9bc406d4ff200/images/1_category_aug.png -------------------------------------------------------------------------------- /images/1_gt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/foamliu/Scene-Understanding/e8a4c2f6ce41fcde04202e6129d9bc406d4ff200/images/1_gt.png -------------------------------------------------------------------------------- /images/1_image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/foamliu/Scene-Understanding/e8a4c2f6ce41fcde04202e6129d9bc406d4ff200/images/1_image.png -------------------------------------------------------------------------------- /images/1_image_aug.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/foamliu/Scene-Understanding/e8a4c2f6ce41fcde04202e6129d9bc406d4ff200/images/1_image_aug.png -------------------------------------------------------------------------------- /images/1_out.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/foamliu/Scene-Understanding/e8a4c2f6ce41fcde04202e6129d9bc406d4ff200/images/1_out.png -------------------------------------------------------------------------------- /images/2_category_aug.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/foamliu/Scene-Understanding/e8a4c2f6ce41fcde04202e6129d9bc406d4ff200/images/2_category_aug.png -------------------------------------------------------------------------------- /images/2_gt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/foamliu/Scene-Understanding/e8a4c2f6ce41fcde04202e6129d9bc406d4ff200/images/2_gt.png -------------------------------------------------------------------------------- /images/2_image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/foamliu/Scene-Understanding/e8a4c2f6ce41fcde04202e6129d9bc406d4ff200/images/2_image.png -------------------------------------------------------------------------------- /images/2_image_aug.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/foamliu/Scene-Understanding/e8a4c2f6ce41fcde04202e6129d9bc406d4ff200/images/2_image_aug.png -------------------------------------------------------------------------------- /images/2_out.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/foamliu/Scene-Understanding/e8a4c2f6ce41fcde04202e6129d9bc406d4ff200/images/2_out.png -------------------------------------------------------------------------------- /images/3_category_aug.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/foamliu/Scene-Understanding/e8a4c2f6ce41fcde04202e6129d9bc406d4ff200/images/3_category_aug.png -------------------------------------------------------------------------------- /images/3_gt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/foamliu/Scene-Understanding/e8a4c2f6ce41fcde04202e6129d9bc406d4ff200/images/3_gt.png -------------------------------------------------------------------------------- /images/3_image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/foamliu/Scene-Understanding/e8a4c2f6ce41fcde04202e6129d9bc406d4ff200/images/3_image.png -------------------------------------------------------------------------------- /images/3_image_aug.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/foamliu/Scene-Understanding/e8a4c2f6ce41fcde04202e6129d9bc406d4ff200/images/3_image_aug.png -------------------------------------------------------------------------------- /images/3_out.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/foamliu/Scene-Understanding/e8a4c2f6ce41fcde04202e6129d9bc406d4ff200/images/3_out.png -------------------------------------------------------------------------------- /images/4_category_aug.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/foamliu/Scene-Understanding/e8a4c2f6ce41fcde04202e6129d9bc406d4ff200/images/4_category_aug.png -------------------------------------------------------------------------------- /images/4_gt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/foamliu/Scene-Understanding/e8a4c2f6ce41fcde04202e6129d9bc406d4ff200/images/4_gt.png -------------------------------------------------------------------------------- /images/4_image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/foamliu/Scene-Understanding/e8a4c2f6ce41fcde04202e6129d9bc406d4ff200/images/4_image.png -------------------------------------------------------------------------------- /images/4_image_aug.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/foamliu/Scene-Understanding/e8a4c2f6ce41fcde04202e6129d9bc406d4ff200/images/4_image_aug.png -------------------------------------------------------------------------------- /images/4_out.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/foamliu/Scene-Understanding/e8a4c2f6ce41fcde04202e6129d9bc406d4ff200/images/4_out.png -------------------------------------------------------------------------------- /images/5_category_aug.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/foamliu/Scene-Understanding/e8a4c2f6ce41fcde04202e6129d9bc406d4ff200/images/5_category_aug.png -------------------------------------------------------------------------------- /images/5_gt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/foamliu/Scene-Understanding/e8a4c2f6ce41fcde04202e6129d9bc406d4ff200/images/5_gt.png -------------------------------------------------------------------------------- /images/5_image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/foamliu/Scene-Understanding/e8a4c2f6ce41fcde04202e6129d9bc406d4ff200/images/5_image.png -------------------------------------------------------------------------------- /images/5_image_aug.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/foamliu/Scene-Understanding/e8a4c2f6ce41fcde04202e6129d9bc406d4ff200/images/5_image_aug.png -------------------------------------------------------------------------------- /images/5_out.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/foamliu/Scene-Understanding/e8a4c2f6ce41fcde04202e6129d9bc406d4ff200/images/5_out.png -------------------------------------------------------------------------------- /images/6_category_aug.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/foamliu/Scene-Understanding/e8a4c2f6ce41fcde04202e6129d9bc406d4ff200/images/6_category_aug.png -------------------------------------------------------------------------------- /images/6_gt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/foamliu/Scene-Understanding/e8a4c2f6ce41fcde04202e6129d9bc406d4ff200/images/6_gt.png -------------------------------------------------------------------------------- /images/6_image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/foamliu/Scene-Understanding/e8a4c2f6ce41fcde04202e6129d9bc406d4ff200/images/6_image.png -------------------------------------------------------------------------------- /images/6_image_aug.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/foamliu/Scene-Understanding/e8a4c2f6ce41fcde04202e6129d9bc406d4ff200/images/6_image_aug.png -------------------------------------------------------------------------------- /images/6_out.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/foamliu/Scene-Understanding/e8a4c2f6ce41fcde04202e6129d9bc406d4ff200/images/6_out.png -------------------------------------------------------------------------------- /images/7_category_aug.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/foamliu/Scene-Understanding/e8a4c2f6ce41fcde04202e6129d9bc406d4ff200/images/7_category_aug.png -------------------------------------------------------------------------------- /images/7_gt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/foamliu/Scene-Understanding/e8a4c2f6ce41fcde04202e6129d9bc406d4ff200/images/7_gt.png -------------------------------------------------------------------------------- /images/7_image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/foamliu/Scene-Understanding/e8a4c2f6ce41fcde04202e6129d9bc406d4ff200/images/7_image.png -------------------------------------------------------------------------------- /images/7_image_aug.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/foamliu/Scene-Understanding/e8a4c2f6ce41fcde04202e6129d9bc406d4ff200/images/7_image_aug.png -------------------------------------------------------------------------------- /images/7_out.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/foamliu/Scene-Understanding/e8a4c2f6ce41fcde04202e6129d9bc406d4ff200/images/7_out.png -------------------------------------------------------------------------------- /images/8_category_aug.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/foamliu/Scene-Understanding/e8a4c2f6ce41fcde04202e6129d9bc406d4ff200/images/8_category_aug.png -------------------------------------------------------------------------------- /images/8_gt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/foamliu/Scene-Understanding/e8a4c2f6ce41fcde04202e6129d9bc406d4ff200/images/8_gt.png -------------------------------------------------------------------------------- /images/8_image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/foamliu/Scene-Understanding/e8a4c2f6ce41fcde04202e6129d9bc406d4ff200/images/8_image.png -------------------------------------------------------------------------------- /images/8_image_aug.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/foamliu/Scene-Understanding/e8a4c2f6ce41fcde04202e6129d9bc406d4ff200/images/8_image_aug.png -------------------------------------------------------------------------------- /images/8_out.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/foamliu/Scene-Understanding/e8a4c2f6ce41fcde04202e6129d9bc406d4ff200/images/8_out.png -------------------------------------------------------------------------------- /images/9_category_aug.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/foamliu/Scene-Understanding/e8a4c2f6ce41fcde04202e6129d9bc406d4ff200/images/9_category_aug.png -------------------------------------------------------------------------------- /images/9_gt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/foamliu/Scene-Understanding/e8a4c2f6ce41fcde04202e6129d9bc406d4ff200/images/9_gt.png -------------------------------------------------------------------------------- /images/9_image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/foamliu/Scene-Understanding/e8a4c2f6ce41fcde04202e6129d9bc406d4ff200/images/9_image.png -------------------------------------------------------------------------------- /images/9_image_aug.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/foamliu/Scene-Understanding/e8a4c2f6ce41fcde04202e6129d9bc406d4ff200/images/9_image_aug.png -------------------------------------------------------------------------------- /images/9_out.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/foamliu/Scene-Understanding/e8a4c2f6ce41fcde04202e6129d9bc406d4ff200/images/9_out.png -------------------------------------------------------------------------------- /images/dataset.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/foamliu/Scene-Understanding/e8a4c2f6ce41fcde04202e6129d9bc406d4ff200/images/dataset.png -------------------------------------------------------------------------------- /images/dist.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/foamliu/Scene-Understanding/e8a4c2f6ce41fcde04202e6129d9bc406d4ff200/images/dist.png -------------------------------------------------------------------------------- /images/learning_curve.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/foamliu/Scene-Understanding/e8a4c2f6ce41fcde04202e6129d9bc406d4ff200/images/learning_curve.png -------------------------------------------------------------------------------- /images/legend.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/foamliu/Scene-Understanding/e8a4c2f6ce41fcde04202e6129d9bc406d4ff200/images/legend.png -------------------------------------------------------------------------------- /images/segnet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/foamliu/Scene-Understanding/e8a4c2f6ce41fcde04202e6129d9bc406d4ff200/images/segnet.png -------------------------------------------------------------------------------- /legend.py: -------------------------------------------------------------------------------- 1 | import cv2 as cv 2 | import numpy as np 3 | 4 | from config import seg37list, colors, num_classes 5 | from utils import draw_str 6 | 7 | if __name__ == '__main__': 8 | num_rows, num_cols = 5, 8 9 | height_cell, width_cell = 50, 100 10 | margin_x, margin_y = 5, 15 11 | 12 | frame = np.zeros((num_rows * height_cell, num_cols * width_cell, 3), np.uint8) 13 | seg38list = np.append('other', seg37list) 14 | 15 | for i in range(num_rows): 16 | for j in range(num_cols): 17 | id = i * num_cols + j 18 | print(id) 19 | if id < num_classes: 20 | color = colors[id] 21 | name = seg38list[id] 22 | print(name) 23 | top = i * height_cell 24 | left = j * width_cell 25 | bottom = top + (height_cell - 1) 26 | right = left + (width_cell - 1) 27 | cv.rectangle(frame, (left, top), (right, bottom), color, cv.FILLED) 28 | draw_str(frame, (left + margin_x, top + margin_y), name) 29 | 30 | cv.imshow('frame', frame) 31 | cv.imwrite('images/legend.png', frame) 32 | cv.waitKey(0) 33 | -------------------------------------------------------------------------------- /model.py: -------------------------------------------------------------------------------- 1 | import keras.backend as K 2 | from keras.layers import Input, ZeroPadding2D, Conv2D, UpSampling2D, BatchNormalization, MaxPooling2D, Reshape, \ 3 | Concatenate, Flatten, Dense, Dropout 4 | from keras.models import Model 5 | from keras.utils import plot_model 6 | 7 | from config import img_rows, img_cols, num_classes, channel, kernel 8 | from custom_layers.unpooling_layer import Unpooling 9 | 10 | 11 | def build_model(): 12 | # Encoder 13 | img_input = Input(shape=(img_rows, img_cols, channel)) 14 | x = ZeroPadding2D((1, 1))(img_input) 15 | x = Conv2D(64, (3, 3), activation='relu', kernel_initializer='he_normal', name='conv1_1')(x) 16 | x = ZeroPadding2D((1, 1))(x) 17 | x = Conv2D(64, (3, 3), activation='relu', kernel_initializer='he_normal', name='conv1_2')(x) 18 | orig_1 = x 19 | x = MaxPooling2D((2, 2), strides=(2, 2))(x) 20 | 21 | x = ZeroPadding2D((1, 1))(x) 22 | x = Conv2D(128, (3, 3), activation='relu', kernel_initializer='he_normal', name='conv2_1')(x) 23 | x = ZeroPadding2D((1, 1))(x) 24 | x = Conv2D(128, (3, 3), activation='relu', kernel_initializer='he_normal', name='conv2_2')(x) 25 | orig_2 = x 26 | x = MaxPooling2D((2, 2), strides=(2, 2))(x) 27 | 28 | x = ZeroPadding2D((1, 1))(x) 29 | x = Conv2D(256, (3, 3), activation='relu', kernel_initializer='he_normal', name='conv3_1')(x) 30 | x = ZeroPadding2D((1, 1))(x) 31 | x = Conv2D(256, (3, 3), activation='relu', kernel_initializer='he_normal', name='conv3_2')(x) 32 | x = ZeroPadding2D((1, 1))(x) 33 | x = Conv2D(256, (3, 3), activation='relu', kernel_initializer='he_normal', name='conv3_3')(x) 34 | orig_3 = x 35 | x = MaxPooling2D((2, 2), strides=(2, 2))(x) 36 | 37 | x = ZeroPadding2D((1, 1))(x) 38 | x = Conv2D(512, (3, 3), activation='relu', kernel_initializer='he_normal', name='conv4_1')(x) 39 | x = ZeroPadding2D((1, 1))(x) 40 | x = Conv2D(512, (3, 3), activation='relu', kernel_initializer='he_normal', name='conv4_2')(x) 41 | x = ZeroPadding2D((1, 1))(x) 42 | x = Conv2D(512, (3, 3), activation='relu', kernel_initializer='he_normal', name='conv4_3')(x) 43 | orig_4 = x 44 | x = MaxPooling2D((2, 2), strides=(2, 2))(x) 45 | 46 | x = ZeroPadding2D((1, 1))(x) 47 | x = Conv2D(512, (3, 3), activation='relu', kernel_initializer='he_normal', name='conv5_1')(x) 48 | x = ZeroPadding2D((1, 1))(x) 49 | x = Conv2D(512, (3, 3), activation='relu', kernel_initializer='he_normal', name='conv5_2')(x) 50 | x = ZeroPadding2D((1, 1))(x) 51 | x = Conv2D(512, (3, 3), activation='relu', kernel_initializer='he_normal', name='conv5_3')(x) 52 | orig_5 = x 53 | x = MaxPooling2D((2, 2), strides=(2, 2))(x) 54 | 55 | # Add Fully Connected Layer 56 | x_fc = Flatten()(x) 57 | x_fc = Dense(4096, activation='relu')(x_fc) 58 | x_fc = Dropout(0.5)(x_fc) 59 | x_fc = Dense(4096, activation='relu')(x_fc) 60 | x_fc = Dropout(0.5)(x_fc) 61 | x_fc = Dense(1000, activation='softmax')(x_fc) 62 | model = Model(img_input, x_fc) 63 | 64 | # Loads ImageNet pre-trained data 65 | weights_path = 'models/vgg16_weights_tf_dim_ordering_tf_kernels.h5' 66 | model.load_weights(weights_path, by_name=True) 67 | 68 | # Decoder 69 | x = UpSampling2D(size=(2, 2))(x) 70 | the_shape = K.int_shape(orig_5) 71 | shape = (1, the_shape[1], the_shape[2], the_shape[3]) 72 | origReshaped = Reshape(shape)(orig_5) 73 | xReshaped = Reshape(shape)(x) 74 | together = Concatenate(axis=1)([origReshaped, xReshaped]) 75 | x = Unpooling()(together) 76 | x = Conv2D(512, (kernel, kernel), activation='relu', padding='same', name='deconv5_1', 77 | kernel_initializer='he_normal')(x) 78 | x = BatchNormalization()(x) 79 | x = Conv2D(512, (kernel, kernel), activation='relu', padding='same', name='deconv5_2', 80 | kernel_initializer='he_normal')(x) 81 | x = BatchNormalization()(x) 82 | x = Conv2D(512, (kernel, kernel), activation='relu', padding='same', name='deconv5_3', 83 | kernel_initializer='he_normal')(x) 84 | x = BatchNormalization()(x) 85 | 86 | x = UpSampling2D(size=(2, 2))(x) 87 | the_shape = K.int_shape(orig_4) 88 | shape = (1, the_shape[1], the_shape[2], the_shape[3]) 89 | origReshaped = Reshape(shape)(orig_4) 90 | xReshaped = Reshape(shape)(x) 91 | together = Concatenate(axis=1)([origReshaped, xReshaped]) 92 | x = Unpooling()(together) 93 | x = Conv2D(512, (kernel, kernel), activation='relu', padding='same', name='deconv4_1', 94 | kernel_initializer='he_normal')(x) 95 | x = BatchNormalization()(x) 96 | x = Conv2D(512, (kernel, kernel), activation='relu', padding='same', name='deconv4_2', 97 | kernel_initializer='he_normal')(x) 98 | x = BatchNormalization()(x) 99 | x = Conv2D(256, (kernel, kernel), activation='relu', padding='same', name='deconv4_3', 100 | kernel_initializer='he_normal')(x) 101 | x = BatchNormalization()(x) 102 | 103 | x = UpSampling2D(size=(2, 2))(x) 104 | the_shape = K.int_shape(orig_3) 105 | shape = (1, the_shape[1], the_shape[2], the_shape[3]) 106 | origReshaped = Reshape(shape)(orig_3) 107 | xReshaped = Reshape(shape)(x) 108 | together = Concatenate(axis=1)([origReshaped, xReshaped]) 109 | x = Unpooling()(together) 110 | x = Conv2D(256, (kernel, kernel), activation='relu', padding='same', name='deconv3_1', 111 | kernel_initializer='he_normal')(x) 112 | x = BatchNormalization()(x) 113 | x = Conv2D(256, (kernel, kernel), activation='relu', padding='same', name='deconv3_2', 114 | kernel_initializer='he_normal')(x) 115 | x = BatchNormalization()(x) 116 | x = Conv2D(128, (kernel, kernel), activation='relu', padding='same', name='deconv3_3', 117 | kernel_initializer='he_normal')(x) 118 | x = BatchNormalization()(x) 119 | 120 | x = UpSampling2D(size=(2, 2))(x) 121 | the_shape = K.int_shape(orig_2) 122 | shape = (1, the_shape[1], the_shape[2], the_shape[3]) 123 | origReshaped = Reshape(shape)(orig_2) 124 | xReshaped = Reshape(shape)(x) 125 | together = Concatenate(axis=1)([origReshaped, xReshaped]) 126 | x = Unpooling()(together) 127 | x = Conv2D(128, (kernel, kernel), activation='relu', padding='same', name='deconv2_1', 128 | kernel_initializer='he_normal')(x) 129 | x = BatchNormalization()(x) 130 | x = Conv2D(64, (kernel, kernel), activation='relu', padding='same', name='deconv2_2', 131 | kernel_initializer='he_normal')(x) 132 | x = BatchNormalization()(x) 133 | 134 | x = UpSampling2D(size=(2, 2))(x) 135 | the_shape = K.int_shape(orig_1) 136 | shape = (1, the_shape[1], the_shape[2], the_shape[3]) 137 | origReshaped = Reshape(shape)(orig_1) 138 | xReshaped = Reshape(shape)(x) 139 | together = Concatenate(axis=1)([origReshaped, xReshaped]) 140 | x = Unpooling()(together) 141 | x = Conv2D(64, (kernel, kernel), activation='relu', padding='same', name='deconv1_1', 142 | kernel_initializer='he_normal')(x) 143 | x = BatchNormalization()(x) 144 | x = Conv2D(64, (kernel, kernel), activation='relu', padding='same', name='deconv1_2', 145 | kernel_initializer='he_normal')(x) 146 | x = BatchNormalization()(x) 147 | 148 | outputs = Conv2D(num_classes, (1, 1), activation='softmax', padding='valid', name='pred', 149 | kernel_initializer='he_normal')(x) 150 | 151 | model = Model(inputs=img_input, outputs=outputs, name="SegNet") 152 | return model 153 | 154 | 155 | if __name__ == '__main__': 156 | encoder_decoder = build_model() 157 | # input_layer = model.get_layer('input') 158 | print(encoder_decoder.summary()) 159 | plot_model(encoder_decoder, to_file='model.svg', show_layer_names=True, show_shapes=True) 160 | 161 | K.clear_session() 162 | -------------------------------------------------------------------------------- /poster.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/foamliu/Scene-Understanding/e8a4c2f6ce41fcde04202e6129d9bc406d4ff200/poster.pdf -------------------------------------------------------------------------------- /pre-process.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | import argparse 3 | import os 4 | import zipfile 5 | 6 | import cv2 as cv 7 | import hdf5storage 8 | import numpy as np 9 | from console_progressbar import ProgressBar 10 | 11 | # python pre-process.py -d ../../data/Semantic-Segmentation/data/ 12 | if __name__ == '__main__': 13 | # Parse arguments 14 | ap = argparse.ArgumentParser() 15 | ap.add_argument("-d", "--data", help="path to data files") 16 | args = vars(ap.parse_args()) 17 | data_path = args["data"] 18 | 19 | if data_path is None: 20 | data_path = 'data/' 21 | 22 | filename = 'SUNRGBD.zip' 23 | filename = os.path.join(data_path, filename) 24 | print('Extracting {}...'.format(filename)) 25 | with zipfile.ZipFile(filename, 'r') as zip_file: 26 | zip_file.extractall(data_path) 27 | 28 | filename = 'SUNRGBDtoolbox.zip' 29 | filename = os.path.join(data_path, filename) 30 | print('Extracting {}...'.format(filename)) 31 | with zipfile.ZipFile(filename, 'r') as zip_file: 32 | zip_file.extractall(data_path) 33 | 34 | filename = 'data/SUNRGBDtoolbox/Metadata/SUNRGBD2Dseg.mat' 35 | SUNRGBD2Dseg = hdf5storage.loadmat(filename) 36 | num_samples = len(SUNRGBD2Dseg['SUNRGBD2Dseg'][0]) 37 | print('num_samples: ' + str(num_samples)) 38 | 39 | seg_path = 'data/SUNRGBD2Dseg' 40 | if not os.path.exists(seg_path): 41 | os.makedirs(seg_path) 42 | 43 | pb = ProgressBar(total=num_samples, prefix='Processing images', suffix='', decimals=3, length=50, fill='=') 44 | 45 | for i in range(num_samples): 46 | semantic = SUNRGBD2Dseg['SUNRGBD2Dseg'][0][i][0] 47 | semantic = semantic.astype(np.uint8) 48 | filename = os.path.join(seg_path, '{}.png'.format(i)) 49 | cv.imwrite(filename, semantic) 50 | pb.print_progress_bar(i + 1) 51 | -------------------------------------------------------------------------------- /seg37list.mat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/foamliu/Scene-Understanding/e8a4c2f6ce41fcde04202e6129d9bc406d4ff200/seg37list.mat -------------------------------------------------------------------------------- /train.py: -------------------------------------------------------------------------------- 1 | import argparse 2 | 3 | import keras 4 | import tensorflow as tf 5 | from keras.callbacks import ModelCheckpoint, EarlyStopping, ReduceLROnPlateau 6 | from keras.utils import multi_gpu_model 7 | 8 | from config import patience, epochs, num_train_samples, num_valid_samples, batch_size 9 | from data_generator import train_gen, valid_gen 10 | from model import build_model 11 | from utils import get_available_gpus, get_available_cpus, categorical_crossentropy_with_class_rebal 12 | 13 | if __name__ == '__main__': 14 | # Parse arguments 15 | ap = argparse.ArgumentParser() 16 | ap.add_argument("-p", "--pretrained", help="path to save pretrained model files") 17 | args = vars(ap.parse_args()) 18 | pretrained_path = args["pretrained"] 19 | checkpoint_models_path = 'models/' 20 | 21 | # Callbacks 22 | tensor_board = keras.callbacks.TensorBoard(log_dir='./logs', histogram_freq=0, write_graph=True, write_images=True) 23 | model_names = checkpoint_models_path + 'model.{epoch:02d}-{val_loss:.4f}.hdf5' 24 | model_checkpoint = ModelCheckpoint(model_names, monitor='val_loss', verbose=1, save_best_only=True) 25 | early_stop = EarlyStopping('val_loss', patience=patience) 26 | reduce_lr = ReduceLROnPlateau('val_loss', factor=0.5, patience=int(patience / 4), verbose=1) 27 | 28 | 29 | class MyCbk(keras.callbacks.Callback): 30 | def __init__(self, model): 31 | keras.callbacks.Callback.__init__(self) 32 | self.model_to_save = model 33 | 34 | def on_epoch_end(self, epoch, logs=None): 35 | fmt = checkpoint_models_path + 'model.%02d-%.4f.hdf5' 36 | self.model_to_save.save(fmt % (epoch, logs['val_loss'])) 37 | 38 | 39 | # Load our model, added support for Multi-GPUs 40 | num_gpu = len(get_available_gpus()) 41 | if num_gpu >= 2: 42 | with tf.device("/cpu:0"): 43 | model = build_model() 44 | if pretrained_path is not None: 45 | model.load_weights(pretrained_path) 46 | 47 | new_model = multi_gpu_model(model, gpus=num_gpu) 48 | # rewrite the callback: saving through the original model and not the multi-gpu model. 49 | model_checkpoint = MyCbk(model) 50 | else: 51 | new_model = build_model() 52 | if pretrained_path is not None: 53 | new_model.load_weights(pretrained_path) 54 | 55 | sgd = keras.optimizers.SGD(lr=0.001, decay=1e-6, momentum=0.9, nesterov=True, clipnorm=5.) 56 | new_model.compile(optimizer=sgd, loss=categorical_crossentropy_with_class_rebal, metrics=['accuracy']) 57 | 58 | print(new_model.summary()) 59 | 60 | # Final callbacks 61 | callbacks = [tensor_board, model_checkpoint, reduce_lr, early_stop] 62 | 63 | # Start Fine-tuning 64 | new_model.fit_generator(train_gen(), 65 | steps_per_epoch=num_train_samples // batch_size, 66 | validation_data=valid_gen(), 67 | validation_steps=num_valid_samples // batch_size, 68 | epochs=epochs, 69 | verbose=1, 70 | callbacks=callbacks, 71 | use_multiprocessing=True, 72 | workers=int(get_available_cpus() * 0.80) 73 | ) 74 | -------------------------------------------------------------------------------- /train_ids.txt: -------------------------------------------------------------------------------- 1 | 523 2 | 3948 3 | 686 4 | 7026 5 | 1271 6 | 6854 7 | 6631 8 | 7278 9 | 3786 10 | 4434 11 | 1266 12 | 979 13 | 215 14 | 1198 15 | 7106 16 | 7520 17 | 5977 18 | 2896 19 | 597 20 | 5696 21 | 6076 22 | 5983 23 | 7425 24 | 4334 25 | 5497 26 | 2645 27 | 7385 28 | 3357 29 | 5832 30 | 4060 31 | 4804 32 | 4659 33 | 2009 34 | 4797 35 | 3854 36 | 6123 37 | 432 38 | 377 39 | 2938 40 | 7880 41 | 1417 42 | 3475 43 | 7266 44 | 914 45 | 4001 46 | 5906 47 | 5428 48 | 902 49 | 3437 50 | 5412 51 | 7745 52 | 2332 53 | 2936 54 | 4409 55 | 623 56 | 8176 57 | 2679 58 | 931 59 | 3160 60 | 1136 61 | 5349 62 | 3343 63 | 4024 64 | 5306 65 | 1822 66 | 413 67 | 3080 68 | 3780 69 | 6070 70 | 4793 71 | 1800 72 | 3904 73 | 6378 74 | 6911 75 | 6021 76 | 555 77 | 8212 78 | 2110 79 | 4014 80 | 7232 81 | 7231 82 | 5630 83 | 3278 84 | 1341 85 | 6717 86 | 6352 87 | 3418 88 | 3592 89 | 2744 90 | 7235 91 | 5677 92 | 1042 93 | 7336 94 | 3215 95 | 4662 96 | 6623 97 | 6235 98 | 6940 99 | 3613 100 | 8034 101 | 2976 102 | 6345 103 | 7691 104 | 521 105 | 3560 106 | 1818 107 | 982 108 | 6319 109 | 5297 110 | 113 111 | 2675 112 | 6039 113 | 5715 114 | 6276 115 | 5969 116 | 6477 117 | 3600 118 | 2100 119 | 437 120 | 1575 121 | 1513 122 | 5558 123 | 7633 124 | 2059 125 | 2563 126 | 905 127 | 4857 128 | 4773 129 | 7788 130 | 7436 131 | 4465 132 | 4472 133 | 8066 134 | 4198 135 | 8215 136 | 1836 137 | 3172 138 | 3201 139 | 4487 140 | 6735 141 | 1804 142 | 4935 143 | 5132 144 | 6346 145 | 3535 146 | 4114 147 | 1280 148 | 7956 149 | 3039 150 | 1649 151 | 130 152 | 1069 153 | 4989 154 | 1485 155 | 2403 156 | 5956 157 | 87 158 | 3728 159 | 1885 160 | 6156 161 | 8186 162 | 6811 163 | 7072 164 | 2402 165 | 2076 166 | 6804 167 | 3300 168 | 554 169 | 7096 170 | 445 171 | 4499 172 | 6402 173 | 5834 174 | 4855 175 | 3364 176 | 1043 177 | 7673 178 | 5818 179 | 189 180 | 7663 181 | 4628 182 | 3872 183 | 7946 184 | 122 185 | 4495 186 | 6556 187 | 1519 188 | 8019 189 | 6596 190 | 4686 191 | 936 192 | 5632 193 | 4177 194 | 5407 195 | 72 196 | 4003 197 | 7178 198 | 455 199 | 653 200 | 1175 201 | 2602 202 | 2044 203 | 1494 204 | 1168 205 | 3187 206 | 3010 207 | 7542 208 | 2797 209 | 3643 210 | 3443 211 | 8005 212 | 172 213 | 6068 214 | 1568 215 | 5126 216 | 5374 217 | 4337 218 | 479 219 | 7750 220 | 5439 221 | 4678 222 | 8177 223 | 5978 224 | 8206 225 | 4124 226 | 7044 227 | 323 228 | 1191 229 | 7319 230 | 4042 231 | 6280 232 | 6321 233 | 535 234 | 6691 235 | 1598 236 | 38 237 | 5622 238 | 4718 239 | 3203 240 | 8122 241 | 7729 242 | 1758 243 | 7049 244 | 6216 245 | 5172 246 | 1138 247 | 1705 248 | 2277 249 | 574 250 | 585 251 | 4810 252 | 3602 253 | 3102 254 | 6882 255 | 7263 256 | 4492 257 | 6195 258 | 3690 259 | 548 260 | 4870 261 | 4298 262 | 6981 263 | 6199 264 | 2223 265 | 2004 266 | 7516 267 | 5779 268 | 2698 269 | 2748 270 | 6805 271 | 459 272 | 8091 273 | 2211 274 | 6393 275 | 6411 276 | 899 277 | 4043 278 | 8228 279 | 4500 280 | 7199 281 | 4732 282 | 5447 283 | 1452 284 | 1283 285 | 4778 286 | 4738 287 | 4997 288 | 1826 289 | 444 290 | 1908 291 | 3286 292 | 6786 293 | 7796 294 | 3032 295 | 4604 296 | 765 297 | 5841 298 | 1903 299 | 3383 300 | 8046 301 | 572 302 | 3066 303 | 5396 304 | 3510 305 | 318 306 | 2423 307 | 6610 308 | 1269 309 | 697 310 | 1557 311 | 942 312 | 4753 313 | 7020 314 | 4093 315 | 3867 316 | 5085 317 | 7850 318 | 2183 319 | 4263 320 | 927 321 | 1193 322 | 3469 323 | 6161 324 | 7868 325 | 7908 326 | 878 327 | 693 328 | 7446 329 | 5656 330 | 7974 331 | 7437 332 | 3890 333 | 7702 334 | 2445 335 | 7492 336 | 1132 337 | 3589 338 | 5836 339 | 7405 340 | 6041 341 | 7354 342 | 2729 343 | 2939 344 | 813 345 | 3969 346 | 6601 347 | 1005 348 | 236 349 | 731 350 | 1862 351 | 2397 352 | 1514 353 | 84 354 | 972 355 | 536 356 | 7067 357 | 7462 358 | 1170 359 | 4976 360 | 451 361 | 3938 362 | 4446 363 | 6142 364 | 5341 365 | 5158 366 | 7269 367 | 142 368 | 2898 369 | 5638 370 | 6559 371 | 1331 372 | 7498 373 | 484 374 | 1395 375 | 7435 376 | 7077 377 | 2427 378 | 5146 379 | 3662 380 | 5006 381 | 3906 382 | 5942 383 | 732 384 | 3874 385 | 373 386 | 994 387 | 420 388 | 3621 389 | 4845 390 | 1029 391 | 2799 392 | 6704 393 | 5538 394 | 4279 395 | 4147 396 | 5028 397 | 4685 398 | 866 399 | 6027 400 | 636 401 | 329 402 | 8192 403 | 5434 404 | 3247 405 | 2420 406 | 5134 407 | 4786 408 | 1994 409 | 3118 410 | 4132 411 | 4207 412 | 3111 413 | 4423 414 | 3293 415 | 6995 416 | 2969 417 | 2994 418 | 5312 419 | 136 420 | 5162 421 | 5484 422 | 1411 423 | 1639 424 | 1742 425 | 908 426 | 7362 427 | 6245 428 | 5556 429 | 4206 430 | 5804 431 | 8043 432 | 5166 433 | 6484 434 | 6855 435 | 1801 436 | 2289 437 | 6338 438 | 4331 439 | 7171 440 | 6707 441 | 408 442 | 4868 443 | 7145 444 | 201 445 | 7484 446 | 5139 447 | 2836 448 | 1310 449 | 2456 450 | 909 451 | 6413 452 | 7209 453 | 3072 454 | 2912 455 | 656 456 | 4215 457 | 2005 458 | 3952 459 | 1991 460 | 2913 461 | 6738 462 | 3349 463 | 1986 464 | 6066 465 | 1763 466 | 1019 467 | 2082 468 | 4422 469 | 1661 470 | 7025 471 | 1839 472 | 6615 473 | 2304 474 | 1662 475 | 858 476 | 1335 477 | 2570 478 | 6619 479 | 5828 480 | 644 481 | 4382 482 | 4592 483 | 1326 484 | 4661 485 | 2349 486 | 1680 487 | 4757 488 | 143 489 | 6949 490 | 7143 491 | 1343 492 | 4288 493 | 3782 494 | 1527 495 | 3091 496 | 3523 497 | 2717 498 | 5046 499 | 2852 500 | 2809 501 | 7609 502 | 8053 503 | 320 504 | 4038 505 | 3440 506 | 1586 507 | 8064 508 | 8082 509 | 7299 510 | 1458 511 | 6151 512 | 3054 513 | 6121 514 | 4000 515 | 5722 516 | 2268 517 | 599 518 | 4405 519 | 5604 520 | 7740 521 | 6808 522 | 5441 523 | 3307 524 | 7155 525 | 7398 526 | 710 527 | 5869 528 | 1145 529 | 5339 530 | 6166 531 | 3228 532 | 1150 533 | 5250 534 | 4747 535 | 5504 536 | 2648 537 | 3467 538 | 1847 539 | 3586 540 | 4835 541 | 2474 542 | 5064 543 | 1303 544 | 6119 545 | 1285 546 | 4561 547 | 2333 548 | 4225 549 | 3701 550 | 5059 551 | 5269 552 | 4509 553 | 516 554 | 7190 555 | 2471 556 | 2711 557 | 6785 558 | 4086 559 | 7196 560 | 3088 561 | 3480 562 | 407 563 | 8238 564 | 5331 565 | 3104 566 | 4483 567 | 6765 568 | 3962 569 | 889 570 | 3188 571 | 8039 572 | 1978 573 | 2915 574 | 7470 575 | 779 576 | 3434 577 | 8183 578 | 1761 579 | 5843 580 | 6848 581 | 4529 582 | 6033 583 | 4035 584 | 2968 585 | 7962 586 | 4006 587 | 3844 588 | 4218 589 | 3609 590 | 4284 591 | 4877 592 | 5202 593 | 900 594 | 3192 595 | 4995 596 | 5651 597 | 5337 598 | 787 599 | 6050 600 | 5985 601 | 103 602 | 4864 603 | 1608 604 | 5112 605 | 3672 606 | 2119 607 | 588 608 | 469 609 | 2610 610 | 1653 611 | 6152 612 | 5910 613 | 3975 614 | 5120 615 | 5531 616 | 3985 617 | 6726 618 | 5223 619 | 5593 620 | 2663 621 | 6042 622 | 4340 623 | 1121 624 | 5265 625 | 5189 626 | 3767 627 | 3839 628 | 764 629 | 179 630 | 2329 631 | 4745 632 | 4079 633 | 7977 634 | 1176 635 | 1578 636 | 7119 637 | 1811 638 | 2484 639 | 5745 640 | 2575 641 | 4611 642 | 1693 643 | 4056 644 | 1684 645 | 1889 646 | 5043 647 | 5685 648 | 7859 649 | 6383 650 | 4945 651 | 4077 652 | 6400 653 | 5307 654 | 6590 655 | 795 656 | 6873 657 | 7864 658 | 7391 659 | 682 660 | 2487 661 | 4980 662 | 2093 663 | 4602 664 | 4205 665 | 1118 666 | 1834 667 | 3928 668 | 3367 669 | 7396 670 | 5358 671 | 1025 672 | 2954 673 | 3288 674 | 5119 675 | 6085 676 | 4168 677 | 2709 678 | 1140 679 | 3250 680 | 5532 681 | 1068 682 | 7370 683 | 2442 684 | 2562 685 | 3368 686 | 8006 687 | 5561 688 | 1049 689 | 6737 690 | 2233 691 | 5359 692 | 1319 693 | 4104 694 | 6748 695 | 2687 696 | 5979 697 | 1299 698 | 7530 699 | 8233 700 | 1777 701 | 4962 702 | 7818 703 | 2671 704 | 5459 705 | 1348 706 | 6320 707 | 4630 708 | 7848 709 | 238 710 | 7758 711 | 7997 712 | 3617 713 | 7104 714 | 2080 715 | 2620 716 | 941 717 | 3916 718 | 7780 719 | 7219 720 | 40 721 | 3115 722 | 3578 723 | 4756 724 | 7032 725 | 4073 726 | 6032 727 | 1151 728 | 7201 729 | 2707 730 | 5660 731 | 5952 732 | 3869 733 | 2731 734 | 4859 735 | 6362 736 | 3529 737 | 6222 738 | 3448 739 | 7875 740 | 5615 741 | 4069 742 | 4303 743 | 2704 744 | 6713 745 | 7862 746 | 6953 747 | 4961 748 | 3750 749 | 875 750 | 1541 751 | 3501 752 | 2375 753 | 5130 754 | 3344 755 | 4973 756 | 8191 757 | 7127 758 | 3971 759 | 7084 760 | 1841 761 | 7329 762 | 5583 763 | 7144 764 | 1009 765 | 2943 766 | 2907 767 | 6875 768 | 6924 769 | 1265 770 | 4996 771 | 3427 772 | 7659 773 | 7003 774 | 321 775 | 1624 776 | 2962 777 | 4100 778 | 877 779 | 1158 780 | 4281 781 | 3917 782 | 6822 783 | 3514 784 | 1131 785 | 5858 786 | 3558 787 | 5449 788 | 1154 789 | 8041 790 | 5792 791 | 626 792 | 4784 793 | 5282 794 | 2195 795 | 1230 796 | 7202 797 | 5452 798 | 4156 799 | 1669 800 | 98 801 | 6722 802 | 1064 803 | 4392 804 | 5068 805 | 5148 806 | 3164 807 | 7241 808 | 1330 809 | 1349 810 | 1410 811 | 6511 812 | 2495 813 | 5077 814 | 3424 815 | 7046 816 | 5278 817 | 1651 818 | 3828 819 | 6983 820 | 3391 821 | 3371 822 | 2921 823 | 2874 824 | 6960 825 | 5084 826 | 8264 827 | 6391 828 | 2647 829 | 2361 830 | 4078 831 | 631 832 | 2242 833 | 291 834 | 730 835 | 6598 836 | 4154 837 | 5118 838 | 5425 839 | 4866 840 | 1633 841 | 6614 842 | 7126 843 | 1864 844 | 3169 845 | 4033 846 | 6040 847 | 4090 848 | 4699 849 | 159 850 | 4615 851 | 5051 852 | 2111 853 | 1457 854 | 2655 855 | 1389 856 | 4418 857 | 3207 858 | 5514 859 | 2613 860 | 2451 861 | 1237 862 | 7769 863 | 7200 864 | 6743 865 | 2433 866 | 8180 867 | 5847 868 | 915 869 | 4426 870 | 1743 871 | 7251 872 | 6165 873 | 5916 874 | 2542 875 | 5276 876 | 718 877 | 5003 878 | 6463 879 | 1812 880 | 2440 881 | 4812 882 | 4652 883 | 1691 884 | 2390 885 | 4023 886 | 4412 887 | 7335 888 | 4012 889 | 1979 890 | 974 891 | 3412 892 | 3481 893 | 2428 894 | 6262 895 | 4184 896 | 894 897 | 105 898 | 717 899 | 762 900 | 6729 901 | 3811 902 | 6026 903 | 2227 904 | 6708 905 | 2118 906 | 6353 907 | 1217 908 | 4664 909 | 4558 910 | 4374 911 | 6146 912 | 3951 913 | 2155 914 | 1769 915 | 1327 916 | 4590 917 | 3366 918 | 2042 919 | 5759 920 | 5568 921 | 3779 922 | 7574 923 | 5886 924 | 3425 925 | 6277 926 | 7306 927 | 3184 928 | 3036 929 | 452 930 | 5932 931 | 383 932 | 3816 933 | 7794 934 | 457 935 | 3132 936 | 707 937 | 766 938 | 4887 939 | 2081 940 | 2607 941 | 1888 942 | 6326 943 | 1169 944 | 3679 945 | 1258 946 | 6328 947 | 541 948 | 6185 949 | 146 950 | 5220 951 | 6747 952 | 1381 953 | 1171 954 | 7598 955 | 1961 956 | 592 957 | 1398 958 | 1209 959 | 7966 960 | 7749 961 | 6595 962 | 6459 963 | 4680 964 | 6 965 | 1714 966 | 7137 967 | 5781 968 | 1969 969 | 2842 970 | 5281 971 | 4588 972 | 7993 973 | 1464 974 | 6457 975 | 2941 976 | 6943 977 | 7161 978 | 1489 979 | 6812 980 | 662 981 | 3223 982 | 5936 983 | 4335 984 | 7192 985 | 6985 986 | 8146 987 | 6318 988 | 5743 989 | 499 990 | 2257 991 | 2822 992 | 5949 993 | 6234 994 | 158 995 | 5727 996 | 7768 997 | 2201 998 | 5635 999 | 4619 1000 | 2331 1001 | 2763 1002 | 353 1003 | 425 1004 | 7947 1005 | 5958 1006 | 3073 1007 | 5080 1008 | 7058 1009 | 7937 1010 | 1279 1011 | 6089 1012 | 8217 1013 | 1115 1014 | 703 1015 | 6586 1016 | 6942 1017 | 4566 1018 | 1365 1019 | 4902 1020 | 558 1021 | 3170 1022 | 1337 1023 | 326 1024 | 85 1025 | 4453 1026 | 4176 1027 | 8054 1028 | 5016 1029 | 81 1030 | 3603 1031 | 5750 1032 | 1493 1033 | 5215 1034 | 1523 1035 | 5535 1036 | 68 1037 | 6996 1038 | 2626 1039 | 5657 1040 | 5054 1041 | 7432 1042 | 5777 1043 | 2705 1044 | 7978 1045 | 7565 1046 | 5426 1047 | 7417 1048 | 5020 1049 | 2512 1050 | 4979 1051 | 5355 1052 | 6331 1053 | 2930 1054 | 3866 1055 | 5325 1056 | 7714 1057 | 4437 1058 | 6878 1059 | 6626 1060 | 8216 1061 | 3923 1062 | 50 1063 | 7215 1064 | 8080 1065 | 4687 1066 | 6360 1067 | 3703 1068 | 3724 1069 | 7410 1070 | 4795 1071 | 1387 1072 | 2084 1073 | 3704 1074 | 4641 1075 | 1065 1076 | 5236 1077 | 5970 1078 | 4574 1079 | 7878 1080 | 4140 1081 | 3823 1082 | 5198 1083 | 7297 1084 | 7549 1085 | 4054 1086 | 2185 1087 | 3464 1088 | 522 1089 | 6639 1090 | 7643 1091 | 5041 1092 | 1700 1093 | 514 1094 | 4741 1095 | 1599 1096 | 6560 1097 | 6730 1098 | 7614 1099 | 2595 1100 | 3801 1101 | 5999 1102 | 1630 1103 | 7468 1104 | 3426 1105 | 7987 1106 | 3798 1107 | 6604 1108 | 1236 1109 | 3697 1110 | 4095 1111 | 1655 1112 | 343 1113 | 612 1114 | 1909 1115 | 4376 1116 | 1791 1117 | 645 1118 | 5444 1119 | 7558 1120 | 2409 1121 | 3722 1122 | 7957 1123 | 7819 1124 | 5898 1125 | 2560 1126 | 5108 1127 | 2170 1128 | 1934 1129 | 7999 1130 | 2272 1131 | 2238 1132 | 4789 1133 | 2138 1134 | 4255 1135 | 5761 1136 | 3857 1137 | 6723 1138 | 345 1139 | 4102 1140 | 4074 1141 | 2366 1142 | 4236 1143 | 2777 1144 | 776 1145 | 1879 1146 | 7302 1147 | 3743 1148 | 1290 1149 | 746 1150 | 2389 1151 | 950 1152 | 4623 1153 | 1460 1154 | 552 1155 | 3720 1156 | 6198 1157 | 6956 1158 | 918 1159 | 5686 1160 | 2574 1161 | 6344 1162 | 2455 1163 | 1982 1164 | 7004 1165 | 2834 1166 | 3829 1167 | 289 1168 | 3023 1169 | 1899 1170 | 5550 1171 | 5212 1172 | 2295 1173 | 8029 1174 | 1964 1175 | 191 1176 | 7217 1177 | 66 1178 | 5976 1179 | 6550 1180 | 758 1181 | 1895 1182 | 1857 1183 | 3077 1184 | 6363 1185 | 1021 1186 | 2305 1187 | 6358 1188 | 2659 1189 | 642 1190 | 3576 1191 | 7271 1192 | 4324 1193 | 7587 1194 | 6673 1195 | 619 1196 | 3536 1197 | 6957 1198 | 2008 1199 | 7191 1200 | 7313 1201 | 47 1202 | 8265 1203 | 4473 1204 | 6460 1205 | 1988 1206 | 3504 1207 | 7954 1208 | 1803 1209 | 6527 1210 | 3232 1211 | 6766 1212 | 4993 1213 | 7817 1214 | 5652 1215 | 4181 1216 | 806 1217 | 6523 1218 | 1867 1219 | 5164 1220 | 6113 1221 | 641 1222 | 5527 1223 | 5301 1224 | 7909 1225 | 6286 1226 | 3520 1227 | 1859 1228 | 5953 1229 | 3193 1230 | 428 1231 | 5662 1232 | 1099 1233 | 7505 1234 | 3654 1235 | 6910 1236 | 1638 1237 | 5596 1238 | 3564 1239 | 3932 1240 | 5981 1241 | 7052 1242 | 2182 1243 | 6213 1244 | 970 1245 | 4854 1246 | 5560 1247 | 1821 1248 | 1033 1249 | 2583 1250 | 2577 1251 | 2650 1252 | 6397 1253 | 487 1254 | 1428 1255 | 3106 1256 | 5703 1257 | 3755 1258 | 4665 1259 | 5887 1260 | 4822 1261 | 79 1262 | 834 1263 | 1251 1264 | 2965 1265 | 938 1266 | 5214 1267 | 2047 1268 | 5319 1269 | 1197 1270 | 510 1271 | 5871 1272 | 4456 1273 | 8241 1274 | 3544 1275 | 5356 1276 | 2611 1277 | 4133 1278 | 5756 1279 | 5861 1280 | 4927 1281 | 241 1282 | 5025 1283 | 4377 1284 | 6424 1285 | 2996 1286 | 7958 1287 | 3121 1288 | 7463 1289 | 3825 1290 | 2644 1291 | 3100 1292 | 932 1293 | 8132 1294 | 7342 1295 | 5318 1296 | 3408 1297 | 7965 1298 | 403 1299 | 6098 1300 | 5888 1301 | 8227 1302 | 7252 1303 | 934 1304 | 7364 1305 | 2947 1306 | 7330 1307 | 7697 1308 | 6309 1309 | 1593 1310 | 6108 1311 | 3612 1312 | 6901 1313 | 6564 1314 | 2139 1315 | 2712 1316 | 5014 1317 | 7715 1318 | 8255 1319 | 1461 1320 | 8000 1321 | 550 1322 | 1884 1323 | 5688 1324 | 1959 1325 | 6236 1326 | 2764 1327 | 7124 1328 | 453 1329 | 807 1330 | 2345 1331 | 3597 1332 | 392 1333 | 3752 1334 | 1880 1335 | 4106 1336 | 7836 1337 | 7166 1338 | 7305 1339 | 8262 1340 | 7160 1341 | 1951 1342 | 6483 1343 | 6051 1344 | 362 1345 | 6736 1346 | 7133 1347 | 6603 1348 | 1046 1349 | 4748 1350 | 3385 1351 | 2066 1352 | 2314 1353 | 7068 1354 | 7779 1355 | 4787 1356 | 1827 1357 | 3403 1358 | 991 1359 | 1886 1360 | 4637 1361 | 3628 1362 | 1591 1363 | 6322 1364 | 879 1365 | 5864 1366 | 3484 1367 | 6427 1368 | 2073 1369 | 5579 1370 | 208 1371 | 1971 1372 | 219 1373 | 5038 1374 | 568 1375 | 3587 1376 | 2460 1377 | 4346 1378 | 2502 1379 | 669 1380 | 7642 1381 | 8098 1382 | 3229 1383 | 4055 1384 | 4860 1385 | 5613 1386 | 3491 1387 | 6870 1388 | 6775 1389 | 3585 1390 | 1315 1391 | 8069 1392 | 3197 1393 | 3314 1394 | 1447 1395 | 1143 1396 | 3574 1397 | 2716 1398 | 4707 1399 | 6923 1400 | 7138 1401 | 270 1402 | 5383 1403 | 6285 1404 | 8074 1405 | 6815 1406 | 4873 1407 | 5940 1408 | 5526 1409 | 2209 1410 | 5806 1411 | 1787 1412 | 1747 1413 | 4649 1414 | 2116 1415 | 3152 1416 | 207 1417 | 7812 1418 | 2998 1419 | 1815 1420 | 5002 1421 | 4440 1422 | 4148 1423 | 1708 1424 | 1124 1425 | 3552 1426 | 7551 1427 | 4544 1428 | 2347 1429 | 183 1430 | 3966 1431 | 3830 1432 | 3851 1433 | 5895 1434 | 3808 1435 | 482 1436 | 6884 1437 | 2529 1438 | 8154 1439 | 6274 1440 | 2894 1441 | 511 1442 | 6253 1443 | 949 1444 | 6155 1445 | 6840 1446 | 3298 1447 | 6526 1448 | 6071 1449 | 1798 1450 | 3921 1451 | 443 1452 | 2873 1453 | 7636 1454 | 4059 1455 | 5809 1456 | 916 1457 | 1208 1458 | 2690 1459 | 6470 1460 | 6167 1461 | 3015 1462 | 2143 1463 | 4320 1464 | 5364 1465 | 4843 1466 | 495 1467 | 2108 1468 | 1262 1469 | 3406 1470 | 2825 1471 | 7424 1472 | 2900 1473 | 6819 1474 | 728 1475 | 1556 1476 | 8236 1477 | 3064 1478 | 6763 1479 | 6302 1480 | 7939 1481 | 8008 1482 | 925 1483 | 5892 1484 | 3421 1485 | 624 1486 | 2543 1487 | 5512 1488 | 6931 1489 | 7950 1490 | 3374 1491 | 138 1492 | 1380 1493 | 1013 1494 | 5637 1495 | 913 1496 | 8223 1497 | 7489 1498 | 1896 1499 | 3749 1500 | 3681 1501 | 6959 1502 | 1250 1503 | 3987 1504 | 2475 1505 | 2703 1506 | 2819 1507 | 5675 1508 | 2886 1509 | 4968 1510 | 3551 1511 | 3518 1512 | 1654 1513 | 203 1514 | 4325 1515 | 1096 1516 | 5098 1517 | 1112 1518 | 7012 1519 | 1313 1520 | 4831 1521 | 3655 1522 | 3858 1523 | 5201 1524 | 2526 1525 | 2141 1526 | 2401 1527 | 4357 1528 | 2 1529 | 4209 1530 | 5034 1531 | 2075 1532 | 1688 1533 | 107 1534 | 5261 1535 | 2823 1536 | 6129 1537 | 3546 1538 | 2011 1539 | 4126 1540 | 2776 1541 | 5 1542 | 467 1543 | 3855 1544 | 6416 1545 | 4063 1546 | 4703 1547 | 1511 1548 | 926 1549 | 6841 1550 | 953 1551 | 4721 1552 | 3659 1553 | 1219 1554 | 6443 1555 | 3135 1556 | 5571 1557 | 1632 1558 | 6507 1559 | 5471 1560 | 369 1561 | 6958 1562 | 2228 1563 | 1682 1564 | 1320 1565 | 2477 1566 | 3550 1567 | 7985 1568 | 1206 1569 | 569 1570 | 2810 1571 | 4731 1572 | 4272 1573 | 4192 1574 | 1306 1575 | 4224 1576 | 6797 1577 | 5592 1578 | 2697 1579 | 4978 1580 | 91 1581 | 5823 1582 | 1413 1583 | 7670 1584 | 1980 1585 | 4660 1586 | 3667 1587 | 635 1588 | 5170 1589 | 2072 1590 | 1710 1591 | 300 1592 | 6481 1593 | 867 1594 | 4675 1595 | 2412 1596 | 2164 1597 | 5967 1598 | 4327 1599 | 3918 1600 | 7732 1601 | 6893 1602 | 6499 1603 | 3037 1604 | 8067 1605 | 1173 1606 | 6579 1607 | 4240 1608 | 5275 1609 | 1002 1610 | 2522 1611 | 205 1612 | 1828 1613 | 1294 1614 | 1563 1615 | 6928 1616 | 6428 1617 | 5830 1618 | 3954 1619 | 416 1620 | 2308 1621 | 6036 1622 | 4330 1623 | 2031 1624 | 222 1625 | 3796 1626 | 305 1627 | 1685 1628 | 3741 1629 | 4958 1630 | 5024 1631 | 2323 1632 | 1738 1633 | 3792 1634 | 2642 1635 | 2065 1636 | 1571 1637 | 6351 1638 | 5528 1639 | 5391 1640 | 3186 1641 | 4780 1642 | 6557 1643 | 5826 1644 | 5824 1645 | 2791 1646 | 4082 1647 | 492 1648 | 2905 1649 | 7540 1650 | 2234 1651 | 1073 1652 | 1177 1653 | 192 1654 | 7824 1655 | 6828 1656 | 7040 1657 | 6045 1658 | 43 1659 | 7527 1660 | 5683 1661 | 3389 1662 | 7569 1663 | 1756 1664 | 7797 1665 | 1235 1666 | 6081 1667 | 3500 1668 | 1416 1669 | 5594 1670 | 2485 1671 | 3019 1672 | 5567 1673 | 959 1674 | 7539 1675 | 5045 1676 | 1643 1677 | 1309 1678 | 7572 1679 | 7148 1680 | 6311 1681 | 6138 1682 | 2956 1683 | 615 1684 | 2463 1685 | 771 1686 | 6441 1687 | 7898 1688 | 247 1689 | 3061 1690 | 6447 1691 | 5716 1692 | 6203 1693 | 3375 1694 | 1092 1695 | 7345 1696 | 2832 1697 | 3601 1698 | 4553 1699 | 781 1700 | 6238 1701 | 1530 1702 | 4268 1703 | 7741 1704 | 5082 1705 | 7906 1706 | 4262 1707 | 3059 1708 | 6820 1709 | 5540 1710 | 1937 1711 | 7125 1712 | 2817 1713 | 8079 1714 | 4567 1715 | 4814 1716 | 6864 1717 | 7400 1718 | 7599 1719 | 154 1720 | 7548 1721 | 4760 1722 | 6865 1723 | 102 1724 | 4994 1725 | 6641 1726 | 754 1727 | 4166 1728 | 5639 1729 | 4575 1730 | 565 1731 | 977 1732 | 7377 1733 | 8158 1734 | 2749 1735 | 646 1736 | 2922 1737 | 2983 1738 | 726 1739 | 6468 1740 | 1954 1741 | 4525 1742 | 8221 1743 | 3967 1744 | 4896 1745 | 5116 1746 | 7346 1747 | 4275 1748 | 5549 1749 | 2336 1750 | 4763 1751 | 5684 1752 | 1686 1753 | 4916 1754 | 2503 1755 | 3479 1756 | 2148 1757 | 2165 1758 | 2785 1759 | 4452 1760 | 608 1761 | 2121 1762 | 6534 1763 | 2267 1764 | 1373 1765 | 6721 1766 | 2294 1767 | 2282 1768 | 5814 1769 | 3509 1770 | 7879 1771 | 1045 1772 | 7578 1773 | 6757 1774 | 4285 1775 | 7109 1776 | 8143 1777 | 6395 1778 | 7635 1779 | 6486 1780 | 2026 1781 | 4120 1782 | 6915 1783 | 1135 1784 | 7118 1785 | 783 1786 | 957 1787 | 2737 1788 | 7677 1789 | 7070 1790 | 3244 1791 | 4436 1792 | 3338 1793 | 2643 1794 | 7504 1795 | 6622 1796 | 1583 1797 | 5427 1798 | 8149 1799 | 4774 1800 | 1047 1801 | 2658 1802 | 4018 1803 | 2259 1804 | 4317 1805 | 1861 1806 | 221 1807 | 4570 1808 | 4942 1809 | 4444 1810 | 7208 1811 | 5369 1812 | 7121 1813 | 296 1814 | 1286 1815 | 5244 1816 | 7707 1817 | 1147 1818 | 6130 1819 | 8114 1820 | 1707 1821 | 4363 1822 | 6374 1823 | 45 1824 | 4842 1825 | 4089 1826 | 4702 1827 | 7387 1828 | 5868 1829 | 960 1830 | 6452 1831 | 3485 1832 | 8171 1833 | 6305 1834 | 5370 1835 | 2424 1836 | 6467 1837 | 6779 1838 | 6644 1839 | 7506 1840 | 3991 1841 | 7349 1842 | 7902 1843 | 4559 1844 | 6418 1845 | 3166 1846 | 7701 1847 | 436 1848 | 664 1849 | 20 1850 | 4004 1851 | 2899 1852 | 6325 1853 | 661 1854 | 2992 1855 | 1339 1856 | 5372 1857 | 929 1858 | 7910 1859 | 6478 1860 | 3420 1861 | 5373 1862 | 3865 1863 | 3175 1864 | 8178 1865 | 3806 1866 | 3599 1867 | 272 1868 | 6689 1869 | 2274 1870 | 5121 1871 | 8068 1872 | 5035 1873 | 1640 1874 | 3473 1875 | 2300 1876 | 1166 1877 | 2596 1878 | 4482 1879 | 1312 1880 | 7934 1881 | 1597 1882 | 7413 1883 | 6546 1884 | 3581 1885 | 4219 1886 | 3949 1887 | 3726 1888 | 4543 1889 | 8161 1890 | 5226 1891 | 841 1892 | 2255 1893 | 2963 1894 | 4939 1895 | 3789 1896 | 1041 1897 | 7445 1898 | 5343 1899 | 5399 1900 | 4286 1901 | 3354 1902 | 5599 1903 | 4502 1904 | 2641 1905 | 2275 1906 | 5299 1907 | 4672 1908 | 169 1909 | 2358 1910 | 3561 1911 | 2371 1912 | 1531 1913 | 7816 1914 | 2039 1915 | 8129 1916 | 860 1917 | 8023 1918 | 6794 1919 | 5070 1920 | 8118 1921 | 7373 1922 | 6919 1923 | 7727 1924 | 7650 1925 | 4229 1926 | 3086 1927 | 7922 1928 | 1459 1929 | 7493 1930 | 4648 1931 | 5896 1932 | 5732 1933 | 7583 1934 | 670 1935 | 6417 1936 | 108 1937 | 4766 1938 | 5621 1939 | 3873 1940 | 3209 1941 | 3761 1942 | 4138 1943 | 2459 1944 | 6740 1945 | 5135 1946 | 7523 1947 | 6656 1948 | 2751 1949 | 4496 1950 | 8256 1951 | 4977 1952 | 2338 1953 | 7567 1954 | 4173 1955 | 4612 1956 | 1383 1957 | 1999 1958 | 1849 1959 | 862 1960 | 49 1961 | 2411 1962 | 7575 1963 | 2673 1964 | 3488 1965 | 4187 1966 | 4573 1967 | 6583 1968 | 3217 1969 | 3533 1970 | 5606 1971 | 3505 1972 | 6750 1973 | 4232 1974 | 147 1975 | 1053 1976 | 5181 1977 | 863 1978 | 4258 1979 | 8173 1980 | 5217 1981 | 2145 1982 | 1538 1983 | 3629 1984 | 7613 1985 | 6725 1986 | 1673 1987 | 4708 1988 | 5190 1989 | 2958 1990 | 7310 1991 | 1590 1992 | 1770 1993 | 331 1994 | 3081 1995 | 8263 1996 | 7929 1997 | 1072 1998 | 6732 1999 | 2278 2000 | 2652 2001 | 5536 2002 | 7538 2003 | 4549 2004 | 3126 2005 | 2060 2006 | 2634 2007 | 6231 2008 | 4475 2009 | 7568 2010 | 5938 2011 | 6989 2012 | 2405 2013 | 6038 2014 | 2501 2015 | 6284 2016 | 1382 2017 | 7698 2018 | 2438 2019 | 4350 2020 | 1483 2021 | 2290 2022 | 5747 2023 | 4201 2024 | 6600 2025 | 7806 2026 | 1906 2027 | 1486 2028 | 3563 2029 | 2565 2030 | 5647 2031 | 3087 2032 | 1107 2033 | 2181 2034 | 3414 2035 | 8190 2036 | 2608 2037 | 4497 2038 | 757 2039 | 5432 2040 | 1354 2041 | 5909 2042 | 3255 2043 | 1034 2044 | 5466 2045 | 2157 2046 | 2882 2047 | 4430 2048 | 5385 2049 | 30 2050 | 1476 2051 | 1570 2052 | 1375 2053 | 1929 2054 | 3460 2055 | 6632 2056 | 4985 2057 | 7991 2058 | 8121 2059 | 4294 2060 | 4946 2061 | 663 2062 | 2978 2063 | 5664 2064 | 3902 2065 | 4248 2066 | 1610 2067 | 5232 2068 | 6825 2069 | 496 2070 | 5061 2071 | 2430 2072 | 4883 2073 | 3235 2074 | 1421 2075 | 5863 2076 | 939 2077 | 530 2078 | 6833 2079 | 7982 2080 | 2839 2081 | 8231 2082 | 5242 2083 | 6509 2084 | 5922 2085 | 7159 2086 | 4195 2087 | 217 2088 | 5723 2089 | 5782 2090 | 3939 2091 | 390 2092 | 5247 2093 | 865 2094 | 2639 2095 | 921 2096 | 8144 2097 | 7753 2098 | 5995 2099 | 6580 2100 | 984 2101 | 3373 2102 | 2114 2103 | 573 2104 | 6926 2105 | 3658 2106 | 2876 2107 | 112 2108 | 1627 2109 | 8210 2110 | 7994 2111 | 4222 2112 | 5672 2113 | 322 2114 | 7309 2115 | 1825 2116 | 1720 2117 | 3456 2118 | 7519 2119 | 7761 2120 | 4801 2121 | 3051 2122 | 115 2123 | 4853 2124 | 5962 2125 | 4512 2126 | 2866 2127 | 7626 2128 | 6951 2129 | 44 2130 | 4276 2131 | 1117 2132 | 1802 2133 | 7087 2134 | 768 2135 | 2615 2136 | 4669 2137 | 7283 2138 | 3877 2139 | 1095 2140 | 2859 2141 | 5929 2142 | 7557 2143 | 7179 2144 | 1658 2145 | 7180 2146 | 7620 2147 | 2216 2148 | 2046 2149 | 8038 2150 | 7884 2151 | 1060 2152 | 6407 2153 | 5461 2154 | 7528 2155 | 2708 2156 | 2691 2157 | 7595 2158 | 298 2159 | 5191 2160 | 3791 2161 | 3329 2162 | 6172 2163 | 5057 2164 | 6062 2165 | 3449 2166 | 5748 2167 | 4185 2168 | 426 2169 | 8031 2170 | 294 2171 | 1093 2172 | 3596 2173 | 7338 2174 | 4858 2175 | 4879 2176 | 6917 2177 | 42 2178 | 5450 2179 | 1623 2180 | 7843 2181 | 5420 2182 | 6515 2183 | 904 2184 | 4865 2185 | 4511 2186 | 2541 2187 | 2410 2188 | 5833 2189 | 1647 2190 | 4031 2191 | 3699 2192 | 3788 2193 | 3459 2194 | 6381 2195 | 3569 2196 | 5557 2197 | 3611 2198 | 2662 2199 | 1965 2200 | 7369 2201 | 2604 2202 | 4178 2203 | 5218 2204 | 691 2205 | 4458 2206 | 4999 2207 | 638 2208 | 1622 2209 | 4425 2210 | 6508 2211 | 2985 2212 | 1172 2213 | 1104 2214 | 1881 2215 | 7440 2216 | 947 2217 | 8208 2218 | 5848 2219 | 2370 2220 | 5516 2221 | 5000 2222 | 7696 2223 | 1443 2224 | 3097 2225 | 1202 2226 | 7018 2227 | 4647 2228 | 1809 2229 | 7531 2230 | 1932 2231 | 5065 2232 | 7065 2233 | 6963 2234 | 4821 2235 | 2988 2236 | 1026 2237 | 1455 2238 | 2628 2239 | 8060 2240 | 7154 2241 | 2927 2242 | 4355 2243 | 2161 2244 | 3297 2245 | 5106 2246 | 8044 2247 | 6739 2248 | 6616 2249 | 2504 2250 | 2527 2251 | 213 2252 | 7511 2253 | 7810 2254 | 3238 2255 | 5209 2256 | 6412 2257 | 6561 2258 | 6719 2259 | 604 2260 | 6573 2261 | 5948 2262 | 7963 2263 | 4052 2264 | 7920 2265 | 7980 2266 | 1532 2267 | 2637 2268 | 3124 2269 | 1728 2270 | 1918 2271 | 851 2272 | 2483 2273 | 3680 2274 | 618 2275 | 6462 2276 | 7694 2277 | 7220 2278 | 3957 2279 | 2546 2280 | 6237 2281 | 2188 2282 | 6405 2283 | 2414 2284 | 6308 2285 | 5700 2286 | 3260 2287 | 4806 2288 | 6037 2289 | 4727 2290 | 4889 2291 | 3626 2292 | 5433 2293 | 3465 2294 | 1870 2295 | 2653 2296 | 7029 2297 | 6434 2298 | 3994 2299 | 5140 2300 | 6927 2301 | 2058 2302 | 1604 2303 | 7443 2304 | 6270 2305 | 2816 2306 | 7483 2307 | 5482 2308 | 2340 2309 | 2492 2310 | 1600 2311 | 3272 2312 | 1207 2313 | 266 2314 | 2021 2315 | 7397 2316 | 2395 2317 | 7239 2318 | 117 2319 | 2315 2320 | 8027 2321 | 3922 2322 | 1953 2323 | 1734 2324 | 8246 2325 | 4362 2326 | 3085 2327 | 3214 2328 | 4862 2329 | 5539 2330 | 4349 2331 | 502 2332 | 342 2333 | 4817 2334 | 5245 2335 | 5565 2336 | 4609 2337 | 7660 2338 | 7009 2339 | 2376 2340 | 8109 2341 | 5243 2342 | 7204 2343 | 3736 2344 | 5213 2345 | 2437 2346 | 4016 2347 | 4128 2348 | 3688 2349 | 3345 2350 | 256 2351 | 1228 2352 | 7552 2353 | 2821 2354 | 5725 2355 | 3524 2356 | 8198 2357 | 88 2358 | 917 2359 | 937 2360 | 8252 2361 | 6716 2362 | 1561 2363 | 7174 2364 | 5221 2365 | 7890 2366 | 5451 2367 | 6890 2368 | 2074 2369 | 2974 2370 | 4065 2371 | 1120 2372 | 5668 2373 | 5975 2374 | 6829 2375 | 3089 2376 | 7259 2377 | 182 2378 | 4226 2379 | 7510 2380 | 5870 2381 | 7247 2382 | 1204 2383 | 3984 2384 | 6838 2385 | 2909 2386 | 3181 2387 | 6177 2388 | 6799 2389 | 1764 2390 | 3016 2391 | 6528 2392 | 533 2393 | 2112 2394 | 1808 2395 | 797 2396 | 6544 2397 | 688 2398 | 7828 2399 | 1775 2400 | 7971 2401 | 7080 2402 | 1512 2403 | 7066 2404 | 5110 2405 | 4682 2406 | 1927 2407 | 3453 2408 | 1719 2409 | 7421 2410 | 2203 2411 | 602 2412 | 3757 2413 | 2945 2414 | 478 2415 | 363 2416 | 267 2417 | 4336 2418 | 4455 2419 | 447 2420 | 3930 2421 | 2476 2422 | 3715 2423 | 7866 2424 | 7804 2425 | 3937 2426 | 6266 2427 | 242 2428 | 7162 2429 | 7586 2430 | 2942 2431 | 7655 2432 | 1038 2433 | 4153 2434 | 5822 2435 | 2449 2436 | 4451 2437 | 4348 2438 | 5136 2439 | 2760 2440 | 6267 2441 | 8081 2442 | 3644 2443 | 1878 2444 | 6834 2445 | 2506 2446 | 4792 2447 | 7532 2448 | 6787 2449 | 5941 2450 | 3248 2451 | 327 2452 | 2022 2453 | 2979 2454 | 1031 2455 | 8126 2456 | 7995 2457 | 8045 2458 | 2843 2459 | 4367 2460 | 2200 2461 | 3446 2462 | 5894 2463 | 1218 2464 | 1374 2465 | 5183 2466 | 399 2467 | 301 2468 | 655 2469 | 6733 2470 | 6299 2471 | 640 2472 | 7674 2473 | 6256 2474 | 6806 2475 | 6894 2476 | 3836 2477 | 6088 2478 | 4598 2479 | 361 2480 | 7101 2481 | 727 2482 | 7071 2483 | 4881 2484 | 2706 2485 | 4326 2486 | 6620 2487 | 367 2488 | 5408 2489 | 4970 2490 | 2439 2491 | 515 2492 | 3845 2493 | 4149 2494 | 2840 2495 | 6421 2496 | 4532 2497 | 4677 2498 | 7605 2499 | 4467 2500 | 5878 2501 | 1347 2502 | 2392 2503 | 6124 2504 | 2404 2505 | 134 2506 | 643 2507 | 3908 2508 | 4278 2509 | 4761 2510 | 7566 2511 | 6148 2512 | 7333 2513 | 1551 2514 | 1057 2515 | 1308 2516 | 2510 2517 | 3382 2518 | 2682 2519 | 234 2520 | 3277 2521 | 1621 2522 | 28 2523 | 4679 2524 | 430 2525 | 3784 2526 | 8125 2527 | 6727 2528 | 1028 2529 | 4183 2530 | 4930 2531 | 891 2532 | 7056 2533 | 485 2534 | 2869 2535 | 3157 2536 | 5458 2537 | 493 2538 | 3289 2539 | 679 2540 | 7316 2541 | 6047 2542 | 3198 2543 | 5222 2544 | 170 2545 | 2863 2546 | 7570 2547 | 7401 2548 | 4651 2549 | 6092 2550 | 6046 2551 | 6196 2552 | 7672 2553 | 1967 2554 | 6686 2555 | 3472 2556 | 3183 2557 | 1771 2558 | 4267 2559 | 5287 2560 | 7374 2561 | 989 2562 | 2918 2563 | 4011 2564 | 1213 2565 | 6903 2566 | 773 2567 | 2265 2568 | 4600 2569 | 3528 2570 | 5798 2571 | 5595 2572 | 4083 2573 | 1087 2574 | 7722 2575 | 5730 2576 | 2150 2577 | 4515 2578 | 4385 2579 | 7358 2580 | 1897 2581 | 132 2582 | 6886 2583 | 5314 2584 | 2665 2585 | 7821 2586 | 4940 2587 | 5317 2588 | 6219 2589 | 5240 2590 | 6650 2591 | 8185 2592 | 7860 2593 | 1108 2594 | 5666 2595 | 2095 2596 | 7711 2597 | 6718 2598 | 7073 2599 | 4427 2600 | 6922 2601 | 561 2602 | 7709 2603 | 5990 2604 | 5711 2605 | 7257 2606 | 6449 2607 | 7028 2608 | 708 2609 | 3291 2610 | 5224 2611 | 6642 2612 | 7689 2613 | 6501 2614 | 4948 2615 | 3941 2616 | 1056 2617 | 6796 2618 | 1462 2619 | 5523 2620 | 7933 2621 | 1580 2622 | 2812 2623 | 3653 2624 | 6585 2625 | 481 2626 | 538 2627 | 2902 2628 | 2919 2629 | 4722 2630 | 2715 2631 | 7808 2632 | 3682 2633 | 1855 2634 | 3372 2635 | 5591 2636 | 2354 2637 | 5899 2638 | 5332 2639 | 4270 2640 | 1504 2641 | 6753 2642 | 7242 2643 | 4964 2644 | 1023 2645 | 4136 2646 | 4387 2647 | 2001 2648 | 4667 2649 | 352 2650 | 5495 2651 | 200 2652 | 3562 2653 | 6474 2654 | 2770 2655 | 4032 2656 | 7529 2657 | 3267 2658 | 4431 2659 | 2861 2660 | 8020 2661 | 5354 2662 | 4447 2663 | 2714 2664 | 8061 2665 | 1342 2666 | 2820 2667 | 2194 2668 | 7098 2669 | 405 2670 | 7760 2671 | 6535 2672 | 774 2673 | 2064 2674 | 7826 2675 | 5454 2676 | 613 2677 | 5258 2678 | 3101 2679 | 8164 2680 | 3283 2681 | 3381 2682 | 389 2683 | 997 2684 | 5274 2685 | 2088 2686 | 6480 2687 | 3848 2688 | 3190 2689 | 35 2690 | 3519 2691 | 3567 2692 | 1247 2693 | 1475 2694 | 7708 2695 | 895 2696 | 5786 2697 | 2263 2698 | 150 2699 | 3321 2700 | 3076 2701 | 3955 2702 | 3305 2703 | 2771 2704 | 412 2705 | 7447 2706 | 3588 2707 | 4438 2708 | 3531 2709 | 6141 2710 | 5494 2711 | 304 2712 | 5663 2713 | 6895 2714 | 6997 2715 | 3399 2716 | 3696 2717 | 1535 2718 | 6500 2719 | 5496 2720 | 3580 2721 | 3693 2722 | 7704 2723 | 7494 2724 | 6506 2725 | 4432 2726 | 4849 2727 | 6001 2728 | 676 2729 | 1101 2730 | 6657 2731 | 6371 2732 | 6084 2733 | 1437 2734 | 3721 2735 | 6599 2736 | 6876 2737 | 4522 2738 | 723 2739 | 2950 2740 | 8194 2741 | 2916 2742 | 78 2743 | 7913 2744 | 2759 2745 | 4375 2746 | 8160 2747 | 7533 2748 | 5608 2749 | 2197 2750 | 5880 2751 | 2035 2752 | 4143 2753 | 545 2754 | 5437 2755 | 5654 2756 | 3900 2757 | 7152 2758 | 7815 2759 | 4068 2760 | 1386 2761 | 2767 2762 | 5816 2763 | 2291 2764 | 6403 2765 | 1759 2766 | 4582 2767 | 7427 2768 | 4580 2769 | 5115 2770 | 961 2771 | 4819 2772 | 1948 2773 | 7703 2774 | 5152 2775 | 348 2776 | 124 2777 | 668 2778 | 956 2779 | 2469 2780 | 698 2781 | 4253 2782 | 2337 2783 | 7717 2784 | 5273 2785 | 303 2786 | 3896 2787 | 3236 2788 | 2536 2789 | 995 2790 | 5304 2791 | 3989 2792 | 7739 2793 | 2519 2794 | 2385 2795 | 5157 2796 | 7473 2797 | 7419 2798 | 6694 2799 | 3436 2800 | 6611 2801 | 3309 2802 | 8026 2803 | 1360 2804 | 3999 2805 | 3963 2806 | 1305 2807 | 8242 2808 | 6542 2809 | 2884 2810 | 5518 2811 | 3233 2812 | 799 2813 | 2481 2814 | 1993 2815 | 1288 2816 | 6171 2817 | 998 2818 | 7360 2819 | 4607 2820 | 69 2821 | 5381 2822 | 7625 2823 | 2301 2824 | 3153 2825 | 3817 2826 | 6577 2827 | 4507 2828 | 6188 2829 | 742 2830 | 4776 2831 | 4955 2832 | 3838 2833 | 2680 2834 | 7774 2835 | 7303 2836 | 5920 2837 | 1356 2838 | 2131 2839 | 1471 2840 | 3468 2841 | 967 2842 | 2464 2843 | 3702 2844 | 3031 2845 | 4546 2846 | 3325 2847 | 358 2848 | 4900 2849 | 360 2850 | 2847 2851 | 969 2852 | 2605 2853 | 3642 2854 | 7720 2855 | 1730 2856 | 3810 2857 | 1270 2858 | 1690 2859 | 7534 2860 | 5229 2861 | 6646 2862 | 6607 2863 | 4228 2864 | 8124 2865 | 3635 2866 | 6700 2867 | 1648 2868 | 4237 2869 | 7298 2870 | 2696 2871 | 5749 2872 | 4934 2873 | 7495 2874 | 7930 2875 | 378 2876 | 2381 2877 | 2551 2878 | 647 2879 | 8232 2880 | 1832 2881 | 2117 2882 | 817 2883 | 4196 2884 | 4663 2885 | 7604 2886 | 1723 2887 | 1660 2888 | 6473 2889 | 1391 2890 | 8249 2891 | 4108 2892 | 7832 2893 | 3457 2894 | 5175 2895 | 6771 2896 | 7428 2897 | 2699 2898 | 5502 2899 | 347 2900 | 620 2901 | 6904 2902 | 2258 2903 | 2446 2904 | 2261 2905 | 6945 2906 | 7687 2907 | 269 2908 | 7416 2909 | 4477 2910 | 4490 2911 | 3004 2912 | 4022 2913 | 7086 2914 | 2061 2915 | 2600 2916 | 4692 2917 | 4463 2918 | 8193 2919 | 2454 2920 | 8048 2921 | 5964 2922 | 8259 2923 | 7802 2924 | 6970 2925 | 3182 2926 | 720 2927 | 3677 2928 | 4310 2929 | 2012 2930 | 2586 2931 | 978 2932 | 8243 2933 | 5580 2934 | 8159 2935 | 4380 2936 | 5573 2937 | 3450 2938 | 4439 2939 | 7041 2940 | 1291 2941 | 4244 2942 | 828 2943 | 3759 2944 | 4361 2945 | 1952 2946 | 2910 2947 | 7743 2948 | 6432 2949 | 3935 2950 | 5436 2951 | 5060 2952 | 7748 2953 | 6680 2954 | 7639 2955 | 4644 2956 | 5739 2957 | 5644 2958 | 1098 2959 | 3231 2960 | 1754 2961 | 3130 2962 | 1317 2963 | 1596 2964 | 3980 2965 | 5566 2966 | 5330 2967 | 3669 2968 | 3925 2969 | 1865 2970 | 3787 2971 | 2105 2972 | 1925 2973 | 8145 2974 | 4705 2975 | 3986 2976 | 1334 2977 | 2246 2978 | 5037 2979 | 1706 2980 | 5153 2981 | 6803 2982 | 7951 2983 | 6096 2984 | 5309 2985 | 6375 2986 | 4211 2987 | 7487 2988 | 8093 2989 | 1697 2990 | 3579 2991 | 3331 2992 | 517 2993 | 7051 2994 | 7543 2995 | 7852 2996 | 816 2997 | 7576 2998 | 3242 2999 | 1963 3000 | 5393 3001 | 5800 3002 | 706 3003 | 4413 3004 | 5362 3005 | 3324 3006 | 7688 3007 | 7747 3008 | 4321 3009 | 4051 3010 | 3079 3011 | 4347 3012 | 6634 3013 | 6176 3014 | 5718 3015 | 5326 3016 | 3783 3017 | 2015 3018 | 8184 3019 | 6458 3020 | 6126 3021 | 4445 3022 | 1351 3023 | 5620 3024 | 814 3025 | 7608 3026 | 6885 3027 | 6980 3028 | 4290 3029 | 4901 3030 | 690 3031 | 3812 3032 | 3778 3033 | 2728 3034 | 1012 3035 | 7276 3036 | 2669 3037 | 6180 3038 | 5022 3039 | 6519 3040 | 5011 3041 | 1369 3042 | 5746 3043 | 2350 3044 | 2688 3045 | 6636 3046 | 3665 3047 | 3211 3048 | 4381 3049 | 3138 3050 | 7955 3051 | 6514 3052 | 4165 3053 | 1784 3054 | 3698 3055 | 6977 3056 | 3627 3057 | 5460 3058 | 3423 3059 | 5019 3060 | 5298 3061 | 5926 3062 | 3451 3063 | 1923 3064 | 118 3065 | 2618 3066 | 3302 3067 | 6422 3068 | 393 3069 | 1679 3070 | 3463 3071 | 4798 3072 | 7882 3073 | 5107 3074 | 6548 3075 | 375 3076 | 5694 3077 | 5923 3078 | 7814 3079 | 2972 3080 | 1931 3081 | 5398 3082 | 4610 3083 | 3310 3084 | 3245 3085 | 1080 3086 | 6294 3087 | 7256 3088 | 5145 3089 | 2090 3090 | 5333 3091 | 7039 3092 | 571 3093 | 3946 3094 | 1548 3095 | 7439 3096 | 3785 3097 | 2356 3098 | 7392 3099 | 3875 3100 | 4808 3101 | 2757 3102 | 3631 3103 | 2179 3104 | 2070 3105 | 3970 3106 | 5763 3107 | 5697 3108 | 5522 3109 | 1240 3110 | 7213 3111 | 8226 3112 | 3573 3113 | 2955 3114 | 340 3115 | 4265 3116 | 4803 3117 | 4712 3118 | 1353 3119 | 5773 3120 | 5378 3121 | 5062 3122 | 6920 3123 | 3393 3124 | 4788 3125 | 4174 3126 | 3618 3127 | 5184 3128 | 6502 3129 | 152 3130 | 4936 3131 | 89 3132 | 6967 3133 | 2024 3134 | 7194 3135 | 6802 3136 | 2689 3137 | 5701 3138 | 4597 3139 | 2167 3140 | 6731 3141 | 3691 3142 | 2793 3143 | 7153 3144 | 5182 3145 | 7331 3146 | 1440 3147 | 161 3148 | 7261 3149 | 658 3150 | 394 3151 | 386 3152 | 472 3153 | 566 3154 | 5884 3155 | 4983 3156 | 7350 3157 | 2443 3158 | 2566 3159 | 3139 3160 | 7175 3161 | 6257 3162 | 3200 3163 | 8251 3164 | 3005 3165 | 3945 3166 | 465 3167 | 8036 3168 | 1216 3169 | 12 3170 | 8058 3171 | 5280 3172 | 5163 3173 | 7407 3174 | 1242 3175 | 4825 3176 | 6206 3177 | 4175 3178 | 3706 3179 | 7340 3180 | 5254 3181 | 8010 3182 | 1224 3183 | 1091 3184 | 277 3185 | 1998 3186 | 1913 3187 | 2609 3188 | 3570 3189 | 6792 3190 | 4674 3191 | 3411 3192 | 1278 3193 | 1125 3194 | 2023 3195 | 4084 3196 | 7131 3197 | 5076 3198 | 3568 3199 | 4847 3200 | 756 3201 | 2935 3202 | 1536 3203 | 696 3204 | 962 3205 | 2676 3206 | 2342 3207 | 767 3208 | 6149 3209 | 419 3210 | 954 3211 | 5758 3212 | 6569 3213 | 7351 3214 | 525 3215 | 7710 3216 | 1408 3217 | 1584 3218 | 6651 3219 | 7512 3220 | 7372 3221 | 750 3222 | 7782 3223 | 1814 3224 | 1912 3225 | 7916 3226 | 1725 3227 | 6520 3228 | 3095 3229 | 2975 3230 | 7053 3231 | 4213 3232 | 7273 3233 | 3885 3234 | 743 3235 | 7799 3236 | 5931 3237 | 6409 3238 | 7840 3239 | 6181 3240 | 6120 3241 | 3120 3242 | 5971 3243 | 7973 3244 | 4057 3245 | 94 3246 | 5021 3247 | 2049 3248 | 1950 3249 | 737 3250 | 5044 3251 | 5203 3252 | 4690 3253 | 6493 3254 | 1111 3255 | 7205 3256 | 111 3257 | 6683 3258 | 721 3259 | 2176 3260 | 8018 3261 | 1926 3262 | 6099 3263 | 963 3264 | 808 3265 | 4017 3266 | 3071 3267 | 5927 3268 | 2486 3269 | 2887 3270 | 5946 3271 | 7099 3272 | 1014 3273 | 1977 3274 | 5707 3275 | 5266 3276 | 6908 3277 | 4127 3278 | 7612 3279 | 3674 3280 | 7959 3281 | 5293 3282 | 6075 3283 | 6187 3284 | 2761 3285 | 5957 3286 | 2808 3287 | 6252 3288 | 2269 3289 | 4163 3290 | 4111 3291 | 5031 3292 | 4576 3293 | 1325 3294 | 1350 3295 | 1552 3296 | 2166 3297 | 7402 3298 | 6380 3299 | 6633 3300 | 3913 3301 | 5772 3302 | 7304 3303 | 6163 3304 | 1399 3305 | 1668 3306 | 3330 3307 | 5755 3308 | 1129 3309 | 3444 3310 | 127 3311 | 2098 3312 | 5176 3313 | 3003 3314 | 7379 3315 | 2399 3316 | 409 3317 | 3252 3318 | 8220 3319 | 6555 3320 | 6518 3321 | 1974 3322 | 7459 3323 | 849 3324 | 4550 3325 | 6643 3326 | 5167 3327 | 3261 3328 | 2355 3329 | 3410 3330 | 6017 3331 | 3998 3332 | 6627 3333 | 6243 3334 | 1178 3335 | 7149 3336 | 7411 3337 | 7700 3338 | 2593 3339 | 4504 3340 | 6255 3341 | 1672 3342 | 861 3343 | 975 3344 | 2186 3345 | 6778 3346 | 1695 3347 | 6056 3348 | 4289 3349 | 5357 3350 | 6029 3351 | 2569 3352 | 3 3353 | 7465 3354 | 2091 3355 | 775 3356 | 3670 3357 | 3605 3358 | 722 3359 | 6661 3360 | 4398 3361 | 2127 3362 | 2362 3363 | 1516 3364 | 5661 3365 | 4700 3366 | 6966 3367 | 1709 3368 | 5993 3369 | 4552 3370 | 4498 3371 | 229 3372 | 1074 3373 | 5788 3374 | 7267 3375 | 4087 3376 | 5893 3377 | 5827 3378 | 7193 3379 | 7546 3380 | 4629 3381 | 4164 3382 | 4358 3383 | 8239 3384 | 1277 3385 | 3196 3386 | 5124 3387 | 1916 3388 | 6800 3389 | 3919 3390 | 4723 3391 | 3686 3392 | 5279 3393 | 4008 3394 | 1894 3395 | 5066 3396 | 5766 3397 | 2489 3398 | 4151 3399 | 346 3400 | 5230 3401 | 4820 3402 | 4613 3403 | 5348 3404 | 3495 3405 | 2458 3406 | 4670 3407 | 5316 3408 | 6813 3409 | 6205 3410 | 356 3411 | 1482 3412 | 7787 3413 | 528 3414 | 1466 3415 | 4833 3416 | 4364 3417 | 5342 3418 | 5435 3419 | 209 3420 | 583 3421 | 4067 3422 | 3889 3423 | 7790 3424 | 2222 3425 | 8253 3426 | 1094 3427 | 955 3428 | 2369 3429 | 7607 3430 | 2191 3431 | 683 3432 | 2917 3433 | 3914 3434 | 2780 3435 | 5141 3436 | 7925 3437 | 1076 3438 | 819 3439 | 5104 3440 | 5744 3441 | 6609 3442 | 56 3443 | 5465 3444 | 6994 3445 | 4277 3446 | 4750 3447 | 3342 3448 | 1500 3449 | 3020 3450 | 6668 3451 | 8032 3452 | 2523 3453 | 7287 3454 | 7279 3455 | 5508 3456 | 8182 3457 | 600 3458 | 2926 3459 | 494 3460 | 4368 3461 | 2567 3462 | 1823 3463 | 5315 3464 | 6777 3465 | 382 3466 | 1229 3467 | 4754 3468 | 488 3469 | 964 3470 | 6003 3471 | 2202 3472 | 1581 3473 | 1615 3474 | 2539 3475 | 6208 3476 | 5421 3477 | 6087 3478 | 3415 3479 | 6677 3480 | 5327 3481 | 489 3482 | 1543 3483 | 715 3484 | 5067 3485 | 6652 3486 | 3131 3487 | 8057 3488 | 4227 3489 | 4987 3490 | 5698 3491 | 223 3492 | 3723 3493 | 5649 3494 | 5367 3495 | 7931 3496 | 1577 3497 | 1904 3498 | 7733 3499 | 6095 3500 | 840 3501 | 5455 3502 | 4579 3503 | 7490 3504 | 7390 3505 | 1749 3506 | 7851 3507 | 7996 3508 | 5576 3509 | 3661 3510 | 1807 3511 | 2298 3512 | 2856 3513 | 4614 3514 | 7136 3515 | 6618 3516 | 250 3517 | 5997 3518 | 397 3519 | 5376 3520 | 2245 3521 | 6020 3522 | 2219 3523 | 6178 3524 | 7453 3525 | 5797 3526 | 1379 3527 | 262 3528 | 1088 3529 | 5087 3530 | 4818 3531 | 6162 3532 | 450 3533 | 5507 3534 | 4952 3535 | 424 3536 | 8107 3537 | 1407 3538 | 3803 3539 | 3249 3540 | 7409 3541 | 2670 3542 | 7471 3543 | 3978 3544 | 354 3545 | 3306 3546 | 3730 3547 | 5069 3548 | 1838 3549 | 1307 3550 | 7024 3551 | 7248 3552 | 1079 3553 | 1003 3554 | 7665 3555 | 6469 3556 | 1225 3557 | 6438 3558 | 4518 3559 | 2931 3560 | 6645 3561 | 6174 3562 | 5338 3563 | 7562 3564 | 4852 3565 | 1819 3566 | 5590 3567 | 3790 3568 | 1116 3569 | 4751 3570 | 598 3571 | 7320 3572 | 1554 3573 | 945 3574 | 3553 3575 | 2286 3576 | 32 3577 | 7645 3578 | 2631 3579 | 4316 3580 | 7935 3581 | 5713 3582 | 3048 3583 | 7778 3584 | 8115 3585 | 6539 3586 | 2490 3587 | 3997 3588 | 5404 3589 | 1900 3590 | 6217 3591 | 1358 3592 | 5196 3593 | 2208 3594 | 976 3595 | 2783 3596 | 204 3597 | 1298 3598 | 3583 3599 | 8062 3600 | 125 3601 | 3320 3602 | 785 3603 | 2462 3604 | 4521 3605 | 4746 3606 | 7167 3607 | 3827 3608 | 838 3609 | 5915 3610 | 5204 3611 | 175 3612 | 3590 3613 | 57 3614 | 6145 3615 | 5811 3616 | 876 3617 | 5468 3618 | 7381 3619 | 6339 3620 | 4105 3621 | 6423 3622 | 449 3623 | 2893 3624 | 4448 3625 | 4998 3626 | 6355 3627 | 4061 3628 | 5602 3629 | 3416 3630 | 5891 3631 | 3070 3632 | 590 3633 | 911 3634 | 2297 3635 | 260 3636 | 3155 3637 | 314 3638 | 3522 3639 | 5099 3640 | 1497 3641 | 5185 3642 | 1788 3643 | 7847 3644 | 5742 3645 | 5400 3646 | 7365 3647 | 3402 3648 | 7129 3649 | 3692 3650 | 2606 3651 | 3458 3652 | 1813 3653 | 6485 3654 | 3683 3655 | 4974 3656 | 5554 3657 | 1958 3658 | 1726 3659 | 8009 3660 | 5114 3661 | 7757 3662 | 5676 3663 | 3620 3664 | 2413 3665 | 4034 3666 | 4261 3667 | 7716 3668 | 7943 3669 | 1772 3670 | 7062 3671 | 912 3672 | 8086 3673 | 2868 3674 | 4202 3675 | 3837 3676 | 5366 3677 | 7260 3678 | 3204 3679 | 3675 3680 | 4026 3681 | 7384 3682 | 3860 3683 | 2557 3684 | 7348 3685 | 283 3686 | 7738 3687 | 8168 3688 | 157 3689 | 4892 3690 | 6847 3691 | 5842 3692 | 1105 3693 | 3352 3694 | 184 3695 | 4339 3696 | 897 3697 | 4342 3698 | 462 3699 | 2991 3700 | 7347 3701 | 3794 3702 | 6150 3703 | 2885 3704 | 5658 3705 | 5414 3706 | 1261 3707 | 6701 3708 | 3380 3709 | 2310 3710 | 789 3711 | 5859 3712 | 4395 3713 | 527 3714 | 4915 3715 | 2079 3716 | 7027 3717 | 6810 3718 | 6078 3719 | 6516 3720 | 6491 3721 | 7275 3722 | 4071 3723 | 418 3724 | 1157 3725 | 4966 3726 | 7885 3727 | 6259 3728 | 6830 3729 | 1799 3730 | 2348 3731 | 1924 3732 | 7589 3733 | 5156 3734 | 6605 3735 | 1273 3736 | 5618 3737 | 2048 3738 | 2612 3739 | 7611 3740 | 8134 3741 | 6664 3742 | 7189 3743 | 4372 3744 | 7932 3745 | 1973 3746 | 3548 3747 | 3502 3748 | 5947 3749 | 506 3750 | 4517 3751 | 7102 3752 | 3483 3753 | 3422 3754 | 3758 3755 | 5513 3756 | 2798 3757 | 614 3758 | 5912 3759 | 2538 3760 | 7341 3761 | 4129 3762 | 5972 3763 | 1780 3764 | 7834 3765 | 1607 3766 | 3813 3767 | 3727 3768 | 6214 3769 | 1745 3770 | 286 3771 | 8201 3772 | 6464 3773 | 1352 3774 | 2379 3775 | 2247 3776 | 4914 3777 | 520 3778 | 6022 3779 | 7228 3780 | 1741 3781 | 579 3782 | 2107 3783 | 1617 3784 | 4882 3785 | 6974 3786 | 5350 3787 | 8230 3788 | 335 3789 | 2029 3790 | 19 3791 | 2638 3792 | 2316 3793 | 3098 3794 | 6317 3795 | 6337 3796 | 6676 3797 | 2928 3798 | 5873 3799 | 7835 3800 | 6408 3801 | 7050 3802 | 6230 3803 | 2218 3804 | 7503 3805 | 745 3806 | 2253 3807 | 3909 3808 | 5422 3809 | 1153 3810 | 2964 3811 | 2488 3812 | 7623 3813 | 7455 3814 | 3625 3815 | 1473 3816 | 769 3817 | 1920 3818 | 5446 3819 | 359 3820 | 802 3821 | 6744 3822 | 2914 3823 | 2154 3824 | 4688 3825 | 7500 3826 | 299 3827 | 3234 3828 | 251 3829 | 7475 3830 | 4391 3831 | 3034 3832 | 235 3833 | 6153 3834 | 4110 3835 | 1393 3836 | 652 3837 | 5143 3838 | 1363 3839 | 2407 3840 | 3078 3841 | 1238 3842 | 1542 3843 | 2871 3844 | 3494 3845 | 3571 3846 | 376 3847 | 1109 3848 | 2790 3849 | 7325 3850 | 4464 3851 | 5659 3852 | 7900 3853 | 145 3854 | 5353 3855 | 7641 3856 | 7555 3857 | 4028 3858 | 3256 3859 | 5477 3860 | 1664 3861 | 1805 3862 | 1877 3863 | 5197 3864 | 3594 3865 | 2113 3866 | 5173 3867 | 2352 3868 | 2692 3869 | 3163 3870 | 2623 3871 | 2391 3872 | 694 3873 | 406 3874 | 2335 3875 | 6265 3876 | 2891 3877 | 7307 3878 | 4899 3879 | 1984 3880 | 2225 3881 | 4484 3882 | 5178 3883 | 6578 3884 | 1573 3885 | 3347 3886 | 3762 3887 | 2878 3888 | 992 3889 | 4539 3890 | 1160 3891 | 5704 3892 | 2043 3893 | 4867 3894 | 5917 3895 | 4037 3896 | 6846 3897 | 3413 3898 | 2507 3899 | 7237 3900 | 5251 3901 | 1844 3902 | 5161 3903 | 2911 3904 | 4297 3905 | 503 3906 | 1701 3907 | 5839 3908 | 3290 3909 | 2845 3910 | 1995 3911 | 5757 3912 | 2726 3913 | 2584 3914 | 1508 3915 | 7186 3916 | 190 3917 | 3760 3918 | 2646 3919 | 2125 3920 | 627 3921 | 427 3922 | 3958 3923 | 4193 3924 | 4366 3925 | 5780 3926 | 7786 3927 | 4510 3928 | 3663 3929 | 5961 3930 | 2142 3931 | 2801 3932 | 1336 3933 | 2115 3934 | 7394 3935 | 1689 3936 | 7822 3937 | 1302 3938 | 1735 3939 | 8110 3940 | 7322 3941 | 6835 3942 | 5347 3943 | 4220 3944 | 2206 3945 | 6850 3946 | 2908 3947 | 3024 3948 | 1711 3949 | 4878 3950 | 8025 3951 | 7296 3952 | 1785 3953 | 4122 3954 | 4569 3955 | 5524 3956 | 4605 3957 | 4081 3958 | 2581 3959 | 5117 3960 | 3082 3961 | 2934 3962 | 5943 3963 | 1794 3964 | 4639 3965 | 8142 3966 | 4837 3967 | 1716 3968 | 6935 3969 | 6801 3970 | 2069 3971 | 1675 3972 | 2457 3973 | 3191 3974 | 218 3975 | 1789 3976 | 202 3977 | 2657 3978 | 1340 3979 | 4053 3980 | 7014 3981 | 4717 3982 | 4123 3983 | 1282 3984 | 46 3985 | 4764 3986 | 1547 3987 | 3103 3988 | 7564 3989 | 5294 3990 | 2466 3991 | 1656 3992 | 1976 3993 | 4805 3994 | 3646 3995 | 2656 3996 | 4547 3997 | 371 3998 | 5653 3999 | 3834 4000 | 836 4001 | 3173 4002 | 2101 4003 | 7585 4004 | 2951 4005 | 2995 4006 | 7412 4007 | 2775 4008 | 4535 4009 | 665 4010 | 3763 4011 | 4200 4012 | 3022 4013 | 243 4014 | 3709 4015 | 786 4016 | 3270 4017 | 2156 4018 | 6741 4019 | 8209 4020 | 6000 4021 | 2867 4022 | 2244 4023 | 7618 4024 | 3246 4025 | 907 4026 | 5155 4027 | 3891 4028 | 6760 4029 | 7224 4030 | 1854 4031 | 265 4032 | 4560 4033 | 1434 4034 | 4638 4035 | 7795 4036 | 5195 4037 | 490 4038 | 206 4039 | 1449 4040 | 1394 4041 | 5930 4042 | 3497 4043 | 6768 4044 | 5548 4045 | 8156 4046 | 2346 4047 | 7055 4048 | 2425 4049 | 4190 4050 | 1085 4051 | 1246 4052 | 5882 4053 | 2932 4054 | 1851 4055 | 3734 4056 | 5501 4057 | 4250 4058 | 3351 4059 | 4293 4060 | 4020 4061 | 368 4062 | 7130 4063 | 4635 4064 | 5490 4065 | 3162 4066 | 3964 4067 | 5974 4068 | 6013 4069 | 2473 4070 | 6524 4071 | 8169 4072 | 2993 4073 | 2172 4074 | 3313 4075 | 5575 4076 | 4799 4077 | 1199 4078 | 3176 4079 | 5872 4080 | 4009 4081 | 4030 4082 | 3766 4083 | 7188 4084 | 4315 4085 | 1441 4086 | 7227 4087 | 7883 4088 | 1444 4089 | 4839 4090 | 2719 4091 | 4709 4092 | 7332 4093 | 3559 4094 | 5629 4095 | 187 4096 | 1435 4097 | 2762 4098 | 2232 4099 | 5125 4100 | 1344 4101 | 2256 4102 | 1997 4103 | 5149 4104 | 4555 4105 | 3212 4106 | 5322 4107 | 254 4108 | 1715 4109 | 1652 4110 | 7615 4111 | 2827 4112 | 4991 4113 | 892 4114 | 5053 4115 | 7221 4116 | 6327 4117 | 2524 4118 | 7550 4119 | 1040 4120 | 5365 4121 | 7926 4122 | 7277 4123 | 2344 4124 | 1322 4125 | 5440 4126 | 6567 4127 | 7968 4128 | 4291 4129 | 4891 4130 | 1665 4131 | 6394 4132 | 7078 4133 | 4441 4134 | 1829 4135 | 3527 4136 | 144 4137 | 2953 4138 | 1481 4139 | 7602 4140 | 5464 4141 | 5081 4142 | 6532 4143 | 1323 4144 | 1603 4145 | 3336 4146 | 2374 4147 | 6877 4148 | 1254 4149 | 1843 4150 | 7165 4151 | 253 4152 | 6780 4153 | 3043 4154 | 3052 4155 | 1579 4156 | 7622 4157 | 4429 4158 | 1930 4159 | 4589 4160 | 6563 4161 | 1619 4162 | 6385 4163 | 7230 4164 | 1525 4165 | 4844 4166 | 5775 4167 | 5960 4168 | 7560 4169 | 1300 4170 | 678 4171 | 3407 4172 | 7422 4173 | 4309 4174 | 5799 4175 | 2668 4176 | 986 4177 | 1433 4178 | 6025 4179 | 1477 4180 | 2686 4181 | 5699 4182 | 7328 4183 | 7042 4184 | 463 4185 | 831 4186 | 2860 4187 | 6625 4188 | 8248 4189 | 7573 4190 | 5023 4191 | 2465 4192 | 3439 4193 | 7756 4194 | 5194 4195 | 2920 4196 | 1287 4197 | 3241 4198 | 5801 4199 | 7147 4200 | 2388 4201 | 6790 4202 | 2136 4203 | 3606 4204 | 4283 4205 | 2599 4206 | 4137 4207 | 4921 4208 | 3973 4209 | 483 4210 | 2137 4211 | 7632 4212 | 4790 4213 | 4681 4214 | 3308 4215 | 7141 4216 | 7766 4217 | 5853 4218 | 2831 4219 | 1468 4220 | 2718 4221 | 4714 4222 | 4827 4223 | 128 4224 | 581 4225 | 5903 4226 | 6386 4227 | 7001 4228 | 3899 4229 | 501 4230 | 3884 4231 | 3285 4232 | 6640 4233 | 6448 4234 | 7669 4235 | 4724 4236 | 7891 4237 | 4466 4238 | 2129 4239 | 1249 4240 | 5821 4241 | 4606 4242 | 2262 4243 | 3221 4244 | 4112 4245 | 6497 4246 | 5883 4247 | 178 4248 | 835 4249 | 2651 4250 | 563 4251 | 7300 4252 | 8075 4253 | 7983 4254 | 5705 4255 | 364 4256 | 719 4257 | 4903 4258 | 5628 4259 | 2498 4260 | 2130 4261 | 3708 4262 | 6368 4263 | 8117 4264 | 7921 4265 | 923 4266 | 681 4267 | 5984 4268 | 480 4269 | 7225 4270 | 3056 4271 | 7481 4272 | 1555 4273 | 1505 4274 | 5192 4275 | 1036 4276 | 8172 4277 | 2858 4278 | 5445 4279 | 3764 4280 | 4351 4281 | 1182 4282 | 6295 4283 | 6826 4284 | 6692 4285 | 6361 4286 | 5026 4287 | 5805 4288 | 7813 4289 | 2549 4290 | 4752 4291 | 6082 4292 | 1165 4293 | 1004 4294 | 2317 4295 | 5955 4296 | 4269 4297 | 7535 4298 | 1860 4299 | 4809 4300 | 2736 4301 | 7681 4302 | 8204 4303 | 846 4304 | 7177 4305 | 3225 4306 | 3045 4307 | 4730 4308 | 1289 4309 | 2284 4310 | 1412 4311 | 6335 4312 | 607 4313 | 4816 4314 | 5519 4315 | 4345 4316 | 1445 4317 | 4653 4318 | 1944 4319 | 827 4320 | 7181 4321 | 6114 4322 | 6992 4323 | 6776 4324 | 2923 4325 | 2855 4326 | 6900 4327 | 2296 4328 | 4622 4329 | 6433 4330 | 357 4331 | 473 4332 | 6836 4333 | 1020 4334 | 257 4335 | 8003 4336 | 404 4337 | 1618 4338 | 1737 4339 | 5267 4340 | 3216 4341 | 5193 4342 | 2633 4343 | 870 4344 | 1316 4345 | 2661 4346 | 4739 4347 | 3595 4348 | 6410 4349 | 5233 4350 | 1226 4351 | 123 4352 | 5963 4353 | 3405 4354 | 7120 4355 | 1450 4356 | 7969 4357 | 1928 4358 | 423 4359 | 6857 4360 | 2190 4361 | 8111 4362 | 5380 4363 | 6932 4364 | 5071 4365 | 3775 4366 | 4478 4367 | 5762 4368 | 7904 4369 | 5481 4370 | 2292 4371 | 6356 4372 | 5032 4373 | 2393 4374 | 2624 4375 | 7522 4376 | 7683 4377 | 5289 4378 | 4047 4379 | 3498 4380 | 1388 4381 | 4908 4382 | 3565 4383 | 6446 4384 | 601 4385 | 6937 4386 | 6223 4387 | 3156 4388 | 3292 4389 | 3038 4390 | 5423 4391 | 7059 4392 | 2786 4393 | 4212 4394 | 4734 4395 | 2377 4396 | 3623 4397 | 829 4398 | 7952 4399 | 3673 4400 | 273 4401 | 2480 4402 | 4503 4403 | 4134 4404 | 5005 4405 | 1030 4406 | 5642 4407 | 1446 4408 | 3725 4409 | 3638 4410 | 3772 4411 | 7837 4412 | 2249 4413 | 2160 4414 | 5679 4415 | 3470 4416 | 2587 4417 | 6204 4418 | 7581 4419 | 5965 4420 | 5850 4421 | 6139 4422 | 6746 4423 | 6582 4424 | 1142 4425 | 4271 4426 | 319 4427 | 801 4428 | 616 4429 | 2146 4430 | 567 4431 | 3641 4432 | 6658 4433 | 4474 4434 | 7579 4435 | 534 4436 | 22 4437 | 7627 4438 | 365 4439 | 3226 4440 | 8071 4441 | 7482 4442 | 8011 4443 | 519 4444 | 1141 4445 | 1748 4446 | 2572 4447 | 2373 4448 | 2865 4449 | 2588 4450 | 6845 4451 | 729 4452 | 276 4453 | 4480 4454 | 3476 4455 | 2937 4456 | 195 4457 | 439 4458 | 5934 4459 | 4770 4460 | 5199 4461 | 4698 4462 | 1498 4463 | 7393 4464 | 3240 4465 | 1264 4466 | 6249 4467 | 1024 4468 | 844 4469 | 3556 4470 | 75 4471 | 4180 4472 | 3664 4473 | 542 4474 | 4617 4475 | 2478 4476 | 6505 4477 | 3365 4478 | 4636 4479 | 4199 4480 | 2470 4481 | 51 4482 | 782 4483 | 2750 4484 | 7684 4485 | 4928 4486 | 1071 4487 | 275 4488 | 4584 4489 | 2594 4490 | 2667 4491 | 6629 4492 | 171 4493 | 4390 4494 | 4601 4495 | 5802 4496 | 5262 4497 | 5336 4498 | 1796 4499 | 4906 4500 | 4929 4501 | 7640 4502 | 6898 4503 | 1631 4504 | 4402 4505 | 6207 4506 | 1061 4507 | 83 4508 | 153 4509 | 582 4510 | 1852 4511 | 1010 4512 | 3417 4513 | 4010 4514 | 2621 4515 | 5559 4516 | 3894 4517 | 5795 4518 | 3012 4519 | 7406 4520 | 518 4521 | 7457 4522 | 526 4523 | 4514 4524 | 2654 4525 | 733 4526 | 7430 4527 | 5012 4528 | 6844 4529 | 1524 4530 | 5751 4531 | 5375 4532 | 2830 4533 | 7246 4534 | 1102 4535 | 7588 4536 | 10 4537 | 848 4538 | 543 4539 | 4554 4540 | 468 4541 | 2517 4542 | 4963 4543 | 5300 4544 | 6303 4545 | 2224 4546 | 5470 4547 | 5600 4548 | 1355 4549 | 3218 4550 | 4642 4551 | 3871 4552 | 2441 4553 | 2616 4554 | 5721 4555 | 4305 4556 | 1981 4557 | 3993 4558 | 4125 4559 | 5100 4560 | 4469 4561 | 2505 4562 | 29 4563 | 3068 4564 | 5296 4565 | 7877 4566 | 8213 4567 | 4214 4568 | 4779 4569 | 5631 4570 | 398 4571 | 4159 4572 | 654 4573 | 2168 4574 | 3584 4575 | 8152 4576 | 1506 4577 | 5073 4578 | 6031 4579 | 497 4580 | 999 4581 | 529 4582 | 6482 4583 | 6690 4584 | 5734 4585 | 3011 4586 | 1840 4587 | 2598 4588 | 4170 4589 | 7485 4590 | 1431 4591 | 4694 4592 | 53 4593 | 7323 4594 | 6300 4595 | 6233 4596 | 7021 4597 | 7984 4598 | 7876 4599 | 7791 4600 | 1364 4601 | 5186 4602 | 2589 4603 | 5257 4604 | 4369 4605 | 2266 4606 | 7043 4607 | 674 4608 | 4287 4609 | 1362 4610 | 1574 4611 | 531 4612 | 3947 4613 | 5597 4614 | 7095 4615 | 3318 4616 | 8042 4617 | 2360 4618 | 6543 4619 | 4548 4620 | 2982 4621 | 575 4622 | 1837 4623 | 7334 4624 | 86 4625 | 5992 4626 | 5004 4627 | 131 4628 | 7593 4629 | 4759 4630 | 7917 4631 | 6396 4632 | 6859 4633 | 1148 4634 | 6889 4635 | 1766 4636 | 3905 4637 | 6979 4638 | 4459 4639 | 5101 4640 | 8162 4641 | 2738 4642 | 2287 4643 | 3239 4644 | 3818 4645 | 3826 4646 | 2212 4647 | 177 4648 | 5177 4649 | 6853 4650 | 6954 4651 | 5810 4652 | 4239 4653 | 5416 4654 | 2772 4655 | 2889 4656 | 8024 4657 | 1318 4658 | 2248 4659 | 410 4660 | 6183 4661 | 381 4662 | 7285 4663 | 7262 4664 | 4971 4665 | 1713 4666 | 922 4667 | 8254 4668 | 4041 4669 | 4953 4670 | 1011 4671 | 6211 4672 | 3735 4673 | 3543 4674 | 6720 4675 | 1097 4676 | 5714 4677 | 5320 4678 | 748 4679 | 1114 4680 | 4758 4681 | 4838 4682 | 7547 4683 | 810 4684 | 7063 4685 | 2564 4686 | 6296 4687 | 6880 4688 | 2434 4689 | 1966 4690 | 4341 4691 | 4161 4692 | 965 4693 | 3388 4694 | 1659 4695 | 6570 4696 | 7941 4697 | 738 4698 | 1465 4699 | 3122 4700 | 3337 4701 | 3266 4702 | 7853 4703 | 374 4704 | 442 4705 | 6312 4706 | 7366 4707 | 5225 4708 | 3607 4709 | 5717 4710 | 4461 4711 | 744 4712 | 1017 4713 | 6399 4714 | 2632 4715 | 1601 4716 | 7353 4717 | 6823 4718 | 3149 4719 | 4449 4720 | 1268 4721 | 3461 4722 | 93 4723 | 4302 4724 | 4301 4725 | 3159 4726 | 6103 4727 | 4704 4728 | 7871 4729 | 2877 4730 | 1613 4731 | 3942 4732 | 6134 4733 | 847 4734 | 6929 4735 | 1231 4736 | 2796 4737 | 3398 4738 | 6077 4739 | 3739 4740 | 6086 4741 | 199 4742 | 8163 4743 | 5785 4744 | 8175 4745 | 4988 4746 | 5284 4747 | 7114 4748 | 4640 4749 | 114 4750 | 1529 4751 | 6261 4752 | 7321 4753 | 1223 4754 | 5944 4755 | 2540 4756 | 4373 4757 | 226 4758 | 3746 4759 | 6278 4760 | 6011 4761 | 4719 4762 | 7785 4763 | 5368 4764 | 6782 4765 | 6104 4766 | 1058 4767 | 6015 4768 | 7355 4769 | 7140 4770 | 5646 4771 | 6872 4772 | 853 4773 | 928 4774 | 7723 4775 | 903 4776 | 3013 4777 | 4131 4778 | 5150 4779 | 1186 4780 | 185 4781 | 5102 4782 | 6947 4783 | 8 4784 | 5476 4785 | 7725 4786 | 5670 4787 | 2037 4788 | 2952 4789 | 3800 4790 | 6440 4791 | 824 4792 | 3136 4793 | 3296 4794 | 5681 4795 | 805 4796 | 3134 4797 | 2178 4798 | 8266 4799 | 6336 4800 | 5862 4801 | 6592 4802 | 2568 4803 | 996 4804 | 1194 4805 | 2429 4806 | 477 4807 | 6224 4808 | 4846 4809 | 1628 4810 | 287 4811 | 3936 4812 | 3014 4813 | 5346 4814 | 5127 4815 | 5285 4816 | 2674 4817 | 811 4818 | 4624 4819 | 4599 4820 | 864 4821 | 2353 4822 | 777 4823 | 4568 4824 | 2782 4825 | 2386 4826 | 4167 4827 | 2482 4828 | 2271 4829 | 2862 4830 | 6226 4831 | 74 4832 | 1359 4833 | 6973 4834 | 8028 4835 | 632 4836 | 2580 4837 | 6764 4838 | 755 4839 | 1404 4840 | 5918 4841 | 4643 4842 | 4397 4843 | 6961 4844 | 4318 4845 | 7807 4846 | 5272 4847 | 3438 4848 | 4505 4849 | 5340 4850 | 5394 4851 | 6891 4852 | 1032 4853 | 3400 4854 | 7060 4855 | 4408 4856 | 2754 4857 | 6496 4858 | 1260 4859 | 5820 4860 | 4386 4861 | 6186 4862 | 6984 4863 | 3843 4864 | 1255 4865 | 2533 4866 | 610 4867 | 2848 4868 | 5363 4869 | 1755 4870 | 990 4871 | 2382 4872 | 4005 4873 | 3614 4874 | 6476 4875 | 4470 4876 | 6135 4877 | 486 4878 | 2123 4879 | 4203 4880 | 933 4881 | 2472 4882 | 7173 4883 | 1783 4884 | 5462 4885 | 651 4886 | 8187 4887 | 5255 4888 | 4257 4889 | 2398 4890 | 2630 4891 | 5351 4892 | 6999 4893 | 7476 4894 | 3114 4895 | 6289 4896 | 3636 4897 | 1582 4898 | 7240 4899 | 6221 4900 | 109 4901 | 435 4902 | 8017 4903 | 5499 4904 | 898 4905 | 5819 4906 | 5072 4907 | 1052 4908 | 4538 4909 | 3974 4910 | 2000 4911 | 2229 4912 | 7378 4913 | 7249 4914 | 7658 4915 | 1062 4916 | 3263 4917 | 2368 4918 | 880 4919 | 2309 4920 | 2204 4921 | 3284 4922 | 7105 4923 | 5645 4924 | 6991 4925 | 4130 4926 | 6916 4927 | 7728 4928 | 4519 4929 | 628 4930 | 417 4931 | 7845 4932 | 985 4933 | 2038 4934 | 7295 4935 | 3850 4936 | 3718 4937 | 830 4938 | 196 4939 | 1559 4940 | 8101 4941 | 4545 4942 | 3632 4943 | 7829 4944 | 5601 4945 | 855 4946 | 5603 4947 | 5419 4948 | 5352 4949 | 3487 4950 | 6774 4951 | 3386 4952 | 464 4953 | 3864 4954 | 4967 4955 | 7363 4956 | 6702 4957 | 2730 4958 | 8002 4959 | 2695 4960 | 3634 4961 | 5844 4962 | 1100 4963 | 429 4964 | 6871 4965 | 822 4966 | 7656 4967 | 2217 4968 | 1569 4969 | 5803 4970 | 736 4971 | 1077 4972 | 4536 4973 | 4420 4974 | 6058 4975 | 6814 4976 | 1744 4977 | 839 4978 | 8147 4979 | 2147 4980 | 6043 4981 | 4563 4982 | 4329 4983 | 39 4984 | 7654 4985 | 1983 4986 | 5415 4987 | 3040 4988 | 4280 4989 | 7461 4990 | 4586 4991 | 4 4992 | 5063 4993 | 6472 4994 | 1753 4995 | 3577 4996 | 1949 4997 | 1657 4998 | 5702 4999 | 5856 5000 | 5712 5001 | 4950 5002 | 2085 5003 | 1174 5004 | 5088 5005 | 5908 5006 | 1418 5007 | 2571 5008 | 7069 5009 | 3740 5010 | 6654 5011 | 883 5012 | 8135 5013 | 2666 5014 | 6867 5015 | 4118 5016 | 2264 5017 | 3028 5018 | 2629 5019 | 5794 5020 | 6866 5021 | 3478 5022 | 6442 5023 | 7451 5024 | 6419 5025 | 2683 5026 | 1781 5027 | 3359 5028 | 6377 5029 | 1670 5030 | 1274 5031 | 4728 5032 | 7789 5033 | 4650 5034 | 3802 5035 | 7122 5036 | 4332 5037 | 3281 5038 | 7661 5039 | 90 5040 | 4541 5041 | 6648 5042 | 5959 5043 | 7823 5044 | 2006 5045 | 4481 5046 | 5765 5047 | 2681 5048 | 7606 5049 | 6939 5050 | 5030 5051 | 3804 5052 | 1253 5053 | 5900 5054 | 7314 5055 | 1248 5056 | 7094 5057 | 317 5058 | 3168 5059 | 4169 5060 | 8179 5061 | 5925 5062 | 1415 5063 | 5735 5064 | 4454 5065 | 8188 5066 | 6907 5067 | 3712 5068 | 2032 5069 | 8257 5070 | 3158 5071 | 2387 5072 | 4396 5073 | 4252 5074 | 5905 5075 | 174 5076 | 7841 5077 | 5050 5078 | 7 5079 | 7203 5080 | 4450 5081 | 958 5082 | 1130 5083 | 313 5084 | 3687 5085 | 2838 5086 | 3202 5087 | 1810 5088 | 4383 5089 | 7783 5090 | 5397 5091 | 328 5092 | 395 5093 | 4094 5094 | 3950 5095 | 5249 5096 | 5418 5097 | 6437 5098 | 5543 5099 | 3315 5100 | 2924 5101 | 6972 5102 | 34 5103 | 778 5104 | 6404 5105 | 6522 5106 | 3042 5107 | 6696 5108 | 826 5109 | 3319 5110 | 121 5111 | 1162 5112 | 5838 5113 | 239 5114 | 7556 5115 | 832 5116 | 8136 5117 | 2094 5118 | 1257 5119 | 6531 5120 | 4489 5121 | 3276 5122 | 2513 5123 | 7675 5124 | 2700 5125 | 5010 5126 | 6215 5127 | 1936 5128 | 5996 5129 | 5945 5130 | 5937 5131 | 67 5132 | 1921 5133 | 5323 5134 | 6724 5135 | 5487 5136 | 5885 5137 | 1606 5138 | 3339 5139 | 1164 5140 | 6218 5141 | 3892 5142 | 509 5143 | 6382 5144 | 4307 5145 | 7258 5146 | 3515 5147 | 7156 5148 | 3047 5149 | 901 5150 | 689 5151 | 7460 5152 | 7212 5153 | 1875 5154 | 3886 5155 | 8150 5156 | 2960 5157 | 7869 5158 | 3747 5159 | 1078 5160 | 3394 5161 | 3545 5162 | 474 5163 | 4040 5164 | 6367 5165 | 606 5166 | 4157 5167 | 7488 5168 | 570 5169 | 3933 5170 | 1560 5171 | 3729 5172 | 1674 5173 | 3996 5174 | 7706 5175 | 2585 5176 | 5678 5177 | 896 5178 | 5774 5179 | 6316 5180 | 2765 5181 | 3178 5182 | 3161 5183 | 6275 5184 | 4890 5185 | 6426 5186 | 6530 5187 | 6630 5188 | 1006 5189 | 4172 5190 | 458 5191 | 587 5192 | 167 5193 | 5200 5194 | 370 5195 | 1146 5196 | 2325 5197 | 4424 5198 | 3129 5199 | 1890 5200 | 4587 5201 | 2230 5202 | 6588 5203 | 5837 5204 | 2558 5205 | 4145 5206 | 2829 5207 | 6594 5208 | 4851 5209 | 5438 5210 | 1390 5211 | 2040 5212 | 5129 5213 | 333 5214 | 8078 5215 | 7712 5216 | 4689 5217 | 6157 5218 | 7223 5219 | 2805 5220 | 5431 5221 | 2590 5222 | 8205 5223 | 2068 5224 | 5555 5225 | 6102 5226 | 7580 5227 | 7352 5228 | 3824 5229 | 4238 5230 | 27 5231 | 2949 5232 | 2030 5233 | 7719 5234 | 6466 5235 | 2553 5236 | 881 5237 | 1729 5238 | 3294 5239 | 2018 5240 | 6888 5241 | 1540 5242 | 2548 5243 | 1361 5244 | 4403 5245 | 415 5246 | 7282 5247 | 6941 5248 | 6035 5249 | 5489 5250 | 4726 5251 | 6359 5252 | 1139 5253 | 650 5254 | 8015 5255 | 1453 5256 | 6435 5257 | 7953 5258 | 2694 5259 | 2897 5260 | 4909 5261 | 3362 5262 | 6773 5263 | 8016 5264 | 5817 5265 | 3369 5266 | 6406 5267 | 2092 5268 | 8035 5269 | 6982 5270 | 6111 5271 | 1545 5272 | 4527 5273 | 2283 5274 | 5228 5275 | 2213 5276 | 5237 5277 | 2511 5278 | 3554 5279 | 6976 5280 | 3700 5281 | 4895 5282 | 135 5283 | 4080 5284 | 7857 5285 | 341 5286 | 564 5287 | 5018 5288 | 8199 5289 | 116 5290 | 4360 5291 | 5921 5292 | 4523 5293 | 6612 5294 | 4775 5295 | 6240 5296 | 7013 5297 | 7736 5298 | 1945 5299 | 2192 5300 | 3021 5301 | 5643 5302 | 6755 5303 | 649 5304 | 6860 5305 | 7185 5306 | 4296 5307 | 7216 5308 | 5710 5309 | 2326 5310 | 539 5311 | 7897 5312 | 7111 5313 | 3274 5314 | 268 5315 | 2957 5316 | 6341 5317 | 6173 5318 | 586 5319 | 1436 5320 | 211 5321 | 7899 5322 | 173 5323 | 5584 5324 | 5335 5325 | 6742 5326 | 4274 5327 | 4565 5328 | 5039 5329 | 4740 5330 | 3507 5331 | 3044 5332 | 2285 5333 | 3165 5334 | 3863 5335 | 6827 5336 | 6091 5337 | 5467 5338 | 6002 5339 | 261 5340 | 3025 5341 | 4556 5342 | 6617 5343 | 6169 5344 | 2627 5345 | 3705 5346 | 3074 5347 | 6097 5348 | 6554 5349 | 1676 5350 | 5585 5351 | 3396 5352 | 6332 5353 | 2033 5354 | 2226 5355 | 5321 5356 | 887 5357 | 1585 5358 | 6340 5359 | 2053 5360 | 4076 5361 | 3174 5362 | 7280 5363 | 188 5364 | 6533 5365 | 5534 5366 | 8139 5367 | 7927 5368 | 3797 5369 | 280 5370 | 5292 5371 | 2880 5372 | 1211 5373 | 5510 5374 | 1137 5375 | 7638 5376 | 7981 5377 | 8073 5378 | 3257 5379 | 446 5380 | 3881 5381 | 3979 5382 | 7085 5383 | 8207 5384 | 1403 5385 | 2619 5386 | 4526 5387 | 5075 5388 | 2120 5389 | 4088 5390 | 2453 5391 | 1793 5392 | 3151 5393 | 993 5394 | 2468 5395 | 5328 5396 | 164 5397 | 7619 5398 | 6791 5399 | 6083 5400 | 2528 5401 | 491 5402 | 5998 5403 | 1694 5404 | 5361 5405 | 3377 5406 | 6655 5407 | 1629 5408 | 8127 5409 | 4013 5410 | 246 5411 | 7518 5412 | 5040 5413 | 3060 5414 | 2875 5415 | 5726 5416 | 4618 5417 | 6734 5418 | 770 5419 | 7584 5420 | 4254 5421 | 7775 5422 | 3482 5423 | 54 5424 | 3455 5425 | 3430 5426 | 7767 5427 | 7751 5428 | 176 5429 | 8001 5430 | 3898 5431 | 24 5432 | 4848 5433 | 4096 5434 | 3773 5435 | 3633 5436 | 7718 5437 | 4070 5438 | 7744 5439 | 2684 5440 | 1650 5441 | 2122 5442 | 3279 5443 | 3915 5444 | 6510 5445 | 857 5446 | 4551 5447 | 4328 5448 | 2270 5449 | 7809 5450 | 2849 5451 | 2967 5452 | 7337 5453 | 1220 5454 | 80 5455 | 8056 5456 | 1990 5457 | 6074 5458 | 546 5459 | 4485 5460 | 71 5461 | 3180 5462 | 1533 5463 | 8196 5464 | 307 5465 | 1263 5466 | 7245 5467 | 6852 5468 | 5270 5469 | 1972 5470 | 7074 5471 | 8140 5472 | 1757 5473 | 7928 5474 | 1750 5475 | 6005 5476 | 1488 5477 | 7507 5478 | 7238 5479 | 4249 5480 | 3035 5481 | 8214 5482 | 2826 5483 | 2014 5484 | 3972 5485 | 3433 5486 | 6628 5487 | 7110 5488 | 64 5489 | 7594 5490 | 220 5491 | 5008 5492 | 5009 5493 | 3668 5494 | 3341 5495 | 7434 5496 | 5876 5497 | 2537 5498 | 7752 5499 | 7867 5500 | 3566 5501 | 1846 5502 | 1215 5503 | 6675 5504 | 3409 5505 | 7856 5506 | 7214 5507 | 547 5508 | 3317 5509 | 6116 5510 | 3303 5511 | 6064 5512 | 4488 5513 | 1090 5514 | 1119 5515 | 3379 5516 | 5968 5517 | 4625 5518 | 7874 5519 | 5473 5520 | 4861 5521 | 3094 5522 | 7414 5523 | 240 5524 | 4534 5525 | 6624 5526 | 4260 5527 | 5588 5528 | 3295 5529 | 2077 5530 | 1576 5531 | 3876 5532 | 7666 5533 | 97 5534 | 7250 5535 | 7721 5536 | 6597 5537 | 1372 5538 | 5165 5539 | 3557 5540 | 8181 5541 | 804 5542 | 5109 5543 | 8030 5544 | 6109 5545 | 544 5546 | 1241 5547 | 6896 5548 | 5796 5549 | 4856 5550 | 3419 5551 | 2321 5552 | 3046 5553 | 76 5554 | 3340 5555 | 7972 5556 | 6450 5557 | 5377 5558 | 6315 5559 | 1947 5560 | 2241 5561 | 7116 5562 | 871 5563 | 7621 5564 | 2384 5565 | 6672 5566 | 7858 5567 | 3384 5568 | 5877 5569 | 7079 5570 | 2556 5571 | 8195 5572 | 622 5573 | 1677 5574 | 110 5575 | 7624 5576 | 5210 5577 | 7375 5578 | 1848 5579 | 7108 5580 | 3961 5581 | 752 5582 | 5665 5583 | 3387 5584 | 5706 5585 | 6044 5586 | 6540 5587 | 4785 5588 | 2554 5589 | 971 5590 | 2400 5591 | 6762 5592 | 2311 5593 | 4049 5594 | 5655 5595 | 1891 5596 | 3910 5597 | 4306 5598 | 3943 5599 | 7454 5600 | 4697 5601 | 5503 5602 | 2448 5603 | 7075 5604 | 4783 5605 | 3714 5606 | 471 5607 | 7526 5608 | 4744 5609 | 5259 5610 | 7989 5611 | 4869 5612 | 577 5613 | 7988 5614 | 4972 5615 | 4965 5616 | 699 5617 | 1406 5618 | 1338 5619 | 101 5620 | 129 5621 | 2063 5622 | 667 5623 | 1546 5624 | 4371 5625 | 3733 5626 | 2752 5627 | 919 5628 | 2214 5629 | 1898 5630 | 279 5631 | 2903 5632 | 2734 5633 | 4800 5634 | 2169 5635 | 5605 5636 | 466 5637 | 3742 5638 | 1537 5639 | 4152 5640 | 5733 5641 | 6772 5642 | 4045 5643 | 5769 5644 | 4107 5645 | 4435 5646 | 1422 5647 | 37 5648 | 5227 5649 | 3575 5650 | 2640 5651 | 3065 5652 | 1910 5653 | 3271 5654 | 3841 5655 | 4506 5656 | 162 5657 | 2207 5658 | 5687 5659 | 3254 5660 | 4832 5661 | 2254 5662 | 2725 5663 | 3671 5664 | 3327 5665 | 7537 5666 | 4886 5667 | 1149 5668 | 1956 5669 | 4923 5670 | 6986 5671 | 3833 5672 | 60 5673 | 461 5674 | 2215 5675 | 7327 5676 | 1605 5677 | 82 5678 | 1329 5679 | 6415 5680 | 2806 5681 | 3861 5682 | 5389 5683 | 4007 5684 | 6993 5685 | 7976 5686 | 4379 5687 | 1626 5688 | 7524 5689 | 3934 5690 | 61 5691 | 7002 5692 | 41 5693 | 6227 5694 | 6681 5695 | 6260 5696 | 6521 5697 | 3870 5698 | 1902 5699 | 5324 5700 | 5086 5701 | 140 5702 | 2740 5703 | 3895 5704 | 553 5705 | 609 5706 | 4139 5707 | 6420 5708 | 1922 5709 | 7448 5710 | 3311 5711 | 1806 5712 | 6525 5713 | 7514 5714 | 4295 5715 | 5308 5716 | 227 5717 | 2601 5718 | 4720 5719 | 5760 5720 | 6030 5721 | 1914 5722 | 8040 5723 | 4829 5724 | 7395 5725 | 5128 5726 | 1509 5727 | 8235 5728 | 7755 5729 | 7629 5730 | 1620 5731 | 7318 5732 | 6279 5733 | 2989 5734 | 2904 5735 | 282 5736 | 7679 5737 | 3868 5738 | 4406 5739 | 7825 5740 | 2273 5741 | 4462 5742 | 1472 5743 | 1304 5744 | 821 5745 | 1110 5746 | 4711 5747 | 3492 5748 | 2019 5749 | 5719 5750 | 6913 5751 | 562 5752 | 6293 5753 | 3049 5754 | 5552 5755 | 1911 5756 | 2981 5757 | 2359 5758 | 5582 5759 | 1396 5760 | 92 5761 | 5951 5762 | 6239 5763 | 7311 5764 | 7477 5765 | 302 5766 | 2378 5767 | 3474 5768 | 2056 5769 | 1244 5770 | 2312 5771 | 391 5772 | 7289 5773 | 1103 5774 | 15 5775 | 4737 5776 | 5515 5777 | 210 5778 | 1284 5779 | 4117 5780 | 8130 5781 | 7975 5782 | 1491 5783 | 6798 5784 | 5729 5785 | 2649 5786 | 791 5787 | 6159 5788 | 7986 5789 | 3856 5790 | 4101 5791 | 4314 5792 | 2479 5793 | 2236 5794 | 5517 5795 | 1008 5796 | 2444 5797 | 2322 5798 | 5154 5799 | 3555 5800 | 6887 5801 | 5904 5802 | 1133 5803 | 5263 5804 | 7960 5805 | 4673 5806 | 55 5807 | 7082 5808 | 4029 5809 | 3171 5810 | 1779 5811 | 5097 5812 | 2578 5813 | 7386 5814 | 350 5815 | 6547 5816 | 1833 5817 | 1075 5818 | 3432 5819 | 5901 5820 | 7949 5821 | 6128 5822 | 6536 5823 | 7855 5824 | 96 5825 | 2636 5826 | 156 5827 | 1275 5828 | 7801 5829 | 5123 5830 | 2534 5831 | 1637 5832 | 4911 5833 | 3195 5834 | 3466 5835 | 448 5836 | 6456 5837 | 2493 5838 | 6269 5839 | 7517 5840 | 4595 5841 | 1970 5842 | 7474 5843 | 2328 5844 | 7746 5845 | 4160 5846 | 7107 5847 | 7889 5848 | 8225 5849 | 2104 5850 | 214 5851 | 5144 5852 | 5384 5853 | 885 5854 | 2597 5855 | 7294 5856 | 5231 5857 | 7820 5858 | 906 5859 | 1200 5860 | 3695 5861 | 4075 5862 | 3650 5863 | 7343 5864 | 5627 5865 | 5505 5866 | 3862 5867 | 7361 5868 | 2559 5869 | 8174 5870 | 5709 5871 | 1740 5872 | 605 5873 | 5541 5874 | 2158 5875 | 6065 5876 | 8096 5877 | 7022 5878 | 3684 5879 | 2010 5880 | 1733 5881 | 2746 5882 | 4634 5883 | 1015 5884 | 2334 5885 | 4564 5886 | 7961 5887 | 6659 5888 | 1778 5889 | 3001 5890 | 3920 5891 | 2977 5892 | 5283 5893 | 6136 5894 | 6843 5895 | 5171 5896 | 3069 5897 | 2768 5898 | 3141 5899 | 5491 5900 | 2221 5901 | 5187 5902 | 5914 5903 | 4920 5904 | 5264 5905 | 2660 5906 | 7431 5907 | 4394 5908 | 3637 5909 | 7038 5910 | 1667 5911 | 349 5912 | 5530 5913 | 7637 5914 | 7777 5915 | 2318 5916 | 2299 5917 | 7601 5918 | 4772 5919 | 2525 5920 | 4299 5921 | 3959 5922 | 4850 5923 | 228 5924 | 2357 5925 | 7831 5926 | 8089 5927 | 8203 5928 | 6310 5929 | 759 5930 | 7011 5931 | 7998 5932 | 7233 5933 | 629 5934 | 4410 5935 | 2966 5936 | 513 5937 | 7892 5938 | 1671 5939 | 4221 5940 | 4768 5941 | 5612 5942 | 4951 5943 | 1297 5944 | 6366 5945 | 1739 5946 | 5570 5947 | 1427 5948 | 6538 5949 | 5902 5950 | 7536 5951 | 2802 5952 | 2396 5953 | 3360 5954 | 3105 5955 | 2421 5956 | 6512 5957 | 1272 5958 | 1205 5959 | 6160 5960 | 248 5961 | 5835 5962 | 4658 5963 | 4019 5964 | 7265 5965 | 1683 5966 | 6944 5967 | 3771 5968 | 4103 5969 | 7781 5970 | 3096 5971 | 7293 5972 | 7652 5973 | 2547 5974 | 7399 5975 | 225 5976 | 6229 5977 | 2171 5978 | 8219 5979 | 716 5980 | 1378 5981 | 2419 5982 | 5390 5983 | 2126 5984 | 3893 5985 | 7426 5986 | 2426 5987 | 1184 5988 | 7019 5989 | 3353 5990 | 3112 5991 | 5669 5992 | 6200 5993 | 5854 5994 | 8022 5995 | 5111 5996 | 6202 5997 | 7865 5998 | 5569 5999 | 2532 6000 | 1614 6001 | 1301 6002 | 5911 6003 | 411 6004 | 4765 6005 | 339 6006 | 3960 6007 | 4608 6008 | 6019 6009 | 3852 6010 | 13 6011 | 7600 6012 | 4234 6013 | 2062 6014 | 796 6015 | 3716 6016 | 1942 6017 | 3490 6018 | 3062 6019 | 873 6020 | 1201 6021 | 7420 6022 | 6023 6023 | 5692 6024 | 7292 6025 | 591 6026 | 230 6027 | 6228 6028 | 1515 6029 | 7158 6030 | 1113 6031 | 6297 6032 | 1589 6033 | 6194 6034 | 6304 6035 | 4683 6036 | 749 6037 | 1539 6038 | 5546 6039 | 7742 6040 | 3988 6041 | 2089 6042 | 281 6043 | 6007 6044 | 2779 6045 | 8189 6046 | 7942 6047 | 1328 6048 | 4259 6049 | 3273 6050 | 6054 6051 | 5344 6052 | 7142 6053 | 505 6054 | 2055 6055 | 2622 6056 | 684 6057 | 1526 6058 | 1858 6059 | 4581 6060 | 4666 6061 | 1123 6062 | 8037 6063 | 714 6064 | 5980 6065 | 1425 6066 | 3990 6067 | 3316 6068 | 3751 6069 | 2773 6070 | 7284 6071 | 6955 6072 | 4657 6073 | 5472 6074 | 3053 6075 | 498 6076 | 5736 6077 | 5623 6078 | 3355 6079 | 5509 6080 | 4904 6081 | 7442 6082 | 5614 6083 | 1681 6084 | 5090 6085 | 5581 6086 | 7617 6087 | 4713 6088 | 5448 6089 | 3493 6090 | 6902 6091 | 5405 6092 | 1992 6093 | 2302 6094 | 5790 6095 | 1490 6096 | 3125 6097 | 1050 6098 | 7603 6099 | 2054 6100 | 3404 6101 | 2883 6102 | 3926 6103 | 1853 6104 | 3822 6105 | 2027 6106 | 7724 6107 | 4912 6108 | 2701 6109 | 2948 6110 | 2722 6111 | 6635 6112 | 7371 6113 | 4400 6114 | 3616 6115 | 3901 6116 | 5553 6117 | 5708 6118 | 951 6119 | 2576 6120 | 2193 6121 | 5395 6122 | 8050 6123 | 3109 6124 | 5310 6125 | 980 6126 | 6063 6127 | 1831 6128 | 930 6129 | 1816 6130 | 2109 6131 | 7444 6132 | 7682 6133 | 7967 6134 | 4716 6135 | 7151 6136 | 3258 6137 | 6589 6138 | 753 6139 | 4807 6140 | 6189 6141 | 4926 6142 | 6455 6143 | 6100 6144 | 4344 6145 | 5673 6146 | 578 6147 | 8234 6148 | 1724 6149 | 6372 6150 | 6498 6151 | 1635 6152 | 62 6153 | 671 6154 | 5168 6155 | 4594 6156 | 5409 6157 | 4524 6158 | 148 6159 | 4046 6160 | 4824 6161 | 3142 6162 | 5636 6163 | 4256 6164 | 709 6165 | 603 6166 | 1856 6167 | 7376 6168 | 695 6169 | 4235 6170 | 788 6171 | 7357 6172 | 59 6173 | 3237 6174 | 2778 6175 | 7359 6176 | 2514 6177 | 7571 6178 | 3017 6179 | 2324 6180 | 4924 6181 | 1817 6182 | 1544 6183 | 5091 6184 | 6140 6185 | 6698 6186 | 5241 6187 | 1081 6188 | 7255 6189 | 850 6190 | 3150 6191 | 4370 6192 | 5831 6193 | 3057 6194 | 5443 6195 | 7478 6196 | 6513 6197 | 7222 6198 | 1646 6199 | 3147 6200 | 402 6201 | 7015 6202 | 3222 6203 | 7653 6204 | 4414 6205 | 6549 6206 | 2997 6207 | 95 6208 | 4491 6209 | 2592 6210 | 5855 6211 | 4025 6212 | 4769 6213 | 4749 6214 | 5950 6215 | 5641 6216 | 6069 6217 | 3593 6218 | 5453 6219 | 3230 6220 | 556 6221 | 4693 6222 | 2851 6223 | 5640 6224 | 4885 6225 | 5919 6226 | 2579 6227 | 3912 6228 | 149 6229 | 330 6230 | 5533 6231 | 6862 6232 | 3525 6233 | 4457 6234 | 2041 6235 | 7554 6236 | 4781 6237 | 6220 6238 | 6384 6239 | 5737 6240 | 882 6241 | 2881 6242 | 4479 6243 | 7919 6244 | 3630 6245 | 63 6246 | 5966 6247 | 3219 6248 | 3639 6249 | 309 6250 | 3842 6251 | 6398 6252 | 6714 6253 | 4416 6254 | 2461 6255 | 7784 6256 | 8151 6257 | 2144 6258 | 1882 6259 | 3333 6260 | 4304 6261 | 3992 6262 | 7644 6263 | 31 6264 | 6962 6265 | 5159 6266 | 6606 6267 | 48 6268 | 1156 6269 | 3604 6270 | 6653 6271 | 1795 6272 | 5671 6273 | 7886 6274 | 6131 6275 | 4356 6276 | 2078 6277 | 1144 6278 | 3030 6279 | 5253 6280 | 5521 6281 | 7948 6282 | 1933 6283 | 4937 6284 | 2925 6285 | 4938 6286 | 5545 6287 | 2341 6288 | 5208 6289 | 5239 6290 | 3776 6291 | 3598 6292 | 2034 6293 | 725 6294 | 8229 6295 | 1562 6296 | 4313 6297 | 2417 6298 | 946 6299 | 311 6300 | 3390 6301 | 2544 6302 | 5133 6303 | 7903 6304 | 4141 6305 | 3849 6306 | 3205 6307 | 6769 6308 | 290 6309 | 2243 6310 | 2422 6311 | 1295 6312 | 2452 6313 | 524 6314 | 6663 6315 | 3717 6316 | 890 6317 | 2320 6318 | 2494 6319 | 126 6320 | 4264 6321 | 52 6322 | 8267 6323 | 4015 6324 | 2432 6325 | 3002 6326 | 8245 6327 | 4841 6328 | 4631 6329 | 792 6330 | 7646 6331 | 4577 6332 | 263 6333 | 7172 6334 | 1592 6335 | 1968 6336 | 6348 6337 | 7010 6338 | 6401 6339 | 4542 6340 | 385 6341 | 6608 6342 | 7693 6343 | 6053 6344 | 6429 6345 | 1736 6346 | 3179 6347 | 7592 6348 | 2745 6349 | 4876 6350 | 2870 6351 | 5544 6352 | 734 6353 | 8211 6354 | 4494 6355 | 5424 6356 | 3055 6357 | 8247 6358 | 6232 6359 | 4836 6360 | 6566 6361 | 7731 6362 | 3846 6363 | 6899 6364 | 8237 6365 | 4091 6366 | 5260 6367 | 2175 6368 | 2818 6369 | 3832 6370 | 4359 6371 | 388 6372 | 1786 6373 | 6490 6374 | 1451 6375 | 5875 6376 | 7798 6377 | 4715 6378 | 4557 6379 | 5845 6380 | 23 6381 | 3006 6382 | 7206 6383 | 2159 6384 | 2508 6385 | 593 6386 | 4421 6387 | 6009 6388 | 3322 6389 | 5768 6390 | 6242 6391 | 3128 6392 | 7226 6393 | 5680 6394 | 8021 6395 | 7515 6396 | 6122 6397 | 5840 6398 | 6191 6399 | 7838 6400 | 3977 6401 | 6662 6402 | 2276 6403 | 2210 6404 | 1863 6405 | 6392 6406 | 6471 6407 | 3227 6408 | 2685 6409 | 4905 6410 | 3370 6411 | 1426 6412 | 99 6413 | 2180 6414 | 5988 6415 | 3540 6416 | 3983 6417 | 4333 6418 | 3511 6419 | 1467 6420 | 6254 6421 | 7253 6422 | 7596 6423 | 1746 6424 | 1086 6425 | 5973 6426 | 5474 6427 | 3462 6428 | 6010 6429 | 704 6430 | 6504 6431 | 5234 6432 | 7017 6433 | 4828 6434 | 7676 6435 | 6132 6436 | 7031 6437 | 7000 6438 | 1084 6439 | 2205 6440 | 6667 6441 | 7176 6442 | 4223 6443 | 5982 6444 | 5897 6445 | 952 6446 | 3378 6447 | 1027 6448 | 859 6449 | 5520 6450 | 344 6451 | 6934 6452 | 6431 6453 | 2491 6454 | 659 6455 | 5007 6456 | 7326 6457 | 3995 6458 | 7726 6459 | 4353 6460 | 6638 6461 | 500 6462 | 1448 6463 | 4113 6464 | 2365 6465 | 8065 6466 | 5626 6467 | 639 6468 | 4696 6469 | 7090 6470 | 1722 6471 | 1876 6472 | 1377 6473 | 1470 6474 | 1534 6475 | 5056 6476 | 5238 6477 | 2895 6478 | 7234 6479 | 3711 6480 | 8250 6481 | 2986 6482 | 3821 6483 | 7135 6484 | 5174 6485 | 7905 6486 | 3275 6487 | 5001 6488 | 6004 6489 | 2187 6490 | 760 6491 | 8240 6492 | 7842 6493 | 7324 6494 | 5033 6495 | 4179 6496 | 7464 6497 | 334 6498 | 1051 6499 | 1901 6500 | 7469 6501 | 1190 6502 | 6969 6503 | 332 6504 | 4312 6505 | 7901 6506 | 6678 6507 | 197 6508 | 6770 6509 | 1517 6510 | 414 6511 | 2959 6512 | 657 6513 | 2961 6514 | 6248 6515 | 4021 6516 | 5246 6517 | 6892 6518 | 6125 6519 | 7945 6520 | 5695 6521 | 968 6522 | 6684 6523 | 6127 6524 | 1752 6525 | 7164 6526 | 1588 6527 | 2173 6528 | 6807 6529 | 2561 6530 | 3526 6531 | 3008 6532 | 7184 6533 | 711 6534 | 4384 6535 | 3738 6536 | 2380 6537 | 4656 6538 | 2237 6539 | 5633 6540 | 1210 6541 | 2828 6542 | 7765 6543 | 5047 6544 | 2800 6545 | 2339 6546 | 6212 6547 | 5986 6548 | 6143 6549 | 7007 6550 | 5493 6551 | 4282 6552 | 1609 6553 | 2162 6554 | 4826 6555 | 5537 6556 | 3009 6557 | 1712 6558 | 6110 6559 | 1642 6560 | 5463 6561 | 1180 6562 | 4230 6563 | 6118 6564 | 5866 6565 | 3940 6566 | 6699 6567 | 6545 6568 | 7896 6569 | 284 6570 | 4919 6571 | 6444 6572 | 168 6573 | 7992 6574 | 5542 6575 | 7895 6576 | 1189 6577 | 1293 6578 | 2057 6579 | 6758 6580 | 1252 6581 | 2813 6582 | 5094 6583 | 1495 6584 | 2436 6585 | 2133 6586 | 7317 6587 | 7541 6588 | 7582 6589 | 4918 6590 | 3689 6591 | 3253 6592 | 1940 6593 | 3538 6594 | 837 6595 | 4058 6596 | 8165 6597 | 8128 6598 | 6439 6599 | 1496 6600 | 7668 6601 | 3243 6602 | 920 6603 | 852 6604 | 5402 6605 | 6369 6606 | 6057 6607 | 7793 6608 | 4121 6609 | 2383 6610 | 6948 6611 | 3532 6612 | 6837 6613 | 7272 6614 | 6251 6615 | 4646 6616 | 7849 6617 | 5767 6618 | 1919 6619 | 7678 6620 | 3007 6621 | 4044 6622 | 3911 6623 | 4415 6624 | 1368 6625 | 1727 6626 | 7368 6627 | 1188 6628 | 137 6629 | 3145 6630 | 7690 6631 | 763 6632 | 1311 6633 | 7630 6634 | 4460 6635 | 6389 6636 | 4572 6637 | 7048 6638 | 6115 6639 | 1907 6640 | 1055 6641 | 6715 6642 | 5113 6643 | 6971 6644 | 7093 6645 | 5411 6646 | 7699 6647 | 1292 6648 | 0 6649 | 6170 6650 | 7667 6651 | 21 6652 | 310 6653 | 6301 6654 | 6489 6655 | 3280 6656 | 7559 6657 | 3879 6658 | 25 6659 | 5913 6660 | 6093 6661 | 6562 6662 | 1066 6663 | 5387 6664 | 5753 6665 | 2929 6666 | 1233 6667 | 6665 6668 | 384 6669 | 3063 6670 | 3582 6671 | 224 6672 | 2769 6673 | 6728 6674 | 1232 6675 | 2784 6676 | 3982 6677 | 5179 6678 | 4986 6679 | 4794 6680 | 7047 6681 | 2499 6682 | 4796 6683 | 794 6684 | 1866 6685 | 2741 6686 | 3328 6687 | 5079 6688 | 26 6689 | 3534 6690 | 3508 6691 | 2415 6692 | 4233 6693 | 7466 6694 | 1666 6695 | 2450 6696 | 5456 6697 | 4684 6698 | 6090 6699 | 7651 6700 | 790 6701 | 8138 6702 | 7146 6703 | 5808 6704 | 3651 6705 | 1893 6706 | 6783 6707 | 4027 6708 | 740 6709 | 1054 6710 | 2727 6711 | 7833 6712 | 8007 6713 | 6918 6714 | 6933 6715 | 7207 6716 | 4627 6717 | 2251 6718 | 5480 6719 | 1479 6720 | 5211 6721 | 1938 6722 | 5754 6723 | 7911 6724 | 372 6725 | 4943 6726 | 3795 6727 | 5989 6728 | 5083 6729 | 4064 6730 | 5787 6731 | 6964 6732 | 7887 6733 | 4944 6734 | 4428 6735 | 3753 6736 | 7128 6737 | 6016 6738 | 3694 6739 | 4695 6740 | 2045 6741 | 3608 6742 | 4872 6743 | 1943 6744 | 1214 6745 | 3622 6746 | 4992 6747 | 983 6748 | 3113 6749 | 5690 6750 | 4654 6751 | 6182 6752 | 4834 6753 | 1089 6754 | 6313 6755 | 4419 6756 | 3471 6757 | 1420 6758 | 3363 6759 | 1883 6760 | 1432 6761 | 6492 6762 | 5741 6763 | 5991 6764 | 1243 6765 | 2372 6766 | 3445 6767 | 6553 6768 | 6445 6769 | 2184 6770 | 7923 6771 | 5852 6772 | 3793 6773 | 7423 6774 | 625 6775 | 4092 6776 | 1718 6777 | 621 6778 | 2970 6779 | 3392 6780 | 735 6781 | 2003 6782 | 460 6783 | 6175 6784 | 33 6785 | 2803 6786 | 675 6787 | 2099 6788 | 2710 6789 | 7163 6790 | 1346 6791 | 637 6792 | 7861 6793 | 4941 6794 | 4706 6795 | 2888 6796 | 2135 6797 | 634 6798 | 2239 6799 | 2864 6800 | 540 6801 | 4162 6802 | 2940 6803 | 886 6804 | 438 6805 | 7089 6806 | 7195 6807 | 6436 6808 | 803 6809 | 3332 6810 | 165 6811 | 7356 6812 | 973 6813 | 3777 6814 | 5752 6815 | 8102 6816 | 2794 6817 | 988 6818 | 2288 6819 | 249 6820 | 7157 6821 | 673 6822 | 4668 6823 | 7016 6824 | 8047 6825 | 4975 6826 | 6250 6827 | 3107 6828 | 8095 6829 | 2756 6830 | 5562 6831 | 2096 6832 | 5849 6833 | 6818 6834 | 5058 6835 | 5492 6836 | 2231 6837 | 6357 6838 | 1616 6839 | 4246 6840 | 7553 6841 | 2351 6842 | 7811 6843 | 104 6844 | 3647 6845 | 5142 6846 | 1221 6847 | 1185 6848 | 6666 6849 | 6453 6850 | 336 6851 | 8261 6852 | 3477 6853 | 1370 6854 | 3287 6855 | 1245 6856 | 2196 6857 | 7610 6858 | 2240 6859 | 692 6860 | 7964 6861 | 2500 6862 | 2811 6863 | 4767 6864 | 4531 6865 | 924 6866 | 5413 6867 | 7288 6868 | 5027 6869 | 421 6870 | 1962 6871 | 6503 6872 | 6688 6873 | 3981 6874 | 7805 6875 | 1007 6876 | 1106 6877 | 5611 6878 | 6517 6879 | 4603 6880 | 17 6881 | 8085 6882 | 5724 6883 | 8088 6884 | 7433 6885 | 6879 6886 | 7479 6887 | 5907 6888 | 6906 6889 | 2496 6890 | 2635 6891 | 5386 6892 | 6451 6893 | 4893 6894 | 2815 6895 | 4245 6896 | 1699 6897 | 3929 6898 | 5055 6899 | 2713 6900 | 6576 6901 | 7023 6902 | 194 6903 | 2545 6904 | 1 6905 | 537 6906 | 3489 6907 | 617 6908 | 1776 6909 | 6978 6910 | 5382 6911 | 58 6912 | 6571 6913 | 5429 6914 | 3624 6915 | 8055 6916 | 3815 6917 | 3092 6918 | 6475 6919 | 7979 6920 | 7735 6921 | 316 6922 | 3953 6923 | 193 6924 | 3517 6925 | 4322 6926 | 6832 6927 | 1324 6928 | 1161 6929 | 6414 6930 | 3110 6931 | 2520 6932 | 6334 6933 | 7792 6934 | 293 6935 | 5525 6936 | 630 6937 | 2067 6938 | 5764 6939 | 1397 6940 | 1018 6941 | 4443 6942 | 1333 6943 | 3903 6944 | 6354 6945 | 6754 6946 | 7150 6947 | 400 6948 | 4216 6949 | 7737 6950 | 454 6951 | 1774 6952 | 139 6953 | 7940 6954 | 2879 6955 | 7907 6956 | 5738 6957 | 4194 6958 | 1296 6959 | 4217 6960 | 5551 6961 | 5511 6962 | 3075 6963 | 1492 6964 | 4888 6965 | 7344 6966 | 6950 6967 | 1985 6968 | 1083 6969 | 2804 6970 | 3299 6971 | 5954 6972 | 3067 6973 | 4742 6974 | 2664 6975 | 7037 6976 | 4655 6977 | 3765 6978 | 4365 6979 | 2901 6980 | 5867 6981 | 2327 6982 | 3887 6983 | 5049 6984 | 580 6985 | 6479 6986 | 396 6987 | 6246 6988 | 7771 6989 | 1996 6990 | 677 6991 | 2515 6992 | 7545 6993 | 2134 6994 | 1357 6995 | 4204 6996 | 1126 6997 | 6329 6998 | 4880 6999 | 2394 7000 | 1751 7001 | 1830 7002 | 3521 7003 | 1402 7004 | 7187 7005 | 3301 7006 | 2807 7007 | 7628 7008 | 4433 7009 | 1567 7010 | 1872 7011 | 4782 7012 | 5122 7013 | 4191 7014 | 4931 7015 | 3619 7016 | 2250 7017 | 6008 7018 | 6073 7019 | 1281 7020 | 5105 7021 | 3441 7022 | 1384 7023 | 1873 7024 | 8153 7025 | 6593 7026 | 5625 7027 | 8119 7028 | 7197 7029 | 3713 7030 | 2406 7031 | 5160 7032 | 3269 7033 | 3429 7034 | 259 7035 | 4099 7036 | 3707 7037 | 6059 7038 | 6306 7039 | 1192 7040 | 4417 7041 | 1152 7042 | 751 7043 | 2853 7044 | 77 7045 | 3924 7046 | 4583 7047 | 4813 7048 | 6072 7049 | 5994 7050 | 4241 7051 | 4468 7052 | 3748 7053 | 3847 7054 | 685 7055 | 6851 7056 | 761 7057 | 1212 7058 | 6105 7059 | 2293 7060 | 2693 7061 | 6952 7062 | 8148 7063 | 7509 7064 | 6342 7065 | 4925 7066 | 5689 7067 | 3660 7068 | 1454 7069 | 784 7070 | 5078 7071 | 6602 7072 | 36 7073 | 2906 7074 | 7770 7075 | 4802 7076 | 2732 7077 | 4621 7078 | 2892 7079 | 7664 7080 | 1503 7081 | 5410 7082 | 4874 7083 | 5720 7084 | 8167 7085 | 6067 7086 | 1587 7087 | 1558 7088 | 4399 7089 | 7830 7090 | 3831 7091 | 7097 7092 | 5277 7093 | 2097 7094 | 705 7095 | 1227 7096 | 4476 7097 | 3452 7098 | 288 7099 | 180 7100 | 1321 7101 | 2735 7102 | 4501 7103 | 2857 7104 | 6868 7105 | 3781 7106 | 611 7107 | 8097 7108 | 4957 7109 | 5430 7110 | 780 7111 | 2163 7112 | 6061 7113 | 7033 7114 | 7281 7115 | 278 7116 | 4311 7117 | 2016 7118 | 2199 7119 | 2306 7120 | 3133 7121 | 7873 7122 | 2781 7123 | 6703 7124 | 1611 7125 | 258 7126 | 2724 7127 | 5406 7128 | 6106 7129 | 198 7130 | 4407 7131 | 5442 7132 | 4098 7133 | 6018 7134 | 4354 7135 | 133 7136 | 5793 7137 | 3428 7138 | 6824 7139 | 7008 7140 | 7501 7141 | 6387 7142 | 6572 7143 | 1549 7144 | 6494 7145 | 7134 7146 | 4671 7147 | 6376 7148 | 6144 7149 | 1663 7150 | 7634 7151 | 7441 7152 | 5252 7153 | 7561 7154 | 1487 7155 | 7685 7156 | 508 7157 | 4323 7158 | 1975 7159 | 5563 7160 | 4897 7161 | 6192 7162 | 8157 7163 | 741 7164 | 6164 7165 | 2013 7166 | 3454 7167 | 3358 7168 | 4875 7169 | 7525 7170 | 3897 7171 | 2552 7172 | 8170 7173 | 2497 7174 | 4116 7175 | 4811 7176 | 6430 7177 | 4404 7178 | 2747 7179 | 6529 7180 | 6849 7181 | 1790 7182 | 3807 7183 | 1645 7184 | 6537 7185 | 4863 7186 | 1414 7187 | 3334 7188 | 1698 7189 | 2944 7190 | 7631 7191 | 6552 7192 | 7308 7193 | 1797 7194 | 7449 7195 | 2418 7196 | 1478 7197 | 5311 7198 | 6587 7199 | 1016 7200 | 6749 7201 | 1935 7202 | 3090 7203 | 8083 7204 | 141 7205 | 5479 7206 | 106 7207 | 6621 7208 | 5933 7209 | 8090 7210 | 4266 7211 | 3880 7212 | 2281 7213 | 4645 7214 | 4048 7215 | 2984 7216 | 4231 7217 | 2447 7218 | 5138 7219 | 6193 7220 | 2678 7221 | 2990 7222 | 874 7223 | 6975 7224 | 4540 7225 | 672 7226 | 4516 7227 | 935 7228 | 3610 7229 | 1035 7230 | 1314 7231 | 4208 7232 | 8013 7233 | 5728 7234 | 1082 7235 | 431 7236 | 7695 7237 | 3541 7238 | 5634 7239 | 4188 7240 | 3143 7241 | 3754 7242 | 4508 7243 | 7367 7244 | 2025 7245 | 6789 7246 | 1128 7247 | 2531 7248 | 1905 7249 | 7773 7250 | 5029 7251 | 6874 7252 | 6263 7253 | 166 7254 | 2280 7255 | 7577 7256 | 8014 7257 | 5488 7258 | 1203 7259 | 4823 7260 | 4949 7261 | 1644 7262 | 1636 7263 | 7243 7264 | 6288 7265 | 6581 7266 | 4251 7267 | 4701 7268 | 5498 7269 | 7648 7270 | 6968 7271 | 3968 7272 | 7290 7273 | 7730 7274 | 4097 7275 | 8258 7276 | 4144 7277 | 5151 7278 | 2313 7279 | 1550 7280 | 6314 7281 | 6752 7282 | 3678 7283 | 8222 7284 | 798 7285 | 2050 7286 | 4401 7287 | 2743 7288 | 2518 7289 | 6273 7290 | 2367 7291 | 869 7292 | 4984 7293 | 4585 7294 | 7914 7295 | 5890 7296 | 2774 7297 | 3213 7298 | 1602 7299 | 4210 7300 | 14 7301 | 6784 7302 | 2153 7303 | 160 7304 | 6291 7305 | 1528 7306 | 5015 7307 | 7563 7308 | 6154 7309 | 8141 7310 | 4171 7311 | 3976 7312 | 1392 7313 | 3737 7314 | 252 7315 | 4182 7316 | 6012 7317 | 7229 7318 | 2235 7319 | 809 7320 | 5578 7321 | 4871 7322 | 7076 7323 | 856 7324 | 3335 7325 | 379 7326 | 6060 7327 | 1678 7328 | 888 7329 | 2739 7330 | 843 7331 | 7827 7332 | 3769 7333 | 5379 7334 | 8059 7335 | 2128 7336 | 1001 7337 | 8106 7338 | 5815 7339 | 6558 7340 | 6988 7341 | 7590 7342 | 1366 7343 | 338 7344 | 7388 7345 | 6685 7346 | 4533 7347 | 6287 7348 | 1868 7349 | 7244 7350 | 6697 7351 | 5547 7352 | 2814 7353 | 4571 7354 | 1594 7355 | 5248 7356 | 5928 7357 | 1553 7358 | 3220 7359 | 7764 7360 | 948 7361 | 6495 7362 | 6679 7363 | 6541 7364 | 2971 7365 | 5879 7366 | 5674 7367 | 7496 7368 | 6390 7369 | 6861 7370 | 5147 7371 | 6842 7372 | 2149 7373 | 4562 7374 | 6487 7375 | 4243 7376 | 2364 7377 | 504 7378 | 8051 7379 | 6647 7380 | 4626 7381 | 7649 7382 | 1419 7383 | 7944 7384 | 7872 7385 | 3304 7386 | 1345 7387 | 5207 7388 | 4002 7389 | 2521 7390 | 845 7391 | 7776 7392 | 6080 7393 | 7408 7394 | 6281 7395 | 2591 7396 | 7061 7397 | 660 7398 | 5598 7399 | 7006 7400 | 7772 7401 | 3656 7402 | 4947 7403 | 4300 7404 | 6465 7405 | 5360 7406 | 274 7407 | 1332 7408 | 576 7409 | 7616 7410 | 3262 7411 | 1424 7412 | 6709 7413 | 7064 7414 | 434 7415 | 7389 7416 | 3397 7417 | 1000 7418 | 7870 7419 | 4743 7420 | 5290 7421 | 7497 7422 | 6568 7423 | 1989 7424 | 315 7425 | 1915 7426 | 5095 7427 | 2007 7428 | 5939 7429 | 2103 7430 | 8052 7431 | 3116 7432 | 2252 7433 | 5205 7434 | 4982 7435 | 3167 7436 | 4616 7437 | 3018 7438 | 7045 7439 | 3029 7440 | 6946 7441 | 1792 7442 | 6117 7443 | 4633 7444 | 6831 7445 | 441 7446 | 3768 7447 | 6914 7448 | 6856 7449 | 5074 7450 | 6839 7451 | 6565 7452 | 7591 7453 | 8094 7454 | 16 7455 | 237 7456 | 7671 7457 | 712 7458 | 6101 7459 | 4632 7460 | 6006 7461 | 2890 7462 | 120 7463 | 6712 7464 | 4932 7465 | 1183 7466 | 3431 7467 | 872 7468 | 2020 7469 | 966 7470 | 3486 7471 | 6793 7472 | 3282 7473 | 5865 7474 | 943 7475 | 793 7476 | 1520 7477 | 3512 7478 | 7030 7479 | 1474 7480 | 3547 7481 | 5667 7482 | 8116 7483 | 4050 7484 | 6347 7485 | 4578 7486 | 3376 7487 | 8099 7488 | 8092 7489 | 2850 7490 | 8123 7491 | 6670 7492 | 3447 7493 | 7236 7494 | 7438 7495 | 7264 7496 | 5457 7497 | 5216 7498 | 1850 7499 | 73 7500 | 6671 7501 | 7893 7502 | 5092 7503 | 7117 7504 | 151 7505 | 3516 7506 | 3117 7507 | 8104 7508 | 595 7509 | 2555 7510 | 6272 7511 | 944 7512 | 155 7513 | 893 7514 | 6244 7515 | 1371 7516 | 5271 7517 | 1256 7518 | 2106 7519 | 3251 7520 | 6425 7521 | 4910 7522 | 8077 7523 | 549 7524 | 6751 7525 | 8197 7526 | 1687 7527 | 8004 7528 | 854 7529 | 5475 7530 | 3210 7531 | 2742 7532 | 3652 7533 | 2614 7534 | 3513 7535 | 7339 7536 | 1572 7537 | 7705 7538 | 2189 7539 | 6034 7540 | 6268 7541 | 4189 7542 | 1155 7543 | 5610 7544 | 5103 7545 | 2152 7546 | 3350 7547 | 6210 7548 | 6613 7549 | 1267 7550 | 8202 7551 | 6364 7552 | 2766 7553 | 6197 7554 | 3774 7555 | 4036 7556 | 1564 7557 | 5731 7558 | 5624 7559 | 7270 7560 | 163 7561 | 7657 7562 | 7103 7563 | 3093 7564 | 820 7565 | 3084 7566 | 713 7567 | 6290 7568 | 2582 7569 | 687 7570 | 1276 7571 | 1405 7572 | 8108 7573 | 4956 7574 | 1439 7575 | 401 7576 | 5048 7577 | 6201 7578 | 7762 7579 | 1871 7580 | 366 7581 | 6693 7582 | 5486 7583 | 6094 7584 | 6883 7585 | 6682 7586 | 3185 7587 | 3264 7588 | 4142 7589 | 8072 7590 | 5987 7591 | 3127 7592 | 6454 7593 | 6052 7594 | 1429 7595 | 4771 7596 | 6184 7597 | 7115 7598 | 255 7599 | 4691 7600 | 6190 7601 | 560 7602 | 7754 7603 | 6674 7604 | 6461 7605 | 5131 7606 | 2987 7607 | 6705 7608 | 7854 7609 | 2787 7610 | 3649 7611 | 5013 7612 | 6695 7613 | 4186 7614 | 747 7615 | 1134 7616 | 433 7617 | 1874 7618 | 7268 7619 | 3027 7620 | 8137 7621 | 65 7622 | 5388 7623 | 5403 7624 | 5345 7625 | 5506 7626 | 772 7627 | 7662 7628 | 6938 7629 | 2753 7630 | 6079 7631 | 3259 7632 | 5812 7633 | 559 7634 | 5825 7635 | 6759 7636 | 8012 7637 | 5617 7638 | 476 7639 | 4591 7640 | 5789 7641 | 4155 7642 | 4197 7643 | 6863 7644 | 4292 7645 | 3732 7646 | 4954 7647 | 2083 7648 | 1946 7649 | 4389 7650 | 2408 7651 | 884 7652 | 5829 7653 | 2933 7654 | 5093 7655 | 5586 7656 | 324 7657 | 5619 7658 | 1957 7659 | 3756 7660 | 1612 7661 | 3083 7662 | 6323 7663 | 7081 7664 | 2844 7665 | 3645 7666 | 7383 7667 | 7508 7668 | 7403 7669 | 6809 7670 | 5334 7671 | 2509 7672 | 4308 7673 | 2824 7674 | 596 7675 | 6370 7676 | 4066 7677 | 1892 7678 | 7924 7679 | 6909 7680 | 2946 7681 | 842 7682 | 2017 7683 | 2792 7684 | 1234 7685 | 1039 7686 | 2319 7687 | 4537 7688 | 2260 7689 | 507 7690 | 7486 7691 | 6660 7692 | 3144 7693 | 4247 7694 | 1239 7695 | 6388 7696 | 5303 7697 | 6711 7698 | 3496 7699 | 6925 7700 | 7839 7701 | 2431 7702 | 1565 7703 | 7734 7704 | 1022 7705 | 1423 7706 | 5305 7707 | 6107 7708 | 3000 7709 | 297 7710 | 4378 7711 | 8133 7712 | 7881 7713 | 271 7714 | 5881 7715 | 6710 7716 | 7170 7717 | 6379 7718 | 6137 7719 | 4146 7720 | 4913 7721 | 7521 7722 | 5648 7723 | 5935 7724 | 5587 7725 | 3058 7726 | 2530 7727 | 648 7728 | 3194 7729 | 2132 7730 | 5691 7731 | 6706 7732 | 6225 7733 | 1430 7734 | 7169 7735 | 7182 7736 | 11 7737 | 216 7738 | 4039 7739 | 7759 7740 | 7970 7741 | 2087 7742 | 4338 7743 | 7692 7744 | 3835 7745 | 6987 7746 | 3805 7747 | 3326 7748 | 4777 7749 | 4922 7750 | 6897 7751 | 2846 7752 | 337 7753 | 5401 7754 | 4062 7755 | 4755 7756 | 3888 7757 | 7382 7758 | 4593 7759 | 1179 7760 | 6258 7761 | 3931 7762 | 4530 7763 | 1869 7764 | 7800 7765 | 7183 7766 | 8063 7767 | 6024 7768 | 7035 7769 | 5572 7770 | 7680 7771 | 6298 7772 | 700 7773 | 7499 7774 | 6014 7775 | 6781 7776 | 1566 7777 | 5485 7778 | 5169 7779 | 7034 7780 | 4242 7781 | 7083 7782 | 5042 7783 | 7990 7784 | 724 7785 | 5860 7786 | 1222 7787 | 5256 7788 | 1059 7789 | 1048 7790 | 1259 7791 | 6551 7792 | 815 7793 | 7452 7794 | 6817 7795 | 5846 7796 | 5206 7797 | 4620 7798 | 2177 7799 | 4343 7800 | 70 7801 | 987 7802 | 6745 7803 | 7291 7804 | 5813 7805 | 1456 7806 | 2617 7807 | 1401 7808 | 6488 7809 | 2036 7810 | 2550 7811 | 4135 7812 | 232 7813 | 2151 7814 | 7057 7815 | 292 7816 | 6756 7817 | 6307 7818 | 7938 7819 | 7502 7820 | 1502 7821 | 7139 7822 | 5589 7823 | 1063 7824 | 7418 7825 | 825 7826 | 231 7827 | 4969 7828 | 4762 7829 | 6930 7830 | 4907 7831 | 7113 7832 | 7301 7833 | 2795 7834 | 2854 7835 | 4119 7836 | 7450 7837 | 1376 7838 | 3206 7839 | 3356 7840 | 8120 7841 | 7254 7842 | 2124 7843 | 3140 7844 | 8084 7845 | 5096 7846 | 5682 7847 | 5188 7848 | 7686 7849 | 306 7850 | 1917 7851 | 1518 7852 | 3108 7853 | 4150 7854 | 5137 7855 | 3401 7856 | 2435 7857 | 3177 7858 | 1768 7859 | 4933 7860 | 1939 7861 | 6912 7862 | 3710 7863 | 6869 7864 | 186 7865 | 233 7866 | 3361 7867 | 584 7868 | 7112 7869 | 1960 7870 | 739 7871 | 1625 7872 | 5778 7873 | 6324 7874 | 1987 7875 | 4959 7876 | 7091 7877 | 6349 7878 | 5650 7879 | 7713 7880 | 3591 7881 | 2835 7882 | 1163 7883 | 2140 7884 | 1400 7885 | 2174 7886 | 5295 7887 | 6292 7888 | 387 7889 | 1469 7890 | 4990 7891 | 3640 7892 | 8218 7893 | 7467 7894 | 7210 7895 | 7132 7896 | 3530 7897 | 8070 7898 | 4725 7899 | 2603 7900 | 6247 7901 | 6575 7902 | 4442 7903 | 3033 7904 | 5268 7905 | 2086 7906 | 6283 7907 | 181 7908 | 532 7909 | 2973 7910 | 589 7911 | 6788 7912 | 6343 7913 | 3907 7914 | 1634 7915 | 422 7916 | 7888 7917 | 4736 7918 | 4898 7919 | 2833 7920 | 3676 7921 | 7286 7922 | 5500 7923 | 4486 7924 | 4710 7925 | 6241 7926 | 5924 7927 | 512 7928 | 264 7929 | 1122 7930 | 4733 7931 | 5329 7932 | 1195 7933 | 833 7934 | 7894 7935 | 6795 7936 | 100 7937 | 4894 7938 | 8076 7939 | 4676 7940 | 6990 7941 | 5857 7942 | 1438 7943 | 1463 7944 | 2723 7945 | 1167 7946 | 666 7947 | 1641 7948 | 6330 7949 | 4085 7950 | 3346 7951 | 7315 7952 | 470 7953 | 3026 7954 | 800 7955 | 3442 7956 | 1521 7957 | 1501 7958 | 3799 7959 | 2279 7960 | 2573 7961 | 6179 7962 | 6264 7963 | 6271 7964 | 6333 7965 | 8131 7966 | 7380 7967 | 9 7968 | 2416 7969 | 680 7970 | 1127 7971 | 3050 7972 | 6998 7973 | 3814 7974 | 440 7975 | 7544 7976 | 3154 7977 | 1732 7978 | 4840 7979 | 6055 7980 | 6905 7981 | 3944 7982 | 6767 7983 | 5302 7984 | 5889 7985 | 8244 7986 | 3224 7987 | 380 7988 | 2755 7989 | 475 7990 | 5469 7991 | 1762 7992 | 7312 7993 | 1717 7994 | 3819 7995 | 6282 7996 | 6584 7997 | 7218 7998 | 3148 7999 | 2837 8000 | 2720 8001 | 3853 8002 | 4388 8003 | 6881 8004 | 2028 8005 | 1782 8006 | 325 8007 | 1773 8008 | 1409 8009 | 2052 8010 | 2535 8011 | 1835 8012 | 4393 8013 | 4109 8014 | 7491 8015 | 3189 8016 | 7936 8017 | 8260 8018 | 355 8019 | 4729 8020 | 7456 8021 | 3549 8022 | 6761 8023 | 4815 8024 | 2198 8025 | 1187 8026 | 2625 8027 | 4513 8028 | 1507 8029 | 285 8030 | 7803 8031 | 2872 8032 | 7647 8033 | 1385 8034 | 3312 8035 | 312 8036 | 5776 8037 | 3137 8038 | 4319 8039 | 3965 8040 | 5052 8041 | 4981 8042 | 2721 8043 | 6168 8044 | 8105 8045 | 3123 8046 | 2999 8047 | 1067 8048 | 2672 8049 | 5371 8050 | 7404 8051 | 2343 8052 | 6669 8053 | 1842 8054 | 7168 8055 | 5017 8056 | 245 8057 | 1510 8058 | 812 8059 | 5392 8060 | 119 8061 | 1070 8062 | 3882 8063 | 823 8064 | 2307 8065 | 6637 8066 | 1480 8067 | 3199 8068 | 3744 8069 | 2980 8070 | 3395 8071 | 3499 8072 | 5180 8073 | 7472 8074 | 6028 8075 | 3435 8076 | 6574 8077 | 5483 8078 | 5219 8079 | 2467 8080 | 5851 8081 | 1767 8082 | 6816 8083 | 244 8084 | 3146 8085 | 5770 8086 | 1181 8087 | 5874 8088 | 6591 8089 | 5577 8090 | 3323 8091 | 8087 8092 | 4830 8093 | 5609 8094 | 3809 8095 | 5784 8096 | 5417 8097 | 1595 8098 | 1522 8099 | 1703 8100 | 3208 8101 | 1760 8102 | 3537 8103 | 8103 8104 | 5478 8105 | 6133 8106 | 6048 8107 | 4072 8108 | 5036 8109 | 2789 8110 | 5740 8111 | 3268 8112 | 1442 8113 | 1845 8114 | 701 8115 | 3927 8116 | 7513 8117 | 1704 8118 | 6112 8119 | 2220 8120 | 8113 8121 | 3685 8122 | 3820 8123 | 981 8124 | 4273 8125 | 3506 8126 | 1484 8127 | 2002 8128 | 3883 8129 | 5529 8130 | 8155 8131 | 4735 8132 | 7458 8133 | 5089 8134 | 8100 8135 | 594 8136 | 3648 8137 | 7429 8138 | 7846 8139 | 456 8140 | 2102 8141 | 3615 8142 | 7844 8143 | 4158 8144 | 702 8145 | 3770 8146 | 5807 8147 | 2788 8148 | 7915 8149 | 8200 8150 | 3719 8151 | 7211 8152 | 3265 8153 | 1765 8154 | 3503 8155 | 6209 8156 | 633 8157 | 1499 8158 | 5291 8159 | 7092 8160 | 4791 8161 | 1037 8162 | 4411 8163 | 4471 8164 | 6687 8165 | 3666 8166 | 6158 8167 | 3956 8168 | 3539 8169 | 4520 8170 | 7088 8171 | 7912 8172 | 6049 8173 | 2702 8174 | 5235 8175 | 1941 8176 | 5771 8177 | 4493 8178 | 6921 8179 | 6147 8180 | 4596 8181 | 3348 8182 | 7597 8183 | 3731 8184 | 7863 8185 | 3542 8186 | 4528 8187 | 1159 8188 | 3119 8189 | 7763 8190 | 818 8191 | 6936 8192 | 868 8193 | 7918 8194 | 5313 8195 | 1820 8196 | 1367 8197 | 5616 8198 | 2051 8199 | 1721 8200 | 1696 8201 | 308 8202 | 557 8203 | 6365 8204 | 5288 8205 | 8049 8206 | 1887 8207 | 5607 8208 | 8033 8209 | 7480 8210 | 2733 8211 | 551 8212 | 5574 8213 | 8224 8214 | 4352 8215 | 212 8216 | 2841 8217 | 2303 8218 | 4884 8219 | 3878 8220 | 6373 8221 | 4917 8222 | 5791 8223 | 1955 8224 | 8166 8225 | 3041 8226 | 7054 8227 | 910 8228 | 5564 8229 | 2363 8230 | 2758 8231 | 7100 8232 | 295 8233 | 5693 8234 | 3745 8235 | 1044 8236 | 6350 8237 | 4115 8238 | 6649 8239 | 2677 8240 | 2330 8241 | 1824 8242 | 1692 8243 | 8112 8244 | 4960 8245 | 3572 8246 | 351 8247 | 6821 8248 | 7005 8249 | 7036 8250 | 7198 8251 | 2071 8252 | 6858 8253 | 18 8254 | 3840 8255 | 3099 8256 | 1196 8257 | 5286 8258 | 3859 8259 | 3657 8260 | 7415 8261 | 940 8262 | 7274 8263 | 7123 8264 | 2516 8265 | 1731 8266 | 5783 8267 | 1702 8268 | 6965 -------------------------------------------------------------------------------- /unit_tests.py: -------------------------------------------------------------------------------- 1 | import os 2 | import random 3 | import unittest 4 | 5 | import cv2 as cv 6 | 7 | from data_generator import get_image, get_category, to_bgr 8 | from data_generator import random_choice, safe_crop 9 | 10 | 11 | class TestStringMethods(unittest.TestCase): 12 | def setUp(self): 13 | if not os.path.exists('temp'): 14 | os.makedirs('temp') 15 | 16 | def tearDown(self): 17 | pass 18 | 19 | def test_get_semantic(self): 20 | name = 'SUNRGBD/kv1/NYUdata/NYU0899' 21 | image, image_size = get_image(name) 22 | print('image_size: ' + str(image_size)) 23 | semantic = get_category(name, image_size) 24 | semantic = to_bgr(semantic) 25 | cv.imwrite('temp/test_get_semantic_image.png', image) 26 | cv.imwrite('temp/test_get_semantic_semantic.png', semantic) 27 | 28 | def test_safe_crop(self): 29 | name = 'SUNRGBD/kv1/NYUdata/NYU0899' 30 | image, image_size = get_image(name) 31 | semantic = get_category(name, image_size) 32 | different_sizes = [(320, 320), (480, 480), (640, 640)] 33 | crop_size = random.choice(different_sizes) 34 | 35 | x, y = random_choice(image_size, crop_size) 36 | image = safe_crop(image, x, y, crop_size) 37 | semantic = safe_crop(semantic, x, y, crop_size) 38 | semantic = to_bgr(semantic) 39 | cv.imwrite('temp/test_safe_crop_image.png', image) 40 | cv.imwrite('temp/test_safe_crop_semantic.png', semantic) 41 | 42 | 43 | if __name__ == '__main__': 44 | unittest.main() 45 | -------------------------------------------------------------------------------- /utils.py: -------------------------------------------------------------------------------- 1 | import multiprocessing 2 | import os 3 | import random 4 | 5 | import cv2 as cv 6 | import keras.backend as K 7 | import numpy as np 8 | from tensorflow.python.client import device_lib 9 | 10 | from config import num_classes, crop_size, folder_rgb_image, seg_path, colors, img_rows, img_cols 11 | 12 | prob = np.load('data/prior_prob.npy') 13 | median = np.median(prob) 14 | factor = (median / prob).astype(np.float32) 15 | 16 | 17 | def categorical_crossentropy_with_class_rebal(y_true, y_pred): 18 | y_true = K.reshape(y_true, (-1, num_classes)) 19 | y_pred = K.reshape(y_pred, (-1, num_classes)) 20 | 21 | idx_max = K.argmax(y_true, axis=1) 22 | weights = K.gather(factor, idx_max) 23 | weights = K.reshape(weights, (-1, 1)) 24 | 25 | # multiply y_true by weights 26 | y_true = y_true * weights 27 | 28 | cross_ent = K.categorical_crossentropy(y_pred, y_true) 29 | cross_ent = K.mean(cross_ent, axis=-1) 30 | 31 | return cross_ent 32 | 33 | 34 | # getting the number of GPUs 35 | def get_available_gpus(): 36 | local_device_protos = device_lib.list_local_devices() 37 | return [x.name for x in local_device_protos if x.device_type == 'GPU'] 38 | 39 | 40 | # getting the number of CPUs 41 | def get_available_cpus(): 42 | return multiprocessing.cpu_count() 43 | 44 | 45 | def draw_str(dst, target, s): 46 | x, y = target 47 | cv.putText(dst, s, (x + 1, y + 1), cv.FONT_HERSHEY_PLAIN, 1.0, (0, 0, 0), thickness=2, lineType=cv.LINE_AA) 48 | cv.putText(dst, s, (x, y), cv.FONT_HERSHEY_PLAIN, 1.0, (255, 255, 255), lineType=cv.LINE_AA) 49 | 50 | 51 | def get_image(name): 52 | image_path = os.path.join('data', name) 53 | image_path = os.path.join(image_path, folder_rgb_image) 54 | image_name = [f for f in os.listdir(image_path) if f.endswith('.jpg')][0] 55 | image_path = os.path.join(image_path, image_name) 56 | image = cv.imread(image_path) 57 | return image 58 | 59 | 60 | def get_category(id): 61 | filename = os.path.join(seg_path, '{}.png'.format(id)) 62 | category = cv.imread(filename, 0) 63 | return category 64 | 65 | 66 | def to_bgr(category): 67 | h, w = category.shape[:2] 68 | ret = np.zeros((h, w, 3), np.float32) 69 | for r in range(h): 70 | for c in range(w): 71 | color_id = category[r, c] 72 | # print("color_id: " + str(color_id)) 73 | ret[r, c, :] = colors[color_id] 74 | ret = ret.astype(np.uint8) 75 | return ret 76 | 77 | 78 | def safe_crop(mat, x, y): 79 | if len(mat.shape) == 2: 80 | ret = np.zeros((crop_size, crop_size), np.float32) 81 | interpolation = cv.INTER_NEAREST 82 | else: 83 | ret = np.zeros((crop_size, crop_size, 3), np.float32) 84 | interpolation = cv.INTER_CUBIC 85 | crop = mat[y:y + crop_size, x:x + crop_size] 86 | h, w = crop.shape[:2] 87 | ret[0:h, 0:w] = crop 88 | if crop_size != (img_rows, img_cols): 89 | ret = cv.resize(ret, dsize=(img_rows, img_cols), interpolation=interpolation) 90 | ret = ret.astype(np.uint8) 91 | return ret 92 | 93 | 94 | def random_crop(image, category): 95 | height, width = image.shape[:2] 96 | x = random.randint(0, max(0, width - crop_size)) 97 | y = random.randint(0, max(0, height - crop_size)) 98 | image = safe_crop(image, x, y) 99 | category = safe_crop(category, x, y) 100 | return image, category 101 | -------------------------------------------------------------------------------- /valid_ids.txt: -------------------------------------------------------------------------------- 1 | 3234 2 | 2638 3 | 7475 4 | 2339 5 | 142 6 | 2756 7 | 5364 8 | 7359 9 | 5575 10 | 2358 11 | 2528 12 | 6824 13 | 3104 14 | 253 15 | 70 16 | 3358 17 | 2199 18 | 243 19 | 535 20 | 3992 21 | 3944 22 | 2116 23 | 4925 24 | 3176 25 | 6863 26 | 645 27 | 5432 28 | 4232 29 | 3882 30 | 5333 31 | 2800 32 | 6559 33 | 579 34 | 3704 35 | 4460 36 | 77 37 | 7881 38 | 1579 39 | 5389 40 | 3900 41 | 1695 42 | 1642 43 | 5302 44 | 6939 45 | 150 46 | 5303 47 | 5104 48 | 1046 49 | 4024 50 | 862 51 | 2416 52 | 2417 53 | 2014 54 | 4370 55 | 6050 56 | 5819 57 | 6632 58 | 2153 59 | 4181 60 | 1394 61 | 1996 62 | 1745 63 | 6828 64 | 1864 65 | 1801 66 | 6998 67 | 7020 68 | 7323 69 | 2786 70 | 1993 71 | 284 72 | 1692 73 | 1386 74 | 7283 75 | 515 76 | 2036 77 | 7843 78 | 573 79 | 6457 80 | 3421 81 | 5505 82 | 2734 83 | 5970 84 | 8250 85 | 2238 86 | 6242 87 | 5701 88 | 5376 89 | 4706 90 | 4457 91 | 2093 92 | 4683 93 | 4019 94 | 207 95 | 3590 96 | 879 97 | 7313 98 | 2705 99 | 298 100 | 3378 101 | 6847 102 | 924 103 | 2844 104 | 7615 105 | 4659 106 | 6603 107 | 4597 108 | 1228 109 | 4387 110 | 4715 111 | 1190 112 | 1863 113 | 1038 114 | 8088 115 | 2030 116 | 2475 117 | 6844 118 | 5857 119 | 7240 120 | 4441 121 | 5325 122 | 1954 123 | 2260 124 | 5111 125 | 605 126 | 7173 127 | 2637 128 | 860 129 | 2613 130 | 2783 131 | 2096 132 | 2450 133 | 7702 134 | 384 135 | 3958 136 | 2998 137 | 1239 138 | 4707 139 | 4239 140 | 3459 141 | 3894 142 | 1533 143 | 1037 144 | 4396 145 | 2499 146 | 3296 147 | 5420 148 | 6539 149 | 8177 150 | 7258 151 | 4972 152 | 6779 153 | 1562 154 | 2222 155 | 8188 156 | 5354 157 | 3863 158 | 7720 159 | 599 160 | 997 161 | 3427 162 | 5673 163 | 1443 164 | 2197 165 | 5623 166 | 7279 167 | 1165 168 | 4817 169 | 3377 170 | 4197 171 | 5330 172 | 5368 173 | 7411 174 | 2641 175 | 7378 176 | 4532 177 | 1212 178 | 3125 179 | 7915 180 | 3588 181 | 5649 182 | 3997 183 | 1737 184 | 5256 185 | 614 186 | 4665 187 | 2033 188 | 7776 189 | 1141 190 | 4180 191 | 103 192 | 7636 193 | 1223 194 | 3802 195 | 4662 196 | 3497 197 | 3861 198 | 1537 199 | 5712 200 | 6350 201 | 2794 202 | 5572 203 | 3409 204 | 6614 205 | 7753 206 | 4753 207 | 4914 208 | 7927 209 | 8068 210 | 1889 211 | 8121 212 | 4072 213 | 1712 214 | 3664 215 | 4534 216 | 92 217 | 6211 218 | 8030 219 | 3257 220 | 2554 221 | 503 222 | 3400 223 | 2874 224 | 2738 225 | 1040 226 | 1155 227 | 2779 228 | 6020 229 | 334 230 | 4054 231 | 5648 232 | 1328 233 | 1710 234 | 1788 235 | 4425 236 | 6671 237 | 1454 238 | 4330 239 | 2733 240 | 700 241 | 2969 242 | 8126 243 | 8194 244 | 5517 245 | 818 246 | 7249 247 | 5626 248 | 8172 249 | 902 250 | 1765 251 | 2491 252 | 3423 253 | 4292 254 | 6806 255 | 1966 256 | 6871 257 | 711 258 | 8021 259 | 5997 260 | 4938 261 | 4855 262 | 1519 263 | 2228 264 | 2862 265 | 6636 266 | 560 267 | 6620 268 | 2191 269 | 4741 270 | 5353 271 | 6624 272 | 5899 273 | 1081 274 | 5777 275 | 4879 276 | 123 277 | 6860 278 | 7110 279 | 2045 280 | 4315 281 | 5835 282 | 8173 283 | 8103 284 | 5720 285 | 5679 286 | 5841 287 | 1587 288 | 2816 289 | 3755 290 | 5032 291 | 1379 292 | 3942 293 | 4517 294 | 6946 295 | 497 296 | 913 297 | 1127 298 | 3720 299 | 7091 300 | 5799 301 | 5643 302 | 8042 303 | 2481 304 | 6376 305 | 6760 306 | 931 307 | 7831 308 | 4875 309 | 2859 310 | 3954 311 | 170 312 | 7393 313 | 3171 314 | 5940 315 | 1785 316 | 5476 317 | 6869 318 | 607 319 | 661 320 | 4337 321 | 5811 322 | 6194 323 | 878 324 | 3391 325 | 3249 326 | 6619 327 | 6690 328 | 8010 329 | 2642 330 | 7218 331 | 6820 332 | 1882 333 | 3892 334 | 3020 335 | 2337 336 | 7329 337 | 6672 338 | 5600 339 | 5914 340 | 4891 341 | 8262 342 | 93 343 | 7066 344 | 8075 345 | 3533 346 | 73 347 | 358 348 | 5089 349 | 6172 350 | 1546 351 | 7874 352 | 2990 353 | 3901 354 | 504 355 | 7488 356 | 6249 357 | 4795 358 | 7951 359 | 4098 360 | 1398 361 | 5069 362 | 313 363 | 2426 364 | 7944 365 | 1152 366 | 2995 367 | 4953 368 | 814 369 | 4063 370 | 1166 371 | 3902 372 | 6769 373 | 44 374 | 7790 375 | 5373 376 | 617 377 | 8213 378 | 7478 379 | 5151 380 | 2229 381 | 1505 382 | 4506 383 | 3734 384 | 6644 385 | 5578 386 | 6543 387 | 3803 388 | 6234 389 | 5557 390 | 5641 391 | 3659 392 | 7832 393 | 1342 394 | 4746 395 | 6600 396 | 6947 397 | 326 398 | 722 399 | 5045 400 | 3560 401 | 5494 402 | 1953 403 | 1887 404 | 1654 405 | 7217 406 | 4786 407 | 5716 408 | 758 409 | 1310 410 | 1267 411 | 1611 412 | 6181 413 | 4808 414 | 5090 415 | 3307 416 | 1316 417 | 589 418 | 8008 419 | 99 420 | 116 421 | 328 422 | 4025 423 | 3872 424 | 21 425 | 3150 426 | 7402 427 | 7871 428 | 5590 429 | 7851 430 | 3064 431 | 807 432 | 757 433 | 6178 434 | 6699 435 | 1407 436 | 6176 437 | 8105 438 | 7527 439 | 3563 440 | 1019 441 | 4117 442 | 869 443 | 1920 444 | 8241 445 | 8258 446 | 1065 447 | 5735 448 | 7239 449 | 4812 450 | 6678 451 | 2777 452 | 3464 453 | 4297 454 | 7310 455 | 2186 456 | 102 457 | 1999 458 | 3828 459 | 337 460 | 1235 461 | 972 462 | 2884 463 | 1452 464 | 6669 465 | 2474 466 | 1391 467 | 176 468 | 2407 469 | 5233 470 | 5783 471 | 1689 472 | 5821 473 | 7042 474 | 6895 475 | 2573 476 | 1464 477 | 1560 478 | 7869 479 | 3244 480 | 4663 481 | 6328 482 | 4274 483 | 867 484 | 2563 485 | 137 486 | 61 487 | 2423 488 | 7687 489 | 2558 490 | 2362 491 | 5903 492 | 8212 493 | 4322 494 | 2289 495 | 6713 496 | 1200 497 | 6232 498 | 160 499 | 1140 500 | 4562 501 | 2943 502 | 5421 503 | 6594 504 | 7077 505 | 3672 506 | 8099 507 | 5371 508 | 1641 509 | 7212 510 | 3197 511 | 3144 512 | 4883 513 | 5015 514 | 782 515 | 6269 516 | 250 517 | 4480 518 | 190 519 | 3864 520 | 963 521 | 7070 522 | 7792 523 | 6719 524 | 429 525 | 1314 526 | 5508 527 | 3575 528 | 210 529 | 3743 530 | 3214 531 | 2131 532 | 4536 533 | 2378 534 | 5591 535 | 151 536 | 2540 537 | 236 538 | 7880 539 | 2127 540 | 3347 541 | 1831 542 | 2857 543 | 1697 544 | 7991 545 | 7536 546 | 4050 547 | 2808 548 | 2640 549 | 8176 550 | 7904 551 | 1496 552 | 122 553 | 2114 554 | 254 555 | 3775 556 | 7396 557 | 3856 558 | 5852 559 | 3967 560 | 4014 561 | 4361 562 | 7613 563 | 2655 564 | 2443 565 | 1233 566 | 4317 567 | 3833 568 | 8178 569 | 7415 570 | 276 571 | 1648 572 | 4202 573 | 1662 574 | 23 575 | 8053 576 | 7457 577 | 3360 578 | 3656 579 | 5670 580 | 6224 581 | 2643 582 | 2099 583 | 4090 584 | 3503 585 | 5382 586 | 2750 587 | 2515 588 | 5392 589 | 1820 590 | 7858 591 | 6093 592 | 72 593 | 3909 594 | 4714 595 | 469 596 | 5419 597 | 5271 598 | 2790 599 | 390 600 | 6724 601 | 6964 602 | 5063 603 | 5159 604 | 905 605 | 208 606 | 6063 607 | 2920 608 | 2548 609 | 3255 610 | 3127 611 | 3274 612 | 675 613 | 1823 614 | 292 615 | 6031 616 | 835 617 | 4740 618 | 3187 619 | 1304 620 | 6395 621 | 2669 622 | 7426 623 | 1431 624 | 7707 625 | 7495 626 | 7983 627 | 3966 628 | 598 629 | 5172 630 | 4130 631 | 1725 632 | 4196 633 | 40 634 | 1198 635 | 3261 636 | 7769 637 | 4400 638 | 1866 639 | 2162 640 | 3179 641 | 2533 642 | 5571 643 | 4190 644 | 2991 645 | 2144 646 | 5000 647 | 6164 648 | 6926 649 | 8163 650 | 2762 651 | 6428 652 | 2909 653 | 3737 654 | 7422 655 | 4004 656 | 2830 657 | 2760 658 | 7948 659 | 4785 660 | 396 661 | 7766 662 | 7714 663 | 524 664 | 3827 665 | 1354 666 | 1225 667 | 4647 668 | 4002 669 | 982 670 | 6773 671 | 6462 672 | 58 673 | 643 674 | 1226 675 | 5370 676 | 3246 677 | 6097 678 | 1981 679 | 802 680 | 5601 681 | 914 682 | 2428 683 | 3717 684 | 3760 685 | 7492 686 | 7669 687 | 4435 688 | 24 689 | 6969 690 | 4023 691 | 304 692 | 5794 693 | 1495 694 | 880 695 | 4811 696 | 957 697 | 7438 698 | 7348 699 | 8050 700 | 3414 701 | 5751 702 | 1158 703 | 7165 704 | 510 705 | 2452 706 | 5131 707 | 1602 708 | 5793 709 | 6901 710 | 7203 711 | 7229 712 | 3777 713 | 6084 714 | 245 715 | 7754 716 | 1101 717 | 3148 718 | 6493 719 | 2404 720 | 1047 721 | 4573 722 | 6143 723 | 1028 724 | 319 725 | 1703 726 | 2299 727 | 2682 728 | 3006 729 | 8084 730 | 5765 731 | 5447 732 | 1777 733 | 5449 734 | 7410 735 | 1062 736 | 5769 737 | 3975 738 | 5632 739 | 5150 740 | 1681 741 | 7494 742 | 4206 743 | 6560 744 | 7039 745 | 2457 746 | 553 747 | 4021 748 | 4409 749 | 6804 750 | 3114 751 | 5369 752 | 1091 753 | 7465 754 | 7463 755 | 2061 756 | 2983 757 | 4541 758 | 84 759 | 690 760 | 4143 761 | 4627 762 | 1499 763 | 6284 764 | 7087 765 | 4236 766 | 3327 767 | 4453 768 | 5941 769 | 68 770 | 1959 771 | 2031 772 | 2081 773 | 1713 774 | 864 775 | 7361 776 | 3013 777 | 2356 778 | 6925 779 | 3939 780 | 4820 781 | 964 782 | 751 783 | 53 784 | 3325 785 | 3538 786 | 822 787 | 559 788 | 4362 789 | 5005 790 | 3753 791 | 7533 792 | 2904 793 | 1175 794 | 7745 795 | 5985 796 | 5520 797 | 7146 798 | 7610 799 | 4680 800 | 7011 801 | 4626 802 | 4068 803 | 6153 804 | 5826 805 | 7598 806 | 1757 807 | 2569 808 | 6919 809 | 7097 810 | 3203 811 | 6247 812 | 3441 813 | 7111 814 | 1103 815 | 7779 816 | 1693 817 | 3142 818 | 4798 819 | 4252 820 | 138 821 | 7456 822 | 4437 823 | 1172 824 | 7443 825 | 6499 826 | 5324 827 | 3215 828 | 4787 829 | 7060 830 | 6914 831 | 6723 832 | 6859 833 | 5016 834 | 6221 835 | 2386 836 | 4008 837 | 1720 838 | 4716 839 | 1179 840 | 5008 841 | 1666 842 | 6305 843 | 732 844 | 7076 845 | 6057 846 | 74 847 | 1952 848 | 39 849 | 6977 850 | 356 851 | 7907 852 | 4880 853 | 2636 854 | 8056 855 | 7987 856 | 642 857 | 5316 858 | 676 859 | 1400 860 | 3955 861 | 5908 862 | 6277 863 | 2683 864 | 641 865 | 4968 866 | 4755 867 | 2521 868 | 3026 869 | 5763 870 | 1355 871 | 7628 872 | 336 873 | 908 874 | 4363 875 | 2488 876 | 7403 877 | 4544 878 | 3402 879 | 2497 880 | 6275 881 | 5136 882 | 7018 883 | 6990 884 | 3646 885 | 2598 886 | 3809 887 | 371 888 | 5258 889 | 4110 890 | 6015 891 | 2978 892 | 162 893 | 3216 894 | 2257 895 | 5733 896 | 3455 897 | 5608 898 | 2399 899 | 6291 900 | 3650 901 | 7852 902 | 3585 903 | 6994 904 | 7007 905 | 7302 906 | 7038 907 | 2494 908 | 2302 909 | 4240 910 | 5029 911 | 4732 912 | 7184 913 | 4660 914 | 8218 915 | 4010 916 | 3821 917 | 6881 918 | 6204 919 | 987 920 | 4792 921 | 3265 922 | 1317 923 | 2630 924 | 6558 925 | 1991 926 | 8158 927 | 1553 928 | 4500 929 | 1825 930 | 3258 931 | 6657 932 | 7957 933 | 1296 934 | 7105 935 | 8238 936 | 890 937 | 6429 938 | 2306 939 | 362 940 | 4349 941 | 4088 942 | 7512 943 | 2960 944 | 6283 945 | 3619 946 | 6314 947 | 6550 948 | 4794 949 | 8182 950 | 1810 951 | 3729 952 | 4122 953 | 5236 954 | 7345 955 | 7044 956 | 7418 957 | 5060 958 | 6210 959 | 6055 960 | 4314 961 | 414 962 | 1436 963 | 1738 964 | 3514 965 | 6503 966 | 6768 967 | 3815 968 | 5804 969 | 706 970 | 7833 971 | 1517 972 | 5352 973 | 6280 974 | 1396 975 | 4065 976 | 5457 977 | 3916 978 | 1513 979 | 6960 980 | 174 981 | 1975 982 | 6400 983 | 543 984 | 8214 985 | 5803 986 | 6367 987 | 2739 988 | 8225 989 | 6081 990 | 13 991 | 7913 992 | 2095 993 | 1915 994 | 806 995 | 554 996 | 4148 997 | 523 998 | 7715 999 | 1209 1000 | 7679 1001 | 795 1002 | 737 1003 | 7625 1004 | 4530 1005 | 2032 1006 | 7370 1007 | 6016 1008 | 5570 1009 | 928 1010 | 5113 1011 | 7030 1012 | 3173 1013 | 3923 1014 | 4911 1015 | 5196 1016 | 1090 1017 | 7949 1018 | 633 1019 | 6182 1020 | 4936 1021 | 4042 1022 | 5741 1023 | 2927 1024 | 5125 1025 | 3891 1026 | 4711 1027 | 4892 1028 | 1855 1029 | 6010 1030 | 1441 1031 | 457 1032 | 4797 1033 | 1210 1034 | 4217 1035 | 2539 1036 | 1049 1037 | 2392 1038 | 6262 1039 | 4554 1040 | 1636 1041 | 309 1042 | 4810 1043 | 5350 1044 | 5372 1045 | 6981 1046 | 3185 1047 | 3792 1048 | 2709 1049 | 4640 1050 | 2819 1051 | 6932 1052 | 5362 1053 | 2764 1054 | 6526 1055 | 5129 1056 | 3272 1057 | 4643 1058 | 374 1059 | 8039 1060 | 2562 1061 | 7439 1062 | 5099 1063 | 2936 1064 | 4978 1065 | 5883 1066 | 5705 1067 | 7161 1068 | 2530 1069 | 2568 1070 | 6236 1071 | 6046 1072 | 6788 1073 | 8124 1074 | 7328 1075 | 1896 1076 | 854 1077 | 3818 1078 | 1646 1079 | 6882 1080 | 6853 1081 | 6072 1082 | 2384 1083 | 5183 1084 | 7484 1085 | 1645 1086 | 6445 1087 | 7295 1088 | 7681 1089 | 588 1090 | 1726 1091 | 5265 1092 | 6126 1093 | 947 1094 | 4873 1095 | 7513 1096 | 2702 1097 | 119 1098 | 5818 1099 | 8 1100 | 2926 1101 | 7728 1102 | 4617 1103 | 6147 1104 | 2375 1105 | 5001 1106 | 3837 1107 | 6652 1108 | 759 1109 | 91 1110 | 2549 1111 | 4422 1112 | 3620 1113 | 753 1114 | 1994 1115 | 7326 1116 | 401 1117 | 4802 1118 | 31 1119 | 1142 1120 | 1178 1121 | 7524 1122 | 4618 1123 | 1580 1124 | 552 1125 | 7102 1126 | 2355 1127 | 5429 1128 | 136 1129 | 2004 1130 | 2681 1131 | 7299 1132 | 2272 1133 | 6163 1134 | 65 1135 | 3159 1136 | 4832 1137 | 7473 1138 | 290 1139 | 4545 1140 | 2721 1141 | 6372 1142 | 7200 1143 | 5946 1144 | 7428 1145 | 1123 1146 | 5661 1147 | 7677 1148 | 8175 1149 | 6086 1150 | 889 1151 | 1414 1152 | 1735 1153 | 3557 1154 | 438 1155 | 2812 1156 | 3410 1157 | 595 1158 | 3700 1159 | 3806 1160 | 2516 1161 | 422 1162 | 7535 1163 | 5876 1164 | 911 1165 | 1542 1166 | 1487 1167 | 2477 1168 | 6997 1169 | 6780 1170 | 6611 1171 | 2080 1172 | 2216 1173 | 2335 1174 | 6426 1175 | 5693 1176 | 7005 1177 | 5920 1178 | 4302 1179 | 3762 1180 | 3633 1181 | 4433 1182 | 3339 1183 | 7802 1184 | 3316 1185 | 8187 1186 | 7291 1187 | 1055 1188 | 2929 1189 | 7479 1190 | 4156 1191 | 3626 1192 | 7160 1193 | 1652 1194 | 2165 1195 | 492 1196 | 1384 1197 | 7632 1198 | 2007 1199 | 4094 1200 | 3994 1201 | 4700 1202 | 4211 1203 | 7319 1204 | 8061 1205 | 7327 1206 | 5530 1207 | 3859 1208 | 6259 1209 | 4923 1210 | 5772 1211 | 4950 1212 | 7271 1213 | 5731 1214 | 5181 1215 | 2524 1216 | 6516 1217 | 4020 1218 | 6803 1219 | 171 1220 | 7017 1221 | 7151 1222 | 6540 1223 | 4358 1224 | 3095 1225 | 6191 1226 | 3924 1227 | 4344 1228 | 3394 1229 | 5556 1230 | 1439 1231 | 3002 1232 | 5726 1233 | 1936 1234 | 3811 1235 | 3241 1236 | 6835 1237 | 3780 1238 | 7304 1239 | 43 1240 | 1463 1241 | 3232 1242 | 1736 1243 | 3738 1244 | 3133 1245 | 7270 1246 | 6924 1247 | 3039 1248 | 367 1249 | 4226 1250 | 4375 1251 | 6821 1252 | 3393 1253 | 387 1254 | 848 1255 | 2723 1256 | 3675 1257 | 6357 1258 | 5094 1259 | 4419 1260 | 5145 1261 | 3499 1262 | 5118 1263 | 1637 1264 | 683 1265 | 5154 1266 | 6052 1267 | 7344 1268 | 5048 1269 | 4913 1270 | 3599 1271 | 1489 1272 | 6405 1273 | 2885 1274 | 69 1275 | 653 1276 | 3259 1277 | 6341 1278 | 2150 1279 | 1604 1280 | 2574 1281 | 3521 1282 | 3446 1283 | 5710 1284 | 6369 1285 | 5305 1286 | 2447 1287 | 6004 1288 | 5488 1289 | 5211 1290 | 2437 1291 | 5874 1292 | 4963 1293 | 4342 1294 | 2390 1295 | 1742 1296 | 3971 1297 | 3 1298 | 4629 1299 | 1092 1300 | 5622 1301 | 2964 1302 | 2949 1303 | 915 1304 | 6951 1305 | 1003 1306 | 7646 1307 | 4242 1308 | 3478 1309 | 6185 1310 | 2246 1311 | 5120 1312 | 1922 1313 | 4417 1314 | 4082 1315 | 1395 1316 | 6431 1317 | 4310 1318 | 1196 1319 | 7655 1320 | 6140 1321 | 4988 1322 | 3991 1323 | 3836 1324 | 5880 1325 | 5095 1326 | 7825 1327 | 7667 1328 | 8047 1329 | 983 1330 | 3543 1331 | 3034 1332 | 1610 1333 | 1942 1334 | 7926 1335 | 1890 1336 | 7547 1337 | 4179 1338 | 4245 1339 | 4681 1340 | 3728 1341 | 6322 1342 | 6196 1343 | 8200 1344 | 7384 1345 | 863 1346 | 5292 1347 | 4946 1348 | 5639 1349 | 4727 1350 | 1557 1351 | 8117 1352 | 870 1353 | 2136 1354 | 6476 1355 | 4027 1356 | 511 1357 | 5334 1358 | 5961 1359 | 3336 1360 | 995 1361 | 3938 1362 | 887 1363 | 6130 1364 | 2520 1365 | 7071 1366 | 6791 1367 | 476 1368 | 6593 1369 | 1501 1370 | 7369 1371 | 4761 1372 | 5053 1373 | 271 1374 | 7023 1375 | 5917 1376 | 4064 1377 | 2937 1378 | 3868 1379 | 6836 1380 | 209 1381 | 2077 1382 | 8130 1383 | 5055 1384 | 141 1385 | 7572 1386 | 7092 1387 | 619 1388 | 4424 1389 | 1856 1390 | 5709 1391 | 5274 1392 | 7497 1393 | 3584 1394 | 5214 1395 | 4219 1396 | 2923 1397 | 6985 1398 | 5403 1399 | 4030 1400 | 4192 1401 | 7592 1402 | 5516 1403 | 6192 1404 | 825 1405 | 4542 1406 | 7355 1407 | 539 1408 | 5729 1409 | 2304 1410 | 1360 1411 | 2480 1412 | 3005 1413 | 5595 1414 | 7053 1415 | 28 1416 | 749 1417 | 917 1418 | 1357 1419 | 2795 1420 | 241 1421 | 4491 1422 | 471 1423 | 6492 1424 | 3897 1425 | 7510 1426 | 1238 1427 | 7006 1428 | 5813 1429 | 6186 1430 | 5108 1431 | 14 1432 | 1902 1433 | 1448 1434 | 4652 1435 | 1374 1436 | 4598 1437 | 7309 1438 | 1490 1439 | 4390 1440 | 2379 1441 | 888 1442 | 8052 1443 | 3686 1444 | 1455 1445 | 4884 1446 | 2765 1447 | 1201 1448 | 5503 1449 | 2243 1450 | 2879 1451 | 4549 1452 | 5667 1453 | 4478 1454 | 1669 1455 | 4996 1456 | 8248 1457 | 5522 1458 | 6584 1459 | 3542 1460 | 2689 1461 | 6142 1462 | 1401 1463 | 5406 1464 | 5313 1465 | 4571 1466 | 475 1467 | 378 1468 | 1483 1469 | 4692 1470 | 1868 1471 | 2966 1472 | 5756 1473 | 6258 1474 | 3168 1475 | 2338 1476 | 4059 1477 | 2034 1478 | 7705 1479 | 7166 1480 | 1048 1481 | 7850 1482 | 3017 1483 | 4967 1484 | 90 1485 | 1484 1486 | 5833 1487 | 4998 1488 | 7546 1489 | 6630 1490 | 0 1491 | 7912 1492 | 6193 1493 | 6019 1494 | 7285 1495 | 2639 1496 | 7079 1497 | 1834 1498 | 2617 1499 | 8049 1500 | 6238 1501 | 3750 1502 | 3368 1503 | 4547 1504 | 8154 1505 | 735 1506 | 5327 1507 | 8252 1508 | 7445 1509 | 2866 1510 | 608 1511 | 1727 1512 | 7992 1513 | 3522 1514 | 5617 1515 | 2277 1516 | 5781 1517 | 8135 1518 | 4582 1519 | 2826 1520 | 1373 1521 | 3607 1522 | 5565 1523 | 1563 1524 | 5801 1525 | 3083 1526 | 7481 1527 | 4989 1528 | 3365 1529 | 7444 1530 | 4295 1531 | 5630 1532 | 547 1533 | 2846 1534 | 7072 1535 | 4418 1536 | 601 1537 | 5023 1538 | 6299 1539 | 5795 1540 | 2000 1541 | 4287 1542 | 7334 1543 | 7965 1544 | 2584 1545 | 2917 1546 | 6781 1547 | 114 1548 | 3855 1549 | 5919 1550 | 1574 1551 | 6755 1552 | 1199 1553 | 435 1554 | 6822 1555 | 7835 1556 | 4076 1557 | 4514 1558 | 5933 1559 | 5816 1560 | 8198 1561 | 7440 1562 | 286 1563 | 4488 1564 | 6481 1565 | 2453 1566 | 3493 1567 | 2527 1568 | 1340 1569 | 460 1570 | 1368 1571 | 4789 1572 | 986 1573 | 3876 1574 | 7752 1575 | 5018 1576 | 4006 1577 | 3131 1578 | 7048 1579 | 8005 1580 | 4728 1581 | 577 1582 | 6961 1583 | 3952 1584 | 1293 1585 | 7642 1586 | 8085 1587 | 663 1588 | 1673 1589 | 4421 1590 | 6944 1591 | 6245 1592 | 3160 1593 | 5645 1594 | 3051 1595 | 6173 1596 | 2282 1597 | 7713 1598 | 6036 1599 | 2449 1600 | 3012 1601 | 5451 1602 | 178 1603 | 2892 1604 | 6639 1605 | 8221 1606 | 4364 1607 | 587 1608 | 3576 1609 | 1709 1610 | 4833 1611 | 7682 1612 | 226 1613 | 7195 1614 | 5142 1615 | 2269 1616 | 335 1617 | 1381 1618 | 299 1619 | 330 1620 | 513 1621 | 6557 1622 | 1840 1623 | 6927 1624 | 5155 1625 | 3501 1626 | 2736 1627 | 4850 1628 | 4380 1629 | 4837 1630 | 7997 1631 | 2588 1632 | 3424 1633 | 4722 1634 | 5501 1635 | 6668 1636 | 233 1637 | 189 1638 | 5989 1639 | 2895 1640 | 2403 1641 | 3808 1642 | 3695 1643 | 693 1644 | 6200 1645 | 1865 1646 | 8054 1647 | 4408 1648 | 946 1649 | 2374 1650 | 4449 1651 | 7797 1652 | 5040 1653 | 1833 1654 | 7269 1655 | 3655 1656 | 4166 1657 | 3301 1658 | 3352 1659 | 5235 1660 | 1731 1661 | 3353 1662 | 4269 1663 | 392 1664 | 2252 1665 | 7394 1666 | 6012 1667 | 7947 1668 | 2502 1669 | 5461 1670 | 4439 1671 | 2013 1672 | 6725 1673 | 1187 1674 | 1973 1675 | 5937 1676 | 2773 1677 | 1778 1678 | 5193 1679 | 1150 1680 | 6418 1681 | 5627 1682 | 5889 1683 | 727 1684 | 1408 1685 | 2961 1686 | 242 1687 | 6861 1688 | 5114 1689 | 5603 1690 | 308 1691 | 2107 1692 | 4829 1693 | 5535 1694 | 6790 1695 | 240 1696 | 1479 1697 | 5106 1698 | 134 1699 | 973 1700 | 6515 1701 | 2401 1702 | 6572 1703 | 4133 1704 | 952 1705 | 6109 1706 | 5363 1707 | 682 1708 | 4604 1709 | 6714 1710 | 6334 1711 | 1042 1712 | 6519 1713 | 6297 1714 | 3661 1715 | 2908 1716 | 1219 1717 | 2438 1718 | 3906 1719 | 5448 1720 | 106 1721 | 1241 1722 | 111 1723 | 6949 1724 | 7395 1725 | 3102 1726 | 4129 1727 | 7504 1728 | 7650 1729 | 6855 1730 | 4075 1731 | 8204 1732 | 5604 1733 | 6849 1734 | 1819 1735 | 6958 1736 | 5440 1737 | 6763 1738 | 4388 1739 | 3718 1740 | 7268 1741 | 2780 1742 | 7604 1743 | 2249 1744 | 5438 1745 | 2587 1746 | 3784 1747 | 8243 1748 | 5486 1749 | 5232 1750 | 4112 1751 | 5401 1752 | 18 1753 | 7657 1754 | 7556 1755 | 6520 1756 | 6134 1757 | 34 1758 | 810 1759 | 4807 1760 | 2370 1761 | 2792 1762 | 46 1763 | 5885 1764 | 5879 1765 | 5858 1766 | 2056 1767 | 5295 1768 | 844 1769 | 5101 1770 | 6222 1771 | 2979 1772 | 6003 1773 | 8001 1774 | 2128 1775 | 2239 1776 | 1884 1777 | 1779 1778 | 1307 1779 | 258 1780 | 5318 1781 | 4990 1782 | 3621 1783 | 3869 1784 | 5977 1785 | 6716 1786 | 7280 1787 | 1618 1788 | 4733 1789 | 2837 1790 | 826 1791 | 4521 1792 | 273 1793 | 3730 1794 | 2503 1795 | 2054 1796 | 7459 1797 | 2953 1798 | 6195 1799 | 4036 1800 | 1899 1801 | 3724 1802 | 4558 1803 | 3190 1804 | 494 1805 | 6320 1806 | 3323 1807 | 3644 1808 | 602 1809 | 5674 1810 | 718 1811 | 2915 1812 | 3458 1813 | 3831 1814 | 6226 1815 | 6453 1816 | 7988 1817 | 780 1818 | 2631 1819 | 6370 1820 | 5413 1821 | 6184 1822 | 3649 1823 | 1561 1824 | 1288 1825 | 6321 1826 | 7311 1827 | 7789 1828 | 7332 1829 | 6179 1830 | 388 1831 | 788 1832 | 5347 1833 | 2523 1834 | 801 1835 | 5760 1836 | 2090 1837 | 6830 1838 | 8055 1839 | 4904 1840 | 2327 1841 | 394 1842 | 1205 1843 | 8162 1844 | 4346 1845 | 7231 1846 | 3371 1847 | 1349 1848 | 2735 1849 | 5854 1850 | 3334 1851 | 229 1852 | 4576 1853 | 714 1854 | 5621 1855 | 3340 1856 | 4862 1857 | 3893 1858 | 877 1859 | 7840 1860 | 6054 1861 | 2078 1862 | 1102 1863 | 4735 1864 | 2334 1865 | 3510 1866 | 934 1867 | 6637 1868 | 4198 1869 | 4824 1870 | 4357 1871 | 5820 1872 | 1221 1873 | 4854 1874 | 821 1875 | 6441 1876 | 3865 1877 | 7342 1878 | 2151 1879 | 5197 1880 | 278 1881 | 2891 1882 | 7895 1883 | 27 1884 | 7883 1885 | 2478 1886 | 16 1887 | 4955 1888 | 5574 1889 | 6549 1890 | 1608 1891 | 4550 1892 | 624 1893 | 3363 1894 | 2217 1895 | 3726 1896 | 8237 1897 | 2591 1898 | 1292 1899 | 8143 1900 | 6731 1901 | 1271 1902 | 5584 1903 | 297 1904 | 1245 1905 | 323 1906 | 8266 1907 | 2297 1908 | 7978 1909 | 8132 1910 | 1568 1911 | 3139 1912 | 1702 1913 | 1510 1914 | 2781 1915 | 4275 1916 | 4432 1917 | 8215 1918 | 1795 1919 | 2670 1920 | 3369 1921 | 1640 1922 | 402 1923 | 7286 1924 | 133 1925 | 5200 1926 | 87 1927 | 3572 1928 | 7706 1929 | 3239 1930 | 747 1931 | 2715 1932 | 6842 1933 | 5408 1934 | 4490 1935 | 3822 1936 | 3839 1937 | 3170 1938 | 3548 1939 | 7783 1940 | 7467 1941 | 6827 1942 | 7540 1943 | 4070 1944 | 4467 1945 | 883 1946 | 3130 1947 | 2413 1948 | 4974 1949 | 6595 1950 | 5638 1951 | 452 1952 | 739 1953 | 4596 1954 | 3463 1955 | 2038 1956 | 7416 1957 | 7771 1958 | 7683 1959 | 3617 1960 | 7129 1961 | 2755 1962 | 7952 1963 | 5987 1964 | 550 1965 | 3181 1966 | 1466 1967 | 6047 1968 | 2106 1969 | 6787 1970 | 7814 1971 | 7503 1972 | 2283 1973 | 2445 1974 | 3519 1975 | 486 1976 | 2839 1977 | 4165 1978 | 1600 1979 | 6170 1980 | 4859 1981 | 4720 1982 | 8265 1983 | 3887 1984 | 3981 1985 | 3654 1986 | 5725 1987 | 2440 1988 | 3884 1989 | 3571 1990 | 5953 1991 | 2026 1992 | 1616 1993 | 6131 1994 | 3667 1995 | 1691 1996 | 1275 1997 | 4183 1998 | 7900 1999 | 5394 2000 | 537 2001 | 7778 2002 | 1589 2003 | 49 2004 | 7651 2005 | 6902 2006 | 5361 2007 | 1312 2008 | 7338 2009 | 2405 2010 | 7196 2011 | 7888 2012 | 4093 2013 | 5964 2014 | 5002 2015 | 713 2016 | 2086 2017 | 56 2018 | 6721 2019 | 830 2020 | 5109 2021 | 1596 2022 | 5328 2023 | 7573 2024 | 3609 2025 | 398 2026 | 7587 2027 | 3663 2028 | 5425 2029 | 2267 2030 | 5086 2031 | 5676 2032 | 3569 2033 | 6511 2034 | 2366 2035 | 2340 2036 | 3294 2037 | 4365 2038 | 3511 2039 | 6616 2040 | 5497 2041 | 7115 2042 | 7656 2043 | 1385 2044 | 3825 2045 | 3615 2046 | 1909 2047 | 2270 2048 | 4147 2049 | 3164 2050 | 3961 2051 | 7103 2052 | 259 2053 | 8224 2054 | 3793 2055 | 411 2056 | 6507 2057 | 6765 2058 | 5831 2059 | 397 2060 | 4191 2061 | 6992 2062 | 7600 2063 | 2469 2064 | 2255 2065 | 5615 2066 | 2977 2067 | 186 -------------------------------------------------------------------------------- /vgg16.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | import keras.backend as K 4 | from keras.layers import Conv2D, ZeroPadding2D, MaxPooling2D 5 | from keras.layers import Dense, Dropout, Flatten 6 | from keras.models import Sequential 7 | 8 | 9 | def vgg16_model(img_rows, img_cols, channel=3): 10 | model = Sequential() 11 | # Encoder 12 | model.add(ZeroPadding2D((1, 1), input_shape=(img_rows, img_cols, channel), name='input')) 13 | model.add(Conv2D(64, (3, 3), activation='relu', name='conv1_1')) 14 | model.add(ZeroPadding2D((1, 1))) 15 | model.add(Conv2D(64, (3, 3), activation='relu', name='conv1_2')) 16 | model.add(MaxPooling2D((2, 2), strides=(2, 2))) 17 | 18 | model.add(ZeroPadding2D((1, 1))) 19 | model.add(Conv2D(128, (3, 3), activation='relu', name='conv2_1')) 20 | model.add(ZeroPadding2D((1, 1))) 21 | model.add(Conv2D(128, (3, 3), activation='relu', name='conv2_2')) 22 | model.add(MaxPooling2D((2, 2), strides=(2, 2))) 23 | 24 | model.add(ZeroPadding2D((1, 1))) 25 | model.add(Conv2D(256, (3, 3), activation='relu', name='conv3_1')) 26 | model.add(ZeroPadding2D((1, 1))) 27 | model.add(Conv2D(256, (3, 3), activation='relu', name='conv3_2')) 28 | model.add(ZeroPadding2D((1, 1))) 29 | model.add(Conv2D(256, (3, 3), activation='relu', name='conv3_3')) 30 | model.add(MaxPooling2D((2, 2), strides=(2, 2))) 31 | 32 | model.add(ZeroPadding2D((1, 1))) 33 | model.add(Conv2D(512, (3, 3), activation='relu', name='conv4_1')) 34 | model.add(ZeroPadding2D((1, 1))) 35 | model.add(Conv2D(512, (3, 3), activation='relu', name='conv4_2')) 36 | model.add(ZeroPadding2D((1, 1))) 37 | model.add(Conv2D(512, (3, 3), activation='relu', name='conv4_3')) 38 | model.add(MaxPooling2D((2, 2), strides=(2, 2))) 39 | 40 | model.add(ZeroPadding2D((1, 1))) 41 | model.add(Conv2D(512, (3, 3), activation='relu', name='conv5_1')) 42 | model.add(ZeroPadding2D((1, 1))) 43 | model.add(Conv2D(512, (3, 3), activation='relu', name='conv5_2')) 44 | model.add(ZeroPadding2D((1, 1))) 45 | model.add(Conv2D(512, (3, 3), activation='relu', name='conv5_3')) 46 | model.add(MaxPooling2D((2, 2), strides=(2, 2))) 47 | 48 | # Add Fully Connected Layer 49 | model.add(Flatten(name='flatten')) 50 | model.add(Dense(4096, activation='relu', name='dense1')) 51 | model.add(Dropout(0.5)) 52 | model.add(Dense(4096, activation='relu', name='dense2')) 53 | model.add(Dropout(0.5)) 54 | model.add(Dense(1000, activation='softmax', name='softmax')) 55 | 56 | # Loads ImageNet pre-trained data 57 | weights_path = 'models/vgg16_weights_tf_dim_ordering_tf_kernels.h5' 58 | model.load_weights(weights_path) 59 | 60 | return model 61 | 62 | 63 | if __name__ == '__main__': 64 | model = vgg16_model(224, 224, 3) 65 | # input_layer = model.get_layer('input') 66 | print(model.summary()) 67 | 68 | K.clear_session() 69 | --------------------------------------------------------------------------------