├── run_exact.sh ├── supplementary.pdf ├── run_approx_ver1.sh ├── run_approx_ver2.sh ├── run_exact_par.sh ├── run_approx_ver2_memory.sh ├── run_approx_ver2_par.sh ├── motif_id.cpp ├── read_data.cpp ├── README.md ├── main_exact.cpp ├── main_approx_ver1.cpp ├── main_approx_ver2.cpp ├── main_exact_par.cpp ├── main_approx_ver2_par.cpp ├── main_approx_ver2_memory.cpp ├── LICENSE.txt └── dblp_graph.txt /run_exact.sh: -------------------------------------------------------------------------------- 1 | g++ -O3 -std=c++11 main_exact.cpp -o exact; 2 | ./exact; 3 | rm exact; 4 | -------------------------------------------------------------------------------- /supplementary.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geon0325/MoCHy/HEAD/supplementary.pdf -------------------------------------------------------------------------------- /run_approx_ver1.sh: -------------------------------------------------------------------------------- 1 | g++ -O3 -std=c++11 main_approx_ver1.cpp -o approx_ver1; 2 | ./approx_ver1 1500; 3 | rm approx_ver1; 4 | -------------------------------------------------------------------------------- /run_approx_ver2.sh: -------------------------------------------------------------------------------- 1 | g++ -O3 -std=c++11 main_approx_ver2.cpp -o approx_ver2; 2 | ./approx_ver2 10000; 3 | rm approx_ver2; 4 | -------------------------------------------------------------------------------- /run_exact_par.sh: -------------------------------------------------------------------------------- 1 | g++ -O3 -std=c++11 -lgomp -fopenmp main_exact_par.cpp -o exact_par; 2 | ./exact_par 4; 3 | rm exact_par; 4 | -------------------------------------------------------------------------------- /run_approx_ver2_memory.sh: -------------------------------------------------------------------------------- 1 | g++ -O3 -std=c++11 main_approx_ver2_memory.cpp -o approx_ver2_memory; 2 | ./approx_ver2_memory 10000 0.01; 3 | rm approx_ver2_memory; 4 | -------------------------------------------------------------------------------- /run_approx_ver2_par.sh: -------------------------------------------------------------------------------- 1 | g++ -O3 -std=c++11 -lgomp -fopenmp main_approx_ver2_par.cpp -o approx_ver2_par; 2 | ./approx_ver2_par 10000 4; 3 | rm approx_ver2_par; 4 | -------------------------------------------------------------------------------- /motif_id.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | int id_to_index[128] = { 6 | 0, 0, 0, 0, 0, 0, 0, 0, 7 | 0, 0, 0, 0, 0, 0, 0, 0, 8 | 0, 0, 0, 0, 0, 0, 0, 0, 9 | 21, 23, 22, 24, 23, 25, 24, 26, 10 | 0, 0, 0, 0, 0, 0, 0, 0, 11 | 21, 22, 23, 24, 23, 24, 25, 26, 12 | 21, 23, 23, 25, 22, 24, 24, 26, 13 | 27, 28, 28, 29, 28, 29, 29, 30, 14 | 1, 2, 2, 3, 2, 3, 3, 4, 15 | 5, 6, 6, 8, 7, 9, 9, 10, 16 | 5, 7, 6, 9, 6, 9, 8, 10, 17 | 11, 13, 12, 14, 13, 15, 14, 16, 18 | 5, 6, 7, 9, 6, 8, 9, 10, 19 | 11, 12, 13, 14, 13, 14, 15, 16, 20 | 11, 13, 13, 15, 12, 14, 14, 16, 21 | 17, 18, 18, 19, 18, 19, 19, 20 22 | }; 23 | 24 | int get_motif_index_new(int deg_a, int deg_b, int deg_c, int C_ab, int C_bc, int C_ca, int g_abc){ 25 | int a = deg_a - (C_ab + C_ca) + g_abc; 26 | int b = deg_b - (C_bc + C_ab) + g_abc; 27 | int c = deg_c - (C_ca + C_bc) + g_abc; 28 | int d = C_ab - g_abc; 29 | int e = C_bc - g_abc; 30 | int f = C_ca - g_abc; 31 | int g = g_abc; 32 | int motif_id = (a > 0) + ((b > 0) << 1) + ((c > 0) << 2) + ((d > 0) << 3) + ((e > 0) << 4) + ((f > 0) << 5) + ((g > 0) << 6); 33 | return id_to_index[motif_id] - 1; 34 | } 35 | -------------------------------------------------------------------------------- /read_data.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | 5 | using namespace std; 6 | 7 | 8 | void read_data(string path, vector< vector >& node2hyperedge, vector< vector >& hyperedge2node, vector< unordered_set >& hyperedge2node_set) 9 | { 10 | ifstream graphFile(path.c_str()); 11 | string line; 12 | int num_hyperedges = 0; 13 | while (getline(graphFile, line)) 14 | { 15 | size_t pos = 0; 16 | unordered_set tokens_set; 17 | vector tokens; 18 | bool EOL = false; 19 | int idx; 20 | while (!EOL) 21 | { 22 | int pos = line.find(","); 23 | if(pos == string::npos){ 24 | pos = line.size(); 25 | EOL = true; 26 | idx = stoi(line); 27 | }else{ 28 | idx = stoi(line.substr(0, pos)); 29 | line.erase(0, pos + 1); 30 | } 31 | while(idx >= node2hyperedge.size()){ 32 | node2hyperedge.push_back(vector()); 33 | } 34 | if(node2hyperedge[idx].empty() || node2hyperedge[idx].back() != num_hyperedges){ 35 | node2hyperedge[idx].push_back(num_hyperedges); 36 | tokens.push_back(idx); 37 | tokens_set.insert(idx); 38 | } 39 | } 40 | hyperedge2node.push_back(tokens); 41 | hyperedge2node_set.push_back(tokens_set); 42 | num_hyperedges++; 43 | } 44 | graphFile.close(); 45 | } 46 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Hypergraph Motifs: Concepts, Algorithms, and Discoveries 2 | Source code for the paper [Hypergraph Motifs: Concepts, Algorithms, and Discoveries](https://arxiv.org/abs/2003.01853), Geon Lee, Jihoon Ko, Kijung Shin, [VLDB 2020](https://vldb2020.org/). 3 | 4 | We propose **Hypergraph Motifs (h-motifs)**, whose occurrences capture local structural patterns of real-world hypergraphs. 5 | 6 | **H-motifs** describe connectivity patterns of three connected hyperedges with the following properties: 7 | * *Exhaustive*: h-motifs capture connectivity patterns of all possible three connected hyperedges 8 | * *Unique*: connectivity pattern of any three connected hyperedges is captured by exactly one h-motif 9 | * *Size Independent*: h-motifs capture connectivity patterns independently of the sizes of hyperedges 10 | 11 | **MoCHy** (**Mo**tif **C**ounting in **Hy**pergraphs) is a family of parallel algorithms for counting hypergraph motifs' instances. 12 | * *MoCHy-E (MoCHy Exact)* exactly counts the instances of each h-motif. 13 | * *MoCHy-A (MoCHy Approximate)*: approximately counts the instances of each h-motif. 14 | * The advanced approximated version *MoCHy-A+* is up to 25X more accurate than *MoCHy-A*, and it is up to 32X faster than *MoCHy-E*. 15 | 16 | ## Datasets 17 | * The sample dataset is available [here](https://gist.github.com/pszufe/02666497d2c138d1b2de5b7f67784d2b#sec_dblp). 18 | * The real-world datasets used in the paper are available [here](https://www.cs.cornell.edu/~arb/data/) or [here](http://dmlab.kaist.ac.kr/hmotif/). 19 | * In the paper, we used datasets with unique hyperedges, where duplicated hyperedges are removed. 20 | 21 | ## Input & Output Format 22 | * The input format should be lines of hyperedges, where each line represents the nodes contained in each hyperedge. 23 | * The index of the nodes should start from 0. 24 | * For example, with 3 hyperedges: {0, 1, 2}, {2, 3}, and {1, 3, 4, 5}, the input file should be: 25 | ``` 26 | 0,1,2 27 | 2,3 28 | 1,3,4,5 29 | ``` 30 | * The output of the code will be: 31 | ``` 32 | motif 1: 123 33 | motif 2: 22 34 | ... 35 | motif 26: 31 36 | ``` 37 | 38 | ## Running Demo 39 | You can run demo with the sample dataset (dblp_graph.txt). 40 | 1. To run **MoCHy-E**, type 'run_exact.sh'. 41 | 2. To run *parallelized* **MoCHy-E**, type 'run_exact_par.sh'. 42 | 3. To run **MoCHy-A**, type 'run_approx_ver1.sh'. 43 | 4. To run **MoCHy-A+**, type 'run_approx_ver2.sh'. 44 | 5. To run *parallelized* **MoCHy-A+**, type 'run_approx_ver2_par.sh'. 45 | 6. To run *memory-bounded* **MoCHy-A+**, type 'run_approx_ver2_memory.sh'. 46 | 47 | ## Terms and Conditions 48 | If you use this code as part of any published research, please acknowledge our VLDB 2020 paper. 49 | ``` 50 | @article{lee2020hypergraph, 51 | title={Hypergraph Motifs: Concepts, Algorithms, and Discoveries}, 52 | author={Lee, Geon and Ko, Jihoon and Shin, Kijung}, 53 | journal={Proceedings of the VLDB Endowment}, 54 | year={2020}, 55 | publisher={VLDB Endowment} 56 | } 57 | ``` 58 | 59 | ## Contact Information 60 | If you have any questions, please contact [Geon Lee (geonlee0325@kaist.ac.kr)](mailto:geonlee0325@kaist.ac.kr). 61 | -------------------------------------------------------------------------------- /main_exact.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | #include 10 | #include 11 | 12 | #include "read_data.cpp" 13 | #include "motif_id.cpp" 14 | 15 | using namespace std; 16 | 17 | inline long long convert_id(int hyperedge_a, int hyperedge_b){ 18 | return hyperedge_a * (1LL << 31) + hyperedge_b; 19 | } 20 | 21 | int main(int argc, char *argv[]) 22 | { 23 | clock_t start; 24 | clock_t run_start; 25 | int progress; 26 | 27 | string graphFile = "dblp_graph.txt"; 28 | 29 | // Read data 30 | start = clock(); 31 | vector< vector > node2hyperedge; 32 | vector< vector > hyperedge2node; 33 | vector< unordered_set > hyperedge2node_set; 34 | read_data(graphFile, node2hyperedge, hyperedge2node, hyperedge2node_set); 35 | 36 | int V = node2hyperedge.size(), E = hyperedge2node.size(); 37 | cout << "# of nodes: " << V << '\n'; 38 | cout << "# of hyperedges: " << E << '\n'; 39 | cout << "Reading data done: " 40 | << (double)(clock() - start) / CLOCKS_PER_SEC << " sec" << endl; 41 | cout << "------------------------------------------" << endl << endl; 42 | 43 | 44 | // Make adjacency list 45 | start = clock(); run_start = clock(); 46 | hyperedge2node.resize(E); hyperedge2node_set.resize(E); 47 | vector< vector > > hyperedge_adj; 48 | vector< unordered_map > hyperedge_inter; 49 | hyperedge_adj.resize(E); 50 | hyperedge_inter.resize(E); 51 | vector upd_time(E, -1LL); 52 | 53 | for (int hyperedge_a = 0; hyperedge_a < E; hyperedge_a++){ 54 | long long l_hyperedge_a = (long long)hyperedge_a; 55 | for (const int &node: hyperedge2node[hyperedge_a]){ 56 | for (const int &hyperedge_b: node2hyperedge[node]){ 57 | if (hyperedge_b == hyperedge_a) continue; 58 | if ((upd_time[hyperedge_b] >> 31) ^ hyperedge_a){ 59 | upd_time[hyperedge_b] = (l_hyperedge_a << 31) + (long long)hyperedge_adj[hyperedge_b].size(); 60 | hyperedge_adj[hyperedge_b].push_back({hyperedge_a, 0}); 61 | } 62 | hyperedge_adj[hyperedge_b][(int)(upd_time[hyperedge_b] & 0x7FFFFFFFLL)].second++; 63 | } 64 | } 65 | } 66 | 67 | for (int hyperedge_a = 0; hyperedge_a < E; hyperedge_a++){ 68 | int deg_a = hyperedge_adj[hyperedge_a].size(); 69 | hyperedge_inter[hyperedge_a].rehash(deg_a); 70 | for (int i = 0; i < deg_a; i++){ 71 | int hyperedge_b = hyperedge_adj[hyperedge_a][i].first; 72 | int C_ab = hyperedge_adj[hyperedge_a][i].second; 73 | hyperedge_inter[hyperedge_a].insert({hyperedge_b, C_ab}); 74 | } 75 | } 76 | 77 | cout << "Adjacency list construction done: " 78 | << (double)(clock() - start) / CLOCKS_PER_SEC << " sec" << endl; 79 | cout << "------------------------------------------" << endl << endl; 80 | 81 | 82 | // Exact hypergraph motif counting 83 | start = clock(); 84 | vector h_motif(30, 0); 85 | vector intersection(E, 0); 86 | std::fill(upd_time.begin(), upd_time.end(), -1LL); 87 | 88 | for(int hyperedge_a = 0; hyperedge_a < E; hyperedge_a++){ 89 | 90 | if (hyperedge_a % 10000 == 0) 91 | cout << "Hyperedge: " << hyperedge_a << " / " << E << endl; 92 | 93 | long long l_hyperedge_a = (long long)hyperedge_a; 94 | int size_a = (int)hyperedge2node[hyperedge_a].size(); 95 | int deg_a = (int)hyperedge_adj[hyperedge_a].size(); 96 | 97 | for (int i = 0; i < deg_a; i++){ 98 | int hyperedge_b = hyperedge_adj[hyperedge_a][i].first, C_ab = hyperedge_adj[hyperedge_a][i].second; 99 | int size_b = (int)hyperedge2node[hyperedge_b].size(); 100 | int deg_b = (int)hyperedge_adj[hyperedge_b].size(); 101 | 102 | const auto &nodes = hyperedge2node_set[hyperedge_b]; auto it_end = nodes.end(); int cnt = 0; 103 | for (const int &node: hyperedge2node[hyperedge_a]){ if(nodes.find(node) != it_end) intersection[cnt++] = node;} 104 | 105 | for (int j = i + 1; j < deg_a; j++){ 106 | int hyperedge_c = hyperedge_adj[hyperedge_a][j].first, C_ca = hyperedge_adj[hyperedge_a][j].second; 107 | int size_c = (int)hyperedge2node[hyperedge_c].size(); 108 | int deg_c = (int)hyperedge_adj[hyperedge_c].size(); 109 | 110 | int C_bc = hyperedge_inter[hyperedge_b][hyperedge_c]; 111 | if (C_bc){ 112 | if (hyperedge_a < hyperedge_b){ 113 | int g_abc = 0; 114 | const auto &nodes = hyperedge2node_set[hyperedge_c]; auto it_end = nodes.end(); 115 | for (int k = 0; k < C_ab; k++){ if(nodes.find(intersection[k]) != it_end) g_abc++;} 116 | int motif_index = get_motif_index_new(size_a, size_b, size_c, C_ab, C_bc, C_ca, g_abc); 117 | h_motif[motif_index]++; 118 | } 119 | } else { 120 | int motif_index = get_motif_index_new(size_a, size_b, size_c, C_ab, 0, C_ca, 0); 121 | h_motif[motif_index]++; 122 | } 123 | } 124 | 125 | } 126 | } 127 | 128 | double runtime = (double)(clock() - run_start) / CLOCKS_PER_SEC; 129 | 130 | int index = 0; 131 | for (int i = 0; i < 30; i++){ 132 | if (i == 0 || i == 1 || i == 4 || i == 6) continue; 133 | cout << fixed << "motif " << ++index << ": " << fixed << h_motif[i] << endl; 134 | } 135 | 136 | cout << "\nMotif counting: " 137 | << (double)(clock() - start) / CLOCKS_PER_SEC << " sec" << endl; 138 | cout << "Total runtime: " << runtime << endl; 139 | cout << "------------------------------------------" << endl << endl; 140 | 141 | node2hyperedge.clear(); 142 | hyperedge2node.clear(); 143 | hyperedge_adj.clear(); 144 | hyperedge_inter.clear(); 145 | 146 | return 0; 147 | } 148 | -------------------------------------------------------------------------------- /main_approx_ver1.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | #include 10 | #include 11 | 12 | #include "read_data.cpp" 13 | #include "motif_id.cpp" 14 | 15 | using namespace std; 16 | 17 | inline long long convert_id(int hyperedge_a, int hyperedge_b){ 18 | return hyperedge_a * (1LL << 31) + hyperedge_b; 19 | } 20 | 21 | int main(int argc, char *argv[]) 22 | { 23 | clock_t start; 24 | clock_t run_start; 25 | int progress; 26 | 27 | int sampling_size = stoi(argv[1]); 28 | 29 | string graphFile = "dblp_graph.txt"; 30 | 31 | cout << "Sampling size: " << sampling_size << endl << endl; 32 | 33 | cout << graphFile << "\n\n"; 34 | 35 | // Read data 36 | start = clock(); 37 | vector< vector > node2hyperedge; 38 | vector< vector > hyperedge2node; 39 | vector< unordered_set > hyperedge2node_set; 40 | read_data(graphFile, node2hyperedge, hyperedge2node, hyperedge2node_set); 41 | 42 | int V = node2hyperedge.size(), E = hyperedge2node.size(); 43 | cout << "# of nodes: " << V << '\n'; 44 | cout << "# of hyperedges: " << E << '\n'; 45 | cout << "Reading data done: " 46 | << (double)(clock() - start) / CLOCKS_PER_SEC << " sec" << endl; 47 | cout << "------------------------------------------" << endl << endl; 48 | 49 | 50 | // Adjacency list construction 51 | start = clock(); run_start = clock(); 52 | hyperedge2node.resize(E); 53 | hyperedge2node_set.resize(E); 54 | vector< vector< pair > > hyperedge_adj; 55 | vector< unordered_map > hyperedge_inter; 56 | hyperedge_adj.resize(E); 57 | hyperedge_inter.resize(E); 58 | vector upd_time(E, -1LL); 59 | 60 | for (int hyperedge_a = 0; hyperedge_a < E; hyperedge_a++){ 61 | long long l_hyperedge_a = (long long)hyperedge_a; 62 | for (const int &node: hyperedge2node[hyperedge_a]){ 63 | for (const int &hyperedge_b: node2hyperedge[node]){ 64 | if (hyperedge_b == hyperedge_a) continue; 65 | if ((upd_time[hyperedge_b] >> 31) ^ hyperedge_a){ 66 | upd_time[hyperedge_b] = (l_hyperedge_a << 31) + (long long)hyperedge_adj[hyperedge_b].size(); 67 | hyperedge_adj[hyperedge_b].push_back({hyperedge_a, 0}); 68 | } 69 | hyperedge_adj[hyperedge_b][(int)(upd_time[hyperedge_b] & 0x7FFFFFFFLL)].second++; 70 | } 71 | } 72 | } 73 | 74 | for (int hyperedge_a = 0; hyperedge_a < E; hyperedge_a++){ 75 | int deg_a = hyperedge_adj[hyperedge_a].size(); 76 | for (int i = 0; i < deg_a; i++){ 77 | int hyperedge_b = hyperedge_adj[hyperedge_a][i].first; 78 | int C_ab = hyperedge_adj[hyperedge_a][i].second; 79 | hyperedge_inter[hyperedge_a].insert({hyperedge_b, C_ab}); 80 | } 81 | } 82 | 83 | cout << "Adjacency list construction done: " 84 | << (double)(clock() - start) / CLOCKS_PER_SEC << " sec" << endl; 85 | cout << "------------------------------------------" << endl << endl; 86 | 87 | 88 | // Hyperedge sampling 89 | start = clock(); 90 | vector h_motif(30, 0); 91 | vector intersection(E, 0); 92 | std::fill(upd_time.begin(), upd_time.end(), -1LL); 93 | 94 | random_device rd; 95 | mt19937 gen(2020); 96 | uniform_int_distribution<> dist(0, ((int)hyperedge2node.size())-1); 97 | 98 | for (int sample = 0; sample < sampling_size; sample++){ 99 | if (sample % 1000 == 0) 100 | cout << "Sampling: " << sample << " / " << sampling_size << endl; 101 | 102 | int hyperedge_a = dist(gen); 103 | int size_a = hyperedge2node[hyperedge_a].size(); 104 | int deg_a = (int)hyperedge_adj[hyperedge_a].size(); 105 | 106 | for (int i = 0; i < deg_a; i++){ 107 | int hyperedge_b = hyperedge_adj[hyperedge_a][i].first, C_ab = hyperedge_adj[hyperedge_a][i].second; 108 | int size_b = hyperedge2node[hyperedge_b].size(); 109 | int deg_b = (int)hyperedge_adj[hyperedge_b].size(); 110 | 111 | long long ab_id = convert_id(hyperedge_a, hyperedge_b); 112 | upd_time[hyperedge_b] = ab_id; 113 | 114 | const auto &nodes = hyperedge2node_set[hyperedge_b]; auto it_end = nodes.end(); int cnt = 0; 115 | for (const int &node: hyperedge2node[hyperedge_a]){ if(nodes.find(node) != it_end) intersection[cnt++] = node;} 116 | 117 | for (int j = 0; j < deg_b; j++){ 118 | int hyperedge_c = hyperedge_adj[hyperedge_b][j].first, C_bc = hyperedge_adj[hyperedge_b][j].second; 119 | if (hyperedge_a == hyperedge_c || hyperedge_b == hyperedge_c) continue; 120 | upd_time[hyperedge_c] = ab_id; 121 | 122 | int size_c = hyperedge2node[hyperedge_c].size(); 123 | int C_ca = 0, g_abc = 0; 124 | const auto &nodes = hyperedge2node_set[hyperedge_c]; auto it_end = nodes.end(); 125 | C_ca = hyperedge_inter[hyperedge_a][hyperedge_c]; 126 | //for (const int &node: hyperedge2node[hyperedge_a]){ if(nodes.find(node) != it_end) C_ca++; } 127 | for (int k = 0; k < C_ab; k++){ if(nodes.find(intersection[k]) != it_end) g_abc++; } 128 | 129 | int motif_index = get_motif_index_new(size_a, size_b, size_c, C_ab, C_bc, C_ca, g_abc); 130 | if (C_ca) h_motif[motif_index] += (int)(hyperedge_b < hyperedge_c); 131 | else h_motif[motif_index] ++; 132 | } 133 | for (int j = i + 1; j < deg_a; j++){ 134 | int hyperedge_c = hyperedge_adj[hyperedge_a][j].first, C_ca = hyperedge_adj[hyperedge_a][j].second; 135 | if (hyperedge_a == hyperedge_c || hyperedge_b == hyperedge_c) continue; 136 | if(upd_time[hyperedge_c] == ab_id) continue; 137 | 138 | int size_c = hyperedge2node[hyperedge_c].size(); 139 | int C_bc = 0, g_abc = 0; 140 | int motif_index = get_motif_index_new(size_a, size_b, size_c, C_ab, C_bc, C_ca, g_abc); 141 | h_motif[motif_index]++; 142 | } 143 | } 144 | } 145 | 146 | int index = 0; 147 | vector h_motif_final(30, 0); 148 | for (int i = 0; i < 30; i++) 149 | { 150 | h_motif_final[i] = h_motif[i]; 151 | h_motif_final[i] *= (long double)E / (sampling_size); 152 | h_motif_final[i] /= 3; 153 | if (i == 0 || i == 1 || i == 4 || i == 6) continue; 154 | cout << "h-motif " << ++index << ": " << h_motif_final[i] << endl; 155 | } 156 | 157 | double runtime = (double)(clock() - run_start) / CLOCKS_PER_SEC; 158 | 159 | cout << "\nHypergraph motif counting done: " 160 | << (double)(clock() - start) / CLOCKS_PER_SEC << " sec" << endl; 161 | cout << "Total runtime: " << runtime << endl; 162 | cout << "-----------------------------------------" << endl << endl; 163 | node2hyperedge.clear(); 164 | hyperedge2node.clear(); 165 | 166 | return 0; 167 | } 168 | -------------------------------------------------------------------------------- /main_approx_ver2.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | #include 10 | #include 11 | #include 12 | 13 | #include "read_data.cpp" 14 | #include "motif_id.cpp" 15 | 16 | using namespace std; 17 | 18 | struct hyperwedge{ 19 | int a, b, C_ab; 20 | }; 21 | 22 | inline long long convert_id(int hyperedge_a, int hyperedge_b){ 23 | return hyperedge_a * (1LL << 31) + hyperedge_b; 24 | } 25 | 26 | int main(int argc, char *argv[]) 27 | { 28 | clock_t start; 29 | clock_t run_start; 30 | int progress; 31 | 32 | int sampling_size = stoi(argv[1]); 33 | 34 | string graphFile = "dblp_graph.txt"; 35 | 36 | cout << "Sampling size: " << sampling_size << endl << endl; 37 | 38 | // Read data 39 | start = clock(); 40 | vector< vector > node2hyperedge; 41 | vector< vector > hyperedge2node; 42 | vector< unordered_set > hyperedge2node_set; 43 | read_data(graphFile, node2hyperedge, hyperedge2node, hyperedge2node_set); 44 | 45 | int V = node2hyperedge.size(), E = hyperedge2node.size(); 46 | cout << "# of nodes: " << V << '\n'; 47 | cout << "# of hyperedges: " << E << '\n'; 48 | cout << "Reading data done: " 49 | << (double)(clock() - start) / CLOCKS_PER_SEC << " sec" << endl; 50 | cout << "------------------------------------------" << endl << endl; 51 | 52 | 53 | // Adjacency list construction 54 | start = clock(); run_start = clock(); 55 | hyperedge2node.resize(E); hyperedge2node_set.resize(E); 56 | vector< vector< pair > > hyperedge_adj; 57 | vector< unordered_map > hyperedge_inter; 58 | hyperedge_adj.resize(E); 59 | hyperedge_inter.resize(E); 60 | vector< hyperwedge > W; 61 | vector upd_time(E, -1LL); 62 | 63 | for(int hyperedge_a = 0; hyperedge_a < E; hyperedge_a++){ 64 | long long l_hyperedge_a = (long long)hyperedge_a; 65 | for(const int &node: hyperedge2node[hyperedge_a]){ 66 | for(const int &hyperedge_b: node2hyperedge[node]){ 67 | if(hyperedge_b == hyperedge_a) continue; 68 | if((upd_time[hyperedge_b] >> 31) ^ hyperedge_a){ 69 | upd_time[hyperedge_b] = (l_hyperedge_a << 31) + (long long)hyperedge_adj[hyperedge_b].size(); 70 | hyperedge_adj[hyperedge_b].push_back({hyperedge_a, 0}); 71 | } 72 | hyperedge_adj[hyperedge_b][(int)(upd_time[hyperedge_b] & 0x7FFFFFFFLL)].second++; 73 | } 74 | } 75 | } 76 | 77 | for (int hyperedge_a = 0; hyperedge_a < E; hyperedge_a++){ 78 | int deg_a = hyperedge_adj[hyperedge_a].size(); 79 | hyperedge_inter[hyperedge_a].rehash(deg_a); 80 | for (int i = 0; i < deg_a; i++){ 81 | int hyperedge_b = hyperedge_adj[hyperedge_a][i].first; 82 | int C_ab = hyperedge_adj[hyperedge_a][i].second; 83 | if (hyperedge_a < hyperedge_b) W.push_back(hyperwedge{hyperedge_a, hyperedge_b, C_ab}); 84 | hyperedge_inter[hyperedge_a].insert({hyperedge_b, C_ab}); 85 | } 86 | } 87 | 88 | cout << "# of hyperwedges: " << W.size() << "\n"; 89 | cout << "Adjacency list construction done: " 90 | << (double)(clock() - start) / CLOCKS_PER_SEC << " sec" << endl; 91 | cout << "------------------------------------------" << endl << endl; 92 | 93 | 94 | // h_motif counting via hyperwedge smapling 95 | start = clock(); 96 | vector h_motif(30, 0); 97 | vector intersection(E, 0); 98 | std::fill(upd_time.begin(), upd_time.end(), -1LL); 99 | 100 | random_device rd; 101 | mt19937 gen(2020); 102 | uniform_int_distribution<> dist(0, ((int)W.size())-1); 103 | 104 | for (int sample = 0; sample < sampling_size; sample++){ 105 | if (sample % 100000 == 0) 106 | cout << "Sampling: " << sample << " / " << sampling_size << endl; 107 | 108 | int sample_index = dist(gen); 109 | int hyperedge_a = W[sample_index].a; 110 | int hyperedge_b = W[sample_index].b; 111 | int C_ab = W[sample_index].C_ab; 112 | 113 | int size_a = (int)hyperedge2node[hyperedge_a].size(); 114 | int size_b = (int)hyperedge2node[hyperedge_b].size(); 115 | int deg_a = (int)hyperedge_adj[hyperedge_a].size(); 116 | int deg_b = (int)hyperedge_adj[hyperedge_b].size(); 117 | 118 | upd_time[hyperedge_a] = upd_time[hyperedge_b] = sample; 119 | 120 | int min_ab = hyperedge_a, max_ab = hyperedge_b; 121 | if (size_a > size_b) min_ab = hyperedge_b, max_ab = hyperedge_a; 122 | const auto &nodes = hyperedge2node_set[max_ab]; auto it_end = nodes.end(); int cnt = 0; 123 | for (const int &node: hyperedge2node[min_ab]){ if(nodes.find(node) != it_end) intersection[cnt++] = node;} 124 | 125 | for (int i = 0; i < deg_b; i++){ 126 | int hyperedge_c = hyperedge_adj[hyperedge_b][i].first, C_bc = hyperedge_adj[hyperedge_b][i].second; 127 | if (upd_time[hyperedge_c] ^ sample){ 128 | upd_time[hyperedge_c] = sample; 129 | 130 | int size_c = (int)hyperedge2node[hyperedge_c].size(); 131 | int C_ca = 0, g_abc = 0; 132 | C_ca = hyperedge_inter[hyperedge_a][hyperedge_c]; 133 | const auto &nodes = hyperedge2node_set[hyperedge_c]; auto it_end = nodes.end(); 134 | for (int k = 0; k < C_ab; k++){ if(nodes.find(intersection[k]) != it_end) g_abc++; } 135 | 136 | int motif_index = get_motif_index_new(size_a, size_b, size_c, C_ab, C_bc, C_ca, g_abc); 137 | h_motif[motif_index]++; 138 | } 139 | } 140 | 141 | for (int i = 0; i < deg_a; i++){ 142 | int hyperedge_c = hyperedge_adj[hyperedge_a][i].first, C_ca = hyperedge_adj[hyperedge_a][i].second; 143 | if (upd_time[hyperedge_c] ^ sample){ 144 | upd_time[hyperedge_c] = sample; 145 | 146 | int size_c = (int)hyperedge2node[hyperedge_c].size(); 147 | int C_bc = 0, g_abc = 0; 148 | 149 | int motif_index = get_motif_index_new(size_a, size_b, size_c, C_ab, C_bc, C_ca, g_abc); 150 | h_motif[motif_index]++; 151 | } 152 | } 153 | } 154 | 155 | int index = 0; 156 | vector h_motif_final(30, 0); 157 | for (int i = 0; i < 30; i++){ 158 | h_motif_final[i] = (long double)h_motif[i]; 159 | h_motif_final[i] *= (long double)W.size() / sampling_size; 160 | if (20 <= i && i <= 25) 161 | h_motif_final[i] /= 2.0; 162 | else 163 | h_motif_final[i] /= 3.0; 164 | if (i == 0 || i == 1 || i == 4 || i == 6) continue; 165 | cout << "h-motif " << ++index << ": " << h_motif_final[i] << endl; 166 | } 167 | 168 | double runtime = (double)(clock() - run_start) / CLOCKS_PER_SEC; 169 | 170 | cout << "\nHypergraph motif counting done: " 171 | << (double)(clock() - start) / CLOCKS_PER_SEC << " sec" << endl; 172 | cout << "Total runtime: " << runtime << endl; 173 | cout << "-----------------------------------------" << endl << endl; 174 | 175 | W.clear(); 176 | node2hyperedge.clear(); 177 | hyperedge2node.clear(); 178 | hyperedge_adj.clear(); 179 | hyperedge_inter.clear(); 180 | 181 | return 0; 182 | } 183 | -------------------------------------------------------------------------------- /main_exact_par.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | #include 10 | #include 11 | #include 12 | 13 | #include "read_data.cpp" 14 | #include "motif_id.cpp" 15 | 16 | #include 17 | #include 18 | 19 | using namespace std; 20 | 21 | inline long long convert_id(int hyperedge_a, int hyperedge_b){ 22 | return hyperedge_a * (1LL << 31) + hyperedge_b; 23 | } 24 | 25 | int main(int argc, char *argv[]) 26 | { 27 | chrono::system_clock::time_point start; 28 | chrono::system_clock::time_point run_start; 29 | chrono::duration dur; 30 | int progress; 31 | 32 | int num_threads = stoi(argv[1]); 33 | 34 | omp_set_num_threads(num_threads); 35 | 36 | string graphFile = "dblp_graph.txt"; 37 | 38 | // Read data 39 | start = chrono::system_clock::now(); 40 | vector< vector > node2hyperedge; 41 | vector< vector > hyperedge2node; 42 | vector< unordered_set > hyperedge2node_set; 43 | read_data(graphFile, node2hyperedge, hyperedge2node, hyperedge2node_set); 44 | 45 | int V = node2hyperedge.size(), E = hyperedge2node.size(); 46 | cout << "# of nodes: " << V << '\n'; 47 | cout << "# of hyperedges: " << E << '\n'; 48 | dur = std::chrono::system_clock::now() - start; 49 | cout << "Reading data done: " 50 | << dur.count() << " sec" << endl; 51 | cout << "------------------------------------------" << endl << endl; 52 | 53 | 54 | // Make adjacency list 55 | start = chrono::system_clock::now(); 56 | run_start = chrono::system_clock::now(); 57 | hyperedge2node.resize(E); hyperedge2node_set.resize(E); 58 | vector< vector > > hyperedge_adj; 59 | vector< unordered_map > hyperedge_inter; 60 | hyperedge_adj.resize(E); 61 | hyperedge_inter.resize(E); 62 | vector< vector > upd_time(num_threads); 63 | for (int i = 0; i < num_threads; i++) 64 | upd_time[i].resize(E, -1LL); 65 | 66 | #pragma omp parallel for 67 | for (int hyperedge_a = 0; hyperedge_a < E; hyperedge_a++){ 68 | int tid = omp_get_thread_num(); 69 | int deg_a = 0; 70 | long long l_hyperedge_a = (long long)hyperedge_a; 71 | for (const int &node: hyperedge2node[hyperedge_a]){ 72 | for (const int &hyperedge_b: node2hyperedge[node]){ 73 | if (hyperedge_b == hyperedge_a) continue; 74 | if ((upd_time[tid][hyperedge_b] >> 31) ^ hyperedge_a){ 75 | upd_time[tid][hyperedge_b] = (l_hyperedge_a << 31) + deg_a; deg_a++; 76 | hyperedge_adj[hyperedge_a].push_back({hyperedge_b, 0}); 77 | } 78 | hyperedge_adj[hyperedge_a][(int)(upd_time[tid][hyperedge_b] & 0x7FFFFFFFLL)].second++; 79 | } 80 | } 81 | } 82 | 83 | #pragma omp parallel for 84 | for (int hyperedge_a = 0; hyperedge_a < E; hyperedge_a++){ 85 | sort(hyperedge_adj[hyperedge_a].begin(), hyperedge_adj[hyperedge_a].end()); 86 | int deg_a = hyperedge_adj[hyperedge_a].size(); 87 | hyperedge_inter[hyperedge_a].rehash(deg_a); 88 | for (int i = 0; i < deg_a; i++){ 89 | int hyperedge_b = hyperedge_adj[hyperedge_a][i].first; 90 | int C_ab = hyperedge_adj[hyperedge_a][i].second; 91 | hyperedge_inter[hyperedge_a].insert({hyperedge_b, C_ab}); 92 | } 93 | } 94 | 95 | dur = std::chrono::system_clock::now() - start; 96 | cout << "Adjacency list construction done: " 97 | << dur.count() << " sec" << endl; 98 | cout << "------------------------------------------" << endl << endl; 99 | 100 | 101 | // Exact hypergraph motif counting 102 | start = chrono::system_clock::now(); 103 | vector< vector > h_motif(num_threads); 104 | vector< vector > intersection(num_threads); 105 | 106 | for (int i = 0; i < num_threads; i++){ 107 | std::fill(upd_time[i].begin(), upd_time[i].end(), -1LL); 108 | intersection[i].resize(V); 109 | h_motif[i].resize(30, 0); 110 | } 111 | 112 | vector< std::atomic_flag > mutex(E); 113 | 114 | #pragma omp parallel for 115 | for(int hyperedge_a = 0; hyperedge_a < E; hyperedge_a++){ 116 | int tid = omp_get_thread_num(); 117 | 118 | long long l_hyperedge_a = (long long)hyperedge_a; 119 | int size_a = (int)hyperedge2node[hyperedge_a].size(); 120 | int deg_a = (int)hyperedge_adj[hyperedge_a].size(); 121 | 122 | for (int i = 0; i < deg_a; i++){ 123 | int hyperedge_b = hyperedge_adj[hyperedge_a][i].first, C_ab = hyperedge_adj[hyperedge_a][i].second; 124 | int size_b = (int)hyperedge2node[hyperedge_b].size(); 125 | int deg_b = (int)hyperedge_adj[hyperedge_b].size(); 126 | 127 | const auto &nodes = hyperedge2node_set[hyperedge_b]; auto it_end = nodes.end(); int cnt = 0; 128 | for (const int &node: hyperedge2node[hyperedge_a]){ if(nodes.find(node) != it_end) intersection[tid][cnt++] = node;} 129 | 130 | for (int j = i + 1; j < deg_a; j++){ 131 | int hyperedge_c = hyperedge_adj[hyperedge_a][j].first, C_ca = hyperedge_adj[hyperedge_a][j].second; 132 | int size_c = (int)hyperedge2node[hyperedge_c].size(); 133 | int deg_c = (int)hyperedge_adj[hyperedge_c].size(); 134 | 135 | int C_bc = 0; 136 | while (mutex[hyperedge_b].test_and_set(std::memory_order_acquire)); 137 | C_bc = hyperedge_inter[hyperedge_b][hyperedge_c]; 138 | mutex[hyperedge_b].clear(std::memory_order_release); 139 | //auto it = hyperedge_inter[hyperedge_b].find(hyperedge_c); 140 | //if (it == hyperedge_inter[hyperedge_b].end()) C_bc = 0; 141 | //else C_bc = (*it).second; 142 | if (C_bc){ 143 | if (hyperedge_a < hyperedge_b){ 144 | int g_abc = 0; 145 | const auto &nodes = hyperedge2node_set[hyperedge_c]; auto it_end = nodes.end(); 146 | for (int k = 0; k < C_ab; k++){ if(nodes.find(intersection[tid][k]) != it_end) g_abc++;} 147 | int motif_index = get_motif_index_new(size_a, size_b, size_c, C_ab, C_bc, C_ca, g_abc); 148 | h_motif[tid][motif_index]++; 149 | } 150 | } else { 151 | int motif_index = get_motif_index_new(size_a, size_b, size_c, C_ab, 0, C_ca, 0); 152 | h_motif[tid][motif_index]++; 153 | } 154 | } 155 | 156 | } 157 | } 158 | 159 | int index = 0; 160 | vector h_motif_final(30, 0); 161 | for (int i = 0; i < 30; i++){ 162 | for (int j = 0; j < num_threads; j++) h_motif_final[i] += h_motif[j][i]; 163 | if (i == 0 || i == 1 || i == 4 || i == 6) continue; 164 | cout << fixed << "motif " << ++index << ": " << fixed << h_motif_final[i] << endl; 165 | } 166 | 167 | dur = std::chrono::system_clock::now() - run_start; 168 | double runtime = (double)dur.count(); 169 | 170 | dur = std::chrono::system_clock::now() - start; 171 | cout << "\nMotif counting: " 172 | << dur.count() << " sec" << endl; 173 | cout << "Total runtime: " << runtime << endl; 174 | cout << "------------------------------------------" << endl << endl; 175 | 176 | node2hyperedge.clear(); 177 | hyperedge2node.clear(); 178 | hyperedge_adj.clear(); 179 | hyperedge_inter.clear(); 180 | 181 | return 0; 182 | } 183 | -------------------------------------------------------------------------------- /main_approx_ver2_par.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | #include 10 | #include 11 | #include 12 | 13 | #include "read_data.cpp" 14 | #include "motif_id.cpp" 15 | 16 | #include 17 | #include 18 | //#include 19 | 20 | using namespace std; 21 | 22 | struct hyperwedge{ 23 | int a, b, C_ab; 24 | }; 25 | 26 | inline long long convert_id(int hyperedge_a, int hyperedge_b){ 27 | return hyperedge_a * (1LL << 31) + hyperedge_b; 28 | } 29 | 30 | int main(int argc, char *argv[]) 31 | { 32 | chrono::system_clock::time_point start; 33 | chrono::system_clock::time_point run_start; 34 | chrono::duration dur; 35 | int progress; 36 | 37 | int sampling_size = stoi(argv[1]); 38 | int num_threads = stoi(argv[2]); 39 | 40 | omp_set_num_threads(num_threads); 41 | 42 | string graphFile = "dblp_graph.txt"; 43 | 44 | cout << "Sampling size: " << sampling_size << endl << endl; 45 | 46 | // Read data 47 | start = chrono::system_clock::now(); 48 | vector< vector > node2hyperedge; 49 | vector< vector > hyperedge2node; 50 | vector< unordered_set > hyperedge2node_set; 51 | read_data(graphFile, node2hyperedge, hyperedge2node, hyperedge2node_set); 52 | 53 | int V = node2hyperedge.size(), E = hyperedge2node.size(); 54 | cout << "# of nodes: " << V << '\n'; 55 | cout << "# of hyperedges: " << E << '\n'; 56 | dur = std::chrono::system_clock::now() - start; 57 | cout << "Reading data done: " 58 | << dur.count() << " sec" << endl; 59 | cout << "------------------------------------------" << endl << endl; 60 | 61 | // Adjacency list construction 62 | chrono::system_clock::time_point ss = chrono::system_clock::now(); 63 | start = chrono::system_clock::now(); 64 | run_start = chrono::system_clock::now(); 65 | hyperedge2node.resize(E); hyperedge2node_set.resize(E); 66 | vector< vector< pair > > hyperedge_adj; 67 | vector< unordered_map > hyperedge_inter; 68 | hyperedge_adj.resize(E); 69 | hyperedge_inter.resize(E); 70 | vector< vector > upd_time(num_threads); 71 | vector< hyperwedge > W; 72 | vector< long long > W_cnt(E + 1, 0LL); 73 | 74 | for(int i=0;i> 31) ^ hyperedge_a){ 86 | upd_time[tid][hyperedge_b] = (l_hyperedge_a << 31) + deg_a; deg_a++; 87 | hyperedge_adj[hyperedge_a].push_back({hyperedge_b, 0}); 88 | if (hyperedge_a < hyperedge_b) W_cnt[hyperedge_a + 1]++; 89 | } 90 | hyperedge_adj[hyperedge_a][(int)(upd_time[tid][hyperedge_b] & 0x7FFFFFFFLL)].second++; 91 | } 92 | } 93 | } 94 | for (int i = 0; i < E; i++) W_cnt[i + 1] += W_cnt[i]; 95 | W.resize(W_cnt[E]); 96 | 97 | #pragma omp parallel for 98 | for (int hyperedge_a = 0; hyperedge_a < E; hyperedge_a++){ 99 | int deg_a = hyperedge_adj[hyperedge_a].size(); 100 | hyperedge_inter[hyperedge_a].rehash(deg_a); 101 | int _cnt = 0; 102 | for (int i = 0; i < deg_a; i++){ 103 | int hyperedge_b = hyperedge_adj[hyperedge_a][i].first; 104 | int C_ab = hyperedge_adj[hyperedge_a][i].second; 105 | hyperedge_inter[hyperedge_a].insert({hyperedge_b, C_ab}); 106 | if (hyperedge_a < hyperedge_b) { 107 | W[W_cnt[hyperedge_a] + _cnt] = hyperwedge{hyperedge_a, hyperedge_b, C_ab}; 108 | _cnt++; 109 | } 110 | } 111 | } 112 | 113 | dur = std::chrono::system_clock::now() - start; 114 | cout << "# of hyperwedges: " << W.size() << "\n"; 115 | cout << "Adjacency list construction done: " 116 | << dur.count() << " sec" << endl; 117 | cout << "------------------------------------------" << endl << endl; 118 | 119 | 120 | // h_motif counting via hyperwedge smapling 121 | start = chrono::system_clock::now(); 122 | vector< vector > h_motif(num_threads); 123 | vector< vector > intersection(num_threads); 124 | 125 | mt19937 gen[num_threads]; 126 | uniform_int_distribution<> dist[num_threads]; 127 | for(int i=0;i(0, ((int)W.size())-1-1); 130 | std::fill(upd_time[i].begin(), upd_time[i].end(), -1LL); 131 | intersection[i].resize(V); 132 | h_motif[i].resize(30, 0); 133 | } 134 | vector< std::atomic_flag > mutex(E); 135 | #pragma omp parallel for 136 | for (int sample = 0; sample < sampling_size; sample++){ 137 | int tid = omp_get_thread_num(); 138 | 139 | int sample_index = dist[tid](gen[tid]); 140 | int hyperedge_a = W[sample_index].a; 141 | int hyperedge_b = W[sample_index].b; 142 | int C_ab = W[sample_index].C_ab; 143 | 144 | int size_a = (int)hyperedge2node[hyperedge_a].size(); 145 | int size_b = (int)hyperedge2node[hyperedge_b].size(); 146 | int deg_a = (int)hyperedge_adj[hyperedge_a].size(); 147 | int deg_b = (int)hyperedge_adj[hyperedge_b].size(); 148 | 149 | upd_time[tid][hyperedge_a] = upd_time[tid][hyperedge_b] = sample; 150 | 151 | int min_ab = hyperedge_a, max_ab = hyperedge_b; 152 | if (size_a > size_b) min_ab = hyperedge_b, max_ab = hyperedge_a; 153 | const auto &nodes = hyperedge2node_set[max_ab]; auto it_end = nodes.end(); int cnt = 0; 154 | for (const int &node: hyperedge2node[min_ab]){ if(nodes.find(node) != it_end) intersection[tid][cnt++] = node;} 155 | 156 | for (int i = 0; i < deg_b; i++){ 157 | int hyperedge_c = hyperedge_adj[hyperedge_b][i].first, C_bc = hyperedge_adj[hyperedge_b][i].second; 158 | if (upd_time[tid][hyperedge_c] ^ sample){ 159 | upd_time[tid][hyperedge_c] = sample; 160 | 161 | int size_c = (int)hyperedge2node[hyperedge_c].size(); 162 | int C_ca = 0, g_abc = 0; 163 | while(mutex[hyperedge_a].test_and_set(std::memory_order_acquire)); 164 | C_ca = hyperedge_inter[hyperedge_a][hyperedge_c]; 165 | mutex[hyperedge_a].clear(std::memory_order_release); 166 | const auto &nodes = hyperedge2node_set[hyperedge_c]; auto it_end = nodes.end(); 167 | for (int k = 0; k < C_ab; k++){ if(nodes.find(intersection[tid][k]) != it_end) g_abc++; } 168 | 169 | int motif_index = get_motif_index_new(size_a, size_b, size_c, C_ab, C_bc, C_ca, g_abc); 170 | h_motif[tid][motif_index]++; 171 | } 172 | } 173 | 174 | for (int i = 0; i < deg_a; i++){ 175 | int hyperedge_c = hyperedge_adj[hyperedge_a][i].first, C_ca = hyperedge_adj[hyperedge_a][i].second; 176 | if (upd_time[tid][hyperedge_c] ^ sample){ 177 | upd_time[tid][hyperedge_c] = sample; 178 | 179 | int size_c = (int)hyperedge2node[hyperedge_c].size(); 180 | int C_bc = 0, g_abc = 0; 181 | 182 | int motif_index = get_motif_index_new(size_a, size_b, size_c, C_ab, C_bc, C_ca, g_abc); 183 | h_motif[tid][motif_index]++; 184 | } 185 | } 186 | } 187 | 188 | int index = 0; 189 | vector h_motif_final(30, 0); 190 | for (int i = 0; i < 30; i++){ 191 | for(int j=0;j 2 | #include 3 | #include 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | #include 10 | 11 | #include "read_data.cpp" 12 | #include "motif_id.cpp" 13 | 14 | using namespace std; 15 | 16 | struct hyperwedge{ 17 | int a, b, C_ab; 18 | }; 19 | 20 | inline long long convert_id(int hyperedge_a, int hyperedge_b){ 21 | return hyperedge_a * (1LL << 31) + hyperedge_b; 22 | } 23 | 24 | long long edge_size_limit, edge_capacity_left; 25 | vector upd_time_proj; 26 | priority_queue< pair, vector< pair >, greater< pair > > pq; 27 | 28 | 29 | void get_adj(int hyperedge_a, int deg_a, vector< vector< pair > >& hyperedge_adj, vector< unordered_map >& hyperedge_inter, vector< vector >& node2hyperedge, vector< vector >& hyperedge2node){ 30 | int deg_a_curr = 0; 31 | hyperedge_adj[hyperedge_a].resize(deg_a); 32 | for (const int &node: hyperedge2node[hyperedge_a]){ 33 | for (const int &hyperedge_b: node2hyperedge[node]){ 34 | if (hyperedge_b == hyperedge_a) continue; 35 | if ((upd_time_proj[hyperedge_b] >> 31) ^ hyperedge_a){ 36 | upd_time_proj[hyperedge_b] = ((long long)hyperedge_a << 31) + deg_a_curr; 37 | hyperedge_adj[hyperedge_a][deg_a_curr++] = {hyperedge_b, 0}; 38 | }else if((int)(upd_time_proj[hyperedge_b] & 0x7FFFFFFFLL) == deg_a_curr){ 39 | upd_time_proj[hyperedge_b] = ((long long)hyperedge_a << 31) + deg_a_curr; 40 | hyperedge_adj[hyperedge_a][deg_a_curr++] = {hyperedge_b, 0}; 41 | } 42 | hyperedge_adj[hyperedge_a][(int)(upd_time_proj[hyperedge_b] & 0x7FFFFFFFLL)].second++; 43 | } 44 | } 45 | hyperedge_inter[hyperedge_a].rehash(deg_a); 46 | for (int i = 0; i < deg_a; i++){ 47 | int hyperedge_b = hyperedge_adj[hyperedge_a][i].first, C_ab = hyperedge_adj[hyperedge_a][i].second; 48 | hyperedge_inter[hyperedge_a].insert({hyperedge_b, C_ab}); 49 | } 50 | pq.push({deg_a, hyperedge_a}); 51 | } 52 | 53 | int main(int argc, char *argv[]) 54 | { 55 | clock_t start; 56 | clock_t run_start; 57 | int progress; 58 | 59 | long long sampling_size = stoi(argv[1]); 60 | long double mem_p = stod(argv[2]); 61 | 62 | string graphFile = "dblp_graph.txt"; 63 | 64 | cout << "Sampling size: " << sampling_size << endl << endl; 65 | 66 | // Read data 67 | start = clock(); 68 | vector< vector > node2hyperedge; 69 | vector< vector > hyperedge2node; 70 | vector< unordered_set > hyperedge2node_set; 71 | read_data(graphFile, node2hyperedge, hyperedge2node, hyperedge2node_set); 72 | 73 | int V = node2hyperedge.size(), E = hyperedge2node.size(); 74 | cout << "# of nodes: " << V << '\n'; 75 | cout << "# of hyperedges: " << E << '\n'; 76 | cout << "Reading data done: " 77 | << (double)(clock() - start) / CLOCKS_PER_SEC << " sec" << endl; 78 | cout << "------------------------------------------" << endl << endl; 79 | 80 | 81 | // h_motif counting via hyperwedge smapling 82 | start = clock(); run_start = clock(); 83 | vector searched(E, false); 84 | vector h_motif(30, 0); 85 | vector intersection(V, 0); 86 | vector< vector< pair > > hyperedge_adj; 87 | vector< unordered_map > hyperedge_inter; 88 | hyperedge_adj.resize(E); 89 | hyperedge_inter.resize(E); 90 | vector upd_time(E, -1); 91 | upd_time_proj.resize(E); 92 | std::fill(upd_time_proj.begin(), upd_time_proj.end(), -1LL); 93 | 94 | vector degs_sum(E + 1, 0); 95 | for(int hyperedge_a = 0; hyperedge_a < E; hyperedge_a++){ 96 | degs_sum[hyperedge_a + 1] = degs_sum[hyperedge_a]; 97 | long long l_hyperedge_a = (long long)hyperedge_a; 98 | upd_time[hyperedge_a] = hyperedge_a; 99 | for (const int &node: hyperedge2node[hyperedge_a]){ 100 | for (const int &hyperedge_b: node2hyperedge[node]){ 101 | if (upd_time[hyperedge_b] ^ hyperedge_a){ 102 | upd_time[hyperedge_b] = hyperedge_a; 103 | degs_sum[hyperedge_a + 1]++; 104 | } 105 | } 106 | } 107 | } 108 | edge_size_limit = (long long)((long double)degs_sum[E] * mem_p); edge_capacity_left = edge_size_limit; 109 | cout << edge_size_limit << endl; 110 | 111 | mt19937 gen(2020); 112 | uniform_real_distribution<> urd(0.0, 1.0); 113 | uniform_int_distribution dist(0, degs_sum[E] - 1); 114 | 115 | //sampling_size = degs_sum[E]; 116 | long long max_batch_size = sampling_size; 117 | 118 | vector sampled_idx(sampling_size, 0); 119 | vector< vector > intermediate_buckets; 120 | vector< vector > final_buckets; 121 | 122 | intermediate_buckets.resize(E); 123 | final_buckets.resize((degs_sum[E] + E - 1) / E); 124 | 125 | for(long long batch_start_idx = 0; batch_start_idx < sampling_size; batch_start_idx += max_batch_size){ 126 | std::fill(upd_time.begin(), upd_time.end(), -1LL); 127 | long long batch_size = min(max_batch_size, sampling_size - batch_start_idx); 128 | for (long long sample = 0; sample < batch_size; sample++){ 129 | //sampled_idx[sample] = sample + batch_start_idx; //dist(gen); 130 | sampled_idx[sample] = dist(gen); 131 | intermediate_buckets[sampled_idx[sample] % E].push_back(sampled_idx[sample]); 132 | } 133 | 134 | for (int i = 0; i < E; i++){ 135 | for(const long long &idx: intermediate_buckets[i]){ 136 | final_buckets[idx / E].push_back(idx); 137 | } 138 | intermediate_buckets[i].clear(); 139 | } 140 | 141 | int sampled_idx_pointer = 0; 142 | for(int i = 0; i < (int)final_buckets.size(); i++){ 143 | for(const long long &idx: final_buckets[i]){ 144 | sampled_idx[sampled_idx_pointer++] = idx; 145 | } 146 | final_buckets[i].clear(); 147 | } 148 | 149 | unordered_map sample_cnt; 150 | 151 | int hyperedge_a = -1; 152 | for (int sample = 0; sample < batch_size; sample++){ 153 | if (sample % 10000 == 0) 154 | cout << "Sampling: " << sample << " / " << sampling_size << endl; 155 | 156 | while(sampled_idx[sample] >= degs_sum[hyperedge_a + 1]){ hyperedge_a++; } 157 | 158 | int deg_a = (int)(degs_sum[hyperedge_a + 1] - degs_sum[hyperedge_a]), size_a = (int)hyperedge2node[hyperedge_a].size(); 159 | if(hyperedge_adj[hyperedge_a].size() ^ deg_a){ 160 | while(edge_capacity_left < deg_a){ 161 | pair target = pq.top(); pq.pop(); 162 | edge_capacity_left += target.first; 163 | hyperedge_adj[target.second].clear(); 164 | hyperedge_inter[target.second].clear(); 165 | } 166 | get_adj(hyperedge_a, deg_a, hyperedge_adj, hyperedge_inter, node2hyperedge, hyperedge2node); 167 | edge_capacity_left -= deg_a; 168 | } 169 | 170 | int hyperedge_b_idx = sampled_idx[sample] - degs_sum[hyperedge_a]; 171 | int hyperedge_b = hyperedge_adj[hyperedge_a][hyperedge_b_idx].first, C_ab = hyperedge_adj[hyperedge_a][hyperedge_b_idx].second; 172 | int deg_b = (int)(degs_sum[hyperedge_b + 1] - degs_sum[hyperedge_b]), size_b = (int)hyperedge2node[hyperedge_b].size(); 173 | upd_time[hyperedge_a] = upd_time[hyperedge_b] = sample; 174 | 175 | if(hyperedge_adj[hyperedge_b].size() ^ deg_b){ 176 | bool a_eliminated = false; 177 | while(edge_capacity_left < deg_b){ 178 | pair target = pq.top(); pq.pop(); 179 | if(target.second ^ hyperedge_a){ 180 | edge_capacity_left += target.first; 181 | hyperedge_adj[target.second].clear(); 182 | hyperedge_inter[target.second].clear(); 183 | }else{ 184 | a_eliminated = true; 185 | } 186 | } 187 | if(a_eliminated){ 188 | pq.push({deg_a, hyperedge_a}); 189 | } 190 | get_adj(hyperedge_b, deg_b, hyperedge_adj, hyperedge_inter, node2hyperedge, hyperedge2node); 191 | edge_capacity_left -= deg_b; 192 | } 193 | 194 | int min_ab = hyperedge_a, max_ab = hyperedge_b; 195 | if (size_a > size_b) min_ab = hyperedge_b, max_ab = hyperedge_a; 196 | const auto &nodes = hyperedge2node_set[max_ab]; auto it_end = nodes.end(); int cnt = 0; 197 | for (const int &node: hyperedge2node[min_ab]){ if(nodes.find(node) != it_end) intersection[cnt++] = node;} 198 | 199 | for (int i = 0; i < deg_b; i++){ 200 | int hyperedge_c = hyperedge_adj[hyperedge_b][i].first, C_bc = hyperedge_adj[hyperedge_b][i].second; 201 | if (upd_time[hyperedge_c] ^ sample){ 202 | upd_time[hyperedge_c] = sample; 203 | int size_c = (int)hyperedge2node[hyperedge_c].size(); 204 | int C_ca = 0, g_abc = 0; 205 | C_ca = hyperedge_inter[hyperedge_a][hyperedge_c]; 206 | const auto &nodes = hyperedge2node_set[hyperedge_c]; auto it_end = nodes.end(); 207 | for (int k = 0; k < C_ab; k++){ if(nodes.find(intersection[k]) != it_end) g_abc++; } 208 | int motif_index = get_motif_index_new(size_a, size_b, size_c, C_ab, C_bc, C_ca, g_abc); 209 | h_motif[motif_index]++; 210 | } 211 | } 212 | 213 | for (int i = 0; i < deg_a; i++){ 214 | int hyperedge_c = hyperedge_adj[hyperedge_a][i].first, C_ca = hyperedge_adj[hyperedge_a][i].second; 215 | if (upd_time[hyperedge_c] ^ sample){ 216 | upd_time[hyperedge_c] = sample; 217 | int size_c = (int)hyperedge2node[hyperedge_c].size(); 218 | int C_bc = 0, g_abc = 0; 219 | int motif_index = get_motif_index_new(size_a, size_b, size_c, C_ab, C_bc, C_ca, g_abc); 220 | h_motif[motif_index]++; 221 | } 222 | } 223 | } 224 | } 225 | 226 | int index = 0; 227 | vector h_motif_final(30, 0); 228 | for (int i = 0; i < 30; i++){ 229 | h_motif_final[i] = (long double)h_motif[i]; 230 | h_motif_final[i] *= (long double)degs_sum[E] / sampling_size; 231 | if (20 <= i && i <= 25) 232 | h_motif_final[i] /= 4.0; 233 | else 234 | h_motif_final[i] /= 6.0; 235 | if (i == 0 || i == 1 || i == 4 || i == 6) continue; 236 | cout << "h_motif " << ++index << ": " << h_motif_final[i] << endl; 237 | } 238 | 239 | double runtime = (double)(clock() - run_start) / CLOCKS_PER_SEC; 240 | 241 | cout << "\nHypergraph motif counting done: " 242 | << (double)(clock() - start) / CLOCKS_PER_SEC << " sec" << endl; 243 | cout << "Total runtime: " << runtime << endl; 244 | cout << "-----------------------------------------" << endl << endl; 245 | 246 | node2hyperedge.clear(); 247 | hyperedge2node.clear(); 248 | hyperedge2node_set.clear(); 249 | hyperedge_adj.clear(); 250 | hyperedge_inter.clear(); 251 | intersection.clear(); 252 | upd_time.clear(); 253 | sampled_idx.clear(); 254 | intermediate_buckets.clear(); 255 | final_buckets.clear(); 256 | 257 | return 0; 258 | } 259 | -------------------------------------------------------------------------------- /LICENSE.txt: -------------------------------------------------------------------------------- 1 | GNU GENERAL PUBLIC LICENSE 2 | Version 3, 29 June 2007 3 | 4 | Copyright (C) 2007 Free Software Foundation, Inc. 5 | Everyone is permitted to copy and distribute verbatim copies 6 | of this license document, but changing it is not allowed. 7 | 8 | Preamble 9 | 10 | The GNU General Public License is a free, copyleft license for 11 | software and other kinds of works. 12 | 13 | The licenses for most software and other practical works are designed 14 | to take away your freedom to share and change the works. By contrast, 15 | the GNU General Public License is intended to guarantee your freedom to 16 | share and change all versions of a program--to make sure it remains free 17 | software for all its users. We, the Free Software Foundation, use the 18 | GNU General Public License for most of our software; it applies also to 19 | any other work released this way by its authors. You can apply it to 20 | your programs, too. 21 | 22 | When we speak of free software, we are referring to freedom, not 23 | price. Our General Public Licenses are designed to make sure that you 24 | have the freedom to distribute copies of free software (and charge for 25 | them if you wish), that you receive source code or can get it if you 26 | want it, that you can change the software or use pieces of it in new 27 | free programs, and that you know you can do these things. 28 | 29 | To protect your rights, we need to prevent others from denying you 30 | these rights or asking you to surrender the rights. Therefore, you have 31 | certain responsibilities if you distribute copies of the software, or if 32 | you modify it: responsibilities to respect the freedom of others. 33 | 34 | For example, if you distribute copies of such a program, whether 35 | gratis or for a fee, you must pass on to the recipients the same 36 | freedoms that you received. You must make sure that they, too, receive 37 | or can get the source code. And you must show them these terms so they 38 | know their rights. 39 | 40 | Developers that use the GNU GPL protect your rights with two steps: 41 | (1) assert copyright on the software, and (2) offer you this License 42 | giving you legal permission to copy, distribute and/or modify it. 43 | 44 | For the developers' and authors' protection, the GPL clearly explains 45 | that there is no warranty for this free software. For both users' and 46 | authors' sake, the GPL requires that modified versions be marked as 47 | changed, so that their problems will not be attributed erroneously to 48 | authors of previous versions. 49 | 50 | Some devices are designed to deny users access to install or run 51 | modified versions of the software inside them, although the manufacturer 52 | can do so. This is fundamentally incompatible with the aim of 53 | protecting users' freedom to change the software. The systematic 54 | pattern of such abuse occurs in the area of products for individuals to 55 | use, which is precisely where it is most unacceptable. Therefore, we 56 | have designed this version of the GPL to prohibit the practice for those 57 | products. If such problems arise substantially in other domains, we 58 | stand ready to extend this provision to those domains in future versions 59 | of the GPL, as needed to protect the freedom of users. 60 | 61 | Finally, every program is threatened constantly by software patents. 62 | States should not allow patents to restrict development and use of 63 | software on general-purpose computers, but in those that do, we wish to 64 | avoid the special danger that patents applied to a free program could 65 | make it effectively proprietary. To prevent this, the GPL assures that 66 | patents cannot be used to render the program non-free. 67 | 68 | The precise terms and conditions for copying, distribution and 69 | modification follow. 70 | 71 | TERMS AND CONDITIONS 72 | 73 | 0. Definitions. 74 | 75 | "This License" refers to version 3 of the GNU General Public License. 76 | 77 | "Copyright" also means copyright-like laws that apply to other kinds of 78 | works, such as semiconductor masks. 79 | 80 | "The Program" refers to any copyrightable work licensed under this 81 | License. Each licensee is addressed as "you". "Licensees" and 82 | "recipients" may be individuals or organizations. 83 | 84 | To "modify" a work means to copy from or adapt all or part of the work 85 | in a fashion requiring copyright permission, other than the making of an 86 | exact copy. The resulting work is called a "modified version" of the 87 | earlier work or a work "based on" the earlier work. 88 | 89 | A "covered work" means either the unmodified Program or a work based 90 | on the Program. 91 | 92 | To "propagate" a work means to do anything with it that, without 93 | permission, would make you directly or secondarily liable for 94 | infringement under applicable copyright law, except executing it on a 95 | computer or modifying a private copy. Propagation includes copying, 96 | distribution (with or without modification), making available to the 97 | public, and in some countries other activities as well. 98 | 99 | To "convey" a work means any kind of propagation that enables other 100 | parties to make or receive copies. Mere interaction with a user through 101 | a computer network, with no transfer of a copy, is not conveying. 102 | 103 | An interactive user interface displays "Appropriate Legal Notices" 104 | to the extent that it includes a convenient and prominently visible 105 | feature that (1) displays an appropriate copyright notice, and (2) 106 | tells the user that there is no warranty for the work (except to the 107 | extent that warranties are provided), that licensees may convey the 108 | work under this License, and how to view a copy of this License. If 109 | the interface presents a list of user commands or options, such as a 110 | menu, a prominent item in the list meets this criterion. 111 | 112 | 1. Source Code. 113 | 114 | The "source code" for a work means the preferred form of the work 115 | for making modifications to it. "Object code" means any non-source 116 | form of a work. 117 | 118 | A "Standard Interface" means an interface that either is an official 119 | standard defined by a recognized standards body, or, in the case of 120 | interfaces specified for a particular programming language, one that 121 | is widely used among developers working in that language. 122 | 123 | The "System Libraries" of an executable work include anything, other 124 | than the work as a whole, that (a) is included in the normal form of 125 | packaging a Major Component, but which is not part of that Major 126 | Component, and (b) serves only to enable use of the work with that 127 | Major Component, or to implement a Standard Interface for which an 128 | implementation is available to the public in source code form. A 129 | "Major Component", in this context, means a major essential component 130 | (kernel, window system, and so on) of the specific operating system 131 | (if any) on which the executable work runs, or a compiler used to 132 | produce the work, or an object code interpreter used to run it. 133 | 134 | The "Corresponding Source" for a work in object code form means all 135 | the source code needed to generate, install, and (for an executable 136 | work) run the object code and to modify the work, including scripts to 137 | control those activities. However, it does not include the work's 138 | System Libraries, or general-purpose tools or generally available free 139 | programs which are used unmodified in performing those activities but 140 | which are not part of the work. For example, Corresponding Source 141 | includes interface definition files associated with source files for 142 | the work, and the source code for shared libraries and dynamically 143 | linked subprograms that the work is specifically designed to require, 144 | such as by intimate data communication or control flow between those 145 | subprograms and other parts of the work. 146 | 147 | The Corresponding Source need not include anything that users 148 | can regenerate automatically from other parts of the Corresponding 149 | Source. 150 | 151 | The Corresponding Source for a work in source code form is that 152 | same work. 153 | 154 | 2. Basic Permissions. 155 | 156 | All rights granted under this License are granted for the term of 157 | copyright on the Program, and are irrevocable provided the stated 158 | conditions are met. This License explicitly affirms your unlimited 159 | permission to run the unmodified Program. The output from running a 160 | covered work is covered by this License only if the output, given its 161 | content, constitutes a covered work. This License acknowledges your 162 | rights of fair use or other equivalent, as provided by copyright law. 163 | 164 | You may make, run and propagate covered works that you do not 165 | convey, without conditions so long as your license otherwise remains 166 | in force. You may convey covered works to others for the sole purpose 167 | of having them make modifications exclusively for you, or provide you 168 | with facilities for running those works, provided that you comply with 169 | the terms of this License in conveying all material for which you do 170 | not control copyright. Those thus making or running the covered works 171 | for you must do so exclusively on your behalf, under your direction 172 | and control, on terms that prohibit them from making any copies of 173 | your copyrighted material outside their relationship with you. 174 | 175 | Conveying under any other circumstances is permitted solely under 176 | the conditions stated below. Sublicensing is not allowed; section 10 177 | makes it unnecessary. 178 | 179 | 3. Protecting Users' Legal Rights From Anti-Circumvention Law. 180 | 181 | No covered work shall be deemed part of an effective technological 182 | measure under any applicable law fulfilling obligations under article 183 | 11 of the WIPO copyright treaty adopted on 20 December 1996, or 184 | similar laws prohibiting or restricting circumvention of such 185 | measures. 186 | 187 | When you convey a covered work, you waive any legal power to forbid 188 | circumvention of technological measures to the extent such circumvention 189 | is effected by exercising rights under this License with respect to 190 | the covered work, and you disclaim any intention to limit operation or 191 | modification of the work as a means of enforcing, against the work's 192 | users, your or third parties' legal rights to forbid circumvention of 193 | technological measures. 194 | 195 | 4. Conveying Verbatim Copies. 196 | 197 | You may convey verbatim copies of the Program's source code as you 198 | receive it, in any medium, provided that you conspicuously and 199 | appropriately publish on each copy an appropriate copyright notice; 200 | keep intact all notices stating that this License and any 201 | non-permissive terms added in accord with section 7 apply to the code; 202 | keep intact all notices of the absence of any warranty; and give all 203 | recipients a copy of this License along with the Program. 204 | 205 | You may charge any price or no price for each copy that you convey, 206 | and you may offer support or warranty protection for a fee. 207 | 208 | 5. Conveying Modified Source Versions. 209 | 210 | You may convey a work based on the Program, or the modifications to 211 | produce it from the Program, in the form of source code under the 212 | terms of section 4, provided that you also meet all of these conditions: 213 | 214 | a) The work must carry prominent notices stating that you modified 215 | it, and giving a relevant date. 216 | 217 | b) The work must carry prominent notices stating that it is 218 | released under this License and any conditions added under section 219 | 7. This requirement modifies the requirement in section 4 to 220 | "keep intact all notices". 221 | 222 | c) You must license the entire work, as a whole, under this 223 | License to anyone who comes into possession of a copy. This 224 | License will therefore apply, along with any applicable section 7 225 | additional terms, to the whole of the work, and all its parts, 226 | regardless of how they are packaged. This License gives no 227 | permission to license the work in any other way, but it does not 228 | invalidate such permission if you have separately received it. 229 | 230 | d) If the work has interactive user interfaces, each must display 231 | Appropriate Legal Notices; however, if the Program has interactive 232 | interfaces that do not display Appropriate Legal Notices, your 233 | work need not make them do so. 234 | 235 | A compilation of a covered work with other separate and independent 236 | works, which are not by their nature extensions of the covered work, 237 | and which are not combined with it such as to form a larger program, 238 | in or on a volume of a storage or distribution medium, is called an 239 | "aggregate" if the compilation and its resulting copyright are not 240 | used to limit the access or legal rights of the compilation's users 241 | beyond what the individual works permit. Inclusion of a covered work 242 | in an aggregate does not cause this License to apply to the other 243 | parts of the aggregate. 244 | 245 | 6. Conveying Non-Source Forms. 246 | 247 | You may convey a covered work in object code form under the terms 248 | of sections 4 and 5, provided that you also convey the 249 | machine-readable Corresponding Source under the terms of this License, 250 | in one of these ways: 251 | 252 | a) Convey the object code in, or embodied in, a physical product 253 | (including a physical distribution medium), accompanied by the 254 | Corresponding Source fixed on a durable physical medium 255 | customarily used for software interchange. 256 | 257 | b) Convey the object code in, or embodied in, a physical product 258 | (including a physical distribution medium), accompanied by a 259 | written offer, valid for at least three years and valid for as 260 | long as you offer spare parts or customer support for that product 261 | model, to give anyone who possesses the object code either (1) a 262 | copy of the Corresponding Source for all the software in the 263 | product that is covered by this License, on a durable physical 264 | medium customarily used for software interchange, for a price no 265 | more than your reasonable cost of physically performing this 266 | conveying of source, or (2) access to copy the 267 | Corresponding Source from a network server at no charge. 268 | 269 | c) Convey individual copies of the object code with a copy of the 270 | written offer to provide the Corresponding Source. This 271 | alternative is allowed only occasionally and noncommercially, and 272 | only if you received the object code with such an offer, in accord 273 | with subsection 6b. 274 | 275 | d) Convey the object code by offering access from a designated 276 | place (gratis or for a charge), and offer equivalent access to the 277 | Corresponding Source in the same way through the same place at no 278 | further charge. You need not require recipients to copy the 279 | Corresponding Source along with the object code. If the place to 280 | copy the object code is a network server, the Corresponding Source 281 | may be on a different server (operated by you or a third party) 282 | that supports equivalent copying facilities, provided you maintain 283 | clear directions next to the object code saying where to find the 284 | Corresponding Source. Regardless of what server hosts the 285 | Corresponding Source, you remain obligated to ensure that it is 286 | available for as long as needed to satisfy these requirements. 287 | 288 | e) Convey the object code using peer-to-peer transmission, provided 289 | you inform other peers where the object code and Corresponding 290 | Source of the work are being offered to the general public at no 291 | charge under subsection 6d. 292 | 293 | A separable portion of the object code, whose source code is excluded 294 | from the Corresponding Source as a System Library, need not be 295 | included in conveying the object code work. 296 | 297 | A "User Product" is either (1) a "consumer product", which means any 298 | tangible personal property which is normally used for personal, family, 299 | or household purposes, or (2) anything designed or sold for incorporation 300 | into a dwelling. In determining whether a product is a consumer product, 301 | doubtful cases shall be resolved in favor of coverage. For a particular 302 | product received by a particular user, "normally used" refers to a 303 | typical or common use of that class of product, regardless of the status 304 | of the particular user or of the way in which the particular user 305 | actually uses, or expects or is expected to use, the product. A product 306 | is a consumer product regardless of whether the product has substantial 307 | commercial, industrial or non-consumer uses, unless such uses represent 308 | the only significant mode of use of the product. 309 | 310 | "Installation Information" for a User Product means any methods, 311 | procedures, authorization keys, or other information required to install 312 | and execute modified versions of a covered work in that User Product from 313 | a modified version of its Corresponding Source. The information must 314 | suffice to ensure that the continued functioning of the modified object 315 | code is in no case prevented or interfered with solely because 316 | modification has been made. 317 | 318 | If you convey an object code work under this section in, or with, or 319 | specifically for use in, a User Product, and the conveying occurs as 320 | part of a transaction in which the right of possession and use of the 321 | User Product is transferred to the recipient in perpetuity or for a 322 | fixed term (regardless of how the transaction is characterized), the 323 | Corresponding Source conveyed under this section must be accompanied 324 | by the Installation Information. But this requirement does not apply 325 | if neither you nor any third party retains the ability to install 326 | modified object code on the User Product (for example, the work has 327 | been installed in ROM). 328 | 329 | The requirement to provide Installation Information does not include a 330 | requirement to continue to provide support service, warranty, or updates 331 | for a work that has been modified or installed by the recipient, or for 332 | the User Product in which it has been modified or installed. Access to a 333 | network may be denied when the modification itself materially and 334 | adversely affects the operation of the network or violates the rules and 335 | protocols for communication across the network. 336 | 337 | Corresponding Source conveyed, and Installation Information provided, 338 | in accord with this section must be in a format that is publicly 339 | documented (and with an implementation available to the public in 340 | source code form), and must require no special password or key for 341 | unpacking, reading or copying. 342 | 343 | 7. Additional Terms. 344 | 345 | "Additional permissions" are terms that supplement the terms of this 346 | License by making exceptions from one or more of its conditions. 347 | Additional permissions that are applicable to the entire Program shall 348 | be treated as though they were included in this License, to the extent 349 | that they are valid under applicable law. If additional permissions 350 | apply only to part of the Program, that part may be used separately 351 | under those permissions, but the entire Program remains governed by 352 | this License without regard to the additional permissions. 353 | 354 | When you convey a copy of a covered work, you may at your option 355 | remove any additional permissions from that copy, or from any part of 356 | it. (Additional permissions may be written to require their own 357 | removal in certain cases when you modify the work.) You may place 358 | additional permissions on material, added by you to a covered work, 359 | for which you have or can give appropriate copyright permission. 360 | 361 | Notwithstanding any other provision of this License, for material you 362 | add to a covered work, you may (if authorized by the copyright holders of 363 | that material) supplement the terms of this License with terms: 364 | 365 | a) Disclaiming warranty or limiting liability differently from the 366 | terms of sections 15 and 16 of this License; or 367 | 368 | b) Requiring preservation of specified reasonable legal notices or 369 | author attributions in that material or in the Appropriate Legal 370 | Notices displayed by works containing it; or 371 | 372 | c) Prohibiting misrepresentation of the origin of that material, or 373 | requiring that modified versions of such material be marked in 374 | reasonable ways as different from the original version; or 375 | 376 | d) Limiting the use for publicity purposes of names of licensors or 377 | authors of the material; or 378 | 379 | e) Declining to grant rights under trademark law for use of some 380 | trade names, trademarks, or service marks; or 381 | 382 | f) Requiring indemnification of licensors and authors of that 383 | material by anyone who conveys the material (or modified versions of 384 | it) with contractual assumptions of liability to the recipient, for 385 | any liability that these contractual assumptions directly impose on 386 | those licensors and authors. 387 | 388 | All other non-permissive additional terms are considered "further 389 | restrictions" within the meaning of section 10. If the Program as you 390 | received it, or any part of it, contains a notice stating that it is 391 | governed by this License along with a term that is a further 392 | restriction, you may remove that term. If a license document contains 393 | a further restriction but permits relicensing or conveying under this 394 | License, you may add to a covered work material governed by the terms 395 | of that license document, provided that the further restriction does 396 | not survive such relicensing or conveying. 397 | 398 | If you add terms to a covered work in accord with this section, you 399 | must place, in the relevant source files, a statement of the 400 | additional terms that apply to those files, or a notice indicating 401 | where to find the applicable terms. 402 | 403 | Additional terms, permissive or non-permissive, may be stated in the 404 | form of a separately written license, or stated as exceptions; 405 | the above requirements apply either way. 406 | 407 | 8. Termination. 408 | 409 | You may not propagate or modify a covered work except as expressly 410 | provided under this License. Any attempt otherwise to propagate or 411 | modify it is void, and will automatically terminate your rights under 412 | this License (including any patent licenses granted under the third 413 | paragraph of section 11). 414 | 415 | However, if you cease all violation of this License, then your 416 | license from a particular copyright holder is reinstated (a) 417 | provisionally, unless and until the copyright holder explicitly and 418 | finally terminates your license, and (b) permanently, if the copyright 419 | holder fails to notify you of the violation by some reasonable means 420 | prior to 60 days after the cessation. 421 | 422 | Moreover, your license from a particular copyright holder is 423 | reinstated permanently if the copyright holder notifies you of the 424 | violation by some reasonable means, this is the first time you have 425 | received notice of violation of this License (for any work) from that 426 | copyright holder, and you cure the violation prior to 30 days after 427 | your receipt of the notice. 428 | 429 | Termination of your rights under this section does not terminate the 430 | licenses of parties who have received copies or rights from you under 431 | this License. If your rights have been terminated and not permanently 432 | reinstated, you do not qualify to receive new licenses for the same 433 | material under section 10. 434 | 435 | 9. Acceptance Not Required for Having Copies. 436 | 437 | You are not required to accept this License in order to receive or 438 | run a copy of the Program. Ancillary propagation of a covered work 439 | occurring solely as a consequence of using peer-to-peer transmission 440 | to receive a copy likewise does not require acceptance. However, 441 | nothing other than this License grants you permission to propagate or 442 | modify any covered work. These actions infringe copyright if you do 443 | not accept this License. Therefore, by modifying or propagating a 444 | covered work, you indicate your acceptance of this License to do so. 445 | 446 | 10. Automatic Licensing of Downstream Recipients. 447 | 448 | Each time you convey a covered work, the recipient automatically 449 | receives a license from the original licensors, to run, modify and 450 | propagate that work, subject to this License. You are not responsible 451 | for enforcing compliance by third parties with this License. 452 | 453 | An "entity transaction" is a transaction transferring control of an 454 | organization, or substantially all assets of one, or subdividing an 455 | organization, or merging organizations. If propagation of a covered 456 | work results from an entity transaction, each party to that 457 | transaction who receives a copy of the work also receives whatever 458 | licenses to the work the party's predecessor in interest had or could 459 | give under the previous paragraph, plus a right to possession of the 460 | Corresponding Source of the work from the predecessor in interest, if 461 | the predecessor has it or can get it with reasonable efforts. 462 | 463 | You may not impose any further restrictions on the exercise of the 464 | rights granted or affirmed under this License. For example, you may 465 | not impose a license fee, royalty, or other charge for exercise of 466 | rights granted under this License, and you may not initiate litigation 467 | (including a cross-claim or counterclaim in a lawsuit) alleging that 468 | any patent claim is infringed by making, using, selling, offering for 469 | sale, or importing the Program or any portion of it. 470 | 471 | 11. Patents. 472 | 473 | A "contributor" is a copyright holder who authorizes use under this 474 | License of the Program or a work on which the Program is based. The 475 | work thus licensed is called the contributor's "contributor version". 476 | 477 | A contributor's "essential patent claims" are all patent claims 478 | owned or controlled by the contributor, whether already acquired or 479 | hereafter acquired, that would be infringed by some manner, permitted 480 | by this License, of making, using, or selling its contributor version, 481 | but do not include claims that would be infringed only as a 482 | consequence of further modification of the contributor version. For 483 | purposes of this definition, "control" includes the right to grant 484 | patent sublicenses in a manner consistent with the requirements of 485 | this License. 486 | 487 | Each contributor grants you a non-exclusive, worldwide, royalty-free 488 | patent license under the contributor's essential patent claims, to 489 | make, use, sell, offer for sale, import and otherwise run, modify and 490 | propagate the contents of its contributor version. 491 | 492 | In the following three paragraphs, a "patent license" is any express 493 | agreement or commitment, however denominated, not to enforce a patent 494 | (such as an express permission to practice a patent or covenant not to 495 | sue for patent infringement). To "grant" such a patent license to a 496 | party means to make such an agreement or commitment not to enforce a 497 | patent against the party. 498 | 499 | If you convey a covered work, knowingly relying on a patent license, 500 | and the Corresponding Source of the work is not available for anyone 501 | to copy, free of charge and under the terms of this License, through a 502 | publicly available network server or other readily accessible means, 503 | then you must either (1) cause the Corresponding Source to be so 504 | available, or (2) arrange to deprive yourself of the benefit of the 505 | patent license for this particular work, or (3) arrange, in a manner 506 | consistent with the requirements of this License, to extend the patent 507 | license to downstream recipients. "Knowingly relying" means you have 508 | actual knowledge that, but for the patent license, your conveying the 509 | covered work in a country, or your recipient's use of the covered work 510 | in a country, would infringe one or more identifiable patents in that 511 | country that you have reason to believe are valid. 512 | 513 | If, pursuant to or in connection with a single transaction or 514 | arrangement, you convey, or propagate by procuring conveyance of, a 515 | covered work, and grant a patent license to some of the parties 516 | receiving the covered work authorizing them to use, propagate, modify 517 | or convey a specific copy of the covered work, then the patent license 518 | you grant is automatically extended to all recipients of the covered 519 | work and works based on it. 520 | 521 | A patent license is "discriminatory" if it does not include within 522 | the scope of its coverage, prohibits the exercise of, or is 523 | conditioned on the non-exercise of one or more of the rights that are 524 | specifically granted under this License. You may not convey a covered 525 | work if you are a party to an arrangement with a third party that is 526 | in the business of distributing software, under which you make payment 527 | to the third party based on the extent of your activity of conveying 528 | the work, and under which the third party grants, to any of the 529 | parties who would receive the covered work from you, a discriminatory 530 | patent license (a) in connection with copies of the covered work 531 | conveyed by you (or copies made from those copies), or (b) primarily 532 | for and in connection with specific products or compilations that 533 | contain the covered work, unless you entered into that arrangement, 534 | or that patent license was granted, prior to 28 March 2007. 535 | 536 | Nothing in this License shall be construed as excluding or limiting 537 | any implied license or other defenses to infringement that may 538 | otherwise be available to you under applicable patent law. 539 | 540 | 12. No Surrender of Others' Freedom. 541 | 542 | If conditions are imposed on you (whether by court order, agreement or 543 | otherwise) that contradict the conditions of this License, they do not 544 | excuse you from the conditions of this License. If you cannot convey a 545 | covered work so as to satisfy simultaneously your obligations under this 546 | License and any other pertinent obligations, then as a consequence you may 547 | not convey it at all. For example, if you agree to terms that obligate you 548 | to collect a royalty for further conveying from those to whom you convey 549 | the Program, the only way you could satisfy both those terms and this 550 | License would be to refrain entirely from conveying the Program. 551 | 552 | 13. Use with the GNU Affero General Public License. 553 | 554 | Notwithstanding any other provision of this License, you have 555 | permission to link or combine any covered work with a work licensed 556 | under version 3 of the GNU Affero General Public License into a single 557 | combined work, and to convey the resulting work. The terms of this 558 | License will continue to apply to the part which is the covered work, 559 | but the special requirements of the GNU Affero General Public License, 560 | section 13, concerning interaction through a network will apply to the 561 | combination as such. 562 | 563 | 14. Revised Versions of this License. 564 | 565 | The Free Software Foundation may publish revised and/or new versions of 566 | the GNU General Public License from time to time. Such new versions will 567 | be similar in spirit to the present version, but may differ in detail to 568 | address new problems or concerns. 569 | 570 | Each version is given a distinguishing version number. If the 571 | Program specifies that a certain numbered version of the GNU General 572 | Public License "or any later version" applies to it, you have the 573 | option of following the terms and conditions either of that numbered 574 | version or of any later version published by the Free Software 575 | Foundation. If the Program does not specify a version number of the 576 | GNU General Public License, you may choose any version ever published 577 | by the Free Software Foundation. 578 | 579 | If the Program specifies that a proxy can decide which future 580 | versions of the GNU General Public License can be used, that proxy's 581 | public statement of acceptance of a version permanently authorizes you 582 | to choose that version for the Program. 583 | 584 | Later license versions may give you additional or different 585 | permissions. However, no additional obligations are imposed on any 586 | author or copyright holder as a result of your choosing to follow a 587 | later version. 588 | 589 | 15. Disclaimer of Warranty. 590 | 591 | THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY 592 | APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT 593 | HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY 594 | OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, 595 | THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 596 | PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM 597 | IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF 598 | ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 599 | 600 | 16. Limitation of Liability. 601 | 602 | IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING 603 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS 604 | THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY 605 | GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE 606 | USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF 607 | DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD 608 | PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), 609 | EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF 610 | SUCH DAMAGES. 611 | 612 | 17. Interpretation of Sections 15 and 16. 613 | 614 | If the disclaimer of warranty and limitation of liability provided 615 | above cannot be given local legal effect according to their terms, 616 | reviewing courts shall apply local law that most closely approximates 617 | an absolute waiver of all civil liability in connection with the 618 | Program, unless a warranty or assumption of liability accompanies a 619 | copy of the Program in return for a fee. 620 | 621 | END OF TERMS AND CONDITIONS 622 | 623 | How to Apply These Terms to Your New Programs 624 | 625 | If you develop a new program, and you want it to be of the greatest 626 | possible use to the public, the best way to achieve this is to make it 627 | free software which everyone can redistribute and change under these terms. 628 | 629 | To do so, attach the following notices to the program. It is safest 630 | to attach them to the start of each source file to most effectively 631 | state the exclusion of warranty; and each file should have at least 632 | the "copyright" line and a pointer to where the full notice is found. 633 | 634 | 635 | Copyright (C) 636 | 637 | This program is free software: you can redistribute it and/or modify 638 | it under the terms of the GNU General Public License as published by 639 | the Free Software Foundation, either version 3 of the License, or 640 | (at your option) any later version. 641 | 642 | This program is distributed in the hope that it will be useful, 643 | but WITHOUT ANY WARRANTY; without even the implied warranty of 644 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 645 | GNU General Public License for more details. 646 | 647 | You should have received a copy of the GNU General Public License 648 | along with this program. If not, see . 649 | 650 | Also add information on how to contact you by electronic and paper mail. 651 | 652 | If the program does terminal interaction, make it output a short 653 | notice like this when it starts in an interactive mode: 654 | 655 | Copyright (C) 656 | This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. 657 | This is free software, and you are welcome to redistribute it 658 | under certain conditions; type `show c' for details. 659 | 660 | The hypothetical commands `show w' and `show c' should show the appropriate 661 | parts of the General Public License. Of course, your program's commands 662 | might be different; for a GUI interface, you would use an "about box". 663 | 664 | You should also get your employer (if you work as a programmer) or school, 665 | if any, to sign a "copyright disclaimer" for the program, if necessary. 666 | For more information on this, and how to apply and follow the GNU GPL, see 667 | . 668 | 669 | The GNU General Public License does not permit incorporating your program 670 | into proprietary programs. If your program is a subroutine library, you 671 | may consider it more useful to permit linking proprietary applications with 672 | the library. If this is what you want to do, use the GNU Lesser General 673 | Public License instead of this License. But first, please read 674 | . 675 | -------------------------------------------------------------------------------- /dblp_graph.txt: -------------------------------------------------------------------------------- 1 | 0,1,2,3 2 | 6,7 3 | 12,13 4 | 21,23,16 5 | 20,18 6 | 24,22 7 | 31,32 8 | 33,34 9 | 41,42 10 | 46,47,1,45 11 | 48,49 12 | 52,53 13 | 57,63,62,60 14 | 64,67,65 15 | 76,77 16 | 79,80 17 | 83,84 18 | 87,86 19 | 88,89 20 | 94,95,96 21 | 104,98,99 22 | 100,101 23 | 105,106 24 | 107,108,110,114,111,117 25 | 113,544 26 | 115,116 27 | 125,118,126 28 | 120,122,124 29 | 123,60 30 | 128,129 31 | 5,131 32 | 132,133 33 | 136,137 34 | 145,146 35 | 78,148,149 36 | 5,152 37 | 161,162 38 | 160,159 39 | 163,111 40 | 168,169,170,171,101 41 | 104,175,174 42 | 176,177 43 | 20,180,182 44 | 188,189 45 | 193,192 46 | 194,195 47 | 196,198 48 | 204,201,20 49 | 205,128,202 50 | 210,0 51 | 219,220 52 | 227,179 53 | 229,230 54 | 231,232 55 | 236,237,238 56 | 240,241 57 | 246,247 58 | 249,250 59 | 38,256,257 60 | 258,208 61 | 259,53 62 | 177,111 63 | 266,267,264,265 64 | 269,270 65 | 272,273 66 | 274,275 67 | 277,278 68 | 279,281 69 | 284,200 70 | 288,287 71 | 278,162 72 | 295,296 73 | 5,299,300 74 | 303,301,302 75 | 304,1 76 | 275,307,308 77 | 1,195 78 | 312,313 79 | 305,316,317 80 | 288,62,318 81 | 320,321,322 82 | 323,324 83 | 325,326 84 | 327,329 85 | 331,332 86 | 336,322 87 | 339,227 88 | 340,341 89 | 346,349 90 | 350,354,353 91 | 366,1622 92 | 358,359,2 93 | 363,364 94 | 367,368 95 | 369,370,371,372 96 | 373,202 97 | 379,380 98 | 381,382,383 99 | 5,385 100 | 392,129 101 | 387,388,389 102 | 138,393,394 103 | 330,395,396 104 | 398,399 105 | 401,402,403 106 | 404,145,364 107 | 406,407 108 | 409,5 109 | 412,413,414 110 | 416,417 111 | 8,419 112 | 422,202 113 | 297,137 114 | 430,431 115 | 385,433,434 116 | 1904,436 117 | 438,437 118 | 439,440,441,442 119 | 446,443,444,445 120 | 454,451,452,453 121 | 455,456,457 122 | 458,459 123 | 305,462 124 | 465,186 125 | 466,467 126 | 474,475 127 | 480,479 128 | 485,486,487 129 | 488,241 130 | 465,186,491,492 131 | 494,495,493 132 | 6,496,497,228 133 | 498,499 134 | 503,501 135 | 504,505,506,453 136 | 511,512 137 | 514,515,516 138 | 520,179 139 | 521,522 140 | 381,382,383 141 | 219,220,523 142 | 1,3 143 | 525,526,527,528,530 144 | 536,133 145 | 542,543 146 | 288,318 147 | 546,548 148 | 549,550 149 | 553,554 150 | 23,16,562 151 | 564,565 152 | 567,568,569 153 | 571,572 154 | 574,575 155 | 578,579,580,581 156 | 582,583,584 157 | 585,588 158 | 592,591,593 159 | 594,595,596 160 | 514,601 161 | 288,602 162 | 611,613 163 | 607,605,606 164 | 609,610 165 | 617,618,619 166 | 622,623 167 | 625,626,34 168 | 627,628,62 169 | 545,632,633,634 170 | 636,637 171 | 640,638,639 172 | 83,84,643 173 | 108,297,644 174 | 652,105 175 | 650,651 176 | 658,657,497 177 | 659,660 178 | 663,664,665 179 | 476,666 180 | 670,668 181 | 464,669 182 | 677,532 183 | 678,626 184 | 684,685,686,156 185 | 688,689,690,687 186 | 297,691,200,692,693 187 | 694,695 188 | 513,696 189 | 568,279 190 | 495,697 191 | 698,699 192 | 707,704 193 | 705,706 194 | 709,370 195 | 710,230 196 | 711,712 197 | 461,713 198 | 714,715 199 | 717,718 200 | 720,721 201 | 722,723,724,725 202 | 729,0 203 | 732,543 204 | 738,739,340 205 | 619,740 206 | 743,200,741,742 207 | 5,747 208 | 750,751,752 209 | 753,754,755 210 | 710,756 211 | 758,759 212 | 519,763,764 213 | 771,768 214 | 497,769,770 215 | 111,775 216 | 428,782 217 | 792,2866,788 218 | 797,789 219 | 790,791 220 | 105,796 221 | 385,795 222 | 800,803 223 | 2903,804,801,2900 224 | 815,816,813 225 | 406,747 226 | 506,697,817 227 | 818,819,820,824,822 228 | 298,823 229 | 826,827,825 230 | 828,829 231 | 7,830,833 232 | 640,838,839 233 | 7,840 234 | 842,677,841 235 | 843,844,798,202 236 | 847,848 237 | 849,747 238 | 850,5 239 | 855,487,854 240 | 857,851 241 | 862,863 242 | 843,864,865 243 | 872,873 244 | 430,605 245 | 876,875,228 246 | 3106,3108,3111,892 247 | 753,754,755 248 | 894,120,581 249 | 895,896,3138,3143 250 | 288,739,602 251 | 902,904,910,905 252 | 906,907 253 | 916,917,568 254 | 231,923 255 | 929,928 256 | 931,796 257 | 932,202 258 | 368,933 259 | 513,934 260 | 743,108,107,936 261 | 844,932,939 262 | 942,204,20 263 | 943,944,945 264 | 612,950,951,952 265 | 954,955 266 | 956,228 267 | 959,960 268 | 967,426 269 | 636,971 270 | 974,972,973 271 | 975,983 272 | 977,978 273 | 515,991 274 | 995,996 275 | 999,998 276 | 305,1000 277 | 473,1001 278 | 494,355,1006 279 | 1004,1003 280 | 7,828,829 281 | 1008,1009,302 282 | 967,297,111 283 | 248,1010,1011,1012 284 | 385,806,467,1013 285 | 1015,1017 286 | 498,499,1022,1023 287 | 1024,1025,1034,983 288 | 389,1027,1028 289 | 454,1033,120 290 | 464,669 291 | 80,838,346 292 | 1037,1038 293 | 1047,1043 294 | 1048,849,896 295 | 1052,1051 296 | 1055,560 297 | 177,1056 298 | 875,228 299 | 1057,1058 300 | 1062,1063,302 301 | 145,1064,364 302 | 284,1065 303 | 1067,124 304 | 1072,1071 305 | 1076,706,809 306 | 1079,945 307 | 487,1082,1083,1084 308 | 1085,133,973 309 | 1086,228,6 310 | 842,1087,677,532 311 | 643,1090 312 | 948,1091 313 | 1092,1093 314 | 1094,253 315 | 241,1102 316 | 533,1103,532 317 | 1107,248,1010 318 | 192,1108,704,1109 319 | 0,1110 320 | 1063,1111,98,99 321 | 388,839 322 | 515,472 323 | 160,1117 324 | 677,532 325 | 725,1119,1120 326 | 1121,1122,1123,322 327 | 1131,143 328 | 297,18 329 | 108,297,78,149 330 | 789,1144 331 | 1146,1147,241 332 | 189,133 333 | 1151,419,532 334 | 412,1156,1157,414 335 | 275,259,53 336 | 743,108 337 | 1159,1160,1161 338 | 1162,453 339 | 1163,1164 340 | 813,1167 341 | 1169,105 342 | 533,1173,532 343 | 1174,1175 344 | 300,1177,1178,3848 345 | 382,383,105 346 | 1180,1181 347 | 567,295 348 | 473,3855,3856 349 | 253,3859 350 | 1188,1189,475,1187 351 | 1190,1191,60 352 | 1193,1194 353 | 1197,230 354 | 1200,1201 355 | 1203,711 356 | 1206,1207,1208 357 | 1217,1218 358 | 3926,611 359 | 1224,399,947 360 | 412,1225,1226 361 | 419,532 362 | 1227,1228 363 | 259,48,1233,1234 364 | 161,162 365 | 568,279 366 | 446,45 367 | 1246,1132 368 | 1243,1244,1245 369 | 399,1248,941 370 | 230,1249 371 | 1250,1251 372 | 1255,5 373 | 1256,133 374 | 804,1259,1260 375 | 751,1264 376 | 1273,1,3 377 | 619,1274 378 | 1275,1276 379 | 146,1277 380 | 1278,84 381 | 1279,1280,1281 382 | 967,839 383 | 1143,251 384 | 849,1282,1283 385 | 814,383,472 386 | 1287,1288,106 387 | 851,0 388 | 434,1291 389 | 1297,941 390 | 1299,798 391 | 380,1027,1023 392 | 1312,1311 393 | 1317,1100,128,1316 394 | 789,1322,1319 395 | 819,820,1320,1321 396 | 454,6,806,951 397 | 7,1324,1325 398 | 983,1329 399 | 1332,1333,1023 400 | 1335,529 401 | 1336,1337,1346,202 402 | 1278,1339,595,124 403 | 7,1341,1344 404 | 1342,1343 405 | 744,1347,1348 406 | 1086,228 407 | 1349,1350,1351,1352,1335 408 | 275,1161,1354,1353 409 | 303,412 410 | 1356,1043 411 | 797,789 412 | 1357,149 413 | 521,522 414 | 1361,1362,1360 415 | 1367,364 416 | 977,907 417 | 720,721,426 418 | 115,1373,990,1372 419 | 619,1324 420 | 1085,487 421 | 723,1374,725 422 | 1377,1362,1375,1376 423 | 1379,1380 424 | 1385,260 425 | 1386,1387,1388 426 | 83,1389,643 427 | 1390,1391 428 | 1393,200,1394 429 | 1395,643 430 | 1397,1396,1275 431 | 1399,791 432 | 370,259 433 | 80,1402,1407 434 | 1333,1404,1406,1023 435 | 1413,1388 436 | 430,876 437 | 1416,1417 438 | 6,806 439 | 1420,1421,763 440 | 966,1422 441 | 1425,1426,584 442 | 1429,1430,1431,1432,1433 443 | 1437,1441 444 | 1442,1443,1144 445 | 1445,1444 446 | 495,506 447 | 355,149 448 | 385,1455 449 | 1456,444 450 | 1255,1041,1457 451 | 610,1458 452 | 1459,516 453 | 380,837,1460,1461 454 | 1462,302 455 | 1463,105 456 | 636,971 457 | 1465,99 458 | 1476,1242 459 | 1477,798 460 | 1478,1479 461 | 1130,1342,1481 462 | 1482,1483 463 | 1489,1490,1 464 | 1492,626 465 | 571,572 466 | 851,1493 467 | 44,1378,1384 468 | 1197,230 469 | 1500,932,202 470 | 231,923,195 471 | 262,1499,947 472 | 663,664,665 473 | 1505,1502 474 | 1504,1503 475 | 623,105 476 | 1507,1508,1509 477 | 108,297,111,78,149,1511,1512 478 | 791,1513 479 | 137,1514 480 | 1515,1516,49,495 481 | 1518,978 482 | 1522,791 483 | 141,1523,1528,139 484 | 1534,1535,1138 485 | 248,1537,1538,1539,1540 486 | 1541,536,133 487 | 324,89 488 | 247,1543,1544 489 | 123,247,60,1547 490 | 1360,1361,1362,473,1548 491 | 563,1549 492 | 677,1553,532 493 | 619,487,1555 494 | 326,1556 495 | 584,309 496 | 278,1558 497 | 513,978 498 | 1564,1565,1566,1568 499 | 849,747 500 | 1572,595,1571 501 | 1377,1574 502 | 428,782 503 | 1482,698,1577 504 | 138,143 505 | 385,1579,1580 506 | 1582,105 507 | 77,1587 508 | 297,18 509 | 1589,44 510 | 1591,147 511 | 1133,1593 512 | 1594,1595,1596 513 | 1604,1605 514 | 1609,1610 515 | 599,978,1611 516 | 1374,725 517 | 1085,1613,1614 518 | 1616,138 519 | 141,1401,1617,139 520 | 295,515 521 | 1627,951,952 522 | 425,1628 523 | 1630,1631 524 | 291,1041,1389 525 | 996,566 526 | 334,1641 527 | 865,1642,1644 528 | 385,1455 529 | 1646,1647,1648,228 530 | 1649,687 531 | 948,1123,483 532 | 295,1650,1651 533 | 1658,983 534 | 124,453 535 | 1,262,1660,1661 536 | 454,105,1663 537 | 464,1665 538 | 1590,1133 539 | 1667,1669 540 | 160,434,1291 541 | 1674,1675,1676,143 542 | 1680,844 543 | 473,1194 544 | 1684,595 545 | 1687,566 546 | 806,950,951 547 | 1,1233,1690,1691 548 | 1692,554 549 | 1693,1694 550 | 1696,1697 551 | 1276,1698,444 552 | 111,1511,775 553 | 1699,1700 554 | 1702,186 555 | 1708,301 556 | 1490,1710,1569 557 | 876,228,188 558 | 1711,1712,1713 559 | 303,385 560 | 978,1714,1715 561 | 1716,105 562 | 1717,1718,1719,1656 563 | 1722,1723 564 | 305,1000 565 | 284,382,472 566 | 1727,1728,1729 567 | 1732,1733,1734 568 | 584,309 569 | 428,1743 570 | 1736,1737,1738 571 | 792,1744,1747,1749 572 | 489,1581 573 | 1745,106 574 | 5,1041,1748 575 | 536,133 576 | 1752,1750,1751 577 | 943,258 578 | 1754,753,754 579 | 1756,693 580 | 473,1755,228,60 581 | 806,951 582 | 1759,907 583 | 584,309 584 | 1762,1763 585 | 729,0 586 | 1201,1764,1765 587 | 297,230 588 | 1273,1 589 | 1048,1769 590 | 1770,907 591 | 1771,1772,1560 592 | 1,1522,1775,1773,1774,369 593 | 1778,888,1776,1777 594 | 1779,220 595 | 1780,1781 596 | 612,1782 597 | 1023,993,1783 598 | 1188,1189,475,1187 599 | 1785,362 600 | 1127,1091 601 | 385,623,1786 602 | 1790,1191,755,1266 603 | 461,713 604 | 1791,1792 605 | 807,1793 606 | 1795,967,1794 607 | 1416,1417 608 | 1796,1797 609 | 996,467,20 610 | 876,1799,228 611 | 1086,876,228 612 | 508,1800 613 | 1802,1130,1801 614 | 1803,1804,1661 615 | 819,820 616 | 77,1587 617 | 46,1,45 618 | 623,1663 619 | 111,479 620 | 204,201,20 621 | 1805,200 622 | 1139,1201,1200 623 | 1806,1807,1808 624 | 1809,248 625 | 1810,1811,886 626 | 983,1812,1813 627 | 521,869 628 | 0,1 629 | 1817,1560 630 | 284,839 631 | 581,515,595,453 632 | 1819,1820 633 | 303,1822 634 | 1824,1400 635 | 823,1826 636 | 1828,1829,1830 637 | 640,1831 638 | 1582,1599 639 | 1832,1833 640 | 727,1835 641 | 568,1763,326 642 | 1836,700 643 | 819,820,1205,818 644 | 1697,1450,626 645 | 383,105 646 | 1572,1628 647 | 189,487,120,133 648 | 1344,1437 649 | 1839,1157 650 | 1840,1841,159 651 | 1842,852 652 | 1844,111 653 | 732,543 654 | 1574,1845 655 | 977,522 656 | 385,1846,472 657 | 1709,472 658 | 1848,1849,1850,1847 659 | 38,907 660 | 1855,242 661 | 625,1546 662 | 1856,839 663 | 1628,1572,1858,1859,176 664 | 1861,1862 665 | 385,1162 666 | 473,1755,60 667 | 1863,64 668 | 1864,1865,335 669 | 303,1866 670 | 295,1867 671 | 1868,146 672 | 409,5 673 | 385,1869 674 | 1863,1191,1009,1788 675 | 1870,133 676 | 1073,807 677 | 804,1872,1259,801 678 | 64,1518,978,1873 679 | 1875,1874 680 | 373,1876,1877 681 | 6,513 682 | 8,1304 683 | 1879,568 684 | 1880,1157 685 | 1862,1639,1883 686 | 84,1610 687 | 1885,1884 688 | 1886,248 689 | 513,1887 690 | 1890,1889 691 | 476,1133 692 | 533,1892,1891,417 693 | 1027,389,1894 694 | 1895,983 695 | 966,1896,1897 696 | 1094,253 697 | 326,1900 698 | 1901,1792 699 | 1902,515 700 | 625,1546 701 | 1445,1127,159 702 | 1890,1905 703 | 1907,508,1176 704 | 80,1908,1909 705 | 1910,142,298 706 | 1638,220 707 | 275,1913,1914 708 | 680,1915 709 | 931,382 710 | 1828,1830 711 | 1647,228 712 | 1062,1063,302 713 | 948,1918,1091 714 | 346,1834 715 | 591,738,739,340 716 | 1920,907 717 | 47,1,45 718 | 999,998 719 | 906,907 720 | 160,1924,1291 721 | 1582,1599 722 | 1925,1926 723 | 843,844,798 724 | 83,1927,869 725 | 1582,1928 726 | 406,1929 727 | 1123,791,1513 728 | 1820,1902,515 729 | 1507,1930 730 | 888,1931,955,1083 731 | 514,515 732 | 303,1932,301,302 733 | 205,1933 734 | 1934,1935,1936 735 | 1940,1937,1938,1939 736 | 1901,1792 737 | 1941,1942,951 738 | 1086,355,1944 739 | 1945,1763 740 | 1946,1,1233,1691 741 | 241,1947,1948 742 | 64,1041,568 743 | 359,2 744 | 864,1319 745 | 487,1083 746 | 951,1953,1954,219,725 747 | 334,1641 748 | 1956,1957,1958,1773,1774 749 | 1545,541,1960,1961,1962,1127 750 | 806,951,1963 751 | 228,105 752 | 1139,253 753 | 1964,1965 754 | 1870,132,133 755 | 1829,1966 756 | 83,1389,643 757 | 101,1082,279 758 | 1967,160 759 | 1968,1969,1970,1971 760 | 1972,1973 761 | 850,1974,636 762 | 177,155 763 | 680,1915 764 | 1719,1551,1976,1977 765 | 1979,1978 766 | 1981,428 767 | 1982,1983,1984 768 | 1988,612,1800 769 | 288,1990 770 | 1991,1992 771 | 951,279,1993 772 | 1541,133 773 | 1898,1899 774 | 1994,1995 775 | 515,1998 776 | 977,522 777 | 295,407 778 | 2003,1841,2001,2002 779 | 498,499,1783,1023 780 | 177,955,111,2006 781 | 44,1265 782 | 1393,200 783 | 1086,1646,2010,1799,228 784 | 1191,2011,1009,1788 785 | 2012,1043 786 | 567,2014,2013,605 787 | 1631,2016,2015 788 | 2017,1719,101 789 | 5,747 790 | 2021,1604,1605 791 | 1911,520,2023 792 | 2024,2025,871 793 | 2026,581 794 | 1243,2027 795 | 2028,369,370,372 796 | 977,907 797 | 2029,2030,2031,228 798 | 2032,2033 799 | 1482,584,2035 800 | 2036,2037 801 | 5,2038 802 | 2039,189 803 | 415,2041 804 | 2043,2042 805 | 657,658,2044 806 | 303,2045 807 | 791,2046,322 808 | 3111,2047 809 | 2048,1744,20 810 | 2049,444,977 811 | 1519,9,2050 812 | 1131,143 813 | 2051,200 814 | 625,1546 815 | 2052,1593 816 | 843,2053 817 | 1745,1859 818 | 1545,370,2054 819 | 792,1744,1749,2055 820 | 2056,1986,2020 821 | 1709,472 822 | 83,9,1389 823 | 327,2058 824 | 2059,428 825 | 295,407 826 | 2061,1086 827 | 2062,118,664 828 | 1017,2064 829 | 2066,520,2065 830 | 2067,1467,171 831 | 200,768 832 | 2068,2069,147,643 833 | 301,302 834 | 1811,2070,2071 835 | 2072,2073,220 836 | 270,595 837 | 1333,1022,1023 838 | 135,138,1582 839 | 47,2074 840 | 2076,2025,837 841 | 5,2077 842 | 288,2080 843 | 1981,428 844 | 2081,430 845 | 2082,2083,278,543 846 | 1357,839,2084,149,78 847 | 2085,941 848 | 2072,2086 849 | 1387,2087 850 | 1086,2088,300 851 | 2089,1816 852 | 2091,669,2090 853 | 1040,2092,1093 854 | 2093,851 855 | 2094,364 856 | 2095,2096,1127 857 | 978,1714,2097 858 | 419,532 859 | 303,878 860 | 2098,1406 861 | 640,2099 862 | 2101,2100,452 863 | 1420,763 864 | 7,829,452 865 | 1357,149 866 | 2103,2104,1503 867 | 611,44 868 | 995,2106,595 869 | 1825,2107,2108,2109 870 | 5,1873 871 | 2110,1816 872 | 2111,763 873 | 2072,1808 874 | 346,2112 875 | 506,2114,952 876 | 710,2115 877 | 2117,2116 878 | 533,1173,2118,532 879 | 591,2119 880 | 385,996,5 881 | 7,452 882 | 2121,2120,1157,2122 883 | 228,174 884 | 2123,1001 885 | 2124,2125 886 | 575,2126 887 | 2127,2128,2129 888 | 533,855 889 | 275,1913,1914 890 | 764,2130,2131 891 | 495,2132 892 | 2133,453,84,581 893 | 1085,486,487 894 | 228,796 895 | 270,595,1763 896 | 694,695,2134 897 | 640,2135 898 | 142,2137 899 | 2138,111 900 | 513,932 901 | 677,532 902 | 2076,837,2140 903 | 625,1546 904 | 373,2141,1876,1877 905 | 2142,2143,45 906 | 1882,2144 907 | 2145,851 908 | 2146,1511,111 909 | 2148,1906,2147 910 | 663,664,665 911 | 974,972,973 912 | 2100,302 913 | 995,753 914 | 1246,1132 915 | 1842,852 916 | 247,2150 917 | 1393,200 918 | 847,848,1723 919 | 2151,2152,2153 920 | 2154,2155,2156 921 | 48,49 922 | 407,852 923 | 844,798 924 | 105,472 925 | 284,472 926 | 1534,1638,693,92 927 | 1196,2157,2158 928 | 2159,364 929 | 875,228,512 930 | 1842,852 931 | 2160,2161,2162,2163 932 | 2164,1975,878 933 | 2165,2166 934 | 1490,1893,1841 935 | 1875,2167,2168 936 | 2170,1972,1973 937 | 473,2130,60 938 | 2171,132,133 939 | 47,1304 940 | 2172,2173 941 | 1250,6,2174,554 942 | 303,553 943 | 358,2175,1545,1233 944 | 888,1931,955 945 | 1078,220 946 | 419,532 947 | 2176,791,2028 948 | 392,865,1642,1933 949 | 2179,1433,947 950 | 1214,242 951 | 2181,2182,384 952 | 2184,2185,2186,1176,2183 953 | 402,92 954 | 1395,643 955 | 1910,142,298 956 | 228,105 957 | 2188,373,2187 958 | 2189,1807 959 | 5,228 960 | 1445,995,1128,1127 961 | 2192,2193 962 | 668,2195,2196 963 | 2197,2198 964 | 2199,2200,2201,2202,1804 965 | 1763,1734 966 | 1086,875,228 967 | 2203,568,917 968 | 1770,907 969 | 948,444,1091 970 | 295,2204 971 | 5,1041,2205 972 | 2206,412 973 | 457,1909 974 | 2049,444,977 975 | 2207,2208,105 976 | 1387,143 977 | 2210,1657 978 | 80,2211 979 | 296,1235,2212,1218,2213 980 | 1176,452 981 | 1091,948,2214 982 | 385,434 983 | 2215,631 984 | 625,626,1187 985 | 48,49 986 | 2218,1109,2217 987 | 409,2220 988 | 1093,2221 989 | 231,195 990 | 643,2222 991 | 1971,2224 992 | 1164,2227 993 | 583,2228 994 | 7,828,1762 995 | 303,896,788 996 | 2229,106 997 | 2230,312,687 998 | 2231,863 999 | 247,2150,511,2232 1000 | 514,489 1001 | 2225,2234,2235 1002 | 2093,2236,2237,2238 1003 | 2240,734 1004 | 612,2242 1005 | 2243,297 1006 | 484,230,1571 1007 | 2244,1935,407 1008 | 1809,941 1009 | 21,16 1010 | 2245,1410,1411 1011 | 720,873 1012 | 2247,1189,475,2246 1013 | 2248,2249,2250 1014 | 2251,45 1015 | 2252,444 1016 | 298,105 1017 | 1988,2253 1018 | 1297,941 1019 | 2089,1816 1020 | 967,111 1021 | 2257,2258,63,2045 1022 | 1736,2259,2260,1545 1023 | 869,2261,2262 1024 | 2263,1923 1025 | 1039,5,1041 1026 | 514,693 1027 | 948,483 1028 | 484,230 1029 | 591,515 1030 | 2257,2258,63,2045 1031 | 5,131 1032 | 492,515,2264 1033 | 1040,510 1034 | 1693,2265 1035 | 875,228,512 1036 | 428,782 1037 | 2266,2267,1928 1038 | 76,844,1933,798 1039 | 996,515,20 1040 | 2269,475,1189,1187 1041 | 2270,2271,2272 1042 | 1609,250,2273 1043 | 298,956 1044 | 729,0,1110 1045 | 669,2274,149 1046 | 2275,1971 1047 | 2276,2277,355,1006 1048 | 1162,806,2278,2279 1049 | 1638,1628,693 1050 | 2280,2281,2282,2283 1051 | 341,2284 1052 | 2285,248 1053 | 2286,2287,2288 1054 | 473,425 1055 | 373,2289,1877 1056 | 2290,2291,2292 1057 | 2293,296,2213 1058 | 948,483 1059 | 2294,1810 1060 | 2295,2296 1061 | 758,2297 1062 | 2295,2298,2299 1063 | 295,407 1064 | 1482,584 1065 | 2300,941 1066 | 2301,693 1067 | 2302,2303 1068 | 1523,2151,2152,2153,2304 1069 | 2305,2306 1070 | 935,2307 1071 | 513,978 1072 | 80,2308 1073 | 430,186 1074 | 1606,62,2309 1075 | 568,837 1076 | 2310,673 1077 | 105,472 1078 | 1996,2311 1079 | 1246,1132 1080 | 406,1518 1081 | 864,1319 1082 | 1388,566 1083 | 863,509,1176 1084 | 406,1518 1085 | 973,1782,2314 1086 | 303,878 1087 | 2315,2316,2317,118 1088 | 1243,2318 1089 | 2319,2320,2321,1194 1090 | 1393,200 1091 | 2322,2323 1092 | 242,2324 1093 | 1917,219 1094 | 381,382,383 1095 | 575,2326,260 1096 | 2328,2329 1097 | 2330,278 1098 | 2331,822,426 1099 | 2295,156 1100 | 685,2332 1101 | 568,326,1763 1102 | 951,612,725 1103 | 549,440,441 1104 | 2333,2334 1105 | 231,195 1106 | 2335,84 1107 | 4,626 1108 | 494,2336,2337,355 1109 | 1949,2338 1110 | 2339,2340 1111 | 2341,2342,1411 1112 | 6,1086,228 1113 | 1890,744,2344,2345 1114 | 1916,2347 1115 | 2348,869 1116 | 303,1975,788 1117 | 2350,2351,869 1118 | 948,370,626 1119 | 2357,2358,1723 1120 | 2359,1743 1121 | 385,495,1162,2360 1122 | 1415,95 1123 | 1920,40 1124 | 2361,1,1233,1691 1125 | 2362,879 1126 | 2010,2363 1127 | 1086,2088,300 1128 | 1047,1043 1129 | 385,515 1130 | 2366,2326 1131 | 123,60,189 1132 | 967,839 1133 | 392,2368,865 1134 | 532,2369,2370 1135 | 568,1041,2371 1136 | 2372,2373,113 1137 | 1352,1335,2374 1138 | 2375,2376,2377,2378 1139 | 1709,472 1140 | 2240,734 1141 | 2380,108,111,2006 1142 | 105,472 1143 | 461,713 1144 | 2133,84 1145 | 1417,1170 1146 | 278,143,273 1147 | 618,1949 1148 | 2358,2383 1149 | 647,575 1150 | 1431,1432,220,1430 1151 | 2385,673 1152 | 2386,2387,581 1153 | 2388,228,105 1154 | 0,851 1155 | 305,1000 1156 | 2390,457 1157 | 430,2391 1158 | 419,560,532 1159 | 1416,1417 1160 | 2393,2394,1040,511 1161 | 1522,259,1234 1162 | 670,1265 1163 | 1255,5 1164 | 2084,839 1165 | 1692,303,553,554,2396 1166 | 278,1558 1167 | 2397,2064,1500 1168 | 1191,1388,612 1169 | 346,2112 1170 | 1207,918,259 1171 | 2398,755 1172 | 295,469 1173 | 177,1056 1174 | 2083,278 1175 | 2400,1639 1176 | 1701,2402 1177 | 2403,1610 1178 | 2404,105 1179 | 1544,2405,2406 1180 | 732,543 1181 | 101,2412,279 1182 | 1086,228,623 1183 | 583,2414 1184 | 2415,2416 1185 | 1646,1648,228 1186 | 84,581 1187 | 889,572 1188 | 2358,2417 1189 | 852,2418,92 1190 | 1772,1988 1191 | 1228,472 1192 | 2419,1300 1193 | 747,1283 1194 | 454,2420,516 1195 | 48,302,2421,1854 1196 | 2193,2423 1197 | 1893,1841 1198 | 847,1595 1199 | 2424,2425,643 1200 | 446,45 1201 | 1,2426,3,259 1202 | 2399,1366,2427 1203 | 2429,2430,445,2428 1204 | 835,2431 1205 | 380,1701,1461,837 1206 | 2274,149 1207 | 250,2432,2433,2434 1208 | 2435,412,1226 1209 | 1885,2436 1210 | 1848,2438,1850 1211 | 305,1000 1212 | 2439,2440,2392 1213 | 1086,2088,1176 1214 | 426,1823 1215 | 2441,2442,1862 1216 | 2355,2443 1217 | 658,2444 1218 | 297,693 1219 | 176,111,2445 1220 | 2446,973 1221 | 2448,941,2447 1222 | 797,789 1223 | 1246,1132 1224 | 2449,945 1225 | 619,2450 1226 | 1925,1272 1227 | 574,2452 1228 | 2453,143 1229 | 1683,105 1230 | 409,5 1231 | 2456,2455 1232 | 2458,143 1233 | 599,978,2459 1234 | 2460,175 1235 | 132,133 1236 | 1863,64 1237 | 2464,287 1238 | 2330,278 1239 | 1719,1339 1240 | 1638,1628 1241 | 1415,1519 1242 | 2466,2467,371 1243 | 843,844 1244 | 487,1082 1245 | 852,2418 1246 | 2468,1763 1247 | 680,1882,2465 1248 | 312,1538,687 1249 | 1899,2469,45 1250 | 414,412,602 1251 | 138,143 1252 | 567,569,287 1253 | 995,996 1254 | 1,2471,2472,475,1187 1255 | 295,407 1256 | 1463,105 1257 | 295,2473 1258 | 842,2474 1259 | 1207,1,369 1260 | 1190,1176,1853 1261 | 2475,2476,1923,1191 1262 | 0,2 1263 | 136,137,1514 1264 | 1990,2477,1220 1265 | 705,706 1266 | 995,2106,595 1267 | 2254,2478 1268 | 2479,967,177,108 1269 | 995,2480 1270 | 1,262,1660,1661 1271 | 2481,1742 1272 | 2482,253 1273 | 773,1358 1274 | 1426,584 1275 | 464,111 1276 | 622,62,2483 1277 | 640,2484,149 1278 | 2485,200 1279 | 136,137,1514 1280 | 2486,327,329 1281 | 2487,1352,1335 1282 | 754,2488,2131 1283 | 1023,993,1783 1284 | 654,2489 1285 | 651,2490 1286 | 612,725 1287 | 2491,2130 1288 | 2492,675,2131,674 1289 | 1206,1208,2022 1290 | 1667,2494 1291 | 549,2495,2496 1292 | 303,2497,2498 1293 | 1582,382,383 1294 | 1297,941 1295 | 2499,1283 1296 | 948,371,483,1091 1297 | 2500,78,149 1298 | 960,2501 1299 | 575,2501 1300 | 473,2503,1360 1301 | 1886,2504,213 1302 | 133,2507 1303 | 2508,300 1304 | 284,472 1305 | 430,876,2509 1306 | 996,1687,566 1307 | 1707,1706,124 1308 | 48,370,259 1309 | 2510,2511 1310 | 2512,1422 1311 | 515,2513 1312 | 2515,739,1194 1313 | 1911,2516,2517 1314 | 859,2518 1315 | 1067,124 1316 | 242,2519 1317 | 1683,105 1318 | 1207,48,369,259 1319 | 1445,118 1320 | 192,864,2520 1321 | 2522,2523,336,2521 1322 | 495,2524 1323 | 2525,2526 1324 | 83,9 1325 | 995,2106 1326 | 1139,253 1327 | 176,111,2445 1328 | 1,45 1329 | 2527,159 1330 | 675,2529,2530,2531,2532 1331 | 2533,278 1332 | 568,1763 1333 | 2534,92 1334 | 648,1134 1335 | 83,643 1336 | 6,2535,632,1162 1337 | 23,16 1338 | 415,2536,2537 1339 | 284,472 1340 | 115,2538 1341 | 1107,1751 1342 | 2539,2540,973 1343 | 2541,364 1344 | 1266,2542 1345 | 385,951,806,1579 1346 | 1652,546 1347 | 1377,1574 1348 | 1017,128 1349 | 83,9,643 1350 | 2543,2544 1351 | 1243,2545 1352 | 2546,764 1353 | 2547,2548,747 1354 | 619,487 1355 | 2550,2164,1975,878 1356 | 385,84,581 1357 | 2229,106 1358 | 2551,1194 1359 | 1716,105 1360 | 2552,2553 1361 | 332,2554 1362 | 743,2555,2556 1363 | 2557,560 1364 | 705,2558 1365 | 2249,2250,2559 1366 | 303,412,1916,414 1367 | 1842,852 1368 | 795,2560 1369 | 2027,693 1370 | 947,2447 1371 | 2561,1023 1372 | 2562,84,106 1373 | 723,612 1374 | 16,2334 1375 | 1093,2335 1376 | 1407,2565,1605 1377 | 1916,2567 1378 | 111,177,1511,1512 1379 | 944,945 1380 | 2568,91 1381 | 267,2569,2570 1382 | 1463,105 1383 | 1091,320,2046,322 1384 | 955,2337 1385 | 265,602 1386 | 2571,2572,1119,1120 1387 | 2310,1785,2573,111 1388 | 705,2558 1389 | 428,1743 1390 | 1638,2575 1391 | 57,1697,133 1392 | 706,809 1393 | 1169,105 1394 | 2576,977 1395 | 636,971 1396 | 2320,739,1194 1397 | 996,515,2577 1398 | 1952,2333 1399 | 123,1352,764 1400 | 1,3 1401 | 599,600 1402 | 727,2346,3138,3143 1403 | 515,106 1404 | 951,753,2069,723 1405 | 2424,2578,2579,643 1406 | 187,253 1407 | 330,396 1408 | 275,2580,259 1409 | 176,111,2445 1410 | 2581,2074,47 1411 | 192,1108,2582,2583 1412 | 967,2584,2585 1413 | 1843,513 1414 | 900,948,1091 1415 | 948,483 1416 | 2240,733,734 1417 | 1855,242,2586 1418 | 2587,725,318 1419 | 291,654 1420 | 2588,541 1421 | 1811,2589,2590 1422 | 978,2591 1423 | 2592,1324 1424 | 2593,2392 1425 | 464,661,2594 1426 | 599,600,2595,1987 1427 | 820,1320 1428 | 2596,149 1429 | 2598,948,2597 1430 | 83,1656,1389 1431 | 1548,473,2599 1432 | 107,114,117,936 1433 | 727,1835 1434 | 2173,2600,479 1435 | 864,287 1436 | 2601,5,1041 1437 | 288,318 1438 | 2603,440,1445,159 1439 | 2604,2131,1972 1440 | 1449,159 1441 | 813,2605 1442 | 278,1853 1443 | 186,2606 1444 | 1078,539 1445 | 2609,2610,2608 1446 | 2048,180,20 1447 | 729,0 1448 | 796,606 1449 | 1266,60 1450 | 83,84,643 1451 | 1605,2612 1452 | 842,1087,677,532 1453 | 2534,581 1454 | 489,710 1455 | 2613,2614,773 1456 | 1519,428 1457 | 2615,1190,1866 1458 | 538,747 1459 | 1131,143 1460 | 948,2616,2617 1461 | 2619,177,2618 1462 | 2620,1266 1463 | 303,403 1464 | 734,2622 1465 | 5,1043,1662 1466 | 2623,2256 1467 | 574,2624,2625,2626 1468 | 385,515 1469 | 754,2627 1470 | 2628,1194 1471 | 2629,2317,118 1472 | 1879,1942,568 1473 | 370,2630 1474 | 2631,2632,2633 1475 | 948,2617 1476 | 978,1873 1477 | 494,2277,355 1478 | 931,2634 1479 | 797,789 1480 | 2635,651,2334 1481 | 1779,2636,2411 1482 | 733,2388,2637 1483 | 1356,1043 1484 | 498,499,1022,1023 1485 | 977,978 1486 | 443,2428,445 1487 | 1312,303,2638,2639,2640 1488 | 1100,1101,1017,2641 1489 | 1,220,626 1490 | 2642,2643,2644,2645,2646,1933,2647,2648,964 1491 | 584,541 1492 | 863,2052,509 1493 | 513,1610 1494 | 1391,2649 1495 | 380,2650,837,1461 1496 | 1851,2652,2651 1497 | 2655,2653,2654,1091 1498 | 2656,20,2307 1499 | 326,1556 1500 | 2657,1722,1723 1501 | 2658,2323 1502 | 346,349 1503 | 1281,950,2659,2090 1504 | 2661,2662,1595,264,2660 1505 | 2081,430 1506 | 1067,2657,2664,124 1507 | 843,192,704,798 1508 | 2665,266,220 1509 | 2666,2667 1510 | 1401,2668 1511 | 651,2531 1512 | 652,105 1513 | 2086,2671,2672 1514 | 941,2673 1515 | 380,1023 1516 | 228,105 1517 | 1831,871 1518 | 2675,425,1023 1519 | 2676,143 1520 | 2092,1093 1521 | 567,569 1522 | 669,2677 1523 | 1923,876,2190,1822 1524 | 1243,2545 1525 | 2678,260 1526 | 539,1999 1527 | 2095,1127,1091 1528 | 1991,2681,2682 1529 | 385,133 1530 | 2685,2173 1531 | 2686,2687,2688 1532 | 1627,950,951,952 1533 | 2689,2690,2691 1534 | 101,2692,1976,626 1535 | 2693,2694 1536 | 640,839,2695 1537 | 382,839 1538 | 2696,2697,1271,200 1539 | 1670,2337,506 1540 | 747,2698 1541 | 2700,202 1542 | 2701,2702,2553 1543 | 792,2703,2704 1544 | 1534,1694,1693,693 1545 | 2705,60 1546 | 651,1797 1547 | 715,2706,1845,554 1548 | 383,105,106 1549 | 1380,1379,2707,2708 1550 | 584,309 1551 | 60,1949 1552 | 549,2495 1553 | 1086,2088,1176 1554 | 572,1854 1555 | 2709,228 1556 | 80,2498 1557 | 2710,948,483 1558 | 806,1162 1559 | 2711,426,1304 1560 | 1548,473 1561 | 415,2041 1562 | 583,2414 1563 | 1628,2712 1564 | 2713,2714,2074 1565 | 1086,1170 1566 | 2715,1797 1567 | 2717,2716,2706,755 1568 | 2720,2718,2719 1569 | 2059,428 1570 | 5,2721,1041 1571 | 888,1714,1900 1572 | 533,1173,2118,532 1573 | 1490,1840,1841,2722 1574 | 1780,1781 1575 | 2235,2723,63 1576 | 446,45 1577 | 2170,2070,1972 1578 | 1628,2712 1579 | 2724,2725,2713,2714,2556 1580 | 202,2217 1581 | 1782,725,2726 1582 | 196,995 1583 | 843,2727 1584 | 2728,430,2010 1585 | 231,2729 1586 | 2217,843,2368,2730,2731 1587 | 2732,1166 1588 | 200,768,2733 1589 | 995,2106,612 1590 | 2515,1194 1591 | 473,2735 1592 | 2661,2358,2383 1593 | 3926,611 1594 | 619,2736 1595 | 2737,2738,2484 1596 | 653,2739 1597 | 2486,2740,2741,2742 1598 | 419,2743 1599 | 1387,2087 1600 | 2420,516,1993,2745 1601 | 2746,2747 1602 | 1759,1701,907 1603 | 380,2748 1604 | 1047,1043 1605 | 1693,1694 1606 | 392,1015,2749 1607 | 2319,2752,1193,1194 1608 | 1968,1971,341 1609 | 385,806,60,1547 1610 | 295,407 1611 | 1968,1971 1612 | 993,2754 1613 | 430,326,1900 1614 | 2755,176,220 1615 | 2756,2757,2758 1616 | 1923,2399,2670 1617 | 2759,1134 1618 | 1670,2760,100,101,487 1619 | 732,543,453 1620 | 5,623 1621 | 2378,2271 1622 | 978,1873 1623 | 753,595,755 1624 | 0,369,259 1625 | 484,2761,1808 1626 | 2293,2213 1627 | 625,1546 1628 | 647,1071,2762 1629 | 262,1660,1661 1630 | 2763,2212 1631 | 2765,2095,1121,2764 1632 | 2767,2768,106 1633 | 303,412,414 1634 | 101,2412,279 1635 | 1850,483 1636 | 5,341 1637 | 2550,2164,1975,878 1638 | 640,839 1639 | 303,2000 1640 | 1420,2770 1641 | 2771,806 1642 | 2772,2773 1643 | 937,1519 1644 | 2775,106,2774 1645 | 2776,2777,2778,389 1646 | 1923,2190,1822 1647 | 1785,605 1648 | 2620,1266 1649 | 5,65,2779 1650 | 2780,993 1651 | 838,2781,2782 1652 | 1745,516 1653 | 226,2783 1654 | 2784,1604,660 1655 | 2081,2787,2785,2786 1656 | 1401,631 1657 | 701,2789 1658 | 714,715 1659 | 2791,1899 1660 | 1107,2410,1751 1661 | 2170,2792,2070 1662 | 324,2793 1663 | 288,789,2795 1664 | 2796,1991 1665 | 693,92 1666 | 2797,1164 1667 | 278,143,273 1668 | 2081,2798,2785,1900 1669 | 701,990 1670 | 419,532 1671 | 2456,2800,2455 1672 | 385,189,1870,133 1673 | 303,723,2801 1674 | 2802,2803,1086 1675 | 472,1228 1676 | 2804,2805,2806 1677 | 406,1518 1678 | 1923,1225 1679 | 303,385 1680 | 494,1754 1681 | 1901,1791,1792 1682 | 1297,941 1683 | 454,2807,2235 1684 | 84,106 1685 | 1895,2808,2809 1686 | 2810,2811,2242 1687 | 1831,871 1688 | 2812,2813,42 1689 | 369,2814,370 1690 | 1895,983 1691 | 2816,568 1692 | 0,1,626 1693 | 6,806 1694 | 494,1754,403,2818 1695 | 2819,2820,2821 1696 | 1789,1009,2822 1697 | 1086,875,228 1698 | 2824,2825 1699 | 2826,511,543 1700 | 1811,2828 1701 | 2831,2829,2830 1702 | 2832,2514,2833 1703 | 64,2834 1704 | 407,852 1705 | 1156,1157,2835,2836,2837,2838 1706 | 1266,1834 1707 | 1127,693,2104,92 1708 | 47,2312 1709 | 183,2839,773,2840,2841 1710 | 64,2587 1711 | 2842,945 1712 | 693,459 1713 | 2843,227,179 1714 | 2844,643 1715 | 1122,791 1716 | 907,2845 1717 | 1782,2846,101,132,133 1718 | 192,2847,864,2848 1719 | 5,1950 1720 | 1551,2849 1721 | 2193,2333 1722 | 935,20,2850 1723 | 1778,889,888,1776 1724 | 1933,798 1725 | 863,2794 1726 | 2098,2853,1406 1727 | 1882,2854,2855 1728 | 2856,7 1729 | 1876,2857 1730 | 513,977,1610 1731 | 2859,62,952 1732 | 513,2139 1733 | 430,228 1734 | 385,5,353 1735 | 303,2860 1736 | 1246,1781,1132 1737 | 105,106 1738 | 966,2072,1808 1739 | 2861,1201,1745 1740 | 674,2862,213 1741 | 2052,1225 1742 | 2863,2353 1743 | 1490,2864,1840,2001 1744 | 2867,2434 1745 | 1393,200 1746 | 2868,878 1747 | 806,807,2869,626,1107 1748 | 2766,1406,1461 1749 | 1600,2870,1962 1750 | 176,171,250 1751 | 795,814,2872 1752 | 77,1587 1753 | 625,1546 1754 | 585,2874 1755 | 574,2017,1465 1756 | 472,1228,2875 1757 | 516,2420,2190 1758 | 619,740,1465 1759 | 710,2115 1760 | 804,2876,2877 1761 | 1092,1093,1040 1762 | 5,1041,2205 1763 | 2399,1366 1764 | 2879,687 1765 | 2880,260 1766 | 407,852 1767 | 1693,1694 1768 | 900,948,1091 1769 | 1945,1832,2881,725 1770 | 1420,2882,1985 1771 | 5,2721,1041 1772 | 5,353,341 1773 | 5,467 1774 | 1,371 1775 | 288,2080,318 1776 | 473,2130,60 1777 | 1425,2593 1778 | 1287,1996 1779 | 996,1673 1780 | 105,106 1781 | 1500,1108,864 1782 | 2884,2885,2886,2887,2888,2889 1783 | 2890,16,1391 1784 | 2891,747 1785 | 2892,2 1786 | 1925,1926 1787 | 568,1162 1788 | 2893,2894,637 1789 | 619,2895,1687 1790 | 2897,2898,2461,2896 1791 | 2899,137 1792 | 2018,2901 1793 | 2335,2905,2906 1794 | 2907,2908,227 1795 | 6,806 1796 | 2319,2321,2909 1797 | 2910,2911,1935 1798 | 2914,220,2233,2912,2913 1799 | 864,1319 1800 | 446,2104 1801 | 2198,2193 1802 | 1189,2915 1803 | 949,2916,1091 1804 | 258,2917 1805 | 869,2261 1806 | 2918,368 1807 | 2380,2919 1808 | 855,487,2920,854 1809 | 1838,837 1810 | 2072,417,2921 1811 | 1169,105,1663 1812 | 1169,105 1813 | 2922,2923 1814 | 595,453 1815 | 1040,2861,2925,1949 1816 | 1092,2335 1817 | 101,2927,2334 1818 | 511,2232 1819 | 1176,2929 1820 | 988,472,1228 1821 | 1212,1205 1822 | 513,977 1823 | 1916,2930 1824 | 83,84 1825 | 2931,241 1826 | 64,2834 1827 | 859,956 1828 | 2933,2379 1829 | 1995,2934,2413 1830 | 2937,766,2935,2936 1831 | 84,106 1832 | 2938,105 1833 | 111,2310,2573 1834 | 1995,2018 1835 | 2295,2940 1836 | 2941,253 1837 | 407,349 1838 | 2944,1887,2942,2943 1839 | 2945,78 1840 | 1086,511,875,2232 1841 | 732,543 1842 | 618,2946 1843 | 64,2413,1084 1844 | 2947,2948 1845 | 1574,440 1846 | 2950,2125 1847 | 2951,1881 1848 | 228,875,2881,725 1849 | 1273,1,3 1850 | 894,581 1851 | 1862,2442 1852 | 1492,626 1853 | 60,1949 1854 | 636,637 1855 | 1212,1205 1856 | 2954,2948 1857 | 312,2307 1858 | 2955,869 1859 | 2956,60 1860 | 625,2957 1861 | 839,149 1862 | 2910,1935 1863 | 385,2235,2958 1864 | 819,820,2838 1865 | 2959,111,1511 1866 | 643,2960 1867 | 2961,2962,1377,1194 1868 | 2963,2964 1869 | 326,2786 1870 | 2966,2967,2055 1871 | 1086,2968,2969 1872 | 1416,1417 1873 | 533,1892,1891,417 1874 | 2335,2905,2906 1875 | 515,2909 1876 | 1628,402 1877 | 2598,948,2597 1878 | 1393,200 1879 | 2435,412,1226,2971 1880 | 346,105 1881 | 844,2972,202 1882 | 2973,445 1883 | 2881,725 1884 | 1,1233,1234,259,48 1885 | 1564,1565,1566,1841 1886 | 428,782 1887 | 385,2975,1580 1888 | 669,2976 1889 | 2193,2977 1890 | 49,2978,501 1891 | 2980,2979 1892 | 303,412 1893 | 978,318 1894 | 1631,460,1989,45 1895 | 2981,625,1546 1896 | 2982,2983,2984,2985,2986 1897 | 382,383,105 1898 | 204,935 1899 | 2987,536,133 1900 | 275,259 1901 | 2193,2988 1902 | 160,1291 1903 | 878,60,2990,879 1904 | 2991,179 1905 | 295,2992 1906 | 851,2993 1907 | 1093,2335,2408 1908 | 2448,941 1909 | 569,2995 1910 | 428,782 1911 | 288,124,2996 1912 | 5,467 1913 | 1923,2997 1914 | 3001,2998,2999,3000 1915 | 2696,3002,3003 1916 | 629,83,3004 1917 | 2470,1358 1918 | 383,228,796,3005,105 1919 | 142,332 1920 | 2965,3006,1898,1899 1921 | 2631,2632 1922 | 84,106 1923 | 2093,492 1924 | 574,2624 1925 | 3007,2706,2717 1926 | 1297,941 1927 | 569,2995 1928 | 3008,3009,2774 1929 | 1189,475,3010,2823 1930 | 1404,1333,1023 1931 | 3011,3012,2864 1932 | 1990,2477,1220 1933 | 3013,1421 1934 | 3014,3015 1935 | 312,3016 1936 | 385,510,511 1937 | 2663,3017 1938 | 850,5,340 1939 | 304,92 1940 | 385,514 1941 | 3018,2027 1942 | 284,839 1943 | 629,992 1944 | 2124,3019 1945 | 1079,945 1946 | 3020,706 1947 | 1988,3021 1948 | 506,952 1949 | 3022,810 1950 | 1709,2306 1951 | 355,1006 1952 | 967,111 1953 | 3023,1411 1954 | 370,2630 1955 | 3024,888,177,1191,132 1956 | 5,623 1957 | 3025,3026 1958 | 473,160,3027,3028,3029 1959 | 3030,13,1893,626 1960 | 813,3031,3032 1961 | 1988,3033,3034 1962 | 3035,568 1963 | 3036,2094,364 1964 | 47,1 1965 | 2254,1837,3037 1966 | 673,110,321 1967 | 836,1800 1968 | 80,2742,673 1969 | 2669,685 1970 | 3038,1281 1971 | 1215,3039,687 1972 | 1146,1147,241 1973 | 977,522 1974 | 3041,1642 1975 | 3042,1170 1976 | 3043,977 1977 | 1609,3044,1266,250 1978 | 3045,407 1979 | 1040,3046 1980 | 2008,3034 1981 | 86,2754 1982 | 3047,143 1983 | 773,2971 1984 | 3049,849,3048 1985 | 1231,3050,3051 1986 | 3052,472 1987 | 1462,302 1988 | 1791,461,1792,713 1989 | 563,1549 1990 | 473,2130,60 1991 | 135,3053 1992 | 137,3054 1993 | 1708,3055 1994 | 210,1261 1995 | 1572,1858 1996 | 382,839 1997 | 3057,766 1998 | 1425,1426 1999 | 648,1999 2000 | 1982,3058,2245,370 2001 | 843,704,865 2002 | 303,3059,1693,385 2003 | 402,1921 2004 | 3060,3061,3062 2005 | 3063,3064,1785,566 2006 | 1086,2388,1944 2007 | 3065,522 2008 | 2487,1352 2009 | 406,3041 2010 | 2910,1935 2011 | 440,1313,1314,3066 2012 | 1638,1628 2013 | 137,1514 2014 | 430,3068 2015 | 1565,1568,3069,3070,3071,788 2016 | 850,5 2017 | 1091,3075,949,322 2018 | 3076,497,1037 2019 | 406,3078,3077 2020 | 385,859,3079 2021 | 1664,248,1011,3080 2022 | 3081,105 2023 | 83,9 2024 | 773,1618 2025 | 1091,320,2046,322 2026 | 1426,1253 2027 | 851,1492 2028 | 64,3035,568 2029 | 60,133 2030 | 44,613 2031 | 532,1087,677,3082 2032 | 1073,3083 2033 | 105,106 2034 | 850,5 2035 | 284,382 2036 | 611,44 2037 | 2939,1555 2038 | 1616,3084 2039 | 3085,3086,1166,788 2040 | 3087,941 2041 | 1572,3088,1628 2042 | 3089,425 2043 | 303,5,878 2044 | 2258,3090 2045 | 3091,346 2046 | 241,2187 2047 | 588,693 2048 | 570,78 2049 | 2165,2025,871 2050 | 1281,3092 2051 | 137,1514 2052 | 836,837,2979 2053 | 2835,2837,1156,1157 2054 | 2124,3093 2055 | 782,1827 2056 | 383,1742,106 2057 | 747,3094 2058 | 1,3095,626 2059 | 406,747,1283 2060 | 513,1610 2061 | 3096,2193 2062 | 385,105 2063 | 715,1845 2064 | 1646,1647,228 2065 | 568,2371 2066 | 1203,3097,3098,3099,1789,1191 2067 | 1920,907 2068 | 2970,3100,788 2069 | 2620,3101 2070 | 813,3032 2071 | 1464,506 2072 | 305,2090 2073 | 105,106 2074 | 2330,278 2075 | 3103,3104 2076 | 1243,3105 2077 | 1086,1799 2078 | 2470,837,380,2650,1461 2079 | 3107,2856 2080 | 623,3109,516 2081 | 1500,3110 2082 | 574,2452,1176 2083 | 1391,2649 2084 | 1426,584 2085 | 46,1,45 2086 | 1442,1144,3112 2087 | 3113,952 2088 | 1646,1647,2442,2709,228 2089 | 1431,1432,220 2090 | 677,532 2091 | 2161,1343 2092 | 6,632 2093 | 2164,1975,878 2094 | 2736,1465 2095 | 2240,734 2096 | 359,2 2097 | 3116,2854 2098 | 1078,539 2099 | 135,138 2100 | 1401,3117 2101 | 457,3118 2102 | 198,2769,462 2103 | 1875,1874 2104 | 847,848 2105 | 549,303 2106 | 320,321,322 2107 | 2052,1502 2108 | 623,515 2109 | 1652,546,3120 2110 | 863,3121 2111 | 3122,305 2112 | 379,380 2113 | 3081,105 2114 | 5,3123 2115 | 1445,440,441 2116 | 409,3124 2117 | 324,3125 2118 | 340,341 2119 | 688,687 2120 | 2375,2377,1988,3021 2121 | 1968,1971 2122 | 2492,2488,2131,189 2123 | 3126,403 2124 | 2248,2249,2250 2125 | 2662,305 2126 | 201,20,973 2127 | 278,162 2128 | 605,606 2129 | 1658,3127 2130 | 1287,1996 2131 | 1638,693 2132 | 521,522 2133 | 2219,1370 2134 | 3129,3128 2135 | 1490,3130,3131,1893 2136 | 797,1878 2137 | 2094,3132,364 2138 | 3134,1860,264,3133 2139 | 2705,3135,800,60 2140 | 1890,1905 2141 | 1377,3136,3137,3139,3140 2142 | 3141,996,2126,1555 2143 | 715,554 2144 | 355,204,3142,20,2656,180 2145 | 1286,1459,516 2146 | 651,2334 2147 | 3129,260 2148 | 3144,1249 2149 | 295,407 2150 | 1709,472 2151 | 417,3145,3146 2152 | 2844,643 2153 | 6,2535,2278 2154 | 617,619,487 2155 | 3147,3148,1268,605 2156 | 1707,3149,2352,124 2157 | 3151,3152,2611 2158 | 1683,869 2159 | 1526,200,1527 2160 | 284,383,472 2161 | 60,2130,1782 2162 | 3153,1555 2163 | 1086,228,492 2164 | 341,3154 2165 | 3119,751,1991,1854 2166 | 1368,3155 2167 | 303,5,1798,385 2168 | 469,3156 2169 | 3157,3158,1043 2170 | 1426,584 2171 | 1634,527,2057,3159 2172 | 563,1549 2173 | 3160,1432,220 2174 | 859,105,472 2175 | 1861,1862,2173 2176 | 133,536,2507 2177 | 1086,3085,2088 2178 | 2223,2111,3161 2179 | 3163,346 2180 | 1548,1362,473,1360 2181 | 370,2054 2182 | 640,1831 2183 | 291,3164 2184 | 430,3165 2185 | 295,3166,1628,1867,1748 2186 | 3167,3168 2187 | 457,186 2188 | 1,2426,1773,1774,369 2189 | 3039,3169 2190 | 2952,198 2191 | 1416,1417 2192 | 3170,3171,498,499,1023 2193 | 370,259 2194 | 3173,1827 2195 | 549,1293,440 2196 | 2435,1623 2197 | 1670,100,101 2198 | 105,1663 2199 | 2235,1584,2101 2200 | 324,2505 2201 | 2728,806,2101 2202 | 2601,5,1041 2203 | 3091,346 2204 | 2973,445 2205 | 2037,78,3176 2206 | 416,417 2207 | 588,693 2208 | 115,1773,1774 2209 | 2079,1808 2210 | 160,3177 2211 | 1606,2309 2212 | 3178,259 2213 | 3141,878 2214 | 2247,1189,475,1591 2215 | 3180,932 2216 | 2676,143 2217 | 2448,941 2218 | 2226,788 2219 | 2300,941 2220 | 623,105 2221 | 303,1866 2222 | 1980,443,444 2223 | 3089,595,581 2224 | 1508,1509,1424 2225 | 248,1011 2226 | 3182,105,472 2227 | 1150,3183 2228 | 513,84 2229 | 753,3184 2230 | 1504,1503 2231 | 303,3149,3186,3187,2396 2232 | 141,1523,139 2233 | 2315,1840,3188 2234 | 2486,3189 2235 | 951,3190,62 2236 | 3191,3192,3193,2249 2237 | 409,568,3194,2927 2238 | 336,3195 2239 | 133,2171,2507 2240 | 419,3196 2241 | 1862,715 2242 | 956,1211,3197 2243 | 3198,3199 2244 | 2564,334,3200 2245 | 64,326 2246 | 2395,626 2247 | 2135,839 2248 | 3201,5,353,341 2249 | 1910,3202,2953 2250 | 1709,472 2251 | 1,3204,3205,2349 2252 | 2361,1,2426,1233 2253 | 297,643,1157 2254 | 937,1911 2255 | 1377,3206,3207,739,1375 2256 | 532,677,45 2257 | 3209,3210,2558 2258 | 978,1611 2259 | 1882,810 2260 | 3063,3106,3211,3212 2261 | 3213,3214,2129 2262 | 3215,3216,3217 2263 | 3218,532 2264 | 3219,2838,2074 2265 | 595,2513 2266 | 612,62,893 2267 | 3221,228,105 2268 | 380,2098 2269 | 3223,133 2270 | 3224,2432,189 2271 | 3226,1365,1639 2272 | 2193,2300 2273 | 1040,510,60,1547 2274 | 1856,839,3227 2275 | 506,697,817 2276 | 3228,3229,3230,2672 2277 | 3233,2193,3231,3232 2278 | 385,6,806,951 2279 | 3234,3235,619 2280 | 3237,3236,710 2281 | 1862,3238 2282 | 1041,1763 2283 | 1762,1763 2284 | 3239,715 2285 | 2499,3240 2286 | 303,5,1798,2101 2287 | 3241,3242,3243,3244,2434 2288 | 108,3245,149 2289 | 1266,868,869 2290 | 473,3246 2291 | 3247,248 2292 | 406,407 2293 | 1268,3248 2294 | 1968,1970,1971 2295 | 3249,3015,3250 2296 | 2564,334,3200 2297 | 228,105 2298 | 710,2115 2299 | 111,177,955,1511 2300 | 406,977,1518 2301 | 446,45 2302 | 3251,1228 2303 | 83,9 2304 | 3252,3253,478,3255,3254 2305 | 2541,364 2306 | 3258,3256,3257,3216 2307 | 618,1949 2308 | 1415,2991,1519 2309 | 851,3259 2310 | 515,2909 2311 | 1388,595,2513 2312 | 2382,2511,2516,1316 2313 | 3260,3261,729 2314 | 392,864,3262,3263 2315 | 2316,440,441 2316 | 3264,2251,371,45 2317 | 3265,650,453 2318 | 270,1585 2319 | 440,403 2320 | 262,1660,3266,3267 2321 | 3269,22,3268 2322 | 406,1929 2323 | 807,1793 2324 | 385,1846,472 2325 | 1885,241 2326 | 842,2466,677 2327 | 1880,643,1157,297 2328 | 1333,1027,389,3270 2329 | 2061,1086 2330 | 3271,1917 2331 | 697,1853,3272,3273 2332 | 3274,3275,3276,1500 2333 | 76,3277 2334 | 303,120,132,2801 2335 | 1286,485,492 2336 | 2257,63,3278 2337 | 2562,84,106 2338 | 3279,3280,1312 2339 | 469,1182 2340 | 267,264 2341 | 563,2323,3150 2342 | 1999,2699 2343 | 3281,1604,1605 2344 | 242,2519 2345 | 513,934 2346 | 3282,1813 2347 | 1482,1483 2348 | 2470,3283,230 2349 | 3284,2461,2896,2897,2898 2350 | 838,2596,149 2351 | 3285,1743 2352 | 836,1609,3287 2353 | 84,106 2354 | 3288,3289,3290,952 2355 | 1115,1241 2356 | 1,626 2357 | 1412,3291,3034 2358 | 3292,2327 2359 | 3293,835 2360 | 723,146,1064,1277 2361 | 176,111,2445 2362 | 1445,440,2603 2363 | 80,3294,2498 2364 | 1004,1003 2365 | 3295,2168 2366 | 3296,3297 2367 | 1719,3298 2368 | 430,186 2369 | 1555,20 2370 | 288,287 2371 | 693,3300 2372 | 2442,2031,228 2373 | 3301,297 2374 | 3302,3303,2878 2375 | 44,782 2376 | 978,1714 2377 | 701,700,3305,3306 2378 | 38,907,906,2845 2379 | 382,839 2380 | 2532,1167 2381 | 3308,941 2382 | 1,3309,1545,3 2383 | 484,3310,230 2384 | 330,346 2385 | 487,3311 2386 | 2353,3312,3313,3314,1162 2387 | 622,3315,62 2388 | 636,637 2389 | 2848,3316,3317,3318,3319 2390 | 472,1228,2875 2391 | 2470,1406,1461 2392 | 297,200 2393 | 3299,2923,230 2394 | 791,1513 2395 | 3005,105 2396 | 2756,3321,2757 2397 | 1501,3322,3323,3324,2411 2398 | 3325,1615 2399 | 2676,143 2400 | 1954,3327,3328,3329,3330 2401 | 2165,2166 2402 | 297,2899,3331 2403 | 0,851 2404 | 2493,1203,2465 2405 | 1250,6,1251 2406 | 3332,332 2407 | 1189,626 2408 | 513,3333 2409 | 101,277,278 2410 | 3334,1266,1609,725 2411 | 3335,370 2412 | 2615,346 2413 | 3336,3337,60 2414 | 828,7 2415 | 1389,643 2416 | 694,695,3338 2417 | 1024,1025,983,829 2418 | 64,3340 2419 | 3341,1999 2420 | 3342,3343 2421 | 1073,3344 2422 | 2632,3345 2423 | 3346,3347,1798 2424 | 1572,1628,330 2425 | 457,186 2426 | 1091,322 2427 | 2873,2284 2428 | 1121,3348,322 2429 | 1027,389 2430 | 1,1233,3349,1691 2431 | 5,122 2432 | 220,2695 2433 | 1792,3350 2434 | 230,1249 2435 | 2952,1453,3351,3352 2436 | 2170,1972,1973 2437 | 3353,3354 2438 | 473,425 2439 | 2994,2632 2440 | 2975,1579,385 2441 | 1086,3005,1963 2442 | 385,5 2443 | 46,72 2444 | 1910,1821 2445 | 198,1818 2446 | 545,1037 2447 | 303,3356,2732,1166 2448 | 546,548 2449 | 643,3357 2450 | 2693,2694 2451 | 3358,651,2334 2452 | 3359,3360,541,1121,1123,1961,1127,322 2453 | 591,515 2454 | 2771,806 2455 | 1709,2306,472 2456 | 326,1900 2457 | 3361,489 2458 | 295,407 2459 | 1161,369,48,259 2460 | 346,2112 2461 | 3072,3362 2462 | 3303,3363 2463 | 388,45 2464 | 680,1882,2465 2465 | 1467,3364 2466 | 6,806,951 2467 | 298,213 2468 | 303,412,1916,414 2469 | 2068,2069,147,643 2470 | 3365,3366,619 2471 | 288,122,124 2472 | 475,1,2817 2473 | 791,1513 2474 | 385,515 2475 | 241,3368 2476 | 2325,3286 2477 | 680,1882,1520,2465 2478 | 464,111 2479 | 419,532 2480 | 743,1394 2481 | 373,844,2972 2482 | 607,3298,605 2483 | 3371,695,3370 2484 | 864,865 2485 | 709,3372 2486 | 773,1358 2487 | 1086,632,300,6,1799 2488 | 259,3373 2489 | 1490,1710 2490 | 582,583 2491 | 303,1866 2492 | 1279,3374,1281 2493 | 2193,2300,2333 2494 | 380,2543,1023 2495 | 143,273 2496 | 3375,907 2497 | 2399,1366 2498 | 1511,2683 2499 | 2313,2262 2500 | 94,1519,1389 2501 | 3376,7 2502 | 710,756 2503 | 454,451,452 2504 | 1054,105 2505 | 513,3377 2506 | 21,16 2507 | 320,321,322 2508 | 549,1231 2509 | 948,443,483 2510 | 2466,3378,371 2511 | 402,403 2512 | 2670,3379 2513 | 136,137 2514 | 3381,1426,584,3380 2515 | 2243,297 2516 | 820,818 2517 | 2656,3382 2518 | 637,3383,3384 2519 | 336,66,45 2520 | 303,1866 2521 | 3089,425 2522 | 3387,935,2055 2523 | 385,467 2524 | 3388,522 2525 | 123,3389,60 2526 | 1910,3390,2953 2527 | 1849,1850 2528 | 445,2428 2529 | 227,2858 2530 | 1923,2399,2670 2531 | 2780,3391 2532 | 643,2960 2533 | 406,977,1518 2534 | 2865,2226,143,3392 2535 | 2399,2177,2427 2536 | 2448,941 2537 | 1893,1841 2538 | 1243,2318 2539 | 1628,402 2540 | 1040,2925,1949 2541 | 3395,3396,3397,3398,1825,3394 2542 | 3298,605 2543 | 1925,1926 2544 | 430,755,2717,3399 2545 | 1337,843,2700 2546 | 473,3400,60 2547 | 2881,725 2548 | 1266,3101 2549 | 709,370 2550 | 385,467,1013 2551 | 1169,105 2552 | 627,62 2553 | 284,839 2554 | 3403,106 2555 | 850,5 2556 | 791,1513 2557 | 1078,807 2558 | 2861,105 2559 | 1897,837 2560 | 3405,3404 2561 | 3406,1127 2562 | 2856,7 2563 | 3407,78 2564 | 446,3408 2565 | 1639,3409 2566 | 964,2645,205,2644 2567 | 3410,810 2568 | 3411,1851,1854 2569 | 1079,945 2570 | 1981,428 2571 | 1708,301,302 2572 | 454,2990 2573 | 3143,3138,3412 2574 | 107,108 2575 | 709,791 2576 | 3157,1043 2577 | 3413,1853,612 2578 | 1373,3414,3415,3416 2579 | 1662,3417 2580 | 3418,2243 2581 | 2843,227 2582 | 2399,1366 2583 | 284,382 2584 | 2004,346 2585 | 457,1909 2586 | 2486,3419 2587 | 3376,7 2588 | 3388,522 2589 | 851,1493 2590 | 3420,3421 2591 | 1,2426,259 2592 | 643,1291 2593 | 3422,533,532 2594 | 3423,1064,364 2595 | 88,993 2596 | 406,977 2597 | 732,543 2598 | 1803,1804 2599 | 3424,3425,723,725 2600 | 330,149 2601 | 2710,948 2602 | 469,3427 2603 | 5,326 2604 | 101,250,279 2605 | 1582,3428,1599 2606 | 2549,1545,2694 2607 | 3430,3431 2608 | 852,605 2609 | 1352,1335 2610 | 1582,521,522 2611 | 177,2310,111 2612 | 383,796 2613 | 1810,3432 2614 | 1925,1133 2615 | 428,782 2616 | 570,3433 2617 | 1091,744,948,3434 2618 | 1147,241 2619 | 3381,1426 2620 | 1693,3435 2621 | 2426,2028 2622 | 643,2960 2623 | 2838,2074 2624 | 2295,3438,3439,2298 2625 | 5,1763 2626 | 2663,1816 2627 | 419,532 2628 | 1073,3441,2670 2629 | 3190,1086,62 2630 | 612,2501 2631 | 3442,44,1265 2632 | 2257,2235,63,2101 2633 | 574,1176 2634 | 2632,3345 2635 | 115,2252,3443 2636 | 1021,105 2637 | 622,1086,62 2638 | 2206,412 2639 | 7,452 2640 | 3444,1596 2641 | 2989,873 2642 | 1086,2010,228 2643 | 3445,230 2644 | 3303,1527 2645 | 1959,3446 2646 | 143,3447 2647 | 3448,160 2648 | 3449,2100,1437 2649 | 3450,2303 2650 | 1785,605 2651 | 385,353,105 2652 | 3451,3452 2653 | 1212,1205 2654 | 549,440 2655 | 200,839,321 2656 | 1582,1599 2657 | 513,977 2658 | 3453,489 2659 | 3454,1176 2660 | 3455,149 2661 | 2399,1366 2662 | 3456,106 2663 | 1792,3350 2664 | 101,1782 2665 | 2212,156 2666 | 820,3089,1205,818 2667 | 192,798 2668 | 568,1388,1763 2669 | 2486,2740,2741,2742 2670 | 2066,520,2065 2671 | 2401,260 2672 | 2938,228 2673 | 3072,84 2674 | 3457,445 2675 | 2609,2044 2676 | 5,341 2677 | 145,1064,364 2678 | 8,1304 2679 | 3282,1813 2680 | 1040,1093 2681 | 3458,2295,156 2682 | 6,632 2683 | 3223,1870,133 2684 | 385,1579 2685 | 2235,2958 2686 | 385,1579 2687 | 385,3459,3460,1579 2688 | 705,706 2689 | 2361,1,2426,1233 2690 | 200,768 2691 | 1667,327 2692 | 3461,3462,878,3463 2693 | 568,1942 2694 | 1399,791 2695 | 723,753 2696 | 931,2634 2697 | 2767,2768,106 2698 | 3464,869 2699 | 3465,978,1873,1518 2700 | 3466,1342 2701 | 1886,49,3467 2702 | 388,208 2703 | 701,3468 2704 | 1078,618,807 2705 | 636,3469 2706 | 2961,1194 2707 | 247,1751 2708 | 3471,707,865 2709 | 3472,145,146 2710 | 3264,371,45 2711 | 536,133 2712 | 2399,3473,2177 2713 | 1638,321 2714 | 3005,105 2715 | 2365,2544 2716 | 1955,457 2717 | 3224,188,189 2718 | 3474,718 2719 | 3475,3476,2010 2720 | 2720,3477 2721 | 94,1041,1242 2722 | 312,3478,687 2723 | 3479,1388,1782 2724 | 2343,426 2725 | 3480,536,133 2726 | 3481,3019,321,2566 2727 | 2550,2164,1975,878 2728 | 2251,45 2729 | 851,3195 2730 | 2025,155 2731 | 3005,414,412,602 2732 | 2234,1906 2733 | 3172,807 2734 | 1899,2469,45 2735 | 1366,3483,2157 2736 | 2081,2785 2737 | 330,297,149 2738 | 123,60 2739 | 837,3485 2740 | 376,605,149 2741 | 1071,2762 2742 | 710,364 2743 | 444,445 2744 | 797,1878 2745 | 275,259,53 2746 | 78,148 2747 | 2435,2837,773 2748 | 2212,3487 2749 | 996,893 2750 | 2674,2464 2751 | 3488,510 2752 | 1107,1751 2753 | 3489,3490,1648,3057,766 2754 | 2330,278 2755 | 105,472 2756 | 2439,3491 2757 | 3492,1693 2758 | 623,105 2759 | 1634,3494,3495,3496,2241 2760 | 1638,1628,693 2761 | 693,402,92 2762 | 3279,3280 2763 | 3497,905 2764 | 326,3498 2765 | 2952,1453,3351,3499 2766 | 3346,2707,2708,3500 2767 | 108,177,955 2768 | 1523,783 2769 | 1180,3501 2770 | 2500,78,149 2771 | 2757,1971 2772 | 288,789,2795 2773 | 3504,1719,3502,3503 2774 | 3505,1362 2775 | 3307,3506,3507 2776 | 3508,3509,1615 2777 | 1196,1358,2158 2778 | 2424,643 2779 | 175,3226 2780 | 2989,873 2781 | 1903,2422 2782 | 626,3510 2783 | 3511,1132 2784 | 284,472 2785 | 3512,327 2786 | 568,326 2787 | 1231,3513 2788 | 326,2786 2789 | 241,3514,3515 2790 | 3517,3516 2791 | 3518,2537 2792 | 177,955,111,2006 2793 | 1630,1631 2794 | 1664,1133 2795 | 407,852 2796 | 3519,1693 2797 | 1122,1123,791 2798 | 1717,3502 2799 | 3521,734 2800 | 2679,809,810 2801 | 3522,764 2802 | 207,3429,45 2803 | 3523,941 2804 | 93,3524,2104 2805 | 160,3525,725,1120 2806 | 3224,1120,2428 2807 | 1445,63 2808 | 2330,278 2809 | 1871,532 2810 | 843,704 2811 | 1107,3059,220 2812 | 1719,3526 2813 | 473,1639,3527 2814 | 2816,2371,568 2815 | 1073,2399,2670,835 2816 | 3528,669 2817 | 2910,1935,2381 2818 | 1416,3529 2819 | 385,1869 2820 | 566,659,660 2821 | 3530,3531,2644,2645 2822 | 1555,20 2823 | 2980,389,1023 2824 | 1885,3532,2173,2436 2825 | 826,825 2826 | 1237,83,869 2827 | 312,917,3533 2828 | 1964,1965 2829 | 1268,3248 2830 | 677,532 2831 | 515,516 2832 | 275,1913,1914 2833 | 312,228,2852 2834 | 1156,1157 2835 | 3534,287 2836 | 3160,1432,220 2837 | 1164,3535 2838 | 2212,3487 2839 | 928,687 2840 | 64,3536 2841 | 3537,2235,42 2842 | 3538,16 2843 | 3458,2295,3539,2299 2844 | 1207,3540,3541 2845 | 1983,370,2028 2846 | 253,3542,2070 2847 | 948,3543 2848 | 1114,859,3079,385 2849 | 797,876 2850 | 1243,2191 2851 | 1572,1628,402 2852 | 3544,287 2853 | 248,3545,1615 2854 | 1086,186,300 2855 | 2420,773,1176 2856 | 2663,1816 2857 | 187,253 2858 | 1169,105 2859 | 1902,515 2860 | 840,2352,3385 2861 | 231,1424 2862 | 643,2222 2863 | 643,3357 2864 | 3547,2875 2865 | 2193,3548 2866 | 242,3550,479 2867 | 3551,1992 2868 | 1445,63 2869 | 2193,3552 2870 | 83,643 2871 | 2078,993 2872 | 3553,1502 2873 | 1968,3554,1904,436 2874 | 894,581 2875 | 3555,3556 2876 | 288,1095,3557 2877 | 6,806,951 2878 | 1745,106 2879 | 747,1283 2880 | 2462,2463,443 2881 | 1463,105 2882 | 2831,3558 2883 | 2193,3559 2884 | 1631,3560,3561,45 2885 | 231,3562,1424 2886 | 3299,230 2887 | 1670,1266,955 2888 | 706,809 2889 | 695,584,541 2890 | 1463,105 2891 | 326,1900 2892 | 3521,3563 2893 | 175,104,1797 2894 | 5,382,383,228,796 2895 | 3564,2284 2896 | 1752,2746 2897 | 219,220 2898 | 1770,907 2899 | 1127,1091 2900 | 3566,827,911 2901 | 3036,146,3569 2902 | 3570,312,859 2903 | 274,1207,369,259 2904 | 2773,3571,3572 2905 | 288,1988,1811,3033 2906 | 3573,3574,3009 2907 | 2399,835 2908 | 575,1191 2909 | 1093,2221 2910 | 3576,843,202,3575 2911 | 3224,3411,302 2912 | 377,3577 2913 | 1057,2567,3578 2914 | 1875,3295,2168 2915 | 1890,1889 2916 | 336,1134 2917 | 824,3579,3580,117 2918 | 2355,3581,2749 2919 | 64,188,189 2920 | 303,301,302 2921 | 458,459 2922 | 1785,3582 2923 | 3583,3115 2924 | 91,2464 2925 | 3584,3585,3571 2926 | 3389,60 2927 | 545,3586,1037 2928 | 2072,3587 2929 | 489,710 2930 | 851,1493 2931 | 3588,426 2932 | 464,177,111,775 2933 | 1752,941 2934 | 1388,2126 2935 | 1,2426,259 2936 | 475,626 2937 | 3590,2142,2143,45 2938 | 1490,2943 2939 | 3102,941 2940 | 326,1556 2941 | 744,2526 2942 | 385,3591,1919,472 2943 | 3593,3247,248,3592 2944 | 3594,1449 2945 | 2330,278 2946 | 3595,2262 2947 | 36,2827 2948 | 3591,220 2949 | 60,1949 2950 | 3597,262,1661 2951 | 3598,3599 2952 | 3413,612 2953 | 2980,1332,1333 2954 | 1693,1694 2955 | 297,200 2956 | 3600,200 2957 | 1719,718,2196 2958 | 3601,287 2959 | 3602,332 2960 | 3605,2235 2961 | 878,753,952 2962 | 105,1663 2963 | 847,1595 2964 | 591,515 2965 | 843,3607,2727 2966 | 3608,869 2967 | 3089,425,973 2968 | 1875,1719,250 2969 | 308,3565 2970 | 137,3609 2971 | 3299,2923,230 2972 | 2258,2045 2973 | 184,308,3610 2974 | 1445,3611,3612,3613 2975 | 1917,993 2976 | 1816,3615 2977 | 3616,2463 2978 | 332,2554 2979 | 526,528,1878 2980 | 3617,143 2981 | 457,3358 2982 | 467,355,20 2983 | 86,2495,2932 2984 | 330,346 2985 | 186,951 2986 | 931,2555 2987 | 382,839 2988 | 2094,364 2989 | 385,5,353 2990 | 3620,3200,334,3618,3619 2991 | 2771,6,513,806 2992 | 414,412,602 2993 | 434,1291 2994 | 2290,2292 2995 | 1968,1969,1971 2996 | 744,1773,3621 2997 | 3622,1797 2998 | 369,370,3623 2999 | 3624,485,492 3000 | 1147,241 3001 | 520,179 3002 | 935,3387 3003 | 977,978 3004 | 1981,3625 3005 | 997,326 3006 | 1174,3626 3007 | 542,543 3008 | 3627,207 3009 | 3628,3629,1162 3010 | 141,1401,139 3011 | 2366,425 3012 | 765,886 3013 | 1809,941 3014 | 819,820,1321 3015 | 3630,1545 3016 | 44,611 3017 | 64,65 3018 | 977,978 3019 | 1297,941 3020 | 3631,3632,710 3021 | 2085,941 3022 | 889,868,3633,3634,465,2345 3023 | 2472,2823,475,2471 3024 | 966,419,532 3025 | 47,2312 3026 | 305,3635,3636 3027 | 382,383 3028 | 3637,198,3638 3029 | 303,1574,549 3030 | 1004,1003 3031 | 3369,2125 3032 | 999,998 3033 | 2838,3639,1461 3034 | 2949,612,3640 3035 | 2709,2031,228 3036 | 2216,3077,3078 3037 | 820,3089,1205,818 3038 | 3641,453,1213 3039 | 3642,3643 3040 | 1593,3644 3041 | 64,326 3042 | 549,2495 3043 | 619,1698,1465 3044 | 3646,307 3045 | 1756,693 3046 | 3489,2295 3047 | 1980,444,45 3048 | 3059,1693 3049 | 3425,353 3050 | 3647,543 3051 | 3648,3649,2632 3052 | 3650,1831 3053 | 619,3651,2659,2090 3054 | 3178,3652,3420,259 3055 | 3653,2256 3056 | 1188,1189,475 3057 | 1912,1389,3654 3058 | 3309,1545 3059 | 526,3655,1878 3060 | 3042,1170 3061 | 610,869 3062 | 48,259 3063 | 457,718,1742 3064 | 2159,723,364 3065 | 680,1882 3066 | 3656,1133 3067 | 640,149 3068 | 842,1087,677,532 3069 | 638,640,2695 3070 | 1971,436,1235 3071 | 533,855 3072 | 3657,1027,389 3073 | 1771,1772,1560 3074 | 2144,34 3075 | 3658,1176,396 3076 | 3106,3659,892 3077 | 1207,3540,3541 3078 | 5,353 3079 | 640,639 3080 | 3660,2924 3081 | 246,270 3082 | 1243,2191 3083 | 820,3662,3663,3661 3084 | 2319,3664 3085 | 487,3665 3086 | 2686,2687 3087 | 515,991 3088 | 623,859 3089 | 241,3368 3090 | 3667,3668,970 3091 | 1206,1207,1208,918 3092 | 1949,2338 3093 | 3315,1767 3094 | 142,3669,2964 3095 | 3036,146,3670 3096 | 1605,2612 3097 | 668,983 3098 | 1856,839 3099 | 2100,302 3100 | 521,522 3101 | 1881,2943 3102 | 0,2093,851 3103 | 1420,1985 3104 | 868,1266,869,2528 3105 | 485,486,487 3106 | 795,385 3107 | 3672,143 3108 | 406,3078,3077 3109 | 186,796 3110 | 2016,3561,1631 3111 | 570,78 3112 | 219,3673 3113 | 2125,2419 3114 | 46,1,45 3115 | 3517,3299 3116 | 723,753 3117 | 2581,47 3118 | 196,514,385 3119 | 2094,145,364 3120 | 330,2308,3674 3121 | 230,1249 3122 | 5,678 3123 | 478,3253 3124 | 3507,1978,370,3596,1134 3125 | 1500,202 3126 | 406,2040 3127 | 1287,1996,1645 3128 | 1916,3675 3129 | 303,494 3130 | 2141,36 3131 | 619,2736 3132 | 5,3078,1950 3133 | 1421,1420,3676 3134 | 843,2053,3677 3135 | 515,2909 3136 | 1393,2432,189 3137 | 1191,60 3138 | 813,3678,1421 3139 | 419,532 3140 | 2563,113 3141 | 192,864,1109,3679 3142 | 382,383,105 3143 | 515,472 3144 | 3091,346 3145 | 3517,1975 3146 | 1078,807,951 3147 | 1085,486,487 3148 | 1119,1120 3149 | 3680,250,2683,101,1719 3150 | 3063,3681,566 3151 | 1176,1993 3152 | 2234,2226,3320 3153 | 623,515 3154 | 3682,791 3155 | 105,472 3156 | 948,483 3157 | 161,60 3158 | 847,848 3159 | 3683,3111 3160 | 3684,369,1545,259 3161 | 476,666 3162 | 1861,1550 3163 | 385,1709 3164 | 143,273 3165 | 385,5 3166 | 747,3094 3167 | 900,863,1639 3168 | 1857,201,20 3169 | 2486,3189 3170 | 3448,1941,160 3171 | 3685,1662 3172 | 1772,1988,3686 3173 | 382,383,105,796 3174 | 341,253,3687 3175 | 619,1324,1687 3176 | 3688,346 3177 | 2302,1854 3178 | 3689,3690,1538,264 3179 | 135,138,3691 3180 | 1708,3055 3181 | 3165,62 3182 | 3692,3484,1144 3183 | 3695,3693,3694,1365 3184 | 2193,3696 3185 | 806,1162,2101,3697 3186 | 3698,1194 3187 | 3699,3700,2075,3701,1616,2291 3188 | 2394,3702 3189 | 1780,1781 3190 | 305,1000 3191 | 83,84 3192 | 101,2692,1976,626 3193 | 729,0 3194 | 3555,300 3195 | 1218,2607 3196 | 823,3703 3197 | 1092,1093,2335 3198 | 1617,3704 3199 | 1121,464,111,2445 3200 | 3705,1043,2501 3201 | 2780,220 3202 | 3706,1133 3203 | 80,1402,1407 3204 | 2181,907 3205 | 406,1518 3206 | 414,412,602 3207 | 765,1387,2577 3208 | 3707,522 3209 | 3708,2772,2773,947 3210 | 1693,3435 3211 | 2258,3090 3212 | 828,829,3709 3213 | 49,3710,501 3214 | 3005,105 3215 | 7,833,3711 3216 | 430,3165 3217 | 2007,260 3218 | 502,973 3219 | 3712,2234,2226,3320 3220 | 1806,1807,2157 3221 | 16,346 3222 | 521,522 3223 | 3714,279,281 3224 | 228,796 3225 | 2368,3715,865 3226 | 3716,1657 3227 | 5,2038 3228 | 1508,1509 3229 | 502,973 3230 | 7,830 3231 | 2387,595,2513 3232 | 3717,3718 3233 | 346,1834 3234 | 3720,156 3235 | 346,349 3236 | 3449,2100,3721 3237 | 1207,3722,369,259 3238 | 1078,220 3239 | 1395,643 3240 | 835,2484 3241 | 3723,284 3242 | 406,977 3243 | 3724,1797 3244 | 3725,44 3245 | 725,2726 3246 | 2424,643,3726 3247 | 3727,3728,2631,2632 3248 | 1692,554 3249 | 3729,230 3250 | 2844,643 3251 | 33,34 3252 | 111,836,955,3730 3253 | 3175,1017 3254 | 2486,327 3255 | 110,673 3256 | 2028,3731 3257 | 3732,843,3733 3258 | 2133,84 3259 | 584,631 3260 | 291,654 3261 | 5,1041,2205 3262 | 1,45 3263 | 3199,3734 3264 | 3735,950 3265 | 430,755,2717,3399 3266 | 751,675,1854 3267 | 1253,207,3162 3268 | 3736,978,934 3269 | 743,1027,3737 3270 | 3738,1170 3271 | 402,92 3272 | 3741,3739,3740 3273 | 568,1162 3274 | 895,896 3275 | 461,1898,1899 3276 | 3403,106 3277 | 3742,3743,417,445 3278 | 3442,44 3279 | 1829,1906,3744 3280 | 296,2213,1235 3281 | 3145,3745,533,416,417 3282 | 494,3746,453 3283 | 3747,2008,42 3284 | 1040,3046 3285 | 295,3166 3286 | 425,220 3287 | 5,2435,353 3288 | 1287,1996 3289 | 2085,941 3290 | 3748,3749,3926,3386 3291 | 3708,2772,2773 3292 | 1507,3750 3293 | 2016,3560,1631 3294 | 3693,3694,1365 3295 | 406,407 3296 | 1832,3751 3297 | 3752,581 3298 | 3424,725,1782 3299 | 3724,1797 3300 | 1885,241 3301 | 1582,3753 3302 | 1507,1508,3754 3303 | 1670,495,2337 3304 | 999,3089,385 3305 | 3756,3755,3292 3306 | 3757,90 3307 | 3758,1639 3308 | 3759,510,511 3309 | 675,1191 3310 | 3760,3761 3311 | 3762,978,2097 3312 | 894,581 3313 | 3763,3764,3765,3766 3314 | 595,596 3315 | 160,434,1291 3316 | 1979,791,2046 3317 | 0,625,1546 3318 | 1664,1133 3319 | 22,1117 3320 | 5,747 3321 | 16,2334 3322 | 2243,931 3323 | 2724,2096,2725,2714,2556 3324 | 385,1709 3325 | 369,370,2426 3326 | 2388,228,105 3327 | 160,1924,1266,3767,3768 3328 | 78,839,149 3329 | 3402,591,515 3330 | 521,522 3331 | 23,16 3332 | 2574,3769,3770 3333 | 88,2022,3771,3772 3334 | 78,3773 3335 | 3774,3775,142 3336 | 8,3776 3337 | 2609,2610 3338 | 473,241,3777 3339 | 680,1882 3340 | 3779,617,3778 3341 | 3780,1667,3222 3342 | 3781,2031,84 3343 | 3782,2157,2158 3344 | 2592,1325 3345 | 1072,3783 3346 | 1848,1850,3784,3785 3347 | 60,3786 3348 | 714,220,951 3349 | 3787,673 3350 | 284,200 3351 | 1631,3788,2015 3352 | 227,2858 3353 | 1107,248,1010 3354 | 1073,807 3355 | 1004,1003 3356 | 2709,228 3357 | 2945,1709 3358 | 3791,996 3359 | 2965,1899 3360 | 1180,1181 3361 | 2456,3792,3793,2064,2800,202 3362 | 3794,3795,3026,2287,2005 3363 | 2213,3796 3364 | 3797,440,441 3365 | 145,1064,364 3366 | 3798,1999 3367 | 385,623,1176,1580 3368 | 259,48,369,1234 3369 | 3799,3800,3801,1157 3370 | 513,977,522 3371 | 2576,977 3372 | 1425,231,3562 3373 | 278,3802 3374 | 1426,584 3375 | 3803,3804,593 3376 | 1004,101,3470 3377 | 2233,3805,3806 3378 | 2093,851 3379 | 2235,2226,3807 3380 | 907,2181,2845 3381 | 574,575 3382 | 2614,773 3383 | 943,3808,945 3384 | 5,228,2852 3385 | 383,105 3386 | 3809,355 3387 | 640,2596 3388 | 3549,332 3389 | 795,814,2872 3390 | 3186,1782 3391 | 888,1281,3232 3392 | 33,3810 3393 | 2958,2147 3394 | 3039,3811 3395 | 640,1831 3396 | 383,796 3397 | 456,978 3398 | 1684,1339,595 3399 | 1373,2632,3812 3400 | 389,1333,3813 3401 | 2010,515,228 3402 | 2399,3473,2177 3403 | 3102,941 3404 | 176,1628,2924 3405 | 1683,3814,956 3406 | 3815,1266,60 3407 | 288,318 3408 | 835,3816 3409 | 2335,2905,2906 3410 | 1638,1628,693 3411 | 3817,3818,2282 3412 | 3819,3820,353 3413 | 1840,3821,3822 3414 | 3823,1841,2001,2002 3415 | 1,2426,370,1691 3416 | 3824,341 3417 | 298,3825 3418 | 1917,219 3419 | 1945,2816,612 3420 | 995,2106,595 3421 | 5,3826 3422 | 1935,3827 3423 | 3828,1708,301 3424 | 3829,417 3425 | 2424,2579,643 3426 | 727,2511,2693,3830 3427 | 3831,3404 3428 | 454,63 3429 | 278,3802 3430 | 2609,2044 3431 | 2797,1164 3432 | 3832,200 3433 | 2609,2610 3434 | 226,1133 3435 | 3833,2461 3436 | 996,3834,566 3437 | 3835,353,1043 3438 | 1114,385 3439 | 1898,3789,3790,1899 3440 | 765,3836,1788 3441 | 2248,2249,2250 3442 | 792,2659,801 3443 | 115,3621,370 3444 | 1182,947 3445 | 469,3427 3446 | 2211,346 3447 | 3201,2100,452,3837 3448 | 609,610 3449 | 2619,177,2618 3450 | 658,3838,3839 3451 | 1968,1969,1971 3452 | 3840,612,3640 3453 | 2424,643,3726 3454 | 1979,3841 3455 | 83,3842 3456 | 2663,2632 3457 | 175,789,3843 3458 | 2598,948,3393,2597 3459 | 115,1773,1774 3460 | 1243,2318 3461 | 1719,3844 3462 | 115,1545 3463 | 617,3778 3464 | 3845,2484 3465 | 1595,1596 3466 | 2068,2069,147 3467 | 1,625 3468 | 1492,4,3846,626 3469 | 487,1083 3470 | 2193,3847 3471 | 105,106 3472 | 2173,3849 3473 | 3850,78 3474 | 1425,2593 3475 | 1979,791,3851,2187 3476 | 464,108 3477 | 3852,3853 3478 | 549,820 3479 | 430,186 3480 | 111,177,1511 3481 | 514,1013 3482 | 346,1834 3483 | 2176,2686,370,3857 3484 | 1107,248,1010 3485 | 473,3436 3486 | 583,2414 3487 | 161,162 3488 | 1221,2666,568,279 3489 | 1278,515 3490 | 473,2735 3491 | 305,462 3492 | 995,996 3493 | 498,499,1022,1023 3494 | 1164,3535 3495 | 1745,106,84,3858 3496 | 859,1763 3497 | 3214,3860 3498 | 370,3861,371,2028 3499 | 843,844,3862 3500 | 3584,1492 3501 | 278,161 3502 | 2315,3612,440,1445 3503 | 3519,1693 3504 | 105,1663 3505 | 3863,3864,1734 3506 | 1717,3865,3033 3507 | 851,1493 3508 | 428,782 3509 | 32,2379 3510 | 3866,1168,1912 3511 | 3299,230 3512 | 3684,1545,259 3513 | 402,92 3514 | 795,3868 3515 | 583,584,3869 3516 | 0,851 3517 | 3870,2019,1162 3518 | 2989,873,2303 3519 | 277,2726,3871 3520 | 3045,1699 3521 | 791,3872,3851,2187 3522 | 765,2256 3523 | 115,1773,1774 3524 | 1211,2306 3525 | 451,452,453,454,3873 3526 | 1,1492,626,3095 3527 | 3874,631 3528 | 6,3875 3529 | 3876,230 3530 | 945,3877 3531 | 1879,568,279 3532 | 440,403 3533 | 2387,578,581 3534 | 948,3878,322 3535 | 3313,1162,452 3536 | 3879,713 3537 | 1591,147 3538 | 3085,3086,1166,788 3539 | 3880,3881,1084 3540 | 3883,117,1862 3541 | 800,803 3542 | 2752,1697 3543 | 3885,3886,3887,3888,3889 3544 | 3658,3890 3545 | 959,3891,1555,20 3546 | 2998,3892 3547 | 3893,149 3548 | 438,2180 3549 | 850,1974,636 3550 | 908,200 3551 | 3894,3091,2536 3552 | 2533,277,278 3553 | 1983,3623 3554 | 3299,3895 3555 | 1756,693 3556 | 1683,3814 3557 | 1009,2822,1854 3558 | 3180,932,2217 3559 | 2556,3896 3560 | 2614,773,2392 3561 | 3897,2792,1972 3562 | 2048,895,896,20 3563 | 3898,161,162 3564 | 1987,3899,599,3900 3565 | 966,1897 3566 | 2832,2514,3901,2139 3567 | 2083,278 3568 | 426,3903 3569 | 2081,2787,454,2785 3570 | 3904,3905 3571 | 2629,440,441 3572 | 3005,105 3573 | 1119,2209,1120 3574 | 3104,3756 3575 | 1582,383 3576 | 685,3906 3577 | 1092,1093,2335 3578 | 3907,1628 3579 | 1251,3908 3580 | 487,120 3581 | 839,796 3582 | 2165,2025,871 3583 | 1980,977,522 3584 | 2740,2742 3585 | 46,513 3586 | 101,2412,16 3587 | 1864,3909,200,1394 3588 | 3910,200,839 3589 | 3911,332 3590 | 2844,643 3591 | 385,795 3592 | 2918,368 3593 | 489,2118,3912,532 3594 | 123,60,189 3595 | 1814,406 3596 | 1119,1120 3597 | 2728,430 3598 | 925,194 3599 | 149,2063,376,3913 3600 | 326,1900 3601 | 3353,3354,3671,131 3602 | 3914,3149 3603 | 3915,1882 3604 | 623,3916 3605 | 533,417,3145 3606 | 3658,2745 3607 | 5,747 3608 | 3683,3111 3609 | 1762,1763 3610 | 305,297 3611 | 2275,1971 3612 | 513,934 3613 | 3521,734 3614 | 160,1280 3615 | 1587,287 3616 | 842,2474 3617 | 1684,3919,595 3618 | 1815,2985,972,2986 3619 | 1040,2925,1949 3620 | 3601,287 3621 | 3920,1887 3622 | 3791,996 3623 | 1201,1764,2883 3624 | 160,1280 3625 | 1783,1023 3626 | 576,220 3627 | 2861,105 3628 | 3921,685,3906 3629 | 2551,1194 3630 | 2176,791,2028 3631 | 64,1800,3922 3632 | 3040,693,3300 3633 | 3923,2537 3634 | 3706,666 3635 | 108,200 3636 | 2198,1158 3637 | 3456,106 3638 | 3059,1693 3639 | 584,309 3640 | 80,396 3641 | 60,189,123,1845,133 3642 | 3517,3924 3643 | 430,3925,431 3644 | 1923,2190 3645 | 3830,3927 3646 | 2904,2740,2742 3647 | 1,45 3648 | 208,2719 3649 | 60,2033,3929,3930 3650 | 1445,63 3651 | 3931,8 3652 | 977,522 3653 | 1446,977,978 3654 | 1381,1091 3655 | 2139,2158 3656 | 2653,1127,1091 3657 | 1951,1952 3658 | 186,491,492 3659 | 3932,1640,2928 3660 | 3661,1380,3933,3934 3661 | 1093,2335 3662 | 2898,36,309 3663 | 828,829 3664 | 241,3368 3665 | 334,2857,3935,3936 3666 | 599,600,2595 3667 | 3937,3938,106 3668 | 2105,2282,3000 3669 | 3939,1157 3670 | 2406,3941 3671 | 2387,578,595,581 3672 | 2899,137 3673 | 108,3832 3674 | 370,3558,2054 3675 | 583,3942,584 3676 | 78,3943,149 3677 | 1807,532 3678 | 105,472 3679 | 118,3944 3680 | 1024,3945 3681 | 685,3946,3720,156 3682 | 1122,791 3683 | 996,515 3684 | 3569,725 3685 | 1377,3947,3948,738,739,2515,1194 3686 | 3596,1978 3687 | 1133,1593 3688 | 1416,3529 3689 | 288,3949,1782 3690 | 849,747 3691 | 542,543 3692 | 1073,807 3693 | 2330,278 3694 | 374,1708 3695 | 3950,3040 3696 | 570,3433 3697 | 101,2692,1976 3698 | 3299,230 3699 | 3951,747 3700 | 1287,1288,106 3701 | 991,3952 3702 | 253,1094,515,2513 3703 | 228,105 3704 | 1545,2054,370 3705 | 3953,16 3706 | 807,3954 3707 | 697,1853,3273 3708 | 409,3955 3709 | 1646,983,3152 3710 | 106,3858 3711 | 3956,3957,1127 3712 | 536,133 3713 | 3841,275,3958,3959,1161 3714 | 64,65 3715 | 966,2072,3587 3716 | 115,1545 3717 | 1123,322 3718 | 1442,1443,1144 3719 | 3960,469 3720 | 3961,2948 3721 | 3962,186 3722 | 1121,297,200,322 3723 | 136,3853 3724 | 3963,278 3725 | 2790,202 3726 | 2387,578,84,581 3727 | 595,3964 3728 | 484,1203,230 3729 | 457,3358 3730 | 3653,2256 3731 | 192,864,2520 3732 | 3707,10,11 3733 | 3224,1120,2428 3734 | 1027,1333 3735 | 2468,1763 3736 | 3175,192,2847 3737 | 1572,132 3738 | 259,1979,369,1234 3739 | 14,19,2017,907 3740 | 108,111,149 3741 | 807,3568,15,17 3742 | 385,5,84 3743 | 28,2193,315 3744 | 26,1063 3745 | 25,2555,585 3746 | 826,1518,978 3747 | 304,1 3748 | 2226,27 3749 | 1,1690,1691,1233,1905 3750 | 438,247,29 3751 | 1906,35,37 3752 | 39,1930 3753 | 549,2495 3754 | 385,1190,161,60 3755 | 43,960,506 3756 | 569,1319,2995 3757 | 50,2173 3758 | 3368,2008 3759 | 1416,3529 3760 | 1882,2465 3761 | 51,2255,1275,1639 3762 | 648,30,1999 3763 | 1825,1312,54,1311 3764 | 1482,584 3765 | 55,2788 3766 | 1133,1593 3767 | 132,133 3768 | 108,3245,149 3769 | 584,309 3770 | 494,56 3771 | 3175,2511,192 3772 | 513,58,59,61 3773 | 804,1111,98,99 3774 | 869,2262 3775 | 3517,1370 3776 | 1762,1733 3777 | 73,2813 3778 | 68,69,70,71,829 3779 | 2356,3193,1622 3780 | 795,385 3781 | 74,3643 3782 | 489,75 3783 | 1693,1694 3784 | 1156,1157 3785 | 3512,327 3786 | 2111,763 3787 | 118,272 3788 | 385,5 3789 | 81,82,85,3441 3790 | 842,677,532 3791 | 948,1091 3792 | 2378,2271 3793 | 5,606,382,796 3794 | 978,444 3795 | 2757,264 3796 | 695,103 3797 | 842,1087,677,532 3798 | 2880,656 3799 | 851,3195 3800 | 232,3562,97 3801 | 851,1493 3802 | 2452,117 3803 | 385,5,3005 3804 | 207,3429 3805 | 385,84,581 3806 | 907,2845 3807 | 64,67,568,102 3808 | 6,806 3809 | 1243,1245 3810 | 1465,617,2736 3811 | 708,3476 3812 | 2670,3379 3813 | 1086,109,623 3814 | 966,1021 3815 | 2675,119 3816 | 2556,389 3817 | 2555,1091 3818 | 1784,2751 3819 | 599,112 3820 | 1502,730 3821 | 1243,2318 3822 | 3216,2136,735 3823 | 1366,1164 3824 | 2181,2182,384 3825 | 736,746,3755 3826 | 2744,1656,2621 3827 | 1791,461,1792 3828 | 259,3841,121,3882 3829 | 2193,3232 3830 | 1629,934 3831 | 843,844 3832 | 513,978 3833 | 84,106 3834 | 2131,127,2070 3835 | 2607,130 3836 | 2757,2774 3837 | 84,106 3838 | 2742,673 3839 | 36,2827 3840 | 134,2323,2464 3841 | 1745,894 3842 | 140,3411 3843 | 674,2131 3844 | 697,1853,3272 3845 | 3829,417 3846 | 1482,2035 3847 | 1119,2209,1120 3848 | 3647,543 3849 | 144,753 3850 | 619,2450 3851 | 2031,84,106 3852 | 623,1786,150 3853 | 241,2187 3854 | 744,1773,1774,3621 3855 | 948,1091 3856 | 151,106 3857 | 855,154 3858 | 1347,153,1348 3859 | 7,3047,1867 3860 | 1,369,157,158 3861 | 380,837,2979 3862 | 1273,1 3863 | 2824,967,8 3864 | 2193,166 3865 | 165,1623 3866 | 2574,164,3769,1527 3867 | 2104,1503 3868 | 2330,2083,278 3869 | 1745,106 3870 | 1901,1791,1792 3871 | 838,149 3872 | 142,332 3873 | 709,172,173 3874 | 2335,2905,2906 3875 | 430,3165 3876 | 3122,948,305 3877 | 2212,156 3878 | 80,1402,1407 3879 | 2093,178 3880 | 84,1339,595 3881 | 123,181 3882 | 185,755 3883 | 430,1421,612 3884 | 3122,305 3885 | 2750,2751,584 3886 | 6,513 3887 | 190,893 3888 | 806,950,951 3889 | 191,487 3890 | 303,5,878 3891 | 2711,197 3892 | 1719,3168,3503 3893 | 648,199,207 3894 | 303,440,1380 3895 | 610,206 3896 | 62,893 3897 | 725,203 3898 | 1040,510 3899 | 3761,1899 3900 | 948,2630 3901 | 2614,773,209 3902 | 385,806,951 3903 | 211,215,1527 3904 | 549,212,412 3905 | 84,214 3906 | 2837,1156,1157 3907 | 792,801 3908 | 115,217,218,1545 3909 | 406,1518 3910 | 1191,221,132 3911 | 222,467 3912 | 835,223 3913 | 2632,1342 3914 | 2807,2235 3915 | 224,1170 3916 | 212,498,499,412,2119,414 3917 | 2037,225,355,149 3918 | 235,2658 3919 | 233,2057,2178 3920 | 3102,941 3921 | 1923,234,2190 3922 | 2954,2019,1878 3923 | 648,1134 3924 | 3523,941 3925 | 239,90,245 3926 | 472,1228 3927 | 3809,478 3928 | 1409,2328,2329 3929 | 3523,941 3930 | 3180,932,2217 3931 | 869,3339 3932 | 2121,2120,1157,2122 3933 | 1756,693 3934 | 176,1628 3935 | 243,244,3582 3936 | 2487,1352 3937 | 192,1108,3715,202 3938 | 948,34 3939 | 3591,1919 3940 | 3567,105 3941 | 975,254 3942 | 7,452 3943 | 1400,1882,2465 3944 | 3867,252 3945 | 262,1661,3773 3946 | 792,2703 3947 | 826,406,978,1518 3948 | 2372,2373 3949 | 536,133 3950 | 2409,673 3951 | 464,263 3952 | 2965,1899 3953 | 1091,322 3954 | 406,1518 3955 | 978,318 3956 | 268,2856 3957 | 1024,983 3958 | 519,88,123 3959 | 1412,1418 3960 | 1024,271 3961 | 2315,1840 3962 | 1054,105 3963 | 2415,276,280,1091 3964 | 282,283,202 3965 | 1979,546,1978 3966 | 2442,228 3967 | 2193,2333 3968 | 948,3878 3969 | 2665,285,1083 3970 | 581,595,453 3971 | 2426,259 3972 | 200,286 3973 | 20,2307 3974 | 1445,2502,301 3975 | 1273,1 3976 | 303,3149,250,289,290 3977 | 2300,941 3978 | 931,293 3979 | 454,292 3980 | 2714,2096,294 3981 | 643,3357 3982 | 1979,3867,3841 3983 | 506,2596,149 3984 | 1532,1266,3101 3985 | 1745,1169 3986 | 1532,1266 3987 | 538,569 3988 | 2330,278 3989 | 311,314,2256 3990 | 288,287 3991 | 47,1,698,207 3992 | 306,978,3253 3993 | 2054,370 3994 | 852,194 3995 | 494,1754,1162 3996 | 2724,2096,2725,2714,2556,294 3997 | 2213,1235 3998 | 653,1983 3999 | 1207,3178,259 4000 | 51,1127 4001 | 1759,907 4002 | 284,839 4003 | 773,1358 4004 | 2874,319 4005 | 5,299,300 4006 | 492,493 4007 | 419,532 4008 | 1605,2021,2612 4009 | 1445,1127,159 4010 | 430,2509,328 4011 | 1040,3046 4012 | 473,596 4013 | 819,820,1321 4014 | 595,951,453 4015 | 956,228 4016 | 2179,3039 4017 | 333,820,818 4018 | 192,704 4019 | 380,2470,837,1461 4020 | 2816,568 4021 | 959,506,673 4022 | 2399,3473,2177 4023 | 337,338,2178 4024 | 258,342,343 4025 | 345,2572 4026 | 2351,869 4027 | 2485,297 4028 | 464,344,108 4029 | 1664,1437 4030 | 515,347 4031 | 417,532 4032 | 3005,105 4033 | 618,348 4034 | 22,1117 4035 | 2773,3571,3572 4036 | 705,2558 4037 | 351,352,923 4038 | 1915,1742 4039 | 3057,766,1787 4040 | 3778,356 4041 | 3166,978 4042 | 357,2899,137 4043 | 303,360,361,2497 4044 | 5,298 4045 | 335,2731,365 4046 | 246,270 4047 | 0,851 4048 | 2057,375,3247 4049 | 412,212,2119,414 4050 | 288,318 4051 | 764,2130 4052 | 1756,693 4053 | 46,194 4054 | 693,3300 4055 | 3953,16 4056 | 709,2046,322 4057 | 145,364 4058 | 100,101 4059 | 386,1266 4060 | 391,390,364 4061 | 259,48,369,1234 4062 | 563,1549 4063 | 744,371 4064 | 1401,388,3117 4065 | 863,3121 4066 | 1633,2640,397 4067 | 440,2566 4068 | 549,1574,1798 4069 | 1279,3374,1281 4070 | 400,700 4071 | 475,2817 4072 | 455,849 4073 | 382,839 4074 | 385,1579,1580 4075 | 1988,408 4076 | 2068,147 4077 | 410,1923,3666 4078 | 843,3607,1943 4079 | 959,1997 4080 | 3685,1662 4081 | 2319,1194 4082 | 2744,1656,2621 4083 | 1388,1711 4084 | 584,421,1917 4085 | 2361,418 4086 | 327,329 4087 | 599,420,112,3773 4088 | 1352,1335,2374 4089 | 137,3609 4090 | 1482,1577 4091 | 1500,424,427 4092 | 640,1831 4093 | 747,1283 4094 | 2093,429 4095 | 806,951 4096 | 101,2412,16 4097 | 2601,5,1041,1266 4098 | 146,432 4099 | 385,1869 4100 | 1931,435 4101 | 467,355 4102 | 457,3718 4103 | 869,346 4104 | 2007,677,532 4105 | 213,3520 4106 | 143,273 4107 | 3045,407 4108 | 1664,3603,3604 4109 | 3059,1693 4110 | 2656,996,960 4111 | 2034,309,2354 4112 | 515,1998 4113 | 1215,3061 4114 | 1810,448,450 4115 | 297,137 4116 | 591,1176 4117 | 447,2687 4118 | 295,1651 4119 | 1,3486 4120 | 1004,754,1003 4121 | 449,62,952 4122 | 575,2717 4123 | 5,623,3826 4124 | 1114,3085,385 4125 | 513,977,260 4126 | 473,2735 4127 | 3770,807 4128 | 22,463 4129 | 880,878,879 4130 | 385,292,228 4131 | 2825,1304 4132 | 3425,353 4133 | 346,349 4134 | 948,370,2630 4135 | 201,20 4136 | 2087,468 4137 | 2752,1697 4138 | 2491,2130,60 4139 | 1707,1706,124 4140 | 2100,471 4141 | 227,2858 4142 | 1523,783 4143 | 110,1176,477,574,2452 4144 | 2219,1370 4145 | 2072,2073 4146 | 967,111 4147 | 359,2,481 4148 | 2394,482,3702 4149 | 3102,941 4150 | 988,472,1228 4151 | 1990,2477,1220 4152 | 623,3916 4153 | 715,490 4154 | 1951,2193 4155 | 3854,2924 4156 | 514,515,1998 4157 | 3917,1450 4158 | 842,1087,677,532 4159 | 184,869 4160 | 2194,610 4161 | 402,1921 4162 | 500,2899 4163 | 2225,2234,2226 4164 | 213,3520,1763 4165 | 2816,2100,452,3837 4166 | 5,299,300 4167 | 2387,595,2513 4168 | 967,111 4169 | 2799,1971 4170 | 3709,2100,302 4171 | 661,200,297 4172 | 517,3599 4173 | 60,133 4174 | 449,952 4175 | 977,1492,626,195 4176 | 518,784,259 4177 | 1055,560 4178 | 137,560 4179 | 175,1386,524 4180 | 531,1412,1418 4181 | 385,132,133 4182 | 495,506 4183 | 43,960 4184 | 2208,534 4185 | 535,1917 4186 | 1243,3105 4187 | 3884,1615 4188 | 1174,537 4189 | 1606,2309 4190 | 1086,300,2088,1176 4191 | 151,106 4192 | 1652,2176,791 4193 | 241,2402 4194 | 2170,2792,2070,1972 4195 | 2176,791,370,2028 4196 | 1708,540 4197 | 595,453 4198 | 2330,278 4199 | 2043,5 4200 | 330,346 4201 | 1822,1923,2190,228,876 4202 | 1853,612 4203 | 1628,1310 4204 | 38,907 4205 | 1538,264,2852 4206 | 1058,3421 4207 | 977,547 4208 | 2193,315 4209 | 931,2634 4210 | 2499,551 4211 | 415,426 4212 | 1,625,626,3095 4213 | 996,619,552 4214 | 310,3299 4215 | 555,2102,3401 4216 | 855,487,854 4217 | 557,556,1041 4218 | 385,795 4219 | 247,558,1063 4220 | 3915,561,2464,559,443 4221 | 303,1866 4222 | 303,434,1291,160 4223 | 842,1087,677,532 4224 | 931,2634 4225 | 371,45 4226 | 2208,534 4227 | 878,2990,879 4228 | 201,20 4229 | 0,1,2 4230 | 607,3298,605,606 4231 | 406,3041 4232 | 399,1248,941 4233 | 675,2131 4234 | 1917,219 4235 | 640,838 4236 | 515,516,3079,2101 4237 | 3797,440,441 4238 | 297,425,220 4239 | 353,573,3283 4240 | 575,2126 4241 | 577,2297 4242 | 978,1873 4243 | 625,678 4244 | 2453,143 4245 | 430,1852 4246 | 3690,3614,2437 4247 | 586,1976,626 4248 | 587,546 4249 | 589,973 4250 | 598,3740 4251 | 385,105 4252 | 45,1899,3264 4253 | 3745,416,417 4254 | 1200,1201,1697 4255 | 242,2519 4256 | 590,487 4257 | 24,22 4258 | 3382,1764 4259 | 1415,520,597 4260 | 983,1812 4261 | 3309,1545,784 4262 | 461,713 4263 | 1366,1164 4264 | 438,2279 4265 | 3929,3930,519,603,2033 4266 | 118,604,608 4267 | 529,565,614 4268 | 1409,2328,2329 4269 | 2076,837,1461 4270 | 1092,1093,1040,510 4271 | 3072,2387,84 4272 | 380,2161 4273 | 615,1711,1712,1162,1713,2337 4274 | 6,2535,806 4275 | 330,1086,1944 4276 | 1057,1709,78 4277 | 1057,3056 4278 | 3484,156 4279 | 1339,270,595,470 4280 | 616,621,2923 4281 | 620,3708,1224 4282 | 1702,186 4283 | 2254,51,2478 4284 | 624,612 4285 | 2791,1899,45 4286 | 3299,2923,230 4287 | 1073,2670 4288 | 62,2309 4289 | 1386,1387 4290 | 2861,105 4291 | 377,230 4292 | 495,220 4293 | 1719,630 4294 | 852,2418 4295 | 1545,810,115,1773,1774 4296 | 303,2045 4297 | 2424,2579,643 4298 | 465,2706 4299 | 1500,128 4300 | 22,523 4301 | 635,384 4302 | 1882,2854,2855 4303 | 83,1389,643 4304 | 2243,931,200 4305 | 1718,2070,641 4306 | 1297,941 4307 | 167,568,1763 4308 | 3725,44 4309 | 1745,106 4310 | 836,1604,659,660 4311 | 3682,791 4312 | 5,2052,340 4313 | 804,1744,1749 4314 | 123,181 4315 | 228,105 4316 | 1389,227 4317 | 1865,507 4318 | 1885,1884 4319 | 1708,642 4320 | 1368,1150 4321 | 645,646,1166 4322 | 3304,1587 4323 | 3115,992 4324 | 464,111,426 4325 | 3920,186 4326 | 3001,3568 4327 | 649,260 4328 | 3052,472 4329 | 655,41,42 4330 | 1339,2544 4331 | 2663,2632 4332 | 662,1693 4333 | 5,152 4334 | 3519,1693 4335 | 667,643 4336 | 1708,301,302 4337 | 2063,838 4338 | 385,1579 4339 | 2095,2653,671,1091 4340 | 1708,301,302 4341 | 1107,3437,1751,672 4342 | 676,675 4343 | 498,499,1023 4344 | 469,985 4345 | 681,280,679,682 4346 | 843,864,202 4347 | 262,1661,3267 4348 | 683,2131,1972,1973 4349 | 1940,1938 4350 | 456,956 4351 | 3568,251 4352 | 3170,498,499,1023 4353 | 101,16 4354 | 1206,2820,1208 4355 | 3544,287 4356 | 5,2052 4357 | 583,3942 4358 | 502,288,453 4359 | 2385,673 4360 | 3134,702,703 4361 | 298,84 4362 | 569,2995 4363 | 86,2754 4364 | 101,16 4365 | 1762,1763 4366 | 5,341 4367 | 716,1904,436 4368 | 3480,133 4369 | 151,106 4370 | 1191,719 4371 | 1886,213 4372 | 3381,1426 4373 | 726,629,83 4374 | 3213,3214,2129 4375 | 3517,3516 4376 | 137,1514 4377 | 303,728,1798,3187 4378 | 2113,711 4379 | 629,651,992 4380 | 500,2899 4381 | 2838,1464 4382 | 1139,2501,731 4383 | 1964,1965 4384 | 494,3746 4385 | 1582,2149 4386 | 160,434 4387 | 640,838,839 4388 | 667,643 4389 | 1855,2851,242 4390 | 171,250 4391 | 975,1389,745 4392 | 138,2325 4393 | 2614,2420,773 4394 | 406,1518 4395 | 789,1144 4396 | 748,3256 4397 | 1268,1470 4398 | 945,3877 4399 | 977,907 4400 | 2258,2045,536,133 4401 | 1387,2087 4402 | 757,570 4403 | 2890,16,1391 4404 | 1442,789,1144 4405 | 1422,302,1462,438,2410 4406 | 101,16 4407 | 705,706,678 4408 | 2846,132,133 4409 | 513,84 4410 | 2380,2146,177,111 4411 | 5,340 4412 | 1988,2253,1610 4413 | 900,948 4414 | 760,761,762,626 4415 | 1121,1091,3872,322 4416 | 3190,753,754 4417 | 826,889,767,725 4418 | 1875,1874 4419 | 568,326 4420 | 3920,1887 4421 | 1039,5,1041 4422 | 60,2990 4423 | 3299,772 4424 | 2409,673 4425 | 1692,554 4426 | 1426,584 4427 | 467,774 4428 | 863,776 4429 | 303,738,739,340 4430 | 1879,568 4431 | 777,778,546 4432 | 779,403 4433 | 1980,3343,780 4434 | 513,781 4435 | 64,67 4436 | 2422,3421 4437 | 78,3943,149 4438 | 3937,106 4439 | 1256,133 4440 | 2387,84 4441 | 3424,723,725 4442 | 1027,389,1894 4443 | 1564,1566,785,786,787 4444 | 1073,22 4445 | 16,2334 4446 | 643,2960 4447 | 3405,1555,793 4448 | 3160,1432,220,794 4449 | 2243,931 4450 | 167,799,220 4451 | 2087,977,802 4452 | 359,0,2 4453 | 84,581 4454 | 805,7,1344 4455 | 2076,835,811,837 4456 | 1785,605 4457 | 808,3562,1424 4458 | 812,309 4459 | 6,3875 4460 | 72,3426 4461 | 2799,1971 4462 | 330,1711,1713,3674 4463 | 303,821 4464 | 406,852 4465 | 2301,631 4466 | 3067,3299 4467 | 1967,834,3074 4468 | 101,831,832 4469 | 1868,364 4470 | 3518,2537 4471 | 845,932,202 4472 | 3756,3599,3755,3292 4473 | 498,499,1023 4474 | 846,2364 4475 | 1107,725,1751 4476 | 2484,430 4477 | 346,2112 4478 | 3488,510 4479 | 2169,863 4480 | 231,3562,1424 4481 | 515,991 4482 | 1892,1891,417 4483 | 2484,513 4484 | 1388,566 4485 | 5,2077 4486 | 409,3955 4487 | 2933,2379 4488 | 295,1867 4489 | 1248,941 4490 | 409,3124,853 4491 | 1572,1628 4492 | 856,1829,2249,241 4493 | 246,270,1585 4494 | 1189,858,2349,259 4495 | 861,1076,860,706 4496 | 2098,2853,1406 4497 | 842,677,866 4498 | 2622,661,867 4499 | 3787,1628 4500 | 2696,2697,1271,200 4501 | 3389,60 4502 | 430,2509 4503 | 381,382,383,105 4504 | 339,2843,227 4505 | 2229,106 4506 | 1652,370 4507 | 3282,1291 4508 | 3617,143 4509 | 1189,1,2349,870 4510 | 839,321 4511 | 3831,3174 4512 | 874,706 4513 | 1838,3179 4514 | 3881,383,796 4515 | 883,3181,229 4516 | 3119,2553 4517 | 3298,881,882 4518 | 887,2742 4519 | 1014,782 4520 | 845,884,885 4521 | 890,2231,863 4522 | 891,3216,2136 4523 | 2300,941 4524 | 3757,713 4525 | 305,2569 4526 | 2268,737 4527 | 1756,693 4528 | 3568,220 4529 | 3220,3225,3839 4530 | 259,48,1233,1234 4531 | 3210,149 4532 | 835,270,2075,3886,966 4533 | 351,923,1424 4534 | 303,897,898,899,2340 4535 | 1004,1235 4536 | 901,625 4537 | 584,903 4538 | 326,117 4539 | 385,1709,2306 4540 | 912,1605 4541 | 842,677,3218,532 4542 | 1683,869,2324 4543 | 47,909,2074,2714 4544 | 3509,1615 4545 | 1377,1362,739,1375 4546 | 227,179 4547 | 2378,913 4548 | 64,65 4549 | 914,90 4550 | 5,747 4551 | 12,2442 4552 | 1628,402 4553 | 105,106 4554 | 915,693 4555 | 1078,220,951,159 4556 | 3893,149 4557 | 2424,2579,643 4558 | 2581,47 4559 | 966,919 4560 | 652,105 4561 | 2368,2664 4562 | 2075,920 4563 | 297,2983 4564 | 295,407 4565 | 2160,1342 4566 | 773,378 4567 | 921,2422 4568 | 406,407 4569 | 2663,922,924,1373,3812 4570 | 248,926 4571 | 3043,977 4572 | 1092,1093,2335,2408 4573 | 5,152 4574 | 927,513 4575 | 2435,2837,773 4576 | 270,302,430,1176,147,2501,487 4577 | 843,2730 4578 | 843,2575,939 4579 | 2415,2814 4580 | 64,67 4581 | 1491,532 4582 | 101,651,2334 4583 | 326,2786 4584 | 1802,3643 4585 | 648,2268 4586 | 101,16 4587 | 1923,938 4588 | 2435,412,1226 4589 | 977,522 4590 | 73,940,655 4591 | 288,1800 4592 | 3951,747 4593 | 527,525 4594 | 1491,532 4595 | 946,346 4596 | 1833,796 4597 | 1945,1832,2881,725 4598 | 1286,612,147 4599 | 591,212,412,2119,414 4600 | 977,678 4601 | 437,301,302 4602 | 1085,973 4603 | 953,2335,2905,2906 4604 | 957,253 4605 | 3356,958,1166 4606 | 385,623,2009 4607 | 2064,202,128,129 4608 | 753,951 4609 | 962,963,2742 4610 | 568,961,2371 4611 | 186,510 4612 | 1582,3753 4613 | 3684,2663 4614 | 2807,1584 4615 | 1680,844 4616 | 1523,783 4617 | 3656,476,1133 4618 | 968,969,1582 4619 | 976,980,981,1594,200,1214 4620 | 979,278 4621 | 1945,1832 4622 | 747,982,1587 4623 | 2052,1593 4624 | 2387,84 4625 | 851,986 4626 | 951,62 4627 | 987,3057,766 4628 | 1206,1207,1208,989 4629 | 385,1709 4630 | 341,253,3687 4631 | 487,120 4632 | 1246,1132 4633 | 2543,1023 4634 | 64,3536 4635 | 967,111 4636 | 270,660 4637 | 2601,5,1041 4638 | 1519,194 4639 | 994,487,1782 4640 | 1085,973,2507,2171,133 4641 | 878,2990,879 4642 | 720,3645 4643 | 1114,3085,385 4644 | 758,759 4645 | 545,632,633,634 4646 | 385,3079 4647 | 3126,2128,403 4648 | 125,118,126 4649 | 993,88,2022,1002 4650 | 2263,430,1923 4651 | 262,1660,1661 4652 | 1007,1825 4653 | 1005,1422 4654 | 568,1786,385,623,1162 4655 | 533,1103,532 4656 | 859,1227,1228 4657 | 176,177 4658 | 213,3520 4659 | 2836,2837,2838,355 4660 | 1664,1133 4661 | 3437,510 4662 | 833,725,203 4663 | 766,3296 4664 | 3523,941 4665 | 177,297 4666 | 2907,2908,1051 4667 | 3414,3415 4668 | 3190,62,430 4669 | 549,2495 4670 | 3956,1016,2329 4671 | 744,372 4672 | 1362,3203,1360 4673 | 2025,837,155,2140 4674 | 839,1018 4675 | 107,108,673 4676 | 1169,105 4677 | 2025,837,155,2140 4678 | 1980,443,444,45 4679 | 1358,1019 4680 | 373,1876,1877 4681 | 406,1518 4682 | 1214,1215 4683 | 1507,261 4684 | 1564,1565,1566,1568 4685 | 1020,798 4686 | 693,402,92 4687 | 171,2432,250,189 4688 | 93,661,3524 4689 | 1811,755,2070 4690 | 3648,2632,1026,784 4691 | 1029,1816 4692 | 3119,2553 4693 | 390,364 4694 | 2791,1898,1899 4695 | 1123,322 4696 | 3375,907 4697 | 3365,3366 4698 | 2832,2514,1030 4699 | 406,977,1518 4700 | 2631,2632,2633 4701 | 231,923,1424 4702 | 287,1587 4703 | 2399,629,992,1031 4704 | 2744,1656,2621 4705 | 1032,941 4706 | 1062,302 4707 | 1036,241,1035 4708 | 990,2630 4709 | 948,305,483 4710 | 500,2899 4711 | 177,111 4712 | 2165,2734 4713 | 752,1042,1044,1045,1046,1049 4714 | 549,1574 4715 | 1050,1930 4716 | 591,2837,1156,1157 4717 | 697,505,506 4718 | 297,137 4719 | 1,370 4720 | 1890,1727,1053 4721 | 358,2426,1233,259 4722 | 3854,693 4723 | 303,1574,549 4724 | 1060,823 4725 | 2663,1816 4726 | 584,3713 4727 | 17,740 4728 | 1073,1059 4729 | 3019,3704 4730 | 108,297,1061,149,1309 4731 | 542,543 4732 | 1114,2101,2052,510,511 4733 | 2728,430 4734 | 1518,32,216 4735 | 1922,1923 4736 | 248,213 4737 | 1068,228,60 4738 | 16,2334 4739 | 336,3195 4740 | 1959,1211 4741 | 2176,2686,370 4742 | 1069,2168 4743 | 12,13,1070 4744 | 667,643 4745 | 2399,629,1031 4746 | 1074,34 4747 | 513,934 4748 | 1075,1999 4749 | 1362,1194 4750 | 1752,1077,1751 4751 | 723,146,1277 4752 | 1086,875 4753 | 2466,444,1091 4754 | 1088,2286,896,788 4755 | 744,371 4756 | 3106,3659,892 4757 | 931,796 4758 | 133,2507 4759 | 3454,1176 4760 | 1246,1781,1132 4761 | 3723,1089 4762 | 1096,295 4763 | 567,569 4764 | 744,371 4765 | 1066,1470,1098,1097 4766 | 945,598 4767 | 3185,951 4768 | 1,3095,626 4769 | 1218,1099 4770 | 948,2616,2617 4771 | 297,2983 4772 | 2614,3729,230 4773 | 2268,1104 4774 | 743,1394 4775 | 1875,3295,2168 4776 | 2558,1105 4777 | 1106,1829 4778 | 1050,1930,1112 4779 | 680,837,260 4780 | 1830,1113 4781 | 942,1116,859,1041 4782 | 1118,1538,264 4783 | 3809,355 4784 | 1043,1662 4785 | 2057,375 4786 | 723,725,203 4787 | 84,581 4788 | 167,1073 4789 | 3367,1124,1582 4790 | 1125,1650 4791 | 2980,1404,1023,389,1333 4792 | 1907,157 4793 | 3764,3817 4794 | 143,3719,3447 4795 | 346,1834 4796 | 3224,302 4797 | 996,1673 4798 | 2861,105 4799 | 220,1126 4800 | 2387,578,453 4801 | 659,660 4802 | 295,296 4803 | 2146,111 4804 | 1129,3738,1170 4805 | 3405,2451 4806 | 484,2761,3310,230 4807 | 942,204,3928 4808 | 1,195 4809 | 2965,1898,1899 4810 | 590,487 4811 | 2426,259 4812 | 5,2233,2156 4813 | 3445,230 4814 | 1979,1135 4815 | 3518,2537 4816 | 0,1110 4817 | 2680,605 4818 | 1150,1136,1370 4819 | 723,724,725 4820 | 3077,3078 4821 | 1892,1137,2506,2463,3829 4822 | 795,385 4823 | 1140,1142,1312,1311 4824 | 1141,7 4825 | 977,522 4826 | 2022,259 4827 | 1145,918,33 4828 | 1712,229 4829 | 2881,725 4830 | 1986,3599,3756 4831 | 132,133 4832 | 1149,368 4833 | 484,230 4834 | 1215,1148 4835 | 1925,1272 4836 | 498,499,1023 4837 | 1779,1490,1449 4838 | 1623,749 4839 | 366,1152 4840 | 3729,1153 4841 | 3142,935,355,1154 4842 | 677,532 4843 | 302,140,3411,1854,2421 4844 | 266,3133,3292,264,1723 4845 | 346,349 4846 | 1086,2618 4847 | 948,2630 4848 | 3734,1155,3785,2187,827 4849 | 198,3078,1950 4850 | 1652,2176,791,1513 4851 | 143,253 4852 | 1143,216 4853 | 20,180,182 4854 | 1243,1244,1245 4855 | 297,137,2711,1370,2899 4856 | 1792,1165,713 4857 | 3035,64,568 4858 | 192,704 4859 | 729,0 4860 | 637,3383 4861 | 629,1171,1172 4862 | 297,425 4863 | 111,1511 4864 | 2556,3896 4865 | 569,2322,2323,2995 4866 | 464,967 4867 | 1574,440,2495 4868 | 137,3609 4869 | 744,2617,948,483 4870 | 2398,755 4871 | 1183,6,1184,1179 4872 | 729,0 4873 | 2300,941 4874 | 2139,2832,1185,1186,1192,2514 4875 | 2684,1266,868,2173 4876 | 1386,1387,765,3940 4877 | 1195,2944,755 4878 | 341,253,3687 4879 | 464,1198 4880 | 247,2150,2010 4881 | 3801,1157 4882 | 1029,1816 4883 | 1426,3380 4884 | 1631,3561,3788,2015 4885 | 430,485,2010,973 4886 | 3961,3452,2948 4887 | 640,838 4888 | 1541,133,725,203 4889 | 439,440,441,442 4890 | 1279,1281 4891 | 3183,1199 4892 | 658,497,156 4893 | 160,2384 4894 | 851,2993 4895 | 1086,228,1965,300 4896 | 693,459 4897 | 3568,1202,807 4898 | 385,167 4899 | 430,186,2505 4900 | 2563,1905 4901 | 744,1204 4902 | 83,3842 4903 | 1209,2753,2037,1210 4904 | 2193,3559 4905 | 1462,302 4906 | 455,1219,255 4907 | 370,1999 4908 | 2401,2149 4909 | 3790,1898,1899 4910 | 2974,189,1216 4911 | 278,161 4912 | 894,581 4913 | 1222,1223,192 4914 | 2902,3879 4915 | 72,3426 4916 | 983,1812 4917 | 201,20,18 4918 | 3606,186 4919 | 2315,2317,118 4920 | 693,3600,200 4921 | 1195,312 4922 | 680,1229,2561 4923 | 3568,619,15,687 4924 | 1829,1888 4925 | 1501,3322,2411 4926 | 2303,1232 4927 | 1088,2286,896,788 4928 | 1230,3682,791 4929 | 516,2909 4930 | 3828,1810,301 4931 | 326,1900 4932 | 1829,2502,35 4933 | 385,623,1580 4934 | 743,200 4935 | 1236,1201,516,492 4936 | 2093,3493,0,1238 4937 | 2482,253 4938 | 3497,1239 4939 | 194,195 4940 | 213,3059,220,1240,3482 4941 | 60,1190,1949 4942 | 819,820,824,822 4943 | 2364,155 4944 | 2464,287 4945 | 1991,2239 4946 | 520,179,2023 4947 | 1988,408 4948 | 931,382 4949 | 826,2022 4950 | 373,1247,2889 4951 | 1535,1785,3215 4952 | 497,1252,2845 4953 | 758,1882,2854,3116 4954 | 852,2418,92 4955 | 1004,428 4956 | 3616,2463 4957 | 438,2410,1422 4958 | 1797,1084 4959 | 3732,3546,1254 4960 | 567,568,569,1257 4961 | 38,906,907 4962 | 6,545,632 4963 | 755,3399 4964 | 918,626 4965 | 3170,498,499,1023 4966 | 2025,155 4967 | 3142,355,840 4968 | 2193,2300 4969 | 160,250,3589,1263,3525 4970 | 720,873 4971 | 297,137 4972 | 274,1207,48,259 4973 | 606,383,796 4974 | 567,295,754 4975 | 1548,473 4976 | 506,697,817 4977 | 977,547 4978 | 1388,1763 4979 | 732,543 4980 | 101,2692,1976,626 4981 | 192,202,2815,1642,1267 4982 | 3648,1026,2632 4983 | 1270,2358,1813 4984 | 303,3149,3187 4985 | 246,270 4986 | 312,20 4987 | 513,977 4988 | 693,459 4989 | 513,977 4990 | 1041,1080,1656 4991 | 385,3059,220 4992 | 95,94,1519 4993 | 494,2336,303 4994 | 447,2687,370 4995 | 1442,1285,1144 4996 | 948,371,1091 4997 | 224,1170 4998 | 693,1818 4999 | 3366,1284 5000 | 1709,472 5001 | 3385,840 5002 | 1289,766,3296 5003 | 2346,3150 5004 | 1290,768 5005 | 2193,2111 5006 | 1745,3382,1859 5007 | 326,2681 5008 | 1054,839,105 5009 | 1292,324 5010 | 2110,1816 5011 | 83,869 5012 | 2230,312 5013 | 160,3767 5014 | 995,2106,303 5015 | 1752,510,1294,1751 5016 | 457,823 5017 | 2486,2740,2741,2742 5018 | 1296,299,1295 5019 | 1388,1763 5020 | 3175,192 5021 | 747,1283 5022 | 389,1298 5023 | 1,1690,1691,1233,358 5024 | 640,96 5025 | 1189,475,3010,2823 5026 | 1189,475,858,2817 5027 | 568,1942,2681 5028 | 1302,48,49 5029 | 303,1798,897 5030 | 2563,1303 5031 | 518,784,259 5032 | 231,923 5033 | 1305,247,1306 5034 | 136,137 5035 | 1456,522 5036 | 1307,3476,1308 5037 | 581,487,120,3311 5038 | 196,198 5039 | 13,1479 5040 | 5,1582 5041 | 1275,1276 5042 | 850,5,340 5043 | 967,297,111 5044 | 2620,1266 5045 | 2925,2338,1949,1315 5046 | 1873,3388,522,1714 5047 | 1855,1811,2590 5048 | 288,1611 5049 | 1243,3105 5050 | 1268,3248 5051 | 1319,287 5052 | 47,2074 5053 | 1980,532 5054 | 1318,364 5055 | 142,2964 5056 | 2229,106 5057 | 1467,2297 5058 | 3867,252 5059 | 1095,2406 5060 | 3597,262,1660,1661 5061 | 275,56,1161 5062 | 1323,2501 5063 | 5,353 5064 | 303,549 5065 | 2283,3088,1326,1327,1328 5066 | 144,753,120 5067 | 385,467 5068 | 1334,1330,1331,710 5069 | 1338,1340 5070 | 1345,2409,673 5071 | 1,2426,3,259 5072 | 330,402 5073 | 137,3609 5074 | 1940,202 5075 | 2181,907 5076 | 1020,798 5077 | 2213,3796 5078 | 1241,560 5079 | 2601,5,1041 5080 | 3550,605,479 5081 | 3190,1086,62 5082 | 93,1355 5083 | 1780,1781 5084 | 247,1357 5085 | 2424,643,3726 5086 | 382,839 5087 | 536,2171,133 5088 | 2578,643 5089 | 3760,1359 5090 | 104,98,99 5091 | 385,877 5092 | 469,3427 5093 | 353,3157,1043 5094 | 2961,1194 5095 | 48,1657 5096 | 1646,1647,1648,228 5097 | 1572,1363,1364 5098 | 766,1640,3296 5099 | 3928,1309,20,149 5100 | 3904,1369,2168 5101 | 753,595,755 5102 | 2233,1371 5103 | 5,131 5104 | 835,967,2484 5105 | 473,2130,60 5106 | 791,1513 5107 | 520,179 5108 | 288,789,2795 5109 | 563,1549 5110 | 84,693,581 5111 | 2394,482,3702 5112 | 1582,1599 5113 | 3956,1382,1383 5114 | 744,948,1091 5115 | 1302,48,49 5116 | 1084,3881,124 5117 | 24,22 5118 | 38,907,2845 5119 | 701,3511,700 5120 | 804,801 5121 | 1600,1962 5122 | 1902,515 5123 | 105,472 5124 | 46,2463 5125 | 574,2452 5126 | 514,515 5127 | 143,273 5128 | 2442,1392 5129 | 297,643,1157 5130 | 86,2495,2932 5131 | 650,2537 5132 | 1093,2335 5133 | 1982,3058,2245,359,370 5134 | 1101,3285,2641 5135 | 847,1081,2383 5136 | 1398,1762,1734,2602 5137 | 430,2168 5138 | 900,948,1091 5139 | 430,3165 5140 | 1119,1120 5141 | 2788,201,20 5142 | 288,318 5143 | 406,1518 5144 | 931,606 5145 | 1399,1230,791 5146 | 353,3157,1043 5147 | 827,1403,1155,825 5148 | 7,830 5149 | 84,581 5150 | 1218,434 5151 | 26,1063 5152 | 2387,84,581 5153 | 2994,2632,1405 5154 | 2176,791 5155 | 1408,554 5156 | 1810,1811,886 5157 | 1709,1242 5158 | 0,259 5159 | 709,370 5160 | 284,200 5161 | 680,1882 5162 | 2742,673 5163 | 107,108,117 5164 | 2727,2096,1301 5165 | 1414,923,1424 5166 | 2240,734,984 5167 | 2499,3240,445 5168 | 2609,2610,1419 5169 | 1236,1286,147 5170 | 1875,1874 5171 | 1256,133 5172 | 177,2310,111 5173 | 1427,2654 5174 | 340,341 5175 | 2069,951,1423 5176 | 3798,1999 5177 | 1057,2567,3578 5178 | 640,1831 5179 | 2330,278 5180 | 374,1708 5181 | 835,3208,2650,3902,966 5182 | 1243,2545 5183 | 619,1274 5184 | 3521,734 5185 | 2145,851 5186 | 2190,1120 5187 | 1067,124 5188 | 1,259 5189 | 1428,546 5190 | 2879,687 5191 | 303,3149,3187 5192 | 1582,1439 5193 | 3583,1262,1258 5194 | 2025,250,155 5195 | 33,1091 5196 | 996,1436,105 5197 | 1180,1434,1435,3918 5198 | 720,3645,1440 5199 | 1572,1628 5200 | 1271,200 5201 | 2100,1873 5202 | 549,1574 5203 | 2826,511,543 5204 | 1207,259 5205 | 2087,1438 5206 | 1979,3507,1978 5207 | 385,1869 5208 | 1456,444,45 5209 | 428,782 5210 | 2532,2102,2529,755 5211 | 705,2558,678,706 5212 | 454,1584 5213 | 1995,2934,2413 5214 | 1447,415 5215 | 906,907 5216 | 2159,1448,364 5217 | 1180,948,949 5218 | 47,2074 5219 | 1127,1091 5220 | 2750,584,364 5221 | 1995,1454,2018 5222 | 385,3176 5223 | 851,986 5224 | 1451,1452,1097,462 5225 | 1273,1 5226 | 977,907 5227 | 948,1,370,2630 5228 | 220,1462,1127,626,1078 5229 | 520,179 5230 | 1600,2926,1058,2566 5231 | 415,426 5232 | 297,200 5233 | 373,2456,202 5234 | 2154,20 5235 | 3497,53,3022 5236 | 569,287 5237 | 3072,3073,1466 5238 | 1127,1091 5239 | 1468,1469,3915,561 5240 | 748,3256 5241 | 219,1953 5242 | 1236,1201,147,492 5243 | 1582,1599 5244 | 2902,1792,1165,713 5245 | 91,2878,2060,2116 5246 | 1988,3033,3034 5247 | 242,2378,1471 5248 | 1472,3194,442 5249 | 599,1473,573,889 5250 | 1931,2805,2806 5251 | 1175,1474,941 5252 | 1809,941 5253 | 3729,230 5254 | 2486,1475 5255 | 1176,754,487 5256 | 1057,2567 5257 | 2435,2837 5258 | 907,2845 5259 | 2485,200 5260 | 930,3442,1480 5261 | 563,1549 5262 | 3214,495 5263 | 3222,2112 5264 | 728,1798,3187,1485,289 5265 | 2463,1980,978,444 5266 | 2325,3286 5267 | 1,1545,3,115,3309 5268 | 1484,952 5269 | 3424,220 5270 | 405,192,2511,1486,1488 5271 | 1886,1487 5272 | 284,1065 5273 | 3307,3506,3507 5274 | 2295,685 5275 | 107,108,117 5276 | 631,200 5277 | 1494,1495,1009 5278 | 3005,105 5279 | 1709,1919 5280 | 747,3951,411 5281 | 1496,1497,158 5282 | 1498,993 5283 | 622,1086,62 5284 | 167,1073 5285 | 1959,3446 5286 | 2613,2614,773 5287 | 3928,1309,149 5288 | 868,1266,869 5289 | 1,625 5290 | 380,2470,837 5291 | 1842,852 5292 | 977,186 5293 | 246,247,1506 5294 | 1510,277,511 5295 | 988,1709,472 5296 | 855,533 5297 | 955,1517 5298 | 2488,2131 5299 | 791,3851 5300 | 1988,1800 5301 | 419,532 5302 | 467,20 5303 | 1366,1521,991 5304 | 231,195,923,1424 5305 | 1524,0,1525 5306 | 433,3440 5307 | 324,3125 5308 | 533,1891,417 5309 | 1399,2176,1529,791 5310 | 385,1530,1531,877 5311 | 290,3149,250 5312 | 2663,1533 5313 | 467,20 5314 | 3581,2749 5315 | 1180,2549 5316 | 1536,800 5317 | 1108,704,1542 5318 | 423,1881,230 5319 | 2679,693,92 5320 | 3223,132,133 5321 | 835,223 5322 | 327,2058 5323 | 2165,1301 5324 | 133,2171,2507 5325 | 1227,1228 5326 | 549,1574,303 5327 | 2181,2182,384 5328 | 851,0 5329 | 1552,818 5330 | 385,3079 5331 | 1389,643 5332 | 310,3299 5333 | 1554,3542,2659 5334 | 64,2834 5335 | 995,3040,92,2106,1127 5336 | 1107,220 5337 | 228,60,512 5338 | 1875,3295,1557,2168,1874 5339 | 145,1559,364 5340 | 1856,839,3227 5341 | 943,3431,3430 5342 | 1907,508,2052,452 5343 | 160,1291 5344 | 3775,1561,1563 5345 | 1562,341 5346 | 379,380,2470,1461 5347 | 1,625 5348 | 454,1567,2100,452 5349 | 1108,2582,2583,1573 5350 | 2825,1304 5351 | 228,105 5352 | 3606,1570 5353 | 227,2858 5354 | 1658,1576 5355 | 298,823 5356 | 1297,941 5357 | 521,522 5358 | 1228,472 5359 | 3038,1281,3092 5360 | 705,678 5361 | 966,1575 5362 | 1582,1439 5363 | 1771,487 5364 | 1980,370,444,45 5365 | 765,612,755 5366 | 1041,1080 5367 | 6,513 5368 | 1373,210,1849 5369 | 1583,829,124 5370 | 108,297,200 5371 | 594,595 5372 | 995,595,453 5373 | 3258,1586,1592 5374 | 473,385 5375 | 966,1897 5376 | 2131,1588 5377 | 105,472 5378 | 3178,3652,259 5379 | 611,44 5380 | 137,560 5381 | 3519,467 5382 | 1791,461,1792 5383 | 1086,228 5384 | 409,2220 5385 | 277,278 5386 | 549,412,402,2129 5387 | 623,515,487,516 5388 | 967,111 5389 | 2755,297,644 5390 | 828,7 5391 | 78,472 5392 | 1597,572 5393 | 305,1865,317 5394 | 3001,3568,1598,17 5395 | 2182,384 5396 | 1,370 5397 | 1393,3326 5398 | 975,248,1011 5399 | 1032,941 5400 | 1611,2785 5401 | 1601,1603,1387 5402 | 1886,48,1602,49 5403 | 1564,1566,2409 5404 | 592,593,1607 5405 | 1530,131 5406 | 1608,1191,2173 5407 | 3603,3604 5408 | 2087,247,558 5409 | 1078,72,220 5410 | 444,45 5411 | 295,469 5412 | 2533,278,1558 5413 | 1968,1970,1971 5414 | 297,839,149 5415 | 996,1763 5416 | 3166,978 5417 | 1073,1612 5418 | 1189,626 5419 | 461,713 5420 | 1745,894,1648 5421 | 1875,1619 5422 | 3403,960,1620,1621,1191 5423 | 1100,1017,202 5424 | 2620,1266,643 5425 | 1589,44 5426 | 3775,1561,1563 5427 | 640,638 5428 | 1,220,626,1462 5429 | 1150,1136,1370 5430 | 1377,1063,98,99,265 5431 | 494,3385,355,840 5432 | 1625,1626,487,1624 5433 | 2752,1697,1632 5434 | 1635,1636,1938,1940 5435 | 1085,973 5436 | 1201,516,1764 5437 | 1967,3525,725,160 5438 | 3745,417,3145 5439 | 2820,1637 5440 | 2007,677,532 5441 | 64,65 5442 | 966,965 5443 | 2275,1971 5444 | 2389,2213,296 5445 | 385,467 5446 | 1020,798 5447 | 943,945 5448 | 1195,312 5449 | 3492,1693,106 5450 | 213,3520 5451 | 843,2727 5452 | 1652,2176,1859,791 5453 | 828,829,1643 5454 | 545,1037 5455 | 3185,1763,951 5456 | 279,1993 5457 | 1093,2221 5458 | 2251,45 5459 | 1374,1751 5460 | 513,1667 5461 | 411,3943 5462 | 706,809 5463 | 303,301,302 5464 | 1653,1654,1655,1714 5465 | 864,287 5466 | 177,2310,2573,111 5467 | 1078,220 5468 | 2399,3473,2177 5469 | 1190,1853 5470 | 1659,305 5471 | 914,1029 5472 | 385,467,1013 5473 | 820,1320 5474 | 2094,364 5475 | 2689,1666,2093,851 5476 | 220,2306 5477 | 423,230,124 5478 | 2094,1668,364 5479 | 705,706 5480 | 1054,105 5481 | 80,2308 5482 | 1631,3788,2015 5483 | 445,2428 5484 | 1855,715,242 5485 | 569,2995 5486 | 1671,1672,308 5487 | 1677,1678,2657,1813 5488 | 1416,1679 5489 | 1968,1969,1971 5490 | 966,1021 5491 | 373,2187 5492 | 1911,1519,1389 5493 | 1088,456,896 5494 | 1085,486,487 5495 | 502,288,453 5496 | 107,673,1121 5497 | 931,155 5498 | 1681,878 5499 | 12,13,773 5500 | 302,1462 5501 | 2424,1682,2407 5502 | 569,844 5503 | 1496,158 5504 | 3854,1578,2924 5505 | 2614,978 5506 | 1639,3409 5507 | 295,407 5508 | 1795,967 5509 | 20,2307 5510 | 373,1877,2889 5511 | 889,1685,767,237 5512 | 1762,3864 5513 | 1628,1686 5514 | 2792,1972,2070,641 5515 | 1688,402 5516 | 2399,1366,2427 5517 | 108,297,2983,1689,149 5518 | 3907,1628,2712 5519 | 2463,3150 5520 | 417,1304 5521 | 978,444 5522 | 1695,332 5523 | 3014,3713 5524 | 835,3902 5525 | 12,13 5526 | 931,155 5527 | 2110,1816 5528 | 3517,1370 5529 | 5,341 5530 | 623,514,1998 5531 | 1107,248,1010 5532 | 1703,950,3498 5533 | 1340,651,1704 5534 | 2799,1176,1465 5535 | 2918,1705,159 5536 | 1801,1023 5537 | 278,1558 5538 | 79,80 5539 | 2448,3523,941 5540 | 3134,3436,2283 5541 | 3248,2367 5542 | 1719,3168,3503 5543 | 383,105 5544 | 3780,3222 5545 | 2442,1719,1392 5546 | 1721,7,1325 5547 | 1995,2934,2413 5548 | 533,3355,2118,532 5549 | 373,2456,202 5550 | 390,612,3640 5551 | 2193,2333,3559 5552 | 1720,230 5553 | 3475,3476 5554 | 236,237 5555 | 1024,975,983 5556 | 1724,1975,105 5557 | 1725,521,522 5558 | 1726,2187 5559 | 490,1730,1731 5560 | 2575,2871 5561 | 3114,0,1110,1735 5562 | 2614,773 5563 | 1147,241,1948 5564 | 568,1041 5565 | 2463,1739 5566 | 1243,3105 5567 | 747,1283 5568 | 1595,1596 5569 | 636,637 5570 | 489,1740,1741 5571 | 2105,3000,1746 5572 | 629,83 5573 | 2101,5,341 5574 | 640,839 5575 | 1189,475 5576 | 196,549 5577 | 57,1697 5578 | 970,156 5579 | 1646,1647,228,2442 5580 | 3599,3104,3756 5581 | 2399,2177,2427 5582 | 2081,2787 5583 | 160,1291 5584 | 880,878,879 5585 | 1753,2142,2143 5586 | 5,385 5587 | 207,3429 5588 | 334,2454,2457 5589 | 819,820,1205,818 5590 | 3367,1582 5591 | 2062,118,1757 5592 | 1269,1758,1500,1760,2889 5593 | 1761,1768,2161 5594 | 1931,1766,279 5595 | 1243,3469 5596 | 3049,849 5597 | --------------------------------------------------------------------------------