merge topology read system
authorTommaso Pecorella <tpecorella@mac.com>
Fri, 12 Mar 2010 14:36:38 -0500
changeset 6127 b5bc10de166d
parent 6126 ac31bd504e69
child 6128 f448586c0e52
merge topology read system
examples/topology-read/Inet_small_toposample.txt
examples/topology-read/Inet_toposample.txt
examples/topology-read/Orbis_toposample.txt
examples/topology-read/topology-example-sim.cc
examples/topology-read/waf
examples/topology-read/wscript
src/contrib/topology-read/inet-topology-reader.cc
src/contrib/topology-read/inet-topology-reader.h
src/contrib/topology-read/orbis-topology-reader.cc
src/contrib/topology-read/orbis-topology-reader.h
src/contrib/topology-read/topology-reader.cc
src/contrib/topology-read/topology-reader.h
src/contrib/topology-read/topology.h
src/contrib/topology-read/wscript
src/helper/topology-reader-helper.cc
src/helper/topology-reader-helper.h
src/helper/wscript
src/wscript
test.py
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/topology-read/Inet_small_toposample.txt	Fri Mar 12 14:36:38 2010 -0500
@@ -0,0 +1,20 @@
+10 9
+0	5625	2473
+1	4505	4098
+2	9866	2148
+3	8315	7088
+4	8564	5989
+5	2064	510
+6	2942	2145
+7	2646	9895
+8	5051	3220
+9	6715	6729
+0	1	1973
+0	2	4253
+0	3	5341
+0	5	4066
+0	6	2702
+0	9	4393
+1	8	1033
+2	7	10589
+3	4	1126
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/topology-read/Inet_toposample.txt	Fri Mar 12 14:36:38 2010 -0500
@@ -0,0 +1,7826 @@
+3037 4788
+0	5625	2473
+1	4505	4098
+2	9866	2148
+3	8315	7088
+4	8564	5989
+5	2064	510
+6	2942	2145
+7	2646	9895
+8	5051	3220
+9	6715	6729
+10	5375	17
+11	1500	3826
+12	718	3640
+13	7870	9475
+14	2834	1667
+15	345	2908
+16	708	1805
+17	8662	2137
+18	989	2807
+19	6537	6490
+20	1659	4642
+21	4255	2709
+22	2260	9074
+23	5081	8712
+24	2482	2591
+25	3725	856
+26	1446	2942
+27	8953	2328
+28	1151	5422
+29	3447	9832
+30	8641	6823
+31	5392	8310
+32	4834	6363
+33	7805	6943
+34	4078	4017
+35	9968	486
+36	9167	7765
+37	1801	4676
+38	6234	3856
+39	6717	8096
+40	6770	7733
+41	984	9648
+42	152	4546
+43	2371	5729
+44	2993	5588
+45	8299	6581
+46	6439	762
+47	3192	6168
+48	830	9908
+49	540	7056
+50	4979	3144
+51	6609	6272
+52	8085	2379
+53	5304	1552
+54	3535	785
+55	8172	2898
+56	1778	6795
+57	6908	2048
+58	4673	2268
+59	2138	8447
+60	5736	9544
+61	3128	948
+62	6245	94
+63	1192	3651
+64	7660	9475
+65	8095	544
+66	7759	3110
+67	8921	416
+68	4208	566
+69	7950	8667
+70	3163	1187
+71	4259	4660
+72	3077	8599
+73	3790	6360
+74	4055	3036
+75	5402	1227
+76	6463	4776
+77	6622	7451
+78	6738	152
+79	4501	1290
+80	1223	4101
+81	3487	8042
+82	7956	120
+83	1980	6096
+84	6371	4963
+85	5095	3134
+86	1789	391
+87	881	2652
+88	6969	6415
+89	8535	3832
+90	8496	743
+91	9173	9409
+92	7779	7901
+93	1438	3109
+94	4116	2522
+95	3662	1116
+96	5419	1518
+97	7178	4024
+98	2125	160
+99	9502	829
+100	7261	5998
+101	9304	3058
+102	3910	6081
+103	5936	7011
+104	3731	6360
+105	2875	8232
+106	7264	2407
+107	3173	8642
+108	3082	7255
+109	3030	2964
+110	8333	2377
+111	9311	4795
+112	1542	8378
+113	3042	5515
+114	8414	3286
+115	8015	6604
+116	6433	9238
+117	1105	7508
+118	9796	87
+119	3284	6144
+120	5491	5291
+121	7272	402
+122	9292	9688
+123	3486	7134
+124	1109	7872
+125	2118	7742
+126	8574	7941
+127	7762	4147
+128	1606	5876
+129	9896	9631
+130	3127	5865
+131	4781	9513
+132	9380	6682
+133	9810	856
+134	8914	9375
+135	3487	3391
+136	2940	9215
+137	3725	4492
+138	2064	9171
+139	6526	8038
+140	9884	8117
+141	2896	9805
+142	2838	7373
+143	9492	22
+144	3925	9827
+145	8842	2543
+146	9963	4421
+147	8856	6897
+148	1959	3305
+149	8858	7658
+150	9921	2468
+151	8615	3957
+152	6813	861
+153	9596	1687
+154	7894	1942
+155	451	2670
+156	3228	2364
+157	1764	8613
+158	871	3745
+159	4511	3061
+160	4150	550
+161	5849	3562
+162	2441	7634
+163	7791	4874
+164	5061	4555
+165	9565	3741
+166	3857	7041
+167	907	3306
+168	7708	9575
+169	899	7176
+170	1782	9054
+171	8476	4419
+172	2918	2996
+173	997	8216
+174	3584	3056
+175	922	8250
+176	2171	464
+177	5808	9959
+178	1229	3816
+179	3292	9892
+180	3421	4216
+181	9077	6846
+182	3842	2540
+183	3813	4753
+184	3845	6769
+185	684	1998
+186	4162	3603
+187	354	4297
+188	8760	7795
+189	1624	1917
+190	6115	5636
+191	8301	8587
+192	223	8728
+193	2906	7785
+194	4423	8866
+195	7801	9708
+196	1577	4890
+197	9863	9056
+198	730	3735
+199	4245	6958
+200	5268	9090
+201	9503	1791
+202	8786	6776
+203	6953	1547
+204	9909	2689
+205	3734	7817
+206	4672	6580
+207	2011	2466
+208	2373	6961
+209	5060	9075
+210	8343	6863
+211	588	6067
+212	7154	2819
+213	7608	5628
+214	3127	746
+215	7752	6076
+216	7607	1581
+217	8313	3206
+218	4601	2732
+219	4986	9198
+220	9439	9569
+221	3219	48
+222	2840	761
+223	1835	368
+224	4391	8115
+225	6675	3191
+226	8066	5765
+227	2801	4064
+228	4385	2087
+229	3181	3616
+230	4822	7539
+231	6589	1983
+232	3493	1355
+233	8836	9298
+234	4776	6567
+235	901	6829
+236	4563	1198
+237	2301	6265
+238	584	6897
+239	3028	7421
+240	1876	5507
+241	9943	5724
+242	3498	6512
+243	8323	1870
+244	4474	8382
+245	2830	3455
+246	1707	3826
+247	2099	3705
+248	4840	7258
+249	6932	6295
+250	1051	2773
+251	5162	3213
+252	5494	9275
+253	5473	9233
+254	306	8261
+255	8266	6783
+256	6267	689
+257	3306	21
+258	6883	7609
+259	5809	6467
+260	4630	2982
+261	9675	5764
+262	828	8872
+263	6919	3702
+264	1189	2043
+265	6439	7083
+266	5740	8138
+267	5850	3383
+268	6359	1228
+269	9702	6508
+270	3285	220
+271	9135	6612
+272	6432	8238
+273	5	4451
+274	5381	7046
+275	4906	6817
+276	8286	1364
+277	3794	3572
+278	357	1132
+279	3768	8945
+280	8676	4258
+281	2625	2381
+282	4482	8103
+283	6186	1034
+284	330	2157
+285	2575	6655
+286	6182	5409
+287	9448	9999
+288	522	9498
+289	334	7211
+290	8839	1172
+291	8806	9988
+292	4052	5942
+293	8601	4205
+294	572	5874
+295	9425	706
+296	9403	5167
+297	4122	2054
+298	9952	4918
+299	8924	7465
+300	4715	9106
+301	8838	6925
+302	9223	685
+303	2108	9194
+304	3922	7283
+305	4386	2199
+306	8466	7725
+307	7239	163
+308	389	3474
+309	5734	2915
+310	7864	2256
+311	9416	4836
+312	1545	8262
+313	5744	7194
+314	4484	7132
+315	6419	8955
+316	6603	2479
+317	3145	7489
+318	9361	9744
+319	2133	8379
+320	1817	1514
+321	20	9088
+322	3341	7796
+323	1763	7807
+324	5253	2295
+325	2929	8023
+326	6053	1179
+327	4607	3085
+328	7530	7581
+329	5097	7531
+330	590	6194
+331	7178	1978
+332	1871	7186
+333	3150	4139
+334	8619	264
+335	247	2753
+336	8382	2252
+337	9960	6950
+338	1441	2627
+339	8964	7620
+340	1392	737
+341	8950	4687
+342	1395	9556
+343	1465	3145
+344	7665	1813
+345	6387	9902
+346	3615	2057
+347	642	2239
+348	9447	7471
+349	2153	5138
+350	1794	9995
+351	6717	7950
+352	4604	3212
+353	4020	3562
+354	514	3553
+355	8210	1904
+356	388	4320
+357	943	1557
+358	5426	425
+359	3376	4549
+360	517	686
+361	2922	7364
+362	8496	4376
+363	2215	3207
+364	1270	4496
+365	2065	9186
+366	4989	5345
+367	6523	5715
+368	6410	3435
+369	7646	7777
+370	6298	1849
+371	8819	4884
+372	8417	6467
+373	4956	9693
+374	2631	7264
+375	2635	8815
+376	2093	7320
+377	2747	7880
+378	4785	4027
+379	660	4955
+380	7716	7724
+381	9328	1165
+382	4456	4471
+383	4003	2494
+384	7004	5553
+385	3128	7398
+386	2066	1323
+387	4314	8528
+388	7840	3768
+389	5832	3990
+390	5358	4987
+391	2816	7552
+392	1281	2419
+393	5612	9048
+394	6392	1849
+395	1594	8929
+396	6925	9463
+397	4157	9416
+398	8099	1187
+399	8088	537
+400	500	37
+401	184	6093
+402	7023	4264
+403	6221	9145
+404	5899	8997
+405	8899	5613
+406	9566	5065
+407	9655	885
+408	8812	5655
+409	4922	3419
+410	423	4423
+411	7079	6408
+412	7456	7166
+413	8803	9291
+414	8299	9127
+415	3573	4510
+416	9599	7316
+417	1391	6344
+418	5965	2934
+419	6660	9381
+420	3920	9158
+421	6466	6657
+422	8560	6716
+423	8218	8902
+424	5962	6135
+425	147	6235
+426	3726	907
+427	6220	3965
+428	1211	7998
+429	5107	1529
+430	1882	2655
+431	9299	1696
+432	5480	8936
+433	3375	3398
+434	4684	7116
+435	319	7898
+436	774	8500
+437	3287	9239
+438	6261	7582
+439	3978	7928
+440	9067	6950
+441	6767	9053
+442	8573	9656
+443	5504	2984
+444	611	9158
+445	8032	5530
+446	7180	1328
+447	6993	2929
+448	5356	5867
+449	6222	4161
+450	7977	9377
+451	7599	8733
+452	4073	3333
+453	1695	1243
+454	8847	1770
+455	668	3106
+456	6698	5539
+457	5215	4423
+458	8582	7448
+459	4351	3029
+460	4044	5730
+461	6511	2616
+462	9999	7709
+463	8018	7590
+464	6454	8338
+465	7014	8936
+466	7880	8356
+467	5735	888
+468	3871	9431
+469	2752	2175
+470	3800	2458
+471	4257	7046
+472	1944	8973
+473	4564	4395
+474	8689	2847
+475	7264	8357
+476	7629	3112
+477	9985	1520
+478	409	9257
+479	2996	3659
+480	3124	7810
+481	4346	7050
+482	3358	1257
+483	9752	326
+484	4511	4341
+485	8249	6945
+486	3697	5654
+487	6127	2568
+488	8719	7992
+489	8585	2264
+490	9187	5785
+491	2294	761
+492	2499	4202
+493	3027	2718
+494	9948	5536
+495	425	5199
+496	7291	6296
+497	96	1073
+498	7859	3929
+499	2576	9366
+500	9335	9125
+501	2300	7924
+502	6516	5600
+503	8098	6089
+504	2265	4567
+505	3323	7425
+506	3308	4053
+507	5278	1343
+508	3350	8901
+509	9240	8028
+510	700	3912
+511	4642	8625
+512	5518	6936
+513	1788	339
+514	2383	9373
+515	9918	2080
+516	7289	5996
+517	3879	144
+518	5320	921
+519	8228	2994
+520	8037	4935
+521	7518	4511
+522	985	4053
+523	6275	6627
+524	2356	1754
+525	3130	9049
+526	3243	7700
+527	3418	9806
+528	6012	193
+529	154	4135
+530	2326	2583
+531	926	2675
+532	6774	360
+533	3243	1252
+534	9166	9922
+535	2966	3181
+536	2524	1132
+537	7516	2169
+538	7653	2839
+539	7538	2656
+540	4467	2230
+541	8631	616
+542	1585	4539
+543	1231	7061
+544	8495	2659
+545	590	2863
+546	9957	6578
+547	8722	2760
+548	2879	3832
+549	950	8886
+550	2338	9609
+551	5551	6640
+552	7453	5817
+553	2227	8296
+554	2923	1255
+555	6010	5406
+556	5954	9787
+557	4841	4774
+558	1655	6566
+559	5911	9127
+560	7718	3769
+561	2617	2561
+562	1643	5233
+563	6089	1802
+564	4106	9269
+565	8270	126
+566	2617	2589
+567	6495	2968
+568	1816	5092
+569	4549	9100
+570	8972	2386
+571	6858	7032
+572	1588	2753
+573	6622	8088
+574	6767	1949
+575	6762	6517
+576	8159	4156
+577	837	8959
+578	5497	2750
+579	8980	3942
+580	7410	8275
+581	9457	414
+582	2372	6414
+583	6844	6
+584	3905	7768
+585	8051	5920
+586	8330	2224
+587	9380	5218
+588	6459	1988
+589	6302	7969
+590	1844	402
+591	3774	9271
+592	3991	3583
+593	8873	8935
+594	7393	4296
+595	2383	2643
+596	2412	5068
+597	5318	7398
+598	581	712
+599	648	5078
+600	9929	4073
+601	8646	2621
+602	2071	7663
+603	9463	3101
+604	7298	2016
+605	732	3139
+606	9085	1041
+607	4641	4945
+608	4786	7473
+609	9950	9787
+610	9470	1182
+611	6830	2875
+612	462	2110
+613	7704	1393
+614	3943	7398
+615	7323	3417
+616	6405	2542
+617	9645	8947
+618	1467	6322
+619	7617	4083
+620	6647	2781
+621	5918	1394
+622	980	994
+623	7030	2028
+624	7380	843
+625	4680	2884
+626	6760	9870
+627	2244	1823
+628	2628	9052
+629	9829	6653
+630	757	5919
+631	3078	1906
+632	6176	4533
+633	2288	1842
+634	9517	717
+635	3352	5662
+636	5606	2198
+637	5202	2220
+638	7115	1574
+639	5165	2687
+640	2636	5839
+641	9144	7349
+642	4755	7192
+643	8239	4065
+644	6827	118
+645	3662	9938
+646	8237	2057
+647	4674	2615
+648	1972	6500
+649	1867	9774
+650	6358	364
+651	9468	5648
+652	1864	5363
+653	7509	3039
+654	741	3311
+655	4103	7548
+656	3126	7430
+657	4668	5653
+658	853	5482
+659	7789	6639
+660	5311	501
+661	830	8687
+662	1168	3074
+663	2250	4077
+664	6493	1075
+665	9498	6484
+666	7988	5908
+667	6135	6669
+668	7689	7160
+669	924	1182
+670	6607	9880
+671	2631	7855
+672	537	5209
+673	2077	5202
+674	4393	1783
+675	7200	7475
+676	1554	6428
+677	5742	7804
+678	7428	656
+679	9478	2104
+680	9398	7867
+681	602	2264
+682	8709	1457
+683	9922	6411
+684	1076	174
+685	9542	7661
+686	8524	4494
+687	6118	9247
+688	1927	4632
+689	4660	6986
+690	4054	3724
+691	3548	6642
+692	9292	1047
+693	7607	6863
+694	2642	790
+695	882	4719
+696	3024	5845
+697	927	2369
+698	2679	4920
+699	5397	2796
+700	1786	7349
+701	6676	3141
+702	1564	9741
+703	4545	3650
+704	763	7282
+705	1540	2428
+706	5259	3364
+707	2416	2224
+708	4026	4686
+709	9975	9885
+710	8839	2075
+711	3797	3725
+712	1826	8677
+713	2405	7980
+714	6886	1957
+715	168	4661
+716	2916	7162
+717	9941	5646
+718	9087	1730
+719	6448	1454
+720	956	1063
+721	6863	41
+722	9246	5266
+723	1726	1825
+724	4239	7848
+725	4649	3087
+726	2278	5931
+727	9423	3044
+728	2513	375
+729	2298	9616
+730	7760	3369
+731	7639	353
+732	5940	1837
+733	5699	8361
+734	2369	7864
+735	289	8138
+736	4298	5494
+737	7155	7148
+738	5976	332
+739	2927	980
+740	4278	8970
+741	6465	2388
+742	4648	7765
+743	2335	1606
+744	5849	36
+745	5460	4544
+746	3801	5940
+747	8620	7662
+748	3488	3160
+749	9279	2510
+750	7473	5250
+751	552	1365
+752	3883	7398
+753	3211	3463
+754	1368	7763
+755	3737	7791
+756	4226	800
+757	5285	6435
+758	4655	1419
+759	6725	7208
+760	2237	6513
+761	5143	7401
+762	796	1931
+763	7549	2501
+764	8432	8536
+765	6160	3443
+766	4274	28
+767	3766	1114
+768	8194	7069
+769	275	4051
+770	8754	270
+771	3984	3773
+772	8475	1780
+773	9122	3742
+774	9832	9043
+775	7343	3057
+776	6234	6449
+777	3348	2134
+778	6280	5569
+779	2456	1294
+780	6935	4308
+781	2005	5452
+782	8890	9621
+783	8928	3608
+784	8440	2150
+785	2908	7266
+786	9649	5437
+787	6531	2009
+788	4850	2080
+789	689	5964
+790	2584	5526
+791	6641	8915
+792	1148	7842
+793	8894	579
+794	6236	3014
+795	7625	3541
+796	8494	4017
+797	2618	798
+798	4722	9011
+799	7419	4684
+800	92	4362
+801	5014	4387
+802	7198	2744
+803	9989	2698
+804	6608	2532
+805	1658	9232
+806	3719	717
+807	977	9729
+808	63	6921
+809	4277	4382
+810	4719	7597
+811	221	5556
+812	5776	5300
+813	877	8862
+814	5564	6747
+815	4938	8590
+816	6186	1520
+817	6767	6832
+818	4503	6234
+819	4563	2963
+820	1663	565
+821	5983	2571
+822	3224	4723
+823	6478	5864
+824	9343	5663
+825	7620	3226
+826	9820	6865
+827	7446	1441
+828	2414	4337
+829	6963	4209
+830	5513	3033
+831	3038	8147
+832	6125	6238
+833	4823	7450
+834	7360	8120
+835	2607	3112
+836	938	7070
+837	5843	4328
+838	5332	7695
+839	8651	4022
+840	4768	614
+841	8206	7188
+842	2088	8835
+843	1554	3919
+844	5773	1634
+845	7579	723
+846	6196	7128
+847	3987	4127
+848	7612	2858
+849	6927	6922
+850	1634	5165
+851	3946	7066
+852	2735	5950
+853	9597	5288
+854	6670	7572
+855	2857	8914
+856	5602	7757
+857	2261	889
+858	4034	3435
+859	551	610
+860	8078	6784
+861	3267	8088
+862	6707	6699
+863	3900	4705
+864	2513	3070
+865	7336	2308
+866	3932	1767
+867	6234	166
+868	3005	7555
+869	7198	7301
+870	3397	780
+871	5196	7652
+872	6560	5784
+873	8026	6327
+874	3100	1627
+875	3110	5088
+876	85	6539
+877	4390	498
+878	1643	7144
+879	7316	584
+880	8744	5724
+881	9866	4340
+882	1257	5031
+883	8571	1385
+884	7860	1000
+885	470	619
+886	5555	5672
+887	9937	4781
+888	2783	5075
+889	1478	5940
+890	8302	5389
+891	7908	686
+892	980	3061
+893	3227	2245
+894	9982	8712
+895	9184	2345
+896	1230	6725
+897	6015	4262
+898	4669	4551
+899	3043	989
+900	7781	1653
+901	9196	1958
+902	6194	6476
+903	186	8551
+904	8129	5956
+905	9843	8094
+906	8337	1170
+907	7260	2685
+908	4096	5101
+909	8964	4398
+910	1754	1143
+911	3142	3019
+912	9985	6462
+913	7537	1537
+914	7416	6193
+915	9803	2874
+916	4080	7783
+917	1339	3864
+918	950	7423
+919	556	2086
+920	3014	3098
+921	8360	4119
+922	5989	1383
+923	7515	2387
+924	7478	4603
+925	5118	8877
+926	4469	376
+927	3018	3849
+928	4434	9349
+929	3633	5814
+930	2645	892
+931	9194	8834
+932	1713	9843
+933	5608	8512
+934	8700	2911
+935	2448	3606
+936	6083	5472
+937	3824	24
+938	58	2473
+939	9974	1610
+940	9720	1240
+941	8051	2856
+942	2553	4049
+943	203	9405
+944	8250	1230
+945	3568	4717
+946	3972	8590
+947	1490	9941
+948	718	2372
+949	2170	3632
+950	8581	6737
+951	8010	9329
+952	680	1823
+953	1678	5626
+954	9567	4873
+955	4126	3032
+956	3743	4884
+957	6764	202
+958	475	5472
+959	3562	5046
+960	5248	1246
+961	4917	7947
+962	3878	246
+963	1017	4838
+964	6959	4914
+965	1822	7762
+966	8285	7743
+967	9073	701
+968	1702	3711
+969	5531	9825
+970	2764	5432
+971	1220	4080
+972	2376	5115
+973	1333	4197
+974	9802	2509
+975	8064	9206
+976	4278	7591
+977	5783	2474
+978	5703	5512
+979	4436	616
+980	3705	233
+981	9377	7863
+982	3173	5566
+983	2154	6583
+984	595	8802
+985	6424	1490
+986	1533	7343
+987	499	2886
+988	6438	4586
+989	9846	190
+990	9354	1338
+991	660	7716
+992	8764	4645
+993	3781	2818
+994	5220	247
+995	6135	8491
+996	4424	1855
+997	6329	8085
+998	1547	9985
+999	5182	886
+1000	9656	9153
+1001	1432	696
+1002	1397	5513
+1003	216	4205
+1004	3384	254
+1005	3941	1839
+1006	643	860
+1007	7877	5910
+1008	7340	3615
+1009	6781	274
+1010	7832	7734
+1011	9137	4970
+1012	8917	594
+1013	9341	614
+1014	628	8356
+1015	2347	17
+1016	332	1066
+1017	5764	4449
+1018	2420	3020
+1019	7980	2613
+1020	8411	372
+1021	4452	1240
+1022	9959	3307
+1023	7099	6505
+1024	1501	3123
+1025	7880	9423
+1026	5429	7038
+1027	3504	3614
+1028	9800	5144
+1029	5665	4748
+1030	7400	4324
+1031	7471	7210
+1032	911	1285
+1033	5950	4923
+1034	2807	3424
+1035	5227	4979
+1036	4071	8053
+1037	4830	3087
+1038	1364	5693
+1039	693	7541
+1040	5894	7117
+1041	1874	288
+1042	6472	9555
+1043	836	581
+1044	2932	3449
+1045	7192	8520
+1046	1533	3281
+1047	4004	1316
+1048	9331	9021
+1049	455	8587
+1050	5478	5037
+1051	4324	6762
+1052	2295	7770
+1053	7790	576
+1054	2320	1823
+1055	7673	1955
+1056	5651	8562
+1057	3198	5341
+1058	5368	8345
+1059	9278	5685
+1060	6443	7784
+1061	8879	348
+1062	2514	93
+1063	7239	7861
+1064	4080	9053
+1065	3346	828
+1066	6934	8908
+1067	6685	5075
+1068	8815	8940
+1069	2282	7331
+1070	1295	5511
+1071	6840	6537
+1072	1334	8590
+1073	4149	8066
+1074	9622	7476
+1075	1890	5310
+1076	7755	9927
+1077	7827	7118
+1078	996	6788
+1079	7368	8389
+1080	8346	2840
+1081	6726	7798
+1082	4703	8519
+1083	49	9423
+1084	2282	7532
+1085	2608	1675
+1086	2042	1361
+1087	3258	4344
+1088	3451	8433
+1089	5801	6635
+1090	4532	2951
+1091	3838	147
+1092	4043	8676
+1093	8301	3731
+1094	534	8555
+1095	330	8312
+1096	3813	5055
+1097	9888	5579
+1098	9993	1486
+1099	3797	9055
+1100	7745	8346
+1101	8559	7140
+1102	5902	8871
+1103	252	8721
+1104	9432	8241
+1105	7296	4737
+1106	2348	8569
+1107	6982	7474
+1108	3344	3287
+1109	5759	3815
+1110	4595	2470
+1111	9676	3016
+1112	7468	5019
+1113	6924	4490
+1114	6061	5313
+1115	8666	908
+1116	5372	4778
+1117	6524	153
+1118	5736	9919
+1119	9620	1364
+1120	2859	6344
+1121	3489	5995
+1122	728	4790
+1123	6997	898
+1124	6101	772
+1125	7710	9160
+1126	4785	6191
+1127	2665	4453
+1128	9234	595
+1129	166	2098
+1130	9695	7429
+1131	577	5019
+1132	9032	1784
+1133	3654	2520
+1134	6184	2465
+1135	5582	7597
+1136	4028	5838
+1137	2241	448
+1138	4165	8848
+1139	2146	6669
+1140	6451	3143
+1141	4386	1077
+1142	4140	9295
+1143	2054	8612
+1144	3017	4180
+1145	7389	4309
+1146	8914	3858
+1147	1707	91
+1148	2568	8883
+1149	4722	6036
+1150	7846	684
+1151	6932	4268
+1152	9642	8812
+1153	5436	8441
+1154	4251	1152
+1155	3579	7169
+1156	1511	3187
+1157	830	4136
+1158	407	611
+1159	3645	7283
+1160	257	4478
+1161	8691	6227
+1162	9877	7725
+1163	4201	1362
+1164	7483	8220
+1165	8793	8807
+1166	6238	1524
+1167	9534	9941
+1168	5435	2527
+1169	573	3515
+1170	2746	9580
+1171	8660	4547
+1172	4470	9997
+1173	3261	2827
+1174	3171	5587
+1175	2710	7728
+1176	7506	7916
+1177	6692	5677
+1178	9870	2081
+1179	1320	6673
+1180	6442	6899
+1181	338	3794
+1182	6873	3488
+1183	2527	2563
+1184	7568	2095
+1185	302	118
+1186	313	2588
+1187	9645	4218
+1188	8222	3838
+1189	4721	6834
+1190	9090	5919
+1191	938	7145
+1192	8606	8139
+1193	8374	2260
+1194	659	5651
+1195	1869	1860
+1196	1257	8809
+1197	8486	6103
+1198	3446	7151
+1199	894	4668
+1200	1481	1513
+1201	7882	4993
+1202	7006	8303
+1203	9802	6060
+1204	5443	9785
+1205	9257	8759
+1206	5376	6146
+1207	9837	5499
+1208	5256	1674
+1209	7719	901
+1210	4398	2872
+1211	2853	9330
+1212	4744	8430
+1213	6250	8014
+1214	8336	4304
+1215	1266	4799
+1216	2816	6438
+1217	2931	9334
+1218	3006	3648
+1219	982	3637
+1220	4836	706
+1221	5350	6437
+1222	9655	6570
+1223	5721	9320
+1224	9375	2288
+1225	4433	9318
+1226	3187	4440
+1227	4324	5770
+1228	673	1902
+1229	1780	5035
+1230	3916	5625
+1231	4049	3585
+1232	7898	2828
+1233	814	2315
+1234	932	8340
+1235	2699	520
+1236	158	3011
+1237	1946	4778
+1238	5999	6076
+1239	9283	6976
+1240	8973	6065
+1241	3343	3789
+1242	1942	2019
+1243	4729	786
+1244	9365	9036
+1245	5618	6108
+1246	3317	2149
+1247	4590	7066
+1248	4307	798
+1249	3562	2480
+1250	1598	3561
+1251	3332	231
+1252	2060	3058
+1253	1884	2563
+1254	7311	4803
+1255	924	8254
+1256	7575	7069
+1257	5958	9693
+1258	1109	2371
+1259	292	3470
+1260	6159	5085
+1261	5863	6213
+1262	9185	1687
+1263	6351	4830
+1264	3123	5868
+1265	4781	1556
+1266	2881	7713
+1267	6498	6358
+1268	5206	6334
+1269	8400	2630
+1270	1838	561
+1271	3580	7064
+1272	5085	1280
+1273	2153	9825
+1274	6622	6462
+1275	6416	8972
+1276	7365	3529
+1277	8213	6250
+1278	4621	4597
+1279	4733	3953
+1280	2168	7147
+1281	5419	5809
+1282	5100	9718
+1283	8508	5150
+1284	17	9901
+1285	8295	2098
+1286	3448	2952
+1287	8890	3622
+1288	4198	4610
+1289	6252	6038
+1290	6740	1177
+1291	3178	9690
+1292	5008	6622
+1293	2441	4662
+1294	7410	897
+1295	8293	4206
+1296	2724	9337
+1297	7585	8421
+1298	5781	4337
+1299	8416	8146
+1300	6309	5189
+1301	7259	4489
+1302	1369	7839
+1303	6580	1226
+1304	6025	3351
+1305	6252	2462
+1306	7695	1802
+1307	4860	3727
+1308	7950	8961
+1309	7447	3980
+1310	5951	4063
+1311	4474	7324
+1312	8130	8508
+1313	4315	989
+1314	4144	6566
+1315	9851	3934
+1316	1880	3659
+1317	2316	4426
+1318	3433	8943
+1319	7107	6859
+1320	5217	8277
+1321	7916	3381
+1322	4669	8370
+1323	6384	8158
+1324	9421	2805
+1325	2814	3615
+1326	3924	4813
+1327	8810	7709
+1328	5795	9020
+1329	6538	421
+1330	3170	4820
+1331	2974	9679
+1332	4419	3983
+1333	4766	8433
+1334	3807	584
+1335	5885	9931
+1336	7429	68
+1337	7392	9761
+1338	973	9136
+1339	6314	5144
+1340	9712	3160
+1341	1323	1273
+1342	8728	284
+1343	7365	6416
+1344	2725	9466
+1345	9622	9749
+1346	8056	8395
+1347	9548	2194
+1348	8475	7616
+1349	3918	3482
+1350	8337	7613
+1351	2590	9206
+1352	1952	2452
+1353	5217	9175
+1354	9246	3980
+1355	5599	2754
+1356	7571	5587
+1357	5570	8483
+1358	129	2809
+1359	6564	1467
+1360	5268	1362
+1361	8298	9989
+1362	9751	9700
+1363	1979	2986
+1364	6408	2968
+1365	3398	4710
+1366	9305	9565
+1367	7930	8191
+1368	3481	1039
+1369	4409	1300
+1370	2996	435
+1371	9287	1758
+1372	9290	6863
+1373	5017	5932
+1374	9318	2101
+1375	1242	9011
+1376	6616	3867
+1377	5174	7480
+1378	9103	9695
+1379	8221	8256
+1380	9610	665
+1381	1845	5755
+1382	2024	6927
+1383	6882	8462
+1384	6502	3383
+1385	4602	9902
+1386	9163	3933
+1387	9031	972
+1388	6831	8880
+1389	199	5182
+1390	7845	6401
+1391	5999	1438
+1392	2699	9999
+1393	835	6841
+1394	1467	489
+1395	6228	3692
+1396	9496	24
+1397	2926	771
+1398	9288	9159
+1399	3609	1544
+1400	5821	6652
+1401	2946	9067
+1402	925	70
+1403	1220	5321
+1404	3446	3633
+1405	8827	3156
+1406	973	5941
+1407	1575	9532
+1408	1866	7551
+1409	8232	1272
+1410	9486	6439
+1411	6307	9823
+1412	7202	6930
+1413	3529	9987
+1414	5344	9900
+1415	3890	444
+1416	4484	3419
+1417	1469	7571
+1418	5913	4340
+1419	9856	1874
+1420	9882	5493
+1421	558	4168
+1422	6661	3103
+1423	740	9562
+1424	54	8086
+1425	128	4593
+1426	8638	7824
+1427	2293	6952
+1428	3501	1915
+1429	5942	9539
+1430	1069	8286
+1431	5338	6845
+1432	1950	1616
+1433	2386	1536
+1434	3966	5081
+1435	9837	5555
+1436	220	7369
+1437	7519	8792
+1438	4041	4416
+1439	1411	1021
+1440	614	2654
+1441	7213	821
+1442	9330	2435
+1443	6890	7344
+1444	8706	35
+1445	8206	281
+1446	8976	9619
+1447	5952	6809
+1448	339	8371
+1449	2801	6593
+1450	297	5499
+1451	9280	4728
+1452	3966	6243
+1453	7413	2273
+1454	4727	9372
+1455	6683	9272
+1456	3988	8417
+1457	1143	5060
+1458	1616	1292
+1459	7023	3459
+1460	6244	7581
+1461	9147	8559
+1462	6757	6604
+1463	1541	2636
+1464	7143	3862
+1465	1643	2559
+1466	8835	4356
+1467	5462	9998
+1468	5243	8274
+1469	2063	4558
+1470	7361	7153
+1471	3601	2400
+1472	3679	5001
+1473	7495	7622
+1474	6927	742
+1475	6275	7020
+1476	4460	5998
+1477	1747	5954
+1478	2083	8552
+1479	9824	6296
+1480	3095	6053
+1481	5781	934
+1482	3678	6288
+1483	2750	9961
+1484	6943	2312
+1485	1722	519
+1486	8190	7534
+1487	4951	9477
+1488	6373	550
+1489	5833	6319
+1490	8151	7607
+1491	8956	1108
+1492	9878	2274
+1493	7989	1469
+1494	7458	6507
+1495	3399	6948
+1496	8716	8112
+1497	6169	7752
+1498	5128	9696
+1499	5333	367
+1500	421	832
+1501	6099	1257
+1502	3195	7476
+1503	1301	7091
+1504	8455	6504
+1505	7093	438
+1506	889	2218
+1507	313	2748
+1508	9815	6758
+1509	6584	6246
+1510	1715	8579
+1511	6059	133
+1512	254	7653
+1513	6789	2028
+1514	1550	6015
+1515	9200	2953
+1516	3093	1030
+1517	1849	2042
+1518	2890	7549
+1519	4250	8443
+1520	3881	9051
+1521	2248	3842
+1522	4971	6819
+1523	654	1402
+1524	3618	5028
+1525	3115	5966
+1526	9481	7275
+1527	2372	9097
+1528	9013	9030
+1529	6032	400
+1530	1212	9204
+1531	9820	85
+1532	1521	775
+1533	2151	9390
+1534	1378	1340
+1535	2163	5728
+1536	5971	5637
+1537	6499	4197
+1538	6387	5774
+1539	9270	8254
+1540	3976	5471
+1541	8182	5670
+1542	2112	7421
+1543	5414	7164
+1544	1328	8517
+1545	927	7012
+1546	4842	2665
+1547	414	6305
+1548	4945	5626
+1549	9592	2148
+1550	9432	4678
+1551	7919	7223
+1552	9977	2328
+1553	5586	8378
+1554	2053	7031
+1555	5237	7429
+1556	8202	3300
+1557	2816	1469
+1558	8798	8407
+1559	8143	7023
+1560	9123	8303
+1561	1148	2968
+1562	4259	7814
+1563	8559	4839
+1564	8309	269
+1565	9801	6525
+1566	7393	5560
+1567	9730	1819
+1568	403	5728
+1569	1673	9776
+1570	1584	2963
+1571	6542	6753
+1572	7224	4612
+1573	1716	9795
+1574	8917	5453
+1575	7999	398
+1576	630	256
+1577	2210	5316
+1578	9549	8276
+1579	3114	2539
+1580	6104	6308
+1581	345	1596
+1582	6290	9910
+1583	3486	5676
+1584	5620	8600
+1585	5599	3205
+1586	6477	3528
+1587	5265	1226
+1588	8321	9439
+1589	2625	786
+1590	2343	5963
+1591	1634	4382
+1592	5207	6347
+1593	7101	3219
+1594	3158	3026
+1595	3168	2499
+1596	6109	6155
+1597	8623	3812
+1598	256	6400
+1599	9031	3045
+1600	7245	6061
+1601	2860	9240
+1602	3564	7108
+1603	6897	6678
+1604	4807	8194
+1605	8650	4632
+1606	8583	872
+1607	7918	1029
+1608	8515	5328
+1609	7430	281
+1610	4776	1402
+1611	8323	5769
+1612	3446	5392
+1613	6461	4816
+1614	5278	6749
+1615	4615	1245
+1616	5372	9643
+1617	8227	133
+1618	1419	2013
+1619	8829	2721
+1620	9961	8611
+1621	9592	8997
+1622	1795	7527
+1623	8684	2511
+1624	9492	8402
+1625	341	9301
+1626	9919	8414
+1627	6652	4303
+1628	6705	5369
+1629	3142	3035
+1630	8892	4593
+1631	2110	3771
+1632	9487	9189
+1633	2980	8486
+1634	578	5391
+1635	8471	217
+1636	2880	2277
+1637	7894	1953
+1638	4383	106
+1639	6371	920
+1640	9029	4793
+1641	7097	2156
+1642	8235	2073
+1643	5214	3253
+1644	8073	7944
+1645	7850	4945
+1646	4772	3336
+1647	4972	3389
+1648	1143	1434
+1649	3090	4496
+1650	1314	8357
+1651	5070	6832
+1652	4825	5860
+1653	2161	551
+1654	1758	8840
+1655	7164	9968
+1656	8342	3867
+1657	9239	7906
+1658	469	4848
+1659	2220	7419
+1660	501	2875
+1661	6658	5316
+1662	213	6357
+1663	4454	8628
+1664	663	3459
+1665	8198	1520
+1666	2899	112
+1667	3493	5679
+1668	1054	6538
+1669	8769	7128
+1670	752	7721
+1671	7927	1480
+1672	6279	1383
+1673	3860	9280
+1674	9606	4370
+1675	6811	4416
+1676	6833	3523
+1677	6165	4808
+1678	6413	6560
+1679	5406	5844
+1680	7735	5918
+1681	6980	292
+1682	3621	3523
+1683	711	3224
+1684	3293	2907
+1685	9179	1651
+1686	8458	3349
+1687	3623	4323
+1688	878	9778
+1689	8988	4414
+1690	2829	3704
+1691	2422	7787
+1692	5935	9684
+1693	1920	1700
+1694	9623	9541
+1695	5283	6250
+1696	4452	2588
+1697	6550	9216
+1698	1689	2955
+1699	2548	9852
+1700	9849	5779
+1701	1708	2115
+1702	9334	5563
+1703	7266	7653
+1704	3602	7211
+1705	3951	4509
+1706	5726	8394
+1707	5585	3741
+1708	8767	6401
+1709	3174	813
+1710	8543	9989
+1711	3234	4538
+1712	6797	8987
+1713	449	7323
+1714	2015	3819
+1715	549	2679
+1716	7034	29
+1717	9538	8395
+1718	9114	262
+1719	8164	6744
+1720	9924	1901
+1721	3947	5662
+1722	6742	4607
+1723	1277	7562
+1724	2976	5262
+1725	9610	9777
+1726	769	6583
+1727	1680	5200
+1728	3546	8745
+1729	4383	3844
+1730	2765	690
+1731	4091	408
+1732	8574	2076
+1733	4389	4416
+1734	2582	5351
+1735	6915	1922
+1736	526	9826
+1737	5475	4416
+1738	1856	4206
+1739	7002	5261
+1740	6341	7410
+1741	5698	3049
+1742	2062	2022
+1743	6139	9633
+1744	1824	7090
+1745	408	4263
+1746	7640	4758
+1747	2855	1026
+1748	3579	7092
+1749	7179	8031
+1750	7714	1706
+1751	5849	7693
+1752	3616	3006
+1753	2879	818
+1754	7634	9529
+1755	9687	1662
+1756	1951	7253
+1757	1733	5410
+1758	1065	744
+1759	8395	5994
+1760	4038	3658
+1761	455	7593
+1762	6011	81
+1763	3031	2022
+1764	8631	2009
+1765	7420	6950
+1766	3436	7664
+1767	91	3779
+1768	7778	6866
+1769	9211	6937
+1770	3671	4734
+1771	4640	6796
+1772	5803	3207
+1773	2153	4590
+1774	9459	4094
+1775	1789	8321
+1776	4097	5232
+1777	4630	5488
+1778	4350	8332
+1779	5809	2275
+1780	360	5659
+1781	7491	4977
+1782	1909	833
+1783	3399	8962
+1784	980	660
+1785	6642	5424
+1786	8227	3017
+1787	7833	2350
+1788	3056	6138
+1789	7663	2670
+1790	4085	2550
+1791	8740	2702
+1792	2840	2
+1793	7931	6876
+1794	3675	1003
+1795	6392	1745
+1796	5343	1185
+1797	4978	9703
+1798	1773	1687
+1799	1069	9977
+1800	5092	2894
+1801	172	6002
+1802	2470	1915
+1803	9354	2122
+1804	9654	2224
+1805	9888	9913
+1806	580	5901
+1807	4861	1557
+1808	7862	9455
+1809	869	6921
+1810	6286	4871
+1811	8382	4739
+1812	260	3621
+1813	247	2718
+1814	9093	7140
+1815	5207	152
+1816	504	1867
+1817	7650	4372
+1818	3968	2648
+1819	1964	1962
+1820	6513	47
+1821	8409	6396
+1822	3177	4111
+1823	6934	9565
+1824	6873	3441
+1825	2286	1411
+1826	8806	5468
+1827	2596	1461
+1828	460	1757
+1829	2069	2160
+1830	1963	5566
+1831	3531	9342
+1832	1796	3706
+1833	1492	5170
+1834	8563	6801
+1835	5909	2754
+1836	9793	702
+1837	9889	2808
+1838	5394	6790
+1839	2683	2134
+1840	6914	4869
+1841	6263	3609
+1842	9771	1244
+1843	737	6340
+1844	4727	2357
+1845	7256	5558
+1846	3394	1108
+1847	1162	1793
+1848	5902	8682
+1849	7862	3557
+1850	4515	3199
+1851	4238	4102
+1852	8256	5680
+1853	2118	193
+1854	456	6233
+1855	8468	8133
+1856	4431	5742
+1857	814	7384
+1858	6912	3010
+1859	7006	8617
+1860	4990	6282
+1861	4005	6372
+1862	7036	9012
+1863	2160	275
+1864	5797	4612
+1865	5406	9862
+1866	6826	8991
+1867	7752	9655
+1868	2166	4971
+1869	465	3016
+1870	777	3095
+1871	3274	3289
+1872	3265	9949
+1873	7281	1291
+1874	6770	6025
+1875	8124	9010
+1876	8107	9407
+1877	3287	123
+1878	7924	6319
+1879	8962	2592
+1880	4592	5814
+1881	9212	304
+1882	4951	8400
+1883	719	1926
+1884	9335	3530
+1885	5935	5679
+1886	7537	301
+1887	4176	3893
+1888	1878	5566
+1889	1372	1790
+1890	2544	6927
+1891	9677	1620
+1892	682	4206
+1893	5806	4179
+1894	5184	3188
+1895	830	9223
+1896	6468	2226
+1897	405	4639
+1898	5717	1432
+1899	8762	3719
+1900	1910	8351
+1901	1498	5205
+1902	672	7609
+1903	371	366
+1904	7421	6836
+1905	2318	4591
+1906	6899	3424
+1907	3137	966
+1908	5230	1399
+1909	2616	1932
+1910	2804	2757
+1911	2518	1272
+1912	14	8917
+1913	5675	1263
+1914	4889	6088
+1915	7509	5551
+1916	124	9915
+1917	9311	4544
+1918	4219	3259
+1919	9753	7680
+1920	9303	5354
+1921	9427	5758
+1922	5333	6270
+1923	2497	6110
+1924	5236	5643
+1925	4924	6797
+1926	4890	4665
+1927	642	155
+1928	1456	221
+1929	314	1844
+1930	479	5777
+1931	9352	5660
+1932	661	7290
+1933	4994	3968
+1934	6728	996
+1935	1423	8515
+1936	977	1405
+1937	6203	8442
+1938	2794	3064
+1939	2572	7999
+1940	1538	7794
+1941	6616	15
+1942	7536	8765
+1943	9854	2971
+1944	5268	4777
+1945	9551	8147
+1946	3390	1372
+1947	6062	9023
+1948	1872	6784
+1949	9256	501
+1950	5862	8055
+1951	2087	4036
+1952	6973	227
+1953	3205	9383
+1954	6933	3741
+1955	5088	8158
+1956	8037	7939
+1957	9313	1133
+1958	700	6781
+1959	7711	1091
+1960	1242	4733
+1961	4416	7367
+1962	977	6228
+1963	7680	7777
+1964	524	6202
+1965	8361	9715
+1966	8709	996
+1967	459	7006
+1968	3069	9469
+1969	5262	9239
+1970	8309	7297
+1971	3634	1875
+1972	5587	1279
+1973	6614	1768
+1974	2666	5591
+1975	4384	4785
+1976	9963	1818
+1977	7803	8352
+1978	9137	9510
+1979	3686	7205
+1980	4557	3585
+1981	614	4856
+1982	1645	8123
+1983	5752	7832
+1984	3767	1618
+1985	1112	2303
+1986	857	4977
+1987	7309	7439
+1988	7955	7101
+1989	1769	8414
+1990	2252	7404
+1991	8024	8299
+1992	2081	2511
+1993	7739	7091
+1994	309	7537
+1995	3334	3452
+1996	3363	6493
+1997	2239	7630
+1998	7027	5709
+1999	5751	3897
+2000	2050	3898
+2001	9140	5565
+2002	6216	2508
+2003	5469	6981
+2004	6601	5487
+2005	6113	2924
+2006	6955	9498
+2007	2126	3532
+2008	5537	4779
+2009	5803	7489
+2010	8364	513
+2011	459	1765
+2012	1943	3925
+2013	6066	4934
+2014	4186	8574
+2015	9764	8967
+2016	1958	7463
+2017	1382	8921
+2018	4910	353
+2019	3619	6716
+2020	5642	5870
+2021	3582	617
+2022	467	198
+2023	9932	6164
+2024	9394	8493
+2025	9174	2487
+2026	9484	2810
+2027	6054	2430
+2028	3902	7992
+2029	1886	9151
+2030	6217	5896
+2031	4802	2552
+2032	1410	9830
+2033	2370	4151
+2034	5419	6379
+2035	2366	5341
+2036	2824	5933
+2037	2435	5219
+2038	6435	1669
+2039	8438	5739
+2040	7596	6209
+2041	1394	7152
+2042	3723	2425
+2043	7245	7671
+2044	9962	6843
+2045	8930	11
+2046	7523	4073
+2047	3094	6862
+2048	132	3119
+2049	6411	9797
+2050	3223	7623
+2051	1672	8459
+2052	7150	559
+2053	556	2621
+2054	7568	1390
+2055	855	4743
+2056	8418	8294
+2057	8285	2675
+2058	1778	8475
+2059	2809	286
+2060	8510	6084
+2061	3917	7044
+2062	835	7311
+2063	4305	3505
+2064	4163	5115
+2065	2441	9726
+2066	3103	8402
+2067	586	4548
+2068	6113	649
+2069	1550	142
+2070	1706	8752
+2071	8481	9851
+2072	3407	9610
+2073	1832	4130
+2074	6509	6759
+2075	2522	3697
+2076	2814	5232
+2077	6477	7313
+2078	61	4143
+2079	866	3732
+2080	2102	5129
+2081	7253	7999
+2082	2455	4022
+2083	3559	3811
+2084	7857	780
+2085	3482	5916
+2086	8807	784
+2087	5994	3745
+2088	2528	3224
+2089	1766	9886
+2090	580	9011
+2091	5569	4412
+2092	5219	7817
+2093	149	1193
+2094	7733	6280
+2095	1490	8686
+2096	2057	3279
+2097	4690	7768
+2098	7528	779
+2099	8109	184
+2100	5940	8090
+2101	7292	8784
+2102	4200	9627
+2103	214	670
+2104	8955	5014
+2105	5269	5453
+2106	2132	3618
+2107	1548	9878
+2108	5872	78
+2109	6315	1649
+2110	2907	4785
+2111	4452	7378
+2112	3651	7380
+2113	3052	2536
+2114	42	5347
+2115	8751	5664
+2116	636	8983
+2117	7255	6245
+2118	3949	1223
+2119	4197	1402
+2120	1987	9353
+2121	3158	5178
+2122	4744	6407
+2123	308	1817
+2124	209	611
+2125	1264	6118
+2126	230	2281
+2127	1552	3222
+2128	9845	654
+2129	5821	6477
+2130	3821	2147
+2131	5754	2662
+2132	4278	7320
+2133	9314	8306
+2134	8062	455
+2135	9691	991
+2136	7832	9407
+2137	1615	3351
+2138	589	926
+2139	4576	4672
+2140	1780	186
+2141	9760	9973
+2142	6118	5629
+2143	692	735
+2144	6117	3364
+2145	7033	4527
+2146	7601	1120
+2147	1418	4202
+2148	6224	3273
+2149	9610	4942
+2150	5186	5647
+2151	4076	8956
+2152	9093	4428
+2153	786	5129
+2154	5301	1381
+2155	7344	1059
+2156	3400	2479
+2157	4141	9318
+2158	2769	9007
+2159	7444	9267
+2160	5575	7292
+2161	9127	6871
+2162	2695	3677
+2163	1203	1556
+2164	6038	6332
+2165	5428	1028
+2166	4844	7180
+2167	4469	476
+2168	2232	2481
+2169	4704	164
+2170	2225	2810
+2171	7438	1163
+2172	446	5475
+2173	3107	4792
+2174	4328	6940
+2175	595	9797
+2176	138	9152
+2177	4311	3369
+2178	8971	4139
+2179	7298	330
+2180	6700	8645
+2181	7952	272
+2182	6159	4828
+2183	4846	4578
+2184	2528	284
+2185	3542	9415
+2186	2417	981
+2187	119	3513
+2188	53	501
+2189	803	143
+2190	4555	9077
+2191	5514	7426
+2192	6071	6147
+2193	3097	9181
+2194	246	4698
+2195	2543	8779
+2196	5384	882
+2197	2304	4932
+2198	9160	1948
+2199	9004	5960
+2200	2126	2420
+2201	6648	8375
+2202	792	1919
+2203	8642	6415
+2204	7361	7332
+2205	776	5950
+2206	7388	1378
+2207	2180	2744
+2208	9960	2062
+2209	8201	1767
+2210	4437	2513
+2211	8243	8553
+2212	7202	3323
+2213	9601	9499
+2214	4776	5428
+2215	5307	1814
+2216	6834	6842
+2217	5636	5978
+2218	3654	7200
+2219	8682	6219
+2220	8736	3145
+2221	3157	2402
+2222	5090	1391
+2223	9007	3235
+2224	5613	5921
+2225	6078	6251
+2226	6241	1160
+2227	6655	2010
+2228	5023	951
+2229	3819	5646
+2230	7456	2107
+2231	3822	6907
+2232	237	3627
+2233	3388	2397
+2234	64	8807
+2235	5454	1961
+2236	8329	9890
+2237	4779	333
+2238	466	5579
+2239	1590	8127
+2240	2432	579
+2241	8220	8637
+2242	681	9244
+2243	7695	4844
+2244	5136	5483
+2245	8810	8232
+2246	8351	374
+2247	1640	5972
+2248	3796	6307
+2249	6586	3696
+2250	9018	2526
+2251	78	1341
+2252	6009	9753
+2253	7795	277
+2254	7640	2410
+2255	6781	9654
+2256	6885	8232
+2257	8182	6528
+2258	5453	9957
+2259	5368	2409
+2260	9482	6641
+2261	2629	4466
+2262	8764	1559
+2263	538	2303
+2264	1954	8160
+2265	7390	5976
+2266	7334	4524
+2267	838	205
+2268	4506	490
+2269	1325	7756
+2270	7087	4681
+2271	5576	6900
+2272	1492	5744
+2273	4530	5376
+2274	6448	5879
+2275	4308	4565
+2276	1161	7354
+2277	6354	1787
+2278	6921	2652
+2279	8675	9023
+2280	5382	388
+2281	1097	9467
+2282	3958	8340
+2283	809	2258
+2284	7221	5490
+2285	7943	8551
+2286	7229	5164
+2287	2562	9569
+2288	4121	4295
+2289	5718	2876
+2290	4631	7377
+2291	4719	5933
+2292	5810	4313
+2293	3450	1606
+2294	7671	939
+2295	3234	2674
+2296	4004	6728
+2297	9819	4765
+2298	9503	5165
+2299	2618	3566
+2300	8544	9469
+2301	6351	6446
+2302	3046	3255
+2303	6861	7336
+2304	3574	1485
+2305	8485	7480
+2306	595	1843
+2307	7492	354
+2308	287	9320
+2309	6077	5988
+2310	4606	8945
+2311	3738	2329
+2312	1451	8359
+2313	2943	5511
+2314	7619	2439
+2315	9401	1797
+2316	6455	7643
+2317	3384	5247
+2318	2641	3334
+2319	9222	3020
+2320	8737	9117
+2321	3637	3739
+2322	7001	4820
+2323	1207	7654
+2324	1629	2889
+2325	3218	2776
+2326	4426	451
+2327	8307	1703
+2328	9505	2210
+2329	3584	5798
+2330	3078	9911
+2331	7764	7432
+2332	1296	4862
+2333	2214	6070
+2334	9030	2854
+2335	2112	2783
+2336	3490	337
+2337	6087	9996
+2338	1334	7431
+2339	6033	8030
+2340	2710	5304
+2341	8415	8943
+2342	1467	9715
+2343	8503	8130
+2344	5820	7440
+2345	7930	1789
+2346	340	9040
+2347	6778	1608
+2348	6705	7196
+2349	2746	3761
+2350	3246	7139
+2351	4995	3514
+2352	9723	176
+2353	955	4035
+2354	7166	4393
+2355	7256	7629
+2356	9608	1832
+2357	4573	7332
+2358	4692	7158
+2359	2254	2179
+2360	3602	1683
+2361	7005	5843
+2362	6382	2163
+2363	6087	3032
+2364	7473	1847
+2365	5592	9097
+2366	1358	4851
+2367	3615	1604
+2368	7536	7840
+2369	501	6207
+2370	7033	6277
+2371	9229	4059
+2372	6621	3639
+2373	6219	2767
+2374	9576	3014
+2375	7672	8822
+2376	9458	2159
+2377	3239	7985
+2378	5578	1833
+2379	2819	4800
+2380	9600	5278
+2381	5877	782
+2382	6364	5055
+2383	6751	8657
+2384	5600	1580
+2385	4050	9265
+2386	9910	5424
+2387	2594	5493
+2388	9094	817
+2389	7793	490
+2390	9335	7919
+2391	7066	8920
+2392	184	4858
+2393	7729	4632
+2394	2057	7819
+2395	9761	4415
+2396	468	9055
+2397	6333	766
+2398	5363	7935
+2399	2641	8340
+2400	7638	2623
+2401	5496	3765
+2402	8037	8772
+2403	986	4872
+2404	7315	7232
+2405	8400	5228
+2406	2082	1491
+2407	7699	482
+2408	1296	6012
+2409	5115	4491
+2410	4734	6362
+2411	7217	3637
+2412	8718	8980
+2413	2473	6451
+2414	3599	6241
+2415	4676	1543
+2416	5669	7148
+2417	9278	2702
+2418	592	8404
+2419	5414	8799
+2420	6941	9356
+2421	3767	1432
+2422	1036	9345
+2423	1676	7738
+2424	3597	1540
+2425	5284	4190
+2426	854	1744
+2427	1695	6906
+2428	7974	189
+2429	7593	2848
+2430	5138	2472
+2431	4812	4769
+2432	3085	2926
+2433	3409	5415
+2434	3489	6222
+2435	6069	8205
+2436	3510	1087
+2437	2713	8513
+2438	3281	5702
+2439	500	6322
+2440	3412	9574
+2441	767	5724
+2442	20	1419
+2443	7355	5477
+2444	8018	1156
+2445	284	6099
+2446	4125	6232
+2447	6566	503
+2448	9670	0
+2449	2392	3732
+2450	3659	8519
+2451	7600	202
+2452	2480	2521
+2453	4497	4312
+2454	4255	5973
+2455	2725	9386
+2456	4291	9944
+2457	3790	3489
+2458	7833	5009
+2459	3812	153
+2460	1939	3045
+2461	141	2666
+2462	5506	6105
+2463	9324	7989
+2464	3284	9185
+2465	7129	851
+2466	4954	7768
+2467	263	9814
+2468	9950	1338
+2469	4728	5274
+2470	1737	5946
+2471	2258	1528
+2472	3366	2663
+2473	2891	9695
+2474	2783	2155
+2475	2400	4519
+2476	4489	4581
+2477	8095	1480
+2478	3101	5726
+2479	543	2739
+2480	779	4751
+2481	6227	8552
+2482	5699	8861
+2483	486	6567
+2484	6173	9938
+2485	9448	2268
+2486	4373	377
+2487	6392	1675
+2488	140	6934
+2489	305	6703
+2490	1073	4555
+2491	513	4014
+2492	8559	2956
+2493	4263	4297
+2494	2338	8711
+2495	2381	8037
+2496	5244	3482
+2497	1333	6633
+2498	5677	4442
+2499	4571	1698
+2500	6566	8346
+2501	5271	6309
+2502	1479	5194
+2503	2005	5342
+2504	2891	8030
+2505	7374	6263
+2506	8926	8351
+2507	4127	2393
+2508	1131	4222
+2509	7566	7089
+2510	7038	7737
+2511	6620	6046
+2512	3962	5531
+2513	3497	8187
+2514	785	7382
+2515	434	1164
+2516	1271	5390
+2517	828	3790
+2518	4694	9391
+2519	8005	7587
+2520	4997	2895
+2521	6034	8154
+2522	7141	824
+2523	85	8668
+2524	3413	6007
+2525	138	9771
+2526	1010	166
+2527	8442	1293
+2528	5954	5476
+2529	182	4731
+2530	1128	7693
+2531	4860	9623
+2532	8789	8670
+2533	5658	901
+2534	6958	420
+2535	9323	7342
+2536	5553	1448
+2537	4697	5636
+2538	5587	6543
+2539	6522	7208
+2540	539	1497
+2541	1232	5736
+2542	4979	5599
+2543	8397	2069
+2544	4319	830
+2545	2373	4897
+2546	6485	7535
+2547	2057	875
+2548	2065	6485
+2549	5245	8617
+2550	122	3724
+2551	163	9750
+2552	1797	2966
+2553	1820	6788
+2554	3811	3671
+2555	8619	8461
+2556	1310	6175
+2557	6218	2025
+2558	7384	6930
+2559	7433	9150
+2560	7027	1070
+2561	7472	9703
+2562	2844	6057
+2563	7878	3314
+2564	7650	6511
+2565	5876	4695
+2566	218	7904
+2567	2437	8282
+2568	5713	1689
+2569	3439	2899
+2570	3816	9013
+2571	6122	5576
+2572	9944	9962
+2573	2874	633
+2574	1916	8728
+2575	9179	853
+2576	8973	6495
+2577	2136	1409
+2578	2662	285
+2579	1209	2595
+2580	5460	8822
+2581	1563	2702
+2582	8888	5528
+2583	1907	1040
+2584	4254	3476
+2585	6038	4331
+2586	9901	5192
+2587	3419	3270
+2588	4415	697
+2589	9736	9597
+2590	4384	4848
+2591	2264	6661
+2592	7004	489
+2593	810	5866
+2594	4604	1576
+2595	2100	1601
+2596	5945	2579
+2597	8223	5816
+2598	3353	7027
+2599	5353	8943
+2600	5851	2191
+2601	5039	6790
+2602	800	6774
+2603	3385	2820
+2604	3121	6408
+2605	1776	9971
+2606	5608	7923
+2607	1797	1166
+2608	3613	8200
+2609	1593	5836
+2610	6043	9764
+2611	3765	7777
+2612	9086	9778
+2613	8515	8787
+2614	3408	5577
+2615	3342	5856
+2616	993	7760
+2617	5471	6628
+2618	7527	9120
+2619	7851	9152
+2620	627	148
+2621	3138	9834
+2622	4390	6669
+2623	7351	3935
+2624	1666	9603
+2625	8356	6170
+2626	3596	8420
+2627	2483	1904
+2628	1632	2774
+2629	4858	687
+2630	1399	1505
+2631	4882	4405
+2632	9025	4898
+2633	1257	149
+2634	6915	2378
+2635	4219	1428
+2636	4157	8739
+2637	6657	9107
+2638	7784	2809
+2639	1478	3030
+2640	2330	918
+2641	2822	509
+2642	2676	2190
+2643	7141	7238
+2644	6317	4749
+2645	4058	8782
+2646	1143	9224
+2647	7311	8624
+2648	8687	2291
+2649	7431	4058
+2650	5784	3263
+2651	9530	9930
+2652	6782	229
+2653	4992	4848
+2654	7725	2906
+2655	7913	2134
+2656	7864	9832
+2657	4493	8943
+2658	9048	5600
+2659	225	4336
+2660	3535	880
+2661	793	3242
+2662	8307	3302
+2663	265	7678
+2664	5601	6808
+2665	1340	9868
+2666	433	6705
+2667	5208	4557
+2668	4710	6319
+2669	7598	4462
+2670	5440	7477
+2671	9873	2807
+2672	4287	9677
+2673	5166	453
+2674	8978	180
+2675	1014	5592
+2676	9105	4433
+2677	8425	5819
+2678	7017	7964
+2679	5038	340
+2680	4899	5919
+2681	1504	9958
+2682	3982	7717
+2683	8100	7388
+2684	2925	1147
+2685	8585	8851
+2686	6128	3000
+2687	3899	6358
+2688	9793	5069
+2689	8418	1401
+2690	101	5544
+2691	467	2395
+2692	1796	7470
+2693	4591	3549
+2694	6344	1204
+2695	4330	8863
+2696	9779	8309
+2697	436	8133
+2698	8699	9574
+2699	140	4508
+2700	6222	4165
+2701	8706	7367
+2702	7545	1123
+2703	4073	4656
+2704	8159	6323
+2705	3651	6072
+2706	5719	5999
+2707	8779	596
+2708	5049	5449
+2709	5920	2139
+2710	8766	718
+2711	9862	3533
+2712	7889	9032
+2713	9679	3713
+2714	6945	4091
+2715	6743	2850
+2716	4324	5600
+2717	2880	3047
+2718	2004	624
+2719	3450	7109
+2720	6628	6818
+2721	1796	8
+2722	5450	1916
+2723	2446	895
+2724	4690	135
+2725	3493	2062
+2726	4812	6206
+2727	7369	4732
+2728	5333	7463
+2729	964	5025
+2730	5997	7404
+2731	1166	3574
+2732	3141	8680
+2733	1757	2862
+2734	9347	9483
+2735	7030	6190
+2736	5007	8674
+2737	2093	5200
+2738	3408	7103
+2739	7949	8670
+2740	9424	6061
+2741	3754	8447
+2742	8992	4747
+2743	5578	6717
+2744	6044	5153
+2745	3316	2713
+2746	4740	3953
+2747	8189	4651
+2748	3229	2668
+2749	1563	3056
+2750	1495	7117
+2751	2517	1379
+2752	9674	6009
+2753	8976	6837
+2754	9530	9341
+2755	8564	928
+2756	1569	4113
+2757	1045	2798
+2758	3342	5080
+2759	2223	1300
+2760	8411	8801
+2761	7497	2611
+2762	285	344
+2763	4246	8853
+2764	915	7423
+2765	8660	2810
+2766	4920	3619
+2767	4210	6449
+2768	3938	5916
+2769	5841	5063
+2770	9806	4970
+2771	3005	6157
+2772	7972	8410
+2773	5551	1913
+2774	8138	3131
+2775	7378	9482
+2776	5140	3681
+2777	9366	9669
+2778	6803	4167
+2779	9146	5701
+2780	9109	3293
+2781	277	3274
+2782	5371	9908
+2783	6264	8010
+2784	4039	4813
+2785	8635	6746
+2786	871	2569
+2787	1180	3773
+2788	934	9591
+2789	6510	4791
+2790	7203	5952
+2791	5030	1578
+2792	8870	2659
+2793	1281	1596
+2794	2575	9144
+2795	8052	3425
+2796	8330	7953
+2797	3201	309
+2798	7077	9657
+2799	4719	393
+2800	9719	4235
+2801	4852	8277
+2802	27	5430
+2803	2546	8040
+2804	260	5242
+2805	6763	8393
+2806	4914	7228
+2807	1134	5292
+2808	6356	8722
+2809	5090	5101
+2810	9757	8162
+2811	7054	5540
+2812	2439	9634
+2813	9215	8793
+2814	5210	6510
+2815	5131	3312
+2816	4111	1272
+2817	3020	7319
+2818	3455	433
+2819	9474	9553
+2820	5464	333
+2821	702	8068
+2822	7119	1596
+2823	4769	1024
+2824	2228	4336
+2825	935	1919
+2826	4042	7187
+2827	4996	8198
+2828	4867	9551
+2829	4092	7909
+2830	4960	913
+2831	3603	3924
+2832	8461	9936
+2833	9154	9444
+2834	9924	3481
+2835	1648	2788
+2836	7170	7630
+2837	8416	5553
+2838	9948	7810
+2839	8952	6737
+2840	7054	9135
+2841	7967	9570
+2842	6187	6103
+2843	2443	3785
+2844	1880	6755
+2845	3404	1667
+2846	7079	350
+2847	8603	5827
+2848	6945	762
+2849	5037	1462
+2850	5010	5022
+2851	1727	5442
+2852	7629	2656
+2853	7909	7510
+2854	4039	5566
+2855	8624	3310
+2856	9255	8795
+2857	8485	8054
+2858	7355	7526
+2859	5926	6186
+2860	9476	9890
+2861	9830	2983
+2862	137	7096
+2863	1616	4679
+2864	793	8770
+2865	4983	5309
+2866	8408	3823
+2867	7942	4573
+2868	4463	6315
+2869	8219	5948
+2870	304	4339
+2871	9515	7271
+2872	6313	6281
+2873	6542	6106
+2874	4881	2972
+2875	8624	6644
+2876	5145	3769
+2877	1335	9604
+2878	8641	5239
+2879	4775	8905
+2880	3220	4929
+2881	4845	6053
+2882	5436	8010
+2883	6820	7336
+2884	9682	6998
+2885	5098	5110
+2886	5509	6644
+2887	8759	2436
+2888	9238	6921
+2889	1922	2554
+2890	8415	7291
+2891	2525	3875
+2892	2873	5638
+2893	1346	5851
+2894	2799	5526
+2895	7324	7916
+2896	2788	6514
+2897	8187	909
+2898	7739	7415
+2899	8082	4260
+2900	3930	8050
+2901	5135	1317
+2902	6507	9743
+2903	7232	9686
+2904	8424	6005
+2905	1261	4002
+2906	6946	880
+2907	4459	2911
+2908	8727	5851
+2909	7785	3781
+2910	357	3463
+2911	190	1326
+2912	5137	945
+2913	2756	7443
+2914	5070	7295
+2915	546	138
+2916	9663	5044
+2917	1953	3410
+2918	9167	7522
+2919	2814	3355
+2920	3493	2744
+2921	6793	9243
+2922	5175	2751
+2923	6158	7248
+2924	3050	6311
+2925	290	7884
+2926	6990	3245
+2927	9578	6861
+2928	3661	4522
+2929	6370	2002
+2930	7995	271
+2931	479	5224
+2932	6952	3004
+2933	2688	7224
+2934	2323	3712
+2935	3430	5653
+2936	4992	2664
+2937	1882	829
+2938	2626	6119
+2939	8024	2349
+2940	3108	8678
+2941	8149	1454
+2942	967	2808
+2943	10	1945
+2944	1782	6709
+2945	6331	2844
+2946	4272	2570
+2947	1773	6001
+2948	9659	9818
+2949	3665	202
+2950	996	4795
+2951	9733	5526
+2952	9536	1017
+2953	7301	7733
+2954	829	6293
+2955	6311	8893
+2956	1590	3248
+2957	2297	6670
+2958	2419	4162
+2959	9042	5393
+2960	7740	5809
+2961	2360	968
+2962	6197	912
+2963	8863	6669
+2964	8916	5138
+2965	5362	5663
+2966	2482	6339
+2967	9851	1605
+2968	402	8595
+2969	763	6197
+2970	7027	9559
+2971	1518	1230
+2972	3498	7454
+2973	1304	3671
+2974	3223	255
+2975	9669	6533
+2976	2468	8131
+2977	6237	7960
+2978	869	9908
+2979	2199	1006
+2980	4891	6727
+2981	7997	6635
+2982	7627	6416
+2983	2402	7478
+2984	3570	4190
+2985	7390	2897
+2986	368	9391
+2987	7877	9575
+2988	5963	3139
+2989	5945	2550
+2990	8902	4964
+2991	7175	5133
+2992	824	3937
+2993	473	5208
+2994	7982	162
+2995	8572	5583
+2996	4777	3942
+2997	2636	9733
+2998	3139	3664
+2999	6955	4875
+3000	7003	173
+3001	2389	458
+3002	1418	3726
+3003	3465	2246
+3004	5336	1383
+3005	3709	3453
+3006	1946	562
+3007	2376	2161
+3008	9495	9197
+3009	1933	8776
+3010	383	8332
+3011	5043	5471
+3012	7460	9471
+3013	9518	5668
+3014	9688	8473
+3015	7228	2148
+3016	4697	7470
+3017	2259	9758
+3018	9075	3916
+3019	8298	3110
+3020	5658	1298
+3021	4830	2465
+3022	7264	630
+3023	3873	5822
+3024	535	1774
+3025	15	4154
+3026	1856	9490
+3027	9177	1933
+3028	7907	8596
+3029	8997	9259
+3030	297	78
+3031	6730	2930
+3032	9578	4275
+3033	3797	2935
+3034	7334	3024
+3035	3158	6413
+3036	7762	8296
+0	1	1973
+0	2	4253
+0	3	5341
+0	5	4066
+0	6	2702
+0	9	4393
+0	10	2468
+0	11	4341
+0	12	5043
+0	14	2905
+0	17	3055
+0	18	4648
+0	20	4520
+0	22	7409
+0	24	3145
+0	26	4205
+0	30	5293
+0	37	4413
+0	44	4078
+0	45	4901
+0	46	1894
+0	48	8847
+0	49	6845
+0	54	2686
+0	56	5786
+0	58	973
+0	61	2925
+0	73	4298
+0	76	2450
+0	79	1631
+0	82	3312
+0	83	5139
+0	84	2599
+0	85	847
+0	93	4235
+0	98	4195
+0	106	1640
+0	109	2641
+0	114	2905
+0	115	4772
+0	116	6813
+0	120	2821
+0	121	2646
+0	133	4486
+0	134	7645
+0	135	2326
+0	146	4755
+0	147	5478
+0	149	6110
+0	150	4296
+0	154	2330
+0	155	5177
+0	156	2399
+0	160	2423
+0	169	6667
+0	175	7449
+0	181	5571
+0	202	5339
+0	211	6187
+0	225	1272
+0	230	5129
+0	233	7542
+0	236	1659
+0	237	5042
+0	241	5405
+0	247	3735
+0	250	4583
+0	251	872
+0	252	6803
+0	256	1896
+0	261	5218
+0	270	3248
+0	272	5821
+0	288	8682
+0	295	4190
+0	297	1560
+0	302	4017
+0	304	5102
+0	305	1268
+0	306	5971
+0	312	7082
+0	313	4722
+0	314	4796
+0	320	3926
+0	321	8670
+0	324	412
+0	329	5085
+0	338	4186
+0	351	5584
+0	352	1260
+0	353	1939
+0	356	5553
+0	357	4770
+0	377	6125
+0	379	5550
+0	382	2314
+0	388	2565
+0	398	2788
+0	401	6535
+0	406	4716
+0	412	5037
+0	424	3677
+0	429	1076
+0	433	2432
+0	439	5698
+0	443	525
+0	444	8356
+0	448	3404
+0	451	6563
+0	454	3297
+0	455	4997
+0	468	7175
+0	471	4773
+0	472	7469
+0	473	2195
+0	486	3719
+0	490	4863
+0	500	7616
+0	503	4380
+0	507	1182
+0	509	6627
+0	513	4390
+0	516	3896
+0	517	2910
+0	520	3446
+0	532	2405
+0	533	2676
+0	538	2060
+0	539	1921
+0	545	5050
+0	551	4167
+0	555	2958
+0	558	5702
+0	563	815
+0	568	4622
+0	581	4350
+0	587	4651
+0	588	964
+0	592	1975
+0	594	2539
+0	595	3246
+0	603	3889
+0	604	1734
+0	613	2342
+0	616	783
+0	622	4874
+0	623	1473
+0	624	2395
+0	631	2609
+0	636	275
+0	638	1740
+0	640	4501
+0	642	4798
+0	649	8211
+0	653	1967
+0	657	3320
+0	658	5641
+0	663	3736
+0	674	1412
+0	676	5675
+0	677	5332
+0	686	3533
+0	693	4816
+0	695	5247
+0	699	395
+0	714	1362
+0	739	3083
+0	741	844
+0	744	2447
+0	745	2077
+0	747	5991
+0	755	5643
+0	761	4951
+0	762	4859
+0	769	5577
+0	770	3826
+0	771	2093
+0	775	1814
+0	780	2254
+0	783	3492
+0	795	2267
+0	801	2009
+0	807	8617
+0	817	4506
+0	818	3924
+0	822	3290
+0	824	4898
+0	828	3712
+0	843	4320
+0	844	851
+0	850	4814
+0	853	4868
+0	859	5405
+0	861	6090
+0	868	5717
+0	871	5196
+0	890	3958
+0	893	2408
+0	895	3561
+0	905	7027
+0	907	1648
+0	910	4093
+0	913	2128
+0	914	4128
+0	915	4197
+0	922	1149
+0	923	1891
+0	924	2823
+0	927	2947
+0	933	6039
+0	939	4433
+0	943	8800
+0	946	6336
+0	947	8536
+0	956	3058
+0	958	5959
+0	960	1283
+0	962	2830
+0	970	4115
+0	976	5292
+0	979	2205
+0	988	2264
+0	991	7220
+0	995	6039
+0	996	1350
+0	1003	5679
+0	1004	3153
+0	1012	3790
+0	1014	7718
+0	1018	3251
+0	1024	4174
+0	1025	7306
+0	1026	4569
+0	1028	4956
+0	1034	2974
+0	1044	2864
+0	1047	1991
+0	1052	6256
+0	1053	2878
+0	1059	4864
+0	1064	6758
+0	1072	7471
+0	1075	4690
+0	1077	5140
+0	1081	5437
+0	1086	3751
+0	1089	4165
+0	1090	1192
+0	1114	2873
+0	1116	2318
+0	1120	4757
+0	1121	4119
+0	1122	5417
+0	1126	3811
+0	1130	6413
+0	1142	6981
+0	1151	2220
+0	1162	6757
+0	1164	6039
+0	1184	1979
+0	1185	5820
+0	1190	4886
+0	1194	5895
+0	1198	5160
+0	1202	5991
+0	1206	3681
+0	1211	7396
+0	1215	4940
+0	1220	1935
+0	1223	6847
+0	1225	6948
+0	1230	3585
+0	1237	4341
+0	1247	4708
+0	1253	3742
+0	1259	5425
+0	1265	1246
+0	1269	2779
+0	1272	1309
+0	1279	1728
+0	1280	5813
+0	1282	7263
+0	1298	1870
+0	1308	6892
+0	1314	4352
+0	1321	2464
+0	1323	5735
+0	1326	2892
+0	1327	6128
+0	1347	3932
+0	1353	6714
+0	1357	6010
+0	1360	1166
+0	1366	7989
+0	1379	6338
+0	1381	5005
+0	1392	8074
+0	1393	6482
+0	1395	1359
+0	1397	3190
+0	1407	8138
+0	1415	2669
+0	1426	6140
+0	1427	5582
+0	1433	3371
+0	1439	4457
+0	1446	7892
+0	1458	4179
+0	1459	1710
+0	1471	2025
+0	1476	3712
+0	1483	8020
+0	1485	4364
+0	1496	6430
+0	1503	6326
+0	1508	5993
+0	1510	7250
+0	1514	5399
+0	1517	3800
+0	1519	6126
+0	1524	3249
+0	1527	7379
+0	1547	6468
+0	1548	3225
+0	1549	3980
+0	1550	4399
+0	1556	2706
+0	1563	3769
+0	1584	6127
+0	1592	3896
+0	1595	2457
+0	1602	5072
+0	1604	5779
+0	1613	2487
+0	1616	7174
+0	1625	8633
+0	1626	7330
+0	1629	2545
+0	1630	3894
+0	1633	6569
+0	1636	2751
+0	1639	1722
+0	1640	4119
+0	1656	3053
+0	1667	3850
+0	1671	2507
+0	1687	2725
+0	1690	3054
+0	1694	8120
+0	1699	7994
+0	1701	3933
+0	1763	2632
+0	1764	3041
+0	1765	4823
+0	1771	4433
+0	1784	4986
+0	1803	3745
+0	1804	4036
+0	1806	6099
+0	1823	7211
+0	1827	3193
+0	1828	5214
+0	1833	4935
+0	1834	5231
+0	1839	2961
+0	1842	4324
+0	1844	905
+0	1846	2615
+0	1847	4514
+0	1851	2139
+0	1858	1394
+0	1861	4222
+0	1866	6627
+0	1872	7839
+0	1880	3497
+0	1886	2893
+0	1896	878
+0	1905	3927
+0	1907	2908
+0	1915	3608
+0	1917	4227
+0	1926	2311
+0	1929	5348
+0	1931	4903
+0	1935	7359
+0	1941	2650
+0	1946	2491
+0	1966	3419
+0	1969	6775
+0	1971	2078
+0	1995	2491
+0	1996	4612
+0	2000	3848
+0	2002	592
+0	2005	664
+0	2022	5637
+0	2029	7653
+0	2030	3473
+0	2032	8478
+0	2038	1141
+0	2039	4310
+0	2043	5444
+0	2047	5066
+0	2051	7173
+0	2052	2447
+0	2057	2667
+0	2067	5449
+0	2074	4376
+0	2085	4055
+0	2094	4351
+0	2096	3657
+0	2098	2547
+0	2103	5703
+0	2108	2407
+0	2110	3568
+0	2116	8201
+0	2125	5683
+0	2143	5230
+0	2148	999
+0	2155	2225
+0	2156	2225
+0	2164	3881
+0	2166	4771
+0	2172	5986
+0	2175	8884
+0	2179	2718
+0	2184	3792
+0	2185	7247
+0	2189	5355
+0	2207	3455
+0	2209	2670
+0	2226	1450
+0	2233	2238
+0	2235	539
+0	2237	2301
+0	2241	6687
+0	2257	4793
+0	2258	7485
+0	2280	2099
+0	2296	4553
+0	2313	4052
+0	2315	3836
+0	2322	2720
+0	2336	3020
+0	2338	6557
+0	2345	2404
+0	2349	3153
+0	2354	2461
+0	2363	725
+0	2369	6340
+0	2376	3845
+0	2381	1709
+0	2384	893
+0	2386	5202
+0	2388	3843
+0	2404	5050
+0	2411	1972
+0	2417	3660
+0	2418	7778
+0	2419	6329
+0	2437	6705
+0	2451	3009
+0	2454	3758
+0	2457	2097
+0	2459	2944
+0	2464	7108
+0	2465	2211
+0	2469	2941
+0	2482	6388
+0	2487	1106
+0	2488	7070
+0	2493	2276
+0	2496	1078
+0	2502	4959
+0	2508	4822
+0	2518	6980
+0	2523	8310
+0	2524	4169
+0	2525	9130
+0	2528	3020
+0	2529	5892
+0	2530	6889
+0	2531	7190
+0	2534	2447
+0	2535	6114
+0	2539	4819
+0	2550	5643
+0	2551	9098
+0	2559	6917
+0	2562	4536
+0	2570	6785
+0	2575	3905
+0	2576	5233
+0	2589	8225
+0	2593	5890
+0	2595	3631
+0	2596	337
+0	2618	6913
+0	2619	7040
+0	2633	4947
+0	2634	1293
+0	2647	6377
+0	2656	7692
+0	2671	4261
+0	2687	4251
+0	2688	4910
+0	2725	2171
+0	2727	2853
+0	2735	3973
+0	2745	2321
+0	2753	5502
+0	2759	3598
+0	2761	1877
+0	2769	2598
+0	2777	8110
+0	2784	2826
+0	2807	5302
+0	2811	3383
+0	2815	973
+0	2823	1682
+0	2831	2488
+0	2837	4156
+0	2845	2362
+0	2861	4235
+0	2865	2907
+0	2870	5638
+0	2885	2689
+0	2889	3703
+0	2891	3402
+0	2896	4937
+0	2913	5738
+0	2917	3789
+0	2924	4621
+0	2932	1429
+0	2958	3623
+0	2968	8047
+0	2969	6124
+0	2975	5730
+0	2977	5521
+0	2980	4316
+0	3006	4145
+0	3014	7246
+0	3026	7965
+0	107	6638
+0	308	5330
+0	296	4640
+0	333	2983
+0	593	7232
+0	1383	6119
+0	803	4369
+0	1674	4409
+0	1388	6519
+0	1117	2488
+0	564	6963
+0	831	6235
+0	255	5054
+0	78	2574
+0	491	3745
+0	269	5736
+0	60	7071
+0	1637	2327
+0	223	4335
+0	263	1784
+0	1023	4292
+0	409	1178
+0	218	1056
+0	27	3331
+0	867	2386
+0	925	6424
+0	81	5965
+0	782	7858
+0	788	868
+0	47	4424
+0	1608	4062
+0	903	8156
+0	204	4289
+0	1049	8006
+0	21	1390
+0	1686	2965
+0	578	305
+0	935	3372
+0	87	4747
+0	544	2876
+0	665	5575
+0	235	6425
+0	423	6932
+0	164	2157
+0	1231	1928
+0	476	2103
+0	7	7997
+0	99	4211
+0	703	1597
+0	957	2540
+0	634	4269
+0	842	7279
+0	841	5375
+0	1557	2983
+0	265	4681
+0	459	1390
+0	97	2194
+0	1536	3182
+0	4	4582
+0	370	917
+0	105	6381
+0	707	3218
+0	950	5188
+0	374	5649
+0	1221	3973
+0	57	1351
+0	857	3718
+0	300	6695
+0	920	2684
+0	367	3364
+0	1542	6068
+0	1418	1889
+0	418	572
+0	560	2461
+0	1277	4578
+0	244	6020
+0	477	4462
+0	142	5637
+0	530	3300
+0	1340	4144
+0	698	3829
+0	1311	4985
+0	396	7109
+0	728	3753
+0	127	2714
+0	1062	3916
+0	144	7547
+0	1097	5274
+0	219	6755
+0	88	4164
+0	350	8441
+0	1263	2466
+0	1155	5122
+0	336	2765
+0	67	3885
+0	185	4963
+0	1325	3034
+0	821	371
+0	607	2660
+0	493	2609
+0	289	7102
+0	1513	1246
+0	15	5297
+0	1404	2468
+0	1558	6729
+0	92	5839
+0	143	4578
+0	763	1924
+0	62	2458
+0	1411	7381
+0	39	5728
+0	90	3351
+0	178	4596
+0	213	3726
+0	620	1067
+0	1134	559
+0	1233	4813
+0	641	6013
+0	1294	2381
+0	23	6262
+0	373	7250
+0	340	4575
+0	1605	3716
+0	1367	6165
+0	436	7736
+0	1200	4253
+0	1434	3090
+0	290	3467
+0	1432	3773
+0	577	8061
+0	1682	2262
+0	865	1718
+0	200	6626
+0	277	2135
+0	648	5437
+0	190	3200
+0	1020	3489
+0	499	7537
+0	284	5304
+0	1010	5705
+0	1437	6596
+1	8	1033
+1	23	4649
+1	36	5931
+1	38	1745
+1	39	4569
+1	43	2685
+1	64	6234
+1	67	5749
+1	71	613
+1	94	1623
+1	99	5971
+1	101	4910
+1	103	3245
+1	118	6639
+1	124	5076
+1	130	2240
+1	140	6714
+1	141	5929
+1	142	3674
+1	158	3651
+1	161	1446
+1	163	3376
+1	167	3684
+1	195	6506
+1	199	2871
+1	213	3459
+1	216	3994
+1	219	5122
+1	238	4817
+1	245	1794
+1	248	3177
+1	263	2446
+1	284	4604
+1	291	7293
+1	294	4315
+1	307	4791
+1	326	3304
+1	331	3411
+1	348	5983
+1	354	4028
+1	358	3786
+1	378	288
+1	384	2891
+1	395	5640
+1	397	5329
+1	411	3458
+1	450	6318
+1	464	4666
+1	475	5074
+1	496	3548
+1	498	3358
+1	501	4415
+1	519	3883
+1	521	3041
+1	540	1868
+1	542	2953
+1	553	4776
+1	576	3654
+1	606	5506
+1	641	5664
+1	662	3490
+1	683	5890
+1	698	2002
+1	704	4913
+1	715	4373
+1	717	5652
+1	730	3335
+1	734	4329
+1	777	2279
+1	785	3547
+1	787	2910
+1	799	2972
+1	806	3471
+1	809	364
+1	819	1136
+1	825	3234
+1	831	4306
+1	835	2138
+1	836	4642
+1	866	2400
+1	876	5049
+1	880	4540
+1	900	4087
+1	911	1738
+1	921	3855
+1	930	3706
+1	937	4130
+1	982	1982
+1	1005	2328
+1	1016	5158
+1	1031	4299
+1	1048	6893
+1	1055	3824
+1	1065	3469
+1	1083	6943
+1	1085	3077
+1	1111	5282
+1	1153	4441
+1	1186	4455
+1	1208	2537
+1	1218	1565
+1	1222	5712
+1	1227	1681
+1	1243	3319
+1	1250	2956
+1	1251	4040
+1	1257	5780
+1	1277	4287
+1	1285	4285
+1	1288	596
+1	1291	5747
+1	1309	2944
+1	1310	1446
+1	1315	5348
+1	1342	5690
+1	1343	3681
+1	1363	2759
+1	1367	5336
+1	1376	2123
+1	1377	3447
+1	1388	5317
+1	1389	4440
+1	1414	5862
+1	1422	2374
+1	1430	5417
+1	1435	5527
+1	1442	5103
+1	1465	3249
+1	1473	4621
+1	1481	3411
+1	1489	2587
+1	1507	4404
+1	1542	4094
+1	1545	4614
+1	1560	6245
+1	1576	5456
+1	1585	1412
+1	1607	4589
+1	1614	2761
+1	1628	2540
+1	1637	4010
+1	1652	1790
+1	1658	4105
+1	1666	4297
+1	1674	5108
+1	1693	3525
+1	1698	3039
+1	1706	4466
+1	1720	5847
+1	1724	1921
+1	1727	3032
+1	1745	4100
+1	1747	3487
+1	1748	3133
+1	1753	3660
+1	1756	4059
+1	1767	4425
+1	1768	4286
+1	1778	4236
+1	1785	2514
+1	1788	2502
+1	1794	3204
+1	1799	6809
+1	1800	1339
+1	1808	6321
+1	1813	4476
+1	1815	4007
+1	1830	2935
+1	1843	4384
+1	1850	899
+1	1882	4325
+1	1903	5569
+1	1911	3454
+1	1914	2026
+1	1919	6353
+1	1920	4959
+1	1932	4996
+1	1950	4183
+1	1953	5442
+1	1963	4859
+1	1984	2587
+1	1986	3752
+1	2020	2105
+1	2021	3601
+1	2023	5806
+1	2025	4939
+1	2034	2457
+1	2035	2473
+1	2037	2354
+1	2046	3018
+1	2049	6009
+1	2062	4877
+1	2065	5994
+1	2071	6993
+1	2079	3657
+1	2106	2421
+1	2118	2928
+1	2120	5827
+1	2123	4776
+1	2124	5533
+1	2137	2984
+1	2138	5039
+1	2151	4876
+1	2158	5206
+1	2183	588
+1	2191	3477
+1	2197	2353
+1	2202	4305
+1	2205	4163
+1	2211	5815
+1	2220	4336
+1	2239	4972
+1	2260	5589
+1	2272	3433
+1	2273	1278
+1	2286	2925
+1	2291	1847
+1	2302	1685
+1	2320	6565
+1	2329	1933
+1	2335	2730
+1	2341	6225
+1	2343	5678
+1	2344	3591
+1	2346	6463
+1	2362	2695
+1	2390	6158
+1	2393	3267
+1	2399	4633
+1	2406	3559
+1	2416	3264
+1	2424	2714
+1	2439	4581
+1	2456	5849
+1	2468	6104
+1	2474	2596
+1	2489	4942
+1	2500	4721
+1	2545	2276
+1	2547	4047
+1	2549	4579
+1	2564	3964
+1	2580	4819
+1	2594	2523
+1	2609	3391
+1	2611	3752
+1	2616	5073
+1	2621	5896
+1	2629	3429
+1	2642	2643
+1	2666	4835
+1	2673	3704
+1	2675	3797
+1	2677	4281
+1	2694	3428
+1	2698	6897
+1	2700	1718
+1	2707	5525
+1	2714	2440
+1	2718	4280
+1	2723	3807
+1	2731	3379
+1	2747	3725
+1	2770	5372
+1	2774	3759
+1	2786	3942
+1	2802	4671
+1	2804	4396
+1	2816	2853
+1	2817	3546
+1	2833	7084
+1	2871	5930
+1	2887	4567
+1	2893	3612
+1	2899	3580
+1	2926	2627
+1	2948	7699
+1	2999	2570
+1	3001	4210
+1	3012	6131
+1	3032	5076
+1	100	3347
+1	923	3462
+1	193	4018
+1	702	6363
+1	568	2866
+1	174	1390
+1	7	6087
+1	257	4249
+1	352	891
+1	85	1130
+1	217	3911
+1	187	4155
+1	1643	1103
+1	811	4525
+1	126	5596
+1	53	2668
+1	1282	5651
+1	1101	5068
+1	166	3013
+1	398	4625
+1	313	3334
+1	92	5018
+1	554	3253
+1	108	3462
+1	171	3983
+1	995	4685
+1	849	3720
+1	1279	270
+1	814	2852
+1	37	2765
+1	117	4815
+1	855	5090
+1	221	4249
+1	86	4595
+1	298	5508
+1	528	4185
+1	1127	1873
+1	451	5572
+1	1589	3808
+1	59	4951
+1	1096	1180
+1	165	5072
+1	449	1718
+1	1209	4533
+1	260	1122
+1	1386	4660
+1	3	4843
+1	304	3237
+1	120	1547
+1	1060	4164
+1	927	1507
+1	710	4782
+1	1237	2647
+1	1025	6304
+1	391	3844
+1	1453	3433
+1	1508	5938
+1	1616	5612
+1	147	5173
+1	286	2128
+1	266	4224
+1	72	4722
+1	75	3007
+1	477	6056
+1	617	7066
+1	1039	5136
+1	693	4155
+1	1289	2610
+1	653	3185
+1	1538	2520
+1	483	6462
+1	1276	2916
+1	178	3288
+1	983	3420
+1	306	5370
+1	614	3347
+1	370	2876
+1	254	5912
+1	1540	1471
+1	447	2748
+1	11	3017
+1	1462	3369
+1	111	4856
+1	339	5682
+1	70	3205
+1	1278	512
+1	1474	4138
+1	18	3745
+1	922	3094
+1	375	5074
+1	13	6343
+1	1249	1872
+2	7	10589
+2	34	6082
+2	40	6385
+2	41	11624
+2	50	4987
+2	53	4600
+2	55	1852
+2	65	2389
+2	72	9365
+2	75	4558
+2	77	6216
+2	78	3710
+2	89	2146
+2	102	7137
+2	107	9325
+2	129	7483
+2	151	2199
+2	174	6347
+2	179	10158
+2	183	6589
+2	192	11674
+2	194	8646
+2	196	8730
+2	197	6908
+2	204	542
+2	224	8098
+2	226	4040
+2	266	7273
+2	274	6641
+2	281	7244
+2	285	8571
+2	296	3054
+2	311	2725
+2	344	2226
+2	365	10506
+2	404	7914
+2	413	7221
+2	422	4751
+2	430	8000
+2	432	8081
+2	453	8220
+2	499	10258
+2	511	8321
+2	515	85
+2	535	6976
+2	536	7411
+2	544	1463
+2	559	8021
+2	561	7260
+2	583	3704
+2	585	4185
+2	611	3121
+2	614	7914
+2	620	3280
+2	630	9858
+2	634	1472
+2	675	5956
+2	682	1347
+2	731	2860
+2	740	8818
+2	751	9346
+2	759	5955
+2	763	2343
+2	782	7536
+2	800	10021
+2	802	2733
+2	842	10257
+2	848	2363
+2	877	5719
+2	884	2311
+2	899	6920
+2	916	8076
+2	918	10359
+2	920	6917
+2	961	7623
+2	964	4012
+2	972	8056
+2	975	7284
+2	1037	5122
+2	1043	9164
+2	1051	7211
+2	1071	5331
+2	1094	11319
+2	1103	11646
+2	1110	5280
+2	1133	6223
+2	1158	9583
+2	1173	6639
+2	1178	67
+2	1193	1496
+2	1205	6638
+2	1207	3351
+2	1229	8585
+2	1252	7858
+2	1274	5397
+2	1276	2856
+2	1292	6604
+2	1305	3627
+2	1312	6592
+2	1328	7987
+2	1337	8004
+2	1369	5522
+2	1372	4750
+2	1387	1442
+2	1405	1447
+2	1408	9653
+2	1421	9524
+2	1434	6588
+2	1440	9265
+2	1447	6086
+2	1455	7802
+2	1492	126
+2	1495	8053
+2	1506	8977
+2	1516	6864
+2	1525	7755
+2	1528	6934
+2	1544	10651
+2	1551	5435
+2	1569	11194
+2	1574	3438
+2	1588	7452
+2	1593	2965
+2	1597	2077
+2	1605	2765
+2	1610	5144
+2	1623	1236
+2	1635	2382
+2	1672	3667
+2	1680	4330
+2	1685	847
+2	1705	6368
+2	1725	7633
+2	1726	10120
+2	1735	2959
+2	1761	10872
+2	1774	1988
+2	1781	3693
+2	1792	7346
+2	1796	4624
+2	1817	3139
+2	1841	3887
+2	1863	7930
+2	1884	1480
+2	1939	9350
+2	1954	3337
+2	1980	5500
+2	1987	5876
+2	2011	9414
+2	2012	8119
+2	2090	11546
+2	2126	9636
+2	2132	7614
+2	2136	7538
+2	2140	8320
+2	2160	6698
+2	2161	4780
+2	2181	2680
+2	2262	1249
+2	2263	9329
+2	2289	4211
+2	2295	6652
+2	2306	9276
+2	2316	6467
+2	2323	10261
+2	2333	8598
+2	2334	1094
+2	2339	7020
+2	2356	407
+2	2360	6281
+2	2361	4673
+2	2408	9400
+2	2430	4739
+2	2448	2156
+2	2453	5788
+2	2475	7833
+2	2498	4775
+2	2540	9349
+2	2548	8925
+2	2557	3650
+2	2568	4178
+2	2577	7765
+2	2579	8668
+2	2590	6110
+2	2599	8157
+2	2607	8128
+2	2622	7101
+2	2686	3833
+2	2711	1385
+2	2720	5682
+2	2740	3937
+2	2755	1784
+2	2756	8526
+2	2787	8836
+2	2788	11626
+2	2795	2218
+2	2805	6973
+2	2824	7945
+2	2829	8156
+2	2854	6755
+2	2855	1700
+2	2862	10914
+2	2879	8460
+2	2880	7204
+2	2901	4803
+2	2933	8791
+2	2942	8923
+2	2956	8348
+2	3004	4594
+2	3011	5856
+2	3022	3012
+2	3035	7949
+2	465	7362
+2	1449	8346
+2	36	5660
+2	631	6792
+2	1196	10885
+2	594	3275
+2	632	4393
+2	354	9456
+2	259	5925
+2	313	6515
+2	61	6844
+2	599	9672
+2	362	2615
+2	8	4932
+2	1295	2590
+2	1166	3681
+2	771	6102
+2	1287	1767
+2	557	5669
+2	1396	2155
+2	1466	2436
+2	85	4871
+2	93	8482
+2	781	8527
+2	130	7696
+2	1131	9722
+2	1184	2298
+2	248	7167
+2	1172	9524
+2	649	11051
+2	915	728
+2	1586	3659
+2	142	8757
+2	120	5386
+2	1496	6073
+2	421	5647
+2	162	9231
+2	459	5584
+2	516	4631
+2	1218	7022
+2	689	7106
+2	897	4393
+2	370	3580
+2	984	11411
+2	1658	9777
+2	1076	8060
+2	26	8457
+2	121	3126
+2	451	6964
+2	540	5399
+3	4	1126
+3	29	5588
+3	31	3168
+3	33	530
+3	104	4641
+3	108	5235
+3	127	2992
+3	164	4123
+3	182	6379
+3	185	9172
+3	198	8293
+3	209	3813
+3	223	9335
+3	239	5297
+3	243	5218
+3	262	7696
+3	269	1503
+3	287	3123
+3	317	5185
+3	318	2854
+3	341	2483
+3	361	5400
+3	405	1586
+3	461	4822
+3	474	4257
+3	480	5240
+3	512	2801
+3	534	2959
+3	633	7990
+3	667	2219
+3	713	5976
+3	839	3084
+3	841	147
+3	856	2794
+3	870	7998
+3	879	6580
+3	886	3102
+3	938	9459
+3	942	6514
+3	966	655
+3	977	5263
+3	1000	2462
+3	1001	9393
+3	1017	3670
+3	1070	7194
+3	1099	4927
+3	1102	3000
+3	1106	6148
+3	1112	2235
+3	1154	7193
+3	1169	8526
+3	1244	2212
+3	1248	7458
+3	1249	6620
+3	1278	4455
+3	1325	6505
+3	1350	525
+3	1364	4539
+3	1390	832
+3	1394	9510
+3	1406	7431
+3	1410	1338
+3	1444	7063
+3	1475	2041
+3	1518	5444
+3	1522	3354
+3	1540	4630
+3	1647	4985
+3	1651	3255
+3	1695	3145
+3	1713	7869
+3	1731	7903
+3	1733	4749
+3	1811	2349
+3	1829	7955
+3	1857	7506
+3	1899	3398
+3	1918	5607
+3	1947	2969
+3	1976	5521
+3	1977	1363
+3	2003	2848
+3	2009	2543
+3	2028	4504
+3	2070	6815
+3	2077	1851
+3	2080	6514
+3	2081	1399
+3	2089	7121
+3	2102	4835
+3	2104	2170
+3	2119	7020
+3	2127	7790
+3	2145	2863
+3	2178	3021
+3	2198	5208
+3	2259	5529
+3	2270	2702
+3	2294	6182
+3	2308	8332
+3	2337	3663
+3	2365	3383
+3	2392	8431
+3	2443	1875
+3	2444	5939
+3	2483	7846
+3	2490	7672
+3	2491	8385
+3	2497	6996
+3	2503	6547
+3	2578	8845
+3	2637	2612
+3	2639	7950
+3	2681	7390
+3	2702	6014
+3	2710	6385
+3	2860	3033
+3	2881	3621
+3	2976	5939
+3	2992	8126
+3	3024	9421
+3	121	6766
+3	232	7491
+3	1659	6103
+3	214	8193
+3	173	7404
+3	1207	2200
+3	268	6177
+3	1566	1784
+3	490	1567
+3	181	799
+3	522	7933
+3	862	1654
+3	100	1516
+3	1310	3839
+3	1554	6262
+3	23	3618
+3	1057	5407
+3	741	5050
+3	1148	6020
+3	538	4300
+3	434	3631
+3	311	2506
+3	1409	5816
+3	74	5879
+3	82	6977
+3	830	4928
+3	1241	5966
+3	1305	5065
+3	7	6325
+3	746	4657
+3	298	2718
+3	1082	3885
+3	575	1654
+3	170	6822
+3	834	1406
+3	151	3145
+3	73	4583
+3	161	4302
+4	35	5679
+4	47	5374
+4	60	4542
+4	88	1650
+4	143	6038
+4	191	2611
+4	229	5882
+4	254	8564
+4	258	2334
+4	267	3762
+4	380	1931
+4	390	3358
+4	399	5472
+4	409	4457
+4	423	2933
+4	457	3697
+4	598	9569
+4	628	6679
+4	706	4220
+4	709	4143
+4	742	4299
+4	748	5811
+4	794	3777
+4	863	4837
+4	934	3081
+4	935	6563
+4	980	7532
+4	1087	5555
+4	1118	4841
+4	1175	6106
+4	1209	5157
+4	1224	3788
+4	1263	2498
+4	1290	5146
+4	1339	2403
+4	1345	3906
+4	1354	2121
+4	1358	9014
+4	1424	8764
+4	1425	8550
+4	1450	8281
+4	1502	5571
+4	1513	4340
+4	1557	7312
+4	1581	9319
+4	1582	4532
+4	1596	2460
+4	1619	3278
+4	1642	3929
+4	1649	5673
+4	1653	8400
+4	1746	1539
+4	1749	2467
+4	1757	6855
+4	1786	2991
+4	1824	3058
+4	1831	6047
+4	1832	7142
+4	1927	9838
+4	1943	3282
+4	1944	3511
+4	2024	2637
+4	2031	5095
+4	2050	5585
+4	2196	6016
+4	2314	3673
+4	2321	5416
+4	2382	2390
+4	2431	3945
+4	2436	7040
+4	2466	4024
+4	2501	3308
+4	2565	2983
+4	2643	1893
+4	2699	8553
+4	2746	4332
+4	2773	5068
+4	2853	1656
+4	2940	6082
+4	1173	6174
+4	26	7742
+4	1254	1725
+4	807	8458
+4	506	5601
+4	1479	1296
+4	271	845
+4	471	4434
+4	438	2800
+4	941	3174
+4	270	7819
+4	871	3756
+4	207	7439
+4	1416	4821
+4	542	7128
+4	155	8765
+4	1398	3251
+4	68	6955
+4	912	1497
+4	253	4480
+4	1408	6877
+4	998	8075
+4	1331	6698
+4	1587	5793
+4	577	8278
+4	1350	1639
+4	1580	2480
+4	266	3548
+4	1556	2713
+4	8	4473
+4	203	4725
+4	734	6472
+4	5	8501
+4	1625	8864
+4	301	975
+4	870	7336
+4	116	3885
+4	580	2560
+4	1284	9399
+4	1403	7374
+4	1119	4744
+4	97	2404
+4	1104	2413
+4	1103	8749
+4	32	3748
+4	563	4863
+5	70	1290
+5	110	6541
+5	144	9501
+5	180	3946
+5	208	6458
+5	227	3629
+5	276	6280
+5	308	3404
+5	322	7397
+5	343	2702
+5	376	6810
+5	419	9990
+5	427	5404
+5	447	5490
+5	531	2445
+5	550	9103
+5	574	4918
+5	582	5912
+5	600	8634
+5	612	2264
+5	652	4857
+5	681	2283
+5	685	10346
+5	703	4001
+5	732	4096
+5	737	8365
+5	760	6005
+5	766	2261
+5	885	1597
+5	968	3221
+5	973	3758
+5	981	10370
+5	993	2876
+5	1038	5230
+5	1105	6726
+5	1149	6132
+5	1156	2733
+5	1171	7733
+5	1210	3320
+5	1242	1513
+5	1300	6317
+5	1322	8280
+5	1385	9728
+5	1429	9826
+5	1494	8065
+5	1512	7368
+5	1535	5218
+5	1553	8620
+5	1575	5936
+5	1591	3895
+5	1609	5370
+5	1723	7095
+5	1737	5185
+5	1769	9611
+5	1849	6549
+5	1875	10439
+5	1989	7909
+5	2054	5573
+5	2100	8513
+5	2111	7271
+5	2130	2401
+5	2231	6634
+5	2252	10049
+5	2264	7650
+5	2279	10778
+5	2298	8775
+5	2299	3105
+5	2324	2418
+5	2347	4840
+5	2389	5729
+5	2470	5445
+5	2522	5086
+5	2585	5512
+5	2591	6154
+5	2592	4940
+5	2597	8129
+5	2600	4143
+5	2606	8216
+5	2662	6838
+5	2838	10744
+5	2867	7145
+5	2907	3391
+5	2936	3634
+5	2952	7489
+5	2970	10320
+5	2997	9240
+5	3015	5417
+5	3020	3679
+5	3023	5611
+5	1080	6700
+5	975	10565
+5	387	8327
+5	964	6584
+5	415	4275
+5	1455	9904
+5	1247	7025
+5	1094	8189
+5	651	9012
+5	20	4151
+5	1583	5358
+5	556	10059
+5	686	7589
+5	1655	10745
+5	845	5519
+6	15	2706
+6	27	6013
+6	81	5922
+6	112	6388
+6	131	7594
+6	201	6570
+6	240	3526
+6	278	2776
+6	299	8005
+6	360	2830
+6	362	5985
+6	431	6372
+6	452	1640
+6	479	1514
+6	518	2674
+6	548	1688
+6	602	5586
+6	625	1888
+6	626	8617
+6	629	8231
+6	635	3540
+6	656	5288
+6	689	5136
+6	756	1859
+6	779	979
+6	804	3686
+6	954	7164
+6	1040	5782
+6	1042	8207
+6	1054	700
+6	1079	7653
+6	1101	7516
+6	1150	5117
+6	1235	1643
+6	1266	5568
+6	1317	2365
+6	1453	4472
+6	1457	3425
+6	1498	7861
+6	1552	7037
+6	1564	5685
+6	1567	6795
+6	1618	1528
+6	1643	2527
+6	1668	4781
+6	1676	4127
+6	1717	9086
+6	1812	3061
+6	1825	984
+6	1862	7994
+6	1937	7091
+6	2036	3789
+6	2055	3332
+6	2066	6259
+6	2139	3009
+6	2153	3681
+6	2171	4601
+6	2195	6645
+6	2206	4511
+6	2234	7257
+6	2238	4233
+6	2240	1646
+6	2265	5870
+6	2282	6277
+6	2290	5497
+6	2452	595
+6	2553	4776
+6	2586	7596
+6	2696	9205
+6	2791	2163
+6	2832	9547
+6	2851	3513
+6	2920	813
+6	2983	5360
+6	113	3371
+6	1548	4016
+6	1130	8574
+6	939	7052
+6	53	2435
+6	466	7934
+6	294	4418
+6	64	8717
+6	110	5395
+6	225	3876
+6	10	3232
+6	815	6747
+6	1107	6687
+6	1234	6512
+6	1623	5753
+6	1362	10170
+7	57	8929
+7	63	6411
+7	100	6040
+7	119	3804
+7	122	6649
+7	137	5509
+7	193	2125
+7	277	6426
+7	292	4195
+7	346	7897
+7	408	7483
+7	646	9627
+7	680	7049
+7	805	1189
+7	840	9520
+7	847	5921
+7	849	5212
+7	909	8374
+7	917	6170
+7	919	8083
+7	1015	9882
+7	1148	1015
+7	1179	3484
+7	1195	8072
+7	1226	5481
+7	1228	8232
+7	1256	5681
+7	1329	10242
+7	1371	10503
+7	1380	11562
+7	1404	6312
+7	1579	7370
+7	1641	8927
+7	1789	8796
+7	1814	7010
+7	1826	7585
+7	1877	9793
+7	1973	9043
+7	2001	7805
+7	2144	7396
+7	2232	6714
+7	2261	5429
+7	2293	8327
+7	2340	4591
+7	2383	4287
+7	2407	10683
+7	2450	1708
+7	2505	5961
+7	2567	1626
+7	2573	9264
+7	2588	9366
+7	2638	8752
+7	2664	4273
+7	2792	9544
+7	2850	5416
+7	88	5549
+7	579	8692
+7	673	4727
+7	817	5134
+7	655	2762
+7	594	7340
+7	146	9138
+7	177	3162
+7	38	7024
+7	974	10284
+7	1070	4587
+7	510	6291
+7	560	7953
+7	1638	9941
+7	102	4017
+7	1551	5911
+7	846	4500
+7	311	8451
+7	327	7086
+7	1105	6944
+7	1238	5082
+7	156	7553
+8	13	6860
+8	95	2521
+8	165	4543
+8	235	5499
+8	268	2383
+8	280	3770
+8	298	5186
+8	372	4676
+8	456	2844
+8	494	5417
+8	619	2707
+8	673	3573
+8	708	1788
+8	735	6845
+8	971	3926
+8	1013	5019
+8	1108	1708
+8	1172	6801
+8	1196	6755
+8	1273	7212
+8	1330	2469
+8	1336	3948
+8	1565	5786
+8	1859	5740
+8	1979	4212
+8	2064	2092
+8	2083	1604
+8	2358	3954
+8	2685	6648
+8	2808	5654
+8	2902	6683
+8	2937	3969
+8	2949	3321
+8	2954	5221
+8	2995	4240
+8	35	5625
+8	770	4734
+8	1429	6381
+8	636	1162
+8	1579	2053
+8	172	2144
+8	97	2273
+8	444	7414
+8	1171	3845
+8	684	5007
+8	156	2013
+8	1081	4874
+8	711	1351
+8	27	4002
+8	1357	5288
+8	555	2387
+8	320	3656
+8	386	3536
+8	1631	2992
+8	1669	5394
+8	176	3986
+8	1066	5991
+8	452	984
+8	1662	5766
+8	1007	3901
+8	978	2382
+8	390	1793
+8	1528	7032
+8	1320	5059
+8	587	4767
+8	352	447
+8	919	4635
+8	882	4204
+8	1150	3774
+9	59	4888
+9	97	2744
+9	177	3354
+9	260	4288
+9	370	4897
+9	375	4582
+9	458	2000
+9	607	2735
+9	749	4937
+9	791	2187
+9	883	5657
+9	1104	3109
+9	1294	5873
+9	1313	6221
+9	1587	5690
+9	1608	2280
+9	1612	3531
+9	1719	1449
+9	1722	2122
+9	1798	7060
+9	1852	1864
+9	1951	5354
+9	1974	4205
+9	2076	4178
+9	2167	6644
+9	2271	1151
+9	2301	461
+9	2434	3265
+9	2467	7151
+9	2494	4804
+9	2495	4527
+9	2541	5572
+9	2563	3607
+9	2604	3608
+9	2628	6440
+9	2797	7318
+9	2799	6642
+9	2835	6419
+9	2863	5495
+9	2957	4418
+9	2978	6654
+9	2998	4709
+9	3000	6562
+9	1670	6044
+9	1667	3388
+9	421	259
+9	480	3750
+9	1054	6586
+9	902	579
+9	76	1969
+9	455	7049
+9	471	2478
+9	1165	2938
+9	111	3237
+9	1448	6584
+9	80	6088
+9	258	895
+9	565	6783
+9	754	5446
+9	331	4773
+9	380	1411
+9	1229	5217
+9	21	4712
+9	179	4660
+9	190	1246
+10	21	2915
+10	68	1289
+10	111	6190
+10	171	5384
+10	176	3235
+10	212	3319
+10	214	2363
+10	333	4684
+10	529	6649
+10	757	6418
+10	816	1707
+10	860	7286
+10	1045	8694
+10	1084	8126
+10	1177	5811
+10	1189	6848
+10	1232	3777
+10	1307	3745
+10	1417	8504
+10	1449	7061
+10	1529	760
+10	1659	8046
+10	1738	5470
+10	1775	9045
+10	1779	2299
+10	1856	5802
+10	1868	5902
+10	1908	1389
+10	2010	3029
+10	2230	2949
+10	2244	5471
+10	2300	9969
+10	2317	5596
+10	2441	7335
+10	2561	9910
+10	2605	10584
+10	2615	6182
+10	2670	7460
+10	2676	5780
+10	2744	5179
+10	2763	8907
+10	2783	8042
+10	2905	5727
+10	2938	6692
+10	3016	7483
+10	1439	4089
+10	196	6178
+10	1064	9128
+10	237	6963
+10	420	9256
+10	137	4769
+10	1422	3343
+10	1602	7318
+10	122	10434
+10	712	9359
+10	518	905
+10	544	4088
+10	1016	5150
+11	25	3711
+11	90	7645
+11	159	3106
+11	203	5910
+11	491	3166
+11	492	1067
+11	502	5320
+11	691	3481
+11	733	6180
+11	772	7268
+11	784	7139
+11	823	5379
+11	1056	6297
+11	1076	8737
+11	1161	7581
+11	1238	5030
+11	1320	5798
+11	1772	4347
+11	2170	1248
+11	2328	8166
+11	2331	7227
+11	2352	8996
+11	2427	3086
+11	2478	2484
+11	2572	10437
+11	2672	6480
+11	2679	4966
+11	2695	5777
+11	2701	8029
+11	2749	772
+11	2872	5402
+11	2892	2273
+11	2897	7295
+11	2903	8197
+11	2934	830
+11	2939	6689
+11	1001	3130
+11	519	6779
+11	85	3660
+11	611	5414
+11	93	719
+11	1606	7674
+11	147	7971
+11	566	1666
+11	488	8334
+11	580	7397
+11	489	7255
+11	979	4350
+11	401	2621
+11	195	8619
+11	49	3369
+11	1600	6164
+11	241	8653
+11	113	2287
+12	19	6479
+12	28	1833
+12	86	3420
+12	96	5157
+12	126	8956
+12	275	5256
+12	337	9816
+12	349	2074
+12	389	5125
+12	710	8270
+12	738	6212
+12	754	4173
+12	854	7133
+12	862	6724
+12	1050	4960
+12	1061	8799
+12	1197	8149
+12	1239	9191
+12	1295	7596
+12	1304	5314
+12	1382	3536
+12	1621	10365
+12	1661	6171
+12	1665	7774
+12	1770	3149
+12	1776	3735
+12	1802	2458
+12	1889	1962
+12	1893	5116
+12	1988	8022
+12	2149	8986
+12	2169	5288
+12	2398	6326
+12	2519	8287
+12	2646	5600
+12	2655	7350
+12	2748	2692
+12	2779	8676
+12	2840	8386
+12	2868	4602
+12	2906	6812
+12	3030	3586
+12	1596	5948
+12	208	3710
+12	1372	9157
+12	457	4564
+12	398	7777
+12	101	8605
+12	936	5669
+12	509	9585
+12	195	9326
+13	69	811
+13	91	1304
+13	162	5732
+13	186	6944
+13	290	8359
+13	300	3176
+13	301	2727
+13	425	8375
+13	664	8512
+13	687	1766
+13	725	7154
+13	729	5573
+13	832	3677
+13	897	5533
+13	901	7633
+13	936	4383
+13	1007	3565
+13	1010	1741
+13	1027	7308
+13	1113	5073
+13	1399	9003
+13	1490	1889
+13	1867	215
+13	2007	8265
+13	2131	7134
+13	2154	8491
+13	2192	3783
+13	2318	8065
+13	2426	10439
+13	2566	7811
+13	2587	7636
+13	2632	4720
+13	2658	4050
+13	2709	7590
+13	2834	6336
+13	2839	2944
+13	2844	6578
+13	2856	1542
+13	2869	3544
+13	2898	2064
+13	1630	4987
+13	1671	7995
+13	241	4285
+13	59	5823
+13	989	9492
+13	424	3846
+13	1378	1252
+14	113	3853
+14	221	1664
+14	242	4890
+14	293	6300
+14	303	7561
+14	402	4928
+14	463	7871
+14	590	1606
+14	627	610
+14	648	4909
+14	829	4848
+14	903	7375
+14	1187	7273
+14	1231	2270
+14	1303	3771
+14	1359	3735
+14	1391	3173
+14	1463	1615
+14	1500	2553
+14	1703	7448
+14	1956	8149
+14	2017	7397
+14	2026	6747
+14	2186	802
+14	2217	5141
+14	2350	5487
+14	2598	5385
+14	2626	6795
+14	2801	6911
+14	2912	2413
+14	2955	8019
+14	16	2130
+14	1191	5796
+14	530	1047
+14	414	9247
+14	450	9267
+14	171	6277
+14	1609	4800
+14	71	3314
+14	208	5314
+14	1410	8186
+14	1375	7514
+14	752	5826
+14	51	5954
+14	404	7945
+15	16	1161
+15	32	5664
+15	42	1649
+15	139	8032
+15	527	7551
+15	834	8739
+15	888	3261
+15	896	3918
+15	1437	9278
+15	1456	6604
+15	1536	6252
+15	1554	4462
+15	1708	9117
+15	1990	4883
+15	2018	5231
+15	2283	798
+15	2330	7517
+15	2432	2740
+15	2486	4757
+15	2683	8956
+15	2693	4294
+15	2987	10058
+15	1242	1827
+15	326	5964
+15	233	10626
+15	716	4970
+15	140	10868
+15	1524	3899
+15	230	6441
+15	43	3473
+15	798	7510
+15	1271	5266
+15	1436	4462
+15	1645	7776
+15	722	9208
+15	1031	8323
+15	247	1926
+15	1577	3045
+15	472	6272
+15	485	8875
+15	1668	3698
+16	87	864
+16	148	1953
+16	210	9158
+16	368	5930
+16	410	2633
+16	566	2063
+16	597	7248
+16	957	6264
+16	987	1101
+16	1166	5537
+16	1375	7225
+16	1590	4467
+16	2093	828
+16	2303	8273
+16	2307	6937
+16	2366	3114
+16	2446	5592
+16	2574	7027
+16	2631	4917
+16	2708	5667
+16	2726	6017
+16	2739	9977
+16	2848	6323
+16	118	9248
+16	227	3079
+16	307	6734
+16	799	7302
+16	1665	7495
+16	1006	947
+16	52	7399
+16	1321	7378
+16	1246	2631
+16	1083	7646
+16	22	7432
+16	1341	813
+16	796	8094
+16	1324	8770
+16	1512	5865
+16	494	9964
+17	403	7420
+17	407	1597
+17	505	7514
+17	562	7671
+17	570	397
+17	707	6246
+17	810	6734
+17	1074	5424
+17	1125	7087
+17	1213	6352
+17	1504	4371
+17	1577	7192
+17	1578	6202
+17	1750	1041
+17	1754	7463
+17	1883	7945
+17	1901	7793
+17	1925	5973
+17	1983	6395
+17	2075	6335
+17	2099	2029
+17	2133	6203
+17	2180	6797
+17	2367	5075
+17	2396	10723
+17	2764	9378
+17	1257	8025
+17	191	6460
+17	107	8511
+17	381	1178
+17	491	6514
+17	1307	4121
+17	24	6196
+17	369	5730
+17	230	6627
+17	157	9461
+17	554	5806
+17	709	7858
+18	138	6454
+18	335	743
+18	387	6617
+18	421	6694
+18	460	4228
+18	465	8594
+18	546	9728
+18	718	8169
+18	1199	1863
+18	1346	9009
+18	1520	6881
+18	1521	1629
+18	1532	2100
+18	1572	6491
+18	1657	9698
+18	2173	2902
+18	2405	7796
+18	2413	3934
+18	2472	2381
+18	2473	7145
+18	2610	8598
+18	2738	4930
+18	2822	6248
+18	2919	1905
+18	3031	5742
+18	439	5929
+18	94	3139
+18	167	505
+18	1390	7740
+18	1397	2810
+18	314	5560
+18	165	8626
+18	1164	8454
+18	81	5800
+18	894	10758
+18	60	8241
+19	125	4592
+19	446	5201
+19	481	2261
+19	514	5056
+19	889	5088
+19	1311	2225
+19	1351	4791
+19	1368	6249
+19	1418	2238
+19	1479	3292
+19	1807	5209
+19	1970	1947
+19	2129	716
+19	2395	3834
+19	2435	1777
+19	2511	451
+19	2659	6669
+19	2660	6362
+19	2806	1782
+19	2821	6044
+19	2894	3860
+19	2985	3692
+19	1617	6577
+19	1349	3988
+19	361	3719
+19	428	5535
+19	366	1925
+19	206	1867
+19	669	7725
+19	332	4717
+19	283	5467
+19	204	5081
+19	548	4521
+19	1486	1955
+19	208	4190
+20	157	3972
+20	166	3253
+20	228	3736
+20	319	3766
+20	417	1722
+20	525	4646
+20	702	5099
+20	764	7812
+20	969	6469
+20	1091	4995
+20	1188	6612
+20	1334	4591
+20	1451	7621
+20	1631	980
+20	1855	7651
+20	1881	8710
+20	1900	3717
+20	1949	8652
+20	2044	8589
+20	2190	5296
+20	2394	3201
+20	2460	1621
+20	2771	2026
+20	1138	4895
+20	47	2163
+20	1584	5599
+20	195	7961
+20	174	2494
+20	126	7661
+20	863	2241
+20	222	4056
+20	996	3925
+21	273	4593
+21	336	4152
+21	632	2649
+21	989	6132
+21	1443	5331
+21	1491	4966
+21	1573	7527
+21	1586	2368
+21	1615	1507
+21	1654	6619
+21	1655	7820
+21	1669	6316
+21	1682	1031
+21	2041	5284
+21	2159	7292
+21	2309	3751
+21	2380	5930
+21	2480	4031
+21	2781	4017
+21	2931	4536
+21	1347	5317
+21	646	4035
+21	79	1440
+21	495	4568
+21	944	4259
+21	126	6784
+21	1169	3769
+21	50	844
+21	457	1964
+21	1495	4324
+22	80	5079
+22	526	1689
+22	875	4075
+22	891	10112
+22	1488	9464
+22	1499	9233
+22	1660	6443
+22	2254	8564
+22	2400	8398
+22	2442	7976
+22	2665	1215
+22	1521	5232
+22	1008	7457
+22	62	9824
+22	658	3857
+22	1680	6319
+22	1385	2484
+22	90	10406
+22	410	5000
+22	1412	5387
+22	1627	6484
+22	202	6918
+22	309	7071
+22	1468	3088
+22	240	3587
+22	194	2172
+22	1504	6706
+22	967	10794
+22	1167	7325
+22	934	8913
+23	92	2817
+23	132	4754
+23	173	4114
+23	222	8260
+23	255	3723
+23	327	5646
+23	495	5832
+23	736	3311
+23	974	7795
+23	1115	8588
+23	1332	4775
+23	1431	1884
+23	1555	1292
+23	1598	5350
+23	1599	6907
+23	2016	3363
+23	2194	6284
+23	2229	3315
+23	2410	2375
+23	2689	8036
+23	2918	4255
+23	2929	6832
+23	1137	8738
+23	1318	1664
+23	1240	4706
+23	39	1748
+23	1564	9039
+23	1182	5522
+24	220	9853
+24	282	5863
+24	393	7175
+24	466	7897
+24	670	8375
+24	820	2185
+24	902	5373
+24	1165	8858
+24	1176	7320
+24	1734	2761
+24	1760	1886
+24	1923	3519
+24	2014	6220
+24	2015	9678
+24	2115	6981
+24	2215	2929
+24	2348	6248
+24	2387	2904
+24	2481	7039
+24	2820	3740
+24	2916	7588
+24	1190	7398
+24	222	1864
+24	619	5347
+24	455	1885
+24	582	3824
+24	1067	4882
+24	748	1155
+25	170	8425
+25	207	2351
+25	316	3304
+25	644	3188
+25	778	5361
+25	790	4807
+25	941	4765
+25	1060	7442
+25	1246	1355
+25	1566	5965
+25	1816	3375
+25	1895	8853
+25	2141	10933
+25	2225	5885
+25	2359	1978
+25	2445	6271
+25	2663	7649
+25	2789	4820
+25	495	5454
+25	1413	9133
+25	931	9672
+25	1673	8425
+25	701	3732
+25	1159	6427
+25	1069	6633
+25	445	6355
+25	482	543
+25	59	7755
+26	271	8519
+26	414	9231
+26	470	2403
+26	484	3369
+26	577	6047
+26	821	4552
+26	955	2681
+26	1033	4920
+26	1129	1533
+26	1331	6908
+26	1361	9829
+26	1420	8813
+26	1480	3521
+26	1964	3387
+26	2068	5199
+26	2187	1444
+26	2243	6532
+26	2657	6730
+26	2728	5962
+26	2826	4975
+26	2915	2944
+26	3010	5493
+26	1058	6676
+26	954	8347
+26	672	2442
+27	51	4587
+27	650	3254
+27	697	8026
+27	765	3007
+27	944	1303
+27	1182	2381
+27	1338	10489
+27	1466	2031
+27	1477	8066
+27	1570	7396
+27	1583	6410
+27	1632	6881
+27	1793	4661
+27	1921	3462
+27	1948	8366
+27	1992	6874
+27	2053	8402
+27	2162	6401
+27	2200	6827
+27	2374	926
+27	2440	9121
+27	2571	4308
+27	2877	10534
+27	2904	3714
+28	206	3706
+28	381	9218
+28	584	3617
+28	608	4173
+28	651	8320
+28	692	9242
+28	700	2028
+28	776	5185
+28	959	2440
+28	1029	4564
+28	1561	2454
+28	1975	3295
+28	2484	6753
+28	2706	4604
+28	270	5622
+28	435	2612
+28	1014	2980
+28	1250	1913
+28	527	4935
+28	629	8764
+28	611	6224
+28	558	1250
+28	836	1661
+28	475	6781
+28	293	7548
+29	589	3409
+29	621	8792
+29	688	5417
+29	999	9112
+29	1035	5169
+29	2250	9187
+29	2537	4378
+29	2624	1795
+29	2669	6787
+29	2772	4743
+29	2796	5232
+29	2841	4527
+29	626	3313
+29	467	9232
+29	156	7471
+29	732	8374
+29	932	1734
+29	259	4111
+29	267	6882
+29	1369	8586
+29	1308	4586
+29	359	5283
+29	1335	2440
+29	786	7601
+29	250	7454
+30	117	7567
+30	145	4284
+30	323	6948
+30	325	5836
+30	373	4670
+30	510	8457
+30	953	7065
+30	1041	9407
+30	1192	1316
+30	1306	5109
+30	2082	6790
+30	2084	6093
+30	2532	1852
+30	2569	6516
+30	2654	4022
+30	3005	5973
+30	697	8907
+30	78	6937
+30	644	6946
+30	1647	5025
+30	713	6342
+30	677	3060
+30	1224	4594
+30	1018	7291
+31	187	6440
+31	215	3249
+31	339	3638
+31	504	4877
+31	572	6734
+31	827	7169
+31	965	3611
+31	1241	4963
+31	1460	1121
+31	1707	4573
+31	1790	5906
+31	1894	5126
+31	1912	5412
+31	1961	1357
+31	2063	4926
+31	2391	1781
+31	1265	6781
+31	57	6442
+31	201	7706
+31	167	6719
+31	1015	8834
+31	795	5265
+31	171	4964
+32	232	5184
+32	436	4588
+32	488	4212
+32	541	6888
+32	567	3779
+32	724	1599
+32	881	5423
+32	1864	1998
+32	1885	1296
+32	2326	5926
+32	2623	3497
+32	2640	5993
+32	550	4094
+32	318	5650
+32	161	2979
+32	1152	5395
+32	622	6609
+32	1211	3567
+32	466	3640
+32	473	1986
+32	787	4673
+32	199	837
+33	887	3036
+33	948	8433
+33	1378	3042
+33	1428	6618
+33	1464	3151
+33	1791	4342
+33	1952	6767
+33	2165	6374
+33	2542	3129
+33	2729	7104
+33	2767	3628
+33	757	2570
+33	843	6944
+33	229	5696
+33	365	6162
+33	525	5127
+33	174	5738
+33	40	1302
+33	886	2584
+33	1079	1510
+33	1576	9807
+33	176	8585
+34	289	4921
+34	345	6321
+34	1140	2528
+34	1157	3250
+34	1469	2086
+34	1601	5363
+34	2224	2445
+34	2536	2962
+34	2775	6384
+34	211	4047
+34	1632	7483
+34	1488	4157
+34	999	3319
+34	135	860
+34	146	5898
+34	118	6938
+34	926	3661
+34	173	5208
+34	430	2584
+34	1061	6042
+34	364	2848
+34	337	6572
+35	66	3430
+35	426	6256
+35	449	5247
+35	564	10559
+35	1107	7599
+35	1200	8548
+35	1928	8516
+35	1960	9704
+35	2268	5462
+35	2292	5651
+35	2768	8114
+35	2994	2012
+35	1592	7551
+35	548	7838
+35	248	8494
+35	319	11121
+35	910	8240
+35	1327	7315
+35	1109	5366
+35	269	6027
+36	310	5660
+36	442	1982
+36	483	7461
+36	485	1230
+36	852	6683
+36	882	8369
+36	892	9442
+36	1066	2508
+36	1472	6144
+36	1533	7201
+36	1650	7875
+36	1870	9602
+36	2253	7612
+36	2297	3070
+36	2517	9237
+36	2704	1759
+36	270	9566
+36	1450	9154
+36	187	9470
+36	196	8116
+37	168	7674
+37	200	5612
+37	523	4880
+37	666	6308
+37	672	1371
+37	792	3232
+37	798	5227
+37	1058	5117
+37	1135	4777
+37	1773	362
+37	2375	7187
+37	2471	3180
+37	2803	3445
+37	2876	3464
+37	940	8632
+37	583	6873
+37	582	1829
+37	1614	4048
+37	363	1526
+38	123	4277
+38	330	6109
+38	369	4167
+38	418	960
+38	727	3290
+38	931	5791
+38	1021	3165
+38	1787	2196
+38	2019	3875
+38	2402	5236
+38	2737	4353
+38	2886	2880
+38	2979	4940
+38	175	6893
+38	1624	5592
+38	1011	3109
+38	440	4195
+38	389	423
+38	654	5519
+39	826	3338
+39	906	7112
+39	985	6612
+39	1264	4228
+39	1662	6732
+39	1820	8051
+39	2463	2609
+39	2874	5443
+39	171	4076
+39	1476	3081
+39	331	6135
+39	275	2217
+39	441	958
+39	321	6770
+39	218	5766
+39	1033	3264
+39	60	1749
+40	363	6421
+40	647	5530
+40	1324	5595
+40	1714	6158
+40	1718	7830
+40	1940	5232
+40	2332	6181
+40	1539	2553
+40	750	2580
+40	276	6546
+40	895	5904
+40	726	4839
+40	1201	2957
+40	1382	4813
+40	1366	3127
+40	733	1241
+40	550	4812
+40	618	5487
+41	105	2362
+41	309	8239
+41	1078	2860
+41	1214	9089
+41	1219	6011
+41	1543	5078
+41	2247	3734
+41	2379	5183
+41	2715	8909
+41	256	10400
+41	1507	6932
+41	50	7632
+41	547	10359
+41	627	7925
+41	1161	8432
+41	153	11727
+41	1160	5220
+41	269	9266
+42	467	6674
+42	482	4593
+42	767	4983
+42	1008	7248
+42	1082	6041
+42	1684	3542
+42	1739	6887
+42	1981	556
+42	2210	4742
+42	233	9899
+42	1183	3094
+42	947	5558
+42	1099	5798
+42	443	5575
+42	1501	6795
+42	1666	5215
+42	294	1392
+42	1621	10436
+43	671	2141
+43	846	4072
+43	1281	3049
+43	1691	2058
+43	2218	1951
+43	2810	7776
+43	612	4091
+43	1174	812
+43	609	8597
+43	772	7270
+43	539	6011
+43	1460	4293
+43	588	5541
+43	1017	3626
+43	1510	2924
+43	1431	3169
+43	1226	1525
+44	205	2348
+44	246	2181
+44	571	4125
+44	1384	4144
+44	2114	2960
+44	2201	4596
+44	2421	4227
+44	133	8298
+44	948	3939
+44	383	3254
+44	1273	4319
+44	805	3880
+44	583	6781
+44	988	3587
+44	403	4803
+44	531	3571
+44	1424	3857
+45	218	5337
+45	400	10180
+45	1067	2207
+45	1271	4743
+45	1301	2336
+45	1580	2211
+45	1742	7725
+45	1879	4043
+45	2649	2668
+45	942	6279
+45	152	5909
+45	1607	5565
+45	635	5031
+45	156	6595
+45	321	8650
+45	1415	7556
+45	1484	4479
+46	52	2307
+46	74	3294
+46	244	7869
+46	552	5155
+46	774	8949
+46	1217	9262
+46	2990	4870
+46	299	7148
+46	1085	3938
+46	172	4169
+46	200	8409
+46	1365	4983
+46	1074	7430
+46	253	8525
+46	214	3312
+46	264	5404
+46	145	2991
+47	136	3057
+47	415	1701
+47	435	3353
+47	660	6050
+47	814	2441
+47	1168	4276
+47	1401	2909
+47	1526	6385
+47	1663	2764
+47	1673	3182
+47	1762	6708
+47	2479	4333
+47	2581	3829
+47	2641	5671
+48	392	7502
+48	565	12289
+48	591	3012
+48	1258	7542
+48	1755	12101
+48	1873	10764
+48	2174	4587
+48	193	2969
+48	961	4533
+48	937	10327
+48	1124	10547
+48	1633	2577
+48	562	4745
+48	619	8943
+48	758	9310
+48	879	11358
+49	2608	3279
+49	2651	9438
+49	1561	4132
+49	230	4309
+49	1441	9132
+49	1562	3795
+49	478	2204
+49	473	4824
+49	1252	4277
+49	412	6916
+49	248	4304
+49	144	4374
+49	284	4903
+49	175	1253
+49	363	4197
+50	416	6224
+50	845	3552
+50	894	7485
+50	994	2907
+50	1131	4784
+50	1352	3105
+50	2713	4734
+50	2935	2948
+50	2946	910
+50	266	5051
+50	120	2207
+50	816	2023
+50	1053	3807
+50	186	937
+51	184	2808
+51	253	3171
+51	1180	648
+51	1679	1276
+51	2353	6080
+51	2509	1258
+51	2682	2998
+51	2719	3268
+51	334	6335
+51	608	2183
+51	719	4820
+51	270	6904
+51	242	3120
+51	506	3977
+52	62	2933
+52	217	857
+52	497	8095
+52	659	4270
+52	1865	7948
+52	1998	3494
+52	2087	2497
+52	2157	7981
+52	2204	5005
+52	2667	3608
+52	2852	533
+52	332	7856
+52	237	6968
+52	1115	1581
+53	837	2827
+53	932	9035
+53	1402	4622
+53	1677	3367
+53	1968	8226
+53	2602	6896
+53	2951	5950
+53	691	5384
+53	562	5191
+53	899	2330
+53	528	1532
+53	287	9408
+53	590	3646
+54	560	5138
+54	952	3037
+54	998	9412
+54	1487	8806
+54	1744	6533
+54	1838	6286
+54	1888	5060
+54	1957	5788
+54	2006	9360
+54	2033	3561
+54	2256	8165
+54	2311	1557
+54	2357	6628
+54	2814	5965
+54	2873	6111
+55	152	2448
+55	554	5500
+55	593	6077
+55	599	7833
+55	1297	5554
+55	2377	7086
+55	2428	2716
+55	2476	4049
+55	2965	3942
+55	1531	3260
+55	1489	4144
+55	740	7213
+55	1180	4359
+55	917	6900
+56	705	4373
+56	786	7987
+56	815	3634
+56	1147	6704
+56	1348	6747
+56	1448	2134
+56	1664	3517
+56	2128	10138
+56	140	8213
+56	1578	7910
+56	235	877
+56	1338	2475
+56	860	6300
+56	579	7746
+57	231	325
+57	2269	7984
+57	2691	6450
+57	83	6377
+57	215	4115
+57	73	5321
+57	608	5825
+57	744	2273
+57	667	4685
+57	107	7578
+57	1162	6406
+57	237	6245
+58	711	1700
+58	865	2663
+58	1006	4268
+58	1622	5994
+58	2373	1624
+58	2614	3542
+58	2636	6491
+58	252	7054
+58	256	2243
+58	225	2204
+58	96	1057
+58	192	7844
+58	1051	4507
+58	913	2955
+59	925	3010
+59	1191	1770
+59	1681	9484
+59	1854	2780
+59	2319	8923
+59	2477	9166
+59	2757	5753
+59	2819	7418
+59	2830	8045
+59	452	5467
+59	338	5861
+60	265	2559
+60	573	1704
+60	1523	9597
+60	650	9201
+60	1553	1175
+60	185	9081
+60	1543	2401
+60	310	7592
+60	1646	6282
+60	1389	7048
+61	350	9144
+61	773	6613
+61	1467	9346
+61	2059	734
+61	2945	3722
+61	1640	7043
+61	1594	2078
+61	859	2599
+61	1168	2795
+61	635	4719
+61	182	1744
+61	259	6135
+62	347	5999
+62	746	6336
+62	1355	2737
+62	1837	4543
+62	1913	1300
+62	2751	3943
+62	2793	5186
+62	348	8041
+62	1044	4715
+62	1423	10952
+62	520	5162
+63	645	6754
+63	716	3911
+63	768	7791
+63	1716	6873
+63	1783	5751
+63	1993	7395
+63	2276	3703
+63	1572	6108
+63	431	8339
+63	413	9472
+63	489	7521
+63	1354	8060
+63	453	2459
+64	617	2054
+64	1236	9902
+64	2275	5945
+64	2890	2310
+64	1232	6651
+64	630	7765
+64	1193	7250
+64	88	3137
+64	1342	9252
+64	166	4515
+64	976	3871
+64	235	7258
+65	328	7059
+65	367	5404
+65	857	5844
+65	1093	3193
+65	1709	4928
+65	2228	3098
+65	2414	7257
+65	2601	6953
+65	2743	6666
+65	2925	10714
+65	76	4535
+65	1405	2712
+66	537	971
+66	726	6164
+66	789	7624
+66	1020	2814
+66	1183	5260
+66	1270	6446
+66	2560	2167
+66	2703	3997
+66	2883	4329
+66	2962	2696
+66	1452	4919
+66	639	2628
+67	506	6688
+67	808	10989
+67	1409	1098
+67	1470	6915
+67	2372	3959
+67	238	10559
+67	1262	1298
+67	312	10768
+67	581	536
+67	116	9166
+67	1374	1731
+68	1286	2504
+68	1289	5841
+68	2058	8273
+68	458	8154
+68	197	10200
+68	361	6918
+68	729	9249
+68	277	3034
+68	456	5561
+68	1217	8860
+68	300	8555
+69	873	2341
+69	1152	1698
+69	1648	9932
+69	1373	4010
+69	783	5152
+69	141	5180
+69	416	2131
+69	1056	2301
+69	211	7807
+69	83	6500
+69	144	4188
+69	1133	7499
+70	340	1827
+70	366	4541
+70	543	6183
+70	654	3221
+70	1137	1181
+70	1318	7760
+70	2042	1358
+70	1028	7727
+70	736	4454
+70	124	6993
+70	456	5606
+71	580	4795
+71	1146	4723
+71	1302	4296
+71	2690	4250
+71	679	5811
+71	260	1718
+71	1264	1658
+71	780	2699
+71	158	3509
+71	986	3824
+71	287	7445
+72	1511	8975
+72	1916	3232
+72	2285	4866
+72	2533	8119
+72	1013	10148
+72	310	7946
+72	584	1173
+72	343	5687
+72	93	5729
+72	1544	1750
+73	1268	1416
+73	1386	5895
+73	1892	3781
+73	1965	5670
+73	2266	3991
+73	2397	6144
+73	2409	2291
+73	2842	2410
+73	779	5238
+74	743	2236
+74	1474	3675
+74	2163	3213
+74	2176	7262
+74	2449	1802
+74	1568	4536
+74	1358	3932
+74	1526	6885
+74	1251	2896
+74	1516	2224
+75	992	4794
+75	1678	5427
+75	1704	6248
+75	1821	5980
+75	2750	7068
+75	2984	3483
+75	1518	6802
+75	418	1797
+75	317	6656
+75	278	5045
+76	851	3402
+76	926	4830
+76	1068	4782
+76	1452	2896
+76	1644	3553
+76	426	4739
+76	938	6806
+76	549	6876
+76	368	1342
+77	283	6431
+77	371	3378
+77	586	5498
+77	678	6842
+77	1468	1605
+77	2544	7010
+77	357	8184
+77	1175	3921
+77	179	4128
+77	215	1779
+77	1438	3984
+78	355	2288
+78	522	6950
+78	578	2879
+78	605	6707
+78	1423	11159
+78	2147	6686
+78	2612	9908
+78	1136	6298
+78	670	9728
+79	332	6455
+79	445	5517
+79	508	7697
+79	2680	4646
+79	394	1971
+79	1634	5675
+79	946	7319
+79	818	4944
+79	209	7805
+79	1610	296
+80	359	2199
+80	1145	6169
+80	1568	1821
+80	2312	4264
+80	553	4313
+80	340	3368
+80	389	4610
+80	263	5709
+80	592	2816
+81	1019	7047
+81	1400	2716
+81	1482	1764
+81	1721	2424
+81	2150	2936
+81	1629	5018
+81	1261	2998
+81	1219	5067
+82	2342	11583
+82	2712	8912
+82	581	1529
+82	1656	3766
+82	202	6707
+82	362	4290
+82	636	3136
+82	1563	4757
+82	394	2331
+83	1541	6216
+83	1603	4951
+83	2214	2874
+83	2422	3383
+83	2617	3531
+83	2742	7140
+83	3025	2762
+83	1533	3298
+84	385	4055
+84	929	2867
+84	1174	3260
+84	1201	1511
+84	1933	1698
+84	1444	5453
+84	101	3497
+84	1400	1776
+84	162	4751
+84	325	4605
+85	861	5280
+85	1098	5167
+85	118	5602
+85	1143	6265
+85	1222	5709
+85	382	1481
+85	1106	6089
+86	2112	7232
+86	2221	2432
+86	2520	4069
+86	2630	1180
+86	122	11946
+86	1178	8255
+86	234	6860
+86	332	6795
+86	1329	4749
+87	477	9174
+87	1163	3561
+87	1461	10159
+87	2208	9098
+87	2552	968
+87	130	3920
+87	1364	5536
+87	838	6726
+87	334	8098
+88	750	1269
+88	904	1247
+88	1023	158
+88	1692	3428
+88	1848	2505
+88	2981	1051
+88	1235	7279
+89	264	7560
+89	1011	1287
+89	1413	7933
+89	2941	2409
+89	561	6052
+89	104	5428
+89	724	5880
+89	501	7457
+89	257	6470
+89	1520	6992
+90	601	1883
+90	684	7441
+90	753	5943
+90	2351	4464
+90	2661	8098
+90	242	7632
+90	933	8288
+91	1119	8057
+91	1284	9169
+91	319	7114
+91	1019	6899
+91	1487	4222
+91	625	7922
+91	1072	7881
+91	1522	4936
+91	1541	3868
+92	172	6905
+92	279	4144
+92	569	3445
+92	1670	7029
+92	2423	6105
+92	2516	6975
+92	2836	666
+93	374	4322
+93	978	4895
+93	730	6327
+93	197	10312
+93	1036	5601
+93	300	6833
+94	812	3236
+94	1697	7122
+94	1702	6039
+94	1936	3331
+94	2526	3898
+94	678	3801
+94	152	3167
+94	448	3567
+95	394	2826
+95	615	4324
+95	618	5649
+95	1462	6300
+95	1645	5674
+95	1835	2780
+95	2177	2344
+95	2849	1417
+95	2911	3478
+96	556	8286
+96	2092	6302
+96	116	7786
+96	1523	4766
+96	721	2065
+96	1529	1275
+96	288	9362
+96	785	6272
+97	128	5871
+97	355	2357
+97	1565	3624
+97	567	1257
+97	1258	6290
+97	322	5380
+98	437	9153
+98	547	7090
+98	1967	7045
+98	864	2935
+98	366	5923
+98	696	5755
+98	813	8791
+98	847	4382
+98	1359	4627
+99	984	11954
+99	2967	850
+99	263	3863
+99	185	8895
+99	141	11144
+99	1323	7964
+99	622	8523
+99	1040	7249
+100	758	5268
+100	858	4120
+100	2878	1574
+100	751	8153
+100	1304	2921
+100	955	4315
+100	171	1992
+101	1945	5094
+101	992	1676
+101	997	5841
+101	280	1354
+101	1068	5902
+101	1509	4190
+101	1213	5821
+102	781	2006
+102	963	3148
+102	1254	3633
+102	1275	3825
+102	1531	8419
+102	2963	4987
+102	2982	3732
+103	1589	7050
+103	1982	4432
+103	2078	6537
+103	2105	1694
+103	794	4008
+103	156	5378
+103	374	3314
+103	840	6502
+104	2438	797
+104	461	4663
+104	524	4806
+104	1676	4203
+104	115	4290
+104	390	2128
+104	990	7539
+105	153	9381
+105	3009	1087
+105	539	7268
+105	612	6580
+105	177	3403
+105	632	4957
+105	561	5676
+106	1620	6764
+106	2543	1182
+106	126	5686
+106	407	2834
+106	890	3157
+106	1483	8799
+106	1459	1079
+106	516	3589
+107	478	2831
+107	884	8964
+107	1135	2625
+107	1328	2649
+107	481	1977
+108	549	2684
+108	668	4607
+108	186	3808
+108	981	6324
+108	138	2169
+108	135	3885
+108	1527	1974
+109	188	7494
+109	386	1903
+109	967	6452
+109	1319	5638
+109	2455	6429
+109	250	1988
+109	663	1359
+109	819	1533
+110	1509	4245
+110	2004	3559
+110	839	1675
+110	130	6266
+110	1620	6443
+110	1003	8320
+110	411	4221
+111	1203	1356
+111	1240	1314
+111	1349	5550
+111	2212	2571
+111	2223	1589
+111	2485	2530
+112	950	7227
+112	1493	9449
+112	1539	7728
+112	2113	6033
+112	647	6559
+112	1371	10188
+112	1156	5191
+112	1639	8884
+113	462	7294
+113	1374	7144
+113	1819	3712
+113	2697	3693
+113	625	3099
+113	1322	3286
+114	476	804
+114	1370	6122
+114	1675	1961
+114	1711	5329
+114	1897	8122
+114	2219	2945
+114	523	3967
+114	1506	7600
+115	391	5284
+115	610	5613
+115	1260	2398
+115	1627	2674
+115	1029	2994
+115	374	5424
+115	504	6100
+116	1255	5596
+116	1715	8811
+116	591	2659
+116	547	6870
+116	416	3703
+117	234	3789
+117	752	2780
+117	1234	849
+117	1958	832
+117	388	7703
+117	384	6214
+117	243	9158
+118	1267	7085
+118	2953	8042
+118	1352	8192
+118	397	10900
+119	2385	3213
+119	2512	914
+119	666	4709
+119	323	2253
+119	143	8718
+119	1497	3302
+119	610	7930
+120	874	4375
+120	1170	5092
+120	1997	4005
+120	1493	4565
+121	1245	5940
+121	1588	9097
+121	132	6624
+121	1591	6901
+121	1047	3393
+122	990	8350
+122	2203	3336
+122	1024	10188
+122	904	3909
+122	694	11108
+123	2088	4025
+123	1236	5298
+123	429	5834
+123	792	2442
+123	924	4726
+123	591	2156
+123	1298	3618
+124	315	5419
+124	643	8082
+124	1362	8833
+124	1876	7164
+124	2944	1343
+124	2989	7191
+125	2401	5217
+125	1376	5936
+125	775	7017
+125	1312	6060
+125	866	6244
+125	965	296
+125	481	2332
+126	1922	3646
+126	637	6640
+126	613	6605
+127	1138	5919
+127	1416	3357
+127	1445	3891
+127	1696	3658
+127	2506	4362
+127	2943	8058
+128	178	2094
+128	364	1420
+128	2627	4067
+128	2895	6071
+128	2959	7451
+128	184	2410
+128	1100	6617
+129	383	9255
+129	504	9158
+129	1648	11991
+129	808	10199
+129	1456	6031
+129	518	9838
+129	1042	3424
+130	1809	2492
+130	2974	5610
+130	1142	3576
+130	761	2534
+131	1266	2617
+131	1195	8188
+131	1034	6400
+131	1333	1080
+131	874	8063
+131	1500	9714
+131	844	7941
+132	570	4315
+132	966	1524
+132	514	7496
+132	1110	6374
+132	749	4173
+132	1336	6895
+133	2613	8036
+133	1595	6842
+133	1009	3084
+133	143	892
+133	970	8401
+133	1599	2323
+134	468	5043
+134	1299	1326
+134	167	10047
+134	623	7584
+134	286	4815
+134	731	9111
+134	261	3690
+135	1978	8328
+135	2072	6219
+135	2546	5114
+135	681	3097
+135	714	3689
+136	434	2728
+136	2027	7465
+136	664	8881
+136	432	2555
+136	769	5811
+136	1114	4996
+136	765	6609
+137	257	4490
+137	1436	4534
+137	1515	5687
+137	253	5052
+137	784	5264
+137	1559	5091
+138	1373	4383
+138	1955	3189
+138	1999	6434
+138	1502	2037
+138	333	5147
+138	806	8614
+139	2135	7725
+139	2216	1235
+139	2310	2123
+139	2527	7011
+139	2684	7775
+139	372	2458
+140	1095	9555
+140	1419	6243
+140	2776	6494
+140	1091	10003
+141	190	5267
+141	461	8046
+141	384	5912
+141	297	7847
+142	286	3878
+142	2812	2295
+142	586	7528
+142	147	6036
+143	1780	10731
+143	2355	7928
+143	1163	5458
+144	2091	5659
+144	2146	9451
+144	1477	4443
+145	3028	6124
+145	1683	8159
+145	345	7757
+145	531	7917
+145	657	5205
+146	420	7678
+146	2370	3468
+146	2733	8352
+146	2884	2592
+147	1117	7135
+147	228	6567
+147	1275	3203
+148	872	5226
+148	323	4506
+148	639	3265
+148	350	6692
+148	303	5890
+148	1255	5056
+149	2403	8350
+149	251	5780
+149	982	6057
+149	1628	3142
+149	289	8535
+149	404	3247
+150	1204	8578
+150	1530	11010
+150	210	4669
+150	179	9952
+150	348	5025
+150	1663	8236
+151	189	7282
+151	1766	6368
+151	2008	3185
+151	643	391
+151	1585	3108
+152	928	8815
+152	1736	10949
+152	1391	997
+152	447	2075
+153	985	3178
+153	1519	8615
+153	1260	4833
+153	169	10284
+153	1214	2904
+154	2900	7281
+154	1505	1704
+154	182	4095
+154	397	8356
+154	1678	4849
+154	392	6630
+155	2304	3340
+155	881	9561
+155	810	6518
+155	671	5624
+155	704	4622
+156	1109	2917
+157	2652	9770
+157	199	2982
+157	417	2299
+157	1618	6609
+157	833	3272
+158	2429	6781
+158	282	5659
+158	349	1893
+158	485	8042
+158	1274	6360
+159	2134	4404
+159	400	5023
+159	1306	3423
+159	827	3352
+159	1030	3153
+159	541	4790
+160	530	2731
+160	639	2365
+160	1287	5648
+160	766	536
+160	184	6226
+160	801	3933
+161	400	6406
+161	1120	4084
+161	603	3643
+161	914	3062
+162	788	6053
+162	898	3803
+162	1751	3408
+162	604	7426
+163	1139	5923
+163	1537	1458
+163	1959	3783
+163	2499	4522
+163	2732	6009
+163	2809	2710
+164	2458	2808
+164	1402	6100
+164	1059	4365
+164	307	4902
+164	1038	3868
+165	949	7395
+165	1155	6898
+165	541	3261
+165	1334	6566
+166	1406	3086
+166	1590	1858
+166	354	4831
+166	637	5005
+167	1810	5602
+167	2717	1989
+168	2825	10221
+168	706	6676
+168	543	6947
+168	319	5701
+168	460	5311
+169	2722	6955
+169	2752	8852
+169	205	2906
+169	759	5826
+170	190	5518
+170	363	5863
+170	1684	6329
+170	328	5933
+172	1710	8974
+172	189	1684
+172	1210	1485
+173	972	3393
+173	206	4022
+173	898	5188
+174	1181	3328
+174	468	6381
+175	2843	4716
+175	406	9212
+175	1571	5815
+176	1123	4845
+176	768	8938
+176	652	4908
+177	1283	5515
+177	600	7185
+177	1380	10041
+178	1073	5156
+178	883	7733
+178	1514	2222
+179	277	6339
+179	520	6861
+180	2433	1199
+180	441	5881
+180	822	543
+180	1194	3112
+180	928	5232
+181	1365	6067
+181	1505	6708
+181	406	1846
+181	1095	8869
+182	438	5592
+182	1221	4178
+182	680	7697
+183	912	6404
+183	2249	2967
+183	2645	4036
+183	310	4758
+183	690	1056
+184	2692	2165
+184	302	8120
+184	921	5235
+185	341	8692
+185	1132	8350
+186	1333	4867
+186	2923	4155
+186	737	4639
+187	1985	2133
+187	2790	7046
+187	254	3964
+188	2828	4270
+188	229	6970
+188	360	10885
+188	534	2165
+188	1443	1923
+189	694	1518
+189	797	1496
+189	534	10998
+189	837	4859
+190	1212	3112
+190	2888	3377
+191	1649	6625
+191	470	7604
+191	878	6812
+191	1121	5465
+192	1356	7991
+192	2061	4059
+192	3018	10075
+192	1126	5219
+193	1871	4511
+193	2558	4558
+193	351	3814
+194	1132	8449
+194	2514	3929
+194	1296	1763
+194	253	1112
+195	596	7111
+195	1159	4811
+196	1874	5315
+196	2554	2544
+196	205	3635
+197	259	4810
+197	347	11467
+197	742	5372
+198	665	9188
+198	908	3632
+198	2245	9247
+198	199	4768
+198	312	4599
+199	2278	5069
+199	877	6461
+200	1080	6966
+200	227	5598
+200	1473	2667
+201	2378	3925
+201	1361	8286
+201	1363	7618
+201	1472	6650
+202	796	2774
+202	1743	3894
+202	3036	1832
+203	945	4637
+203	342	9748
+203	1026	5698
+203	403	7633
+204	1478	9778
+204	327	5316
+204	1417	9750
+205	2107	3004
+205	2794	1761
+205	760	1985
+206	2730	1560
+206	2882	1621
+206	1290	5785
+207	728	2150
+207	1097	8469
+207	1777	3998
+207	3033	1846
+208	2305	6133
+208	2909	6277
+209	311	6078
+209	1087	5062
+209	429	7546
+210	226	1132
+210	952	9171
+210	1687	5360
+211	1740	5907
+211	2193	3999
+212	1552	2865
+212	1661	2545
+212	778	2885
+212	1681	2532
+213	1055	3673
+213	993	4747
+213	349	5476
+214	1728	8009
+214	953	5090
+215	487	3866
+215	722	1699
+216	292	5626
+216	344	239
+216	1353	7961
+216	640	6545
+217	396	6409
+217	2274	3259
+217	474	519
+218	908	2422
+218	593	7531
+219	637	6981
+219	700	3695
+219	364	5993
+220	1043	12441
+220	1481	9377
+220	1292	5321
+220	350	7656
+221	1199	5172
+221	411	7439
+221	642	7307
+222	2741	7740
+222	1281	5668
+223	440	9778
+223	386	982
+223	381	7535
+224	2420	2835
+224	685	5170
+224	606	8489
+224	1052	2124
+225	1315	3261
+225	1688	8774
+226	721	5849
+226	878	6569
+226	745	2877
+227	719	4484
+227	2222	3519
+228	342	8045
+228	1160	4770
+228	1657	7577
+229	1086	2526
+229	1626	8271
+230	1497	1363
+231	493	3637
+231	830	1503
+231	1335	7979
+231	1909	3973
+232	2988	3046
+232	553	7055
+232	239	6083
+233	1411	2582
+233	517	10409
+234	2866	4552
+234	462	5346
+234	1428	4823
+235	1853	6746
+236	1048	9161
+236	1280	6413
+236	279	7787
+236	385	6363
+237	2966	195
+238	1679	4935
+238	1465	4465
+238	282	4080
+239	2199	6151
+239	2242	2971
+239	790	1946
+240	1069	1868
+240	1515	7756
+240	609	9138
+241	249	3064
+241	1317	7736
+242	1924	1943
+242	1230	980
+243	826	5214
+243	800	8599
+243	1581	7982
+244	1383	2409
+244	853	5984
+244	1560	4649
+245	1262	6596
+245	1805	9566
+245	2246	6322
+245	514	5934
+246	712	4852
+246	1065	3416
+246	1619	7207
+246	1555	5044
+247	3029	8856
+247	490	7386
+247	308	1725
+248	2813	4636
+249	892	6773
+249	1401	4855
+249	578	3824
+249	542	5627
+250	618	3573
+250	569	7229
+251	413	7085
+251	1000	7448
+251	511	5436
+252	351	1803
+252	342	4108
+252	1021	8102
+254	575	6687
+254	1368	7889
+255	1192	1397
+255	433	5948
+255	848	3979
+256	983	7187
+256	1677	4120
+257	1600	7210
+257	1050	5466
+258	696	4243
+258	586	5576
+258	1022	5288
+259	2758	2830
+260	1092	5724
+260	1143	6191
+261	1752	6657
+261	2515	10322
+261	346	7103
+262	2782	4659
+262	3007	6887
+262	551	5223
+262	543	1855
+263	442	6179
+264	720	1007
+264	2086	7721
+264	1511	5231
+265	1461	3084
+265	1550	3839
+265	268	5855
+266	2766	4592
+267	595	3545
+267	488	5428
+267	1291	6849
+268	2986	10125
+268	296	4978
+269	2412	2660
+271	2858	2000
+271	1330	6228
+271	377	6512
+272	675	1082
+272	1482	3374
+272	1478	4360
+272	1116	3618
+273	2960	7853
+273	388	7864
+273	960	6145
+273	1111	9776
+274	283	6065
+274	385	2280
+274	1475	894
+275	1730	6490
+275	896	3677
+276	2142	4784
+276	943	11401
+278	1129	984
+278	949	3088
+279	1562	1232
+279	3017	1714
+280	305	4758
+280	676	7445
+281	2778	4543
+281	1530	6967
+281	342	7279
+282	1878	3876
+283	1801	7800
+284	969	9265
+285	869	4667
+285	2288	2821
+285	1288	2610
+286	669	6746
+287	1454	4762
+288	2255	6260
+288	2736	4560
+289	2582	8717
+290	1398	7999
+290	1836	1063
+291	1036	5115
+291	909	5592
+291	893	9543
+292	1215	3011
+292	362	4711
+293	1624	4290
+293	2060	1881
+294	2847	8031
+295	828	7895
+295	1427	9480
+295	474	2263
+296	334	4965
+297	314	5090
+297	1123	3098
+298	1149	5348
+299	708	5631
+299	378	5380
+301	330	8280
+301	962	8319
+302	1759	5373
+302	1293	7862
+303	1118	3699
+303	1151	6894
+304	1559	4228
+304	3002	4349
+305	2928	2433
+305	575	4928
+306	1412	1493
+306	1545	7572
+307	312	9900
+308	2325	2913
+309	869	4623
+309	1517	3981
+313	1494	1846
+314	489	6365
+315	428	5295
+315	1216	4395
+315	1267	2598
+316	1319	4408
+316	1598	7460
+316	753	3531
+317	1188	6253
+317	971	3914
+318	1991	1968
+318	325	6658
+320	1225	8230
+320	1248	2590
+321	1675	8242
+322	872	3796
+322	1046	4863
+323	940	10316
+324	1471	1655
+324	454	3632
+324	1612	3585
+325	535	4842
+326	2248	5602
+326	428	8363
+327	2668	3235
+328	1644	653
+328	1084	5248
+329	1245	1515
+329	739	6901
+329	596	3643
+330	880	8167
+330	1243	6810
+331	1934	1080
+333	973	1817
+334	2818	5166
+335	1393	4130
+335	347	648
+335	440	9767
+336	1032	7533
+336	2556	8087
+337	1286	7641
+337	1360	7296
+338	1144	2212
+338	369	8063
+339	1534	9848
+339	2584	6273
+340	459	3742
+341	377	6976
+341	615	2063
+343	1902	4533
+343	486	3358
+344	2765	1408
+344	1426	6089
+345	1421	8176
+345	521	5508
+346	1140	3036
+346	1259	3610
+347	986	5181
+348	2678	2479
+349	372	6403
+351	2462	2206
+352	1057	2551
+353	371	4977
+353	628	5663
+353	435	5700
+354	2760	9481
+355	679	1283
+355	1650	9444
+356	1348	8732
+356	1153	6516
+356	1525	3185
+357	905	11042
+357	1451	8919
+358	656	7372
+358	825	3557
+358	1073	7746
+359	589	4500
+359	1181	3130
+360	813	8183
+360	1532	1007
+361	463	5101
+364	2121	2007
+365	441	4703
+365	1558	6777
+366	1063	3375
+367	655	3035
+367	1136	2498
+368	524	4388
+368	1574	3218
+369	850	6554
+371	609	5031
+371	738	5366
+372	521	2152
+373	1030	5899
+373	1634	6137
+375	725	6071
+375	1089	3843
+376	2875	6565
+376	472	1659
+376	774	7928
+377	2492	7617
+378	1840	2289
+378	2097	3742
+379	803	9598
+379	1930	841
+379	3021	4856
+380	425	7714
+380	526	4473
+381	1326	6520
+382	1403	3345
+382	1887	642
+383	469	1291
+383	1299	7170
+384	1113	1066
+385	469	5236
+386	569	8163
+387	1683	6412
+387	443	5670
+388	557	3163
+389	854	3678
+391	2281	2573
+392	1141	3382
+393	1782	9011
+393	1457	5989
+395	1384	7405
+395	505	2291
+396	3034	6451
+399	1154	3885
+399	1176	7401
+401	1128	10589
+402	2521	4013
+402	2800	2696
+405	434	4474
+405	835	6770
+407	1093	3151
+408	1938	6552
+408	1186	9035
+409	1233	4253
+410	1062	4808
+412	2961	8023
+414	1617	8994
+415	1128	6882
+417	1394	5855
+419	508	3344
+419	420	2749
+422	867	6950
+422	589	2582
+423	1549	6892
+424	1432	6042
+425	1179	1252
+426	1002	5161
+427	498	1639
+427	1537	362
+430	2993	2916
+431	876	10409
+432	2415	7436
+433	1442	6032
+436	524	6929
+437	1498	1896
+437	1641	8042
+438	510	6662
+439	762	6788
+442	2716	5874
+444	2674	12272
+445	588	3875
+446	1547	8399
+446	1244	8011
+448	1906	2889
+449	1096	2569
+450	627	9483
+453	1567	8055
+454	2510	6235
+458	573	2061
+460	574	4659
+462	1387	6806
+463	1419	6004
+464	1088	3004
+464	2859	2215
+465	991	6470
+467	579	4456
+469	1147	2331
+470	613	4046
+475	1654	5527
+476	2538	3992
+478	2101	6899
+479	598	3810
+479	626	7262
+480	945	3124
+482	2973	3169
+483	690	6634
+484	597	3161
+484	929	1714
+486	1611	4627
+487	1904	4459
+487	735	8068
+492	1268	3445
+492	1092	4732
+493	2635	1756
+494	2625	1713
+496	1570	6608
+496	602	5396
+497	1441	7121
+497	1729	5104
+498	1157	7032
+499	1869	6691
+500	661	8516
+500	2013	5315
+501	1009	8865
+502	1035	1430
+502	1660	6603
+503	557	3512
+503	2754	3553
+505	1622	1531
+507	855	7948
+507	1158	4925
+508	1227	3278
+509	2927	1214
+511	2368	2998
+512	633	6031
+512	956	2713
+513	528	4226
+513	1144	4032
+515	804	3340
+515	891	2446
+517	864	3229
+519	2930	2732
+522	959	2761
+523	2461	7301
+525	2371	7880
+526	1303	7283
+527	1447	3924
+529	592	3876
+529	1125	9074
+532	1300	4851
+532	615	3105
+533	2513	6939
+533	2705	4837
+535	1392	6823
+536	1293	3530
+536	1004	1229
+537	1228	6848
+537	705	5981
+538	1638	4261
+540	793	4724
+545	587	9100
+545	901	8653
+546	1538	3659
+546	1356	2583
+549	621	8989
+551	958	5208
+552	1642	3824
+552	776	1373
+555	2644	725
+556	2996	5962
+558	1891	9424
+559	1492	7918
+559	1355	6380
+563	997	6287
+564	2650	6236
+565	2425	5043
+566	2857	8018
+567	1672	1599
+568	1039	2694
+570	2122	5834
+571	1122	6527
+571	1283	2502
+572	616	4821
+572	1454	7325
+573	630	6253
+574	930	4255
+576	851	5120
+576	1615	4586
+584	1316	4580
+585	1027	5098
+585	674	5522
+590	723	1427
+595	1108	1156
+596	598	4725
+597	600	5684
+599	2188	4615
+601	1860	5173
+601	994	4168
+602	823	4760
+603	755	7401
+604	2095	8844
+605	2284	6901
+605	2364	6863
+606	699	4084
+607	1341	4949
+610	2620	8903
+614	2922	4807
+616	682	2546
+617	3019	5990
+620	951	6688
+621	1351	8491
+623	838	5915
+624	1463	6108
+624	1077	6290
+628	2648	9078
+629	1167	3301
+631	687	7945
+633	2908	7585
+634	1046	8385
+638	720	6180
+638	1395	2296
+645	1440	7896
+659	2504	5091
+660	2798	9324
+661	701	8058
+662	1485	2614
+668	811	7638
+683	2921	4220
+688	1962	1857
+692	1127	7451
+695	1203	9020
+715	1535	2262
+717	875	6853
+718	1689	2685
+723	1438	3474
+727	980	6371
+743	1741	3659
+747	1343	1768
+756	1344	8795
+764	3008	1251
+767	833	6423
+773	2555	4745
+777	2721	2632
+789	797	5514
+791	1344	3954
+793	2109	2792
+802	1078	7403
+809	1256	4254
+812	2069	6668
+820	1797	9720
+824	1239	1314
+829	1098	4073
+832	3027	5277
+852	2327	7006
+856	1898	6326
+858	1425	4074
+868	963	3366
+873	1316	6700
+885	1134	6004
+887	2950	8941
+888	1396	8401
+889	2227	6499
+900	1205	7257
+906	1346	7230
+907	1345	7448
+911	2277	3440
+916	1546	5174
+918	2117	6414
+951	1407	6438
+968	1270	3152
+977	1022	4258
+987	1177	6792
+1002	1049	3215
+1005	2827	6445
+1012	3013	5109
+1032	2507	3401
+1037	1124	2640
+1041	2653	5524
+1045	1102	1336
+1063	2972	3763
+1071	1994	6607
+1075	1340	8112
+1088	1467	2548
+1090	1100	6279
+1112	1758	7698
+1139	2048	4081
+1141	1636	1925
+1145	2583	6382
+1146	1664	8260
+1170	1688	1878
+1185	1822	4920
+1187	1261	4275
+1189	2991	2985
+1197	1469	6606
+1198	1594	4135
+1202	1818	6419
+1204	2780	7455
+1206	1575	6318
+1208	2056	7336
+1212	1501	7299
+1216	2785	5827
+1220	1269	4050
+1223	1470	2717
+1253	1296	6825
+1272	1795	1387
+1285	1484	1368
+1297	2267	10631
+1301	1890	5308
+1302	1686	8391
+1309	2152	1705
+1313	1464	4031
+1314	2947	2437
+1332	1845	3244
+1337	2724	9998
+1339	2073	4595
+1370	2971	1678
+1377	2287	3344
+1379	2040	2140
+1381	3003	3864
+1399	2447	3134
+1414	1486	3701
+1420	2251	10646
+1430	2168	5920
+1433	2182	5007
+1435	1571	3506
+1445	1499	2874
+1446	1712	2268
+1458	2846	5543
+1480	2964	5892
+1490	2045	7635
+1491	2734	8384
+1503	2762	6823
+1534	2914	7006
+1546	1910	2040
+1569	2864	1336
+1573	1646	7145
+1582	1732	8160
+1593	1942	5563
+1597	2910	8273
+1601	2213	6745
+1603	1651	1833
+1604	1606	8238
+1611	2603	5751
+1613	2236	5406
+1635	1700	5730
+1652	1653	5939
+1685	1972	3611
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/topology-read/Orbis_toposample.txt	Fri Mar 12 14:36:38 2010 -0500
@@ -0,0 +1,2769 @@
+956 1413
+366 1387
+1421 1369
+1421 1007
+794 1416
+1415 1309
+1397 182
+1402 492
+1412 1358
+1250 1209
+1420 416
+1380 85
+1364 1254
+1316 1129
+230 1310
+718 1301
+589 1422
+1411 571
+1407 1400
+1417 1224
+1310 1419
+944 1391
+1296 1397
+185 1409
+1252 1422
+1144 1408
+1360 989
+1323 1051
+445 1396
+1041 1408
+1414 1393
+483 1388
+1260 601
+385 1414
+1364 735
+1284 625
+1065 1421
+1395 1078
+1341 1350
+1135 56
+1416 1391
+736 1380
+110 1422
+1171 1076
+1374 1408
+1358 1048
+1420 1199
+195 1416
+498 1422
+1139 1419
+306 1405
+487 1418
+961 1422
+1421 409
+1351 1261
+954 1422
+1414 1401
+1257 1388
+1404 1400
+15 1303
+1153 1095
+1422 1145
+401 1417
+1277 1421
+339 1268
+1411 987
+261 1411
+1410 1358
+227 1248
+1418 630
+1392 1303
+1405 1032
+1212 590
+996 1421
+379 1374
+1417 1399
+16 1353
+237 1422
+1365 915
+1414 114
+80 1418
+1421 438
+1407 363
+1415 679
+1089 1385
+1422 973
+138 1422
+1419 1400
+1422 372
+51 1246
+983 1398
+332 1422
+1414 1344
+1396 1299
+495 1390
+1420 691
+1364 784
+139 1200
+1039 1358
+1399 1416
+1393 569
+18 1420
+1300 1415
+886 1417
+901 1335
+1350 446
+1419 1107
+1397 801
+651 1374
+778 1407
+1242 1409
+1394 806
+696 1407
+1097 1420
+1291 1414
+1414 1174
+340 1375
+931 1044
+1406 1364
+873 1418
+1415 1234
+1293 1415
+1418 905
+368 1422
+939 1422
+1123 1422
+1203 1289
+1372 1412
+1156 822
+1413 1042
+1092 1046
+1384 1266
+1415 1388
+1063 1374
+1418 1194
+1323 91
+657 1326
+1422 553
+1422 1395
+1287 393
+1221 1293
+1375 1310
+1346 1160
+1395 1145
+258 1418
+874 1421
+359 1372
+1298 1405
+1418 752
+639 1353
+1340 1421
+1385 432
+1421 841
+1397 1361
+1391 1312
+300 1398
+1329 1051
+1294 1057
+1160 13
+1421 1084
+1419 1358
+885 1418
+1398 593
+958 1420
+488 1410
+1362 1161
+1289 715
+1384 569
+89 1216
+466 1227
+803 1191
+877 1411
+1420 783
+796 1345
+1421 1253
+1390 148
+1083 1418
+1416 212
+208 1325
+1419 477
+1406 1361
+216 1131
+1419 868
+1344 1416
+1398 1311
+1366 688
+1400 1333
+563 1170
+1421 418
+1418 1085
+1422 1350
+1300 833
+1399 1400
+1245 1389
+689 1422
+1232 1418
+1262 1390
+1416 1400
+713 1375
+1420 1182
+660 1409
+1147 1393
+884 1420
+1176 1415
+1421 986
+659 1403
+1400 1401
+1408 1217
+1009 1394
+1050 1386
+1380 484
+1420 680
+1039 1416
+829 1403
+1342 1413
+1223 1353
+1414 1352
+1383 1314
+1408 1204
+1109 1393
+1322 570
+1305 1406
+1395 20
+1422 947
+539 1376
+1419 1390
+1229 460
+1299 402
+1422 94
+1422 463
+1420 605
+1422 1185
+1355 1346
+764 1422
+1421 1218
+1392 493
+1068 1147
+572 1422
+1422 1193
+1357 1315
+1406 1378
+1021 1349
+33 1270
+1421 927
+1062 1398
+1419 976
+1421 482
+1408 1101
+1273 1262
+403 477
+1013 1422
+851 1418
+849 1385
+894 1420
+1206 1409
+1300 1030
+1290 1419
+1394 1115
+1409 758
+499 1348
+1422 1011
+769 1261
+1415 1031
+570 1375
+1221 631
+981 1422
+1402 464
+1363 1419
+58 1420
+1387 1060
+1213 1419
+1420 1352
+1100 1414
+1003 1295
+895 1042
+1185 1338
+1311 411
+1392 289
+907 1383
+1278 1396
+1388 532
+1419 714
+828 1409
+1403 1098
+1066 586
+1181 1419
+1422 619
+492 1413
+1335 1418
+1375 73
+1302 823
+1405 1364
+810 1420
+1402 321
+1325 834
+1420 778
+1404 1290
+1358 414
+1411 885
+1413 744
+1421 673
+1407 440
+1417 1368
+1371 1385
+1422 564
+1399 1401
+508 1422
+518 546
+1091 1114
+1415 1386
+1327 1406
+1134 1416
+1398 1245
+1216 1199
+951 1359
+670 1408
+1097 1422
+567 1096
+714 1422
+1420 1351
+833 1057
+1055 1377
+1407 1289
+1226 994
+1396 1110
+1417 1393
+1011 1375
+813 1416
+1420 1221
+1395 1084
+1132 804
+728 1420
+965 1418
+637 1261
+561 1413
+1421 224
+1120 785
+1402 433
+1404 1369
+505 1311
+725 1419
+1132 1406
+1150 1418
+1406 1370
+1415 1035
+1391 127
+1407 682
+1409 999
+1411 773
+1366 1417
+1416 950
+566 1421
+1249 1382
+670 1409
+1368 1149
+391 1361
+1402 1247
+612 1382
+220 787
+1397 1069
+39 1382
+1418 725
+210 1420
+1343 358
+444 1422
+1135 1421
+1018 1422
+1269 604
+637 1418
+939 1417
+632 1247
+1422 815
+474 1337
+892 1420
+907 1360
+1077 1419
+1365 1215
+1250 459
+1293 27
+678 1422
+1372 594
+732 1411
+1293 384
+1417 1062
+1383 1421
+1105 1411
+628 1420
+1402 1188
+1407 87
+1409 1112
+902 1255
+1416 1302
+1037 1320
+1397 29
+1184 1414
+1422 335
+610 1416
+731 1321
+439 1373
+705 1295
+1026 1368
+828 1333
+1410 1395
+1417 1124
+1421 680
+1328 741
+1420 387
+986 1376
+1418 1066
+1391 1093
+1417 1401
+1365 1410
+857 1393
+1390 722
+1417 439
+1410 1372
+1409 1399
+1409 587
+1421 1055
+1420 1027
+481 1421
+1205 1415
+531 1321
+1061 1417
+449 1413
+1381 346
+1166 1418
+897 1415
+1352 61
+1105 1418
+1067 1386
+1303 1404
+838 1354
+1418 771
+892 1422
+1421 1118
+1411 1399
+1413 971
+1422 658
+1126 1155
+1235 1397
+1422 607
+855 975
+1306 546
+1413 507
+1417 651
+1128 1417
+733 1421
+1395 870
+1363 318
+442 1422
+1412 1291
+1418 194
+1311 621
+144 1413
+1406 640
+1314 1410
+1420 889
+1390 1421
+1280 1296
+955 1379
+264 1340
+1415 1370
+1348 189
+1393 1379
+1122 1418
+1205 1412
+1399 1414
+1170 1408
+1175 1259
+1025 480
+969 1418
+1270 1404
+1421 121
+1404 743
+422 1402
+1195 166
+427 1422
+1387 1406
+1419 618
+1158 1163
+1399 1229
+1413 1045
+1352 1393
+1419 729
+1328 255
+1358 1262
+1409 1134
+821 1371
+1306 266
+1361 605
+686 1227
+1411 848
+1422 1203
+202 1413
+853 1325
+362 1418
+1145 1391
+1056 1326
+1395 1350
+181 1387
+1158 1233
+948 1422
+219 1419
+1378 661
+307 1418
+1353 1412
+974 1385
+1034 1422
+328 1338
+1090 1059
+1154 1418
+1357 1417
+1294 1316
+243 1390
+707 1420
+1380 937
+1409 526
+1422 761
+1191 1263
+528 1210
+1366 22
+1417 1386
+1157 1417
+506 1286
+1409 797
+1409 1265
+574 1420
+1285 1111
+1368 1410
+1258 1179
+1421 268
+653 1413
+773 1386
+1389 103
+1420 483
+1413 478
+1278 984
+1420 703
+1422 1212
+1406 209
+1048 1421
+1422 985
+835 1315
+1391 1422
+1422 656
+1419 1040
+1141 502
+1422 42
+1360 1416
+270 1162
+794 1420
+1345 1419
+772 1421
+1420 682
+978 1410
+614 1396
+1418 695
+622 1376
+1367 1415
+1411 184
+132 1374
+1007 1419
+1412 1371
+1257 172
+1348 1347
+1422 1081
+320 1409
+466 1370
+899 1421
+1419 1201
+1416 1088
+1417 744
+1421 633
+464 412
+1367 1321
+819 1420
+917 1357
+839 1413
+1322 1412
+1404 1224
+393 1422
+1369 1328
+992 1409
+404 1316
+1420 529
+1321 397
+1421 533
+929 1383
+1119 1417
+1202 1414
+1069 1382
+1419 1202
+1407 1229
+1368 1178
+1200 685
+1383 1263
+1405 1218
+1355 1406
+881 1325
+267 1416
+1104 1273
+759 1420
+1308 1422
+154 1186
+1333 1382
+1408 919
+1260 1317
+1422 418
+1306 1414
+1401 1406
+1313 1369
+1165 1422
+1330 1045
+1411 625
+580 1277
+1420 904
+1416 503
+1395 992
+1000 1420
+1386 46
+324 1388
+1389 31
+1411 630
+1106 1407
+901 1348
+735 1160
+1418 93
+1421 1036
+1034 1420
+1420 136
+1285 820
+791 1418
+1391 971
+1326 754
+1397 1031
+583 1422
+394 1422
+708 1219
+1388 694
+211 1414
+1398 155
+1356 1412
+998 1402
+1225 1378
+716 1411
+1421 855
+649 1422
+1387 319
+1016 1422
+1422 621
+1417 1388
+704 1347
+1418 503
+1079 454
+1309 1313
+1377 1419
+1419 1098
+1239 1327
+1410 1383
+1402 1399
+1336 1266
+673 1422
+1283 1409
+646 1371
+1054 1060
+1399 1415
+1404 1344
+802 1352
+1195 1421
+1417 1349
+1421 311
+1409 198
+814 1274
+1398 995
+1419 632
+746 1421
+1292 90
+661 1416
+1317 1413
+1409 729
+1252 1377
+895 1389
+740 1419
+1414 1369
+1197 179
+898 1386
+1297 671
+107 1381
+866 1420
+1067 350
+656 585
+623 1422
+291 1422
+259 1422
+768 1354
+1308 521
+701 1388
+1343 1419
+1327 1419
+1421 1313
+929 1342
+1402 1047
+1418 578
+666 1422
+395 1407
+1326 1331
+1203 1223
+1231 1382
+1022 1417
+597 1415
+1207 1371
+719 1415
+491 1171
+1414 617
+1269 1394
+1418 407
+1338 1058
+1304 1307
+226 1403
+1404 1387
+1398 2
+1257 1082
+1388 26
+809 1421
+449 1268
+904 1416
+1418 1012
+766 1420
+1065 1411
+823 1393
+298 1420
+1417 1053
+707 1421
+1345 910
+1422 1324
+798 1390
+1420 743
+924 1380
+1013 1402
+1404 1000
+1306 574
+688 1402
+1337 1412
+1421 756
+462 1421
+1140 1345
+1421 49
+1311 1406
+1222 1276
+1375 435
+1323 624
+517 1380
+1417 451
+1422 310
+627 1371
+1304 1421
+1233 301
+1052 1397
+1422 544
+1417 1241
+1307 431
+1401 1410
+1395 1415
+1347 665
+1420 1087
+671 1411
+1332 1407
+1421 469
+1408 1279
+1421 1308
+173 1376
+1407 109
+1359 1212
+1374 1417
+1419 808
+1254 1408
+1329 746
+1181 1361
+1390 1417
+1345 528
+883 1388
+1411 1059
+1139 1071
+1129 1368
+1417 1358
+1391 1250
+817 1421
+542 1421
+455 1421
+658 1421
+1420 265
+1255 1370
+635 1421
+1190 1345
+837 1415
+1420 1024
+1403 322
+1406 1365
+1257 1420
+1421 779
+1421 456
+817 1418
+1418 842
+647 1418
+1181 1383
+861 1407
+383 1422
+1198 1413
+1415 430
+1335 1233
+399 1408
+1259 1387
+1014 968
+117 1319
+942 1356
+1410 1387
+1334 552
+1422 826
+1118 1397
+428 1391
+1375 231
+1417 1293
+1408 1189
+1169 1392
+1410 1380
+1406 1220
+1002 1228
+235 1329
+581 1420
+761 995
+1396 398
+598 1407
+962 1422
+1269 1281
+1396 1247
+1399 1406
+1340 877
+1320 482
+1246 1382
+1406 1231
+1420 990
+417 1388
+998 1422
+579 1421
+1328 1208
+697 1420
+1417 1103
+1372 1404
+286 1421
+1002 1350
+1405 104
+1421 1323
+991 1389
+1399 1413
+1032 1282
+1417 844
+1355 1267
+1291 131
+1026 1386
+1422 475
+858 1330
+867 1156
+649 1402
+1419 1321
+1109 1232
+602 513
+1196 1314
+1397 1231
+472 113
+72 1364
+1044 960
+1398 441
+1421 870
+1412 1375
+1255 815
+1244 1096
+1404 1375
+1335 1414
+1405 1329
+1420 433
+1338 1419
+1124 1350
+400 1420
+701 1403
+1344 337
+1412 1324
+831 1319
+1314 1419
+1415 396
+1020 1368
+1294 1174
+531 1355
+1305 1418
+736 1403
+1405 1384
+722 1398
+40 1359
+1419 1063
+1022 1419
+1418 123
+896 1420
+588 1396
+1354 807
+872 1312
+1249 1324
+1419 1369
+1413 1283
+10 1422
+681 1421
+1359 274
+1081 396
+1422 953
+1409 1143
+1422 1354
+1419 1384
+1419 1073
+1418 1401
+473 1393
+1244 1388
+1076 1420
+1028 1167
+1421 960
+950 1419
+1320 1417
+842 602
+1418 738
+1418 592
+1228 916
+416 1360
+1030 1405
+1121 1385
+555 1422
+1072 1111
+156 1409
+1021 1420
+1353 1376
+1392 496
+1211 1290
+1323 1414
+246 1355
+1392 811
+1281 1418
+840 1420
+1410 1333
+920 1420
+1406 1258
+1420 364
+1419 1218
+1056 1422
+1420 1120
+390 1368
+728 1421
+1417 162
+551 1326
+1420 44
+1408 1277
+1421 726
+1183 1411
+1344 530
+1242 1414
+1185 1394
+119 1318
+1375 1073
+1384 423
+1397 844
+1389 1294
+1363 1352
+1376 413
+1173 1415
+1421 554
+1413 734
+1417 7
+1405 1388
+1017 1422
+1267 547
+1404 1337
+1392 1240
+1409 931
+1265 1416
+1378 356
+1206 1416
+1411 251
+1418 1069
+1421 596
+1288 1417
+1409 149
+1422 284
+436 1413
+717 1422
+30 1391
+1159 1387
+1418 847
+683 1366
+1131 1396
+86 1407
+1421 643
+1204 1085
+338 1420
+430 434
+1402 636
+1362 1414
+403 1083
+1275 1417
+1395 229
+1176 1420
+1420 485
+159 1419
+1033 1194
+1227 1356
+1390 1246
+169 1385
+1409 804
+1422 1126
+753 1420
+1256 552
+1422 341
+1196 1419
+972 1284
+1287 880
+1404 1217
+1422 1304
+1038 1422
+1280 373
+1419 1232
+1255 1414
+936 1388
+1331 1091
+883 1411
+187 1107
+862 1411
+1275 1398
+1406 1142
+1347 1412
+909 1339
+1277 1379
+1420 201
+1288 389
+1008 1341
+1016 1418
+1366 1227
+575 1415
+1416 424
+928 1264
+1124 1419
+1410 1092
+1257 1275
+1184 1388
+1421 473
+1340 865
+1355 1421
+1420 678
+152 1284
+810 1422
+1245 1219
+1415 1179
+1414 1394
+1219 1384
+1421 1064
+126 648
+753 1396
+1418 800
+557 1419
+1330 525
+1368 1412
+1417 1123
+1109 1108
+1087 1301
+917 1393
+1339 1376
+1410 1399
+460 1279
+940 1420
+1422 1178
+105 1325
+1406 1339
+1405 1354
+1380 348
+1275 1393
+1347 668
+1364 1177
+1417 1332
+1357 1410
+1348 1192
+1372 1381
+635 1422
+1220 1421
+1412 1386
+1421 949
+1412 1202
+1243 129
+966 1408
+1416 675
+1420 398
+1086 1381
+1354 1418
+1418 1265
+1384 1214
+1391 1096
+1405 1322
+1292 1418
+1222 1378
+1252 1393
+1406 1266
+1416 548
+1339 1416
+1367 1288
+1410 1371
+985 1407
+1421 431
+1117 1422
+305 1327
+1211 1419
+1205 805
+1271 1159
+1377 941
+1369 1410
+900 1399
+1154 1422
+1407 495
+890 1421
+1409 566
+1415 1351
+1338 1414
+1404 1313
+1414 1382
+1401 1415
+1313 1296
+949 1373
+584 1421
+1418 174
+59 1413
+1236 1346
+908 1386
+1078 1393
+1318 1414
+1395 603
+1422 550
+1377 1333
+699 1360
+1099 1413
+1380 1309
+1287 1203
+1394 21
+634 1411
+1418 1204
+1420 1194
+1031 1351
+303 1369
+1410 1384
+476 1420
+1381 1249
+1370 599
+1245 407
+1416 1269
+78 1408
+1422 747
+677 1415
+1341 1420
+1422 920
+1413 879
+1400 1412
+415 1335
+522 1354
+47 1412
+515 1419
+1006 1422
+1394 1412
+991 1390
+6 1420
+750 1330
+1300 410
+560 1360
+1418 712
+37 1421
+1055 1294
+1413 463
+1223 1389
+1260 1261
+1396 97
+1259 1380
+1370 1405
+875 1354
+1393 631
+438 1418
+1393 966
+1217 1418
+1410 1103
+1292 1152
+100 1274
+1420 1082
+1079 1415
+957 1421
+863 1348
+1101 1081
+1058 287
+645 1421
+1215 17
+1422 1331
+1421 1336
+1237 1417
+1236 1248
+1164 1372
+1032 1418
+1288 69
+1420 915
+203 1375
+1329 1276
+1408 1305
+544 1415
+1041 1416
+1421 639
+1419 840
+1392 1414
+1422 1166
+730 599
+1262 1417
+770 1206
+1418 392
+1271 1419
+1004 1421
+1422 1076
+692 1417
+1420 1400
+1196 1393
+1418 848
+1422 1299
+1241 1363
+918 1296
+410 1422
+1407 645
+1380 1406
+108 1420
+1359 1415
+1360 505
+1390 1127
+1199 453
+983 1420
+993 1409
+1384 1414
+454 1420
+1402 489
+1347 1410
+1379 1097
+1165 1421
+1199 1413
+1327 1192
+893 1422
+548 1422
+1372 518
+1033 1377
+151 1357
+1074 1402
+1378 1061
+1184 1419
+1396 554
+1309 1144
+1408 1117
+1318 1421
+993 1394
+1256 1415
+975 1420
+776 1421
+595 1422
+1059 1386
+1086 538
+277 1335
+727 1418
+1307 158
+1397 498
+1005 1328
+1386 1256
+887 1316
+1071 1363
+1404 1106
+41 1350
+1133 1416
+1409 551
+1421 316
+854 1420
+1419 1264
+221 1420
+948 1418
+67 1271
+1411 106
+1329 1037
+1001 1422
+1292 1143
+1397 846
+290 1361
+1357 723
+294 1326
+1394 741
+1390 427
+1371 1198
+435 1416
+1418 82
+1308 550
+1270 375
+1398 1044
+1414 1331
+1414 1258
+683 1324
+1362 329
+1312 19
+609 1421
+1314 1362
+1189 1310
+1356 1410
+596 1381
+336 1366
+1310 1191
+1408 1080
+1100 1372
+1389 1079
+1224 1421
+994 1353
+1125 1418
+1421 647
+816 1279
+1315 75
+1008 1367
+1420 1201
+1049 147
+45 1422
+494 1421
+716 1394
+925 1352
+923 801
+1336 81
+1351 249
+1394 1327
+1415 1219
+1267 1363
+1333 1413
+1238 1415
+1422 978
+1232 1354
+9 1422
+1186 1420
+1370 710
+1335 655
+176 1422
+331 1420
+1421 245
+1321 553
+516 1418
+1420 317
+1304 60
+1405 1399
+1300 534
+1265 549
+1342 558
+1403 1218
+1192 1230
+1422 479
+1310 1332
+1116 615
+1419 1074
+1413 567
+1272 1234
+1334 1420
+1421 238
+924 1405
+128 1422
+1365 262
+537 1420
+120 1411
+1422 1158
+165 1418
+1341 1422
+1123 1418
+1398 652
+1136 1315
+1298 1373
+989 1395
+1410 1381
+1382 122
+378 1420
+1340 458
+517 1276
+250 1422
+811 1415
+467 1347
+514 1390
+1411 1111
+1299 652
+1113 1396
+1419 1288
+1390 429
+447 1383
+488 1095
+1398 684
+1420 706
+1408 1401
+1291 421
+1397 440
+428 1421
+1358 1385
+921 1420
+964 1264
+1113 607
+530 1345
+742 1390
+1091 1356
+748 1413
+1196 1365
+1419 845
+958 1422
+1385 183
+835 1421
+1290 1328
+1404 1401
+860 1420
+1422 1251
+1295 501
+133 1390
+1416 1198
+903 1422
+1387 695
+1390 933
+1420 558
+1420 217
+1422 782
+84 1344
+1365 1414
+1193 1377
+1411 500
+388 1378
+1357 1373
+1329 1406
+1237 1201
+1418 52
+1338 386
+1422 426
+1335 1061
+1420 1304
+520 1349
+1366 1359
+1395 698
+1419 390
+905 1413
+1382 577
+1420 690
+11 1409
+1413 914
+1307 1386
+1390 1410
+1395 1416
+980 1122
+1264 1422
+1391 1259
+767 1063
+1412 1378
+1416 853
+1410 1392
+674 1357
+1239 624
+1420 1101
+1417 535
+1414 1297
+1337 1415
+1010 1383
+1401 1390
+1104 1388
+1370 170
+1384 1116
+1387 1172
+1422 1131
+1412 1325
+1398 1305
+1361 662
+1418 1174
+1090 1420
+1421 1344
+654 774
+1405 1383
+641 1422
+1113 1388
+102 1319
+1214 1410
+422 1417
+1367 774
+1337 1286
+1190 1422
+314 1340
+1417 1381
+458 1121
+894 1422
+1392 1412
+1337 1302
+667 1421
+1243 1209
+860 1407
+626 1361
+1308 1036
+1216 1415
+1406 1400
+663 1422
+1412 1390
+1421 1119
+1422 576
+1420 399
+1208 1408
+1362 1422
+1327 1253
+12 1083
+1378 28
+77 1378
+1399 1412
+1341 1349
+1396 657
+1233 1418
+1412 1367
+1207 1380
+1405 413
+1422 798
+1422 1229
+1413 1226
+1410 1312
+1387 789
+780 1382
+1377 791
+1422 272
+494 1422
+1422 490
+177 1308
+1299 1413
+478 1414
+256 1420
+424 1422
+611 1422
+380 1369
+1188 1148
+1018 1418
+292 1288
+1382 1304
+1397 253
+1327 406
+1 1330
+876 1361
+559 1409
+1413 921
+1403 1137
+996 1371
+874 1394
+1333 977
+598 642
+1416 1401
+1303 762
+1412 1366
+1392 944
+1172 1420
+1365 532
+954 1417
+663 1394
+1403 1210
+1404 1399
+869 1422
+276 1349
+1137 764
+116 1400
+1413 1167
+468 1420
+704 1393
+1363 841
+542 1413
+432 1422
+1420 96
+1302 164
+1407 891
+419 1387
+941 1422
+1422 850
+1405 1347
+914 1289
+1419 882
+1372 280
+1388 1102
+1105 1416
+1040 1317
+1049 1380
+1277 1309
+1420 545
+1376 1209
+1406 1385
+271 1422
+1133 751
+1136 1418
+1422 1204
+646 1414
+423 1417
+1047 1408
+153 1305
+1140 1381
+943 1422
+1422 851
+1390 511
+1336 175
+1395 1251
+1415 628
+92 1422
+1399 1403
+1338 54
+1422 759
+1420 747
+1419 1301
+1420 1264
+1417 343
+1410 1366
+1272 1243
+789 1369
+1144 1418
+1408 970
+1405 1367
+1387 1228
+1418 660
+1422 1107
+1213 395
+1177 1374
+878 1370
+957 1420
+1422 240
+1108 1025
+1420 672
+1148 1337
+450 536
+112 1420
+1419 135
+206 1315
+1414 241
+1402 1102
+1416 448
+1287 1421
+392 1407
+802 1376
+1010 1312
+1281 1297
+1156 1138
+1408 1400
+825 1421
+913 1422
+1408 1046
+1420 675
+1377 308
+1151 1389
+1128 1373
+1414 1372
+525 1295
+493 1373
+1220 1393
+1415 150
+871 1388
+1422 997
+738 881
+1396 334
+421 643
+559 1422
+1260 1422
+1389 1312
+737 1383
+506 1132
+1373 1216
+524 1417
+1382 1419
+1422 1051
+1394 715
+1411 469
+1235 1416
+1268 1421
+1088 1389
+1337 1205
+1302 1420
+956 644
+1418 1141
+1381 1050
+526 1415
+1419 1093
+1386 1317
+969 1369
+1412 1293
+1404 1355
+0 1421
+1379 711
+1413 1149
+99 1422
+1384 509
+1412 180
+662 1422
+1417 1319
+1412 1383
+1421 555
+1397 57
+1351 1089
+1363 1416
+918 1402
+1420 610
+1420 1164
+888 1394
+1406 1376
+952 1422
+1320 1393
+1244 927
+1041 1240
+1412 1377
+1273 1341
+1173 1373
+1395 1273
+1420 882
+1420 720
+1398 14
+1064 1416
+1379 1134
+130 1419
+1042 1408
+1421 875
+932 1420
+1421 234
+1378 443
+1414 1376
+1422 511
+1422 1094
+1360 1412
+374 1117
+1419 1126
+1313 1408
+1284 1078
+909 1384
+893 749
+1404 470
+1240 450
+852 1422
+1093 1413
+1421 706
+365 1422
+876 1384
+1283 1090
+1380 1414
+1419 608
+1421 536
+1415 95
+1407 1399
+1225 369
+1387 827
+1364 285
+1422 676
+510 1328
+457 1385
+1422 1095
+1422 1054
+1296 1420
+1418 1251
+1360 1280
+1391 871
+1329 1414
+1368 1414
+937 1415
+1386 961
+387 1418
+167 1419
+1121 859
+1175 1416
+1420 1068
+1405 1362
+644 1421
+776 1388
+1279 163
+1415 282
+762 1422
+504 1413
+381 1387
+1385 168
+1422 988
+1356 344
+1268 1267
+1415 1133
+1412 1401
+1421 788
+1399 1419
+1407 705
+1421 1258
+676 1420
+1253 1405
+1412 1040
+718 1421
+803 1372
+455 1422
+1414 795
+799 1422
+1422 884
+1421 1248
+740 1355
+1415 1331
+963 1254
+207 1394
+1412 1382
+973 1320
+446 1421
+1420 1399
+1225 748
+1422 1050
+1416 1379
+755 1420
+737 1388
+1377 471
+1416 968
+1421 1359
+1414 1400
+461 1422
+1421 1400
+1404 1363
+1402 562
+565 1376
+650 1416
+1025 1421
+1410 1394
+866 1403
+1402 692
+863 1417
+1406 1388
+302 1417
+1404 1361
+1142 1394
+1065 1120
+1419 419
+586 902
+1420 1143
+1208 1419
+1281 1273
+604 1420
+1415 1068
+1421 486
+254 1392
+1422 606
+608 1358
+36 1421
+1314 500
+1418 524
+1414 1361
+1422 296
+987 1391
+1409 1187
+1379 468
+1405 1379
+1149 1417
+955 1421
+1290 1357
+591 1394
+1365 1189
+1193 613
+1414 442
+1419 1067
+611 771
+1421 1028
+1413 812
+1148 1403
+1417 616
+1177 1421
+1356 1405
+1072 1367
+1168 1388
+1230 1318
+1397 1261
+1349 1108
+910 1421
+549 1384
+481 1387
+1412 739
+1420 1183
+1283 1379
+1383 1353
+1397 101
+838 1421
+1414 1019
+1340 588
+1195 1352
+1411 429
+145 1416
+1332 1099
+1420 1060
+1387 283
+1383 837
+1380 1412
+1421 564
+1412 1393
+1414 1315
+693 1418
+824 1384
+1418 514
+1317 1210
+1421 523
+1419 668
+236 1371
+1221 1236
+839 1375
+1316 1317
+489 1215
+1369 669
+1402 1084
+1337 1370
+1405 1373
+1364 288
+827 1418
+1396 5
+327 1368
+1371 629
+1392 1282
+790 1416
+951 1421
+864 1370
+1407 1286
+1389 767
+345 1272
+822 1419
+1422 775
+1334 397
+1379 1410
+453 1407
+1368 1416
+1367 257
+1377 437
+1053 1419
+1385 745
+1362 1419
+655 1412
+1127 1368
+1417 543
+1012 1408
+1404 1151
+1418 730
+1419 648
+487 1422
+1349 357
+1330 1298
+1416 1225
+1106 1421
+1351 527
+1415 1183
+834 1295
+1411 55
+1421 1394
+1417 137
+665 35
+1417 1271
+1419 1242
+1253 1376
+1416 1015
+1253 1418
+568 1417
+1114 1422
+406 1403
+638 1393
+1420 484
+930 946
+713 1412
+124 1380
+247 1418
+401 1422
+1271 666
+1408 389
+1356 1369
+125 1279
+1297 157
+1422 1170
+1417 388
+1374 1270
+1282 1302
+1410 1263
+1399 1421
+1420 952
+1419 452
+1386 355
+1422 541
+1420 587
+1386 24
+1418 233
+1421 1234
+1396 1212
+1410 1362
+1418 563
+228 1406
+1419 414
+1386 1286
+1406 479
+1420 999
+1320 1412
+1385 1062
+1161 1421
+462 1422
+1413 1266
+1324 758
+140 1421
+1163 1367
+1419 1190
+1422 486
+1420 886
+698 1422
+1422 755
+591 1409
+523 1354
+32 1379
+687 1389
+1405 1335
+1421 650
+1418 1256
+1421 1150
+190 1393
+1421 146
+1419 1283
+1402 1400
+1420 1313
+1311 1070
+1389 824
+1421 1043
+1418 62
+1085 1390
+1236 1394
+1421 193
+1418 763
+1417 640
+1377 1416
+391 1422
+1420 911
+1146 502
+616 1346
+922 1418
+1422 434
+1114 1322
+1422 1296
+1416 1372
+1348 1162
+1415 1400
+1414 1391
+1412 1349
+1417 1338
+1385 71
+1410 1340
+1407 1075
+1411 1115
+142 1197
+865 1420
+1234 1420
+1421 1330
+1094 1336
+797 1413
+543 1418
+1418 467
+712 1406
+1381 1364
+1409 1400
+1282 1389
+83 1422
+739 1422
+1392 1070
+1356 1399
+1098 1290
+1406 1348
+1382 1269
+936 1409
+534 1390
+1299 1421
+269 461
+1191 1408
+1052 1391
+1332 1325
+1392 43
+623 412
+1405 1207
+672 1422
+1146 859
+1367 1414
+1403 697
+849 1323
+1402 988
+830 1411
+1420 1136
+1420 757
+1075 1420
+1419 1071
+1378 537
+1407 529
+745 1420
+862 1396
+1411 497
+1422 1139
+1314 1394
+1409 1165
+984 619
+1409 788
+1387 1110
+926 1391
+1140 1419
+200 1419
+626 1422
+64 1419
+1281 679
+1348 580
+260 1280
+793 1074
+1410 1285
+1345 1418
+1389 777
+1416 1386
+1417 1240
+1250 1408
+1381 315
+1418 888
+1418 593
+188 1419
+1153 1345
+1420 1077
+1408 1172
+1407 807
+962 1411
+1421 1401
+723 1179
+1362 1155
+1272 1415
+1316 1420
+1291 1246
+326 1360
+693 1421
+1278 1422
+845 1422
+617 1286
+1422 756
+353 1292
+1419 1289
+1363 1345
+1318 724
+1381 519
+864 1422
+1409 76
+684 1274
+1422 1210
+313 1416
+1422 1082
+634 1370
+1422 1231
+1408 1112
+689 1420
+1176 1418
+1309 1406
+953 1418
+404 1419
+1420 1005
+1315 1239
+360 1422
+1419 1401
+323 1419
+1224 1414
+700 1422
+1028 1409
+1363 1421
+1382 595
+1421 614
+1375 719
+1420 1157
+1422 1182
+1422 872
+1391 8
+1200 1419
+420 1386
+1346 1343
+1343 1422
+1222 613
+141 1322
+1265 1384
+1415 1039
+1416 1319
+708 1416
+1412 1339
+1408 465
+452 1418
+1419 1339
+1397 504
+1410 1400
+1027 1391
+1420 796
+1405 1400
+1422 545
+808 1422
+1284 540
+1367 590
+1417 1038
+1420 942
+1415 1125
+1421 66
+1389 843
+443 1420
+721 1418
+1421 783
+1415 457
+1351 1419
+1406 967
+1414 867
+1410 1374
+1147 1318
+1420 1003
+765 1422
+1159 1422
+622 1420
+1417 938
+1420 1256
+1358 750
+1317 814
+1412 1280
+1341 1406
+472 1334
+1411 295
+642 1409
+118 597
+1421 519
+1413 1119
+1418 696
+606 1403
+160 1421
+1344 805
+1405 806
+244 1393
+1213 222
+1275 1420
+1422 23
+1417 982
+1406 1394
+1343 1312
+252 1386
+1422 568
+1420 751
+1409 900
+1418 813
+1412 1370
+1320 232
+1383 1180
+411 1418
+1209 1324
+1419 1393
+1376 1400
+1377 1301
+1411 400
+627 1408
+1405 1341
+1389 293
+1406 1381
+1422 510
+1359 1295
+1348 1381
+1254 1419
+1422 1137
+792 1420
+1378 654
+1352 38
+1408 612
+1422 615
+535 1421
+1347 1415
+1419 1155
+1154 1332
+248 1418
+1075 1422
+1410 465
+1408 242
+1014 1351
+1417 342
+1422 836
+1421 1162
+1421 799
+1387 1421
+1418 426
+1019 1422
+1410 1220
+843 1305
+1197 1411
+1374 1053
+571 1413
+1342 1319
+1385 1355
+1409 333
+1403 1276
+1374 1422
+1338 935
+1408 1399
+539 1413
+980 1421
+225 1175
+512 1336
+1346 913
+1125 1380
+1422 1400
+934 1411
+1384 589
+1352 1413
+1214 1421
+1418 562
+1374 1214
+959 1420
+516 1394
+1242 215
+1104 1373
+1422 1152
+547 1422
+499 1411
+709 1422
+1422 898
+1381 700
+1385 1166
+1362 415
+1420 186
+681 1316
+441 1289
+1417 781
+770 1420
+880 1230
+1421 694
+1414 1036
+1416 890
+1421 1237
+959 1387
+1235 1342
+1403 787
+1389 53
+134 1373
+609 1413
+1385 196
+490 1409
+444 1380
+1420 930
+1420 1238
+925 1419
+1420 1187
+1323 1412
+1350 445
+1186 1421
+1421 522
+527 1178
+832 690
+1418 584
+775 1394
+1150 1422
+818 1407
+1416 1099
+1422 1202
+1334 749
+1411 711
+1422 192
+1421 943
+1407 618
+1407 575
+1406 1110
+780 1326
+1285 887
+1033 1418
+1412 1384
+1142 1422
+830 437
+191 1410
+878 1371
+1404 1391
+1422 795
+1411 1241
+1421 1138
+1404 1379
+1376 1115
+1375 669
+1379 1188
+1407 1164
+1417 74
+620 1403
+50 1346
+1171 1400
+273 1418
+501 1419
+1049 1384
+520 1402
+832 1342
+786 1415
+1419 1378
+1303 1294
+664 1422
+507 1394
+782 1407
+1072 1349
+377 1422
+1411 933
+769 1409
+1416 425
+1092 1418
+819 981
+1422 581
+1420 868
+1412 1373
+480 1118
+757 1416
+1422 1064
+1359 1046
+641 1393
+600 1420
+1402 997
+1403 1035
+1421 891
+1377 199
+691 1161
+979 1422
+1211 633
+1410 1307
+1422 702
+1419 869
+1403 178
+1362 1088
+1422 1167
+1417 1235
+1402 922
+1419 1387
+1421 760
+1356 638
+1066 1403
+1230 1420
+111 1420
+1038 1282
+370 1384
+928 1322
+1360 1333
+205 1402
+1359 25
+1298 1100
+686 1416
+533 1243
+947 1419
+800 1422
+347 1331
+1365 1321
+1407 687
+1406 1373
+703 1322
+1180 1029
+1206 1420
+1421 394
+1419 560
+299 1311
+1415 699
+349 1034
+1422 1226
+1420 451
+946 1334
+1422 1023
+1351 1416
+1211 1421
+1420 1401
+766 1367
+1306 540
+1407 1309
+1331 1052
+278 1422
+846 1262
+1422 1215
+1420 908
+1410 792
+1422 577
+1017 1310
+1420 903
+1422 974
+1247 850
+1411 1285
+1373 1419
+1298 752
+1419 1056
+1272 1422
+1334 115
+1416 508
+1130 1418
+1421 304
+1410 1325
+1416 1300
+1411 857
+1409 576
+1403 906
+1415 1379
+1421 1116
+1383 557
+702 1332
+967 1403
+1419 1259
+940 1413
+1326 1173
+1420 724
+1415 1255
+667 1187
+1193 1102
+354 1343
+541 1371
+1373 731
+1411 1004
+1421 279
+821 1127
+1420 1163
+1350 1112
+1418 858
+742 1421
+889 1422
+1381 1414
+1408 1035
+1370 1238
+1422 214
+1419 1152
+1020 1420
+561 1418
+1418 912
+1413 1401
+1418 447
+1420 945
+1422 1258
+1006 1419
+1422 1089
+1201 1027
+470 459
+1412 1342
+1355 513
+790 1411
+1371 1422
+98 1368
+1353 1419
+1415 1103
+1138 1420
+1141 1391
+1213 1198
+1420 475
+1422 1319
+1297 1342
+1417 1192
+48 982
+382 1287
+1422 938
+1415 474
+1420 1298
+1379 1339
+709 1421
+1391 856
+717 1366
+521 1422
+1417 1303
+1244 1407
+836 1263
+1420 1241
+281 1393
+1416 4
+1402 63
+1404 1328
+1415 1045
+1403 79
+1383 88
+405 1420
+1357 1151
+1422 786
+1422 565
+1421 1129
+1420 409
+1254 1306
+1301 538
+515 1366
+592 1422
+1421 239
+1130 1421
+1415 1200
+556 1422
+1422 1399
+1414 923
+721 970
+1223 1070
+1015 1394
+1353 772
+1024 1278
+1421 213
+1168 1407
+1419 1334
+556 1411
+734 1420
+371 1413
+1207 1420
+456 1419
+1420 1363
+1411 1057
+1407 497
+1421 1228
+1406 1369
+1411 1401
+1413 932
+1411 275
+1409 1401
+1365 1043
+1364 1047
+1168 1420
+1422 726
+1418 1399
+1418 1318
+1419 826
+1372 976
+1410 1343
+1330 1350
+784 1410
+620 1208
+1080 1239
+1418 963
+223 1415
+1422 70
+1409 916
+1413 1122
+1413 856
+351 1420
+1420 1347
+1379 1414
+1413 352
+1422 1080
+1364 1422
+1422 417
+583 572
+1420 912
+768 1391
+1413 582
+1418 1030
+1415 906
+263 1422
+1421 965
+1420 579
+420 1422
+1346 1128
+1422 408
+1420 763
+781 1420
+1413 1251
+1301 1378
+1037 1417
+1421 934
+1417 1400
+1420 512
+760 1411
+1422 1073
+1416 1217
+1413 218
+1415 1009
+1411 197
+1153 1422
+1410 733
+1344 1263
+1415 491
+820 1420
+720 1421
+1420 402
+710 1363
+1422 896
+1421 1226
+1414 1029
+1411 65
+1420 977
+1402 852
+312 1421
+1157 1043
+1421 509
+1353 732
+1416 1332
+1346 1180
+1421 1331
+659 1411
+1419 1023
+1420 677
+1353 3
+1349 143
+1420 1270
+1342 485
+1421 1169
+1420 1267
+1409 1135
+935 1260
+601 1341
+1402 825
+1421 408
+1420 376
+1422 1274
+1407 309
+1418 1276
+325 1292
+1419 964
+1378 990
+1414 1195
+1402 809
+204 1354
+945 1422
+1420 727
+1422 1029
+1403 573
+1422 1401
+1422 629
+1421 873
+1197 1343
+1409 897
+1419 1323
+1422 899
+405 1421
+1421 1086
+1403 879
+1407 1087
+1407 573
+367 1421
+1357 664
+1407 1169
+1339 171
+496 972
+1421 594
+1421 68
+1418 812
+1403 1400
+1409 1237
+1421 1094
+1419 448
+1413 425
+1421 1194
+1403 1001
+1278 861
+1421 578
+1422 818
+1146 1420
+1266 1344
+1420 1249
+1411 1400
+1358 1238
+1422 603
+829 1422
+1418 926
+1421 1058
+1422 161
+1422 1222
+1420 653
+1366 1336
+1402 779
+1371 1414
+1421 1054
+1421 1274
+1364 1324
+754 1391
+1339 636
+1420 1048
+361 785
+436 1130
+1351 1077
+1420 793
+1421 1182
+1421 476
+1411 585
+1421 582
+1268 1190
+1412 1365
+1422 34
+1421 854
+1422 919
+1421 765
+1421 911
+1336 1026
+1421 685
+1324 816
+1297 600
+1421 777
+1421 979
+1343 297
+1385 674
+1410 1336
+1291 1343
+471 1390
+1248 1340
+1307 330
+1365 831
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/topology-read/topology-example-sim.cc	Fri Mar 12 14:36:38 2010 -0500
@@ -0,0 +1,208 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Tommaso Pecorella <tommaso.pecorella@unifi.it>
+ * Author: Valerio Sartini <valesar@gmail.com>
+ *
+ * This program conducts a simple experiment: It builds up a topology based on
+ * either Inet or Orbis trace files. A random node is then chosen, and all the
+ * other nodes will send a packet to it. The TTL is measured and reported as an histogram.
+ *
+ */
+
+#include <ctime>
+
+#include <sstream>
+
+#include "ns3/core-module.h"
+#include "ns3/common-module.h"
+#include "ns3/node-module.h"
+#include "ns3/helper-module.h"
+#include "ns3/simulator-module.h"
+
+#include "ns3/topology-read-module.h"
+#include <list>
+
+using namespace ns3;
+using namespace std;
+
+NS_LOG_COMPONENT_DEFINE ("TopologyCreationExperiment");
+
+
+static list<unsigned int> data;
+
+static void SinkRx (Ptr<const Packet> p, const Address &ad)
+{
+  Ipv4Header ipv4;
+  p->PeekHeader (ipv4);
+  std::cout << "TTL: " << (unsigned)ipv4.GetTtl () << std::endl;
+}
+
+
+// ----------------------------------------------------------------------
+// -- main
+// ----------------------------------------------
+int main (int argc, char *argv[])
+{
+
+  string format ("Inet");
+  string input ("examples/topology-read/Inet_small_toposample.txt");
+
+  // Set up command line parameters used to control the experiment.
+  CommandLine cmd;
+  cmd.AddValue ("format", "Format to use for data input [Orbis|Inet].",
+                format);
+  cmd.AddValue ("input", "Name of the input file.",
+                input);
+  cmd.Parse (argc, argv);
+
+
+  // ------------------------------------------------------------
+  // -- Read topology data.
+  // --------------------------------------------
+
+  // Pick a topology reader based in the requested format.
+
+  Ptr<TopologyReader> inFile = 0;
+  TopologyReaderHelper topoHelp;
+  
+  NodeContainer nodes;
+  
+  topoHelp.SetFileName(input);
+  topoHelp.SetFileType(format);
+  inFile = topoHelp.GetTopologyReader();
+
+  if (inFile != 0)
+    {
+      nodes = inFile->Read ();
+    }
+
+  if (inFile->LinksSize () == 0)
+    {
+      NS_LOG_ERROR ("Problems reading the topology file. Failing.");
+      return -1;
+    }
+
+  // ------------------------------------------------------------
+  // -- Create nodes and network stacks
+  // --------------------------------------------
+  NS_LOG_INFO ("creating internet stack");
+  InternetStackHelper stack;
+
+  // Setup NixVector Routing
+  Ipv4NixVectorHelper nixRouting;
+  Ipv4StaticRoutingHelper staticRouting;
+
+  Ipv4ListRoutingHelper listRH;
+  listRH.Add (staticRouting, 0);
+  listRH.Add (nixRouting, 10);
+
+  stack.SetRoutingHelper (listRH);
+  stack.Install (nodes);
+
+  NS_LOG_INFO ("creating ip4 addresses");
+  Ipv4AddressHelper address;
+  address.SetBase ("10.0.0.0", "255.255.255.252");
+
+  int totlinks = inFile->LinksSize ();
+
+  NS_LOG_INFO ("creating node containers");
+  NodeContainer nc[totlinks];
+  TopologyReader::ConstLinksIterator iter;
+  int i = 0;
+  for ( iter = inFile->LinksBegin (); iter != inFile->LinksEnd (); iter++, i++ )
+    {
+      nc[i] = NodeContainer (iter->GetFromNode (), iter->GetToNode ());
+    }
+
+  NS_LOG_INFO ("creating net device containers");
+  NetDeviceContainer ndc[totlinks];
+  PointToPointHelper p2p;
+  for (int i = 0; i < totlinks; i++)
+    {
+      // p2p.SetChannelAttribute ("Delay", TimeValue(MilliSeconds(weight[i])));
+      p2p.SetChannelAttribute ("Delay", StringValue ("2ms"));
+      p2p.SetDeviceAttribute ("DataRate", StringValue ("5Mbps"));
+      ndc[i] = p2p.Install (nc[i]);
+    }
+
+  // it crates little subnets, one for each couple of nodes.
+  NS_LOG_INFO ("creating ipv4 interfaces");
+  Ipv4InterfaceContainer ipic[totlinks];
+  for (int i = 0; i < totlinks; i++)
+    {
+      ipic[i] = address.Assign (ndc[i]);
+      address.NewNetwork ();
+    }
+
+
+  uint32_t totalNodes = nodes.GetN ();
+  UniformVariable unifRandom (0, totalNodes - 1);
+
+  unsigned int randomServerNumber = unifRandom.GetInteger (0, totalNodes - 1);
+
+  Ptr<Node> randomServerNode = nodes.Get (randomServerNumber);
+  Ptr<Ipv4> ipv4Server = randomServerNode->GetObject<Ipv4> ();
+  Ipv4InterfaceAddress iaddrServer = ipv4Server->GetAddress (1,0);
+  Ipv4Address ipv4AddrServer = iaddrServer.GetLocal ();
+
+  // ------------------------------------------------------------
+  // -- Send around packets to check the ttl
+  // --------------------------------------------
+  Config::SetDefault ("ns3::Ipv4RawSocketImpl::Protocol", StringValue ("2"));
+  InetSocketAddress dst = InetSocketAddress ( ipv4AddrServer );
+
+  OnOffHelper onoff = OnOffHelper ("ns3::Ipv4RawSocketFactory", dst);
+  onoff.SetAttribute ("OnTime", RandomVariableValue (ConstantVariable (1.0)));
+  onoff.SetAttribute ("OffTime", RandomVariableValue (ConstantVariable (0.0)));
+  onoff.SetAttribute ("DataRate", DataRateValue (DataRate (15000)));
+  onoff.SetAttribute ("PacketSize", UintegerValue (1200));
+
+  NodeContainer clientNodes;
+  for ( unsigned int i = 0; i < nodes.GetN (); i++ )
+    {
+      if (i != randomServerNumber )
+        {
+          Ptr<Node> clientNode = nodes.Get (i);
+          clientNodes.Add (clientNode);
+        }
+    }
+
+  ApplicationContainer apps = onoff.Install (clientNodes);
+  apps.Start (Seconds (1.0));
+  apps.Stop (Seconds (2.0));
+
+  PacketSinkHelper sink = PacketSinkHelper ("ns3::Ipv4RawSocketFactory", dst);
+  apps = sink.Install (randomServerNode);
+  apps.Start (Seconds (0.0));
+  apps.Stop (Seconds (3.0));
+
+  // we trap the packet sink receiver to extract the TTL.
+  Config::ConnectWithoutContext ("/NodeList/*/ApplicationList/*/$ns3::PacketSink/Rx",
+                                 MakeCallback (&SinkRx));
+
+  // ------------------------------------------------------------
+  // -- Run the simulation
+  // --------------------------------------------
+  NS_LOG_INFO ("Run Simulation.");
+  Simulator::Run ();
+  Simulator::Destroy ();
+
+  NS_LOG_INFO ("Done.");
+
+  return 0;
+
+  // end main
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/topology-read/waf	Fri Mar 12 14:36:38 2010 -0500
@@ -0,0 +1,1 @@
+exec "`dirname "$0"`"/../../waf "$@"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/topology-read/wscript	Fri Mar 12 14:36:38 2010 -0500
@@ -0,0 +1,5 @@
+## -*- Mode: python; py-indent-offset: 4; indent-tabs-mode: nil; coding: utf-8; -*-
+
+def build(bld):
+    obj = bld.create_ns3_program('topology-read', ['topology-read', 'internet-stack'])
+    obj.source = 'topology-example-sim.cc'
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/contrib/topology-read/inet-topology-reader.cc	Fri Mar 12 14:36:38 2010 -0500
@@ -0,0 +1,140 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2010 Universita' di Firenze, Italy
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Tommaso Pecorella (tommaso.pecorella@unifi.it)
+ * Author: Valerio Sartini (Valesar@gmail.com)
+ */
+
+#include <fstream>
+#include <cstdlib>
+#include <sstream>
+
+#include "ns3/log.h"
+#include "inet-topology-reader.h"
+
+using namespace std;
+
+namespace ns3 {
+
+NS_LOG_COMPONENT_DEFINE ("InetTopologyReader");
+
+NS_OBJECT_ENSURE_REGISTERED (InetTopologyReader);
+
+TypeId InetTopologyReader::GetTypeId (void)
+{
+  static TypeId tid = TypeId ("ns3::InetTopologyReader")
+    .SetParent<Object> ()
+  ;
+  return tid;
+}
+
+InetTopologyReader::InetTopologyReader ()
+{
+  NS_LOG_FUNCTION (this);
+}
+
+InetTopologyReader::~InetTopologyReader ()
+{
+  NS_LOG_FUNCTION (this);
+}
+
+NodeContainer
+InetTopologyReader::Read (void)
+{
+  ifstream topgen;
+  topgen.open (GetFileName ().c_str ());
+  map<string, Ptr<Node> > nodeMap;
+  NodeContainer nodes;
+
+  if ( !topgen.is_open () )
+    {
+      return nodes;
+    }
+
+  string from;
+  string to;
+  string linkAttr;
+
+  int linksNumber = 0;
+  int nodesNumber = 0;
+
+  int totnode = 0;
+  int totlink = 0;
+
+  istringstream lineBuffer;
+  string line;
+
+  getline (topgen,line);
+  lineBuffer.str (line);
+
+  lineBuffer >> totnode;
+  lineBuffer >> totlink;
+  NS_LOG_INFO ("Inet topology should have " << totnode << " nodes and " << totlink << " links");
+
+  for (int i = 0; i <= totnode; i++)
+    {
+      getline (topgen,line);
+    }
+
+  for (int i = 0; i < totlink && !topgen.eof (); i++)
+    {
+      getline (topgen,line);
+      lineBuffer.clear ();
+      lineBuffer.str (line);
+
+      lineBuffer >> from;
+      lineBuffer >> to;
+      lineBuffer >> linkAttr;
+
+      if ( (!from.empty ()) && (!to.empty ()) )
+        {
+          NS_LOG_INFO ( linksNumber << " From: " << from << " to: " << to );
+
+          if ( nodeMap[from] == 0 )
+            {
+              Ptr<Node> tmpNode = CreateObject<Node> ();
+              nodeMap[from] = tmpNode;
+              nodes.Add (tmpNode);
+              nodesNumber++;
+            }
+
+          if (nodeMap[to] == 0)
+            {
+              Ptr<Node> tmpNode = CreateObject<Node> ();
+              nodeMap[to] = tmpNode;
+              nodes.Add (tmpNode);
+              nodesNumber++;
+            }
+
+          Link link ( nodeMap[from], from, nodeMap[to], to );
+          if ( !linkAttr.empty () )
+            {
+              link.SetAttribute ("Weight", linkAttr);
+            }
+          AddLink (link);
+
+          linksNumber++;
+        }
+    }
+
+  NS_LOG_INFO ("Inet topology created with " << nodesNumber << " nodes and " << linksNumber << " links");
+  topgen.close ();
+
+  return nodes;
+}
+
+} /* namespace ns3 */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/contrib/topology-read/inet-topology-reader.h	Fri Mar 12 14:36:38 2010 -0500
@@ -0,0 +1,76 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2010 Universita' di Firenze, Italy
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Tommaso Pecorella (tommaso.pecorella@unifi.it)
+ * Author: Valerio Sartini (valesar@gmail.com)
+ */
+
+#ifndef __INET_TOPOLOGY_READER_H__
+#define __INET_TOPOLOGY_READER_H__
+
+#include "ns3/nstime.h"
+
+#include "topology-reader.h"
+
+namespace ns3 {
+
+
+// ------------------------------------------------------------
+// --------------------------------------------
+/**
+ * \ingroup topology
+ * \brief Topology file reader (Inet-format type).
+ *
+ * This class takes an input file in Inet format and extracts all
+ * the informations needed to build the topology
+ * (i.e.number of nodes, links and links structure).
+ * It have been tested with Inet 3.0
+ * http://topology.eecs.umich.edu/inet/
+ *
+ * It might set a link attribute named "Weight", corresponding to
+ * the euclidean distance between two nodes, the nodes being randomly positioned.
+ */
+class InetTopologyReader : public TopologyReader
+{
+public:
+  static TypeId GetTypeId (void);
+
+  InetTopologyReader ();
+  virtual ~InetTopologyReader ();
+
+  /**
+   * \brief Main topology reading function.
+   *
+   * This method opens an input stream and reads the Inet-format file.
+   * From the first line it takes the total number of nodes and links.
+   * Then discards a number of rows equals to total nodes (containing
+   * useless geographical informations).
+   * Then reads until the end of the file (total links number rows) and saves
+   * the structure of every single link in the topology.
+   *
+   * \return the container of the nodes created (or empty container if there was an error)
+   */
+  virtual NodeContainer Read (void);
+
+  // end class InetTopologyReader
+};
+
+// end namespace ns3
+};
+
+
+#endif // __INET_TOPOLOGY_READER_H__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/contrib/topology-read/orbis-topology-reader.cc	Fri Mar 12 14:36:38 2010 -0500
@@ -0,0 +1,121 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2010 Universita' di Firenze, Italy
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Tommaso Pecorella (tommaso.pecorella@unifi.it)
+ * Author: Valerio Sartini (valesar@gmail.com)
+ */
+
+#include <fstream>
+#include <cstdlib>
+#include <iostream>
+#include <sstream>
+
+#include "ns3/log.h"
+#include "orbis-topology-reader.h"
+
+using namespace std;
+
+namespace ns3 {
+
+NS_LOG_COMPONENT_DEFINE ("OrbisTopologyReader");
+
+NS_OBJECT_ENSURE_REGISTERED (OrbisTopologyReader);
+
+TypeId OrbisTopologyReader::GetTypeId (void)
+{
+  static TypeId tid = TypeId ("ns3::OrbisTopologyReader")
+    .SetParent<Object> ()
+  ;
+  return tid;
+}
+
+OrbisTopologyReader::OrbisTopologyReader ()
+{
+  NS_LOG_FUNCTION (this);
+}
+
+OrbisTopologyReader::~OrbisTopologyReader ()
+{
+  NS_LOG_FUNCTION (this);
+}
+
+NodeContainer
+OrbisTopologyReader::Read (void)
+{
+  ifstream topgen;
+  topgen.open (GetFileName ().c_str ());
+  map<string, Ptr<Node> > nodeMap;
+  NodeContainer nodes;
+
+  if ( !topgen.is_open () )
+    {
+      return nodes;
+    }
+
+  string from;
+  string to;
+  istringstream lineBuffer;
+  string line;
+
+  int linksNumber = 0;
+  int nodesNumber = 0;
+
+  while (!topgen.eof ())
+    {
+      line.clear ();
+      lineBuffer.clear ();
+      from.clear ();
+      to.clear ();
+
+      getline (topgen,line);
+      lineBuffer.str (line);
+      lineBuffer >> from;
+      lineBuffer >> to;
+
+      if ( (!from.empty ()) && (!to.empty ()) )
+        {
+          NS_LOG_INFO ( linksNumber << " From: " << from << " to: " << to );
+          if ( nodeMap[from] == 0 )
+            {
+              Ptr<Node> tmpNode = CreateObject<Node> ();
+              nodeMap[from] = tmpNode;
+              nodes.Add (tmpNode);
+              nodesNumber++;
+            }
+
+          if (nodeMap[to] == 0)
+            {
+              Ptr<Node> tmpNode = CreateObject<Node> ();
+              nodeMap[to] = tmpNode;
+              nodes.Add (tmpNode);
+              nodesNumber++;
+            }
+
+          Link link ( nodeMap[from], from, nodeMap[to], to );
+          AddLink (link);
+
+          linksNumber++;
+        }
+    }
+  NS_LOG_INFO ("Orbis topology created with " << nodesNumber << " nodes and " << linksNumber << " links");
+  topgen.close ();
+
+  return nodes;
+}
+
+} /* namespace ns3 */
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/contrib/topology-read/orbis-topology-reader.h	Fri Mar 12 14:36:38 2010 -0500
@@ -0,0 +1,73 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2010 Universita' di Firenze, Italy
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Tommaso Pecorella (tommaso.pecorella@unifi.it)
+ * Author: Valerio Sartini (valesar@gmail.com)
+ */
+
+#ifndef __ORBIS_TOPOLOGY_READER_H__
+#define __ORBIS_TOPOLOGY_READER_H__
+
+#include "ns3/nstime.h"
+
+#include "topology-reader.h"
+
+namespace ns3 {
+
+
+// ------------------------------------------------------------
+// --------------------------------------------
+/**
+ * \ingroup topology
+ * \brief Topology file reader (Orbis-format type).
+ *
+ * This class takes an input file in Orbis format and extracts all
+ * the informations needed to build the topology
+ * (i.e.number of nodes, links and links structure).
+ * It have been tested with Orbis 0.70
+ * http://www.sysnet.ucsd.edu/~pmahadevan/topo_research/topo.html
+ */
+class OrbisTopologyReader : public TopologyReader
+{
+public:
+  static TypeId GetTypeId (void);
+
+  OrbisTopologyReader ();
+  virtual ~OrbisTopologyReader ();
+
+  /**
+   * \brief Main topology reading function.
+   *
+   * This method opens an input stream and reads the Orbis-format file.
+   * Every row represents a topology link (the ids of a couple of nodes),
+   * so the input file is read line by line to figure out how many links
+   * and nodes are in the topology.
+   *
+   * \return the container of the nodes created (or empty container if there was an error)
+   */
+  virtual NodeContainer Read (void);
+
+  // end class OrbisTopologyReader
+};
+
+// end namespace ns3
+};
+
+
+#endif // __ORBIS_TOPOLOGY_READER_H__
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/contrib/topology-read/topology-reader.cc	Fri Mar 12 14:36:38 2010 -0500
@@ -0,0 +1,169 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2010 Universita' di Firenze, Italy
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Tommaso Pecorella (tommaso.pecorella@unifi.it)
+ * Author: Valerio Sartini (valesar@gmail.com)
+ */
+
+#include "ns3/log.h"
+
+#include "topology-reader.h"
+
+
+namespace ns3 {
+
+NS_LOG_COMPONENT_DEFINE ("TopologyReader");
+
+NS_OBJECT_ENSURE_REGISTERED (TopologyReader);
+
+TypeId TopologyReader::GetTypeId (void)
+{
+  static TypeId tid = TypeId ("ns3::TopologyReader")
+    .SetParent<Object> ()
+  ;
+  return tid;
+}
+
+TopologyReader::TopologyReader ()
+{
+  NS_LOG_FUNCTION (this);
+}
+
+TopologyReader::~TopologyReader ()
+{
+  NS_LOG_FUNCTION (this);
+}
+
+void
+TopologyReader::SetFileName (const std::string fileName)
+{
+  m_fileName = fileName;
+}
+
+std::string
+TopologyReader::GetFileName () const
+{
+  return m_fileName;
+}
+
+/* Manipulating the address block */
+
+TopologyReader::ConstLinksIterator
+TopologyReader::LinksBegin (void) const
+{
+  return m_linksList.begin ();
+}
+
+TopologyReader::ConstLinksIterator
+TopologyReader::LinksEnd (void) const
+{
+  return m_linksList.end ();
+}
+
+int
+TopologyReader::LinksSize (void) const
+{
+  return m_linksList.size ();
+}
+
+bool
+TopologyReader::LinksEmpty (void) const
+{
+  return m_linksList.empty ();
+}
+
+void
+TopologyReader::AddLink (Link link)
+{
+  m_linksList.push_back (link);
+  return;
+}
+
+
+TopologyReader::Link::Link ( Ptr<Node> fromPtr, std::string fromName, Ptr<Node> toPtr, std::string toName )
+{
+  m_fromPtr = fromPtr;
+  m_fromName = fromName;
+  m_toPtr = toPtr;
+  m_toName = toName;
+}
+
+TopologyReader::Link::Link ()
+{
+}
+
+
+Ptr<Node> TopologyReader::Link::GetFromNode (void) const
+{
+  return m_fromPtr;
+}
+
+std::string
+TopologyReader::Link::GetFromNodeName (void) const
+{
+  return m_fromName;
+}
+
+Ptr<Node>
+TopologyReader::Link::GetToNode (void) const
+{
+  return m_toPtr;
+}
+
+std::string
+TopologyReader::Link::GetToNodeName (void) const
+{
+  return m_toName;
+}
+
+std::string
+TopologyReader::Link::GetAttribute (std::string name)
+{
+  NS_ASSERT_MSG (m_linkAttr.find ("name") == m_linkAttr.end (), "Requested topology link attribute not found");
+  return m_linkAttr[name];
+}
+
+bool
+TopologyReader::Link::GetAttributeFailSafe (std::string name, std::string &value)
+{
+  if ( m_linkAttr.find ("name") == m_linkAttr.end () )
+    {
+      return false;
+    }
+  value = m_linkAttr[name];
+  return true;
+}
+
+void
+TopologyReader::Link::SetAttribute (std::string name, std::string &value)
+{
+  m_linkAttr[name] = value;
+}
+
+TopologyReader::Link::ConstAttributesIterator
+TopologyReader::Link::AttributesBegin (void)
+{
+  return m_linkAttr.begin ();
+}
+TopologyReader::Link::ConstAttributesIterator
+TopologyReader::Link::AttributesEnd (void)
+{
+  return m_linkAttr.end ();
+}
+
+
+} /* namespace ns3 */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/contrib/topology-read/topology-reader.h	Fri Mar 12 14:36:38 2010 -0500
@@ -0,0 +1,203 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2010 Universita' di Firenze, Italy
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Tommaso Pecorella (tommaso.pecorella@unifi.it)
+ * Author: Valerio Sartini (valesar@gmail.com)
+ */
+
+#ifndef __TOPOLOGY_READER_H__
+#define __TOPOLOGY_READER_H__
+
+#include <string>
+#include <map>
+#include <list>
+
+#include "ns3/object.h"
+#include "ns3/node-container.h"
+
+
+namespace ns3 {
+
+/**
+ * \defgroup topology Topology Input Readers
+ */
+
+/**
+ * \ingroup topology
+ * \brief Interface for input file readers management.
+ *
+ * This interface perform the shared tasks among all possible input file readers.
+ * Each different file format is handled by its own topology reader.
+ */
+class TopologyReader : public Object
+{
+
+public:
+  /**
+   * \ingroup topology
+   * \brief Inner class holding the details about a link between two nodes.
+   *
+   * The link is not described in terms of technology. Rather it is only stating
+   * an association between two nodes. The nodes are characterized also with names
+   * reflecting how the nodes are called in the original topology file.
+   */
+  class Link
+  {
+public:
+    typedef std::map<std::string, std::string >::const_iterator ConstAttributesIterator;
+
+    Link ( Ptr<Node> fromPtr, std::string fromName, Ptr<Node> toPtr, std::string toName );
+
+    /**
+     * \brief Returns a Ptr<Node> to the "from" node of the link
+     * \return a Ptr<Node> to the "from" node of the link
+     */
+    Ptr<Node> GetFromNode (void) const;
+    /**
+     * \brief Returns the name of the "from" node of the link
+     * \return the name of the "from" node of the link
+     */
+    std::string GetFromNodeName (void) const;
+    /**
+     * \brief Returns a Ptr<Node> to the "to" node of the link
+     * \return a Ptr<Node> to the "to" node of the link
+     */
+    Ptr<Node> GetToNode (void) const;
+    /**
+     * \brief Returns the name of the "to" node of the link
+     * \return the name of the "to" node of the link
+     */
+    std::string GetToNodeName (void) const;
+    /**
+     * \brief Returns the value of a link attribute. The attribute must exist.
+     *
+     * \param name the name of the attribute
+     *
+     * \return the value of the attribute
+     */
+    std::string GetAttribute (std::string name);
+    /**
+     * \brief Returns the value of a link attribute.
+     * \param name the name of the attribute
+     * \param value the value of the attribute
+     *
+     * \return true if the attribute was defined, false otherwise.
+     */
+    bool GetAttributeFailSafe (std::string name, std::string &value);
+    /**
+     * \brief Sets an arbitrary link attribute.
+     * \param name the name of the attribute
+     * \param value the value of the attribute
+     */
+    void SetAttribute (std::string name, std::string &value);
+    /**
+     * \brief Returns an iterator to the begin of the attributes.
+     * \return a const iterator to the first attribute of a link.
+     */
+    ConstAttributesIterator AttributesBegin (void);
+    /**
+     * \brief Returns an iterator to the end of the attributes.
+     * \return a const iterator to the last attribute of a link.
+     */
+    ConstAttributesIterator AttributesEnd (void);
+
+private:
+    Link ();
+    std::string m_fromName;
+    Ptr< Node > m_fromPtr;
+    std::string m_toName;
+    Ptr< Node > m_toPtr;
+    std::map<std::string, std::string > m_linkAttr;
+  };
+
+  /**
+   * \brief Contant iterator to the list of the links.
+   */
+  typedef std::list< Link >::const_iterator ConstLinksIterator;
+
+  static TypeId GetTypeId (void);
+
+  TopologyReader ();
+  virtual ~TopologyReader ();
+
+  /**
+   * \brief Main topology reading function.
+   *
+   * The data is parsed and the results are returned in the passed lists.
+   * The rationale behind this choice is to allow non-progressive node IDs
+   * in the topology files, as well as to separate the topology
+   * reader from the choices about actual IP number assignment and
+   * kind of links between nodes.
+   *
+   * \return the container of the nodes created (or null if there was an error)
+   */
+  virtual NodeContainer Read (void) = 0;
+
+  /**
+   * \brief Sets the input file name.
+   * \param fileName the input file name.
+   */
+  void SetFileName (const std::string fileName);
+
+  /**
+   * \brief Returns the input file name.
+   * \return the input file name.
+   */
+  std::string GetFileName (void) const;
+
+  /**
+   * \brief Returns an iterator to the the first link in this block.
+   * \return a const iterator to the first link in this block.
+   */
+  ConstLinksIterator LinksBegin (void) const;
+
+  /**
+   * \brief Returns an iterator to the the last link in this block.
+   * \return a const iterator to the last link in this block.
+   */
+  ConstLinksIterator LinksEnd (void) const;
+
+  /**
+   * \brief Returns the number of links in this block.
+   * \return the number of links in this block.
+   */
+  int LinksSize (void) const;
+
+  /**
+   * \brief Checks if the block contains any links.
+   * \return true if there are no links in this block, false otherwise.
+   */
+  bool LinksEmpty (void) const;
+
+  /**
+   * \brief Adds a link to the topology.
+   * \param link the link to be added.
+   */
+  void AddLink (Link link);
+
+private:
+  std::string m_fileName;
+  std::list<Link> m_linksList;
+
+  // end class TopologyReader
+};
+
+// end namespace ns3
+};
+
+
+#endif // __TOPOLOGY_READER_H__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/contrib/topology-read/topology.h	Fri Mar 12 14:36:38 2010 -0500
@@ -0,0 +1,32 @@
+/**
+ * \addtogroup topology Topology Input Readers
+ *
+ * The topology modules aim at reading a topology file generated by an automatic topology generator.
+ *
+ * The process is divided in two steps:
+ * - running a topology generator to build a topology file
+ * - reading the topology file and build a ns-3 simulation
+ *
+ * Hence, model is focused on being able to read correctly the various topology formats.
+ *
+ * Currently there are two models:
+ * - Orbis 0.7
+ * - Inet 3.0
+ *
+ * A good source for topology data is also Archipelago (http://www.caida.org/projects/ark/)
+ *
+ * The current Archipelago Measurements, monthly updated, are stored here:
+ * http://data.caida.org/datasets/topology/ipv4.allpref24-aslinks/
+ * (complete notation and triple data source, one for each working group)
+ *
+ * A different and more compact notation that signs only the AS-relationships is here:
+ * http://www.caida.org/data/active/as-relationships/index.xml
+ * (a sort of more Orbis-like format)
+ *
+ * The compact notation can be easily stripped down to a pure Orbis format, just removing
+ * the double relationships (the compact format use one-way links, while Orbis use two-way
+ * links) and pruning the 3rd parameter. Note that with the compact data Orbis can then be
+ * used create a rescaled version of the topology, thus being the most effective way
+ * (to my best knowledge) to make an internet-like topology.
+ *
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/contrib/topology-read/wscript	Fri Mar 12 14:36:38 2010 -0500
@@ -0,0 +1,17 @@
+## -*- Mode: python; py-indent-offset: 4; indent-tabs-mode: nil; coding: utf-8; -*-
+
+def build(bld):
+    obj = bld.create_ns3_module('topology-read')
+    obj.source = [
+       'topology-reader.cc',
+       'inet-topology-reader.cc',
+       'orbis-topology-reader.cc',
+        ]
+    headers = bld.new_task_gen('ns3header')
+    headers.module = 'topology-read'
+    headers.source = [
+       'topology-reader.h',
+       'inet-topology-reader.h',
+       'orbis-topology-reader.h',
+        ]
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/helper/topology-reader-helper.cc	Fri Mar 12 14:36:38 2010 -0500
@@ -0,0 +1,80 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2010 Universita' di Firenze, Italy
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Tommaso Pecorella (tommaso.pecorella@unifi.it)
+ * Author: Valerio Sartini (valesar@gmail.com)
+ */
+
+#include "ns3/object.h"
+#include "ns3/topology-reader-helper.h"
+#include "ns3/inet-topology-reader.h"
+#include "ns3/orbis-topology-reader.h"
+#include "ns3/log.h"
+
+namespace ns3 {
+
+NS_LOG_COMPONENT_DEFINE ("TopologyReaderHelper");
+
+TopologyReaderHelper::TopologyReaderHelper ()
+{
+  m_inFile = 0;
+}
+
+void
+TopologyReaderHelper::SetFileName (const std::string fileName)
+{
+  m_fileName = fileName;
+}
+
+void
+TopologyReaderHelper::SetFileType (const std::string fileType)
+{
+  m_fileType = fileType;
+}
+
+
+Ptr<TopologyReader>
+TopologyReaderHelper::GetTopologyReader ()
+{
+  if (!m_inFile)
+    {
+      NS_ASSERT_MSG (!m_fileType.empty (), "Missing File Type");
+      NS_ASSERT_MSG (!m_fileName.empty (), "Missing File Name");
+
+      if (m_fileType == "Orbis")
+        {
+          NS_LOG_INFO ("Creating Orbis formatted data input.");
+          m_inFile = CreateObject<OrbisTopologyReader> ();
+        }
+      else if (m_fileType == "Inet")
+        {
+          NS_LOG_INFO ("Creating Inet formatted data input.");
+          m_inFile = CreateObject<InetTopologyReader> ();
+        }
+      else
+        {
+          NS_ASSERT_MSG (false, "Wrong (unknown) File Type");
+        }
+
+      m_inFile->SetFileName (m_fileName);
+    }
+  return m_inFile;
+}
+
+
+
+} // namespace ns3
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/helper/topology-reader-helper.h	Fri Mar 12 14:36:38 2010 -0500
@@ -0,0 +1,66 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2010 Universita' di Firenze, Italy
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Tommaso Pecorella (tommaso.pecorella@unifi.it)
+ * Author: Valerio Sartini (valesar@gmail.com)
+ */
+
+#ifndef TOPOLOGY_READER_HELPER_H
+#define TOPOLOGY_READER_HELPER_H
+
+#include "ns3/topology-reader.h"
+#include <string>
+
+namespace ns3 {
+
+/**
+ * \ingroup topology
+ * \brief Helper class which makes it easier to configure and use a generic TopologyReader.
+ */
+class TopologyReaderHelper
+{
+public:
+  TopologyReaderHelper ();
+
+  /**
+   * \brief Sets the input file name.
+   * \param fileName the input file name.
+   */
+  void SetFileName (const std::string fileName);
+
+  /**
+   * \brief Sets the input file type. Supported file types are "Orbis" and "Inet".
+   * \param fileType the input file type.
+   */
+  void SetFileType (const std::string fileType);
+
+  /**
+   * \brief Gets a Ptr<TopologyReader> to the actual TopologyReader.
+   * \return the created Topoloy Reader (or null if there was an error).
+   */
+  Ptr<TopologyReader> GetTopologyReader ();
+
+private:
+  Ptr<TopologyReader> m_inFile;
+  std::string m_fileName;
+  std::string m_fileType;
+};
+
+} // namespace ns3
+
+
+#endif /* TOPOLOGY_READER_HELPER_H */
--- a/src/helper/wscript	Thu Mar 11 14:22:33 2010 +0100
+++ b/src/helper/wscript	Fri Mar 12 14:36:38 2010 -0500
@@ -50,6 +50,7 @@
         'udp-client-server-helper.cc',
         'trace-helper.cc',
         'wimax-helper.cc',
+        'topology-reader-helper.cc',
         ]
 
     headers = bld.new_task_gen('ns3header')
@@ -103,6 +104,7 @@
         'udp-client-server-helper.h',
         'trace-helper.h',
         'wimax-helper.h',
+        'topology-reader-helper.h',
         ]
 
     env = bld.env_of_name('default')
--- a/src/wscript	Thu Mar 11 14:22:33 2010 +0100
+++ b/src/wscript	Fri Mar 12 14:36:38 2010 -0500
@@ -51,6 +51,7 @@
     'applications/udp-client-server',
     'devices/wimax',
     'mpi',
+    'contrib/topology-read',
     )
 
 def set_options(opt):
--- a/test.py	Thu Mar 11 14:22:33 2010 +0100
+++ b/test.py	Fri Mar 12 14:36:38 2010 -0500
@@ -127,6 +127,8 @@
     ("tcp/tcp-nsc-zoo", "ENABLE_NSC == True", "True"),
     ("tcp/tcp-star-server", "True", "True"),
 
+    ("topology-read/topology-read --input=../../examples/topology-read/Inet_small_toposample.txt", "True", "True"),
+
     ("tunneling/virtual-net-device", "True", "True"),
 
     ("tutorial/first", "True", "True"),