diff --git a/examples/struc2vec/README.md b/examples/struc2vec/README.md new file mode 100644 index 00000000..c9ee442f --- /dev/null +++ b/examples/struc2vec/README.md @@ -0,0 +1,47 @@ +# Struc2vec: Learning Node Representations from Structural Identity +[Struc2vec](https://arxiv.org/abs/1704.03165) is is a concept of symmetry in which network nodes are identified according to the network structure and their relationship to other nodes. A novel and flexible framework for learning latent representations is proposed in the paper of struc2vec. We reproduce Struc2vec algorithm in the PGL. + +### DataSet +The paper of use air-traffic network to valid algorithm of Struc2vec. +The each edge in the dataset indicate that having one flight between the airports. Using the the connection between the airports to predict the level of activity. The following dataset will be used to valid the algorithm accuracy.Data collected from the Bureau of Transportation Statistics2 from January to October, 2016. The network has 1,190 nodes, 13,599 edges (diameter is 8). [Link](https://www.transtats.bts.gov/) + +- usa-airports.edgelist +- labels-usa-airports.txt + +### Dependencies +If use want to use the struc2vec model in pgl, please install the gensim, pathos, fastdtw additional. +- paddlepaddle>=1.6 +- pgl +- gensim +- pathos +- fastdtw + +### How to use +For examples, we want to train and valid the Struc2vec model on American airpot dataset +```python + python train.py --edge_file input_path/usa-airports.edgelist --label_file input_path/labels-usa-airports.txt --do_train True --opt2 True +``` + +### Hyperparameters +| Args| Meaning| +| ------------- | ------------- | +| edge_file | input file name for edges| +| label_file | input file name for node label| +| emb_file | input file name for node label| +| walk_depth| The step3 for random walk| +| opt1| The flag to open optimization 1 to reduce time cost| +| opt2| The flag to open optimization 2 to reduce time cost| +| w2v_emb_size| The dims of output the word2vec embedding| +| w2v_window_size| The context length of word2vec| +| w2v_epoch| The num of epoch to train the model.| +| train| The flag to run the struc2vec algorithm to get the w2v embedding| +| valid| The flag to use the w2v embedding to valid the classification result| +| num_class| The num of class in classification model to be trained| + +### Experiment results +| Dataset | Model | Metric | PGL Result | Paper repo Result | +| ------------- | ------------- |------------- |------------- |------------- | +| American airport dataset | Struc2vec without time cost optimization| ACC |0.6483|0.6340| +| American airport dataset | Struc2vec with optimization 1| ACC |0.6466|0.6242| +| American airport dataset | Struc2vec with optimization 2| ACC |0.6252|0.6241| +| American airport dataset | Struc2vec with optimization1&2| ACC |0.6226|0.6083| diff --git a/examples/struc2vec/data.py b/examples/struc2vec/data.py new file mode 100644 index 00000000..ddeff072 --- /dev/null +++ b/examples/struc2vec/data.py @@ -0,0 +1,498 @@ +# Copyright (c) 2021 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +""" +data.py +""" +import math +import random +import numpy as np +from paddle.io import Dataset +from pgl import graph +from pgl.graph_kernel import alias_sample_build_table +from pgl.sampling import alias_sample +from pgl.utils.logger import log + + +def selectDegrees(degree_root, index_left, index_right, degree_left, + degree_right): + """ + Select the which degree to be next step. + """ + + if index_left == -1: + degree_now = degree_right + elif index_right == -1: + degree_now = degree_left + elif (abs(degree_left - degree_root) < abs(degree_right - degree_root)): + degree_now = degree_left + else: + degree_now = degree_right + + return degree_now + + +class StrucVecGraph(): + """ + The class wrapper the PGL graph, the class involve the funtions to implement struc2vec algorithm. + """ + + def __init__(self, graph, nodes, tag, opt1, opt2, opt3, depth, num_walks, + walk_depth): + self.graph = graph + self.nodes = nodes + self.opt1 = opt1 + self.opt2 = opt2 + self.opt3 = opt3 + self.num_walks = num_walks + self.walk_depth = walk_depth + self.tag = tag + self.degree_list = dict() + self.degree2nodes = dict() + self.node2degree = dict() + self.distance = dict() + self.degrees_sorted = None + self.layer_distance = dict() + self.layer_message = dict() + self.layer_norm_distance = dict() + self.sample_alias = dict() + self.sample_events = dict() + self.layer_node_weight_count = dict() + if opt3 == True: + self.depth = depth + else: + self.depth = 1000 + + def distance_func(self, a, b): + """ + The basic function to calculate the distance between two list with different length. + """ + ep = 0.5 + m = max(a, b) + ep + mi = min(a, b) + ep + return ((m / mi) - 1) + + def distance_opt1_func(self, a, b): + """ + The optimization function to calculate the distance between two list with list count. + """ + ep = 0.5 + m = max(a[0], b[0]) + ep + mi = min(a[0], b[0]) + ep + return ((m / mi) - 1) * max(a[1], b[1]) + + def add_degree_todict(self, node_id, degree, depth, opt1): + """ + output the degree of each node to a dict + """ + if node_id not in self.degree_list: + self.degree_list[node_id] = dict() + if depth not in self.degree_list[node_id]: + self.degree_list[node_id][depth] = None + if opt1: + degree = np.array(np.unique(degree, return_counts=True)).T + self.degree_list[node_id][depth] = degree + + def output_degree_with_depth(self, depth, opt1): + """ + according to the BFS to get the degree of each layer + """ + degree_dict = dict() + + for node in self.nodes: + start_node = node + cur_node = node + cur_dep = 0 + flag_visit = set() + while cur_node is not None and cur_dep < depth: + if not isinstance(cur_node, list): + cur_node = [cur_node] + filter_node = [] + for node in cur_node: + if node not in flag_visit: + flag_visit.add(node) + filter_node.append(node) + cur_node = filter_node + if len(cur_node) == 0: + break + outdegree = self.graph.outdegree(cur_node) + mask = (outdegree != 0) + if np.any(mask): + outdegree = np.sort(outdegree[mask]) + else: + break + # save the layer degree message to dict + self.add_degree_todict(start_node, outdegree[mask], cur_dep, + opt1) + succes = self.graph.successor(cur_node) + cur_node = [] + for succ in succes: + if isinstance(succ, np.ndarray): + cur_node.extend(succ.flatten().tolist()) + elif isinstance(succ, int): + cur_node.append(succ) + cur_node = list(set(cur_node)) + cur_dep += 1 + + def get_sim_neighbours(self, node, selected_num): + """ + Select the neighours by using the degree similiarity. + """ + degree = self.node2degree[node] + select_count = 0 + node_nbh_list = list() + for node_nbh in self.degree2nodes[degree]: + if node != node_nbh: + node_nbh_list.append(node_nbh) + select_count += 1 + if select_count > selected_num: + return node_nbh_list + degree_vec_len = len(self.degrees_sorted) + index_degree = self.degrees_sorted.index(degree) + + index_left = -1 + index_right = -1 + degree_left = -1 + degree_right = -1 + + if index_degree != -1 and index_degree >= 1: + index_left = index_degree - 1 + if index_degree != -1 and index_degree <= degree_vec_len - 2: + index_right = index_degree + 1 + if index_left == -1 and index_right == -1: + return node_nbh_list + if index_left != -1: + degree_left = self.degrees_sorted[index_left] + if index_right != -1: + degree_right = self.degrees_sorted[index_right] + select_degree = selectDegrees(degree, index_left, index_right, + degree_left, degree_right) + while True: + for node_nbh in self.degree2nodes[select_degree]: + if node_nbh != node: + node_nbh_list.append(node_nbh) + select_count += 1 + if select_count > selected_num: + return node_nbh_list + + if select_degree == degree_left: + if index_left >= 1: + index_left = index_left - 1 + else: + index_left = -1 + + else: + if index_right <= degree_vec_len - 2: + index_right += 1 + else: + index_right = -1 + + if index_left == -1 and index_right == -1: + return node_nbh_list + + if index_left != -1: + degree_left = self.degrees_sorted[index_left] + if index_right != -1: + degree_right = self.degrees_sorted[index_right] + select_degree = selectDegrees(degree, index_left, index_right, + degree_left, degree_right) + return node_nbh_list + + def calc_node_with_neighbor_dtw_opt2(self, src): + """ + Use the optimization algorithm to reduce the next steps range. + """ + from fastdtw import fastdtw + node_nbh_list = self.get_sim_neighbours(src, self.selected_nbh_nums) + distance = {} + for dist in node_nbh_list: + calc_layer_len = min(len(self.degree_list[src]), \ + len(self.degree_list[dist])) + distance_iteration = 0.0 + distance[src, dist] = {} + for layer in range(0, calc_layer_len): + src_layer = self.degree_list[src][layer] + dist_layer = self.degree_list[dist][layer] + weight, path = fastdtw( + src_layer, + dist_layer, + radius=1, + dist=self.distance_calc_func) + distance_iteration += weight + distance[src, dist][layer] = distance_iteration + return distance + + def calc_node_with_neighbor_dtw(self, src_index): + """ + No optimization algorithm to reduce the next steps range, just calculate distance of all path. + """ + from fastdtw import fastdtw + distance = {} + for dist_index in range(src_index + 1, self.graph.num_nodes - 1): + src = self.nodes[src_index] + dist = self.nodes[dist_index] + calc_layer_len = min(len(self.degree_list[src]), \ + len(self.degree_list[dist])) + distance_iteration = 0.0 + distance[src, dist] = {} + for layer in range(0, calc_layer_len): + src_layer = self.degree_list[src][layer] + dist_layer = self.degree_list[dist][layer] + weight, path = fastdtw( + src_layer, + dist_layer, + radius=1, + dist=self.distance_calc_func) + distance_iteration += weight + distance[src, dist][layer] = distance_iteration + return distance + + def calc_distances_between_nodes(self): + """ + Use the dtw algorithm to calculate the distance between nodes. + """ + from fastdtw import fastdtw + from pathos.multiprocessing import Pool + # decide use which algo to use + if self.opt1 == True: + self.distance_calc_func = self.distance_opt1_func + else: + self.distance_calc_func = self.distance_func + + dtws = [] + if self.opt2: + depth = 0 + for node in self.nodes: + if node in self.degree_list: + if depth in self.degree_list[node]: + degree = self.degree_list[node][depth] + if self.opt1: + degree = degree[0][0] + else: + degree = degree[0] + if degree not in self.degree2nodes: + self.degree2nodes[degree] = [] + if node not in self.node2degree: + self.node2degree[node] = degree + self.degree2nodes[degree].append(node) + # select the log(n) node to select data + degree_keys = self.degree2nodes.keys() + degree_keys = np.array(list(degree_keys), dtype='int') + self.degrees_sorted = list(np.sort(degree_keys)) + selected_nbh_nums = 2 * math.log(self.graph.num_nodes - 1, 2) + self.selected_nbh_nums = selected_nbh_nums + + pool = Pool(10) + dtws = pool.map(self.calc_node_with_neighbor_dtw_opt2, self.nodes) + pool.close() + pool.join() + else: + src_indices = range(0, self.graph.num_nodes - 2) + + pool = Pool(10) + dtws = pool.map(self.calc_node_with_neighbor_dtw, src_indices) + pool.close() + pool.join() + log.info('calc the dtw done.') + for dtw in dtws: + self.distance.update(dtw) + + def normlization_layer_weight(self): + """ + Normlation the distance between nodes, weight[1, 2, ....N] = distance[1, 2, ......N] / sum(distance) + """ + for sd_keys, layer_weight in self.distance.items(): + src, dist = sd_keys + layers, weights = layer_weight.keys(), layer_weight.values() + for layer, weight in zip(layers, weights): + if layer not in self.layer_distance: + self.layer_distance[layer] = {} + if layer not in self.layer_message: + self.layer_message[layer] = {} + self.layer_distance[layer][src, dist] = weight + + if src not in self.layer_message[layer]: + self.layer_message[layer][src] = [] + if dist not in self.layer_message[layer]: + self.layer_message[layer][dist] = [] + self.layer_message[layer][src].append(dist) + self.layer_message[layer][dist].append(src) + + # normalization the layer weight + for i in range(0, self.depth): + layer_weight = 0.0 + layer_count = 0 + if i not in self.layer_norm_distance: + self.layer_norm_distance[i] = {} + if i not in self.sample_alias: + self.sample_alias[i] = {} + if i not in self.sample_events: + self.sample_events[i] = {} + if i not in self.layer_message: + continue + for node in self.nodes: + if node not in self.layer_message[i]: + continue + nbhs = self.layer_message[i][node] + weights = [] + sum_weight = 0.0 + for dist in nbhs: + if (node, dist) in self.layer_distance[i]: + weight = self.layer_distance[i][node, dist] + else: + weight = self.layer_distance[i][dist, node] + weight = np.exp(-float(weight)) + weights.append(weight) + # norm the weight + sum_weight = sum(weights) + if sum_weight == 0.0: + sum_weight = 1.0 + weight_list = [weight / sum_weight for weight in weights] + self.layer_norm_distance[i][node] = weight_list + alias, events = alias_sample_build_table(np.array(weight_list)) + self.sample_alias[i][node] = alias + self.sample_events[i][node] = events + layer_weight += 1.0 + #layer_weight += sum(weight_list) + layer_count += len(weights) + layer_avg_weight = layer_weight / (1.0 * layer_count) + + self.layer_node_weight_count[i] = dict() + for node in self.nodes: + if node not in self.layer_norm_distance[i]: + continue + weight_list = self.layer_norm_distance[i][node] + node_cnt = 0 + for weight in weight_list: + if weight > layer_avg_weight: + node_cnt += 1 + self.layer_node_weight_count[i][node] = node_cnt + + def choose_neighbor_alias_method(self, node, layer): + """ + Choose the neighhor with strategy of random + """ + weight_list = self.layer_norm_distance[layer][node] + neighbors = self.layer_message[layer][node] + select_idx = alias_sample(1, self.sample_alias[layer][node], + self.sample_events[layer][node]) + return neighbors[select_idx[0]] + + def choose_layer_to_walk(self, node, layer): + """ + Choose the layer to random walk + """ + random_value = random.random() + higher_neigbours_nums = self.layer_node_weight_count[layer][node] + prob = math.log(higher_neigbours_nums + math.e) + prob = prob / (1.0 + prob) + if random_value > prob: + if layer > 0: + layer = layer - 1 + else: + if layer + 1 in self.layer_message and \ + node in self.layer_message[layer + 1]: + layer = layer + 1 + return layer + + def executor_random_walk(self, walk_process_id): + """ + The main function to execute the structual random walk + """ + nodes = self.nodes + random.shuffle(nodes) + walk_path_all_nodes = [] + for node in nodes: + walk_path = [] + walk_path.append(node) + layer = 0 + while len(walk_path) < self.walk_depth: + prop = random.random() + if prop < 0.3: + node = self.choose_neighbor_alias_method(node, layer) + walk_path.append(node) + else: + layer = self.choose_layer_to_walk(node, layer) + walk_path_all_nodes.append(walk_path) + return walk_path_all_nodes + + def random_walk_structual_sim(self): + """ + According to struct distance to walk the path + """ + from pathos.multiprocessing import Pool + log.info('start process struc2vec random walk.') + walks_process_ids = [i for i in range(0, self.num_walks)] + pool = Pool(10) + walks = pool.map(self.executor_random_walk, walks_process_ids) + pool.close() + pool.join() + + #save the final walk result + file_result = open(self.tag + "_walk_path", "w") + for walk in walks: + for walk_node in walk: + walk_node_str = " ".join([str(node) for node in walk_node]) + file_result.write(walk_node_str + "\n") + file_result.close() + log.info('process struc2vec random walk done.') + + +class EdgeDataset(): + """ + The data load just read the edge file, at the same time reindex the source and destination. + """ + + def __init__(self, undirected=True, data_dir=""): + self._undirected = undirected + self._data_dir = data_dir + self._load_edge_data() + + def _load_edge_data(self): + node_sets = set() + edges = [] + with open(self._data_dir, "r") as f: + node_dict = dict() + for line in f: + src, dist = [ + int(data) for data in line.strip("\n\r").split(" ") + ] + if src not in node_dict: + node_dict[src] = len(node_dict) + 1 + src = node_dict[src] + if dist not in node_dict: + node_dict[dist] = len(node_dict) + 1 + dist = node_dict[dist] + node_sets.add(src) + node_sets.add(dist) + edges.append((src, dist)) + if self._undirected: + edges.append((dist, src)) + + num_nodes = len(node_sets) + self.graph = graph.Graph(num_nodes=num_nodes + 1, edges=edges) + self.nodes = np.array(list(node_sets)) + self.node_dict = node_dict + + +class MLPDataset(Dataset): + def __init__(self, sample_datas): + self.sample_datas = sample_datas + + def __getitem__(self, idx): + return np.array( + self.sample_datas[idx][1:-1], dtype="float32"), np.array( + self.sample_datas[idx][-1], dtype="int64") + + def __len__(self): + return len(self.sample_datas) diff --git a/examples/struc2vec/input_path/labels-usa-airports.txt b/examples/struc2vec/input_path/labels-usa-airports.txt new file mode 100644 index 00000000..7eefe8b1 --- /dev/null +++ b/examples/struc2vec/input_path/labels-usa-airports.txt @@ -0,0 +1,1191 @@ +node label +10241 1 +10243 2 +10245 0 +16390 1 +10247 1 +12297 2 +16727 3 +10257 0 +12307 2 +16729 3 +12314 3 +12315 2 +10268 1 +10272 1 +12321 1 +12323 0 +12324 3 +12294 2 +10278 2 +10279 0 +11612 0 +16428 1 +16429 2 +12335 1 +12339 0 +12638 2 +12343 1 +16441 3 +10298 1 +10299 0 +12348 2 +14397 2 +10304 1 +15030 3 +16454 3 +12641 2 +10313 2 +11834 2 +12363 1 +14412 3 +12365 1 +16463 3 +10322 2 +14691 3 +10324 2 +10325 2 +12375 1 +14424 3 +10329 2 +10333 1 +14430 3 +16479 2 +15376 0 +14435 3 +12388 3 +12389 0 +12390 2 +12391 0 +12392 3 +12394 3 +16743 3 +10348 3 +12397 0 +14447 3 +16744 3 +12402 0 +14457 0 +12412 1 +16746 3 +16515 3 +10372 0 +14470 1 +15041 0 +16520 3 +14474 1 +14475 2 +10380 3 +14477 2 +16527 3 +10385 3 +12436 3 +14485 1 +14487 0 +14488 1 +12441 0 +14492 0 +10397 0 +16543 3 +12448 0 +12451 0 +10405 1 +12455 1 +10408 0 +10409 1 +10414 1 +15389 0 +14512 0 +14736 2 +10419 3 +15154 2 +10423 0 +14520 1 +12207 1 +14524 0 +14259 1 +12478 0 +10431 0 +12320 2 +10434 0 +15051 1 +12484 3 +14533 2 +14534 1 +16584 2 +11980 0 +14539 1 +12492 1 +12494 1 +14543 1 +14254 0 +10275 0 +14551 2 +14553 2 +16603 2 +10460 3 +14557 3 +12511 1 +10466 0 +12078 3 +10469 0 +12519 1 +14716 0 +14570 0 +12523 0 +14572 2 +14574 0 +15741 0 +14576 0 +14577 2 +12206 0 +15011 2 +14582 1 +16634 3 +14588 0 +15061 2 +12544 0 +16643 3 +12549 1 +11697 0 +16647 1 +12553 0 +16651 3 +11637 0 +16654 3 +10511 3 +14262 0 +14617 3 +14618 2 +12571 2 +16668 3 +11057 0 +12574 2 +12576 3 +10529 0 +14627 1 +14628 2 +14630 2 +10535 2 +16680 3 +14633 0 +16682 3 +14635 0 +10540 1 +12591 2 +13704 2 +15411 0 +14046 2 +12598 3 +10551 0 +14648 1 +15412 0 +16698 3 +16737 3 +10557 1 +10558 1 +10559 1 +14656 2 +10561 0 +10562 2 +16709 3 +16710 3 +12615 1 +10569 2 +16715 3 +12621 2 +12622 3 +14672 2 +10577 0 +14674 0 +16723 3 +16724 3 +10581 0 +14679 0 +16728 3 +12633 2 +16730 3 +14683 0 +14685 0 +10590 0 +10221 1 +16736 3 +14689 0 +16738 3 +16739 3 +16741 3 +16742 3 +10599 0 +14696 0 +12649 1 +14698 0 +12652 1 +12653 2 +14704 0 +14706 3 +14709 0 +14711 0 +14712 2 +10617 3 +10620 0 +14718 1 +12671 2 +14400 3 +10627 0 +12676 2 +10630 2 +10631 1 +15497 1 +14730 0 +10640 1 +14738 1 +10643 1 +10990 0 +10647 1 +14744 3 +14745 1 +14747 0 +15325 2 +10654 1 +14751 3 +12704 1 +12705 2 +12708 1 +12709 1 +14761 0 +10666 0 +10994 0 +10670 2 +12719 1 +12720 2 +12721 1 +14771 0 +10676 0 +14750 3 +11337 0 +12728 1 +10996 2 +14778 3 +10683 1 +10685 0 +14783 0 +12737 2 +10693 0 +12743 2 +14792 3 +12745 2 +14794 0 +12748 2 +14797 1 +11341 3 +14802 1 +12755 2 +14804 1 +14805 1 +12758 0 +10713 0 +10715 3 +14812 3 +14814 0 +10661 0 +14816 2 +10721 0 +14819 1 +12772 2 +12773 2 +12774 3 +10728 1 +10731 1 +14828 0 +12370 2 +12782 2 +14831 0 +12784 2 +12785 2 +10739 1 +10744 1 +14842 0 +10747 0 +10754 0 +14853 2 +16725 2 +12807 1 +14856 1 +10327 2 +12815 1 +10770 2 +12819 0 +14869 0 +12822 1 +10775 1 +10778 3 +10779 1 +10781 0 +10783 1 +14880 2 +10785 0 +14769 3 +10792 0 +12841 1 +12844 1 +14893 0 +14895 1 +10800 0 +14897 2 +14898 2 +12851 1 +12853 1 +10589 1 +12855 1 +14905 0 +12635 2 +14908 0 +10815 2 +10817 3 +12866 2 +10819 1 +12868 2 +10821 0 +12870 3 +14919 1 +14922 3 +12878 1 +13795 0 +12882 2 +12883 2 +12884 0 +10838 3 +12888 1 +12889 0 +14938 3 +12891 0 +12892 0 +15023 0 +14942 1 +14943 1 +14944 3 +10849 0 +12898 0 +12899 1 +12902 1 +14952 0 +10857 3 +14955 0 +15841 1 +14960 0 +12915 0 +10868 0 +12917 0 +13076 0 +10874 0 +10687 3 +14972 3 +10347 3 +12932 1 +12054 3 +12934 3 +14785 3 +14986 0 +14987 2 +10349 1 +12944 2 +12945 0 +11615 1 +12947 3 +14996 2 +12951 0 +12953 0 +12954 0 +12955 3 +12956 3 +10910 2 +12847 1 +15008 1 +11376 2 +15010 3 +14107 0 +15012 2 +12965 2 +10918 1 +15016 0 +11719 1 +15020 3 +10925 1 +10926 1 +10927 3 +15024 0 +13768 1 +10930 1 +15027 0 +10184 1 +10933 2 +12982 0 +12983 2 +16731 3 +12992 0 +10945 3 +10946 3 +15043 2 +15045 2 +10950 1 +14113 1 +15048 1 +15049 1 +13002 1 +13003 1 +11042 0 +15054 3 +11617 0 +13008 3 +10961 1 +10965 2 +10967 1 +13016 2 +15069 3 +15070 0 +13024 2 +15074 1 +10980 0 +13029 0 +10982 3 +13032 1 +13034 0 +10140 0 +15085 1 +15086 2 +15090 3 +15091 2 +13044 3 +15093 3 +13046 3 +10999 3 +15096 0 +11002 3 +11003 0 +13052 3 +14295 2 +13055 2 +15108 3 +11013 1 +11278 0 +11619 2 +13072 2 +15370 0 +11027 1 +15124 1 +13077 2 +14468 1 +11036 2 +13087 2 +11041 2 +15138 1 +10139 1 +10938 2 +11049 0 +11050 3 +11053 2 +15153 1 +11058 3 +13109 1 +13111 2 +15160 2 +13871 0 +11066 0 +13115 3 +13117 3 +11007 2 +13121 1 +15171 3 +11076 1 +13125 3 +12769 1 +15177 2 +16345 2 +12087 2 +11085 1 +11086 3 +13139 0 +11092 1 +11097 0 +11098 2 +13151 3 +11106 3 +11067 0 +11109 0 +13158 0 +11111 0 +15215 0 +15855 1 +11122 0 +11123 1 +13873 0 +11126 1 +13176 1 +15167 1 +13182 1 +11135 3 +13184 0 +15235 3 +15236 2 +13192 3 +10732 0 +11146 0 +13195 3 +13196 1 +15245 1 +11150 0 +15248 2 +15249 0 +15250 2 +13203 2 +13204 0 +14489 0 +15257 1 +13211 1 +15511 3 +11165 3 +13219 3 +13221 2 +11174 3 +11176 3 +10396 1 +13226 3 +13127 0 +15278 2 +14493 2 +13232 0 +15282 1 +11188 3 +13241 1 +11423 0 +13244 0 +11197 1 +13246 3 +15295 0 +11200 2 +10400 3 +11203 0 +13255 2 +15304 0 +13259 3 +11214 1 +13264 0 +14150 1 +15323 0 +13277 0 +11230 3 +11233 1 +13282 1 +14843 0 +10065 2 +13891 0 +11241 2 +13290 0 +15339 2 +13292 3 +11245 2 +14559 2 +13295 2 +15344 3 +13297 3 +11252 0 +13303 0 +11259 0 +15356 0 +11267 0 +10141 1 +13484 1 +11274 0 +12119 1 +11764 1 +15374 1 +11280 2 +11282 3 +11283 1 +15380 0 +15381 1 +11288 1 +15385 2 +13487 0 +11292 0 +13341 1 +13342 0 +13344 1 +10416 1 +11298 0 +13347 0 +13348 1 +11833 1 +15401 1 +14855 2 +11308 0 +15406 1 +13360 0 +13361 3 +11315 1 +13061 0 +11317 2 +13367 0 +13369 1 +15422 3 +11445 1 +13377 0 +15427 2 +13381 2 +12129 1 +11336 1 +15433 3 +13495 0 +13388 1 +13389 3 +11789 2 +15440 3 +10424 3 +16540 2 +15203 3 +13397 2 +15446 2 +15447 2 +15448 2 +14863 2 +11450 3 +15454 1 +10085 2 +15458 3 +14182 2 +14222 1 +13415 2 +13418 2 +13422 0 +11375 2 +13424 2 +13502 0 +15478 1 +15481 2 +13434 1 +11388 3 +11391 2 +11392 1 +13504 1 +13200 1 +11778 0 +11399 1 +11401 1 +13450 3 +14871 2 +14530 2 +15502 1 +15504 2 +11411 1 +13461 1 +13463 3 +13464 2 +13467 1 +11421 2 +16581 2 +14875 1 +13476 0 +15525 3 +11430 3 +11431 2 +11433 0 +15532 2 +13485 0 +13486 0 +14877 1 +11441 1 +13490 1 +15539 3 +13493 3 +11447 1 +15546 3 +12831 1 +15548 3 +11453 2 +15550 3 +14197 2 +11456 2 +13505 3 +15554 1 +13507 2 +11463 2 +16588 2 +11468 1 +11470 0 +11471 1 +13520 1 +15569 1 +15570 1 +14542 2 +11479 2 +11481 0 +15579 1 +11484 2 +15581 1 +15582 1 +11487 2 +13536 2 +13537 3 +11492 1 +13541 0 +13543 1 +13546 3 +11503 0 +15601 2 +11506 3 +13555 3 +10135 0 +11510 2 +15607 0 +11512 2 +15231 2 +13564 2 +11517 2 +13525 3 +15232 3 +15618 2 +11525 1 +13574 2 +10613 1 +15624 0 +13577 0 +15626 0 +13579 1 +15628 1 +11535 1 +12250 1 +11537 0 +15634 3 +13587 3 +11540 0 +11140 0 +11823 0 +11550 1 +13599 2 +15650 3 +11555 0 +11559 2 +15656 2 +11563 0 +10478 2 +13619 3 +11577 0 +10463 3 +13194 1 +13630 3 +10615 2 +11588 1 +12854 2 +15798 1 +11592 3 +16553 3 +12173 0 +11603 0 +15700 2 +13198 0 +13655 2 +13540 3 +15706 3 +15707 2 +15708 2 +15709 1 +14565 2 +15713 3 +11618 0 +13667 3 +12857 2 +11624 0 +15721 1 +13674 2 +11627 3 +13676 2 +15725 2 +11630 0 +11633 3 +13682 3 +15731 2 +13685 3 +11638 0 +11641 0 +11643 2 +13693 2 +11646 2 +11648 0 +11299 3 +11650 3 +12663 2 +13700 3 +11656 3 +10476 2 +15754 2 +11659 3 +11842 2 +13710 1 +11663 3 +12184 0 +13714 2 +13715 2 +11669 3 +14314 0 +11673 2 +11675 2 +10317 3 +15774 3 +12869 3 +13398 1 +11684 1 +13736 3 +15785 1 +11695 0 +15793 2 +15794 1 +11699 0 +11028 2 +13756 2 +11711 2 +11714 3 +14467 3 +13767 1 +11720 2 +11721 0 +13770 1 +11511 2 +13772 3 +11725 1 +11726 1 +11728 2 +15825 2 +15939 3 +11732 3 +13781 3 +13785 3 +13788 3 +15838 3 +13689 2 +14371 3 +15842 3 +15843 2 +13796 0 +14303 0 +15847 3 +11493 2 +11756 3 +15853 2 +13806 2 +15599 2 +15856 2 +13809 2 +11762 1 +11344 2 +15861 1 +15862 1 +15273 3 +11415 3 +15163 3 +10154 0 +11775 0 +16498 2 +13826 2 +15275 3 +13829 1 +13830 0 +15879 3 +13832 1 +15881 3 +15882 3 +15885 2 +11790 3 +15887 1 +13827 3 +13841 3 +13230 0 +14100 0 +15897 1 +13851 0 +11867 1 +11813 3 +13862 1 +13863 2 +13865 3 +13791 3 +15919 0 +11824 3 +11825 3 +11827 2 +11828 3 +14601 3 +13881 3 +15930 3 +10267 3 +13884 2 +15934 2 +11840 3 +12896 0 +13890 3 +11531 1 +11844 1 +11845 1 +13894 1 +14945 1 +12124 1 +13898 2 +13899 3 +13731 2 +15534 3 +11856 3 +14102 1 +11859 2 +11331 3 +11193 0 +11865 1 +15057 2 +12559 1 +11869 0 +11870 3 +11871 3 +15971 3 +15973 3 +11879 1 +10011 1 +14268 2 +13930 0 +13931 0 +11413 0 +13933 0 +13934 2 +15293 1 +13936 3 +11198 3 +13942 1 +15991 1 +11898 0 +11899 2 +13949 2 +11905 1 +13459 0 +11883 3 +11908 1 +13958 2 +11495 2 +11884 0 +13964 1 +13763 3 +11885 3 +11921 0 +13970 0 +11924 2 +15982 3 +11545 2 +11931 1 +13983 1 +13984 2 +11938 3 +13987 2 +11941 1 +11947 3 +12332 3 +11952 1 +13256 0 +14004 2 +12264 0 +14006 1 +11538 3 +12916 2 +14013 2 +14646 3 +14965 3 +12235 2 +11973 0 +11975 3 +14024 3 +14025 0 +14027 0 +14028 2 +11982 0 +11986 0 +15310 3 +11992 2 +12771 2 +11994 3 +16091 1 +11996 0 +11997 1 +13105 1 +14288 1 +14050 2 +12003 0 +16101 0 +14054 1 +12007 0 +14057 0 +12583 2 +12012 1 +14062 2 +12016 0 +12018 3 +16681 3 +12244 1 +12028 3 +16665 3 +12245 1 +14081 1 +14082 0 +12587 3 +10923 2 +16133 0 +12039 3 +14088 1 +15472 2 +14091 3 +14092 0 +15063 3 +14098 0 +11977 0 +10005 2 +10006 3 +12055 2 +10543 3 +14108 0 +14109 1 +10015 3 +10016 2 +10017 3 +11227 1 +12068 3 +10886 3 +11995 0 +14119 2 +14120 1 +10204 1 +14122 0 +14125 1 +10030 3 +12079 3 +10033 3 +14130 1 +14131 1 +10039 3 +10040 3 +10041 3 +10042 2 +12255 1 +12094 0 +10050 3 +10052 3 +10053 3 +11367 2 +12103 3 +10056 3 +12599 2 +12108 2 +10064 3 +16696 3 +14307 0 +14695 3 +14167 2 +16218 0 +10076 2 +12222 2 +12127 3 +14992 1 +12131 2 +12132 3 +13535 2 +12134 3 +14993 2 +12263 3 +12141 2 +13629 3 +14193 0 +12147 3 +12149 2 +10361 1 +12155 3 +12156 0 +16567 1 +13771 2 +14112 0 +16704 3 +14044 3 +14218 2 +12171 1 +12610 1 +12174 1 +12175 1 +12177 1 +11587 1 +14229 2 +14231 1 +10136 0 +12185 2 +14234 1 +12187 2 +14236 2 +14237 1 +12190 1 +12191 0 +13296 0 +10146 1 +12195 1 +12197 0 +14321 0 +12779 1 +11522 3 +10155 0 +14252 0 +10157 0 +10158 0 +14255 2 +14256 1 +13947 3 +12211 2 +10165 1 +12214 1 +16311 2 +12217 0 +10170 0 +10171 2 +10172 3 +14270 3 +12223 0 +14273 2 +14275 1 +12228 2 +12232 3 +10185 0 +14282 2 +14283 3 +11953 0 +16336 3 +13501 2 +10194 1 +16339 2 +16340 2 +14670 3 +10198 2 +13433 0 +11961 2 +16346 2 +12252 2 +12253 1 +10917 1 +10208 0 +16720 3 +14306 1 +13307 2 +14320 2 +16721 3 +10216 2 +12265 0 +12266 0 +16363 3 +12268 1 +16722 3 +11702 3 +10224 3 +10225 1 +12278 0 +12280 0 +14332 3 +10237 2 +16353 2 diff --git a/examples/struc2vec/input_path/usa-airports.edgelist b/examples/struc2vec/input_path/usa-airports.edgelist new file mode 100644 index 00000000..26f5394f --- /dev/null +++ b/examples/struc2vec/input_path/usa-airports.edgelist @@ -0,0 +1,13599 @@ +12343 12129 +13277 11996 +13796 13476 +15061 14559 +14314 12889 +13029 11726 +10868 10599 +14685 12953 +13772 13303 +14711 12953 +11423 10155 +14679 13232 +15618 12892 +13203 10397 +14057 11298 +14856 12704 +11259 11027 +14534 11097 +11842 10540 +12992 12191 +11537 10397 +11193 11146 +14685 11503 +13198 10800 +13495 13487 +14050 10800 +13230 11057 +14100 11540 +12191 10279 +13486 11292 +12278 11867 +13029 11057 +10994 10693 +13342 11042 +13264 11563 +16091 14512 +11996 11042 +14747 14027 +13342 12478 +13667 12197 +14685 11697 +13461 12448 +13198 11973 +12892 10800 +11986 11057 +14814 11292 +15257 10299 +13367 12544 +11711 10272 +15374 13244 +14082 10408 +14869 11233 +14307 14100 +14259 13851 +13710 10299 +12264 12222 +14107 13341 +15249 12197 +13196 11028 +15356 12478 +15841 14828 +14898 10800 +14805 12822 +15167 11493 +12397 12197 +14321 11042 +15153 13303 +10792 10577 +15295 10819 +12278 10529 +14081 10463 +14761 13230 +14683 11259 +12173 11193 +14843 12339 +13830 13342 +13891 10559 +15167 13495 +14130 12831 +14100 11503 +14679 13796 +15618 11259 +13541 12197 +11823 10540 +14107 10721 +13232 10713 +14633 11823 +12264 10965 +14747 12915 +13342 10257 +15153 10819 +13485 10590 +15016 10299 +12197 11106 +11013 10408 +14027 11789 +12889 10397 +10781 10140 +14683 11481 +13871 10136 +11042 10140 +14843 13198 +12448 11986 +16091 13290 +13422 11066 +15601 11638 +13495 11298 +14696 13052 +13303 13232 +14057 11603 +14122 12323 +14908 12915 +15741 12253 +14869 11865 +13930 10800 +11174 10529 +12884 10868 +14282 12851 +14831 13158 +14771 11193 +14081 11292 +12721 10170 +12389 11292 +15502 11042 +15376 11066 +15024 14771 +12451 12217 +11259 11086 +15096 12348 +14627 10416 +14635 12898 +15919 14761 +12755 10299 +11618 10849 +14831 10140 +11637 10409 +14119 12638 +14092 11057 +15862 13770 +15295 10599 +14255 10540 +12587 10785 +13930 11109 +11617 11267 +14853 14730 +13851 11481 +14492 13795 +15096 14574 +14683 11638 +13485 11433 +16091 14492 +11337 10631 +11445 10926 +13196 10996 +14107 10994 +14797 12175 +13341 12892 +14255 10154 +14869 11775 +13873 10139 +14477 13002 +11721 10713 +13256 11267 +14057 13198 +11995 10158 +14679 11292 +13342 11278 +15618 14027 +13930 11577 +12878 10298 +14108 13851 +15370 11066 +15096 10868 +13061 12917 +13487 10683 +13244 11775 +13891 11884 +14588 10194 +12451 12448 +14524 12892 +14027 11292 +13851 10529 +13930 11995 +14730 12992 +11450 10800 +15887 13710 +14908 10713 +14689 11540 +13121 11433 +12892 11637 +13232 13029 +12953 11540 +13535 11899 +10933 10721 +12945 12544 +13770 10996 +14100 11292 +14792 14577 +12953 11637 +14057 10279 +12339 10792 +12945 10693 +14908 10559 +13342 10434 +11445 10165 +14492 13931 +15370 12264 +12676 10139 +14307 10933 +12896 11921 +10170 10056 +14771 10713 +13770 10299 +12394 12244 +10279 10257 +11995 11764 +13061 10466 +15043 10747 +12884 11067 +14696 14574 +12892 12324 +15257 11550 +15376 14730 +12853 10304 +12945 12007 +13342 10279 +13087 11982 +12892 10140 +14100 11233 +14112 10874 +13303 10257 +15879 15167 +13871 13796 +13198 10676 +13377 12896 +11267 10140 +13851 10268 +14893 14635 +12953 10397 +14492 12191 +14869 12003 +13198 10279 +14843 12264 +12889 10666 +15579 11844 +13360 10874 +13485 11977 +13964 12280 +14092 10185 +13303 13105 +11637 10268 +15167 12197 +11721 11292 +14512 13487 +12191 10713 +14730 13667 +13367 12264 +14670 13232 +14908 10800 +14869 10140 +16133 11111 +13930 11097 +13244 12264 +15370 13230 +11986 10140 +12719 11844 +15304 13796 +11618 10599 +12451 10216 +11252 10994 +14761 13832 +11697 11540 +12884 12007 +13487 10141 +14683 13342 +14771 14122 +14908 12217 +14574 10397 +13461 10643 +15380 12889 +14570 13796 +12222 10581 +14908 14576 +11042 10792 +10731 10208 +14252 11884 +11042 10781 +15096 13487 +14288 11292 +14952 12339 +14730 11067 +11898 11433 +14895 11630 +14747 12173 +14122 13667 +15167 11615 +10754 10247 +15096 13342 +13158 10194 +12915 12892 +12264 10434 +13930 12945 +14730 11146 +13303 11563 +14679 14262 +11411 10139 +13830 12889 +13198 11066 +14730 11977 +11973 10721 +11648 10397 +14689 13232 +14492 12197 +13198 12945 +14122 11441 +13485 13198 +10821 10257 +14150 13930 +10800 10423 +14987 10304 +15085 12807 +14831 10792 +14747 13158 +12896 12451 +15412 14112 +16680 12197 +15618 10800 +15741 11484 +13487 11042 +15167 11027 +14908 13303 +14306 12478 +14685 13931 +11003 10154 +14730 11726 +14098 13244 +14112 10431 +11823 10980 +10775 10304 +15074 10693 +14908 13158 +14843 11259 +13196 12807 +10849 10779 +13931 11986 +11049 10185 +11042 10529 +13241 12007 +11977 10397 +13198 10721 +12197 11066 +13931 13230 +14492 10257 +13244 10713 +12451 10158 +14814 14635 +11267 11193 +14683 11995 +13891 12758 +12191 11790 +14100 10868 +11898 11292 +13898 13487 +12953 12173 +14273 11336 +15380 14492 +15370 11898 +13139 10868 +12266 11996 +14492 12339 +12441 12266 +14716 12324 +15096 11057 +15054 12228 +15096 15027 +15798 11492 +14730 12478 +14747 11588 +15016 14107 +14057 11057 +10785 10431 +13158 11140 +14027 10257 +13486 10800 +14512 10590 +12758 12549 +14576 11259 +14100 12124 +14683 10155 +12915 12390 +14683 12896 +14050 13232 +13464 13256 +12889 11423 +13796 12280 +15048 13930 +11637 10627 +12523 10886 +13341 12953 +14112 12451 +16091 11165 +13198 11057 +14875 10721 +14321 13158 +14905 13796 +12264 10216 +14576 10792 +14895 12704 +15380 10590 +13087 11066 +13342 11612 +15249 12451 +14307 12278 +14942 12184 +12755 11336 +13244 10980 +10732 10721 +14952 11298 +15249 12348 +14730 14122 +12397 10815 +14635 14524 +12478 10529 +12819 11630 +15370 10994 +15016 11433 +15153 13461 +11789 11111 +15016 14524 +15626 11126 +15167 11456 +11540 11259 +16704 14553 +13851 10874 +13796 13158 +14679 14027 +13342 11076 +13871 11423 +14744 11695 +12266 10158 +11612 11278 +12728 12610 +13244 11193 +14004 10299 +12451 11618 +15016 11042 +14193 10423 +13158 12191 +14635 13891 +12748 10245 +12264 12217 +13796 10327 +11267 10590 +14685 12451 +15385 11336 +13127 12889 +13303 10279 +11695 11450 +14262 10590 +15339 11280 +14570 12478 +14895 12087 +13871 11618 +14234 12087 +15634 14539 +14492 13296 +13495 11618 +15376 14107 +13061 10298 +13232 12314 +13244 11146 +14307 13884 +14771 13290 +12339 10558 +14730 10216 +13796 13577 +13434 10551 +13931 12191 +12953 12280 +14057 11638 +15325 11638 +15841 10245 +10299 10225 +12478 10821 +13796 13464 +13487 12129 +13244 11884 +13342 10599 +14559 13415 +15376 14576 +15096 10990 +16091 13487 +13655 13577 +14321 10329 +11298 11193 +11941 10299 +12320 11433 +13958 10540 +15376 12339 +10721 10529 +12889 10620 +10713 10423 +14131 12264 +13871 12055 +13485 10849 +11996 10781 +10965 10721 +12544 12339 +14730 10540 +15919 14783 +13930 13871 +14908 10994 +13871 10372 +14633 10693 +15356 14696 +15376 14893 +14100 10990 +14679 13931 +12217 11057 +11726 11298 +14771 14492 +12094 11637 +12055 10819 +15370 13158 +15448 10245 +12892 11638 +14908 11267 +16133 11540 +15380 10268 +15478 12851 +12191 10423 +11612 11057 +12007 11953 +14576 11537 +12124 11057 +11292 10558 +14709 10551 +14492 10409 +15167 11697 +13487 10140 +14814 11057 +11778 11298 +14100 11973 +14831 14771 +13933 13204 +12807 10551 +12934 10693 +12635 11511 +12889 11203 +10874 10721 +14487 12892 +12448 11278 +13796 12324 +13303 11618 +15389 14771 +11898 10408 +13434 11550 +10821 10423 +11057 10990 +11278 10140 +13296 13204 +13931 10257 +12278 10423 +14747 10299 +14576 14057 +13232 11042 +12339 11057 +14057 12892 +15016 11540 +13158 11865 +14711 12544 +14987 10299 +12294 10299 +12320 11823 +13377 11531 +13851 12451 +16091 14877 +15422 10299 +12878 12348 +14711 13485 +11603 10620 +13579 12779 +15412 11423 +15027 10257 +10933 10557 +14524 11764 +13485 10683 +13241 12448 +14321 11267 +13422 10397 +15293 15257 +10747 10185 +14843 12451 +14100 11146 +12915 12264 +15502 10397 +16091 15163 +13061 11721 +14512 14057 +13930 13485 +15249 10721 +11423 10466 +15167 13204 +11540 11481 +10397 10372 +15855 12197 +14112 13367 +13931 12266 +15370 13796 +14869 14107 +13198 10713 +13710 12737 +15304 11423 +12264 11252 +16603 13002 +12264 11669 +14112 10693 +15295 11415 +12915 10423 +15167 10654 +14321 14107 +14831 13296 +12217 11433 +14689 11982 +16479 12197 +14256 11336 +14574 11995 +15389 14113 +12772 10243 +13487 10540 +12954 12173 +14761 11980 +11921 10466 +14685 13487 +12156 11563 +12807 12769 +10747 10466 +13303 13277 +15085 14234 +15376 11298 +11721 10140 +11775 10683 +13204 10599 +13076 11292 +15370 11540 +12217 11252 +16133 14112 +12544 10874 +13377 10540 +15167 13232 +14869 11292 +14057 11775 +13029 12339 +14960 12891 +15478 14013 +15825 13303 +13204 10821 +14112 10581 +13256 10778 +13360 12391 +13232 10540 +15295 10333 +12917 10135 +12892 11721 +14102 10640 +13204 12544 +13232 10683 +15153 11267 +12478 12191 +14905 14004 +11066 10599 +15070 14057 +11433 10732 +14057 13891 +14122 10821 +13891 12953 +11884 10299 +15167 14633 +14193 14122 +16091 11122 +11042 10868 +11630 10349 +10434 10397 +12892 11503 +12007 10781 +15070 12191 +12889 11618 +12266 10781 +12953 11433 +14282 13873 +11336 10551 +12141 11630 +12451 12264 +14400 11764 +14919 12184 +14679 11278 +15618 14314 +15502 11995 +11066 10792 +14107 11057 +12896 10693 +12719 11241 +10540 10397 +14027 10868 +13388 11292 +13930 12892 +13930 10431 +14576 14512 +13931 10478 +14108 10397 +14150 11510 +13942 10640 +13731 12222 +14081 10661 +13577 12197 +14730 14679 +12671 12321 +14576 10529 +15412 13303 +15794 12822 +14679 10800 +13342 13184 +11953 10397 +14761 14122 +12391 10329 +14262 14107 +16567 14738 +14100 11123 +13619 13303 +16091 11996 +11503 10257 +13461 10778 +16091 12888 +14893 14489 +13204 10257 +11931 10693 +13796 10257 +13264 11292 +13029 11638 +15569 10423 +10299 10184 +10819 10171 +14112 10721 +13342 10540 +13459 10590 +13204 12391 +14553 10559 +14307 10140 +15356 10721 +15919 11973 +15016 10693 +12206 10994 +14635 11973 +15096 11697 +14102 12844 +15016 14112 +13891 10868 +14908 11638 +14685 12992 +14122 10322 +11996 11618 +15304 12264 +13931 10990 +15376 11278 +12147 11870 +12953 10135 +13871 13851 +13931 12478 +15096 14492 +12917 10721 +11986 10821 +11433 10397 +11995 11057 +15069 12184 +15024 13198 +14877 13796 +13487 13061 +11844 11550 +11049 10279 +11456 10721 +11637 11447 +13682 12544 +14100 12191 +15304 10581 +15412 13342 +14307 10155 +14696 14259 +13873 11555 +13795 10397 +11057 10747 +12884 11150 +15304 12391 +15554 15478 +14709 10640 +11719 10140 +15016 13158 +16540 10540 +12391 11540 +14275 12266 +15376 10140 +14683 11376 +11977 11563 +14814 13151 +14259 10990 +12206 11298 +12896 10721 +12264 10721 +13930 13232 +15070 10185 +15376 10466 +11775 11003 +14689 12264 +14102 13970 +12559 12264 +13342 12173 +11986 11140 +11292 11097 +14492 11013 +13851 12917 +14908 13296 +14679 14524 +14738 12184 +11278 11193 +11259 11109 +14685 13930 +14679 10423 +12889 11066 +15374 10721 +13198 12323 +12448 10397 +15096 13898 +12197 11176 +11728 10721 +13930 13541 +14771 10140 +13851 12953 +15045 11344 +14489 11603 +16101 14057 +11697 10732 +12902 12278 +10529 10154 +13795 11150 +14027 12197 +10739 10631 +13796 11140 +12397 10434 +12266 10732 +14771 13487 +12782 10170 +12441 10693 +14689 14057 +10299 10053 +13434 12807 +14100 10980 +15061 11630 +14831 12441 +16498 12197 +15295 13232 +15249 11252 +14100 11278 +15412 10397 +14679 13230 +14492 10158 +15016 14108 +13851 11618 +13256 10469 +14150 11986 +15153 11298 +14119 12641 +13485 11726 +11203 10590 +12945 11423 +13241 11298 +14027 10721 +15794 14895 +13244 12173 +14771 13931 +12822 12704 +15721 12704 +15376 13061 +14321 13204 +14057 10999 +15412 14730 +15370 11278 +11337 10590 +15376 13204 +14761 13061 +13487 13198 +14100 13230 +14307 10693 +15861 13806 +13851 12954 +14307 11961 +12892 11697 +13891 12992 +14689 14683 +13579 11555 +11844 11280 +14869 13830 +12915 11298 +14574 14112 +13105 10647 +13204 10994 +12223 10397 +14747 10868 +14122 10781 +15656 14875 +15167 14689 +13796 11292 +14112 11637 +15624 13495 +14771 10279 +15245 10640 +11612 10397 +12278 10408 +14987 11028 +11540 11140 +14122 11267 +15422 12173 +13495 12217 +12853 11630 +12478 10540 +10849 10620 +13931 10693 +14960 12478 +12217 10299 +12478 10431 +13930 13204 +12889 10868 +12197 11986 +14457 12264 +11953 11259 +14747 10620 +14730 14492 +14027 13931 +14689 13158 +12339 10994 +12191 11433 +13342 10408 +11986 11697 +14492 10792 +14908 13204 +11298 10627 +13891 13830 +12197 11259 +12264 11003 +15249 10747 +14804 11630 +13347 12549 +13710 12779 +14960 11042 +14814 13891 +14057 12451 +12953 12889 +14492 11298 +15478 13768 +13871 11986 +12853 12779 +14306 12197 +11884 10140 +14869 11986 +14730 11973 +11481 11433 +14057 11637 +14122 12365 +13461 13303 +14524 13891 +12197 10414 +12264 10792 +15624 11823 +14570 14492 +15412 10171 +11109 10590 +12719 10299 +15412 10434 +13244 11996 +15049 12822 +14828 12819 +14831 10721 +13931 10208 +12451 12191 +10685 10423 +14122 12953 +14635 11375 +11630 10923 +13290 13029 +11433 11067 +15167 10408 +12268 10139 +11109 10800 +13198 12094 +14672 14057 +13667 11977 +15370 13204 +14050 13282 +14683 10466 +13891 13297 +13433 10800 +13105 12339 +12899 11468 +15709 15049 +10874 10397 +11921 10423 +14831 12544 +11057 10529 +14679 11540 +14635 13495 +13303 12206 +14107 14081 +11618 10540 +14908 14683 +12363 11503 +14321 13232 +14831 12197 +13873 11214 +14557 12197 +14321 10980 +13700 12544 +11292 10559 +15478 14474 +14307 10721 +15096 12197 +11066 10140 +15370 12889 +10868 10158 +14895 12615 +14635 13397 +14679 14107 +15304 14107 +12278 12266 +14679 12391 +12108 11618 +14259 11697 +14082 11986 +12889 11525 +14952 14112 +14512 11298 +11540 11049 +11057 10627 +11617 10431 +12917 11150 +14530 10800 +15323 14100 +12087 11941 +14122 11027 +11214 10349 +15304 11049 +15618 14262 +14831 10994 +11433 11423 +14771 10529 +15325 10800 +11259 10397 +11506 11415 +14004 11540 +13282 11027 +14107 13502 +10581 10171 +12348 11517 +14730 14512 +13891 10529 +12343 10590 +13851 10599 +14320 11995 +14275 12892 +15376 11193 +15304 10299 +15700 10299 +11267 10821 +14747 12917 +13894 12779 +10800 10590 +12807 12184 +14718 12779 +13964 10559 +13495 10933 +15700 10245 +14843 12191 +12992 12451 +14570 11203 +14952 13930 +10620 10590 +13296 12478 +13891 12544 +15070 11433 +15412 10590 +12324 10135 +15412 11996 +14831 10279 +11433 10980 +15412 10216 +11109 10721 +15370 10140 +14570 11721 +10980 10685 +14679 12992 +15167 13461 +15057 10185 +13485 12003 +15016 14006 +15096 11259 +12197 12007 +11298 10347 +12339 10299 +12784 12321 +15167 12932 +14109 12223 +15249 14092 +14193 13303 +10792 10397 +14430 11259 +14197 14100 +12784 12720 +12264 11298 +15323 10325 +15412 10325 +10423 10140 +14057 11292 +13891 10792 +11298 11085 +12217 11259 +13667 12348 +12264 11697 +10713 10279 +11308 10146 +14088 12184 +13930 12519 +13232 10590 +14570 12173 +15096 14576 +13933 12197 +12769 10405 +12264 10171 +14771 14696 +15376 10257 +14100 13303 +15887 12853 +13204 11481 +14635 13871 +13342 11884 +13295 10868 +11996 10423 +13204 10140 +14761 10590 +13121 12264 +13303 12544 +13487 10599 +15380 13459 +11977 10821 +13434 11643 +14447 13230 +11555 10926 +14761 12339 +14843 11252 +11308 11150 +14869 14683 +14831 11423 +12003 10590 +14576 11292 +14831 13931 +12266 11630 +14570 10561 +10792 10257 +14802 12264 +13487 10821 +14730 14307 +14831 12478 +13495 13476 +12892 11423 +12265 10158 +15016 11618 +12882 10747 +15249 13204 +12544 11697 +16218 13297 +14193 11259 +14275 10747 +12807 10313 +14747 10423 +14689 12889 +11630 10559 +15862 12184 +15582 14869 +15887 13369 +14761 14524 +14814 11973 +12892 12544 +14831 11603 +15016 11259 +15370 10620 +14193 12889 +15618 12889 +15027 10397 +13540 11762 +14057 12191 +14831 12992 +15096 13871 +11259 11123 +14869 11884 +12389 11898 +14635 14107 +14747 12094 +13871 10185 +14831 11109 +13891 10299 +10170 10041 +10819 10693 +12173 11298 +13230 12197 +11298 10194 +15096 14122 +14843 14576 +12892 10721 +16091 13256 +15741 12633 +14730 13244 +13204 10423 +14869 13487 +11298 10268 +13158 11066 +15554 14718 +13930 13619 +12917 12884 +14259 11982 +14898 14262 +13495 12544 +11721 11697 +14683 12191 +13244 12953 +13796 13344 +13936 11697 +14761 11823 +15016 14113 +16429 12932 +13930 13158 +14893 13232 +11603 11298 +15016 14952 +13830 13487 +15570 12917 +16520 12197 +14050 13461 +13198 12278 +11292 10194 +10721 10713 +13461 10329 +15374 11027 +13244 12266 +14122 12889 +13485 10821 +12321 10245 +14730 10868 +13087 11298 +14646 14588 +11986 10965 +14730 13891 +10868 10478 +13891 11278 +14831 11884 +15785 14125 +14771 11603 +12264 10135 +14771 11503 +13487 11481 +14027 13296 +11252 11057 +13891 11423 +13485 11292 +12217 10171 +12544 11109 +14869 10821 +11292 10599 +14262 12266 +12173 10666 +14122 11775 +14685 11624 +11980 11298 +14576 11433 +14108 13930 +13767 10225 +11603 11259 +14679 11298 +12173 10299 +14679 14275 +13851 10561 +13198 12917 +14057 10693 +13704 10299 +11555 11227 +15167 10348 +14057 12896 +15376 10693 +11603 10630 +14027 12478 +15481 10693 +15919 12896 +12339 11259 +11540 11278 +13198 11898 +10732 10397 +15624 10397 +10990 10781 +14828 12175 +13934 12772 +11503 10721 +14107 10792 +14108 10466 +11775 11066 +13710 11630 +13360 13230 +15045 12892 +12878 11003 +15016 12451 +14816 10304 +15370 12324 +11481 11140 +14492 10713 +16091 12953 +14570 10279 +14492 10868 +13871 13476 +15502 14761 +14730 11871 +13930 10693 +13487 11637 +15618 12339 +15579 10299 +11042 10559 +14986 10800 +11298 10590 +12953 10154 +11111 10140 +13871 13485 +11027 10540 +13577 11996 +14880 11844 +14307 11697 +14843 14492 +12889 10140 +12892 10693 +14685 14524 +15412 12953 +14679 10666 +12003 11775 +14771 13486 +15721 10551 +15887 13894 +14869 12191 +13232 11278 +12441 12264 +14747 11433 +11884 10599 +15634 13230 +15412 14100 +14492 13244 +11433 10185 +14831 13796 +14672 10800 +14633 10590 +15167 10423 +11292 10590 +14893 13204 +15248 13196 +12451 10732 +13871 10466 +11535 10304 +15295 12945 +15167 15020 +16454 12197 +15167 11961 +14057 11109 +14771 13930 +12945 11003 +11298 10980 +15304 14898 +10821 10185 +13296 11986 +13303 10397 +15153 11996 +11066 10298 +15304 10140 +12235 12214 +14893 13851 +15344 10561 +14730 11003 +11884 10590 +14492 12896 +13061 11612 +11764 10158 +15713 10581 +14107 14100 +15085 12709 +13970 13873 +10868 10208 +15478 12676 +15411 14814 +15016 11292 +16091 10397 +12992 10721 +14679 12339 +12451 11193 +13485 11042 +13788 10397 +14683 10994 +12264 11146 +13933 11697 +10551 10304 +12147 10819 +12397 12222 +15628 14122 +16543 15167 +11764 10198 +11884 11042 +15153 13256 +14986 12451 +12892 12278 +15282 13894 +15016 11721 +12737 11336 +10800 10325 +13541 10581 +13931 10581 +13871 11278 +14683 11986 +10693 10216 +11756 11445 +15096 11899 +11884 11540 +12185 10141 +12896 10136 +15478 14895 +13871 11775 +15167 11057 +14570 12339 +13930 10744 +16091 13029 +13930 13495 +15862 15282 +12953 11996 +13296 11057 +13873 11845 +14321 11259 +13871 13204 +15295 12307 +12266 12173 +13894 12831 +14100 14027 +13204 12878 +12206 11259 +14831 10397 +12544 12197 +15502 10208 +15708 15707 +14689 14122 +14057 12339 +14747 12982 +10683 10397 +14553 13930 +13367 11540 +14295 11646 +12853 10551 +11977 11433 +13232 10140 +14150 11433 +11764 10792 +15700 12720 +14711 13029 +15085 14895 +13577 12339 +12807 11643 +14467 14057 +14477 11538 +12266 10561 +14492 13184 +16091 10559 +15016 14027 +11433 11066 +15721 10299 +12704 11643 +12391 10933 +14576 11146 +14635 14492 +12266 11973 +11952 10551 +14107 13476 +14112 11721 +13296 11995 +13682 12339 +12250 12197 +13198 12206 +13891 13296 +13341 12889 +14730 10685 +12945 10158 +13930 11423 +13196 11885 +13277 10397 +14683 12878 +14588 11298 +14492 13577 +12339 10158 +11973 11278 +15458 14893 +14730 13851 +15167 13930 +13851 11292 +11973 11423 +15024 10693 +16091 11259 +13930 11697 +13577 11823 +14576 11618 +14683 10800 +14689 13796 +14570 12896 +12953 11042 +12992 10590 +15554 10299 +13809 12945 +13830 12549 +14908 11986 +11555 10754 +13388 12892 +12266 11531 +14004 12917 +13342 11977 +12278 11638 +11728 11106 +14524 11267 +14125 10299 +13806 12844 +15785 10640 +14843 11697 +13158 10136 +14107 13342 +14730 11278 +14635 13682 +10792 10693 +13873 10225 +14275 12197 +13871 11468 +13667 11618 +11995 10299 +14893 14275 +10800 10466 +14679 14057 +14783 14082 +15380 14908 +14712 12264 +13485 10792 +11481 11042 +13232 10821 +11833 11555 +14524 12953 +14193 13232 +14679 11193 +15304 11193 +16739 12574 +14691 10713 +13871 11298 +12896 11563 +13796 10194 +14711 14100 +13158 11563 +14082 12339 +13890 10385 +13198 11503 +12915 12266 +14683 10868 +13296 11697 +12992 11540 +12184 10065 +12884 11042 +12264 11292 +14539 13731 +12721 12184 +12671 12653 +14570 11540 +12889 10466 +10529 10208 +14730 13232 +11042 10599 +14524 14321 +14027 12191 +13487 12478 +14709 10754 +14307 11721 +11278 11267 +11252 10257 +14696 11823 +13487 11980 +15049 12704 +14893 11618 +14771 12278 +11433 10868 +15016 10731 +15502 11140 +13244 13046 +14512 13367 +15282 12807 +13232 12206 +11057 10257 +13303 10194 +12250 11764 +14698 11423 +12992 12896 +12889 10590 +12831 12779 +14656 11641 +14119 12635 +14718 11630 +13942 11630 +15096 13230 +14747 14730 +14275 14150 +11973 10257 +15153 11834 +14130 11550 +14122 12898 +14869 13502 +15919 12278 +14193 11612 +14512 13796 +14709 14102 +14113 11995 +14493 10304 +15236 11245 +12397 11697 +11612 11503 +14814 10874 +14771 11638 +14679 14576 +12217 11146 +12390 10298 +16091 10838 +14100 13296 +15370 14783 +14683 13367 +13296 12197 +11953 11027 +13105 10990 +11233 10299 +13303 11298 +12954 11042 +15024 10721 +13768 12868 +14683 13476 +10747 10469 +16091 14783 +12197 11292 +14100 11995 +14570 10559 +14553 10397 +14747 11259 +13244 11531 +14468 14268 +14771 14321 +11278 10599 +14831 13930 +13204 12896 +14656 10559 +12323 10599 +11540 10713 +15024 12339 +14122 11109 +14100 11577 +15323 10158 +15016 10135 +12807 10299 +15447 11510 +14321 10599 +13485 11003 +14122 11259 +15096 14307 +12704 10640 +12523 11188 +14122 11252 +11697 11066 +13931 13487 +12956 11884 +14255 10800 +15171 10926 +12866 10170 +14633 11898 +14262 13891 +15370 12478 +11278 10800 +12448 11641 +12268 10640 +13450 10540 +13930 12280 +14771 12953 +13029 11067 +12197 10785 +13931 12953 +13204 12278 +12348 10965 +13942 12268 +15532 11399 +12892 11996 +12851 11630 +13487 12412 +14698 13198 +14843 10397 +13290 10627 +11252 10171 +15096 11298 +15160 10313 +13930 13342 +14747 12206 +13296 13244 +14303 11884 +14730 10158 +12266 12217 +14986 14112 +13360 10990 +15412 11953 +13871 11898 +12544 10268 +14869 13486 +14628 13002 +14869 11898 +12266 12007 +15376 11618 +15041 11098 +13204 10279 +12953 11259 +10910 10590 +13244 12954 +11986 10529 +11433 11233 +12197 11883 +12892 10423 +15304 12266 +16091 10599 +12945 12889 +13891 10279 +13894 13710 +12266 11982 +14530 13232 +14100 10647 +13930 11076 +14730 13809 +12206 11563 +15167 11908 +11905 10590 +11540 10559 +14107 11481 +11630 11559 +11423 11066 +10559 10385 +14696 11027 +14122 10158 +15478 12195 +13495 10643 +12339 11986 +11869 11399 +14747 14004 +13211 11003 +15023 10590 +14100 13204 +14794 14252 +11433 10577 +11433 10685 +15370 11259 +15293 12653 +12892 11003 +15171 13629 +12264 11995 +12339 11884 +15579 11555 +14131 10654 +11630 10396 +15882 13342 +13204 11193 +13256 11298 +13495 11953 +14574 11027 +14814 14679 +14474 13196 +14275 11764 +14512 11292 +15412 10781 +12451 11721 +15841 12819 +13871 10994 +16428 11869 +14102 10396 +12339 11617 +14314 14057 +14674 13495 +12206 11697 +13360 11973 +15016 13303 +13109 12758 +13830 12892 +11278 10994 +11481 10792 +14730 11288 +14570 14100 +11986 11433 +13930 11834 +15323 14524 +11042 10821 +12266 11140 +12391 11764 +11789 11298 +14635 14027 +15249 13788 +10792 10540 +13398 11675 +11122 11109 +13296 10792 +12197 10868 +16721 14307 +11433 10540 +13061 12992 +14696 11292 +13230 13204 +11764 10257 +15249 12945 +15093 11481 +14109 12191 +14576 11973 +16540 12478 +14492 11433 +14574 11057 +14908 14869 +15887 14130 +13256 11996 +12519 11292 +11827 11764 +10800 10599 +12264 11042 +14112 10529 +14457 10397 +16091 11834 +12598 11415 +15250 13196 +15167 10994 +14679 10140 +14512 14082 +15249 10172 +15085 10299 +14730 11823 +13930 10581 +13204 12892 +12441 10721 +12391 10589 +14683 11996 +10785 10721 +14893 12896 +15304 11481 +13930 10980 +11764 10965 +14685 10868 +15096 12441 +11996 11298 +12266 11995 +13232 13198 +14730 13344 +13034 12758 +15304 14831 +11641 11057 +15919 11995 +14122 12197 +14467 13964 +14880 12719 +14100 10581 +14193 10397 +15249 14027 +13342 10792 +15167 12250 +14828 12728 +13296 10529 +15124 13415 +14908 11540 +13367 11503 +16709 14683 +14477 11646 +11267 10158 +15043 12197 +14783 10268 +14182 10994 +11227 10299 +11540 11066 +13367 11292 +12391 12339 +12953 12478 +14255 10721 +11618 10647 +12264 11441 +15370 14869 +14057 13851 +12184 10551 +11643 10184 +13964 13930 +12892 11193 +13158 11697 +13232 10599 +13303 12228 +12954 11540 +15096 11292 +15295 10158 +15043 14635 +14307 13342 +12892 10792 +12392 11977 +15016 10792 +16133 10874 +12884 10683 +12478 11764 +14112 11433 +13964 11292 +14814 14761 +10874 10329 +12197 11331 +14109 12945 +13061 12511 +13577 13198 +13655 12191 +14679 14193 +13342 11587 +13264 10590 +13422 12953 +13244 11612 +15624 11996 +13871 10529 +14718 13579 +12892 11298 +12266 11540 +11292 10747 +11789 11027 +12448 10185 +13487 10785 +14895 11535 +13476 10140 +14869 11066 +13125 11728 +14679 12451 +14986 11278 +15412 15304 +14321 11066 +14193 11057 +13008 12197 +11648 11563 +13198 11140 +15096 14107 +13964 13264 +13871 12992 +12889 10874 +16654 12652 +14905 13486 +15618 14771 +13109 12492 +13871 11109 +14107 13244 +12704 10551 +11278 10874 +14709 12214 +13487 11203 +13277 11540 +14627 12321 +10529 10257 +13485 12945 +13196 11844 +15370 10800 +13930 10647 +13577 10821 +14027 12953 +13029 10466 +14397 12197 +13873 11844 +14908 13061 +14130 10551 +13487 10268 +12758 11618 +13125 12197 +12007 11111 +13871 11996 +12055 11150 +14321 14307 +11003 10821 +14730 10135 +14696 12197 +13714 12748 +14512 11057 +14397 10198 +12892 10666 +13577 12451 +13029 12888 +12007 10821 +12222 11615 +13307 11697 +12217 11267 +13461 11058 +10996 10299 +13198 12544 +15502 13931 +11638 11540 +14027 13809 +11618 10800 +13487 12278 +13303 10185 +14108 12917 +12953 12266 +14113 12339 +15447 15167 +14696 11986 +15048 11433 +14893 13303 +14747 12451 +10721 10647 +15310 10194 +12206 10279 +13964 11603 +13296 11996 +11259 11140 +13297 12889 +15304 11953 +10540 10154 +10216 10171 +14685 10874 +14828 12610 +13830 12266 +14307 13485 +14783 13061 +12264 11637 +11433 10140 +13342 12884 +13029 11150 +14633 10980 +15412 14696 +12217 10792 +13577 12889 +10721 10466 +11618 10397 +12676 10313 +12951 12266 +14107 11695 +15511 11415 +13061 12339 +13348 10423 +15323 14321 +12278 12264 +13577 12223 +14234 10416 +15478 12769 +15323 14761 +14842 10194 +12478 10732 +14512 13061 +10304 10170 +12915 11697 +15862 12708 +14122 12954 +14633 11973 +13342 11865 +12934 11994 +13930 12003 +15570 12448 +14231 10815 +13418 11176 +13341 12478 +15045 13297 +15376 10397 +13342 12264 +11726 11027 +15016 11122 +12235 11630 +15862 13894 +13341 10800 +15043 10469 +16603 14295 +11618 10140 +14234 12195 +15167 14255 +13087 10476 +14492 11618 +12206 11066 +15478 14856 +15504 11630 +14485 12844 +14683 11721 +15024 14122 +16091 12992 +10590 10155 +14771 13476 +10747 10171 +11411 10640 +14321 11618 +11587 11433 +11697 10713 +11193 10466 +15295 11267 +14683 14275 +13459 13342 +11423 10620 +11481 10397 +12108 10540 +13871 12945 +14689 10693 +12441 10713 +13204 10397 +14679 13388 +13851 11921 +11233 10140 +12370 11007 +12889 10627 +15249 14193 +13476 12896 +14122 12478 +15016 10732 +14679 12278 +10721 10423 +12889 10540 +13061 11086 +14512 10299 +14050 13398 +14102 12807 +10994 10140 +11433 11140 +12197 10257 +10721 10154 +11973 10874 +14108 12889 +14730 10620 +12191 10721 +10304 10241 +14771 14303 +13369 12676 +10599 10529 +14895 14805 +14524 12598 +14908 10792 +16665 14842 +14635 13303 +11995 11617 +14771 13198 +14802 10815 +15177 14771 +13230 10800 +13891 13295 +16091 12878 +10216 10135 +14908 14730 +13577 11624 +15024 12264 +12173 10140 +14234 12831 +14908 11298 +12892 10849 +15096 12191 +10721 10397 +14771 14698 +15412 10980 +12992 10397 +10994 10868 +14524 11603 +14797 12171 +15570 13303 +13851 11259 +13577 12917 +14783 13198 +14771 14747 +14100 12896 +14122 13076 +15356 15304 +14193 11278 +11865 11292 +13121 12191 +14332 12197 +13970 13942 +12003 11884 +14576 14122 +11775 11337 +15618 15167 +10815 10158 +11511 10551 +16340 15741 +15502 11823 +14831 11278 +13198 11042 +14869 11122 +13367 12217 +12266 11775 +14804 12268 +12954 10868 +15532 14081 +11492 10405 +14122 11481 +12339 11298 +12266 11278 +13930 12891 +13061 10683 +13232 12953 +13931 10821 +13061 12119 +11982 10728 +11150 10397 +14107 13303 +14761 13198 +16091 15374 +14588 11563 +13930 13290 +12206 11495 +12896 10194 +14869 14057 +10640 10139 +14869 10693 +11764 11675 +14231 10529 +14025 10821 +15478 10139 +12892 11278 +13487 11259 +14574 13930 +15016 10599 +13851 12206 +12853 11227 +11699 11066 +11977 11423 +10627 10590 +13244 10562 +14683 14570 +15842 13667 +11612 10747 +15011 11111 +13369 11555 +11884 11267 +12892 10136 +14747 12992 +11697 10693 +15376 10821 +12206 10800 +11898 10849 +15356 14050 +14656 10158 +13461 13244 +13795 13485 +14397 14122 +14107 12339 +15124 12235 +15096 14986 +14057 11563 +14193 13495 +15016 13829 +14869 13485 +10990 10397 +15570 12266 +15295 13061 +15041 14679 +13029 11697 +11563 10466 +11423 10713 +11764 10849 +13485 11973 +13871 12266 +14689 14577 +14869 13342 +14869 12266 +12206 11433 +12884 10747 +14685 11057 +15167 10397 +14098 10397 +15016 13983 +14893 13230 +12478 11618 +14100 10529 +15163 12197 +13377 12448 +15304 11898 +14131 12917 +14100 13495 +14747 14489 +14814 10819 +14576 11042 +12263 10994 +14570 11884 +15167 14875 +14131 13282 +12280 10466 +14871 13964 +11278 10423 +14307 13541 +12892 10821 +13487 13303 +14869 14747 +15794 11535 +15887 11550 +13502 11298 +12544 11111 +10821 10713 +13434 12676 +12264 11996 +14057 10194 +16091 11042 +11577 11433 +13540 10666 +15016 11298 +12264 10423 +11233 10423 +12917 11042 +14711 12222 +12003 10620 +10849 10466 +13873 11411 +14831 11298 +16133 11193 +14107 13785 +12264 10325 +11638 10800 +13232 12055 +11111 10423 +13244 11042 +10349 10247 +14771 12758 +14893 10590 +13342 12191 +14273 12638 +13768 11844 +11921 10821 +14570 10821 +15741 11367 +12954 11003 +14492 11067 +13367 12197 +11267 10721 +13198 11111 +15754 12815 +13204 11973 +12478 10257 +11292 11092 +12889 11150 +13655 11695 +15389 10713 +15295 11540 +11844 10754 +13061 11996 +12184 11392 +13871 11057 +14869 10713 +11241 10299 +12173 11618 +14576 10154 +15376 13476 +14512 10792 +14711 12878 +15919 11057 +14761 11714 +15376 14683 +14814 13930 +14457 13487 +12478 11123 +12889 10408 +14492 11481 +13577 11193 +13232 12954 +12954 12478 +14893 11042 +13292 11630 +15304 10135 +13485 12878 +11697 10721 +11618 11233 +12348 10792 +13894 12195 +13507 10687 +12278 11049 +14534 11122 +14761 14108 +12896 12191 +14736 11086 +12591 11630 +12197 10423 +13244 12889 +11511 10770 +13232 11697 +15861 14485 +12896 11278 +15919 11637 +15043 12917 +15086 11643 +12889 10747 +11764 11433 +13930 10868 +11764 10821 +13809 11953 +14576 10257 +14747 14679 +13232 11423 +13230 12339 +14831 10559 +14197 12478 +11423 11003 +14635 13230 +14100 10693 +13796 10868 +14783 11973 +12197 12191 +13851 11540 +11884 11259 +13674 10800 +14747 12441 +12992 10279 +11193 10185 +14512 10529 +14893 11996 +13277 10423 +14895 14234 +14628 14477 +13487 10299 +14167 10917 +14679 10874 +13296 12191 +14716 14512 +14908 12266 +14771 11697 +14100 12222 +13577 11697 +13487 10408 +11563 10779 +11336 10245 +10821 10685 +11337 10540 +14831 14747 +15412 10819 +12094 11278 +14576 14307 +15304 14986 +15020 14577 +15085 13369 +15304 14193 +10849 10397 +15919 12945 +13461 12217 +16218 13461 +12223 11278 +14524 10140 +12889 11042 +14122 11278 +14122 11066 +15304 13871 +13541 12222 +12397 10529 +11042 10397 +14674 10590 +12266 10849 +15016 13342 +13198 11481 +10800 10327 +15370 14107 +13964 10800 +15554 12709 +14570 11292 +13796 10599 +14512 10821 +13367 12892 +14843 14831 +12523 10397 +11252 10693 +11638 11433 +14747 14100 +15412 12197 +13829 10590 +13487 12343 +12889 10372 +13933 12451 +13277 11049 +13930 10627 +14493 11028 +14321 12478 +13931 13198 +13232 11726 +14112 10685 +12884 10990 +13296 10257 +12244 11764 +12720 10245 +12268 11643 +13942 10139 +14691 13303 +14843 11986 +14718 12769 +10994 10298 +15624 14814 +14524 10721 +13871 13577 +15356 10540 +15096 14730 +13930 13577 +15385 15293 +12889 11468 +11995 10990 +10683 10268 +13296 12451 +13072 11618 +15502 13851 +15177 10800 +14150 11938 +13930 11259 +15380 14150 +11512 10551 +15356 14938 +14869 14771 +15096 13204 +15380 11066 +14804 10551 +15096 14696 +14100 10713 +13230 12478 +14635 12191 +14869 12892 +15304 14570 +13232 11618 +15887 12779 +13230 11066 +14082 11193 +13230 11278 +14108 11921 +13502 12889 +14905 14698 +14875 13303 +13342 12451 +12264 11638 +12549 12492 +14092 11193 +13244 11267 +13198 13158 +15043 10194 +14275 13851 +12992 10529 +12755 12671 +13487 10136 +14057 10849 +14122 13105 +13871 12451 +11973 10994 +15024 13495 +14679 14100 +15023 10630 +13930 11726 +13244 11617 +14952 14683 +14730 11986 +14307 14107 +13796 12320 +13303 12884 +14805 12704 +14711 11618 +16101 14252 +12853 10754 +13485 13360 +14747 14307 +15389 15041 +14747 11057 +12223 11298 +15016 14492 +14057 12280 +15016 13232 +14905 10559 +15016 14635 +15618 14530 +14761 11721 +12324 10299 +15016 11123 +14689 12892 +13930 13303 +13796 11433 +13476 10559 +12889 11719 +13871 11308 +14412 12321 +11973 10155 +11555 10304 +12892 10713 +14679 10792 +13158 12889 +11540 11292 +11042 10627 +16681 12197 +13958 11057 +11111 10781 +11267 11146 +11550 10299 +12868 12615 +14027 13198 +14100 10874 +14869 14262 +14307 10397 +14288 11563 +13256 10185 +14100 14057 +12916 12197 +14256 11630 +14908 12953 +12323 11995 +13204 12954 +14100 11193 +12889 10257 +14831 14635 +14314 12007 +15381 13244 +12953 12191 +14893 11259 +15016 10590 +10397 10146 +15370 11049 +14100 10792 +11433 10874 +15167 10693 +15250 10299 +13244 12003 +15167 13871 +15411 11298 +14307 11433 +12992 11433 +15754 15741 +14635 12889 +11618 10874 +14492 11973 +13342 10849 +12945 12915 +14908 14321 +14831 10615 +12896 11540 +13072 11049 +13871 13827 +15096 13232 +11292 10185 +12992 12945 +14747 11697 +11728 10613 +15304 12882 +14107 14057 +14122 12896 +14986 10397 +13259 12889 +14314 12884 +15245 14895 +14004 12278 +11122 10713 +13398 10683 +12917 10423 +14193 12264 +12391 11193 +11203 10408 +15356 11252 +14512 12917 +14025 11697 +14952 11057 +13796 11618 +13204 10800 +15554 12807 +15412 14761 +14683 10721 +15741 13693 +11921 11292 +14082 10431 +16730 13507 +14689 10423 +13303 10933 +14895 14856 +12391 11423 +14576 10868 +14100 11721 +14730 12323 +13873 10033 +11618 10257 +14816 14474 +15618 15376 +12772 12721 +12268 10299 +13495 11996 +13204 12898 +11996 10529 +13232 10397 +15370 10821 +12264 12191 +13347 13109 +11066 10821 +14107 11140 +12982 11292 +14524 12889 +11973 10693 +12278 10171 +15096 11726 +14107 12889 +14771 11298 +15016 11764 +11641 10874 +15376 14057 +13796 10713 +13244 11150 +12280 10849 +10329 10136 +13342 12917 +14112 12119 +11823 10590 +15124 10184 +11298 10713 +14524 12278 +14520 12335 +14711 11995 +14576 11995 +12335 11076 +13796 10559 +14112 10408 +14716 12889 +13871 11697 +14574 13931 +13485 10540 +14843 11278 +11641 10693 +14102 10225 +12868 11844 +13930 10732 +15070 12945 +14814 12266 +12451 11292 +12280 11695 +14524 14112 +14570 11638 +12264 10821 +12891 11563 +14696 12878 +15304 12323 +12671 11336 +14685 10540 +13871 13795 +13947 12889 +11996 11433 +16553 10154 +15412 10599 +15249 14275 +15249 13076 +13931 11193 +14576 10599 +12719 12087 +13232 11057 +12953 10257 +14747 11470 +14908 13495 +13303 11823 +13158 11638 +14802 14730 +14098 11278 +11973 10208 +14905 11775 +13303 11996 +13342 11433 +11563 10627 +15376 11042 +14761 10685 +14831 12391 +12853 11952 +13232 10990 +14457 14120 +12191 10325 +14783 12191 +13061 10819 +15579 10170 +14730 11638 +13851 13204 +14492 13032 +12917 10654 +13871 10397 +14869 13061 +13930 13367 +14783 12228 +12339 10216 +14843 10423 +14457 11563 +12889 12324 +14492 10994 +14908 13930 +14122 13158 +14869 13204 +14576 11540 +12087 10313 +12945 11618 +12451 11057 +11973 11193 +14397 12945 +14683 10874 +10661 10463 +13871 11042 +14986 14730 +14130 12779 +11719 10136 +14794 13964 +13485 11067 +13851 10980 +14524 13198 +14004 13587 +13930 12954 +16353 10397 +12889 11789 +14679 12441 +13970 11630 +15245 11941 +16091 11376 +14492 11042 +13198 12954 +15376 13495 +13851 11423 +14577 10800 +11885 10299 +14843 11292 +14747 13667 +13244 10466 +12841 11445 +14107 11413 +15356 10198 +13970 11280 +15249 13667 +13196 11555 +13061 11995 +13296 11193 +15370 12323 +13232 11973 +14716 10590 +14100 13891 +11193 10559 +15853 13710 +12951 10781 +14397 12191 +14430 13495 +14843 14771 +14397 13931 +12889 10599 +13461 11721 +13196 11825 +13244 12323 +13244 10599 +12129 10868 +15203 12197 +15304 10136 +14831 11042 +14412 10299 +15049 11535 +12388 10821 +15794 10299 +12676 11630 +14696 13256 +14996 12197 +11027 10654 +14863 13467 +11433 10785 +14057 13890 +14814 14100 +12896 11140 +14893 14747 +14674 11292 +13204 10693 +14986 10529 +13851 11721 +13198 10423 +12195 11630 +13577 12391 +15295 13244 +14193 13244 +12266 10466 +15016 14193 +11433 11203 +15275 14006 +12266 10747 +14747 12523 +16498 15167 +13342 11193 +11630 10754 +14986 10434 +15027 11790 +14869 11503 +11638 10423 +14696 10466 +11057 10140 +15096 14524 +13487 10469 +16091 10994 +15027 11057 +11563 10620 +14576 13495 +14893 11995 +11612 11298 +14816 12831 +11973 11259 +12266 10397 +15478 14805 +14831 12173 +13256 11618 +14122 12119 +14524 11292 +15278 10299 +13244 11421 +14524 11540 +15304 14908 +12156 10849 +13198 11618 +15167 12320 +13341 13061 +13158 10693 +14570 10466 +13232 13158 +15293 11336 +15721 11535 +15370 12915 +13715 10299 +11057 10868 +14747 14256 +14027 10785 +15049 13873 +13244 11725 +13198 12884 +13947 11298 +15249 14683 +14489 14057 +14952 12451 +11259 10599 +11953 10781 +13029 10540 +13256 12094 +14747 14321 +14492 14107 +15304 11057 +12899 12892 +13936 13203 +12889 10135 +15502 11641 +15153 10194 +13198 11146 +12266 10155 +11921 10781 +14842 10136 +13061 12945 +14761 14696 +13360 10397 +12992 11057 +12184 11630 +13873 12184 +12184 10754 +14843 11433 +14107 11003 +10800 10279 +14747 11997 +13931 12007 +14747 10721 +11522 10930 +14685 12478 +14027 10146 +12264 11884 +15709 11317 +15725 15061 +11540 10140 +14685 10785 +14696 14492 +13204 12197 +12391 10397 +15096 13930 +14288 11111 +13495 11641 +13931 13296 +12892 10194 +15412 12915 +15249 10423 +15389 12266 +14122 11986 +13211 10154 +14512 14112 +12155 10980 +16091 10469 +13198 11775 +13342 10713 +13290 13244 +14771 13342 +15167 10849 +14875 11728 +12889 11921 +15887 15554 +11697 10397 +10994 10299 +14582 12016 +11844 10299 +14633 10397 +12197 10299 +11618 10980 +14512 10257 +16091 12119 +14761 11995 +13204 10713 +11630 11280 +12704 11535 +13495 10257 +13714 12184 +12889 12211 +12155 11699 +15502 11259 +13341 10529 +10599 10559 +10994 10185 +15304 14492 +13891 10800 +13296 12339 +11259 11049 +12954 12889 +13487 12280 +14853 14736 +14524 10423 +15554 11550 +14908 11433 +12523 11619 +15008 10466 +16727 13987 +14843 10257 +14747 10821 +14112 12265 +12945 10980 +15257 12855 +14307 13487 +12610 11997 +11292 10372 +12892 10299 +13891 10135 +14908 14679 +14730 13830 +13873 11550 +15167 11823 +13871 10721 +10754 10551 +15167 14107 +13061 12448 +13342 12339 +13487 13230 +15160 12676 +14730 14057 +10685 10397 +16429 10721 +14814 11066 +13203 12339 +14057 13204 +14745 12389 +13158 10721 +10800 10792 +13211 12339 +13244 11618 +14122 13461 +10821 10529 +12953 12451 +11292 10713 +14524 13342 +15525 13796 +15570 11337 +14057 12982 +14107 11066 +15249 12191 +16091 14122 +13232 12896 +12917 11146 +14492 11259 +15887 11492 +10917 10551 +12448 10781 +13303 11123 +12610 10204 +13348 13061 +13341 11433 +15919 13502 +15167 11376 +15236 11630 +14893 14869 +16218 13303 +13495 11278 +13244 10208 +14730 14524 +11042 10257 +13667 10821 +10693 10185 +15930 14747 +13061 10599 +12278 10693 +13487 11233 +13795 11423 +13111 11630 +13770 10241 +14054 12103 +12478 11193 +13487 12389 +10821 10268 +13117 10800 +11775 10631 +15153 10821 +14685 10599 +11376 11109 +10170 10017 +14685 12339 +14533 11298 +13303 10423 +12992 12455 +13930 13244 +10800 10529 +12544 11982 +12917 12223 +12451 10140 +11648 11337 +13930 10208 +15919 11726 +10821 10792 +14771 12206 +16363 10965 +11267 11252 +12391 10599 +12954 12892 +16743 12574 +13487 11977 +12131 11344 +14574 11996 +14747 14689 +14474 11280 +14635 11996 +14853 13198 +13851 11697 +16091 12598 +14696 10268 +12917 10599 +15919 11778 +14683 10325 +15376 12451 +11042 10732 +11977 11109 +14122 10397 +13369 12195 +11973 11042 +12889 11433 +14122 10185 +11618 10589 +13541 11615 +15374 12197 +15096 11495 +14288 13796 +14057 11042 +12544 10990 +13256 11563 +15370 14122 +13464 13061 +14122 10540 +14112 12953 +13232 10529 +13342 11775 +12953 11233 +15070 14100 +16091 10980 +12559 10670 +14107 11292 +14492 10590 +12255 11109 +13342 12335 +13579 11550 +14457 11775 +11618 10431 +14908 14570 +13244 11415 +13487 11049 +16603 14572 +14524 10792 +14057 11986 +14831 13830 +14869 11097 +12889 11764 +11563 11471 +12992 10685 +14730 14108 +14869 12339 +16133 14814 +14107 11433 +13934 10170 +13232 10154 +13704 12663 +15249 12266 +14475 10821 +15016 14570 +13360 11996 +14524 11298 +15887 12851 +11997 10299 +13894 11630 +14783 11292 +14027 12391 +13061 12228 +12953 10868 +12945 10397 +10821 10279 +14259 14107 +12228 11995 +11884 11109 +12676 12087 +12892 12217 +13930 11146 +13731 12197 +16091 12544 +11292 11122 +15356 11423 +14919 11445 +14771 12954 +15376 11140 +13307 12266 +14107 13158 +14321 11298 +12217 10208 +14842 10590 +11292 11233 +13487 11433 +15024 11278 +13342 10136 +12559 11441 +11697 10194 +16647 14222 +12944 12197 +10781 10185 +13230 12889 +15376 10792 +12365 12197 +15249 15096 +13543 12598 +13851 12173 +11764 11697 +13930 10620 +11028 10299 +15304 12324 +15579 10304 +13204 12206 +13061 11150 +15070 14492 +14853 12992 +15919 11603 +16731 16681 +12195 11492 +12889 11977 +15096 13577 +12222 10785 +12266 11066 +11995 11027 +14869 12264 +14696 14570 +12889 11898 +11146 10158 +12954 12266 +15919 11953 +14704 11057 +14880 11028 +11823 11540 +12992 12206 +15376 11267 +12882 11278 +14307 13577 +12892 11041 +14747 13931 +14730 10721 +12663 10299 +13230 12953 +13871 13127 +14679 13341 +11603 10800 +15295 11995 +15478 13970 +14698 14683 +11433 10257 +14869 12451 +13655 12039 +14524 12478 +14908 13931 +14893 11423 +14307 11986 +14275 12478 +13303 11267 +13930 11764 +14107 10821 +15167 11764 +15440 10965 +14268 12748 +13767 10775 +10930 10157 +16654 13002 +13367 13139 +15650 10559 +14492 11337 +10661 10011 +13485 11066 +12339 11618 +15167 14553 +13232 12889 +15249 13851 +16428 10011 +12889 10994 +14570 10800 +16101 11563 +10792 10216 +14828 12171 +12719 11492 +11511 10299 +14512 11233 +13341 10821 +12945 11193 +11618 11495 +14574 14122 +14321 13577 +14747 13587 +14761 14492 +15304 11252 +14696 13182 +15016 12455 +13495 11495 +11921 11109 +14570 11109 +13061 10431 +13434 10299 +14804 13942 +12992 11252 +13495 13244 +14321 13931 +14397 13930 +12339 10683 +13495 11540 +14843 12266 +13894 12855 +13230 12917 +11517 11337 +13486 12003 +14771 13388 +13072 12915 +15020 10620 +14771 13204 +16133 15016 +12945 11973 +13230 10994 +15853 13894 +13105 10460 +15842 14576 +13303 12892 +12822 11941 +13873 10559 +13184 11433 +15304 10216 +12191 10874 +13495 11995 +12264 11057 +14843 10874 +14259 10581 +15919 13851 +12365 10135 +16101 13546 +13851 11867 +14236 13232 +13930 13587 +15153 11540 +15919 14524 +13931 11479 +12321 12294 +14986 10721 +14321 10423 +14050 10693 +14747 14633 +14696 10693 +14457 14057 +14730 12191 +12094 10849 +13486 11423 +13930 10792 +16479 10990 +13232 10423 +15325 14712 +15304 14576 +11995 11042 +14027 13487 +14683 10397 +14635 13105 +14869 10170 +14711 11441 +11833 10349 +12953 10792 +14492 10540 +14804 13806 +13204 10874 +11941 11845 +13674 11728 +14130 11227 +15618 14831 +13485 11252 +13851 12945 +13200 11098 +10821 10683 +14683 10792 +14100 11823 +13422 10599 +13342 12391 +15153 12945 +14062 12523 +13232 12129 +15380 13655 +13770 12779 +12544 11252 +15624 13851 +12868 10299 +14987 10551 +12018 10140 +14683 11298 +13502 10397 +13360 12945 +13464 10744 +13796 12264 +13204 11618 +15096 11995 +11267 10529 +14492 14100 +14831 14122 +14831 11697 +14122 11423 +13851 10721 +12339 11292 +14282 11492 +15249 11996 +15376 13796 +13487 11267 +12264 10577 +11423 10136 +14747 11996 +14553 13303 +14730 14696 +13891 10713 +10170 10139 +14122 11697 +14869 10747 +14856 12822 +12315 11756 +13495 10135 +13029 11603 +13303 11973 +14122 14100 +12339 10647 +15096 13931 +13871 13200 +12953 12892 +15356 12197 +14893 12954 +14856 10551 +15061 10299 +11241 10551 +14905 11898 +12889 10299 +14492 12206 +13244 10747 +15412 11973 +15370 11618 +14576 12397 +16133 14877 +14685 14492 +13930 13796 +12265 11764 +11535 10299 +14635 11618 +12324 12206 +14321 10434 +11423 10683 +14908 11041 +14698 11540 +15249 10298 +15624 12992 +12348 10540 +11823 11066 +15887 10299 +13667 10434 +14893 13495 +13256 10423 +15401 11298 +15096 14843 +13487 12917 +12553 11126 +13230 12365 +13296 10140 +15709 12822 +12451 10559 +10868 10423 +14107 12132 +11298 11042 +14712 14689 +14696 10397 +12451 11973 +15626 14819 +11714 11057 +10754 10170 +14477 12652 +14712 10800 +11630 10783 +12324 12264 +11996 11146 +14314 14107 +13360 10329 +15502 15370 +13029 11066 +13244 12206 +13434 10416 +14908 13256 +13487 12206 +16345 15741 +13303 12197 +11973 11274 +13061 11563 +15887 11555 +15016 11973 +12945 10868 +10559 10299 +14747 14193 +13873 11630 +15167 11711 +10599 10434 +15570 13290 +11146 10469 +12323 11193 +13970 10754 +15304 10721 +16603 12652 +13487 10559 +13891 12264 +15304 15016 +12523 10926 +11259 10693 +13198 12191 +12155 11996 +13873 11336 +12184 10016 +11267 10380 +14683 11278 +14831 14275 +11337 10792 +14027 11973 +14275 13204 +11697 10136 +15412 11278 +14112 11057 +14492 11252 +13277 11298 +14853 14197 +13809 13303 +14771 10423 +13958 10874 +15919 14122 +11122 11097 +15236 13467 +12264 10558 +12953 11618 +11996 11057 +14307 11057 +14674 10155 +13077 13076 +13342 10140 +13676 12807 +14908 14747 +14869 13891 +13520 12758 +14524 13487 +16091 15153 +14908 14771 +14986 14107 +13871 10590 +12992 12339 +11764 11259 +14627 12719 +13667 11042 +10990 10666 +11995 11003 +13809 11111 +15295 12339 +14303 10713 +14492 11267 +11042 10135 +12278 10980 +14108 11695 +14814 12191 +12896 12266 +14252 11563 +13495 11041 +12436 10617 +11884 11433 +13871 13495 +14736 13796 +11638 10140 +15841 10299 +13467 13196 +11905 11697 +15027 15024 +15376 13851 +13061 11066 +14908 13485 +14685 11193 +11336 10917 +12217 11292 +11905 11298 +15153 12339 +13577 11298 +12007 10747 +15257 12719 +12055 10466 +14100 10208 +14683 10279 +11675 10154 +15295 13303 +15991 14828 +12953 10581 +14635 11884 +11884 11292 +13256 11042 +14112 13204 +14320 11721 +13487 12191 +15096 11641 +14893 11921 +12206 10590 +11630 11535 +10739 10590 +13829 11921 +14570 12278 +13105 11057 +14112 12278 +14869 13295 +15862 10551 +15074 11027 +12574 10819 +11109 11057 +14683 13061 +12889 11481 +15304 10559 +14489 10157 +13930 11278 +15167 11842 +13487 10185 +14397 11086 +12892 11719 +15370 11203 +14050 11057 +13770 12708 +15376 10529 +12266 11109 +15016 11376 +15304 13485 +13244 10216 +11535 10640 +13851 12889 +12915 11140 +13796 12478 +14100 12007 +15376 12896 +13579 11630 +12007 11697 +11468 11292 +16567 14919 +11433 10599 +12323 11042 +11259 10721 +13303 10800 +15043 12598 +11193 11109 +12638 11511 +12131 11193 +15376 11423 +11433 10693 +11292 10925 +14709 13767 +16311 15257 +11540 11193 +13204 11267 +12982 12173 +14057 13158 +13418 11961 +14843 12391 +12896 11977 +13296 11764 +13198 10819 +12266 10208 +13198 11415 +11140 10590 +11292 11123 +14112 14108 +10666 10559 +13796 10666 +15447 11728 +14107 10325 +15478 13196 +13464 12155 +13198 10994 +14131 12307 +14397 12448 +15304 10792 +11193 10529 +11637 10800 +15412 12264 +13297 10299 +15249 11298 +14747 12884 +13930 11537 +13495 13256 +12708 11227 +14492 12544 +14679 10540 +16091 10431 +13577 11027 +13296 13232 +12339 10620 +12898 12892 +16715 12197 +14588 12266 +13295 11042 +14108 11298 +14107 11921 +14635 12953 +12264 11109 +10980 10590 +11618 11066 +12992 11905 +11537 10434 +13795 11057 +13230 10529 +15304 12191 +14027 10397 +13232 11510 +14167 12841 +14112 11973 +13342 10800 +12653 11336 +12265 11697 +13244 13061 +12264 11267 +14100 10540 +13931 10980 +13930 11057 +15295 11193 +14771 13796 +12892 11042 +14747 13930 +14112 13232 +14747 12478 +14130 11336 +14530 11503 +14307 12197 +11227 10304 +15163 12055 +14831 12758 +14683 10529 +14747 13851 +14570 12266 +14960 10590 +13342 11337 +15842 14635 +14696 14122 +14986 11986 +10559 10466 +12264 10140 +14100 12197 +13487 13296 +15412 11003 +15016 12878 +15709 15293 +14893 13891 +14627 12087 +11292 10620 +13931 13891 +13871 12191 +14747 11050 +13796 11042 +14122 13303 +14288 11283 +13204 12945 +11150 10185 +11292 10643 +14730 11042 +10313 10304 +15074 12896 +13964 11098 +15741 12622 +14633 11203 +14869 11042 +14512 14492 +13244 11086 +14107 12982 +12953 10434 +12784 11336 +14696 11618 +13676 10299 +15096 14908 +11193 10994 +15215 12016 +12339 11267 +13303 11066 +11641 11413 +14730 11415 +13930 10397 +12709 10551 +12294 10245 +13495 12953 +11503 10732 +14843 14679 +14683 11540 +10874 10868 +14273 12748 +13871 12953 +13158 12266 +12851 12709 +12896 11973 +14908 13198 +14057 10874 +13388 10800 +11259 10185 +11973 10397 +14730 11721 +15446 10170 +14098 13667 +14122 11233 +14771 13158 +14574 12348 +14321 13930 +11298 10728 +11980 11468 +13871 10216 +14831 10372 +14679 10136 +13958 11150 +11823 11203 +14254 12478 +12884 11278 +14893 12892 +10431 10135 +15356 13232 +13433 10466 +13851 11563 +12255 11292 +12391 10670 +13958 10408 +13949 12478 +13232 11267 +13360 10781 +13894 10304 +14107 12266 +15919 12007 +14262 11292 +11973 11618 +15304 13198 +15838 12321 +15070 13244 +11423 10980 +16736 15167 +14869 12156 +11292 10140 +15074 14635 +12917 10590 +14893 10140 +13931 11764 +15167 12119 +13484 10397 +11336 11227 +11995 11292 +14027 11618 +12769 12195 +14843 14100 +11123 10397 +14908 14122 +15570 13029 +13495 10562 +12945 11298 +11721 11259 +14282 10299 +16133 12598 +10994 10792 +13398 10721 +14321 13198 +14321 10994 +11555 11535 +11555 10033 +14100 12217 +13487 13204 +11292 11193 +15376 13891 +15096 13667 +13342 12951 +13830 10423 +15295 14314 +12197 10171 +12889 11650 +14712 12758 +14193 14107 +14831 13342 +15236 11463 +14112 10208 +12197 11728 +13433 12389 +14098 11109 +13931 10397 +13930 12094 +14893 10397 +13476 10136 +16091 14696 +11057 11003 +16091 12348 +14747 13495 +12889 11612 +11764 10540 +15096 11996 +14869 10423 +16725 13796 +16091 14193 +14635 11259 +13029 10683 +13204 11986 +12559 12197 +16428 11399 +13072 11884 +15016 11726 +14718 14627 +14027 13930 +15074 12266 +14107 13232 +15167 12332 +11111 11109 +12951 12448 +10800 10713 +12494 10792 +15370 14057 +13367 12889 +13485 10721 +15618 12576 +15153 13898 +13930 10643 +14696 13290 +11003 10683 +11721 10800 +14893 10994 +14100 11057 +14679 10599 +14869 11996 +14747 14457 +11193 10299 +11433 10994 +14869 14193 +15304 11764 +11618 11123 +14112 11823 +15153 11146 +14197 10529 +14908 11042 +13232 11259 +12831 10551 +14783 10590 +11775 10559 +14107 12278 +15478 11555 +14685 12945 +11996 11697 +13029 11292 +12278 11697 +13341 10559 +14130 11492 +13277 12278 +14100 10172 +13891 13158 +14831 11123 +13487 13029 +11986 10868 +15919 10994 +13486 11563 +14869 12889 +14761 10747 +14197 12544 +14814 12451 +13891 13303 +13894 13770 +13087 11344 +15502 15016 +13244 12207 +13931 11617 +14234 12807 +11996 11066 +12945 11278 +10713 10529 +12264 11641 +11042 10590 +15856 13002 +14107 10990 +13244 10185 +14559 11630 +13577 12953 +11298 10868 +14122 10713 +15554 13770 +12478 12266 +14747 11109 +14696 14321 +14307 11995 +14679 10559 +11423 11292 +12320 11995 +10299 10241 +13577 13230 +14082 14025 +14107 11123 +12902 11292 +12197 11764 +13851 11057 +15497 10654 +14025 10257 +14689 14570 +15919 15374 +15016 14576 +13930 11612 +13984 13418 +14685 11996 +15016 12992 +14524 13232 +11503 10140 +14696 11563 +14524 14492 +11057 10792 +13398 11493 +15016 13930 +13796 12173 +11982 10849 +14986 12478 +13461 13256 +15016 13341 +12945 10423 +12323 11973 +15282 13579 +14802 13121 +14831 13244 +14683 13851 +15721 13768 +12266 11146 +14057 12758 +11641 10208 +13577 13418 +14679 10408 +15356 13204 +14747 10590 +15380 15016 +12544 11977 +11648 11292 +14530 11637 +11884 11637 +10800 10693 +13931 11973 +11721 10819 +13485 10693 +12339 10821 +12321 11336 +14125 10640 +14771 10157 +16721 16634 +12878 12264 +12544 12055 +14683 11898 +16091 12917 +15160 10299 +14492 11292 +13490 10257 +14112 11618 +12819 12633 +15370 11995 +14307 13139 +13256 10599 +15412 14050 +12264 11259 +14730 12003 +14794 13259 +14842 11298 +13796 11098 +14635 10257 +12917 11423 +12599 10540 +11109 10620 +13891 12324 +14747 14691 +14122 10434 +16091 10721 +12621 10349 +13342 10965 +14908 13341 +15624 12448 +15478 11535 +15656 10154 +12339 12206 +13241 10185 +12197 10670 +12889 12173 +14711 12917 +14747 12324 +15374 11150 +10994 10559 +13485 11775 +13676 11630 +15841 14747 +15257 10405 +13264 12889 +14108 13487 +11833 10299 +14576 11066 +11973 10529 +14314 12892 +11953 11278 +15171 10299 +10994 10721 +11433 10299 +13667 12544 +13244 11298 +13891 11433 +14467 13264 +10821 10721 +11995 11618 +12244 10990 +15581 11643 +14955 12016 +13342 11003 +13369 11028 +14905 14771 +13194 12211 +11336 10304 +11057 10785 +12945 11540 +12173 10257 +16091 13930 +14570 13851 +13341 12280 +15045 10299 +10754 10299 +10815 10154 +15370 11042 +15016 11481 +12191 11563 +13796 13255 +10615 10561 +14952 14082 +14819 11126 +12917 11259 +13487 10819 +12451 10868 +14057 10620 +12892 11413 +12197 11641 +14683 11057 +12297 10590 +15374 12896 +15016 10140 +14679 13851 +10732 10423 +14193 13871 +13487 10800 +13830 13520 +15504 10225 +13806 10640 +10721 10140 +15249 12094 +14275 10721 +15304 13930 +14131 10821 +13476 10590 +11630 10076 +14229 12815 +14736 13061 +15798 12708 +12339 10800 +14574 10721 +15626 15027 +13433 12889 +13865 11041 +11292 10950 +10800 10721 +12348 11042 +15539 12003 +11775 11042 +13204 12264 +11298 10693 +11214 10184 +15249 10693 +13970 12844 +14893 11278 +14685 10569 +14050 12574 +14893 11066 +14512 14107 +13203 10785 +14683 12323 +13495 11728 +15043 13344 +15502 10980 +14696 12992 +12222 11656 +11941 10640 +12544 10257 +13830 11618 +12448 10693 +11790 10208 +14730 10298 +13303 10683 +11618 11067 +11067 10397 +13871 12278 +15919 15249 +14869 12278 +13485 12441 +13244 12951 +14679 10466 +15045 11193 +14683 13495 +13931 10158 +12771 10170 +11555 10139 +16091 13341 +14098 11479 +16091 10194 +12087 10551 +14512 10466 +15249 11775 +14804 14485 +13931 10868 +14738 12755 +14553 12266 +12954 10713 +14321 10140 +11603 10559 +15295 11973 +10599 10279 +12954 10185 +14831 11140 +14761 13936 +13891 12892 +13796 12598 +13087 11193 +12264 11953 +14512 11973 +14098 13931 +12884 10171 +14843 14107 +13342 13230 +10821 10693 +15618 10325 +12222 10589 +14783 10171 +14893 10279 +14685 11618 +15785 13873 +15096 13495 +11292 10732 +12844 10754 +14842 13422 +12955 10171 +11884 11618 +12720 11336 +11995 11884 +15389 14869 +13930 12953 +13002 12652 +14712 12441 +14696 12339 +13796 12278 +14107 11109 +14679 13891 +12745 10661 +14576 12173 +12264 10329 +10627 10466 +16091 14100 +13577 10721 +15016 14679 +12492 12173 +13008 12222 +13198 12953 +14520 14320 +12339 10849 +12892 12264 +12197 10990 +13851 12278 +13543 11697 +14831 10800 +12769 10416 +14730 11764 +12892 12191 +14711 14122 +14512 12478 +12494 11577 +12851 12708 +15370 13931 +11066 11049 +11719 10713 +12598 10155 +13796 10135 +15295 13461 +15295 14492 +15086 10299 +14576 10158 +13061 12892 +15304 10821 +16479 15167 +14193 13796 +13342 12448 +14633 13871 +14050 12191 +13290 11789 +12892 10185 +13894 12853 +12721 10243 +14107 10590 +12278 11980 +13930 10135 +13495 11003 +14738 11445 +12892 10540 +12197 11042 +14747 10994 +15581 10299 +13244 11292 +15412 12003 +14321 12391 +14908 12892 +15380 11433 +14107 10630 +15249 13485 +12884 10821 +14893 11540 +15554 11492 +11298 10298 +14814 14107 +14252 13487 +11122 10590 +12266 12177 +14679 10257 +11842 10815 +11953 10478 +15167 10540 +12197 11961 +14122 12206 +14747 14635 +13418 12448 +11977 10136 +13029 11298 +12206 12191 +10693 10590 +14761 11789 +13947 10721 +13203 12892 +15887 11227 +14893 13198 +12641 12635 +13487 12992 +12951 10423 +11618 10785 +13579 10304 +14570 10423 +11193 10158 +14685 13230 +13369 11550 +13230 11042 +14895 13873 +13303 12339 +14747 10874 +11775 10141 +13710 12831 +11433 10466 +12321 10299 +15741 13504 +14100 10279 +13303 12448 +12321 10241 +13770 12855 +14689 11775 +14869 10994 +12323 11278 +14237 12892 +15049 10299 +14709 13434 +12217 10868 +13361 10693 +11066 10423 +15356 14122 +13204 11423 +14492 10874 +12951 10146 +11292 10561 +13204 11278 +13871 10540 +13830 10397 +13768 12087 +13931 13342 +12769 11630 +13891 12191 +13303 11003 +11789 11423 +15376 10279 +15554 13196 +13796 12266 +14679 12478 +11042 10800 +15919 10590 +14679 11042 +14696 12478 +14877 11415 +15016 12391 +15085 14718 +15096 14112 +14627 11630 +11961 10154 +15024 14027 +13579 11492 +14711 11146 +14027 13303 +15887 12195 +15842 12478 +12339 11003 +11884 11538 +13303 11150 +11603 10713 +11550 10416 +14711 11067 +14843 14819 +14397 13851 +15016 11193 +14679 13476 +15070 14761 +14100 12478 +14761 11292 +12719 12321 +15862 11492 +15304 11292 +13487 12339 +13495 12339 +12185 11292 +12451 11481 +15273 11540 +14869 11995 +15249 11278 +13487 12448 +14730 13295 +11042 10208 +13495 12448 +14430 13232 +13198 11980 +14908 12896 +13555 12544 +12339 10423 +11711 11292 +11986 10423 +12339 11537 +13507 10540 +13891 12363 +11996 11267 +13244 11995 +13871 12206 +13873 10299 +11618 11503 +14397 13360 +15048 11298 +12348 10397 +12451 10529 +11413 11298 +13667 10581 +14869 11423 +14635 13198 +11618 10693 +14492 11884 +13485 11563 +13540 11050 +12982 12889 +15374 14730 +13297 12892 +13487 13433 +15024 10397 +14268 12321 +13832 10257 +13796 13232 +15295 13255 +14908 14674 +14761 14259 +12917 10171 +15257 12709 +13198 11986 +14986 12339 +13232 10647 +10821 10397 +13796 11481 +14955 10299 +14816 13768 +15096 12884 +12758 12492 +15579 11630 +14908 14512 +13204 11298 +13891 12266 +14107 11603 +12892 11267 +14893 14107 +11140 10423 +14730 11259 +12478 11973 +13232 13204 +14493 11630 +14107 12992 +13891 13487 +11146 10693 +10821 10431 +12339 11612 +14843 14761 +13347 13034 +12478 11697 +13873 11487 +12451 10792 +14635 12451 +12869 10170 +13198 11278 +13930 12896 +12889 10792 +14120 13487 +14492 11109 +12598 11540 +14107 12217 +12191 10185 +14234 11555 +14843 11481 +13796 12945 +12769 12708 +12954 10559 +14275 11977 +13495 12992 +12779 11227 +13061 10171 +13731 10535 +11973 10135 +13796 12896 +11697 10994 +12884 11193 +12003 11648 +15374 10693 +13495 10781 +12896 11618 +15232 10800 +14100 13830 +15502 11267 +15325 13796 +12892 12280 +12819 12523 +14679 10194 +14570 10397 +14761 12992 +14492 10140 +14131 12339 +11298 10185 +13487 11764 +14493 10996 +14919 14738 +13461 13219 +15374 10171 +14761 13501 +14027 11697 +10590 10466 +13303 10529 +14100 10821 +14679 10747 +12094 11122 +11898 11193 +13871 11884 +10299 10005 +12191 11982 +14805 10551 +13495 12094 +14908 13487 +15376 13232 +10819 10397 +12217 11298 +15842 10821 +14679 12173 +14869 12954 +14908 13342 +15502 14524 +14570 11986 +14572 11762 +13579 10299 +13873 10416 +16091 10185 +14908 11481 +14025 10721 +14098 11267 +15454 13184 +14709 10304 +13487 12185 +15376 11433 +14027 10693 +11540 10529 +13487 13341 +14259 14025 +14122 14057 +12889 12451 +12206 10423 +12896 11042 +13871 10257 +11982 11563 +14761 13851 +14704 10821 +11535 10551 +11938 11721 +15304 10529 +13862 10620 +14275 13930 +13796 11630 +15016 12884 +11042 11003 +14771 13264 +14908 12206 +13198 12223 +12389 10620 +15304 13487 +14952 11076 +14107 10874 +11726 10423 +14738 10245 +13796 12758 +13303 11433 +12704 11280 +14730 14107 +13198 12896 +14321 13495 +12448 11298 +15282 13770 +10304 10139 +10313 10299 +13342 11823 +13827 12899 +14275 12278 +14869 12705 +14524 13577 +16091 12391 +11603 10434 +12206 11278 +12953 11298 +11066 10800 +14100 11259 +11002 10930 +12544 11375 +10965 10208 +10800 10372 +13796 10693 +11193 10821 +15304 13931 +14843 14730 +14843 14307 +14057 10397 +14761 11057 +12523 10299 +13198 11413 +12191 11481 +13541 10647 +14696 13061 +12951 11111 +15024 13204 +10693 10154 +15370 10599 +15626 15024 +12854 10170 +15295 13871 +13987 12222 +15412 12266 +14747 10666 +11648 11376 +12892 11775 +11259 10140 +14553 11433 +11292 11283 +15376 14698 +13341 11057 +14747 10245 +15090 10299 +11719 10590 +14512 14108 +13303 12917 +13226 10299 +14588 12896 +10397 10257 +13970 12268 +13029 11563 +13244 10685 +15381 15016 +14057 13930 +10299 10033 +14730 10299 +14893 14771 +14730 12055 +14877 12197 +15411 11413 +11227 10551 +14107 11278 +13232 11140 +15380 11764 +15546 13731 +14193 13204 +15304 13204 +14718 14282 +10721 10185 +12339 12173 +15167 12916 +14685 10562 +12889 12264 +13342 13158 +10754 10225 +14831 10171 +14057 11233 +14738 10917 +14908 12992 +14730 10732 +15249 11042 +11540 10693 +12324 11298 +14371 12197 +14570 12264 +14783 12264 +11618 10620 +14576 13342 +13204 10849 +11259 10800 +15569 11259 +14819 12553 +14320 10965 +13303 11375 +14869 10849 +15570 11637 +15370 14685 +10245 10243 +10599 10423 +12197 11433 +14771 11721 +15249 11433 +13303 11292 +13232 13182 +13931 11042 +15412 10868 +15249 12478 +11042 10785 +13369 10299 +14122 10785 +15618 10693 +14831 13198 +14869 14712 +13061 11267 +15024 12992 +14893 10423 +14303 13127 +12851 10299 +13232 12892 +16133 13204 +14814 11775 +12965 11292 +11298 11278 +13415 11630 +12492 12174 +13198 10140 +11337 11267 +11292 11042 +14098 12339 +12149 10874 +14698 10590 +14468 13003 +12953 11057 +15304 11433 +12191 11453 +13196 10299 +12280 11292 +11637 10849 +15370 14570 +15862 14130 +14489 14107 +13930 10685 +10299 10237 +14530 10372 +13204 12173 +13495 10821 +12884 10792 +13785 10982 +14869 14314 +13485 10397 +15376 14831 +14648 12108 +12728 12523 +14222 13826 +16091 13244 +11921 10372 +13303 12889 +14730 13256 +13342 10721 +12278 11042 +12108 10990 +13424 10590 +14574 12217 +15370 11563 +14635 11624 +13930 10990 +14027 13230 +14771 13495 +13891 11066 +11298 10299 +12478 12016 +12478 10785 +10980 10620 +16091 10683 +14712 11057 +16101 14747 +15096 11066 +12954 10721 +12892 10466 +12902 11867 +13863 12854 +15304 13232 +13296 10535 +15070 10721 +12544 12320 +14553 10994 +13930 11027 +14627 14130 +12451 11977 +14656 12323 +13930 13891 +14130 10996 +14877 10800 +11775 10140 +14769 13541 +12954 10171 +15853 11336 +11278 10469 +14122 12264 +11977 11042 +14307 13495 +14100 12244 +14130 12708 +13303 12451 +12339 11433 +13931 11540 +14704 13303 +14828 12523 +14761 10431 +15167 14307 +16091 12884 +12945 11697 +16091 13232 +15249 10792 +15295 10397 +13487 10423 +15376 12191 +13204 11252 +12855 11630 +14057 13244 +13204 12992 +14576 10785 +12889 11648 +15295 10466 +14869 14635 +12206 10185 +14761 10329 +13055 13002 +15016 11267 +13303 10821 +15412 11775 +14747 11193 +13244 11721 +14057 10666 +11278 10529 +12197 11695 +12265 10721 +14487 10157 +15919 15153 +14689 11298 +11433 11146 +12320 11066 +12173 11066 +15376 10423 +13342 12278 +15550 14635 +13204 11996 +11775 11618 +13770 10551 +11076 10431 +12264 10693 +14193 11140 +15304 11140 +13433 11563 +13796 11977 +12982 12758 +14057 10325 +14588 10140 +13809 12339 +11697 10965 +14492 11540 +13931 11995 +11630 10005 +13367 12891 +14252 11292 +15380 10257 +13930 13502 +13369 11492 +13487 11618 +13796 11823 +13871 11637 +14679 10185 +14082 12223 +13495 11637 +15376 14100 +14307 10821 +13461 13198 +14576 10693 +10299 10139 +10821 10800 +15628 11618 +14027 12264 +13487 12451 +14081 10800 +15973 14893 +13495 12451 +12451 11433 +15478 12807 +14683 12094 +14987 12719 +13196 12087 +14893 14698 +15245 12704 +11995 10683 +14574 14492 +12855 12831 +12844 10139 +15412 12889 +14574 14100 +12339 10279 +12892 10327 +11996 11292 +14679 12264 +13931 12451 +14893 14843 +12494 11728 +14057 11423 +11996 11699 +15502 12278 +14783 11109 +13303 13296 +14082 10676 +14193 12892 +14831 10590 +13767 10247 +11259 10559 +14679 11982 +15074 11298 +15502 15412 +15919 14771 +14057 11193 +10965 10329 +11292 10257 +13196 11643 +15721 14895 +12094 11618 +10994 10747 +14524 11042 +14100 12264 +14635 13487 +16091 10819 +12992 10423 +14843 14635 +16353 15618 +15096 10185 +15016 13485 +14108 11067 +11146 10257 +14492 13495 +12478 12264 +15794 13873 +15257 10241 +15721 11941 +11481 11267 +13587 12266 +14107 10299 +14057 10157 +13898 13061 +12348 11953 +13715 12294 +12945 12391 +14689 10800 +12892 11292 +14229 12253 +15304 12945 +14696 11066 +14987 12855 +11898 10590 +13898 13204 +13029 11003 +15339 14895 +13158 12206 +13520 12173 +14683 11267 +15167 13898 +13851 10257 +13796 13244 +13970 11555 +12191 10994 +14512 11433 +13541 12108 +14122 13486 +14397 14307 +13198 11259 +13485 13244 +11292 11003 +13232 12244 +14025 12197 +11193 10792 +12278 10559 +15024 12266 +13485 10785 +13341 11267 +14321 11433 +14761 13204 +12264 10529 +13930 13296 +14492 11721 +12184 10170 +15016 14783 +15074 11423 +12324 10423 +16543 16429 +14102 13767 +12250 10257 +11977 11973 +11973 10434 +15070 14843 +14747 12896 +14107 10747 +14908 13232 +14303 11603 +15096 13851 +15070 14730 +15919 13577 +14718 13369 +13851 10397 +12266 12264 +14730 13105 +14307 10849 +15167 10800 +14893 11109 +13495 11042 +14576 10721 +13495 11726 +11697 10540 +11823 11433 +14747 11336 +15016 13871 +14321 14098 +14112 11986 +15554 13894 +15380 11618 +15304 14814 +12478 12250 +15070 10397 +13377 13244 +15861 13873 +14197 13763 +15374 10781 +14869 12953 +14524 11193 +14761 14112 +14635 12892 +13398 11790 +15356 13487 +14493 10551 +14321 12953 +13851 13342 +15304 14524 +13667 12324 +14679 11986 +14307 10785 +16133 13930 +15370 13232 +11433 10408 +13256 12992 +14107 13830 +11844 11555 +12898 12197 +13485 11423 +14122 13341 +12892 11603 +15376 10559 +15862 15798 +14908 13891 +14895 11643 +14122 10683 +14869 11525 +13244 12448 +11537 11433 +13771 10590 +14869 11638 +15167 11728 +13360 11618 +15295 11066 +13195 12544 +13667 11433 +13871 12339 +13198 11721 +14747 11042 +15709 13873 +14570 10615 +14761 11042 +14730 11375 +15074 10155 +13303 11726 +12494 12197 +14696 12278 +14107 12892 +16091 15043 +14842 12206 +14905 10590 +13933 11267 +13377 10990 +14689 13487 +14122 11150 +13796 12982 +12250 10154 +14683 12451 +14730 12896 +15016 14747 +13203 11973 +14986 11042 +14321 13541 +14986 13342 +13495 11423 +12917 12544 +14559 11833 +13061 11298 +14761 11298 +15370 14492 +12720 12321 +13204 12266 +12892 11995 +14100 13851 +12441 10397 +12184 11336 +14771 13244 +15153 14397 +12851 11492 +15356 12264 +11898 11423 +15376 12953 +15618 12758 +11823 10792 +15385 12737 +11423 10590 +12339 10561 +12197 10397 +15919 11066 +12992 12598 +13303 13029 +13061 11146 +14869 13495 +16588 12197 +14696 10590 +12889 10721 +10423 10299 +11996 10135 +15385 10551 +12191 10821 +12807 12719 +11433 10590 +14618 11200 +13970 13806 +11637 10466 +14831 10529 +13476 11413 +13303 11995 +14262 13930 +12278 11775 +11267 10171 +10994 10529 +15502 14730 +12175 11619 +15376 12992 +12851 10241 +13198 10469 +14150 13487 +13139 11057 +11511 11336 +14711 11433 +15304 12915 +15167 10361 +16651 12652 +14635 13158 +16091 10778 +12889 12478 +12822 10299 +14893 13871 +12339 11995 +13970 11844 +10926 10170 +14843 13931 +16091 14435 +12892 10994 +14112 12544 +14167 12784 +14307 10529 +14088 12649 +14275 12339 +14635 10994 +16091 11433 +15370 14524 +14321 12884 +13809 12882 +13501 11697 +14908 11921 +13851 11003 +15861 10139 +11292 10781 +13487 10849 +14057 10590 +11813 10304 +14397 13198 +14492 14092 +14730 11267 +14955 12173 +11898 11775 +11066 10965 +15249 14492 +15024 11126 +11481 10994 +12892 12266 +12323 10785 +14783 14512 +15356 11592 +10466 10408 +12807 10405 +12278 10599 +13495 12954 +11042 10466 +14570 11298 +13983 13244 +13930 13256 +14193 13577 +11775 11123 +13891 10721 +11267 10868 +13296 11618 +16091 12945 +14100 11433 +13930 12889 +14730 12951 +12992 11066 +15370 13891 +12055 10994 +11423 10268 +11278 11057 +11259 10171 +11643 11630 +15401 11042 +13303 10136 +13244 10620 +12641 11336 +14307 10792 +13830 11298 +12339 10540 +11618 11259 +14112 10647 +14709 11630 +14679 11140 +14057 11648 +14709 10170 +13184 11540 +14893 12889 +13105 10529 +11563 10423 +15502 11146 +11775 10423 +14683 12478 +14804 10299 +15389 14747 +11992 11337 +14273 11511 +14843 10140 +12451 12266 +16498 10478 +13290 11027 +11995 11123 +14816 12615 +14321 12191 +16353 12197 +12266 10581 +13564 11924 +13704 10917 +12953 10185 +12339 12264 +12266 11423 +13232 10800 +16218 14689 +12769 12087 +12478 12323 +12610 12523 +14013 10551 +13958 10965 +11057 10135 +10754 10053 +14709 10247 +11884 11278 +14057 10821 +14107 11450 +14125 13111 +11336 11053 +13158 11259 +14683 10194 +11844 11643 +15370 14831 +13710 12851 +13770 12853 +15167 14306 +12087 10299 +13502 12953 +16429 15167 +15618 10372 +16091 14006 +14303 10559 +10670 10154 +13667 11267 +12945 10781 +14738 10299 +13851 12339 +12191 11259 +13158 12953 +14485 12268 +15304 15024 +11193 11057 +13198 12889 +12222 10414 +14397 10325 +13829 11123 +14814 12945 +15579 13873 +11292 10849 +12868 12214 +14512 13295 +14559 10783 +12390 11193 +13851 10868 +14082 12265 +10990 10158 +15049 14102 +12954 10140 +15016 11697 +12191 11267 +13196 10313 +10581 10158 +13105 13061 +14397 11996 +14679 14570 +13871 11973 +15554 11227 +14761 13256 +12264 10581 +14125 13767 +14492 10785 +15096 10540 +13061 10198 +13487 10590 +12892 12012 +11003 10620 +11555 10299 +14570 11433 +12574 10171 +15323 10208 +12348 10980 +13487 11193 +13934 13863 +10170 10006 +15982 14893 +12197 11123 +13931 13303 +14842 11563 +15304 10994 +13930 10529 +14761 10423 +13830 11278 +14718 10299 +14307 11292 +10397 10279 +13655 10800 +15855 10613 +14635 11721 +13342 10423 +12720 10299 +14761 13931 +13342 13076 +14098 12264 +11109 10140 +14747 11292 +11764 10800 +14893 11638 +13871 10732 +14576 13296 +15862 12855 +15376 14570 +14683 12206 +12889 10713 +14306 10154 +10396 10247 +13931 12339 +15016 14771 +10721 10559 +14730 12223 +11433 11042 +13495 10397 +12339 12228 +14893 13296 +14685 14635 +14771 14457 +12953 10990 +12992 12266 +14908 13851 +14869 11278 +13198 10466 +15708 11646 +12441 11423 +13931 11618 +14831 12278 +14814 10781 +11423 11259 +14771 11618 +12815 12253 +15709 12704 +14270 12815 +12511 10590 +11122 10558 +15304 10683 +13851 12992 +10304 10299 +14747 14197 +14492 12892 +12953 11193 +11492 11227 +12889 12391 +13795 12264 +14908 13871 +12982 12402 +14307 11996 +14831 14057 +12448 11433 +15167 13507 +15376 10599 +12902 11283 +15249 14761 +13296 11423 +13367 12339 +10821 10540 +13204 12884 +13303 10792 +15049 10551 +12992 10693 +13520 12174 +13055 11646 +11057 10980 +11292 10821 +11865 11563 +14679 13936 +15502 11973 +14831 10849 +11259 10279 +14259 14082 +14905 10561 +12217 10693 +14492 11111 +14122 13891 +15041 10559 +14771 14262 +13930 13297 +14107 10135 +14275 10647 +14027 13290 +10551 10050 +14524 12264 +11618 10135 +13230 10208 +15304 10800 +13899 13196 +13894 11952 +12720 12294 +12945 10599 +14908 10397 +14576 10216 +14986 11433 +14842 11996 +14570 11193 +12155 10819 +11563 11233 +15370 13851 +12339 12323 +15096 10423 +13367 11003 +12892 10599 +13871 13232 +14679 14307 +11259 10713 +14457 10590 +14485 10299 +14468 10245 +14869 14113 +14831 11433 +15249 12339 +16091 12264 +14771 11259 +11003 10590 +13256 13061 +11267 11259 +14057 13964 +11331 11042 +15124 11844 +12155 10868 +12222 11618 +15427 12222 +10926 10299 +11630 11411 +12016 10299 +14275 11292 +12478 12441 +15708 12652 +14570 12892 +12745 11399 +14683 10299 +14986 12945 +14730 10599 +15793 15741 +15376 11292 +10599 10590 +12544 10693 +11996 11259 +14492 11764 +15887 12708 +12339 11146 +12992 12278 +13931 11697 +13076 11193 +12878 10821 +14321 10589 +14685 13204 +11259 11193 +14869 11298 +12264 11721 +12831 11227 +14783 12278 +11953 11267 +14492 10721 +13871 11725 +13296 11267 +14100 12173 +14730 10792 +12191 10397 +13930 11274 +11982 11140 +13200 12899 +14942 14088 +14869 10792 +14520 11203 +12191 11042 +13290 12896 +14477 13055 +14718 12807 +10599 10466 +12889 11775 +14570 13830 +14685 10208 +14122 13230 +11980 11921 +14683 12278 +13198 11726 +12191 11540 +14960 11278 +12323 10821 +14588 11193 +10693 10397 +13486 10397 +15323 14027 +13931 10185 +14893 10466 +14397 10397 +14831 14307 +12953 12339 +14570 10713 +13303 11721 +14747 10257 +14730 12544 +11540 10821 +14574 11764 +13367 11433 +13495 12280 +14307 13851 +12266 10980 +13667 11697 +12807 10304 +13851 12441 +14648 11493 +15731 11630 +14761 13303 +13303 11203 +11953 11066 +14747 10559 +14730 14685 +14683 14057 +15096 14025 +11241 10304 +15472 14856 +11445 10170 +13342 13198 +12992 11481 +12844 12268 +14524 14027 +14869 10559 +12878 12544 +12278 11973 +14397 10599 +12108 10613 +14107 10615 +12719 10551 +13682 11193 +16429 14307 +13942 10299 +10434 10216 +12899 11292 +12094 10397 +12132 11450 +11259 10781 +14689 10630 +13806 11630 +13158 11278 +14679 13502 +12953 12222 +12915 10397 +12708 10405 +11559 10299 +14576 10397 +12889 11980 +11643 11280 +13029 12953 +15304 14843 +13495 10279 +15721 12807 +12478 11042 +14082 13198 +14747 13204 +14100 11267 +14747 11637 +14783 10643 +15624 13931 +15607 10397 +15016 14122 +15478 11630 +11259 11111 +10785 10408 +14679 10693 +10721 10599 +14275 10874 +14683 14679 +11193 10135 +12945 11433 +15855 11764 +13342 11298 +11961 11728 +11630 11227 +15070 14321 +14761 11612 +11423 11042 +11259 10821 +13891 13232 +13244 12391 +14683 10185 +14783 12266 +14492 10693 +13851 13232 +14307 12191 +12195 10304 +13507 12478 +16091 11146 +13487 10397 +15370 14683 +13290 12339 +13303 10647 +14107 11775 +12945 10800 +14635 11292 +13873 10754 +14082 10397 +15554 13369 +14234 10304 +13809 12992 +13244 10140 +13127 10713 +15167 14711 +12709 10304 +13495 10299 +13487 10739 +14745 11879 +12896 10397 +14683 13277 +15167 13884 +14057 13024 +14574 11146 +14570 10666 +14492 11641 +11986 11278 +15412 15356 +12704 11845 +13873 12844 +15856 12652 +10272 10140 +15016 13198 +15624 13795 +14027 10158 +14574 10980 +12851 11227 +15163 14730 +14730 14574 +14122 13851 +13296 11540 +15016 11057 +14908 10599 +14730 11618 +16091 11540 +13505 12197 +11292 10221 +15478 10416 +13970 10225 +14880 13196 +13061 12889 +13342 13290 +13930 10683 +15295 11618 +14908 14893 +12841 10917 +11042 10693 +13487 11123 +13871 13487 +14307 13198 +15376 11721 +12266 12190 +14960 10821 +11298 10140 +13341 11027 +13930 13459 +13788 13244 +13296 10397 +12003 11563 +14831 12892 +14107 12391 +13891 11481 +13983 10819 +13244 10732 +13871 11953 +14574 12223 +14893 12888 +14696 10540 +13303 10731 +14492 12278 +10994 10257 +12855 12853 +11996 10990 +11042 10158 +15741 12773 +15934 13467 +11728 10154 +14831 12451 +14574 13230 +13487 12892 +13158 11540 +13032 12339 +11274 10590 +12323 10257 +14122 12544 +11003 10466 +11292 10136 +14730 10559 +14492 12917 +12884 12217 +15370 14986 +11041 10800 +14761 10627 +13204 10529 +11833 10247 +15016 11977 +13244 13204 +11659 11540 +15502 14112 +14783 12217 +13898 11650 +15016 13348 +12945 10994 +10817 10136 +11259 10849 +13158 10397 +14893 14679 +14131 13255 +12892 11540 +14122 10721 +14492 13485 +15376 13198 +14100 13232 +15323 12544 +14831 12280 +11057 10781 +13541 12391 +12173 10693 +12266 11193 +13936 12892 +14869 14633 +11630 10304 +13204 11109 +13487 12889 +13851 11049 +13341 13232 +14679 11481 +14783 12892 +13434 12719 +11337 11278 +13487 10647 +12455 10693 +12892 11433 +10980 10158 +15401 14814 +11267 10279 +11049 10693 +15249 14574 +11775 11423 +13485 13398 +14831 14107 +13290 11193 +11982 11298 +13303 11697 +14831 13232 +13987 10721 +12992 10821 +14843 11066 +10792 10185 +14893 12391 +11778 10397 +13061 12955 +13232 12217 +10917 10170 +13487 11278 +14107 11986 +16665 10423 +14771 10620 +15023 14679 +14321 11292 +13076 10397 +14783 11057 +12441 11066 +16728 10990 +14107 10257 +14986 11259 +14908 13230 +13290 10529 +14307 10599 +13931 12889 +16133 10685 +13232 12007 +11003 10800 +14027 12945 +12264 10868 +11697 11267 +14683 14635 +11986 11977 +14771 13303 +14893 10821 +14122 11996 +14027 12266 +13230 12266 +13290 10155 +11823 11415 +12992 11823 +14730 13290 +14307 11540 +14307 13891 +14122 12339 +14996 13931 +14747 14570 +14805 13873 +14679 13158 +14570 12758 +15293 10299 +11996 10994 +16682 12197 +14736 10800 +14679 12266 +14474 12615 +14942 11392 +13796 11057 +12853 11492 +11637 10397 +12855 12807 +10397 10135 +14100 10185 +13377 13127 +14856 13873 +10721 10558 +11986 10721 +15304 13230 +10990 10581 +14307 11267 +14761 14082 +12478 10185 +14046 11336 +12266 10713 +15618 13495 +13061 10868 +13984 12197 +15096 11618 +14831 11977 +15628 10589 +12982 12892 +13487 13486 +14262 11298 +15043 13061 +14570 12191 +15447 10800 +12635 10245 +14683 12889 +15041 13796 +14100 12266 +11884 11193 +14130 13894 +16091 10821 +13873 12822 +14869 13127 +14321 13230 +15016 13487 +16091 14397 +16101 10590 +14122 10693 +11140 10140 +15304 10647 +13342 11540 +13577 11150 +11278 10721 +14307 12889 +13851 11140 +10299 10245 +12769 11550 +13543 10466 +15016 12953 +14683 13204 +12451 12323 +10874 10140 +15919 15370 +12889 12544 +14685 12951 +11775 11298 +11884 11066 +12339 11274 +14256 12819 +12478 10599 +11298 10408 +11697 11140 +11445 10245 +13244 11122 +15304 14307 +14711 10821 +13061 12266 +12339 11066 +15245 10299 +15842 10135 +14112 13958 +14524 13796 +11563 11540 +13768 12807 +10800 10194 +13232 12197 +13495 12266 +13487 11298 +12441 11109 +13930 12173 +14893 10800 +13894 13579 +16218 13061 +14492 13851 +15304 12278 +11630 10039 +13061 10185 +14831 12982 +14635 14057 +13682 11267 +11996 11995 +13303 10268 +15380 12478 +12951 11298 +12853 12708 +14524 14107 +13303 11067 +13296 10172 +15380 11278 +15356 13029 +11298 11049 +15624 13303 +14831 13204 +12339 10599 +14683 13930 +12899 11563 +14027 13495 +14730 13198 +10676 10185 +14831 13061 +10397 10171 +13232 11376 +11618 11027 +11049 10868 +14683 12173 +11980 10821 +12265 10800 +14919 10245 +15798 12779 +14635 11986 +15754 12252 +12451 12197 +11996 10821 +12391 10819 +16729 12197 +11986 10693 +14492 11996 +13434 12195 +14100 12391 +14112 14082 +14543 11292 +14524 10466 +14869 13796 +11996 11252 +13520 13109 +14107 13931 +13930 10434 +10754 10139 +15304 12889 +13487 11563 +10466 10185 +15016 11905 +13487 13342 +13381 11630 +12889 12448 +14570 13198 +13891 11292 +14252 10590 +14698 14689 +16091 15295 +16428 14081 +11995 11721 +13930 12412 +13244 12339 +15709 11845 +14685 13871 +13851 13198 +13772 10299 +15861 15785 +14783 14112 +15618 14869 +13061 10155 +11977 11337 +14842 10728 +13032 12264 +14993 13087 +11721 10693 +15249 14843 +13851 12892 +11433 10713 +12197 11267 +11711 10140 +10414 10154 +13244 10800 +13871 12896 +14524 11337 +12598 11086 +14683 13296 +15167 13851 +10980 10135 +12191 10819 +15412 11697 +13360 11986 +13158 11973 +15628 14100 +13873 12807 +13076 12339 +14492 14122 +13830 10800 +12397 10577 +11376 10747 +15447 10965 +13485 10994 +13731 12250 +14112 12348 +14100 11697 +11697 11057 +12951 12149 +11630 10225 +14908 11292 +14771 12915 +11618 10185 +13894 12708 +16339 11844 +15412 15167 +13495 13121 +14307 13931 +11823 10599 +14747 10558 +13871 11721 +13061 10140 +10693 10135 +14576 11986 +12197 10792 +12348 12222 +14120 12185 +10821 10158 +15374 13105 +15249 13577 +14107 10713 +11481 10279 +12197 11193 +12615 10299 +14027 12889 +15785 12844 +12982 12478 +14252 11637 +14683 12953 +14908 10257 +13931 13246 +11921 10397 +14747 12217 +15024 11618 +14122 11884 +13891 13871 +11555 11550 +14679 11638 +12173 11433 +13487 11898 +13087 12892 +11953 10693 +11775 10397 +15412 11433 +15016 10529 +15624 12266 +12266 12012 +14492 12323 +13232 11292 +13244 11823 +11495 10693 +11618 11267 +15138 15016 +15370 11298 +13947 13244 +12391 10158 +13256 13198 +14492 11953 +15862 11227 +14487 11563 +13873 10304 +14771 11278 +14259 12953 +11298 10529 +13930 11066 +14771 10821 +15856 14477 +14794 12892 +12953 10140 +11298 11111 +14683 10423 +14050 10781 +13930 12478 +12266 10257 +13487 12953 +15304 12917 +14685 13303 +11233 10620 +13342 11259 +11986 11973 +14493 10299 +13770 12831 +12320 10581 +11057 10599 +14711 11721 +15706 10559 +15356 14082 +15304 11986 +14635 10158 +14487 14057 +12889 11697 +14635 10599 +16091 11066 +11721 10721 +13198 11977 +14122 13296 +11278 10713 +15882 10154 +12264 10431 +14193 11298 +16091 13898 +15016 14397 +13863 12721 +15167 11587 +13204 11057 +15124 14559 +14771 11057 +13290 11298 +12339 11624 +12831 12709 +14112 11193 +11995 10874 +10927 10785 +11278 11003 +14893 14321 +13495 12206 +14539 10721 +12478 10559 +13244 11066 +15016 14683 +12953 11267 +14685 10469 +10423 10194 +13277 11057 +15016 14100 +14683 11150 +13303 11057 +13541 10535 +10874 10693 +12953 11481 +13230 10158 +11555 10416 +13619 10529 +13342 12888 +14745 10620 +10933 10158 +15304 14112 +12191 11618 +10747 10423 +12719 10996 +14869 10721 +11555 10241 +14492 13891 +14081 10511 +14120 10409 +13303 10732 +13781 12932 +12953 11982 +13198 10562 +13277 13072 +12266 12191 +14679 10590 +14635 14193 +13461 10819 +13891 12478 +15618 11146 +14534 11292 +14730 13303 +12953 12264 +12635 10243 +14871 11198 +12197 10431 +11086 10559 +15601 14283 +14761 12119 +15016 14057 +14574 11823 +13244 12992 +16133 10268 +15412 11789 +15422 13772 +14718 14234 +13851 11726 +13377 13303 +14843 10540 +14259 12197 +13487 12156 +12899 11775 +12339 12266 +11869 11695 +13796 13295 +15934 15406 +15245 11845 +14711 13230 +15741 12983 +15581 12621 +14100 13139 +14512 10713 +13715 12321 +13830 12174 +12266 10372 +11833 11007 +14492 12390 +11637 10155 +15785 10754 +15016 12264 +14843 13796 +15304 10620 +12264 11921 +14553 13667 +14893 12278 +15250 15063 +15478 12087 +15370 11140 +12899 11663 +16091 13881 +14262 13487 +13933 10540 +13487 10529 +14112 11537 +14576 14107 +14524 10990 +13830 10299 +14718 11492 +14843 11618 +11697 11278 +14570 10620 +15412 14107 +13342 11995 +14100 12951 +12197 10647 +15919 12953 +15016 10849 +13891 13495 +14814 12951 +16091 12339 +14492 14307 +15016 10185 +13930 11982 +14761 11193 +14028 12523 +13204 11624 +12451 10800 +14683 11433 +14321 11057 +13127 10466 +14122 11042 +15785 10139 +14685 11973 +15887 13770 +11111 11027 +13061 12954 +15887 15282 +13061 10747 +14057 12173 +13487 11109 +11267 10693 +14288 10800 +14512 13930 +11789 11726 +13931 11996 +10990 10529 +13342 12266 +14771 10732 +15045 14747 +15304 11697 +13303 10299 +14275 13061 +13061 10397 +13871 11638 +15096 10397 +11823 10721 +13198 10590 +11278 11027 +14747 12819 +12992 11697 +13244 11140 +11109 10466 +12197 10434 +14730 10140 +14783 13930 +12264 11140 +14193 10693 +14057 11618 +13244 12917 +12264 11027 +11973 11823 +14122 14027 +15376 11540 +11618 11603 +14004 10994 +16696 14709 +12896 11298 +15862 12853 +13290 10466 +13398 11193 +15096 12478 +12191 10599 +14747 13230 +11067 11003 +15579 12184 +13931 11433 +14761 11996 +10666 10590 +14125 13970 +14696 11995 +15096 11764 +15016 14307 +12953 10155 +16218 14107 +13204 12451 +15376 12478 +12917 12892 +14100 10721 +15016 11066 +10994 10599 +14057 11198 +13296 12391 +12896 11775 +15070 13204 +14109 13241 +15167 12574 +10559 10529 +14679 12965 +15167 11975 +11433 10434 +14122 12915 +14893 13796 +15376 15016 +11057 10590 +11603 10990 +15045 13587 +12478 11292 +13796 12892 +13891 10140 +13796 11638 +13487 11027 +12478 11503 +14831 12206 +13891 13796 +15570 14197 +13422 11996 +12889 11376 +12007 11834 +11986 11042 +13061 11430 +14709 10299 +13244 10198 +14683 13158 +12758 12174 +11697 11481 +15024 13487 +12206 11540 +13487 10693 +15016 12954 +14307 11823 +14842 10423 +14524 10185 +11764 10654 +13931 12945 +14633 13342 +14869 11109 +14574 10819 +13970 11550 +14783 12992 +12222 11899 +13830 11292 +10800 10140 +13501 11624 +14107 12917 +13987 12397 +14730 11481 +12171 11997 +10792 10590 +16091 11697 +13541 12250 +14831 13487 +12264 10994 +11292 11109 +11697 11109 +14761 10158 +14831 10868 +14524 12266 +14321 14027 +14683 11603 +13871 12892 +14696 13244 +12721 10245 +12953 12945 +13244 10423 +15295 13577 +14814 12278 +12889 11122 +15376 14747 +14524 14100 +15412 13061 +13930 13344 +14761 12945 +12878 11292 +13667 11193 +11423 10599 +14122 11953 +11555 10551 +15618 11637 +11697 10529 +11986 10257 +13898 13464 +16091 12266 +14321 12323 +13290 10423 +13256 10747 +15282 14718 +13461 11259 +15709 11941 +11986 10994 +14100 10800 +14730 13342 +14576 13931 +14771 11140 +10785 10257 +14193 12191 +14635 12992 +14843 10599 +13232 11456 +13796 10529 +13487 12323 +15167 12892 +14321 12197 +14524 11986 +13931 11298 +14893 11898 +13244 11973 +14107 13930 +14122 13487 +15249 11066 +15991 14747 +14831 14050 +14107 13851 +13461 10400 +15167 11675 +14492 12889 +15721 14856 +10721 10299 +14027 13891 +10868 10397 +13781 10198 +14986 14100 +13307 10397 +11259 10792 +12892 10874 +14893 14831 +12951 10713 +15245 12822 +14262 12953 +14853 13983 +15554 12831 +11995 11641 +13244 12451 +16668 14709 +14262 13540 +13931 11066 +11066 10158 +15370 12896 +14635 10194 +11481 11292 +12544 11066 +13541 12478 +14965 14905 +12478 10994 +16091 11086 +13487 10713 +15991 12523 +13198 11193 +15074 13495 +11977 11298 +15295 13463 +11388 10299 +12709 10299 +13873 10170 +13344 10590 +16133 13244 +13204 11697 +14485 11411 +14635 14576 +12591 10299 +12944 11728 +13577 13487 +14905 10994 +10693 10540 +13851 11973 +14711 10792 +13796 12206 +10423 10185 +15554 10551 +12878 10529 +11995 10257 +14718 11550 +13770 11630 +10693 10685 +15282 10551 +15016 12323 +13891 10617 +13541 13398 +13198 10821 +12945 10279 +14307 13930 +12889 11193 +14730 14683 +11267 10781 +13296 11641 +11995 10559 +15096 14027 +11995 10135 +15412 12278 +13277 11603 +15167 11123 +13851 12217 +13198 10599 +15153 12264 +14965 13891 +15304 11721 +14259 13487 +14635 14100 +12294 12184 +11067 10821 +15374 10216 +14125 14102 +13767 11555 +11834 10171 +11630 10245 +10713 10559 +13930 10599 +14107 10194 +13296 10434 +13829 11823 +11433 10581 +14698 13891 +16091 12278 +13244 11726 +14559 12235 +15016 10874 +14771 11123 +12266 10792 +12889 11986 +13303 12951 +15096 11042 +11975 10154 +14683 12264 +14193 13158 +12266 10620 +14112 11995 +11630 11007 +13295 10713 +15167 10372 +13767 10299 +13151 13061 +15861 10754 +14711 12884 +13930 11067 +13931 11278 +16390 13467 +15323 15295 +15919 11823 +12173 11884 +13367 10397 +14570 13476 +13397 10299 +13434 12087 +15570 12187 +14576 13204 +12916 11764 +14771 13851 +14683 12211 +13198 11884 +13369 11643 +12621 11007 +13505 12222 +14986 11996 +12954 10194 +15376 10136 +12339 11996 +11834 10868 +10423 10257 +11298 11140 +11540 10279 +14683 13105 +15041 12892 +14683 10693 +12264 11973 +14711 11641 +13930 11775 +15096 12264 +12638 10245 +14683 13230 +14986 13930 +12719 11550 +14689 11603 +14747 14252 +13931 10423 +14711 10990 +14122 13184 +10821 10466 +13930 11921 +11563 11109 +14570 14122 +14869 10397 +13809 11540 +14524 12917 +11603 10466 +12889 11003 +15008 11775 +14492 11066 +15411 12266 +15842 12324 +11315 10627 +11778 10599 +12854 10324 +12576 10747 +15096 10849 +15010 11721 +14512 12324 +14635 11042 +13495 12951 +14107 12211 +13851 12391 +13198 10785 +13256 12264 +11884 11563 +15502 13230 +15304 11259 +14747 11977 +12807 12087 +13487 11057 +13796 10140 +14679 14512 +14307 12323 +14635 14307 +15847 10540 +11492 10551 +14109 11298 +13461 13061 +14307 13232 +16479 12222 +12889 10423 +15570 11193 +14869 13076 +14553 12478 +15570 13433 +14627 12653 +13871 13342 +13931 13461 +14004 13949 +12831 10299 +14474 11630 +13894 12184 +16091 12197 +15016 11725 +14524 10599 +14908 12889 +12339 10590 +14082 13230 +11563 10408 +14588 13303 +10874 10821 +11833 10938 +15096 12451 +11259 11057 +10599 10562 +14100 14082 +15070 11278 +14275 11066 +14831 11921 +13487 12878 +14635 12915 +11540 11057 +14856 14805 +14679 10397 +11986 10747 +15282 11492 +14314 10713 +15167 14996 +13487 12758 +11555 10170 +12641 12638 +15273 12884 +13947 10581 +14397 13577 +13873 12704 +15096 13296 +12264 11764 +14100 10685 +13342 11292 +14843 14122 +13486 11648 +14576 13487 +14685 11278 +11433 10469 +15861 12268 +11298 11003 +11433 10158 +15096 13303 +13796 11603 +14730 13930 +11399 10011 +11612 11433 +15731 11214 +12953 12896 +14492 13487 +14730 10990 +13873 11643 +14908 13830 +15721 14234 +14321 10821 +12855 10405 +14747 14107 +14107 10279 +13871 12889 +13863 12743 +15412 14524 +11996 10721 +11433 11278 +14268 10299 +15085 11550 +13398 13121 +12896 10140 +15881 13196 +14307 12339 +13198 12892 +11977 11618 +14908 10140 +12889 10918 +15295 13487 +14869 13871 +12324 11193 +13891 13076 +14057 10559 +13303 11111 +14730 11298 +14696 12451 +14880 10304 +16133 13061 +14761 11732 +14122 13930 +14704 12264 +15370 10713 +14730 12884 +12217 11996 +14100 11481 +14570 11057 +14635 11423 +14131 11057 +11433 11337 +15167 11066 +14761 11986 +12171 10299 +13303 10298 +13487 11630 +11433 10135 +14683 14524 +12891 11298 +14831 11057 +12892 12402 +12173 11278 +13930 10540 +14843 13296 +14683 14321 +15624 13277 +11267 11123 +14869 10561 +14783 10397 +11867 11292 +13230 12264 +12866 12721 +12953 10423 +14107 10208 +15304 14679 +14869 14457 +14771 11066 +13029 12878 +16742 13461 +12511 11298 +14252 12892 +14794 11292 +15085 10551 +10713 10257 +15249 13461 +13127 10792 +14747 10194 +11563 10185 +13204 10721 +14843 13930 +12841 12663 +14843 12278 +14696 11996 +13344 11433 +13076 11057 +14771 10874 +13256 12889 +14696 10423 +13487 13211 +13930 11123 +13507 11618 +14122 12917 +14802 14761 +14816 12868 +15374 12451 +12264 11728 +15919 11278 +13244 12197 +13891 11298 +14487 10800 +12819 12253 +12748 12294 +11603 10155 +13061 11540 +11721 10590 +11027 10821 +12758 11292 +13830 12758 +14987 10996 +12917 12339 +14576 10994 +11111 10185 +14100 10423 +13898 12478 +15862 12831 +11042 10994 +12641 10170 +12184 10299 +13158 11433 +15370 11193 +15096 12889 +10299 10247 +13232 10267 +15167 14648 +14689 10140 +16091 11109 +10775 10299 +11833 11463 +11540 11086 +16091 11067 +11996 10693 +14100 11961 +12478 11982 +10257 10154 +12278 10257 +13434 11555 +15454 15016 +14512 13198 +12953 11337 +14275 12206 +11823 10171 +12892 12094 +10800 10397 +12737 12709 +12184 11555 +14761 10980 +13731 10589 +15249 11953 +14730 11433 +13894 11336 +15030 10154 +15502 12266 +14100 13667 +12892 12441 +15502 12390 +11540 10185 +14843 12478 +14747 10693 +11721 10821 +13485 10559 +11697 10158 +12951 12339 +12523 11997 +14633 13930 +13232 11540 +12953 10466 +13232 12339 +12214 11630 +14588 12889 +15249 10409 +11298 10397 +13198 10666 +15919 11042 +12264 11233 +13418 13232 +14709 10775 +14709 11555 +16498 12391 +13109 13034 +11695 10800 +13579 12851 +14574 14524 +12945 12264 +12264 11423 +15376 10713 +14570 12878 +14802 11027 +11775 10713 +12323 11697 +15862 12851 +12953 10590 +12266 10299 +13061 10838 +11392 10245 +12769 10304 +14718 13894 +15370 13244 +14738 12321 +10778 10747 +14696 11042 +12807 11227 +11618 10581 +13244 11337 +15842 13930 +15020 12197 +15282 12831 +13184 10158 +12448 12266 +12889 11298 +12339 10135 +14843 13891 +10599 10146 +15887 12855 +15016 12889 +11630 11036 +13277 10599 +15295 10216 +14816 13434 +10821 10731 +14648 10257 +14321 10800 +13546 11884 +12954 11049 +11618 10423 +14893 14057 +15096 12917 +11555 11511 +15249 14730 +14802 11899 +14574 12953 +13851 11027 +13198 11540 +14004 12892 +15249 13303 +12954 11495 +12451 10874 +14744 14314 +14877 14736 +14057 12954 +12217 10397 +15356 11697 +15304 10466 +15153 13244 +14877 11433 +14524 11433 +13577 10135 +15356 10397 +14013 10754 +14679 11233 +13796 12094 +15624 12889 +12197 10821 +14814 13198 +14100 11298 +15167 12889 +15085 13434 +15618 14081 +14057 10257 +14843 11042 +15412 15016 +15023 10466 +13277 12953 +14130 12853 +11883 10540 +13232 11986 +13244 10469 +14730 14635 +14683 14107 +15096 10599 +14683 11823 +16724 15167 +13303 10466 +12992 11298 +12889 11098 +13796 10423 +11648 10800 +11775 11193 +14307 10800 +14709 10033 +11267 11066 +13791 12917 +12889 12280 +14057 12391 +13931 13232 +14761 12264 +15282 12708 +11823 11337 +14193 13485 +11041 10590 +13198 11433 +13461 12339 +14696 10562 +14711 11003 +12892 10732 +16311 10551 +13290 11067 +11481 10721 +14730 10423 +15249 11259 +14747 11638 +14112 11996 +15376 11057 +14524 10257 +16091 10171 +12321 10551 +13667 13303 +11711 10821 +14635 13244 +13105 10868 +14635 10397 +13341 10721 +11563 10155 +11298 11109 +13485 13076 +12945 10194 +15570 15057 +14730 13796 +14512 10559 +13767 12844 +13931 11259 +14747 12003 +13232 11884 +11336 10372 +13487 13485 +13232 10693 +15304 10562 +12266 11057 +15618 13424 +11066 10397 +12889 12339 +15282 13710 +13884 11764 +12087 10304 +15919 10185 +14512 12953 +14576 14321 +16133 14761 +14013 12807 +14986 13931 +15016 11308 +12235 10184 +15167 14704 +15070 14307 +12954 10590 +14938 11641 +14843 10781 +14877 11292 +14492 11140 +12899 11980 +14122 13796 +11481 10821 +15887 12831 +12884 11433 +12391 11986 +11638 10821 +14761 11775 +11637 11298 +12278 10140 +15304 12217 +15167 13599 +14252 13891 +13851 10781 +13930 13221 +11109 10423 +13930 10372 +14397 10216 +15785 14895 +13796 11986 +11721 10994 +12055 10792 +15091 12782 +13587 10821 +10416 10299 +14027 11540 +13715 12720 +15304 13341 +15427 10670 +12953 10785 +14108 11109 +13871 11067 +11278 11146 +12184 10085 +15024 11298 +14843 13158 +14718 10416 +13871 11603 +15570 10559 +14092 13303 +12339 11973 +14112 13341 +11193 10423 +11764 11066 +13871 10693 +14831 12889 +14627 10304 +15048 10685 +14570 11603 +13303 10615 +14893 14576 +12889 10279 +12278 11283 +11042 10198 +15041 11292 +13873 10551 +16479 13731 +11423 10558 +15295 14869 +14812 11097 +15370 10185 +11996 10194 +13930 10721 +12884 10819 +15153 11111 +11433 10792 +11618 10434 +14908 11721 +15370 11884 +14672 12892 +14747 14512 +15381 11823 +11624 10397 +15447 14530 +13930 10874 +11433 11193 +10713 10140 +15376 14122 +11977 10874 +13495 13367 +14492 13232 +11641 11146 +14635 10693 +11298 10372 +14831 10561 +12884 12278 +14122 10299 +15323 11973 +15295 10581 +14730 13577 +11540 10615 +13204 10540 +15091 10170 +14712 11695 +15624 15412 +13282 12119 +13342 11057 +14893 11986 +15049 11630 +14524 12391 +13930 12323 +14397 10821 +15919 11292 +13303 12478 +14730 13931 +14524 11146 +15016 12266 +11140 10171 +11673 10185 +13232 10721 +12755 12653 +13204 10434 +15074 11726 +14771 14100 +12094 11921 +14633 12892 +11884 10721 +10792 10423 +14880 10996 +14711 11066 +14275 11415 +12206 10194 +14050 14027 +12264 10397 +16741 15323 +14100 12945 +13024 10999 +15070 14027 +12250 10613 +15376 15370 +11921 11298 +15440 15010 +14100 12544 +14057 10558 +15016 10994 +11980 11563 +12264 10683 +14275 13105 +15304 11066 +14570 14524 +14122 13931 +15153 10185 +15971 14893 +15070 11618 +13360 13303 +13936 12028 +15794 10640 +14262 14057 +14474 10299 +13487 11111 +14771 10561 +12478 10299 +11150 10747 +12748 10299 +16091 11637 +12992 11193 +13061 10194 +14551 11630 +15412 13244 +15412 12898 +14804 13970 +15376 11884 +14307 11003 +15070 11259 +13461 11764 +15794 15478 +13127 10666 +14805 10299 +11413 10140 +14696 12896 +12953 10874 +14576 13232 +14122 11995 +15167 13303 +13983 11612 +13029 10185 +13495 12478 +11433 11003 +11921 10140 +13873 11317 +12214 10299 +12264 12197 +13851 10194 +11109 10136 +11027 10693 +13579 10551 +14893 13342 +13495 11259 +15016 10747 +14747 14492 +13796 13341 +12007 10868 +13360 10800 +13577 11278 +13891 11638 +15016 10257 +14893 13487 +11423 10800 +15086 11280 +11053 10245 +14492 13204 +14679 10980 +13930 11233 +12217 10581 +15862 10241 +13076 11278 +11298 11066 +15153 14853 +14679 11973 +10783 10184 +12953 10994 +12769 10299 +12451 10676 +12559 10431 +11433 10423 +12055 10676 +12892 11233 +13158 10140 +13871 12264 +14771 14570 +13029 11042 +15370 14908 +12206 10397 +15618 12363 +11726 10155 +12638 10299 +12003 10466 +14102 10775 +14633 11563 +11292 10397 +14730 10800 +14259 13297 +11618 10529 +14908 14696 +13367 12451 +10874 10257 +14273 14119 +12391 11292 +16133 11415 +14843 11126 +11823 10135 +13795 11617 +11728 10800 +10990 10821 +13303 13244 +14574 11111 +14098 11057 +11884 10693 +13630 12222 +12945 11150 +14570 10590 +10849 10423 +12992 10713 +13487 11719 +14814 10590 +14321 13342 +16723 10299 +14524 13667 +14397 13121 +12278 10466 +11697 11193 +14570 10721 +15579 10754 +14895 11941 +12898 11697 +13629 10299 +13851 12544 +11995 11433 +12264 10647 +11977 10141 +11278 11140 +14027 11042 +11028 10996 +15323 11697 +11042 10423 +12892 12206 +10535 10154 +13851 10693 +13303 11259 +13796 11721 +13204 11884 +14539 12197 +13830 10849 +12264 10933 +15798 12851 +13577 10781 +15412 11292 +14057 11921 +12915 12278 +14107 12191 +13485 10558 +11995 10562 +12721 10299 +11697 10821 +14635 14122 +12265 11193 +13871 11540 +11721 10965 +14576 12451 +15167 12265 +12339 10747 +13871 13244 +12478 11057 +15167 10135 +14570 10792 +14877 11961 +12324 10721 +15167 10815 +11833 10775 +12191 11292 +10299 10170 +15481 11834 +14197 10397 +15919 13930 +14761 13360 +11641 10158 +15427 10535 +15472 11630 +13061 11042 +12523 12171 +15370 12451 +13195 10620 +12954 12191 +14685 11042 +12197 11899 +11637 11292 +12954 12819 +14570 11996 +14952 13487 +10713 10397 +13184 12889 +13795 10868 +14262 12478 +14100 12323 +13296 10713 +15304 12892 +13377 12266 +15376 14908 +14321 10577 +12391 11042 +14635 13931 +14576 11057 +11973 11049 +14730 10821 +12264 11725 +11512 10299 +14869 13303 +14908 14057 +14986 14098 +13806 12268 +12892 10868 +14747 13796 +13796 11540 +12954 11603 +14730 11540 +14574 13244 +15412 14679 +14683 10747 +13577 12898 +14062 11545 +14492 13796 +14524 10785 +14307 12222 +13851 11109 +14679 10713 +12278 10721 +11618 10279 +15370 10397 +14108 10590 +12323 11423 +12214 11643 +11278 10980 +14771 11921 +15472 10754 +14771 14576 +15502 12945 +11823 10397 +13296 11278 +11995 10466 +12982 12266 +12197 11618 +14057 12953 +14771 12094 +14679 11123 +14570 10693 +15167 11278 +14273 10299 +12184 10917 +13495 10590 +13851 10800 +14122 10590 +13433 11637 +13204 11921 +11540 10800 +13461 11481 +13198 11423 +14831 14530 +14492 14027 +13127 11603 +12574 12078 +14683 11697 +13851 10590 +12190 11961 +13619 12884 +13486 11869 +11973 11540 +14831 11259 +11697 10185 +14122 13032 +12197 11174 +12953 12915 +11899 11728 +11844 10551 +15257 11227 +11540 11433 +11643 10783 +13296 12889 +14738 11336 +14627 12195 +13303 12915 +14771 14689 +12441 10257 +14122 12391 +13891 10423 +16218 10397 +13970 10033 +13485 10620 +15370 10194 +14635 12544 +14696 12264 +13087 12889 +11879 10620 +12853 12851 +16428 12745 +10299 10039 +10397 10140 +11140 11049 +13303 12945 +13796 11109 +11540 10792 +14843 12953 +14108 11433 +14814 10397 +13418 12197 +12197 10198 +14683 12266 +14627 13369 +15356 11066 +11624 11057 +13360 12339 +14193 13198 +10925 10221 +13367 11423 +15096 12391 +12451 10431 +15618 12264 +15257 10304 +12892 11066 +11292 10279 +11423 10423 +13303 12324 +13736 13303 +16441 15167 +14397 11292 +14679 11618 +13342 11697 +14489 11563 +13342 11109 +15919 12339 +14627 13434 +14783 12889 +15370 11292 +14524 12339 +12012 11298 +15153 14107 +16091 11150 +13232 10325 +11867 10590 +13796 11423 +15096 12266 +10747 10397 +14814 11259 +14869 11193 +14321 10792 +13204 12953 +15412 14082 +11563 11298 +15919 11721 +15412 12055 +15481 10599 +13485 11057 +13495 13422 +14122 13198 +14321 11193 +10713 10599 +11057 10800 +15861 10247 +11214 10247 +12266 10994 +14691 10559 +13495 12896 +12708 11555 +13127 12892 +12087 11643 +13796 12992 +14730 11423 +11775 10279 +12953 11697 +14730 14570 +14771 12191 +13256 12598 +15624 13244 +15293 13770 +13256 12266 +12819 10926 +14685 14027 +14492 13871 +14730 11630 +14131 11267 +12719 12709 +13871 11066 +11699 10994 +11150 10693 +15167 14081 +13434 10304 +15282 10299 +10950 10272 +11278 11066 +14747 14262 +11298 10136 +14193 13422 +13871 11980 +13873 11941 +12451 11298 +11423 10408 +16498 11618 +11618 11252 +13796 10299 +13342 10731 +14234 11280 +13851 10185 +12264 11066 +12889 10327 +13476 12892 +14092 11995 +14057 11540 +14125 11630 +15027 14843 +12370 10938 +14113 11603 +11618 11298 +11728 10158 +15626 12553 +12889 11869 +14843 10529 +14831 14683 +14679 13244 +14492 10172 +13277 12266 +15709 14805 +14672 10327 +11555 11336 +14711 14574 +11278 10154 +12266 10721 +11563 10713 +13667 11995 +11986 10208 +14908 11423 +13942 11941 +15012 11336 +15016 10821 +14424 13796 +14905 14683 +14908 11278 +13830 12173 +14785 14730 +14730 10781 +11603 11563 +12003 10849 +15016 13495 +15023 14905 +12391 11259 +14100 10397 +14100 13244 +14524 10874 +14570 12954 +13970 10775 +11066 10529 +15245 14805 +15478 11941 +11540 11150 +13303 10819 +16567 11445 +11278 10208 +13244 11003 +10868 10562 +13930 13211 +14869 11086 +14107 12544 +14057 12992 +14771 11977 +14295 13002 +11057 10821 +14802 12197 +12339 11042 +15919 10599 +14275 12264 +13342 12953 +13898 12892 +12953 11292 +11066 10994 +13577 10158 +10781 10397 +11278 10821 +14054 12956 +12191 11278 +13139 11995 +15709 14102 +16091 11719 +14275 11986 +14307 14057 +12003 11292 +13873 13434 +12892 11898 +13230 10185 +15919 10821 +14570 11267 +12191 11423 +13230 10397 +14805 11941 +16133 13577 +11028 10551 +15502 12223 +11540 11267 +11027 10423 +14307 13230 +13851 10423 +15304 11267 +11764 10372 +10800 10559 +10849 10800 +14193 10146 +12992 11278 +10683 10408 +12094 11097 +14262 14122 +14107 10140 +11097 10620 +14831 10257 +13487 12335 +12478 10868 +13931 11267 +15370 13525 +14122 12494 +11146 10868 +14683 12197 +14908 11066 +14082 11003 +13796 13342 +14871 10559 +13244 11986 +12807 11630 +12599 12197 +15167 10569 +14893 13486 +14262 11638 +12889 12217 +14237 14081 +15249 13987 +13894 10551 +15569 12266 +11298 11067 +14234 13369 +14524 14122 +12266 10693 +15016 14893 +14457 11122 +15041 14771 +11995 10208 +11057 10434 +14679 12982 +15374 13204 +11540 10747 +13830 12264 +14576 11697 +15163 12119 +11298 10781 +14122 10558 +14100 12278 +13232 10559 +14321 12917 +12264 11617 +14100 10434 +11618 10558 +14107 10982 +14050 12124 +15048 11057 +14633 14520 +13487 13232 +13770 12709 +15236 11036 +11433 10721 +12758 12173 +13830 13796 +14485 13942 +14869 11481 +15370 12191 +14524 12191 +13367 11995 +13244 10792 +14570 13871 +15124 14474 +11066 10693 +14685 10135 +14893 14100 +12323 11057 +14761 13367 +15153 13061 +11973 10423 +14730 14321 +14234 10551 +15070 13577 +14771 10257 +13487 12945 +15323 11146 +11193 10945 +14107 11042 +11150 10466 +15295 14730 +14771 13891 +14908 10693 +11259 10298 +14618 13198 +14492 14193 +12264 12108 +12621 11630 +13204 10146 +15070 13303 +12915 11995 +15167 10257 +11278 10785 +15370 10747 +14685 11540 +14698 10423 +15502 12264 +14814 11995 +13461 12889 +12615 11630 +14057 10299 +14107 13204 +15570 10466 +14696 11109 +13487 11423 +12390 12323 +13541 11961 +13296 11259 +11503 10397 +14679 10994 +11298 10792 +14646 10849 +14130 13770 +13796 10397 +14893 11298 +11995 10994 +12892 10620 +15412 13204 +13244 10529 +11292 11267 +11764 11123 +14685 12915 +14576 12339 +11413 10599 +14057 14054 +11298 10821 +13771 10800 +10800 10561 +12441 11921 +14828 14747 +14275 10431 +11456 11193 +12953 12197 +13987 10154 +13871 10713 +13487 10792 +14321 14100 +15376 14524 +13415 13381 +11697 10423 +15427 12197 +12055 10372 +13894 12851 +13158 10781 +16091 13464 +14679 13303 +14570 12889 +12932 11728 +14057 10930 +12758 12402 +15570 11292 +15458 11522 +11140 10800 +15618 13540 +12917 12217 +14057 11278 +13942 11643 +11057 10397 +12523 10204 +15096 10158 +11267 10194 +13599 12397 +10208 10158 +13851 11433 +14627 13770 +15502 14108 +15344 13891 +14321 10529 +11298 10785 +15798 10299 +15096 12953 +11292 10466 +15356 12878 +15016 12191 +14107 10559 +13487 10372 +13244 12478 +14635 13342 +15045 12134 +11986 11013 +14955 14582 +13244 11433 +14574 12264 +13871 10620 +14683 13127 +16091 14730 +13461 13377 +15376 12889 +14474 11643 +13198 11638 +11066 10713 +11049 10599 +14856 11555 +11947 10980 +14588 14107 +11921 11563 +15618 13898 +12676 10551 +14467 11603 +11997 11619 +13715 10245 +14761 12917 +14107 11977 +14685 10397 +11986 10158 +13871 11203 +14744 14107 +14576 12264 +11996 11977 +14633 13244 +13303 11049 +13230 10747 +13232 12278 +15304 11123 +15249 13795 +12222 11764 +11721 11013 +13947 10946 +14893 14027 +15919 13232 +14814 11433 +15579 15478 +16643 12197 +11259 10423 +14275 12953 +13342 12896 +12339 11775 +14197 11298 +15356 14492 +13198 12207 +13277 12951 +14130 12851 +14306 10721 +11292 11259 +13541 10721 +14182 12197 +13485 10529 +12721 10278 +12264 10785 +11986 10466 +12902 10590 +13303 12953 +11563 10849 +12831 10304 +13244 10693 +12451 10146 +14685 10994 +15887 10551 +12391 10540 +16588 12108 +13232 10155 +11695 10849 +13061 11252 +14730 13230 +14635 11540 +13418 11456 +14576 13230 +14869 12173 +14908 11123 +14457 13930 +11641 10397 +13230 11921 +12294 11336 +12951 11921 +12278 11259 +11433 10819 +12339 10434 +11423 10874 +13795 13397 +14679 12206 +12807 12709 +15502 13871 +14492 13230 +16091 10693 +14689 10559 +14747 10140 +12278 11618 +12892 10372 +15027 14524 +12992 12889 +15249 13931 +12007 10599 +12945 12884 +15842 14122 +13851 13296 +12451 11986 +15016 10744 +15016 11986 +11292 10272 +11695 10661 +10792 10747 +13830 12402 +14057 13487 +14122 10599 +13360 12451 +14553 11193 +11697 11146 +11298 10279 +14986 11995 +15167 14182 +16720 11630 +13851 11298 +12945 11726 +11233 10721 +14122 11140 +15249 10821 +14771 14674 +13485 11278 +14635 10146 +14524 12451 +13200 11292 +14081 12197 +14843 11057 +11618 10329 +12451 11066 +11267 10257 +13204 11086 +12195 10405 +14107 13495 +12953 11493 +14648 13541 +11884 10397 +10693 10620 +15016 14512 +15376 12007 +15374 11973 +12391 11697 +13930 11823 +14307 11481 +15502 14574 +11259 10466 +15374 13303 +12992 11292 +13931 10599 +13796 11996 +15085 14627 +14831 11540 +14771 10599 +14430 10216 +11603 10693 +13342 12892 +13342 10431 +14259 12222 +14100 12339 +14761 11423 +14771 12992 +13461 12945 +13891 13851 +14108 12339 +11555 10245 +14320 10693 +14730 12945 +14046 12748 +12953 11986 +11298 10721 +14869 10590 +12915 11977 +12264 10781 +14098 11996 +14747 12264 +13342 10329 +13485 12266 +13851 13795 +13587 12478 +13667 11109 +14718 10241 +15045 14533 +10434 10185 +12953 11725 +10529 10171 +14905 12889 +12441 10732 +11481 10529 +14908 10666 +13232 11996 +10926 10245 +10792 10140 +10590 10423 +12478 10792 +11986 10599 +10994 10397 +12397 10792 +14119 11336 +14576 13198 +16091 10529 +15862 10299 +14539 10540 +13495 10423 +14869 14489 +15582 11292 +11630 10170 +16133 11066 +12217 11973 +16311 10299 +11823 10819 +13369 12769 +13931 13360 +13422 12266 +14709 10241 +14869 14027 +14683 11308 +15096 12892 +12892 11618 +12323 11433 +14730 10778 +14512 12889 +15412 11057 +15601 13796 +15051 10140 +14771 14057 +15478 12184 +13851 11278 +14716 10466 +15167 12484 +14814 11982 +12266 11027 +11986 11066 +14492 10581 +12206 11996 +14574 12917 +12892 11648 +12965 11638 +14685 14683 +14696 10778 +14553 10423 +13891 11986 +14113 12280 +10551 10416 +11066 11057 +13891 12278 +13461 12124 +14908 11996 +11921 11618 +11193 11067 +14709 11845 +15323 15167 +13830 12954 +12945 11057 +11057 10994 +14474 13768 +13930 13029 +14679 13930 +12889 10676 +15656 15167 +15478 11844 +11259 10257 +14895 12807 +14679 11066 +15554 13434 +13296 10994 +13204 11995 +11540 10874 +13851 10747 +14275 12992 +12889 10821 +13246 11479 +12544 10194 +12844 11411 +14683 14193 +13830 13347 +14570 13303 +14122 11540 +16588 11728 +10643 10423 +15153 10693 +12451 11697 +14696 13303 +14831 12953 +13795 11973 +13485 12932 +11086 10194 +13931 12892 +11445 10237 +12889 11111 +11884 10821 +14100 13930 +12954 10693 +10529 10397 +15376 14771 +12339 10721 +14100 11066 +13930 11503 +16527 13303 +13871 12003 +14524 14307 +13667 12917 +13851 10279 +15389 14679 +15376 14679 +14113 11292 +13577 11973 +12339 10140 +14908 12264 +14122 12348 +14816 10551 +11109 11086 +14050 10397 +10397 10194 +11884 11470 +12266 11921 +12315 11445 +14262 11259 +11764 11618 +14397 11531 +15304 14761 +12391 10693 +15843 11292 +13891 12339 +15842 11193 +12889 11278 +14492 12391 +11711 11413 +11618 11003 +13894 10405 +12855 11492 +13204 10732 +12185 10558 +14893 13485 +14730 12217 +14100 13341 +11630 10938 +14831 10599 +13256 12892 +14831 12339 +11259 11042 +13282 12197 +15412 14685 +13487 12173 +14869 12896 +14814 10868 +12156 10800 +15376 14877 +13127 10590 +12784 12641 +14275 14057 +12953 10849 +14908 14843 +10405 10299 +14683 12892 +15304 14025 +13958 12197 +11423 11233 +14761 12265 +11884 10529 +12264 11618 +13282 12264 +10994 10821 +15016 12896 +11123 11066 +12888 11292 +14698 14489 +14057 13296 +15249 11481 +15376 13295 +15502 10868 +15581 11630 +14771 14730 +15153 12155 +14986 11618 +14108 11973 +13244 10194 +16101 10666 +11973 11433 +15861 10299 +15085 11630 +12339 11140 +14730 12339 +14520 11587 +14100 12992 +13863 12772 +14771 14307 +16091 14814 +12855 10299 +14617 10423 +16091 11415 +10551 10245 +13587 12892 +15304 13851 +11996 10615 +13830 10666 +14122 11123 +14696 11540 +15412 13930 +12478 10693 +10551 10170 +15016 13244 +15634 15167 +11415 10171 +14489 13891 +13829 10466 +14273 12641 +14397 13232 +14794 10466 +11292 10994 +12889 10800 +13577 10529 +11986 11618 +15581 14559 +13495 11267 +14588 11540 +13796 12953 +13930 11721 +14027 12223 +15511 14683 +13930 12278 +14761 10874 +13770 10405 +12197 10815 +13871 12888 +14783 12339 +15048 11973 +14683 10821 +11630 10040 +14831 11233 +13851 10469 +13487 10721 +12992 11618 +11540 10171 +12007 11049 +14107 11884 +11627 10661 +15304 12339 +14057 11697 +13296 13198 +13667 12945 +11996 11481 +10821 10781 +14122 13204 +14122 11193 +10980 10136 +13851 11884 +14102 11630 +12264 11123 +13230 11898 +14730 12155 +13930 10785 +13184 10590 +14856 10299 +14122 12451 +13891 11259 +14027 11996 +15016 10713 +12945 12197 +14321 12232 +12571 11977 +14747 13198 +12889 10559 +12917 12055 +16634 12197 +14487 11522 +14908 11618 +15096 12365 +12197 10581 +11869 11719 +14574 10158 +14282 10551 +10721 10589 +13931 10994 +13433 10627 +13930 11203 +12451 10693 +10994 10208 +15016 14275 +11109 10821 +14574 10693 +15096 13244 +14112 13230 +11618 10721 +13796 10800 +10874 10599 +14122 12884 +13829 11292 +14987 13196 +14761 12223 +13891 11267 +14081 10011 +10590 10135 +12264 10154 +14492 13667 +15376 13244 +12370 11463 +11994 10693 +14635 10721 +14869 14730 +13418 10868 +15016 12892 +14986 14307 +12195 10299 +13198 12992 +11624 11278 +11697 11624 +10792 10466 +13342 11637 +12222 10670 +14492 10397 +14942 12649 +12197 11278 +15167 12397 +15356 10990 +14570 10529 +12191 11193 +14150 13182 +15153 11259 +12544 11618 +14321 13487 +14683 13303 +14814 12992 +11292 10800 +11193 11123 +11762 11588 +13204 13198 +12544 11537 +14711 11042 +13303 11719 +13244 11027 +11540 10819 +14771 10397 +15096 14321 +14102 12268 +13520 13347 +14683 11193 +10792 10558 +14635 11066 +14747 10372 +14761 11537 +13422 11298 +14252 14057 +14193 10821 +14635 13930 +10849 10540 +13930 12266 +15370 12339 +15554 12769 +13486 10268 +13342 13296 +13829 11109 +14805 13196 +13667 11003 +11615 10154 +14771 10792 +12892 11986 +13487 11555 +14027 12892 +14397 13461 +14893 11057 +12339 10713 +13689 10569 +14512 14100 +12390 11995 +11638 11292 +11027 10529 +13898 12945 +14512 14307 +11996 10185 +14262 10800 +14952 10431 +14492 12264 +15304 12478 +14761 14092 +12250 10800 +13851 10140 +14314 10590 +16091 12155 +15304 14730 +10996 10551 +12574 11421 +10996 10304 +15167 12244 +14893 11721 +14814 11278 +13467 12583 +13796 10821 +12451 10721 +14492 10185 +11540 10590 +14794 12889 +13303 12320 +13930 11111 +12320 10800 +13244 13198 +11630 10052 +15257 10551 +15721 13434 +14057 13486 +10590 10208 +14771 11423 +13303 12278 +12737 10299 +13495 10874 +14696 14100 +14570 13295 +15096 11278 +14771 13964 +13495 10721 +14869 11697 +16133 11612 +12889 11267 +13710 10551 +14747 12758 +15855 14321 +13032 12953 +14893 12173 +14683 10713 +13682 10299 +14831 14730 +12264 11977 +10693 10329 +13546 13230 +14685 11641 +14107 11618 +14831 13871 +15785 12268 +15919 10171 +15412 14092 +12784 10245 +15579 10926 +13964 13890 +14307 10423 +13303 10990 +13795 12953 +14831 14696 +15167 14530 +14696 12348 +14960 12339 +12755 12321 +13487 13367 +12945 10469 +11996 10559 +13930 11510 +13541 13232 +10817 10423 +16091 11612 +14273 10245 +10781 10423 +12266 10171 +14771 12173 +11292 11066 +11921 10800 +13796 10721 +15016 14831 +14711 11193 +14100 12365 +14761 10785 +14107 13230 +12320 11252 +13796 11697 +14512 13891 +11298 10685 +14898 11588 +11637 10857 +14683 14027 +13296 12953 +14771 10647 +14635 12339 +14730 11775 +10800 10630 +14275 10466 +14559 10184 +14100 12451 +13198 12339 +15502 10423 +10620 10423 +12280 11563 +14082 11423 +11697 10627 +14570 11259 +10529 10185 +13930 10140 +13495 10994 +11481 10423 +14256 12523 +14683 10590 +11726 11603 +14730 13296 +14843 12889 +11827 11259 +13796 13194 +15236 12141 +11109 10713 +14771 11042 +13303 10721 +13796 13461 +12755 10551 +11618 11109 +16709 11415 +15249 10185 +12855 12851 +13891 11042 +11996 10980 +13502 11292 +15043 12896 +14919 10299 +14082 12544 +14689 13930 +15304 12197 +12884 10540 +14107 12478 +12704 11630 +10198 10158 +13487 12264 +14081 12745 +14635 12206 +13830 12492 +16746 12018 +11996 11193 +14489 12892 +14092 13244 +11637 10721 +14869 13244 +11540 10721 +14683 12915 +14960 13930 +15293 12195 +11996 10800 +14457 11618 +15323 14996 +15304 13029 +12915 10792 +14696 12889 +13002 11646 +15085 12769 +15167 14771 +12339 11481 +14696 14307 +14524 10868 +11423 11298 +14122 10874 +13230 10868 +15412 14193 +13360 11697 +12147 11058 +13871 13061 +15356 11618 +14683 13198 +14996 10965 +14831 13891 +14689 13296 +13796 11415 +11193 11066 +13342 11996 +13930 11630 +12779 10299 +15249 14679 +11867 10685 +10821 10434 +13871 12478 +13303 10994 +14908 10136 +12266 10821 +15249 13244 +13398 10171 +15478 11845 +14711 14307 +13930 12917 +10792 10599 +14512 11540 +11898 10631 +14262 13303 +14831 10990 +13714 12779 +16133 14397 +14013 11643 +15370 10693 +13196 10304 +12339 11764 +14814 10185 +12653 10299 +15016 11027 +15356 12884 +11973 10170 +13898 10529 +15502 13198 +12265 12197 +11995 11193 +13495 10800 +10781 10685 +13964 13024 +15497 15304 +14100 13931 +11193 10599 +14275 11193 +14122 14107 +15412 15153 +14685 12323 +14229 11367 +12264 10874 +14679 13342 +14635 11697 +14150 10333 +13198 12478 +15096 10257 +11413 10561 +15167 13296 +14738 10170 +11252 10397 +15570 13487 +14730 13204 +13342 10693 +11267 10423 +15304 14683 +12889 10185 +15167 13121 +13303 10693 +14027 13342 +13495 11193 +13076 11563 +10874 10158 +12266 10529 +12391 10140 +15380 12953 +13341 10372 +14683 12544 +11823 11778 +14716 11298 +15041 14747 +13303 13256 +14100 13342 +10775 10754 +12320 10434 +11977 10980 +14576 11193 +14709 13970 +14457 11292 +15502 10819 +15370 15016 +15070 14112 +15304 11278 +13198 12217 +15024 13303 +12191 10257 +13398 10154 +14004 12263 +14570 13204 +14869 13264 +10599 10257 +14524 11066 +14689 13871 +13891 13198 +15412 13367 +14831 10693 +13487 10466 +15370 14730 +14430 14307 +12544 10397 +14869 10781 +14057 13303 +13198 11995 +13230 10785 +14100 11996 +14112 10135 +14307 11973 +14576 10821 +14193 11292 +15304 10732 +10693 10257 +14869 14679 +13341 12266 +13244 11638 +12915 11042 +15412 14492 +12704 11941 +13873 13196 +13303 10785 +11789 11049 +14150 12314 +10257 10158 +14150 11013 +14685 11986 +12390 11617 +14113 13303 +14635 13667 +15412 13931 +12278 10372 +14685 10423 +14683 13796 +10647 10540 +12889 12206 +12266 11292 +14747 14303 +15380 13303 +13029 10693 +10721 10535 +13459 11076 +13303 11252 +11233 10821 +14761 14512 +15411 11278 +11298 10994 +15370 14112 +14307 11066 +15618 14730 +11423 10140 +13198 10781 +12266 12094 +11315 11292 +14679 14112 +14747 10713 +15570 14107 +15167 11098 +15919 13487 +14683 11719 +15380 12197 +14492 11495 +14683 14492 +13204 13158 +14524 11973 +14814 10747 +13198 10559 +12191 11298 +12896 11638 +15412 10721 +13487 11775 +14112 10599 +12992 10994 +14112 14025 +12323 11641 +14869 14122 +13495 11066 +13434 13369 +11764 11728 +13487 11884 +13342 10529 +14102 13111 +15370 11996 +14679 12055 +14120 11775 +11986 10397 +14893 11603 +11563 10136 +14057 12103 +14057 13830 +14570 10140 +15096 14771 +16091 10747 +14747 11630 +11996 10819 +11555 11445 +15406 13467 +14893 13244 +13898 11259 +15304 13296 +12615 10551 +13296 10599 +12363 10800 +14321 10693 +13198 12266 +15725 11630 +11973 11697 +14044 13731 +13290 10868 +13204 12339 +15304 11995 +15167 14869 +14492 12953 +14457 11433 +11618 10577 +13487 10257 +12851 12831 +14307 11259 +12523 11630 +12523 11720 +14751 12197 +12003 11298 +11492 10775 +15370 12954 +14771 14112 +13029 11027 +15016 12197 +15601 10800 +14783 13244 +13931 11057 +12932 12197 +14869 10194 +14831 12094 +13072 10466 +13277 12448 +14986 14747 +15295 11042 +13360 11641 +14057 10713 +14679 11423 +15919 15412 +13898 13232 +14004 10559 +13676 12719 +12896 10599 +11775 11468 +15295 14683 +13958 11714 +14027 11278 +14492 14112 +14730 12598 +15057 13851 +13930 11977 +11775 10849 +14576 13830 +14107 12884 +14576 12266 +13232 12264 +13832 11697 +11764 10397 +12598 11721 +13891 10620 +12892 12173 +14254 13204 +12323 10529 +14716 10135 +16454 15167 +11884 11603 +10627 10559 +14747 11921 +14698 14107 +14307 12391 +11538 10559 +14054 11884 +14761 12954 +15304 11726 +12663 10917 +11764 11042 +13296 12892 +12892 10562 +15478 10313 +14679 10529 +15412 10693 +15370 14747 +13931 12217 +14843 13244 +16091 15412 +10397 10216 +15376 14307 +14492 12265 +14679 13495 +15939 14869 +14543 11563 +11433 10800 +15356 12932 +14524 13851 +16390 10299 +14193 10257 +11618 11057 +16091 11995 +12807 11555 +15502 11697 +14771 10849 +12451 12278 +13502 11278 +14877 13344 +15215 14955 +13931 10136 +14761 14131 +15412 10990 +12784 12748 +14635 13232 +12264 11278 +14570 13342 +12953 10558 +14893 10157 +16353 13303 +14321 10721 +12391 10994 +11057 10431 +16428 10661 +12784 12635 +12478 10140 +14100 12397 +13264 10666 +14057 13485 +14871 10693 +12953 10800 +13487 13076 +13029 11111 +11637 10685 +13851 13072 +15356 12244 +15624 10599 +15282 14130 +12190 10643 +14986 14685 +14100 10372 +13851 11996 +15478 14709 +14397 11111 +11721 11042 +12214 11280 +11618 10327 +12094 11292 +14771 12441 +15721 11550 +13109 12549 +11995 11977 +14107 11495 +13232 10279 +13970 12704 +14747 13486 +13484 10693 +12094 11503 +14108 10685 +14108 10599 +11517 10666 +14952 10590 +14275 13256 +14314 10800 +13894 11227 +14648 13398 +14831 14262 +14122 11292 +12339 11423 +13949 13244 +14262 10423 +15023 14057 +16710 15167 +14492 14397 +14908 12451 +13871 11233 +14812 11618 +14397 13303 +14683 11140 +14167 10299 +12892 11123 +14814 10194 +14530 11259 +12992 11042 +14107 10397 +14893 10721 +12391 11898 +12266 11495 +13230 10372 +13770 12807 +14492 10965 +15070 12892 +15381 11423 +13232 12478 +14898 12574 +15861 14804 +13495 13232 +14893 14113 +10540 10535 +11003 10713 +12321 12184 +13303 10434 +11298 10135 +14747 12266 +12841 12321 +13485 12264 +14397 11267 +13198 12451 +14869 14321 +12708 10416 +12945 11953 +13232 11728 +12191 11986 +11042 10194 +12339 10466 +13795 13461 +16091 15376 +10685 10599 +11996 10158 +13418 11479 +15043 12007 +14006 13930 +14685 10821 +14771 13502 +12896 11292 +11775 11292 +13198 10257 +13459 11433 +10559 10194 +11641 10431 +12889 10693 +12441 12280 +14679 13256 +13369 10416 +14683 14262 +10396 10299 +11299 10170 +13369 12807 +14828 11630 +10423 10372 +14520 13342 +15370 13342 +12266 11697 +13851 11637 +11292 10135 +13232 10792 +14709 14013 +12007 10397 +13303 13204 +14119 10245 +15016 11288 +15096 10785 +12217 11278 +12321 10304 +14747 13891 +14804 10640 +13768 10299 +13244 12190 +16728 12197 +15049 14856 +13931 12197 +14761 14025 +15794 14805 +16454 13987 +11884 10559 +14709 10416 +13541 11675 +15063 10299 +11278 10397 +13297 13192 +12870 10170 +15356 11057 +15447 13930 +13076 10590 +14683 13072 +15919 10397 +13461 10693 +13796 12451 +15167 13796 +14120 10141 +14081 13536 +12278 12191 +11066 10540 +14856 11630 +11540 10423 +14524 10980 +13303 11624 +13158 12896 +15370 11973 +12896 11413 +14814 12953 +14100 11537 +11481 10140 +13244 11109 +12917 11193 +13244 11697 +10670 10540 +14100 10577 +14307 14027 +11140 10747 +14747 13485 +14193 11042 +14027 11066 +13232 12992 +13487 10994 +13871 11433 +15245 15049 +11637 11603 +12266 10140 +12323 10693 +14771 12264 +13303 11027 +14960 11563 +11697 11123 +13347 12758 +14783 11433 +16133 12945 +14543 12094 +15096 10693 +14893 10693 +11278 11259 +14570 11278 +13486 10918 +13930 13076 +12889 11252 +14570 11066 +12206 11049 +15153 10747 +13871 11663 +14489 11292 +13891 10693 +14761 13121 +12889 11109 +14098 13198 +13495 13204 +13574 11924 +12896 10800 +11961 10543 +15370 10423 +14747 12278 +13342 10683 +14843 13303 +12197 10599 +11867 11283 +11697 10559 +13232 11111 +15825 13577 +15502 12391 +12191 11996 +14275 13487 +13871 13029 +13196 13115 +15841 14256 +14102 13942 +14252 12889 +13970 10640 +12889 10529 +10994 10431 +15024 11790 +12898 11973 +14893 11775 +14288 11884 +11098 10849 +15096 12339 +15045 13930 +15853 11053 +13232 11433 +12055 10155 +14750 13303 +14908 14307 +12184 11844 +11280 10299 +14397 13495 +13667 12339 +14252 10466 +13795 13360 +12324 11292 +11066 10590 +12391 11066 +14747 13871 +10721 10257 +16721 11641 +12615 11643 +13495 10683 +14122 10557 +11617 10397 +13303 12217 +14150 11721 +14601 10299 +14771 12339 +15070 13891 +14895 12769 +15380 10397 +13398 12932 +14492 12884 +12348 11995 +15412 11193 +15412 14574 +11555 10917 +12264 10569 +11973 10980 +16091 13851 +14679 14122 +15304 14092 +13587 13297 +15167 13535 +14986 13871 +10631 10590 +14122 10990 +12889 11540 +12709 10241 +14843 12553 +15401 12953 +14574 13341 +12451 10821 +14130 12855 +14814 13377 +12217 10372 +12191 11721 +14730 11376 +15016 10155 +13930 11986 +14057 12266 +11721 10397 +13871 10792 +14893 12339 +13851 10792 +14100 10361 +15412 13851 +10731 10397 +15024 11057 +11908 10620 +14576 13930 +14082 10135 +13851 10713 +12191 11503 +13710 11227 +14730 12917 +13931 10529 +14492 10990 +15096 10721 +12339 10785 +11953 10208 +13105 12197 +14627 12769 +15798 12855 +16133 11775 +11953 11111 +14492 10781 +11540 11298 +11537 11042 +10599 10140 +11884 11775 +10800 10257 +16498 12478 +15624 10819 +15304 11298 +14843 12206 +12953 10469 +14098 13061 +11618 11540 +13942 13806 +14107 12324 +15700 12294 +14908 11259 +15919 11049 +15023 10800 +13244 10643 +12222 11675 +15502 14635 +15356 15167 +13871 10747 +12339 10397 +14050 10431 +14893 12953 +14716 11292 +13796 13486 +13487 11996 +15376 11638 +13459 11977 +15472 14709 +15124 13768 +12129 11563 +12523 12175 +11638 10590 +13461 11111 +14747 14716 +15282 12855 +15502 11057 +14679 13296 +13303 10146 +13970 10247 +13303 11982 +12039 10800 +12953 10529 +14492 11995 +10868 10693 +12055 10599 +11109 10819 +14633 11066 +14113 11898 +14570 13158 +16133 12339 +14321 10581 +15370 11413 +14771 11481 +15304 11996 +12266 10423 +14492 12954 +15502 10434 +14698 13244 +16091 12889 +12544 11003 +12478 11298 +10721 10414 +14730 13871 +14524 11618 +13795 13577 +13715 12748 +12855 12719 +14869 10800 +12892 10529 +12982 10849 +12197 10135 +11111 10216 +12478 12173 +14783 11996 +14771 13256 +13931 11049 +14122 10792 +15304 10693 +10821 10599 +11292 10627 +15376 12892 +15412 14122 +15356 12559 +13930 11540 +13931 13871 +13495 11986 +15919 10423 +11140 10397 +14908 10194 +12264 12173 +14922 13796 +11986 11298 +15579 14709 +14761 11624 +13367 10466 +11612 11540 +14747 13540 +15049 10225 +10185 10136 +15370 14307 +12932 11883 +14683 11415 +12217 10257 +15412 12451 +10535 10529 +15167 10224 +13341 10868 +14987 10313 +11492 10299 +14122 13871 +14972 14747 +13127 11057 +14477 10559 +13487 11471 +12278 10627 +13930 12264 +10670 10257 +14831 11618 +15273 11823 +14576 11977 +15741 14229 +13495 10146 +12451 10540 +13476 13303 +16091 11953 +14492 10849 +14718 12709 +14869 13931 +13127 11563 +11278 11042 +13277 13061 +15051 14107 +10980 10397 +13347 12492 +15167 14050 +14893 11267 +14704 11618 +14081 10950 +10529 10140 +12945 11267 +16091 11871 +13930 10185 +13520 12492 +14812 11122 +11921 10279 +14492 12266 +13232 12451 +13676 13196 +14027 13244 +15096 11193 +12945 12278 +13493 11728 +13898 11066 +14877 13198 +16133 14082 +14307 14122 +14307 11618 +14027 11433 +14397 13341 +14952 11278 +15295 13198 +12244 12222 +14275 10965 +14679 13204 +12945 11066 +14893 11719 +16668 10299 +11995 11423 +12889 12278 +13303 11986 +12992 12892 +15741 12252 +14524 10397 +12896 11726 +14252 13127 +15376 15304 +12197 11057 +11952 10299 +13341 12896 +11618 10627 +14112 12223 +13947 12264 +12018 11413 +12544 10792 +10577 10257 +11456 10154 +15794 12704 +11433 10268 +15167 14321 +16133 10158 +10408 10397 +14027 10965 +14771 14679 +15167 12882 +13244 11481 +12992 10140 +11823 11057 +13230 11995 +14771 11233 +11337 10529 +12264 12094 +14696 10785 +12954 11298 +10821 10654 +14771 14252 +15721 13873 +11057 10874 +15861 10225 +13105 11728 +11637 11315 +13487 10747 +14314 10821 +14539 14321 +12195 10551 +13851 10994 +14633 11775 +12953 12390 +14960 11298 +14730 11193 +13476 10800 +12954 10792 +14635 10874 +13303 13061 +14689 11292 +10990 10868 +11298 10155 +15163 11612 +13674 12197 +13244 11057 +14683 13871 +10770 10245 +13256 12191 +12323 10792 +14831 12945 +13930 13230 +12544 10185 +14831 10821 +13204 11953 +14747 11563 +15502 14492 +12321 11555 +15502 13232 +11638 10868 +15708 13002 +14761 10216 +14635 11433 +14057 11996 +13851 12266 +14122 11726 +13931 12917 +15502 12323 +11697 10800 +14747 12156 +14112 10434 +12884 11259 +14492 10821 +14853 13796 +13541 10154 +11109 10469 +15478 10299 +11884 11719 +14130 11952 +13851 13796 +12898 11193 +12544 12348 +13796 10279 +15045 11487 +14307 13871 +11721 11618 +12896 12206 +12719 10304 +12758 10800 +12917 12478 +13029 12884 +13158 11298 +13303 12992 +13029 11637 +15855 15167 +10965 10627 +14869 12206 +13693 11484 +15447 13232 +14869 11433 +15249 14122 +14307 10154 +14057 11433 +13851 11719 +12190 10800 +14098 11423 +11618 10821 +14107 13277 +15389 10800 +14761 11898 +15618 14736 +11298 11027 +15842 10994 +15043 13184 +13487 12266 +12884 10397 +14100 12108 +13495 10529 +14122 10423 +12397 11995 +14709 14125 +14100 10683 +13244 12191 +13342 11066 +14125 10754 +12896 12889 +14683 13232 +14794 10918 +13891 13204 +15249 11617 +14193 11540 +14512 12892 +11824 11259 +14492 10529 +13244 11278 +14783 10466 +13232 12574 +15370 12992 +14107 11298 +13891 13809 +13851 11267 +14804 10139 +10416 10170 +12339 10194 +11531 11057 +14222 12016 +12743 10170 +15504 11844 +14397 11146 +14489 10713 +14236 13891 +13931 13851 +10693 10299 +14683 11423 +14397 11259 +15167 14027 +10821 10559 +14082 11996 +13796 12339 +14570 10599 +12266 10800 +15024 10792 +13796 11278 +12954 11433 +13029 10397 +11630 10299 +15412 13461 +12339 11193 +13342 13204 +12264 10257 +11292 10874 +14112 11042 +14570 14057 +13029 10590 +13931 10933 +14057 10529 +12250 10721 +14893 10849 +14102 10299 +14685 13577 +15412 13256 +13930 12915 +11697 11233 +14685 10434 +14182 12222 +10965 10158 +15304 11150 +13930 10469 +14761 10171 +11433 11298 +13297 10397 +14102 13873 +13495 11433 +15502 12339 +14100 11495 +12889 11259 +15304 10781 +13244 10299 +11898 10599 +13495 13158 +14831 12954 +10396 10225 +14122 10529 +13796 10469 +12621 11833 +14635 11298 +15048 14869 +13296 11042 +11042 10721 +10170 10015 +16515 10559 +13198 10529 +12855 10170 +15293 10245 +11278 10431 +13196 10551 +15016 10279 +14711 10322 +14869 14100 +13520 12549 +10785 10540 +13290 12007 +13710 11492 +12245 10620 +14747 12953 +14307 10994 +13232 12878 +12807 11844 +15245 13873 +12878 11066 +15304 14685 +13244 10419 +15532 11869 +13341 11995 +15447 10372 +12131 11298 +12831 10405 +13204 11540 +15412 11618 +13255 11995 +14683 12217 +12264 11433 +12992 11973 +14656 11775 +14761 11973 +13931 10194 +12197 11842 +13198 10397 +14712 10713 +11823 11618 +14679 12892 +13342 10868 +15478 14234 +12323 11624 +14574 10540 +13232 10965 +14530 12889 +14457 11298 +10868 10257 +15785 11630 +15721 12769 +13244 13232 +11986 11003 +12745 11869 +15478 11336 +10821 10140 +12807 10754 +14122 12945 +14869 10779 +11259 10994 +11111 10693 +14633 14524 +12191 11057 +13487 13244 +14100 12892 +14771 12451 +12018 11711 +14107 11711 +13232 10257 +12173 10721 +13933 11618 +11618 10268 +13341 12264 +14193 12391 +13830 13034 +15785 13942 +12278 12217 +13495 11977 +14674 13232 +14027 11259 +10792 10279 +13796 11298 +11146 10397 +11995 10397 +15096 12544 +14112 13871 +12191 10980 +14130 10405 +11076 10590 +12615 11844 +15376 10198 +13495 10713 +14814 13061 +15380 11986 +14769 11728 +13204 10158 +14098 13418 +14718 10139 +12896 10683 +15304 10208 +14761 10990 +11481 11057 +13495 11292 +14814 13204 +13158 12255 +14761 10135 +14814 10155 +12641 10245 +14674 10140 +14893 10792 +12649 12184 +12917 12451 +12389 12003 +14131 11027 +12323 12266 +12892 11977 +13485 13029 +14397 12544 +13862 12003 +14831 13851 +13341 11042 +14635 11278 +14100 13577 +15167 10965 +12391 10423 +12195 12184 +14570 11525 +12478 11066 +15027 13244 +10918 10781 +14761 12278 +13930 10194 +11834 10693 +16363 16091 +12266 11049 +14679 13485 +13873 10640 +15376 14512 +15124 12214 +13796 13487 +13796 11086 +11728 10423 +13076 11721 +12197 11656 +15624 11057 +14730 10397 +13476 11540 +13184 10529 +13487 11986 +14107 12206 +14512 13495 +14635 10423 +13303 13230 +14679 12896 +11433 11013 +13198 12264 +12945 10216 +13342 11471 +13543 11898 +14485 10139 +14635 12264 +14689 10590 +14057 13495 +11057 10466 +15497 14027 +14112 11267 +15861 13970 +11433 10279 +12339 11977 +11233 10713 +15304 10540 +16091 11193 +14683 11066 +14107 10950 +14871 14057 +15304 14321 +14112 12992 +15882 11764 +14081 11869 +13198 10185 +12206 10140 +13851 12884 +10754 10396 +11278 10693 +11503 10800 +14122 11146 +12278 12228 +13244 11540 +13204 11721 +15250 15160 +14683 13256 +14576 11278 +15919 10693 +12339 11540 +14696 10980 +14112 11003 +15096 11953 +12652 11431 +12250 11842 +14814 14730 +14679 13871 +13342 12197 +10551 10139 +15153 10171 +14646 12896 +12390 10158 +11996 11973 +13232 12266 +10800 10431 +10792 10529 +13796 10792 +13341 10155 +15919 13244 +11980 11775 +15412 15401 +10990 10185 +15618 14107 +11953 11057 +15295 14853 +14577 12339 +12705 10170 +12478 11252 +14100 11423 +13342 13303 +11193 10540 +15497 14761 +14027 12992 +13495 13230 +14218 11630 +14869 13930 +14761 13796 +15618 11098 +11193 10397 +14877 12007 +14122 11789 +12264 10732 +15249 10562 +11298 10208 +14492 11123 +15861 12844 +15370 12003 +14627 10299 +13535 10721 +13970 10551 +13486 13244 +12264 11203 +15108 13297 +14307 11298 +15376 14492 +12250 10815 +12889 11995 +12478 10800 +12278 11563 +15376 11603 +14689 13891 +12892 10257 +14747 14683 +12266 10599 +15380 11775 +12451 11278 +13121 11057 +13303 12391 +12574 11135 +12945 12055 +13476 11423 +15249 11150 +13930 11042 +15370 14100 +13930 12191 +12397 11618 +13422 13277 +15016 11996 +14570 13487 +13303 12323 +14908 14107 +10747 10693 +12055 10747 +12523 11545 +11697 11695 +15721 15085 +11146 11057 +15861 13942 +14027 10732 +13204 10868 +11298 10817 +12853 12195 +11292 10434 +13873 12195 +11618 10466 +13434 11280 +12448 12155 +14576 10800 +11086 10800 +15502 13342 +14730 12391 +16091 11058 +14908 14492 +15919 12892 +12896 10279 +14960 14908 +11540 10397 +13369 10304 +13303 10874 +12883 10140 +12390 11057 +14492 11624 +13486 10327 +14869 11308 +15249 14696 +14761 11259 +14107 11540 +14814 12478 +11252 11042 +14492 14231 +12889 11603 +13232 11193 +14952 11337 +13204 11612 +14107 11267 +12448 10980 +13796 10590 +15794 14856 +13198 11298 +13347 12174 +15381 11086 +14880 10299 +14492 11057 +13930 12339 +14683 11506 +13461 11415 +12339 11278 +14869 10918 +15070 14512 +14572 13002 +15235 12954 +13211 11725 +13198 10792 +12266 10185 +13884 12197 +14712 12889 +11638 11042 +13930 10257 +15412 11298 +15794 11941 +15376 11259 +12448 11057 +15412 14986 +14231 10581 +11884 11697 +14711 13487 +14024 13244 +13487 11603 +14524 13495 +14057 11884 +14633 13851 +11140 10821 +14100 11042 +13360 10589 +15497 15356 +13495 12323 +11057 10208 +12222 10154 +12217 11540 +14122 12992 +16721 15167 +14893 14570 +14730 11996 +15167 10154 +13487 11697 +13577 11066 +12339 10136 +14107 11995 +15249 10431 +12884 11996 +13476 12889 +12197 11996 +14119 11511 +13433 10590 +14855 10170 +12769 10551 +14492 13198 +13543 11996 +13204 10683 +13891 10821 +13485 10431 +13303 11953 +15167 14112 +12748 11336 +15412 11986 +15370 13295 +12708 10551 +15861 10640 +15412 13487 +14006 13184 +13930 11433 +14679 12953 +15304 12953 +10747 10721 +15618 11728 +14718 12195 +11292 10423 +15721 15049 +14843 14524 +14082 13367 +14893 14487 +14683 13029 +15167 14100 +12889 11292 +14853 11086 +12807 10926 +13196 13016 +13198 13061 +12185 11775 +13942 12844 +14869 14843 +11481 11308 +12544 11042 +12197 10158 +14696 10792 +14112 10821 +14627 12807 +11630 10313 +15016 11278 +12478 10721 +11638 10466 +11952 11492 +14895 11550 +14108 10627 +14696 12945 +12855 10304 +12278 11057 +13486 10466 +14747 10275 +14893 10529 +14576 12197 +14112 13487 +12523 11230 +14747 13487 +14320 10408 +11728 11618 +12917 10792 +14576 14492 +13756 11298 +14524 11996 +13667 11721 +12652 11646 +14771 12266 +13970 13111 +15304 10874 +13296 10821 +11042 10268 +12819 10961 +14761 12544 +12266 11481 +12156 10581 +13342 13244 +12339 11721 +15020 10800 +11503 10372 +15370 12278 +12339 10868 +13495 11481 +14570 11423 +12264 10990 +14842 11982 +13577 10868 +11637 11003 +15016 12544 +12191 11140 +14986 13198 +13296 10279 +14268 13715 +13851 12055 +14122 11973 +14570 11697 +14092 12896 +15774 11336 +13577 12265 +14683 12391 +12855 12708 +10397 10158 +11823 11278 +11259 10747 +15024 11697 +15579 10551 +12841 10299 +14057 13871 +15016 10721 +13577 12323 +13796 11066 +12007 10693 +12896 10821 +13685 12197 +15370 13487 +12896 11433 +11996 10874 +14633 12339 +14730 12197 +11563 11337 +12206 10693 +14576 13796 +12889 11823 +13851 11603 +16101 11470 +13546 11470 +13930 13851 +11618 10713 +14314 10423 +13984 12222 +13829 12892 +13851 13244 +11146 11042 +15497 13930 +14193 12953 +15380 11193 +13196 11630 +14182 11764 +13931 10792 +14307 12264 +13296 12544 +11445 10917 +14259 13303 +14905 13891 +13930 11292 +13873 11535 +14718 13434 +14520 11057 +13398 12197 +13541 11278 +15376 12278 +13502 12266 +13871 10599 +13256 11292 +11423 11267 +12719 11630 +13891 12945 +13303 11481 +13232 13105 +14130 10304 +14747 11233 +11563 11140 +14057 10136 +12391 10821 +14122 13232 +14877 12320 +11292 10792 +11697 11298 +10551 10241 +12896 10590 +12615 12214 +13871 10821 +14683 11292 +14027 11298 +12197 11592 +14738 10551 +15374 12945 +13303 11775 +14635 10821 +16091 11288 +14057 12264 +14572 12652 +12175 11997 +13930 12884 +14112 13983 +14570 10874 +13930 10423 +12953 10599 +15293 11952 +10792 10158 +14831 13495 +12264 10540 +11977 10540 +14716 10423 +15295 14761 +15070 14679 +14150 13232 +15074 10423 +14814 11996 +14122 11764 +13182 12197 +12610 12171 +14027 11986 +13230 10434 +13495 12278 +15798 12853 +14711 11027 +14013 13970 +14843 14747 +15370 12266 +14869 10529 +11699 11057 +14397 10868 +13495 10185 +14635 14112 +12280 11726 +11278 10868 +12339 10685 +13485 12917 +12278 11298 +14674 10800 +12197 10478 +11884 11423 +11618 11193 +13344 10819 +15370 13667 +15012 10917 +10713 10693 +10868 10529 +13244 10590 +11468 10693 +10857 10800 +14730 12278 +15618 12954 +11433 11259 +15370 11697 +15016 11884 +14712 14320 +14843 10732 +14747 12339 +12055 10185 +12954 11638 +14696 13342 +12206 10721 +14814 10693 +13467 10245 +11995 11298 +14112 13244 +13232 10994 +15478 14102 +13873 12769 +13667 12478 +14831 14492 +11066 10257 +13342 11123 +14321 13296 +11278 10408 +12264 10158 +13930 12389 +15167 10325 +12748 12321 +13303 12191 +12917 10299 +15370 12953 +13931 13244 +12772 10170 +14057 13264 +13367 11637 +11869 11298 +14108 12266 +15919 12478 +14771 12478 +14107 13487 +14492 13341 +15304 14122 +13796 11376 +11721 10333 +14628 12652 +12544 11146 +12197 11675 +13942 10923 +13931 13796 +12889 11638 +14709 11833 +11049 10747 +15919 12889 +12719 11028 +16091 15023 +14027 11267 +12954 10821 +13931 10721 +11721 10431 +11267 10599 +14696 11433 +11050 10559 +11042 10654 +14492 11697 +12884 11267 +14730 14576 +14831 11775 +14307 12478 +12266 10194 +13034 12174 +13230 13198 +14771 10693 +12184 11445 +14869 13851 +15304 11618 +14683 10599 +13232 11977 +12278 10800 +13487 11146 +11884 10800 +13487 12391 +14107 10561 +15842 12892 +14193 10140 +12268 10754 +13485 12889 +15721 15478 +12278 11278 +13891 12889 +12779 11630 +12892 12448 +13486 12892 +13863 10243 +16091 10298 +12745 10011 +11618 11433 +11996 10434 +11775 10372 +15167 12954 +13232 11041 +10559 10171 +14747 13297 +12953 10721 +12878 11618 +15057 11982 +11027 10155 +14321 12264 +14730 12266 +12478 12451 +13796 10994 +11844 10225 +11996 10431 +14256 11511 +14107 12173 +15570 11517 +14683 10257 +15096 12397 +12197 10613 +15741 12857 +12954 11884 +14091 10800 +13851 13303 +13537 12598 +11995 11278 +14234 13434 +11869 10661 +12784 12638 +15096 14512 +14275 14100 +13061 11699 +12191 11697 +14908 14100 +14685 11298 +15798 12831 +12197 12155 +11337 10693 +14747 14057 +14122 10140 +11057 10654 +12174 12173 +14730 10994 +11122 10620 +12954 11697 +15570 13077 +14107 11721 +12889 12266 +12478 12217 +14004 11588 +14986 14635 +10792 10434 +12831 12708 +14679 12363 +12708 11492 +15023 12441 +11924 11392 +13264 13024 +11292 10721 +14193 11481 +15304 10279 +11193 11042 +14512 11278 +12889 12758 +12441 11278 +13204 11066 +12892 11487 +14696 12953 +14683 11003 +12478 10581 +10693 10599 +14027 12451 +10551 10313 +14430 12191 +14275 12391 +10279 10140 +11697 11259 +13851 11995 +15741 10961 +12397 10540 +13297 12134 +14908 12478 +12250 12222 +11977 11471 +12478 10423 +14696 11775 +13139 11973 +12549 12174 +15024 11259 +13341 11618 +15070 13232 +14057 10918 +14683 11618 +16091 15273 +13303 11193 +13244 10257 +14027 12574 +13495 10792 +12448 11058 +13461 11624 +12868 11630 +13016 11630 +13970 11411 +14730 12954 +15785 13806 +12992 11884 +14627 12676 +12323 12197 +15023 14747 +13767 11630 +13970 10923 +11292 11278 +13461 12155 +14627 10139 +13930 10136 +14627 10313 +13667 12892 +15027 13303 +11953 11823 +14905 12892 +15016 13891 +11109 10693 +15478 11227 +10397 10185 +13487 12544 +12917 11433 +12197 11995 +11697 10431 +14275 11042 +16133 15376 +14831 10713 +13931 10216 +11423 10821 +12195 11550 +14081 11695 +12807 12676 +14027 10423 +14100 10599 +13487 10685 +11844 11833 +13930 11252 +15304 13244 +15370 13341 +15887 10405 +12892 12889 +12448 11996 +12892 11109 +15096 14685 +15245 14856 +15304 13655 +13476 11638 +13369 12755 +13851 11495 +12478 10154 +13244 13230 +12156 12003 +14771 14487 +14570 13244 +13577 11057 +11618 11292 +14102 10754 +13198 11856 +12945 11292 +14024 13377 +11844 11630 +13459 12335 +15070 13930 +14397 10409 +13076 10185 +13806 11411 +14262 12889 +14122 13342 +14234 10299 +14112 11775 +13295 11193 +12339 11697 +14570 12451 +13121 12197 +14711 12197 +13244 11630 +14576 14100 +14256 10926 +12758 12266 +14893 14122 +11292 10693 +11995 11973 +14679 14320 +11823 10466 +10775 10396 +12391 10792 +14771 10299 +12663 11445 +14046 13715 +13796 12191 +10423 10136 +14761 11111 +14107 12896 +13942 10754 +13230 10693 +14679 11057 +16353 11066 +10721 10158 +15295 10821 +11898 10627 +12638 11336 +11433 11415 +14630 10819 +14804 12844 +13342 12954 +13930 13184 +14730 12892 +12278 10590 +14895 12268 +14107 13198 +13296 10158 +16390 15934 +14783 11067 +12896 10155 +13061 11823 +14627 12755 +15167 11042 +15991 10299 +11413 11292 +15624 11193 +14492 11423 +13577 11042 +15370 13930 +14576 12478 +14683 11884 +15478 10245 +15074 14122 +16353 11282 +14492 11278 +10868 10792 +14262 10327 +15841 12523 +13342 12992 +13232 11775 +12953 10431 +12280 11921 +14747 11648 +15304 10158 +12819 12728 +12320 11728 +14193 10590 +16091 13061 +15618 14236 +15626 14843 +14685 14108 +13487 11973 +12441 10620 +11003 10397 +15389 11292 +13502 11618 +14761 13422 +14193 12266 +15096 14747 +13230 11986 +12953 10713 +15249 14100 +11844 10170 +13290 12878 +10577 10540 +14674 12191 +11555 10225 +10590 10279 +13303 12007 +15497 14100 +14237 14107 +11563 10666 +15798 13770 +15167 12264 +15843 11233 +15257 13369 +14730 10713 +12953 11003 +13061 10874 +12598 10581 +15554 11630 +13486 10713 +14125 10396 +12228 11049 +13577 11618 +14493 10313 +12896 11027 +13158 12278 +15257 12807 +15293 12737 +11834 10821 +13158 10423 +12884 11973 +12278 11996 +13244 11308 +12003 11908 +14683 12992 +14908 12191 +15725 11833 +15380 13930 +12676 10299 +14683 13485 +14869 12478 +14107 11697 +13204 13032 +14100 11986 +14730 12348 +14057 10721 +14869 11259 +14709 12855 +15376 10721 +14875 10154 +14628 14572 +11823 10194 +13485 11123 +15304 13891 +13105 10171 +13184 10466 +14747 13341 +11884 10466 +15043 11193 +11066 10785 +13871 11481 +14771 10372 +15478 14816 +13230 10721 +15323 11057 +15741 11341 +13244 11259 +11630 10551 +14122 11618 +12892 12197 +15282 12779 +15304 14027 +13796 11921 +11433 11292 +11618 10154 +15177 14877 +16091 15249 +14908 10529 +13970 11336 +12223 11057 +14112 10397 +12851 12779 +14709 12184 +12807 11492 +16133 15167 +14321 10158 +14747 12889 +13931 13667 +11028 10304 +13891 12896 +14893 11292 +15096 10434 +11109 10299 +14307 13296 +14869 11921 +14843 13204 +14397 14100 +14307 13121 +12819 10299 +14679 13487 +15167 12451 +15016 13851 +12391 10647 +14107 12758 +14908 11109 +12012 11292 +11823 11298 +10654 10158 +11563 10140 +12915 10299 +15370 11823 +14986 12953 +13936 10965 +14275 13341 +14295 12652 +14747 11618 +11834 10781 +12544 10529 +13891 12451 +12889 12191 +14492 13303 +12951 10397 +14254 13667 +13851 13290 +15293 10551 +12197 10529 +15249 11057 +14100 13485 +15154 11200 +14046 12321 +13871 10423 +14771 13830 +11630 11550 +14193 11697 +15295 10747 +13891 10194 +14869 13296 +14321 13303 +11719 11292 +10590 10136 +14805 11411 +14696 11193 +13244 10821 +15794 13942 +14474 11844 +14747 10926 +12451 10423 +15478 13873 +15304 14869 +11423 10721 +13502 12892 +14747 14122 +12264 11986 +12441 11618 +13930 11648 +15380 13487 +15478 12704 +14268 14046 +16463 12108 +14492 13342 +14730 11057 +13158 12892 +12953 11027 +13061 11282 +14696 13930 +14268 12719 +16091 11057 +12889 11637 +11884 10423 +14730 12451 +13433 11292 +13256 12055 +12171 11619 +14709 13768 +11481 11066 +14004 10666 +12397 11433 +13485 13204 +12332 11908 +15381 11725 +13930 10408 +14635 11057 +12831 12807 +14761 11540 +15249 14397 +12728 10299 +14856 13770 +15534 13389 +15304 11540 +14744 14712 +13930 10299 +14013 11280 +15798 10551 +12889 11057 +11617 11057 +12007 11259 +14709 11388 +14986 11193 +15376 14689 +15167 13398 +12191 11165 +13930 10559 +16133 10747 +14771 10135 +14100 13871 +11612 10693 +13936 10785 +11267 11042 +13495 11697 +15024 12553 +13704 10245 +11726 11563 +12676 11643 +14843 13232 +14288 11719 +15070 10821 +11995 10821 +14986 13303 +15412 12945 +14897 10713 +14262 14100 +15304 12451 +13194 12892 +12807 10170 +10783 10247 +14761 13244 +14711 13930 +15249 12264 +12266 11986 +14747 13296 +15433 11728 +15070 12339 +11433 10821 +14869 12280 +14488 13204 +14730 10431 +13931 12391 +10257 10140 +10994 10158 +13931 10140 +10349 10005 +15412 15370 +12478 12339 +14747 11775 +10994 10581 +14635 12217 +12945 12878 +12892 11057 +14747 13947 +15304 11884 +14025 11618 +11823 10208 +13232 12884 +15282 11227 +13244 12278 +15295 11898 +14027 10431 +13061 12598 +12889 11413 +14100 10257 +14771 14635 +12451 10434 +14718 10551 +15249 11049 +15016 12278 +13541 12953 +13851 12003 +15024 10529 +14524 12884 +13204 10299 +15785 13970 +11973 10792 +14512 12945 +13029 10821 +14683 13461 +13244 10135 +14321 10785 +14231 11042 +13303 10868 +12244 12197 +13495 12197 +15167 14712 +10693 10529 +14730 14112 +13342 12217 +14738 12737 +14553 10135 +11995 11898 +14193 11433 +15304 10423 +10792 10721 +13347 12173 +14730 14259 +15016 13290 +13487 12884 +11298 11267 +14193 11066 +14785 12448 +14027 12339 +13255 13198 +13577 10171 +12779 12708 +14718 11555 +11550 10551 +12549 12173 +11630 10139 +14747 10599 +14771 12889 +10693 10208 +14574 11278 +12197 10849 +14635 12441 +13461 10194 +13863 10170 +13360 12197 +14236 10800 +15024 14819 +11869 10463 +13964 13476 +15554 10416 +14100 10140 +15356 13121 +12278 10781 +14122 14112 +12892 12391 +14321 13851 +11298 10747 +13139 10431 +15798 10405 +11193 10431 +15024 11433 +14574 10990 +14107 10540 +11977 10423 +11995 10800 +13256 10590 +14234 11630 +13931 13204 +12214 10184 +15249 10540 +14747 12191 +13415 12214 +12953 12278 +12339 10409 +14122 10257 +15412 12917 +14275 13495 +15295 14112 +13061 10778 +16133 15502 +15304 14771 +14512 11719 +14112 13198 +15412 13796 +14893 14730 +14679 10279 +14487 11618 +13487 11921 +15376 11697 +13296 10693 +12523 11336 +14627 10551 +13970 10299 +14259 12878 +16091 10535 +14255 12264 +10994 10194 +15016 14321 +12807 11280 +15370 11638 +12266 10728 +16540 15167 +13398 11842 +16133 13829 +14635 12197 +12055 11996 +14706 12197 +14492 13158 +14570 12206 +16091 13796 +13487 13127 +15008 10590 +12451 10257 +12896 12892 +13360 11057 +11259 10874 +12892 11140 +14321 10154 +15785 14485 +11146 11066 +14635 12266 +12878 11067 +13964 13796 +14057 13342 +15887 12184 +14131 13121 +13930 11337 +12676 10304 +14761 11267 +14869 12441 +15304 14893 +12197 11376 +13871 12441 +14771 11824 +11884 10713 +14193 14100 +15304 14100 +13987 10815 +13204 11292 +13851 11042 +10666 10466 +15027 14027 +15323 14814 +12478 11995 +13244 10994 +14100 12953 +14543 11122 +13891 12173 +11540 11042 +12265 10185 +15016 11423 +13264 12892 +13851 12264 +14524 10158 +14122 12191 +11823 10158 +13714 10170 +14122 11684 +14898 14689 +13290 11423 +14908 14712 +11292 10980 +12389 12266 +15304 11042 +12264 12119 +15323 15016 +14057 10423 +15108 12173 +12214 11844 +10416 10304 +11259 10372 +14842 12266 +14100 14098 +14275 11995 +14193 10994 +13495 10685 +14107 10693 +14761 10185 +13342 10397 +11823 10529 +14745 11898 +14685 10721 +14683 14122 +11537 11066 +13230 12055 +11921 11057 +15295 13930 +14696 14082 +13577 10874 +12807 12195 +12108 10529 +12892 12363 +14869 10620 +15618 11764 +14321 11697 +12190 11531 +14761 12191 +14709 10225 +13303 11728 +10397 10299 +14747 12954 +12992 11834 +14457 10559 +14696 13232 +14704 14100 +11630 11463 +15502 11996 +15376 13871 +13987 11728 +13244 11898 +14816 13196 +14182 11728 +15167 10721 +11995 11066 +15700 12748 +14908 11057 +13541 11728 +14082 10994 +15624 11973 +16441 12599 +13296 10721 +13230 11973 +11996 10868 +14107 11638 +15012 11445 +14938 10800 +15741 12815 +14696 11973 +14679 12889 +11775 10685 +12779 11492 +14863 10299 +11592 10721 +15628 10329 +14877 13461 +16738 16737 +14275 10815 +14831 11986 +14576 12889 +14908 11450 +15249 11697 +14112 13303 +14908 11884 +14488 13970 +15304 13495 +14307 12266 +13230 12451 +14771 11630 +14520 11076 +12119 11764 +14112 12390 +14635 10747 +15798 13894 +10599 10397 +14397 11066 +14771 14027 +14893 13931 +13198 11996 +14895 12719 +15153 12892 +14843 13871 +14747 11122 +15376 12264 +15167 11695 +13851 12915 +12544 11057 +11481 11278 +12235 10299 +15862 15293 +13244 12544 +15304 10257 +10693 10268 +14761 13495 +13450 10154 +13485 11233 +14633 11259 +15370 11057 +15412 13360 +14275 13303 +11563 10279 +11487 10551 +13485 13342 +14683 11042 +12953 12323 +12278 11066 +15412 15295 +14679 10721 +13495 12264 +13244 12217 +11845 11630 +13931 13495 +15411 10821 +15016 11109 +11278 10792 +11111 11049 +11503 11292 +15043 14783 +14679 10821 +13434 12769 +13244 10347 +14314 10466 +15356 14711 +11433 11267 +14814 14193 +13830 13109 +15502 14683 +16742 15412 +11695 11399 +15070 11481 +11540 10194 +14574 10821 +14685 10693 +10529 10434 +14130 12709 +13367 10590 +12197 11146 +14524 10994 +13796 10372 +14635 11267 +12278 10821 +14262 13232 +14107 10599 +14234 13873 +14004 11630 +15618 14487 +13342 11986 +13495 11057 +15389 14057 +12266 11884 +14492 12451 +14057 13931 +14027 13204 +11775 10466 +11588 10559 +15304 14635 +14685 14576 +14712 14100 +16584 11630 +11898 11066 +12055 10397 +12945 12191 +15282 12851 +14843 13342 +15841 15741 +15167 12222 +14685 11066 +15478 11550 +12339 12223 +11423 11057 +12737 10551 +16744 10693 +13487 12094 +13931 11292 +14794 13158 +11980 10590 +11421 10819 +11884 11869 +15581 11833 +11624 11259 +11618 10747 +14696 13487 +14869 13198 +12758 10299 +15153 14679 +13303 12264 +14222 12173 +14747 10800 +13958 13655 +13871 10279 +15016 13543 +14683 10562 +15554 13710 +14679 11719 +13211 11337 +14576 12191 +14747 13244 +16498 10990 +13587 11995 +11697 10257 +11697 11618 +13303 11278 +15249 12320 +14843 14027 +11267 10298 +11980 10466 +13796 12391 +14259 11728 +14696 13931 +14814 11618 +11630 10247 +13891 11618 +14952 14761 +14893 14193 +14314 12953 +14730 12448 +14492 11193 +14122 13577 +14635 14570 +11980 11540 +14125 10225 +14633 13487 +10185 10140 +12451 10994 +14893 10599 +11823 10747 +13450 12197 +13296 10800 +14814 11823 +14843 14683 +13871 11193 +10781 10590 +14273 12784 +13044 12574 +15502 10135 +12916 10154 +13422 12448 +14816 10313 +14057 12206 +10693 10140 +16091 15356 +13830 10821 +12478 11259 +14635 14321 +12348 11057 +13970 13196 +15919 11423 +12945 10559 +12266 12206 +14275 10397 +13931 11823 +11869 10011 +12892 12339 +13715 11336 +11252 10135 +14696 10990 +13034 12492 +12451 11423 +15016 10397 +15709 11630 +11617 10868 +14027 13232 +15356 14635 +15919 11618 +12945 12266 +14307 13796 +14112 12915 +13256 11066 +12807 11550 +13256 13244 +13767 10396 +13851 11775 +13158 10800 +13931 12390 +12191 10529 +14730 12264 +13541 10815 +13244 11921 +14869 12992 +14679 11721 +12217 11193 +11282 10778 +13342 11423 +13930 11041 +15570 15154 +11648 10590 +12451 11995 +13464 12884 +13256 11086 +14730 10654 +13303 12348 +10868 10721 +14108 12278 +13851 13158 +12896 11697 +13467 12184 +15070 10257 +11995 11697 +13891 13244 +14730 10849 +14120 11292 +15153 11995 +13541 11618 +14112 11298 +14853 14696 +13871 10299 +14683 12954 +12323 11267 +15887 14718 +12191 11109 +13487 13184 +14771 14683 +12779 10551 +15502 14122 +14831 12264 +15709 15245 +13495 11884 +14704 10990 +13930 12758 +12954 12339 +15412 10874 +14747 11066 +10551 10405 +11630 10416 +16133 14736 +16091 14831 +11259 10540 +13158 10590 +12784 10299 +12278 10279 +13487 10631 +14570 13232 +12892 11481 +12339 11637 +16091 12320 +10324 10170 +12173 10423 +12191 10792 +14512 11423 +12953 11423 +13487 10868 +15356 13930 +14816 12184 +14489 13964 +11638 11109 +16390 11555 +14747 10792 +14553 11995 +14112 13930 +15295 14082 +13933 11337 +13061 12055 +13930 12012 +12598 10819 +11980 11663 +13485 13303 +13795 12323 +12266 10590 +15249 12007 +14025 13577 +13930 12217 +15879 12197 +16091 15275 +14231 10721 +14262 10666 +13930 10268 +15061 11833 +13487 11067 +11697 10140 +13485 12953 +14492 12992 +15012 10299 +15304 10868 +15374 10747 +12951 11278 +12953 11995 +13296 11066 +11042 10713 +13851 12191 +14869 10599 +13809 11086 +16353 11764 +14231 12244 +13930 10558 +11996 10466 +13890 10559 +15167 10990 +14908 13052 +14831 12896 +15096 13891 +12819 10245 +13930 13422 +14730 11995 +14814 11612 +12007 11995 +10868 10821 +14107 11996 +11423 10529 +13115 10304 +14551 11280 +14843 11995 +11697 10599 +13422 11150 +14689 10543 +13495 10693 +11996 11278 +13303 11884 +14100 10994 +14112 13667 +11986 10590 +14805 13970 +14397 10654 +14307 10158 +11844 10304 +13851 13495 +13891 11193 +14908 11697 +15016 10647 +11445 10299 +12889 12197 +15295 13230 +13487 12896 +14730 13487 +14633 13931 +13296 10581 +11433 11057 +15323 11996 +13087 11487 +14843 13495 +15370 12007 +12917 11898 +12451 10627 +14321 12892 +15370 13290 +11423 11109 +13930 12441 +10785 10154 +14771 14489 +14869 14570 +14100 13158 +12945 10990 +13767 10551 +15370 11433 +15548 12197 +14831 12191 +14893 13830 +15023 14908 +13360 10208 +11292 10529 +15043 12339 +15304 10599 +15376 12173 +13714 12321 +13851 12896 +11278 10257 +14814 12896 +10693 10279 +11278 10781 +14107 10800 +12451 12339 +15070 12222 +12297 10661 +11638 10561 +16101 11884 +13930 11624 +15624 13485 +15016 10423 +12217 12191 +14524 13244 +13796 13198 +13303 11540 +15707 13002 +13341 11298 +15167 13781 +16101 10466 +14057 12889 +12266 11298 +15041 14869 +14027 11057 +11986 11641 +13495 12892 +14683 11973 +14685 12266 +13587 11259 +14193 10721 +14814 13244 +13930 13198 +14635 13851 +11066 10874 +14814 12007 +14908 12339 +12671 12294 +15370 10590 +11503 11298 +15741 11401 +15356 13303 +10990 10540 +11481 11259 +15370 10529 +13768 11633 +15085 13770 +14783 14761 +14802 10721 +14109 11292 +14489 13476 +12222 10540 +14730 11884 +13871 10140 +14259 10466 +14321 12451 +13871 11259 +15389 12280 +14321 14231 +14783 11637 +14120 11898 +15304 12397 +15153 11049 +14893 11140 +10397 10155 +14321 14122 +13796 13495 +15798 14130 +13342 10590 +11775 10590 +14843 12441 +14397 14288 +14524 11278 +14730 10469 +14761 12451 +11921 10620 +11618 10994 +11267 10397 +12953 12441 +11977 10781 +14489 13024 +13232 10874 +14843 10693 +14679 11433 +12278 11292 +15096 11775 +11840 10747 +14122 12278 +14107 11150 +14679 11996 +13930 13830 +15016 14869 +13264 10466 +11637 10590 +15370 13198 +13158 10821 +14761 13983 +14683 10140 +16588 10535 +13244 12223 +15049 14895 +10874 10423 +14524 14057 +14831 12574 +14831 14570 +14182 11675 +12451 10397 +14530 13930 +14893 13930 +12853 12184 +14805 11630 +13931 13930 +14512 12266 +12953 11140 +14100 12888 +11049 10466 +14683 13487 +12184 10245 +13806 10299 +12175 12171 +13341 13303 +15376 12917 +14492 10279 +12451 11259 +14856 11535 +13204 12889 +14709 12853 +15472 10783 +12884 11540 +11764 10721 +11977 10590 +11982 10868 +14082 11823 +13930 12992 +15376 13587 +15153 13198 +10693 10557 +14893 13158 +16091 10874 +15016 10967 +13485 13230 +13796 13105 +11921 10849 +13485 10171 +14683 13931 +12953 12206 +13543 13232 +11637 10140 +12266 11433 +12889 10561 +13934 12721 +13277 12191 +11630 10064 +15478 15085 +10775 10225 +14674 10136 +11637 11563 +11995 10540 +15167 13487 +15160 13196 +15153 10778 +12855 10241 +16336 14893 +14730 14397 +15016 11140 +13459 10792 +14098 10208 +15853 10551 +14730 11697 +14635 12323 +13487 11540 +12206 11193 +14711 10397 +13495 13303 +14771 13230 +12391 12191 +14843 12197 +12206 10713 +11618 11537 +12889 10849 +15991 12819 +14718 10304 +15153 14492 +10299 10165 +15370 10279 +15504 14474 +13796 11259 +15096 11898 +13290 13198 +14524 10529 +16091 11111 +15919 12217 +11931 11298 +15323 10397 +13487 11995 +14695 13341 +12191 10171 +14321 10397 +12339 10257 +15721 12822 +12889 11884 +14683 13891 +15502 11066 +15389 10819 +14627 14234 +14908 10821 +14843 10721 +11603 11292 +10466 10397 +13295 10559 +13342 12915 +14112 10676 +11996 11540 +14730 10747 +15862 10405 +10247 10225 +14570 13495 +14100 13487 +14524 11109 +13487 12197 +13873 12774 +12945 11337 +11391 10185 +15048 11563 +10800 10171 +12737 12321 +12896 11057 +14943 14107 +15020 12191 +13770 11227 +14524 12320 +12207 10643 +11884 10620 +15167 14944 +12884 11995 +13485 11298 +15448 14119 +11996 10397 +12917 11618 +14487 10590 +16581 11630 +13871 11292 +14828 14256 +12324 11618 +14485 13970 +16133 11267 +14992 14945 +14952 10559 +15709 13970 +14871 10666 +11066 10721 +10849 10643 +11603 10781 +13796 13303 +15304 10397 +12266 10868 +16725 10800 +15160 13676 +11764 10693 +11563 11122 +15016 13296 +12478 11433 +14122 11298 +14685 13788 +16698 11630 +15376 13296 +13418 13348 +14842 12896 +14783 11278 +12184 10926 +12087 11630 +14908 10721 +11337 11076 +14679 11259 +14761 14683 +14485 13806 +14747 10397 +14107 10423 +14307 12451 +14843 10158 +14893 12451 +11973 11298 +13034 12173 +15356 11433 +15618 13796 +15304 14057 +15478 15049 +14831 11165 +10917 10299 +14893 10930 +13342 10781 +14046 10299 +14895 10299 +14730 13029 +14986 11973 +14712 13796 +13029 11898 +15295 10298 +15601 14893 +13244 10408 +11423 10431 +14524 11697 +14893 12758 +13230 12223 +13863 12866 +15502 10821 +10529 10135 +12954 10423 +14530 10325 +12853 10299 +14683 12339 +12892 12451 +11298 10423 +11884 10194 +16091 15370 +11973 11057 +14004 11762 +14747 11298 +14524 10693 +11995 11252 +11057 10158 +15380 11540 +14711 12264 +15008 11003 +11123 10693 +14893 11697 +15370 13461 +14908 13796 +14679 10562 +14057 13796 +11995 11109 +12197 10721 +11624 11066 +14730 12265 +12953 10647 +10170 10042 +11298 10559 +13303 13198 +15356 14100 +13809 13495 +15370 13303 +11433 11109 +12574 10994 +14107 13891 +15282 14282 +15304 13032 +15278 13873 +11603 11433 +14771 14524 +16091 11003 +13342 11203 +14685 14122 +14730 13061 +11577 11042 +11973 11252 +14679 11637 +14814 13241 +12441 11298 +14696 14107 +14843 13176 +11721 10529 +11643 10640 +14182 13577 +13577 10397 +14771 14107 +13342 11721 +14275 11540 +13296 12278 +13768 10184 +13127 10559 +11057 10732 +12855 12779 +14570 14107 +12951 10599 +14712 10661 +15304 10713 +12451 11042 +11433 10529 +13674 13485 +11057 11027 +14685 13342 +14493 11702 +13930 11637 +13830 12982 +14869 11057 +14108 14082 +13342 12571 +15167 14539 +13342 11898 +11066 10868 +15532 13536 +14869 12758 +14107 12953 +14027 10874 +15295 11638 +14492 14082 +13211 11274 +12954 10299 +12266 11003 +14783 11298 +14107 10466 +12391 12265 +14057 10792 +14122 11433 +15096 14100 +15370 10792 +11511 10245 +11292 11057 +14695 13930 +12884 11298 +13891 10590 +14893 10715 +15167 14685 +11833 11630 +15412 12339 +14747 13873 +12441 11049 +13487 11066 +14524 12197 +15023 12892 +12087 11280 +16091 15323 +16133 13485 +14730 12953 +13433 11898 +16091 12280 +13495 13198 +12915 12217 +15554 12195 +15624 11697 +13871 13198 +12478 11111 +12119 10535 +10781 10171 +12348 10821 +15376 14814 +15412 12992 +15376 14262 +15167 10198 +13244 10721 +11618 11481 +14635 13796 +12719 10241 +13873 13841 +14474 12868 +15153 11433 +14747 11278 +11123 10800 +15412 10158 +13461 11049 +12223 10654 +13342 10994 +12173 10397 +10927 10540 +11298 11197 +14107 11193 +14730 12173 +14112 10980 +13198 11697 +14570 12953 +14234 11550 +12339 12278 +13958 10683 +16133 11042 +15249 13296 +14050 11259 +13127 11884 +14107 13871 +12264 11775 +14908 14831 +15624 14098 +14685 11267 +14057 10599 +14771 11540 +14027 10599 +13303 11898 +15167 13931 +15043 11540 +14761 10408 +14908 12278 +11298 10849 +12892 11884 +13232 11481 +14262 12892 +12544 11267 +15861 13767 +14893 12266 +15370 12892 +13204 11259 +14679 12191 +13109 12174 +14182 12932 +12197 10154 +11697 11433 +14027 10821 +13244 10781 +12094 11298 +13485 11259 +10754 10304 +11790 10965 +10372 10325 +15447 14150 +10693 10423 +14570 13891 +14539 13296 +12855 11952 +12945 11049 +14828 10299 +12108 11842 +13768 12214 +15016 10685 +10721 10136 +10868 10590 +14747 10279 +13277 11308 +16567 10299 +15016 13204 +11140 10721 +13495 12191 +11193 10781 +13204 10135 +10849 10627 +11066 11003 +15016 12375 +14627 11550 +13796 13061 +13587 11193 +12222 12197 +14475 13087 +14704 11066 +11292 11140 +14761 14574 +12953 10781 +14397 11697 +14814 12889 +14627 12855 +15794 11845 +13198 12391 +12892 12758 +13796 10171 +13221 11775 +14565 14197 +13232 11298 +13796 10466 +14831 11066 +14122 14082 +13931 11423 +15741 12847 +12892 11921 +12264 10849 +13930 13360 +13931 13577 +13541 13032 +14314 11884 +13342 10685 +13076 11996 +13964 10385 +10821 10785 +10713 10620 +14683 11563 +14635 11719 +13034 12549 +14321 12339 +12544 10298 +15478 12822 +14524 13930 +15154 13851 +15853 10245 +14893 14683 +14785 12197 +15504 10299 +15153 11193 +13377 10397 +11109 10615 +14656 14397 +12932 12478 +14893 12992 +13689 13303 +16091 13495 +14027 13796 +13341 10397 +13342 10990 +15370 13485 +14814 10562 +10577 10529 +12339 12197 +11859 10299 +14259 12173 +14761 10654 +11193 10647 +14307 11278 +15231 10204 +11259 11066 +12992 12953 +14869 14492 +15295 11823 +14520 13487 +14831 11996 +14771 13871 +15721 10416 +15376 14869 +12892 11259 +14098 10994 +14696 11057 +15048 13871 +12709 11555 +12917 11982 +16429 10540 +14524 11057 +14761 13871 +13230 11193 +13487 11823 +10721 10372 +13029 11193 +13196 12676 +13204 10792 +14696 14397 +13230 10792 +15709 10299 +13255 11076 +14869 14831 +14100 12889 +15376 12266 +11540 10466 +14716 14679 +15624 10676 +14679 11267 +12266 11150 +13244 10785 +13930 10994 +13587 13303 +11840 11267 +14122 13244 +15422 12134 +13158 10599 +14098 10581 +11415 10819 +14635 10792 +13461 12955 +15412 11111 +13296 11292 +14107 13796 +13851 11066 +14747 13342 +10627 10397 +14679 13830 +14635 11193 +16091 11292 +13930 11996 +11719 10466 +14783 10423 +15167 13541 +14397 13256 +11140 10693 +13599 12197 +14747 11884 +14576 14524 +15016 12339 +12278 10194 +15016 11111 +14107 11423 +14893 12478 +14730 11612 +15618 10397 +11986 11884 +14747 10529 +14986 11057 +11986 11938 +14679 14492 +13970 10139 +14696 11337 +12278 10792 +13296 11252 +15412 11049 +13768 11630 +13061 10469 +14307 13204 +11049 10216 +13540 11588 +12222 10135 +16339 11630 +12339 10693 +14082 11267 +13495 12391 +15167 10785 +11588 10666 +14771 10994 +10431 10397 +13158 11292 +15020 10693 +14633 11298 +14747 14533 +12441 11292 +15049 11845 +14627 11555 +16091 12055 +13930 11288 +12391 10721 +14814 14275 +14275 13342 +14679 13198 +12339 10185 +14119 12784 +14485 10640 +14576 12953 +13303 11376 +11057 10299 +12197 10589 +10721 10581 +14747 11540 +10994 10540 +15304 13303 +14685 11433 +14685 12917 +13367 11298 +15855 12916 +13303 12149 +16218 14635 +15295 10647 +14869 14512 +13829 13244 +14122 12892 +15370 11423 +15020 14689 +11057 10185 +13303 12266 +11057 10693 +12953 10821 +14696 14112 +15624 14122 +14831 10423 +15628 10693 +11308 10397 +12339 10208 +15381 11898 +13230 11433 +14100 13198 +15370 14761 +14683 13341 +13198 10747 +12855 12709 +13198 10194 +13158 12992 +13487 10620 +12945 12451 +15570 13244 +12195 10416 +12889 11721 +15323 14112 +15215 14582 +10540 10185 +14107 11259 +12945 12348 +13485 11203 +13296 11433 +13204 11042 +15293 12853 +13796 13296 +13806 10139 +11986 11292 +14321 13360 +14761 11027 +15295 14656 +12892 12134 +14831 14321 +12173 10466 +10792 10647 +13342 12206 +11764 10613 +14843 12892 +12339 11109 +11996 10792 +14771 12217 +15376 10590 +14268 10241 +15016 14843 +14150 10874 +14843 14685 +15570 12544 +15478 10551 +14635 12478 +13341 12574 +15376 13342 +15016 14730 +11066 11042 +15016 12478 +14307 12953 +14771 10627 +12391 11996 +13230 10466 +13894 12719 +13029 12264 +15093 13461 +13003 11392 +12992 11259 +11049 10171 +14683 14100 +14771 10800 +12222 10535 +14908 10423 +15085 10416 +15282 11952 +14689 10279 +14831 11122 +12785 10170 +15070 11193 +12339 10529 +15478 10304 +14730 10185 +14570 11618 +12264 11193 +14679 10558 +15381 13487 +12206 10821 +14711 10257 +15016 13931 +15167 10821 +15167 13105 +14098 13296 +12191 11789 +14100 10857 +12389 11637 +12222 10821 +13894 10299 +10278 10170 +12129 10590 +12544 10466 +14027 12544 +13495 11140 +15709 10225 +11834 10325 +14112 12917 +13244 11637 +14831 11648 +15554 10304 +15412 10466 +11471 10590 +14524 13296 +11719 11193 +14307 11624 +13851 10136 +14307 12892 +11789 11775 +14709 13873 +11938 11013 +11612 10136 +14747 10135 +14122 12574 +11423 10994 +11057 10279 +12892 10397 +14288 10590 +14477 11588 +14100 10558 +14259 11995 +13891 11721 +11109 10849 +15016 11995 +13930 12451 +13061 12206 +14747 10849 +15304 12898 +12598 10747 +14122 12266 +14816 12807 +15472 10396 +14193 11618 +13931 11252 +14027 13851 +14696 14108 +16390 15406 +14574 13303 +13158 10849 +12841 10170 +11973 11140 +12191 11111 +15231 12523 +13433 11122 +14679 12758 +14814 11298 +11150 10599 +14831 12266 +14057 13232 +12917 11697 +13244 10874 +14843 14057 +15027 10868 +10775 10247 +11996 10257 +15023 12889 +12335 11587 +13398 13105 +14843 11193 +11563 11292 +13002 11431 +11278 10581 +11481 10693 +11041 10630 +12264 10299 +13796 13204 +11845 10754 +13434 11630 +11042 11027 +11630 10640 +15163 13198 +14761 12323 +12171 10204 +15412 12574 +12953 11278 +12191 10208 +13958 10800 +12264 10713 +14761 11637 +14109 11540 +13891 10561 +14635 13296 +12339 10990 +13244 13158 +14761 13277 +13796 12889 +12889 11233 +15160 10551 +13577 10994 +16091 11618 +14082 10874 +15548 10815 +15897 14869 +13495 10140 +13891 12436 +15070 12478 +12822 11630 +16429 12222 +11267 10994 +15370 12206 +14307 13244 +12478 10397 +12323 10397 +13232 12391 +13736 13667 +14107 10529 +10620 10558 +15919 11298 +12339 10557 +14685 14100 +14843 11884 +11618 11146 +11399 10661 +14112 11423 +13891 10397 +13629 10926 +12523 12079 +12003 10615 +14288 12264 +13342 10821 +11618 11337 +12807 10139 +13535 12197 +14576 10423 +13204 12478 +14112 12945 +15027 12953 +13377 10185 +13930 10849 +12884 10693 +13871 12197 +15618 14843 +12953 10693 +11833 10551 +12087 11844 +14730 10590 +15024 13029 +10849 10732 +10721 10540 +13796 12954 +10423 10397 +13891 11540 +14730 10529 +15295 10590 +13303 12397 +13796 10849 +11618 10732 +14524 10431 +15096 10792 +13520 13034 +11259 11150 +13931 10819 +11085 10140 +14905 14689 +14109 12889 +11214 10754 +15656 12197 +11973 11267 +15412 11066 +14275 11618 +11618 10158 +14321 13244 +12951 12451 +14689 11098 +13487 12217 +14635 10529 +14869 14794 +14771 10590 +15323 12574 +12478 11423 +13204 11140 +13109 12173 +13342 13232 +14730 11109 +14122 13485 +13398 10785 +13871 10559 +11834 11298 +14057 13117 +13422 11823 +15376 12954 +14843 10821 +14842 13459 +13795 11995 +12896 10423 +13891 11697 +14869 11092 +15096 11456 +12339 11603 +12211 10800 +11823 10155 +13303 12882 +13851 10821 +13198 11267 +13344 13342 +15045 13303 +14919 11336 +15370 14893 +13507 12197 +13487 11003 +12054 11193 +14307 11193 +14996 13398 +14685 12264 +10535 10171 +12769 12719 +13487 11292 +15154 11344 +15167 11827 +11823 10685 +14275 11996 +14771 12982 +14875 12197 +11267 10800 +14321 11278 +12638 12635 +10874 10431 +14819 10732 +15412 11267 +14492 10800 +14908 13244 +12173 11697 +13930 13486 +14457 10466 +14577 13851 +14107 12448 +12704 10299 +14570 11563 +13303 10431 +14193 10599 +13296 10423 +13232 11961 +14683 11921 +13369 11630 +13303 10540 +14831 13303 +14524 13931 +13930 11267 +14255 12478 +12191 11973 +14100 10785 +11921 10721 +16603 14477 +14282 12853 +15798 15282 +11630 11445 +12892 10279 +15096 14751 +11067 11066 +12278 11540 +13930 10821 +13851 13461 +14905 14898 +14761 14307 +12544 12397 +12191 10747 +14730 12206 +11898 11563 +14814 13871 +15304 14512 +11298 11057 +14730 10693 +14635 13297 +15785 14804 +14100 13461 +15919 11193 +14218 10299 +14576 12892 +13930 10158 +11973 11066 +13577 12945 +12945 10135 +13105 11066 +14492 10732 +15973 15458 +14057 11066 +10754 10640 +15389 12892 +14869 11648 +13871 11995 +15707 12652 +10994 10874 +10155 10136 +11834 10800 +13398 12222 +13061 11433 +13244 11423 +11484 10961 +13198 10693 +11423 11278 +14869 11618 +14252 10666 +12851 10405 +14730 14100 +12544 11423 +15167 11577 +14814 11193 +15153 11953 +14783 14730 +12266 11618 +15096 15016 +12954 11259 +11726 10590 +14814 11540 +11898 10141 +11445 11336 +12265 10154 +15885 15741 +13204 11537 +14574 11973 +14321 13796 +14709 10165 +15624 11278 +15049 10754 +13930 11884 +14057 12156 +14256 10299 +13198 10874 +14112 13495 +15370 10721 +11453 11259 +13987 12068 +14698 14236 +14574 12544 +12878 11996 +14307 11042 +12156 11292 +13796 10185 +10917 10245 +13871 12899 +13486 12889 +12173 10800 +13933 11057 +13796 11884 +15323 10216 +12915 11292 +14869 10540 +11587 11278 +14283 10800 +15376 10800 +12953 11921 +14771 13232 +15570 11982 +14648 12197 +14730 10194 +10434 10135 +12544 11193 +14893 14492 +15380 11292 +14893 11433 +14761 12280 +14150 12339 +13487 11648 +14492 12478 +15376 10630 +14805 13942 +13277 10185 +14576 13244 +15991 10926 +13232 11066 +14100 13796 +10423 10279 +11775 10620 +15096 11027 +14816 12719 +13485 12451 +14696 10721 +11637 10994 +11921 10590 +12441 12217 +13930 11193 +14112 11980 +14307 10216 +12323 10158 +14679 14635 +14648 10721 +10785 10397 +10243 10170 +14259 12264 +14492 11986 +16479 12391 +14761 10676 +10419 10397 +14738 10926 +12478 10135 +13046 12339 +10721 10693 +15843 14534 +11630 11214 +10747 10559 +12451 11953 +13495 10599 +14797 12523 +13930 12511 +15016 10800 +14492 12945 +15478 15245 +14092 11259 +14570 13296 +11630 11193 +13970 11388 +14987 14880 +10590 10140 +15412 10994 +14492 10599 +14524 11641 +14524 10821 +12945 10821 +13230 10821 +14679 11697 +13342 11618 +11986 11259 +14057 10800 +13151 10317 +15096 13485 +13930 12544 +11884 10268 +14880 10551 +11057 11042 +12945 12339 +13277 10781 +12945 11111 +14467 13024 +14524 13303 +13303 10781 +14553 10599 +11898 10469 +12992 10800 +14182 13541 +11996 10540 +14100 11728 +12889 12003 +14397 11827 +13485 10980 +14814 13495 +14877 14869 +15919 10529 +16498 14524 +12932 10721 +11267 10747 +15024 13930 +12191 10140 +13809 10821 +16133 11973 +12889 11140 +11193 10693 +12953 11603 +14633 13232 +11842 10154 +15024 14843 +14307 12007 +16722 14802 +14816 10299 +14234 12769 +11996 11986 +15024 12478 +13487 11337 +14893 10918 +13930 10713 +14683 14576 +11728 11577 +15096 10466 +13485 10408 +13296 12884 +11995 10792 +13485 12884 +13303 10599 +15085 10304 +12278 11267 +10620 10194 +14167 10245 +13232 12191 +13676 10304 +15700 12321 +10397 10208 +15853 10299 +14747 13127 +13930 11003 +14816 12087 +15356 14027 +14843 13487 +15304 14747 +13891 11057 +14856 11941 +15376 13930 +14771 10559 +15177 10559 +12708 10299 +14771 11433 +10996 10313 +13303 11834 +12278 11612 +12391 10257 +13303 12390 +13296 10540 +14100 10135 +12992 12264 +14771 11292 +15085 12195 +12266 10279 +11540 10599 +12451 11996 +11057 10423 +13930 12448 +11587 11076 +13196 12719 +14125 10775 +13485 11618 +14761 10529 +15016 13367 +12324 12266 +11423 11027 +15930 13763 +12173 12016 +13348 13198 +15304 13342 +11996 11140 +15370 14843 +14004 10466 +14057 10994 +11982 11540 +14100 12441 +14321 11003 +15370 11267 +13342 12889 +11725 11042 +14908 14635 +15167 11259 +12363 12127 +13296 12264 +14635 10140 +14275 10194 +13342 10424 +13704 12841 +14057 11267 +14730 11086 +13303 11503 +15412 10821 +15016 13796 +15370 11109 +11259 10529 +12315 10299 +11697 11292 +14027 10792 +14397 12451 +11563 11203 +13158 12448 +11859 11630 +14107 12264 +12478 10590 +14275 13232 +14027 11193 +14082 12945 +14576 14027 +10849 10713 +14893 14307 +14831 14100 +12339 11495 +10170 10030 +14100 11764 +13796 12217 +14457 12889 +13495 12917 +14013 11630 +14869 10257 +13796 11648 +14112 12339 +11603 10590 +14112 11259 +14893 10257 +15304 15249 +14843 14712 +14893 10713 +14761 10792 +12173 10821 +12266 11503 +13987 13535 +14761 14576 +11193 10721 +11109 10397 +13290 12264 +10821 10135 +13341 11123 +13244 10397 +14275 13796 +15741 14256 +14182 13987 +14057 12478 +10620 10559 +11423 10397 +12892 10558 +14321 11996 +12321 11511 +14282 11952 +14683 10559 +12896 12197 +12719 10313 +12945 11834 +13495 13200 +13232 11123 +14843 11996 +11762 10666 +15370 15304 +14893 11522 +11905 11066 +13851 11823 +14771 11098 +15295 10185 +14262 11376 +16091 13485 +14747 13264 +13341 10423 +15370 13495 +14689 10397 +14006 13344 +11646 11431 +15304 12206 +15027 12553 +14524 11995 +10994 10466 +12007 10540 +14321 12992 +15096 13198 +14635 13204 +15447 13487 +15016 14908 +12992 12190 +11630 10775 +11193 10172 +14685 13244 +14262 13796 +14761 10434 +11057 10540 +11624 10821 +11298 10581 +13930 11298 +12896 11259 +14689 14107 +15074 11603 +15167 14098 +15167 12494 +12878 11278 +15167 14778 +13342 11563 +12266 11638 +11122 10397 +13204 11433 +14893 12264 +13461 11421 +11336 10299 +10821 10647 +12448 11421 +12191 11884 +16091 14761 +14730 14193 +13003 10245 +15825 12992 +14122 10994 +11728 11456 +15412 14057 +14314 11764 +13342 11973 +13485 11193 +10551 10299 +14869 11603 +14576 12323 +16634 14802 +14771 11986 +14530 13830 +14492 14321 +13303 11537 +14193 13930 +12884 11618 +14082 12917 +14057 12278 +13422 11057 +12055 11618 +14288 11298 +12087 11555 +14696 11697 +11525 10466 +11630 10184 +14492 11027 +13495 12889 +14761 11003 +11986 11193 +14553 12197 +11233 10800 +11122 10466 +14730 12889 +16133 12953 +13139 12339 +13485 10685 +11721 10423 +11995 10693 +11278 11203 +13871 12878 +14570 11042 +14122 10800 +11721 11433 +11905 11563 +15380 12339 +12339 10874 +13930 13487 +13342 13105 +13891 13342 +13768 12615 +15339 11844 +14869 14252 +14107 12451 +14747 13232 +13303 11423 +11111 10868 +11884 11298 +11638 11298 +13894 12807 +11550 10304 +13931 12264 +14570 13930 +13297 10561 +14987 14493 +15096 15070 +12951 12544 +15581 10349 +13232 11764 +11123 10849 +14685 10800 +13930 13341 +13535 10535 +14730 10257 +15249 10397 +13577 11433 +12278 11150 +13367 11066 +14816 12676 +13485 12478 +13930 13667 +12574 10431 +14831 14679 +10994 10423 +12451 10562 +12244 10529 +13931 12323 +14711 12898 +11941 11535 +11123 10540 +14797 11997 +13487 12003 +15406 11555 +13198 12055 +15124 11630 +15295 12892 +13230 11697 +11563 10558 +16091 14711 +15861 14102 +15041 10800 +15293 14627 +15096 10821 +15919 12266 +11641 11298 +15167 15096 +14553 13487 +14960 12889 +14771 11996 +15481 10216 +13369 10551 +14831 11292 +11214 10783 +14570 10257 +12478 11278 +13342 11764 +14709 10396 +15370 14771 +13295 11423 +14698 12892 +14747 11423 +11433 10333 +12851 10551 +12323 11066 +15008 11699 +12807 11559 +12868 10184 +14057 10140 +14100 12574 +12953 11066 +13424 10800 +13830 10257 +15167 14524 +13894 11492 +12898 10158 +11066 10683 +13873 11388 +13369 12831 +14831 11267 +14831 14303 +16091 12397 +14730 12571 +12278 10397 +14553 10821 +11775 10868 +11098 10800 +13871 10800 +14986 13577 +13198 11292 +13230 13061 +16091 10540 +13890 11198 +12708 11630 +14747 11603 +14107 13296 +14679 11884 +15167 14908 +15709 15478 +14512 12441 +13485 10185 +12953 11638 +15579 13710 +15624 11298 +15012 14919 +11995 10529 +14908 10558 +14492 13930 +13398 10821 +11986 11898 +13061 11790 +12397 10257 +15257 11630 +14828 11997 +12264 10800 +14747 12892 +15249 13487 +14730 13151 +12884 11066 +12191 10693 +13495 13296 +10529 10423 +11977 10466 +14307 13303 +16346 15741 +14524 12544 +15570 10747 +12451 11495 +13851 11977 +14730 10146 +13577 11146 +14092 10529 +11637 11259 +11618 11423 +12223 10158 +14869 10299 +15422 13192 +14771 11109 +14893 12945 +13232 11067 +11697 10874 +11618 11042 +11728 10414 +11618 11278 +14057 11481 +12544 10423 +14314 13796 +16091 13461 +14100 10933 +14492 14057 +13930 12197 +15447 13495 +12953 10208 +11146 10990 +14107 14027 +13485 12339 +15380 11013 +15049 11941 +12478 11641 +13230 11618 +14893 11884 +14057 11259 +15096 10994 +16454 11764 +14524 11842 +12197 10540 +11049 10781 +15010 13485 +11637 10559 +11630 11555 +13795 12945 +14761 10581 +15618 13830 +13495 10647 +10590 10141 +14027 10529 +15370 14679 +14893 12191 +11540 10257 +15167 14122 +14771 11775 +14869 11540 +14747 14113 +13158 10279 +14570 10372 +12954 11066 +12953 11109 +15016 13577 +11447 11292 +15070 12266 +14771 11884 +14730 11066 +11618 10299 +11423 10693 +13377 11298 +13495 13342 +15304 15096 +15096 13341 +14869 13232 +13230 11292 +14100 11618 +12370 11630 +12191 10800 +15045 12173 +16722 16721 +11898 10466 +16133 13230 +12932 10581 +12915 11618 +15478 12615 +14747 13830 +15862 12779 +14730 11292 +12206 11292 +12441 10800 +13105 12947 +15570 13891 +14057 10466 +14683 11503 +12896 12339 +14273 12635 +12855 10551 +13303 11042 +11697 11042 +13367 13244 +12807 10416 +10247 10184 +13891 10599 +12855 12184 +12945 10257 +13851 10685 +11884 11233 +15618 15041 +13873 12235 +15070 11697 +15304 11624 +15376 13487 +15024 14100 +11898 10918 +11982 10397 +14197 11982 +14542 13930 +14470 11624 +13871 13303 +12478 11086 +15024 14307 +12953 11884 +15478 13806 +15370 13871 +14303 14107 +11697 10819 +12853 10405 +14816 11630 +12892 11049 +11867 11298 +14100 11140 +12892 12478 +14635 12391 +14986 13296 +13244 12892 +13829 10155 +13422 11146 +14108 11278 +14771 13485 +14814 14098 +12889 11996 +14747 13303 +10620 10466 +14674 11298 +12197 11697 +13851 13487 +15497 11057 +13232 10372 +11973 10868 +14122 12217 +11559 10551 +14100 10569 +13377 10140 +16091 11823 +14730 13495 +14457 10965 +11150 11049 +12339 12191 +15478 10754 +14804 10170 +11618 10792 +14747 11762 +12451 10731 +15167 10267 +14100 11884 +13256 11122 +11292 10299 +11845 10299 +15304 11921 +11643 11007 +15599 11630 +14397 14027 +14046 12294 +15096 11433 +15167 14802 +13277 11834 +12244 10815 +13485 12892 +13930 11471 +10994 10800 +11630 11098 +14524 11259 +11618 10408 +13341 12954 +14492 10423 +12266 11042 +12222 10721 +14730 14027 +13715 12784 +13461 11996 +15323 10693 +14574 12898 +11057 10721 +14050 10683 +11762 10559 +13244 10868 +13433 11233 +14122 13495 +14679 14321 +14986 10994 +14683 13244 +13369 10313 +13767 10754 +12391 11433 +15534 14730 +14716 11057 +12191 11066 +14679 14314 +13851 12007 +13487 10627 +13577 12264 +12544 10434 +15862 11952 +15502 15323 +14524 13204 +12748 12720 +14843 10792 +12954 10800 +15376 11986 +15016 13295 +14576 10874 +14107 12954 +11298 11292 +14122 11057 +14960 11433 +14512 11618 +11953 10868 +12003 11423 +11041 10372 +14843 11298 +15249 11995 +11828 11630 +14457 12266 +12402 12173 +13796 11252 +14771 12892 +14761 14730 +14397 10643 +11986 11699 +15096 10529 +10245 10170 +14771 10721 +12519 11447 +11697 10792 +12339 11641 +12197 11493 +13204 12191 +13244 12896 +14893 11002 +14182 13984 +11953 11617 +14908 10325 +12173 11292 +15016 12206 +14570 11233 +13487 11721 +11193 10434 +15310 10423 +14683 14307 +11298 10599 +12339 10559 +12892 10559 +16091 13198 +13487 12441 +13232 11721 +11898 11315 +15236 10299 +11267 11057 +13055 12652 +13459 11587 +14081 11399 +13303 10747 +13029 12892 +13930 11618 +12278 11423 +14747 11267 diff --git a/examples/struc2vec/model.py b/examples/struc2vec/model.py new file mode 100644 index 00000000..2ef393f7 --- /dev/null +++ b/examples/struc2vec/model.py @@ -0,0 +1,37 @@ +# Copyright (c) 2021 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import numpy as np +import paddle +import paddle.nn as nn + + +class MLPModel(nn.Layer): + def __init__(self, input_size, num_class): + super(MLPModel, self).__init__() + self.linear = paddle.nn.Linear(input_size, num_class) + + def forward(self, input_embedding): + logits = self.linear(input_embedding) + return logits + + +class CECrition(nn.Layer): + def __init__(self): + super(CECrition, self).__init__() + + def forward(self, logits, label): + loss = paddle.nn.functional.softmax_with_cross_entropy(logits, label) + loss = paddle.mean(loss) + return loss diff --git a/examples/struc2vec/requirements.txt b/examples/struc2vec/requirements.txt new file mode 100644 index 00000000..a3e7c50d --- /dev/null +++ b/examples/struc2vec/requirements.txt @@ -0,0 +1,3 @@ +gensim +pathos +fastdtw diff --git a/examples/struc2vec/train.py b/examples/struc2vec/train.py new file mode 100644 index 00000000..02711b31 --- /dev/null +++ b/examples/struc2vec/train.py @@ -0,0 +1,276 @@ +# Copyright (c) 2021 PaddlePaddle/PGL Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +import os +import argparse +import math +import random +import numpy as np +import paddle +from paddle.io import DataLoader +import pgl +from pgl.utils.logger import log +from data import EdgeDataset, StrucVecGraph, MLPDataset +from model import MLPModel, CECrition + + +def learning_embedding_from_struc2vec(args): + """ + Learning the word2vec from the random path + """ + from gensim.models import Word2Vec + from gensim.models.word2vec import LineSentence + struc_walks = LineSentence(args.tag + "_walk_path") + model = Word2Vec(struc_walks, size=args.w2v_emb_size, window=args.w2v_window_size, iter=args.w2v_epoch, \ + min_count=0, hs=1, sg=1, workers=5) + model.wv.save_word2vec_format(args.emb_file) + + +def generate_samples(args): + """ + Generate the samples from the embedding, use the struc2vec emebedding as feature + """ + if not os.path.exists(args.emb_file): + raise Exception( + "The embedding file is not exist, please generate the emebdding.") + if not os.path.exists(args.label_file + "_reindex"): + raise Exception( + "The label index file is not exist, please generate the embedding.") + emb_file = open(args.emb_file) + file_label_reindex = open(args.label_file + "_reindex") + label_dict = dict() + # Convert the node to id + for line in file_label_reindex: + items = line.strip("\n\r").split(" ") + try: + label_dict[int(items[0])] = int(items[1]) + except: + continue + + data_for_train_valid = [] + for line in emb_file: + items = line.strip("\n\r").split(" ") + if len(items) <= 2: + continue + index = int(items[0]) + label = int(label_dict[index]) + sample = [] + sample.append(index) + feature_emb = items[1:] + feature_emb = [float(feature) for feature in feature_emb] + sample.extend(feature_emb) + sample.append(label) + data_for_train_valid.append(sample) + return data_for_train_valid + + +def train(args): + """ + The train and valid function for the struc2vec + """ + # Generate the train/valid sample for the training + samples = generate_samples(args) + samples = np.array(samples) + samples = samples[samples[:, 0].argsort()] + sample_num = len(samples) + train_sample_num = int(0.8 * sample_num) + train_data = samples[:train_sample_num] + valid_data = samples[train_sample_num:] + train_dataset = MLPDataset(train_data) + valid_dataset = MLPDataset(valid_data) + + # Construct the model and optimizer + model = MLPModel(args.w2v_emb_size, args.num_class) + optimizer = paddle.optimizer.SGD(learning_rate=args.lr, + parameters=model.parameters(), + weight_decay=0.1) + + # Construct the loss and metric + crition = CECrition() + metric = paddle.metric.Accuracy() + + for epoch in range(0, args.epoch): + # Train the mlp model and calculate the accuracy + train_data_loader = DataLoader( + train_dataset, batch_size=args.batch_size, shuffle=True) + # Create the dataloader for the mlp task + valid_data_loader = DataLoader( + valid_dataset, batch_size=16, shuffle=False) + + metric.reset() + for i, (input_embedding, label) in enumerate(train_data_loader): + logits = model(input_embedding) + loss = crition(logits, label.unsqueeze(axis=1)) + loss.backward() + optimizer.step() + optimizer.clear_grad() + correct = metric.compute(logits, label) + metric.update(correct) + log.info("train process, the epoch:{}, the accuracy:{}".format( + epoch, metric.accumulate())) + + # Valid the mlp model and calucate the accuracy + with paddle.no_grad(): + metric.reset() + for i, (input_embedding, label) in enumerate(valid_data_loader): + logits = model(input_embedding) + loss = crition(logits, label.unsqueeze(axis=1)) + correct = metric.compute(logits, label) + metric.update(correct) + log.info("valid process, the epoch:{}, the accuracy:{}".format( + epoch, metric.accumulate())) + + +def main(args): + """ + The main fucntion to run the algorithm struc2vec + """ + if args.generate_emb: + # Construct the graph with the input file + log.info("generate the random walk path and node embedding.") + dataset = EdgeDataset( + undirected=args.undirected, data_dir=args.edge_file) + graph = StrucVecGraph(dataset.graph, dataset.nodes, args.tag, + args.opt1, args.opt2, args.opt3, args.depth, + args.num_walks, args.walk_depth) + + # Calclute the node similarity by the struc2vec algorithm + graph.output_degree_with_depth(args.depth, args.opt1) + graph.calc_distances_between_nodes() + graph.normlization_layer_weight() + + # Random walk by the node similarity + graph.random_walk_structual_sim() + learning_embedding_from_struc2vec(args) + file_label = open(args.label_file) + file_label_reindex = open(args.label_file + "_reindex", "w") + for line in file_label: + items = line.strip("\n\r").split(" ") + try: + items = [int(item) for item in items] + except: + continue + if items[0] not in dataset.node_dict: + continue + reindex = dataset.node_dict[items[0]] + file_label_reindex.write(str(reindex) + " " + str(items[1]) + "\n") + file_label_reindex.close() + + if args.do_train: + train(args) + + +if __name__ == "__main__": + parser = argparse.ArgumentParser(description='struc2vec') + parser.add_argument( + "--edge_file", + type=str, + default="", + required=True, + help="The edge file for the graph.") + parser.add_argument( + "--label_file", + type=str, + default="", + required=True, + help="The label file for the label of graph node.") + parser.add_argument( + "--emb_file", + type=str, + default="w2v_emb", + help="The file name for the word2vec result.") + parser.add_argument( + "--batch_size", + type=int, + default=64, + help="The batch_size for training.") + parser.add_argument( + "--undirected", + type=bool, + default=True, + help="Is a undirected graph if set True.") + parser.add_argument( + "--depth", + type=int, + default=8, + help="The layer len for the struc2vec.") + parser.add_argument( + "--num_walks", + type=int, + default=10, + help="The walk len for the random walk.") + parser.add_argument( + "--walk_depth", + type=int, + default=80, + help="The walk depth for the random walk.") + parser.add_argument( + "--opt1", + type=bool, + default=False, + help="The optimize flag for reducing time cost.") + parser.add_argument( + "--opt2", + type=bool, + default=False, + help="The optimize flag for reducing time cost.") + parser.add_argument( + "--opt3", + type=bool, + default=False, + help="The optimize flag for reducing time cost.") + parser.add_argument( + "--w2v_emb_size", + type=int, + default=128, + help="The embedding size for the word2vec.") + parser.add_argument( + "--w2v_window_size", + type=int, + default=10, + help="The window size for the word2vec.") + parser.add_argument( + "--w2v_epoch", + type=int, + default=5, + help="The training epoch for the word2vec.") + parser.add_argument( + "--generate_emb", + type=bool, + default=False, + help="The flag for generating the embedding.") + parser.add_argument( + "--do_train", + type=bool, + default=False, + help="The flag for traing the classifier with embedding.") + parser.add_argument( + "--lr", + type=float, + default=1e-1, + help="The learning_rate for the classifier.") + parser.add_argument( + "--num_class", + type=int, + default=4, + help="The number of train data label.") + parser.add_argument( + "--epoch", type=int, default=20, help="The epoch for the classifier.") + parser.add_argument( + "--tag", + type=str, + default="struc2vec", + help="The prefix name for the embedding file.") + + args = parser.parse_args() + main(args) diff --git a/pgl/sampling/custom.py b/pgl/sampling/custom.py index 5dfd6b99..93f5e1c9 100644 --- a/pgl/sampling/custom.py +++ b/pgl/sampling/custom.py @@ -17,7 +17,24 @@ from pgl.graph import Graph __all__ = [] -__all__.append("subgraph") +__all__.extend(["alias_sample", "subgraph"]) + + +def alias_sample(size, alias, events): + """Implement of alias sample. + Args: + size: Output shape. + alias: The alias table build by `alias_sample_build_table`. + events: The events table build by `alias_sample_build_table`. + Return: + samples: The generated random samples. + """ + rand_num = np.random.uniform(0.0, len(alias), size) + idx = rand_num.astype("int64") + uni = rand_num - idx + flags = (uni >= alias[idx]) + idx[flags] = events[idx][flags] + return idx def subgraph(graph,