Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
[Contrib] Deleted contrib/network_model
authorChristian Heinrich <franz-christian.heinrich@inria.fr>
Tue, 19 Jan 2016 16:50:00 +0000 (17:50 +0100)
committerChristian Heinrich <franz-christian.heinrich@inria.fr>
Wed, 20 Jan 2016 18:35:58 +0000 (19:35 +0100)
contrib/network_model/calibrate_piecewise.py [deleted file]
contrib/network_model/griffon_skampi_pt2pt.ski.dat [deleted file]
contrib/network_model/pingpong-in.dat [deleted file]
contrib/network_model/regress.py [deleted file]
contrib/network_model/regression2.py [deleted file]
contrib/network_model/smpi_calibration.c [deleted file]

diff --git a/contrib/network_model/calibrate_piecewise.py b/contrib/network_model/calibrate_piecewise.py
deleted file mode 100755 (executable)
index 8a54e84..0000000
+++ /dev/null
@@ -1,216 +0,0 @@
-#!/usr/bin/env python
-
-# Copyright (c) 2010-2011, 2014. The SimGrid Team.
-# All rights reserved.
-
-# This program is free software; you can redistribute it and/or modify it
-# under the terms of the license (GNU LGPL) which comes with this package.
-
-import sys
-from math import sqrt
-
-
-if len(sys.argv) < 5:
-   print("Usage : %s datafile links latency bandwidth [size...]" % sys.argv[0])
-   print("where : datafile is a SkaMPI pingpong measurement log file"); 
-   print("        links is the number of links between nodes")
-   print("        latency is the nominal latency given in the platform file")
-   print("        bandwidth is the nominal bandwidth given in the platform file")
-   print("        size are segments limits")
-   sys.exit(-1)
-
-##-----------------------------------------
-## avg : return average of a list of values
-## param l list of values
-##-----------------------------------------
-def avg (l):
-   sum = 0
-   for e in l:
-      sum += float(e);
-   return sum / len(l)
-
-##-------------------------------------------------
-## cov : covariance
-## param X first data vector (..x_i..)
-## param Y second data vector (..x_i..)
-## = 1/n \Sum_{i=1}^n (x_i - avg(x)) * (y_i - avg(y))
-##--------------------------------------------------
-def cov (X, Y):
-   assert len(X) == len(Y)
-   n = len(X)   #  n=len(X)=len(Y)
-   avg_X = avg(X)
-   avg_Y = avg(Y)
-   S_XY = 0.0
-   for i in range(n):
-      S_XY += (X[i] - avg_X) * (Y[i] - avg_Y)
-   return (S_XY / n)
-
-##---------------------------------------------------------------------
-## variance : variance
-## param X data vector ( ..x_i.. )
-## (S_X)^2 = (Sum ( x_i - avg(x) )^2 ) / n
-##---------------------------------------------------------------------
-def variance (X):
-   n = len(X)
-   avg_X = avg (X)
-   S_X2 = 0.0
-   for i in range(n):
-      S_X2 += (X[i] - avg_X) ** 2
-   return (S_X2 / n)
-
-##---------------------------------------------------------------------
-## calibrate : output correction factors, c_lat on latency, c_bw on bw
-## such that bandwidth * c_bw = bw_regr, latency * c_lat = lat_regr
-## where bw_regr and lat_regr are the values approximating experimental
-## observations.
-##
-## param links number of links traversed during ping-pong
-## param latency as specified on command line, in s
-## param bandwidth as specified on command line, in Byte/s
-## param sizes vector of data sizes, in Bytes
-## param timings vector of time taken: timings[i] for sizes[i], in us
-##---------------------------------------------------------------------
-def calibrate (links, latency, bandwidth, sizes, timings):
-   assert len(sizes) == len(timings)
-   if len(sizes) < 2:
-      return None
-   # compute linear regression : find an affine form  time = a*size+b
-   S_XY = cov(sizes, timings)
-   S_X2 = variance(sizes)
-   a = S_XY / S_X2
-   b = avg(timings) - a * avg(sizes)
-   # corresponding bandwith, in byte/s (was in byte/us in skampi dat)
-   bw_regr = 1e6 / a     
-   # corresponding latency, in s (was in us in skampi dat)
-   lat_regr = b*1e-6
-   print("\nregression: {0} * x + {1}".format(a,b))
-   print("corr_bw = bw_regr/bandwidth= {0}/{1}={2}     lat_regr/(lat_xml*links)={3}/({4}*{5}))".format(bw_regr,bandwidth,bw_regr/bandwidth,lat_regr,latency,links))
-   # return linear regression result and corresponding correction factors c_bw,c_lat
-   return a,b, bw_regr/bandwidth, lat_regr/(latency*links)
-
-
-##---------------------------------------------------------------------
-## outputs a C formatted conditional return value for factor
-##
-## param lb lower bound
-## param ub upper bound
-## param lb_included boolean to tell if bound is included (<=) or exclude (<) 
-## param ub_included boolean to tell if bound is included (<=) or exclude (<) 
-##---------------------------------------------------------------------
-def c_code_print (lb,ub, retval, lb_included, ub_included):
-       lb_cmp = ub_cmp = "<"
-       if lb_included:
-               lb_cmp ="<="
-       if ub_included:
-               ub_cmp ="<="
-
-       ub_kib=ub/1024.
-       lb_kib=lb/1024.
-       print("\t /* case {0:.1f} KiB {1} size {2} {3:.1f} KiB */".format(lb_kib,lb_cmp,ub_cmp,ub_kib))
-       print("\t if ({0:d} {1}  size && size {2} {3:d}) ".format(lb,lb_cmp,ub_cmp,ub))
-       print("\t       return({0});" . format(retval))
-
-
-##-----------------------------------------------------------------------------------------------
-## main
-##-----------------------------------------------------------------------------------------------
-links = int(sys.argv[2])
-latency = float(sys.argv[3])
-bandwidth = float(sys.argv[4])
-skampidat = open(sys.argv[1], "r")
-
-## read data from skampi logs.
-timings = []
-sizes = []
-readdata =[]
-for line in skampidat:
-       l = line.split();
-       if line[0] != '#' and len(l) >= 3:   # is it a comment ?
-      ## expected format
-      ## ---------------
-      #count= 8388608  8388608  144916.1       7.6       32  144916.1  143262.0
-      #("%s %d %d %f %f %d %f %f\n" % (countlbl, count, countn, time, stddev, iter, mini, maxi)
-               readdata.append( (int(l[1]),float(l[3]) / 2) );   # divide by 2 because of ping-pong measured
-
-## These may not be sorted so sort it by message size before processing.
-sorteddata = sorted( readdata, key=lambda pair: pair[0])
-sizes,timings= zip(*sorteddata)
-
-
-## adds message sizes of interest: if values are specified starting from the 6th command line arg 
-## and these values are found as message sizes in te log file, add it to the limits list.
-## Each of these value si considered a potential inflexion point between two segments.
-##
-## If no value specified, a single segment is considered from 1st to last message size logged.
-limits = []
-if len(sys.argv) > 5:
-   for i in range(5, len(sys.argv)):
-      limits += [idx for idx in range(len(sizes)) if sizes[idx] == int(sys.argv[i])]
-limits.append(len(sizes) - 1)
-
-factors = []
-low = 0
-for lim in limits:
-   correc = calibrate(links, latency, bandwidth, sizes[low:lim + 1], timings[low:lim + 1])
-   if correc:
-       # save interval [lb,ub] correction, regression line direction and origin
-      # and corresponding correction factors for bw and lat resp. 
-       (dircoef,origin,factor_bw,factor_lat) = correc
-       factors.append( (sizes[low],sizes[lim], dircoef, origin, factor_bw,factor_lat) )
-       print("Segment [%d:%d] --Bandwidth factor=%g --Latency factor=%g " % (sizes[low], sizes[lim], factor_bw,factor_lat))
-   low = lim + 1
-
-# now computes joining lines between segments
-joinseg=[]
-
-print("\n/**\n *------------------ <copy/paste C code snippet in surf/network.c> ----------------------")
-print(" *\n * produced by: {0}\n *".format(' '.join(sys.argv)))
-print(" *---------------------------------------------------------------------------------------\n **/")
-
-# print correction factor for bandwidth for each segment
-print("static double smpi_bandwidth_factor(double size)\n{")                                
-for (lb,ub,a,b,factor_bw,factor_lat) in factors:
-       c_code_print(lb,ub,factor_bw,True,True)
-
-       # save ends and starts of segments 
-       if lb != sizes[0]:
-               joinseg.append( (lb,timings[sizes.index(lb)]) )
-       if ub != sizes[-1]:
-               joinseg.append( (ub,timings[sizes.index(ub)]) )
-
-# print correction factor for bandwidth between segments
-joinseg.reverse()
-print("\n\t /* ..:: inter-segment corrections ::.. */");
-inx=len(joinseg)-1
-while inx>=1:
-       (x0,y0) = joinseg[inx]
-       inx = inx -1
-       (x1,y1) = joinseg[inx]
-       inx = inx -1
-       # line eq. is y = (y1-y0)/(x0-x1) * x +  (y0 x1 - y1 x0)/(x1-x0)
-       a = (y1-y0) / (x1-x0)
-       bw_join = 1e6 / a
-       factor_join_bw = bw_join / bandwidth
-       #print("Joining points (%f,%f) -> (%f,%f)  : line dir : a=%g\n" % (x0,y0,x1,y1,a))
-       c_code_print(x0,x1,factor_join_bw,False,False)
-
-print("}\n")  
-
-# print correction factor for latency for each segment
-print("static double smpi_latency_factor(double size)\n{")                                
-for (lb,ub,a,b,factor_bw,factor_lat) in factors:
-       c_code_print(lb,ub,factor_lat,True,True)
-
-print("\n\t /* ..:: inter-segment corrections ::.. */");
-while joinseg:
-       (x0,y0) = joinseg.pop()
-       (x1,y1) = joinseg.pop()
-       # line eq. is y = (y0-y1)/(x0-x1) * x +  (y0 x1 - y1 x0)/(x1-x0)
-       #print("(%f,%f) -> (%f,%f)\n" % (x0,y0,x1,y1))
-       b = 1e-6 * (y0*x1-y1*x0) / (x1-x0)
-       factor_join_lat = b / (latency*links)
-       c_code_print(x0,x1,factor_join_lat,False,False)
-
-print("}\n")  
-
-print("\n/**\n *------------------ <copy/paste C code snippet in surf/network.c> ----------------------\n **/")
diff --git a/contrib/network_model/griffon_skampi_pt2pt.ski.dat b/contrib/network_model/griffon_skampi_pt2pt.ski.dat
deleted file mode 100644 (file)
index 42ce879..0000000
+++ /dev/null
@@ -1,158 +0,0 @@
-# SkaMPI pt2pt test
-# on cluster : griffon (nancy) Grid5000. See Grid5000 website for technical data.
-
-#vendor_id  : GenuineIntel
-#cpu family : 6
-#model      : 23
-#model name : Intel(R) Xeon(R) CPU           L5420  @ 2.50GHz
-#stepping   : 10
-#cpu MHz    : 2493.757
-#cache size : 6144 KB
-
-
-# /home/sgenaud/openmpi.install/bin/mpiexec --mca btl_tcp_if_include eth0 --mca btl_tcp_if_exclude ib0 --mca btl tcp,self -mca orte_base_help_aggregate 0 -mca plm_rsh_agent oarsh -machinefile machinefile -n 2 skampi -i ski_smpi/skampi_pt2pt.ski
-
-# Finished at Fri Jul  9 16:19:24 2010
-# SKaMPI Version 5.0.4 rev. 355
-# Started at Fri Jul  9 16:19:02 2010
-# Total runtime 22 seconds
-# begin result "Pingpong_Send_Recv"
-# duration = 22.49 sec
-# end result "Pingpong_Send_Recv"
-
-count= 1        1     109.2       0.2       32     106.7     107.7
-count= 2        2     109.3       0.3       32     107.6     107.0
-count= 4        4     111.7       0.7       32     107.8     109.7
-count= 8        8     109.0       0.3       32     106.8     107.0
-count= 16       16     109.1       0.4       32     108.0     106.7
-count= 32       32     111.1       0.4       32     110.5     107.4
-count= 64       64     110.2       0.2       32     107.8     108.6
-count= 128      128     118.9       1.2       32     109.9     116.2
-count= 256      256     145.8       0.4       32     138.4     144.9
-count= 512      512     161.7       0.3       32     154.7     161.6
-count= 1024     1024     190.4       0.2       32     182.7     190.4
-count= 1024     1024     193.4       0.3       32     185.9     193.0
-count= 1536     1536     237.3       0.5       32     226.9     237.3
-count= 2048     2048     248.0       0.8       32     238.4     247.9
-count= 2048     2048     249.2       1.0       32     240.1     247.7
-count= 2560     2560     262.9       0.6       32     251.7     262.9
-count= 3072     3072     277.9       0.4       32     272.7     275.0
-count= 3584     3584     285.0       0.5       32     275.0     285.0
-count= 4096     4096     303.0       0.9       32     293.5     298.9
-count= 4096     4096     303.4       0.8       32     297.2     301.6
-count= 4608     4608     310.0       0.8       32     310.0     291.7
-count= 5120     5120     321.4       0.7       32     321.4     291.5
-count= 5632     5632     343.7       0.7       32     343.7     312.0
-count= 6144     6144     320.7       0.5       32     320.7     282.6
-count= 6656     6656     339.4       0.4       32     339.4     296.6
-count= 7168     7168     353.3       0.7       32     353.3     308.5
-count= 7680     7680     386.7       0.8       32     385.3     378.8
-count= 8192     8192     389.1       0.6       32     389.1     373.8
-count= 8192     8192     393.7       0.8       32     391.1     380.4
-count= 16384    16384     627.7       0.7       32     627.7     533.9
-count= 32768    32768    1060.2       0.9       32    1060.2     828.9
-count= 32768    32768    1062.0       1.0       32    1062.0     836.4
-count= 33792    33792    1096.1       0.8       32    1096.1     838.2
-count= 34816    34816    1109.6       0.7       32    1109.6     835.3
-count= 35840    35840    1125.7       1.7       32    1125.7     856.3
-count= 36864    36864    1168.1       1.4       32    1168.1     930.2
-count= 37888    37888    1208.8       0.6       32    1208.8     937.2
-count= 38912    38912    1229.7       1.0       32    1229.7     952.2
-count= 39936    39936    1255.4       1.2       32    1255.4     969.3
-count= 40960    40960    1292.8       0.9       32    1292.8     978.8
-count= 41984    41984    1300.8       1.6       32    1300.8     976.3
-count= 43008    43008    1322.0       1.2       32    1322.0     988.2
-count= 44032    44032    1365.8       1.0       32    1365.8    1064.5
-count= 45056    45056    1400.6       0.8       32    1400.6    1072.9
-count= 46080    46080    1426.9       0.9       32    1426.9    1096.7
-count= 47104    47104    1445.7       0.9       32    1445.7    1101.4
-count= 48128    48128    1489.7       0.9       32    1489.7    1119.3
-count= 49152    49152    1516.2       0.6       32    1516.2    1137.3
-count= 50176    50176    1515.0       0.9       32    1515.0    1124.5
-count= 51200    51200    1558.4       1.4       32    1558.4    1202.6
-count= 52224    52224    1595.4       0.8       32    1595.4    1209.2
-count= 53248    53248    1614.3       1.0       32    1614.3    1219.8
-count= 54272    54272    1647.7       0.8       32    1647.7    1244.3
-count= 55296    55296    1684.2       0.9       32    1684.2    1258.9
-count= 56320    56320    1714.6       0.8       32    1714.6    1281.8
-count= 57344    57344    1710.3       1.4       32    1710.3    1262.5
-count= 58368    58368    1757.1       1.1       32    1757.1    1344.3
-count= 59392    59392    1793.4       1.3       32    1793.4    1350.9
-count= 60416    60416    1817.8       0.7       32    1817.8    1366.0
-count= 61440    61440    1850.5       1.5       32    1850.5    1392.2
-count= 62464    62464    1884.3       1.3       32    1884.3    1398.8
-count= 63488    63488    1896.7       1.2       32    1896.7    1403.7
-count= 64512    64512    1907.1       1.0       32    1907.1    1405.3
-count= 65536    65536    2250.0       1.2       32    2250.0    1648.1
-count= 65536    65536    2253.6       1.8       32    2253.6    1653.3
-count= 66560    66560    2263.2       0.8       32    2263.2    1654.2
-count= 67584    67584    2284.4       1.4       32    2284.4    1655.7
-count= 68608    68608    2308.5       1.7       32    2308.5    1685.1
-count= 69632    69632    2299.3       2.7       32    2299.3    1672.3
-count= 70656    70656    2342.2       2.4       32    2342.2    1708.0
-count= 71680    71680    2385.5       2.4       32    2385.5    1733.6
-count= 72704    72704    2422.9       2.5       32    2422.9    1765.7
-count= 73728    73728    2441.9       1.7       32    2441.9    1783.1
-count= 74752    74752    2465.0       1.9       32    2465.0    1781.5
-count= 75776    75776    2482.6       2.5       32    2482.6    1806.1
-count= 76800    76800    2490.0       2.1       32    2490.0    1808.3
-count= 77824    77824    2503.4       2.8       32    2503.4    1815.1
-count= 78848    78848    2568.6       2.6       32    2568.6    1864.5
-count= 79872    79872    2618.4       2.2       32    2618.4    1897.0
-count= 80896    80896    2615.7       2.6       32    2615.7    1891.0
-count= 81920    81920    2641.5       2.1       32    2641.5    1919.9
-count= 82944    82944    2647.5       2.4       32    2647.5    1919.4
-count= 83968    83968    2662.6       1.8       32    2662.6    1929.4
-count= 84992    84992    2693.4       1.7       32    2693.4    1954.6
-count= 86016    86016    2733.1       2.3       32    2733.1    1974.2
-count= 87040    87040    2784.9       2.0       32    2784.9    2013.4
-count= 88064    88064    2792.3       1.9       32    2792.3    2014.1
-count= 89088    89088    2820.0       1.8       32    2820.0    2032.9
-count= 90112    90112    2833.6       1.7       32    2833.6    2045.1
-count= 91136    91136    2861.4       1.1       32    2861.4    2056.6
-count= 92160    92160    2873.4       1.5       32    2873.4    2071.6
-count= 93184    93184    2926.1       0.8       32    2926.1    2103.4
-count= 94208    94208    2960.6       1.8       32    2960.6    2128.3
-count= 95232    95232    2970.0       1.6       32    2970.0    2145.8
-count= 96256    96256    2993.8       1.7       32    2993.8    2147.2
-count= 97280    97280    3010.7       2.4       32    3010.7    2169.1
-count= 98304    98304    3039.6       1.7       32    3039.6    2180.1
-count= 99328    99328    3048.7       2.0       32    3048.7    2186.0
-count= 100352   100352    3107.2       1.4       32    3107.2    2227.0
-count= 101376   101376    3147.7       1.4       32    3147.7    2258.1
-count= 102400   102400    3145.7       1.8       32    3145.7    2256.1
-count= 103424   103424    3171.8       1.3       32    3171.8    2266.4
-count= 104448   104448    3200.2       2.4       32    3200.2    2300.5
-count= 105472   105472    3219.3       2.7       32    3219.3    2301.5
-count= 106496   106496    3229.6       2.1       32    3229.6    2308.6
-count= 107520   107520    3284.7       2.3       32    3284.7    2344.4
-count= 108544   108544    3311.8       2.2       32    3311.8    2364.9
-count= 109568   109568    3323.4       1.7       32    3323.4    2376.3
-count= 110592   110592    3354.0       2.0       32    3354.0    2399.0
-count= 111616   111616    3376.2       1.7       32    3376.2    2419.3
-count= 112640   112640    3397.4       2.4       32    3397.4    2429.9
-count= 113664   113664    3401.1       1.4       32    3401.1    2430.6
-count= 114688   114688    3458.1       2.7       32    3458.1    2470.8
-count= 115712   115712    3481.2       3.4       32    3481.2    2484.3
-count= 116736   116736    3512.1       2.2       32    3512.1    2502.9
-count= 117760   117760    3532.9       2.1       32    3532.9    2524.1
-count= 118784   118784    3544.9       1.9       32    3544.9    2527.8
-count= 119808   119808    3575.5       1.4       32    3575.5    2544.6
-count= 120832   120832    3584.4       2.2       32    3584.4    2554.0
-count= 121856   121856    3641.5       2.3       32    3641.5    2593.2
-count= 122880   122880    3662.0       1.7       32    3662.0    2608.6
-count= 123904   123904    3695.2       1.7       32    3695.2    2638.5
-count= 124928   124928    3711.6       1.6       32    3711.6    2643.5
-count= 125952   125952    3737.9       1.3       32    3737.9    2659.9
-count= 126976   126976    3750.0       1.8       32    3750.0    2673.3
-count= 128000   128000    3761.6       2.2       32    3761.6    2678.8
-count= 129024   129024    3822.9       1.8       32    3822.9    2725.9
-count= 130048   130048    3838.5       2.3       32    3838.5    2727.5
-count= 131072   131072    3870.2       1.8       32    3870.2    2750.0
-count= 131072   131072    3873.2       1.8       32    3873.2    2757.4
-count= 262144   262144    7121.5       1.0       32    7121.5    4980.9
-count= 524288   524288   10740.7       4.1       32   10740.7    9458.5
-count= 1048576  1048576   19872.8       4.9       32   19872.8   18373.7
-count= 2097152  2097152   37947.8      63.3       32   37947.8   36227.3
-count= 4194304  4194304   73299.4       7.8       32   73299.4   71898.5
-count= 8388608  8388608  144965.0      15.2       32  144965.0  143205.7
diff --git a/contrib/network_model/pingpong-in.dat b/contrib/network_model/pingpong-in.dat
deleted file mode 100644 (file)
index 7245687..0000000
+++ /dev/null
@@ -1,7681 +0,0 @@
-0      98
-1      100
-2      100
-3      100
-4      100
-5      100
-6      100
-7      100
-8      100
-9      100
-10     100
-11     99
-12     97
-13     95
-14     90
-15     83
-16     82
-17     82
-18     82
-19     92
-20     87
-21     82
-22     76
-23     76
-24     89
-25     94
-26     97
-27     100
-28     100
-29     100
-30     100
-31     100
-32     100
-33     100
-34     100
-35     100
-36     100
-37     100
-38     100
-39     99
-40     96
-41     94
-42     89
-43     83
-44     82
-45     86
-46     94
-47     79
-48     76
-49     82
-50     84
-51     92
-52     97
-53     98
-54     100
-55     100
-56     100
-57     100
-58     100
-59     100
-60     100
-61     100
-62     100
-63     100
-64     100
-65     100
-66     99
-67     97
-68     94
-69     86
-70     82
-71     82
-72     91
-73     94
-74     90
-75     88
-76     89
-77     93
-78     97
-79     100
-80     100
-81     100
-82     100
-83     100
-84     100
-85     100
-86     100
-87     100
-88     100
-89     100
-90     100
-91     100
-92     99
-93     97
-94     94
-95     90
-96     82
-97     82
-98     87
-99     94
-100    93
-101    88
-102    90
-103    92
-104    98
-105    99
-106    100
-107    100
-108    100
-109    100
-110    100
-111    100
-112    100
-113    100
-114    100
-115    100
-116    99
-117    100
-118    100
-119    100
-120    99
-121    97
-122    95
-123    92
-124    90
-125    82
-126    82
-127    94
-128    86
-129    85
-130    95
-131    97
-132    99
-133    100
-134    100
-135    100
-136    100
-137    100
-138    100
-139    100
-140    100
-141    100
-142    100
-143    100
-144    100
-145    100
-146    100
-147    100
-148    98
-149    96
-150    94
-151    94
-152    87
-153    88
-154    94
-155    94
-156    92
-157    97
-158    98
-159    100
-160    100
-161    100
-162    100
-163    100
-164    100
-165    100
-166    100
-167    100
-168    100
-169    100
-170    100
-171    100
-172    100
-173    100
-174    100
-175    100
-176    98
-177    103
-178    84
-179    94
-180    87
-181    85
-182    97
-183    97
-184    99
-185    100
-186    100
-187    100
-188    100
-189    100
-190    100
-191    100
-192    100
-193    100
-194    100
-195    100
-196    100
-197    100
-198    100
-199    100
-200    100
-201    100
-202    99
-203    103
-204    93
-205    86
-206    95
-207    82
-208    96
-209    100
-210    98
-211    100
-212    100
-213    100
-214    100
-215    100
-216    100
-217    100
-218    100
-219    100
-220    100
-221    100
-222    100
-223    100
-224    100
-225    100
-226    100
-227    100
-228    100
-229    100
-230    102
-231    107
-232    94
-233    82
-234    94
-235    95
-236    101
-237    102
-238    100
-239    100
-240    100
-241    100
-242    100
-243    100
-244    100
-245    100
-246    100
-247    100
-248    100
-249    100
-250    100
-251    100
-252    100
-253    100
-254    100
-255    91
-256    84
-257    98
-258    103
-259    103
-260    100
-261    101
-262    100
-263    100
-264    100
-265    100
-266    100
-267    100
-268    100
-269    100
-270    100
-271    100
-272    100
-273    100
-274    100
-275    100
-276    100
-277    100
-278    100
-279    100
-280    109
-281    96
-282    99
-283    97
-284    92
-285    101
-286    103
-287    104
-288    102
-289    100
-290    100
-291    100
-292    100
-293    100
-294    100
-295    100
-296    100
-297    100
-298    100
-299    100
-300    100
-301    100
-302    100
-303    100
-304    100
-305    101
-306    103
-307    112
-308    98
-309    101
-310    101
-311    101
-312    104
-313    105
-314    107
-315    104
-316    100
-317    100
-318    100
-319    100
-320    100
-321    100
-322    100
-323    100
-324    100
-325    100
-326    100
-327    100
-328    100
-329    100
-330    100
-331    100
-332    100
-333    112
-334    112
-335    98
-336    108
-337    103
-338    99
-339    104
-340    106
-341    107
-342    106
-343    102
-344    100
-345    100
-346    100
-347    100
-348    100
-349    100
-350    100
-351    100
-352    100
-353    100
-354    100
-355    100
-356    100
-357    100
-358    100
-359    104
-360    111
-361    107
-362    111
-363    104
-364    107
-365    107
-366    104
-367    106
-368    106
-369    106
-370    101
-371    100
-372    100
-373    100
-374    100
-375    100
-376    100
-377    100
-378    100
-379    100
-380    100
-381    100
-382    100
-383    100
-384    100
-385    100
-386    106
-387    100
-388    100
-389    100
-390    110
-391    103
-392    109
-393    106
-394    105
-395    106
-396    107
-397    105
-398    101
-399    100
-400    100
-401    100
-402    100
-403    100
-404    100
-405    100
-406    100
-407    100
-408    100
-409    100
-410    100
-411    100
-412    100
-413    105
-414    112
-415    100
-416    100
-417    100
-418    107
-419    117
-420    114
-421    108
-422    106
-423    106
-424    107
-425    100
-426    100
-427    100
-428    101
-429    100
-430    100
-431    100
-432    100
-433    101
-434    106
-435    112
-436    113
-437    112
-438    113
-439    114
-440    117
-441    116
-442    107
-443    106
-444    107
-445    106
-446    102
-447    100
-448    100
-449    100
-450    100
-451    100
-452    100
-453    100
-454    100
-455    100
-456    100
-457    100
-458    100
-459    101
-460    100
-461    106
-462    113
-463    112
-464    101
-465    113
-466    118
-467    119
-468    116
-469    108
-470    107
-471    107
-472    107
-473    105
-474    100
-475    100
-476    100
-477    100
-478    100
-479    100
-480    100
-481    100
-482    100
-483    100
-484    100
-485    100
-486    100
-487    105
-488    112
-489    100
-490    113
-491    103
-492    119
-493    119
-494    119
-495    114
-496    107
-497    106
-498    106
-499    106
-500    104
-501    100
-502    100
-503    100
-504    100
-505    100
-506    100
-507    100
-508    100
-509    100
-510    100
-511    100
-512    100
-513    102
-514    104
-515    112
-516    112
-517    107
-518    113
-519    117
-520    119
-521    120
-522    120
-523    116
-524    109
-525    107
-526    106
-527    107
-528    104
-529    101
-530    100
-531    100
-532    100
-533    100
-534    100
-535    100
-536    100
-537    100
-538    100
-539    100
-540    100
-541    105
-542    100
-543    113
-544    112
-545    101
-546    115
-547    121
-548    121
-549    123
-550    121
-551    118
-552    112
-553    107
-554    106
-555    107
-556    106
-557    104
-558    100
-559    100
-560    100
-561    100
-562    100
-563    100
-564    100
-565    100
-566    100
-567    102
-568    110
-569    100
-570    112
-571    100
-572    112
-573    118
-574    120
-575    122
-576    123
-577    122
-578    119
-579    112
-580    107
-581    107
-582    107
-583    106
-584    102
-585    101
-586    100
-587    100
-588    100
-589    100
-590    100
-591    100
-592    100
-593    101
-594    101
-595    105
-596    100
-597    116
-598    118
-599    120
-600    121
-601    124
-602    106
-603    107
-604    104
-605    101
-606    100
-607    100
-608    100
-609    100
-610    100
-611    100
-612    101
-613    100
-614    101
-615    110
-616    100
-617    112
-618    112
-619    112
-620    119
-621    122
-622    124
-623    124
-624    122
-625    121
-626    114
-627    108
-628    107
-629    106
-630    106
-631    104
-632    100
-633    100
-634    100
-635    100
-636    100
-637    100
-638    100
-639    100
-640    100
-641    105
-642    111
-643    107
-644    100
-645    112
-646    113
-647    116
-648    121
-649    123
-650    125
-651    124
-652    122
-653    120
-654    114
-655    107
-656    107
-657    108
-658    106
-659    105
-660    102
-661    100
-662    100
-663    100
-664    100
-665    100
-666    100
-667    100
-668    100
-669    103
-670    106
-671    107
-672    106
-673    102
-674    117
-675    121
-676    123
-677    125
-678    125
-679    125
-680    122
-681    119
-682    113
-683    107
-684    106
-685    107
-686    107
-687    104
-688    100
-689    100
-690    101
-691    100
-692    100
-693    100
-694    102
-695    107
-696    111
-697    113
-698    111
-699    111
-700    116
-701    121
-702    122
-703    125
-704    125
-705    125
-706    123
-707    122
-708    115
-709    108
-710    107
-711    107
-712    106
-713    103
-714    100
-715    100
-716    101
-717    100
-718    100
-719    100
-720    102
-721    110
-722    106
-723    112
-724    113
-725    115
-726    120
-727    122
-728    123
-729    124
-730    125
-731    125
-732    123
-733    122
-734    119
-735    109
-736    108
-737    107
-738    106
-739    105
-740    101
-741    100
-742    100
-743    100
-744    100
-745    100
-746    100
-747    108
-748    115
-749    106
-750    110
-751    116
-752    107
-753    120
-754    123
-755    124
-756    125
-757    125
-758    125
-759    125
-760    124
-761    120
-762    121
-763    112
-764    107
-765    110
-766    106
-767    108
-768    100
-769    101
-770    101
-771    113
-772    108
-773    108
-774    106
-775    122
-776    125
-777    125
-778    125
-779    124
-780    124
-781    123
-782    121
-783    118
-784    112
-785    110
-786    107
-787    110
-788    102
-789    102
-790    100
-791    100
-792    100
-793    101
-794    103
-795    100
-796    100
-797    100
-798    113
-799    106
-800    113
-801    120
-802    124
-803    124
-804    125
-805    125
-806    125
-807    125
-808    124
-809    122
-810    123
-811    117
-812    110
-813    108
-814    111
-815    106
-816    106
-817    101
-818    100
-819    100
-820    100
-821    104
-822    100
-823    100
-824    117
-825    101
-826    108
-827    119
-828    120
-829    124
-830    125
-831    125
-832    125
-833    125
-834    125
-835    124
-836    121
-837    121
-838    116
-839    111
-840    104
-841    108
-842    107
-843    106
-844    103
-845    100
-846    101
-847    100
-848    101
-849    106
-850    112
-851    106
-852    106
-853    113
-854    116
-855    121
-856    124
-857    125
-858    125
-859    125
-860    124
-861    125
-862    125
-863    124
-864    123
-865    121
-866    114
-867    108
-868    107
-869    106
-870    107
-871    106
-872    101
-873    101
-874    100
-875    101
-876    108
-877    100
-878    112
-879    100
-880    113
-881    109
-882    121
-883    122
-884    124
-885    124
-886    125
-887    125
-888    124
-889    125
-890    125
-891    124
-892    122
-893    119
-894    114
-895    108
-896    106
-897    107
-898    107
-899    104
-900    100
-901    101
-902    103
-903    100
-904    112
-905    101
-906    106
-907    114
-908    117
-909    119
-910    123
-911    123
-912    125
-913    125
-914    125
-915    125
-916    124
-917    124
-918    125
-919    124
-920    122
-921    122
-922    115
-923    109
-924    107
-925    107
-926    107
-927    105
-928    103
-929    101
-930    101
-931    111
-932    107
-933    113
-934    101
-935    115
-936    118
-937    121
-938    122
-939    125
-940    125
-941    125
-942    125
-943    125
-944    124
-945    122
-946    120
-947    115
-948    110
-949    108
-950    108
-951    107
-952    100
-953    100
-954    112
-955    101
-956    113
-957    120
-958    122
-959    123
-960    125
-961    125
-962    125
-963    125
-964    125
-965    125
-966    125
-967    125
-968    124
-969    124
-970    122
-971    120
-972    114
-973    110
-974    107
-975    106
-976    106
-977    105
-978    106
-979    113
-980    113
-981    100
-982    108
-983    107
-984    119
-985    121
-986    124
-987    125
-988    125
-989    125
-990    124
-991    125
-992    125
-993    125
-994    125
-995    125
-996    124
-997    123
-998    122
-999    120
-1000   112
-1001   108
-1002   107
-1003   107
-1004   106
-1005   109
-1006   101
-1007   113
-1008   108
-1009   114
-1010   102
-1011   117
-1012   121
-1013   123
-1014   125
-1015   125
-1016   125
-1017   125
-1018   125
-1019   125
-1020   125
-1021   125
-1022   125
-1023   124
-1024   125
-1026   123
-1028   122
-1030   118
-1032   109
-1034   107
-1036   107
-1038   107
-1040   108
-1042   109
-1044   101
-1046   113
-1048   107
-1050   102
-1052   111
-1054   115
-1056   120
-1058   124
-1060   125
-1062   125
-1064   125
-1066   125
-1068   125
-1070   125
-1072   125
-1074   125
-1076   125
-1078   125
-1080   125
-1082   125
-1084   125
-1086   125
-1088   123
-1090   121
-1092   116
-1094   107
-1096   108
-1098   106
-1100   112
-1102   118
-1104   100
-1106   107
-1108   114
-1110   119
-1112   122
-1114   123
-1116   125
-1118   125
-1120   125
-1122   124
-1124   125
-1126   125
-1128   125
-1130   125
-1132   125
-1134   125
-1136   125
-1138   125
-1140   125
-1142   125
-1144   123
-1146   122
-1148   118
-1150   112
-1152   109
-1154   116
-1156   113
-1158   119
-1160   114
-1162   114
-1164   112
-1166   119
-1168   122
-1170   124
-1172   125
-1174   125
-1176   125
-1178   125
-1180   125
-1182   125
-1184   125
-1186   125
-1188   125
-1190   125
-1192   124
-1194   125
-1196   125
-1198   125
-1200   124
-1202   124
-1204   121
-1206   120
-1208   117
-1210   119
-1212   119
-1214   108
-1216   120
-1218   119
-1220   120
-1222   125
-1224   125
-1226   125
-1228   125
-1230   125
-1232   125
-1234   125
-1236   125
-1238   125
-1240   125
-1242   124
-1244   123
-1246   122
-1248   119
-1250   120
-1252   108
-1254   115
-1256   113
-1258   117
-1260   121
-1262   123
-1264   124
-1266   125
-1268   124
-1270   125
-1272   125
-1274   125
-1276   125
-1278   125
-1280   125
-1282   125
-1284   125
-1286   125
-1288   125
-1290   125
-1292   125
-1294   125
-1296   125
-1298   124
-1300   125
-1302   131
-1304   116
-1306   123
-1308   120
-1310   115
-1312   120
-1314   126
-1316   126
-1318   126
-1320   125
-1322   125
-1324   125
-1326   125
-1328   125
-1330   124
-1332   125
-1334   124
-1336   125
-1338   125
-1340   125
-1342   125
-1344   125
-1346   125
-1348   125
-1350   125
-1352   125
-1354   134
-1356   123
-1358   121
-1360   128
-1362   123
-1364   121
-1366   128
-1368   129
-1370   128
-1372   126
-1374   125
-1376   125
-1378   125
-1380   125
-1382   125
-1384   125
-1386   125
-1388   125
-1390   125
-1392   125
-1394   125
-1396   125
-1398   125
-1400   125
-1402   125
-1404   125
-1406   125
-1408   128
-1410   125
-1412   136
-1414   135
-1416   119
-1418   127
-1420   127
-1422   129
-1424   130
-1426   100
-1428   100
-1430   101
-1432   96
-1434   100
-1436   101
-1438   100
-1440   101
-1442   99
-1444   101
-1446   101
-1448   97
-1450   99
-1452   98
-1454   100
-1456   99
-1458   99
-1460   98
-1462   100
-1464   100
-1466   100
-1468   101
-1470   100
-1472   100
-1474   100
-1476   100
-1478   100
-1480   100
-1482   100
-1484   100
-1486   100
-1488   101
-1490   100
-1492   104
-1494   102
-1496   99
-1498   98
-1500   94
-1502   100
-1504   101
-1506   101
-1508   100
-1510   100
-1512   99
-1514   101
-1516   100
-1518   100
-1520   97
-1522   101
-1524   100
-1526   100
-1528   100
-1530   100
-1532   100
-1534   100
-1536   101
-1538   100
-1540   100
-1542   100
-1544   100
-1546   100
-1548   101
-1550   101
-1552   101
-1554   101
-1556   99
-1558   99
-1560   100
-1562   97
-1564   103
-1566   99
-1568   100
-1570   100
-1572   99
-1574   102
-1576   99
-1578   99
-1580   100
-1582   100
-1584   100
-1586   100
-1588   100
-1590   100
-1592   101
-1594   99
-1596   96
-1598   99
-1600   95
-1602   100
-1604   96
-1606   102
-1608   102
-1610   97
-1612   96
-1614   98
-1616   99
-1618   101
-1620   101
-1622   100
-1624   100
-1626   100
-1628   100
-1630   100
-1632   100
-1634   100
-1636   100
-1638   100
-1640   100
-1642   100
-1644   100
-1646   100
-1648   100
-1650   100
-1652   98
-1654   98
-1656   101
-1658   101
-1660   100
-1662   100
-1664   101
-1666   97
-1668   101
-1670   99
-1672   95
-1674   98
-1676   98
-1678   101
-1680   99
-1682   98
-1684   101
-1686   100
-1688   100
-1690   100
-1692   100
-1694   100
-1696   100
-1698   100
-1700   100
-1702   100
-1704   100
-1706   100
-1708   101
-1710   99
-1712   98
-1714   100
-1716   100
-1718   103
-1720   100
-1722   103
-1724   100
-1726   102
-1728   97
-1730   100
-1732   99
-1734   101
-1736   103
-1738   101
-1740   101
-1742   101
-1744   100
-1746   100
-1748   100
-1750   100
-1752   100
-1754   101
-1756   100
-1758   100
-1760   100
-1762   100
-1764   100
-1766   102
-1768   103
-1770   98
-1772   101
-1774   103
-1776   100
-1778   104
-1780   96
-1782   101
-1784   99
-1786   103
-1788   102
-1790   102
-1792   98
-1794   102
-1796   102
-1798   100
-1800   100
-1802   100
-1804   100
-1806   100
-1808   100
-1810   100
-1812   100
-1814   100
-1816   100
-1818   101
-1820   100
-1822   102
-1824   100
-1826   99
-1828   99
-1830   104
-1832   103
-1834   104
-1836   104
-1838   104
-1840   100
-1842   105
-1844   101
-1846   103
-1848   103
-1850   102
-1852   102
-1854   102
-1856   101
-1858   100
-1860   100
-1862   100
-1864   101
-1866   100
-1868   101
-1870   100
-1872   100
-1874   100
-1876   100
-1878   100
-1880   100
-1882   101
-1884   104
-1886   106
-1888   102
-1890   101
-1892   106
-1894   105
-1896   103
-1898   106
-1900   106
-1902   104
-1904   104
-1906   105
-1908   104
-1910   102
-1912   103
-1914   101
-1916   100
-1918   101
-1920   100
-1922   100
-1924   100
-1926   100
-1928   100
-1930   100
-1932   100
-1934   100
-1936   100
-1938   101
-1940   100
-1942   101
-1944   100
-1946   105
-1948   103
-1950   106
-1952   107
-1954   106
-1956   104
-1958   105
-1960   105
-1962   103
-1964   106
-1966   105
-1968   102
-1970   101
-1972   101
-1974   100
-1976   100
-1978   100
-1980   100
-1982   100
-1984   101
-1986   101
-1988   101
-1990   101
-1992   101
-1994   101
-1996   102
-1998   100
-2000   105
-2002   109
-2004   105
-2006   104
-2008   105
-2010   105
-2012   106
-2014   106
-2016   108
-2018   106
-2020   104
-2022   102
-2024   103
-2026   103
-2028   102
-2030   100
-2032   101
-2034   101
-2036   101
-2038   100
-2040   101
-2042   100
-2044   101
-2046   100
-2048   100
-2052   101
-2056   101
-2060   105
-2064   106
-2068   102
-2072   109
-2076   107
-2080   108
-2084   107
-2088   107
-2092   108
-2096   104
-2100   108
-2104   107
-2108   109
-2112   105
-2116   105
-2120   101
-2124   103
-2128   101
-2132   102
-2136   100
-2140   100
-2144   100
-2148   100
-2152   100
-2156   101
-2160   100
-2164   100
-2168   106
-2172   108
-2176   107
-2180   108
-2184   109
-2188   111
-2192   108
-2196   107
-2200   107
-2204   112
-2208   108
-2212   106
-2216   104
-2220   102
-2224   101
-2228   100
-2232   100
-2236   101
-2240   101
-2244   101
-2248   100
-2252   101
-2256   101
-2260   102
-2264   103
-2268   101
-2272   101
-2276   107
-2280   103
-2284   109
-2288   110
-2292   112
-2296   108
-2300   111
-2304   112
-2308   111
-2312   109
-2316   112
-2320   110
-2324   111
-2328   107
-2332   105
-2336   104
-2340   101
-2344   101
-2348   102
-2352   102
-2356   101
-2360   101
-2364   101
-2368   101
-2372   100
-2376   102
-2380   101
-2384   101
-2388   101
-2392   103
-2396   107
-2400   109
-2404   111
-2408   107
-2412   112
-2416   108
-2420   111
-2424   113
-2428   113
-2432   112
-2436   114
-2440   107
-2444   112
-2448   113
-2452   109
-2456   103
-2460   101
-2464   100
-2468   103
-2472   101
-2476   101
-2480   101
-2484   101
-2488   100
-2492   101
-2496   105
-2500   101
-2504   107
-2508   103
-2512   111
-2516   112
-2520   111
-2524   108
-2528   113
-2532   112
-2536   116
-2540   116
-2544   114
-2548   115
-2552   112
-2556   113
-2560   113
-2564   111
-2568   109
-2572   109
-2576   102
-2580   102
-2584   101
-2588   104
-2592   101
-2596   100
-2600   101
-2604   104
-2608   101
-2612   101
-2616   106
-2620   108
-2624   112
-2628   112
-2632   116
-2636   115
-2640   115
-2644   117
-2648   113
-2652   114
-2656   112
-2660   114
-2664   111
-2668   106
-2672   102
-2676   102
-2680   102
-2684   103
-2688   102
-2692   102
-2696   101
-2700   101
-2704   101
-2708   101
-2712   101
-2716   103
-2720   109
-2724   112
-2728   112
-2732   113
-2736   117
-2740   118
-2744   113
-2748   118
-2752   115
-2756   114
-2760   117
-2764   114
-2768   115
-2772   113
-2776   113
-2780   111
-2784   108
-2788   103
-2792   101
-2796   104
-2800   102
-2804   105
-2808   101
-2812   107
-2816   106
-2820   106
-2824   102
-2828   104
-2832   108
-2836   112
-2840   111
-2844   116
-2848   114
-2852   118
-2856   118
-2860   119
-2864   118
-2868   117
-2872   118
-2876   124
-2880   126
-2884   119
-2888   124
-2892   118
-2896   121
-2900   114
-2904   118
-2908   123
-2912   116
-2916   116
-2920   123
-2924   121
-2928   120
-2932   121
-2936   125
-2940   105
-2944   126
-2948   111
-2952   129
-2956   116
-2960   111
-2964   116
-2968   129
-2972   128
-2976   119
-2980   128
-2984   123
-2988   127
-2992   130
-2996   129
-3000   118
-3004   128
-3008   122
-3012   115
-3016   127
-3020   114
-3024   119
-3028   118
-3032   119
-3036   126
-3040   102
-3044   111
-3048   103
-3052   111
-3056   104
-3060   109
-3064   104
-3068   109
-3072   131
-3076   131
-3080   114
-3084   117
-3088   129
-3092   127
-3096   127
-3100   128
-3104   125
-3108   127
-3112   124
-3116   127
-3120   121
-3124   128
-3128   117
-3132   122
-3136   113
-3140   121
-3144   112
-3148   126
-3152   104
-3156   105
-3160   114
-3164   102
-3168   114
-3172   124
-3176   127
-3180   109
-3184   131
-3188   117
-3192   115
-3196   129
-3200   129
-3204   122
-3208   121
-3212   122
-3216   129
-3220   129
-3224   126
-3228   127
-3232   127
-3236   126
-3240   124
-3244   120
-3248   119
-3252   125
-3256   112
-3260   121
-3264   106
-3268   125
-3272   126
-3276   121
-3280   117
-3284   126
-3288   126
-3292   131
-3296   111
-3300   105
-3304   117
-3308   116
-3312   116
-3316   120
-3320   130
-3324   129
-3328   126
-3332   128
-3336   129
-3340   127
-3344   121
-3348   125
-3352   115
-3356   127
-3360   126
-3364   127
-3368   111
-3372   121
-3376   131
-3380   118
-3384   111
-3388   131
-3392   132
-3396   132
-3400   130
-3404   128
-3408   127
-3412   129
-3416   128
-3420   125
-3424   127
-3428   129
-3432   126
-3436   120
-3440   125
-3444   126
-3448   116
-3452   131
-3456   124
-3460   129
-3464   117
-3468   130
-3472   130
-3476   133
-3480   102
-3484   133
-3488   135
-3492   115
-3496   131
-3500   120
-3504   120
-3508   123
-3512   124
-3516   126
-3520   129
-3524   132
-3528   129
-3532   129
-3536   127
-3540   130
-3544   123
-3548   129
-3552   132
-3556   127
-3560   129
-3564   129
-3568   121
-3572   131
-3576   117
-3580   135
-3584   121
-3588   131
-3592   112
-3596   121
-3600   136
-3604   119
-3608   123
-3612   119
-3616   121
-3620   132
-3624   131
-3628   129
-3632   127
-3636   132
-3640   128
-3644   131
-3648   127
-3652   129
-3656   130
-3660   128
-3664   133
-3668   124
-3672   125
-3676   122
-3680   128
-3684   120
-3688   116
-3692   114
-3696   127
-3700   112
-3704   125
-3708   127
-3712   114
-3716   136
-3720   136
-3724   135
-3728   133
-3732   133
-3736   134
-3740   133
-3744   128
-3748   129
-3752   127
-3756   129
-3760   131
-3764   132
-3768   129
-3772   129
-3776   131
-3780   134
-3784   128
-3788   123
-3792   126
-3796   126
-3800   115
-3804   128
-3808   127
-3812   133
-3816   136
-3820   114
-3824   138
-3828   122
-3832   128
-3836   140
-3840   116
-3844   127
-3848   134
-3852   136
-3856   131
-3860   129
-3864   128
-3868   129
-3872   132
-3876   131
-3880   128
-3884   130
-3888   131
-3892   132
-3896   131
-3900   127
-3904   130
-3908   127
-3912   134
-3916   123
-3920   129
-3924   135
-3928   128
-3932   118
-3936   117
-3940   142
-3944   132
-3948   124
-3952   138
-3956   139
-3960   136
-3964   131
-3968   132
-3972   132
-3976   127
-3980   130
-3984   130
-3988   129
-3992   129
-3996   132
-4000   132
-4004   132
-4008   130
-4012   133
-4016   132
-4020   136
-4024   128
-4028   131
-4032   121
-4036   130
-4040   138
-4044   142
-4048   121
-4052   132
-4056   123
-4060   130
-4064   123
-4068   134
-4072   135
-4076   135
-4080   134
-4084   132
-4088   131
-4092   131
-4096   131
-4104   136
-4112   131
-4120   137
-4128   135
-4136   128
-4144   128
-4152   131
-4160   120
-4168   143
-4176   144
-4184   143
-4192   143
-4200   126
-4208   139
-4216   138
-4224   136
-4232   133
-4240   133
-4248   137
-4256   132
-4264   135
-4272   133
-4280   135
-4288   132
-4296   134
-4304   131
-4312   131
-4320   131
-4328   143
-4336   148
-4344   141
-4352   140
-4360   136
-4368   137
-4376   138
-4384   136
-4392   142
-4400   139
-4408   140
-4416   136
-4424   140
-4432   141
-4440   133
-4448   140
-4456   138
-4464   146
-4472   139
-4480   139
-4488   141
-4496   138
-4504   139
-4512   138
-4520   136
-4528   140
-4536   146
-4544   146
-4552   145
-4560   145
-4568   143
-4576   139
-4584   140
-4592   141
-4600   141
-4608   146
-4616   146
-4624   140
-4632   137
-4640   144
-4648   138
-4656   140
-4664   139
-4672   140
-4680   143
-4688   144
-4696   142
-4704   142
-4712   140
-4720   142
-4728   141
-4736   137
-4744   139
-4752   140
-4760   141
-4768   141
-4776   142
-4784   145
-4792   146
-4800   140
-4808   146
-4816   138
-4824   141
-4832   144
-4840   136
-4848   142
-4856   146
-4864   143
-4872   147
-4880   140
-4888   143
-4896   146
-4904   146
-4912   144
-4920   145
-4928   142
-4936   142
-4944   139
-4952   143
-4960   139
-4968   140
-4976   142
-4984   144
-4992   145
-5000   139
-5008   145
-5016   147
-5024   140
-5032   146
-5040   148
-5048   140
-5056   140
-5064   144
-5072   142
-5080   143
-5088   143
-5096   145
-5104   146
-5112   144
-5120   147
-5128   142
-5136   146
-5144   147
-5152   143
-5160   141
-5168   142
-5176   140
-5184   137
-5192   140
-5200   144
-5208   144
-5216   143
-5224   143
-5232   144
-5240   147
-5248   143
-5256   146
-5264   140
-5272   146
-5280   146
-5288   142
-5296   2984
-5304   1277
-5312   142
-5320   286
-5328   239
-5336   267
-5344   211
-5352   140
-5360   141
-5368   144
-5376   145
-5384   145
-5392   148
-5400   144
-5408   149
-5416   146
-5424   150
-5432   143
-5440   144
-5448   149
-5456   148
-5464   145
-5472   146
-5480   146
-5488   147
-5496   146
-5504   143
-5512   141
-5520   145
-5528   137
-5536   145
-5544   143
-5552   142
-5560   143
-5568   146
-5576   145
-5584   148
-5592   145
-5600   145
-5608   145
-5616   149
-5624   143
-5632   150
-5640   150
-5648   148
-5656   145
-5664   147
-5672   146
-5680   148
-5688   149
-5696   148
-5704   150
-5712   147
-5720   149
-5728   144
-5736   146
-5744   147
-5752   140
-5760   148
-5768   211
-5776   147
-5784   151
-5792   150
-5800   151
-5808   149
-5816   146
-5824   153
-5832   159
-5840   146
-5848   154
-5856   151
-5864   149
-5872   152
-5880   147
-5888   150
-5896   149
-5904   151
-5912   149
-5920   148
-5928   151
-5936   150
-5944   150
-5952   150
-5960   150
-5968   148
-5976   149
-5984   148
-5992   147
-6000   148
-6008   150
-6016   150
-6024   150
-6032   149
-6040   146
-6048   158
-6056   144
-6064   149
-6072   147
-6080   152
-6088   153
-6096   149
-6104   151
-6112   150
-6120   150
-6128   149
-6136   149
-6144   150
-6152   151
-6160   151
-6168   151
-6176   150
-6184   150
-6192   151
-6200   150
-6208   149
-6216   149
-6224   151
-6232   151
-6240   153
-6248   153
-6256   152
-6264   148
-6272   150
-6280   150
-6288   153
-6296   151
-6304   152
-6312   149
-6320   152
-6328   148
-6336   150
-6344   151
-6352   152
-6360   151
-6368   150
-6376   153
-6384   153
-6392   151
-6400   151
-6408   151
-6416   150
-6424   151
-6432   151
-6440   152
-6448   151
-6456   153
-6464   152
-6472   151
-6480   151
-6488   155
-6496   155
-6504   155
-6512   158
-6520   155
-6528   154
-6536   152
-6544   154
-6552   152
-6560   152
-6568   151
-6576   153
-6584   152
-6592   152
-6600   152
-6608   153
-6616   151
-6624   151
-6632   153
-6640   151
-6648   154
-6656   152
-6664   153
-6672   151
-6680   151
-6688   160
-6696   160
-6704   151
-6712   152
-6720   155
-6728   158
-6736   153
-6744   158
-6752   878
-6760   157
-6768   780
-6776   152
-6784   175
-6792   154
-6800   153
-6808   154
-6816   156
-6824   152
-6832   157
-6840   155
-6848   158
-6856   159
-6864   158
-6872   155
-6880   154
-6888   150
-6896   154
-6904   155
-6912   154
-6920   154
-6928   151
-6936   153
-6944   152
-6952   152
-6960   152
-6968   154
-6976   154
-6984   151
-6992   153
-7000   154
-7008   157
-7016   157
-7024   156
-7032   156
-7040   153
-7048   160
-7056   158
-7064   156
-7072   156
-7080   157
-7088   161
-7096   162
-7104   156
-7112   156
-7120   158
-7128   157
-7136   155
-7144   155
-7152   157
-7160   155
-7168   152
-7176   153
-7184   152
-7192   155
-7200   152
-7208   154
-7216   177
-7224   157
-7232   158
-7240   156
-7248   160
-7256   155
-7264   158
-7272   155
-7280   155
-7288   156
-7296   157
-7304   154
-7312   162
-7320   160
-7328   158
-7336   161
-7344   162
-7352   163
-7360   161
-7368   162
-7376   164
-7384   161
-7392   162
-7400   160
-7408   162
-7416   162
-7424   161
-7432   161
-7440   161
-7448   157
-7456   156
-7464   157
-7472   154
-7480   160
-7488   156
-7496   156
-7504   162
-7512   157
-7520   156
-7528   161
-7536   160
-7544   164
-7552   162
-7560   163
-7568   163
-7576   164
-7584   164
-7592   163
-7600   162
-7608   164
-7616   162
-7624   161
-7632   162
-7640   163
-7648   163
-7656   160
-7664   161
-7672   162
-7680   161
-7688   157
-7696   160
-7704   161
-7712   156
-7720   157
-7728   155
-7736   162
-7744   156
-7752   161
-7760   159
-7768   162
-7776   164
-7784   163
-7792   165
-7800   167
-7808   166
-7816   165
-7824   165
-7832   165
-7840   164
-7848   164
-7856   166
-7864   166
-7872   163
-7880   164
-7888   163
-7896   162
-7904   165
-7912   157
-7920   155
-7928   163
-7936   160
-7944   163
-7952   162
-7960   163
-7968   162
-7976   160
-7984   162
-7992   164
-8000   165
-8008   166
-8016   166
-8024   164
-8032   168
-8040   168
-8048   167
-8056   166
-8064   167
-8072   167
-8080   167
-8088   166
-8096   164
-8104   165
-8112   166
-8120   167
-8128   168
-8136   164
-8144   161
-8152   162
-8160   167
-8168   167
-8176   165
-8184   165
-8192   164
-8208   165
-8224   168
-8240   167
-8256   168
-8272   169
-8288   167
-8304   167
-8320   168
-8336   167
-8352   166
-8368   167
-8384   166
-8400   169
-8416   166
-8432   170
-8448   170
-8464   167
-8480   167
-8496   167
-8512   168
-8528   159
-8544   168
-8560   168
-8576   168
-8592   169
-8608   169
-8624   169
-8640   171
-8656   170
-8672   172
-8688   172
-8704   173
-8720   171
-8736   171
-8752   170
-8768   173
-8784   169
-8800   171
-8816   168
-8832   170
-8848   170
-8864   171
-8880   171
-8896   169
-8912   171
-8928   166
-8944   170
-8960   166
-8976   169
-8992   172
-9008   173
-9024   173
-9040   172
-9056   172
-9072   173
-9088   172
-9104   172
-9120   173
-9136   172
-9152   172
-9168   172
-9184   173
-9200   173
-9216   172
-9232   172
-9248   170
-9264   173
-9280   174
-9296   175
-9312   174
-9328   173
-9344   173
-9360   173
-9376   240
-9392   244
-9408   244
-9424   243
-9440   249
-9456   250
-9472   247
-9488   244
-9504   251
-9520   250
-9536   250
-9552   259
-9568   252
-9584   250
-9600   251
-9616   250
-9632   251
-9648   250
-9664   251
-9680   250
-9696   250
-9712   251
-9728   250
-9744   251
-9760   251
-9776   251
-9792   251
-9808   250
-9824   250
-9840   252
-9856   251
-9872   251
-9888   251
-9904   251
-9920   251
-9936   252
-9952   251
-9968   251
-9984   251
-10000  251
-10016  251
-10032  251
-10048  251
-10064  251
-10080  251
-10096  250
-10112  251
-10128  277
-10144  274
-10160  276
-10176  275
-10192  275
-10208  275
-10224  278
-10240  276
-10256  274
-10272  277
-10288  279
-10304  277
-10320  275
-10336  277
-10352  280
-10368  277
-10384  272
-10400  275
-10416  281
-10432  279
-10448  278
-10464  279
-10480  279
-10496  275
-10512  277
-10528  278
-10544  279
-10560  280
-10576  282
-10592  281
-10608  277
-10624  278
-10640  281
-10656  279
-10672  280
-10688  277
-10704  277
-10720  279
-10736  280
-10752  277
-10768  279
-10784  274
-10800  278
-10816  282
-10832  277
-10848  276
-10864  283
-10880  283
-10896  282
-10912  280
-10928  281
-10944  283
-10960  281
-10976  283
-10992  282
-11008  280
-11024  282
-11040  280
-11056  285
-11072  283
-11088  369
-11104  279
-11120  282
-11136  280
-11152  279
-11168  281
-11184  285
-11200  283
-11216  277
-11232  283
-11248  284
-11264  282
-11280  280
-11296  280
-11312  284
-11328  279
-11344  284
-11360  281
-11376  282
-11392  281
-11408  280
-11424  278
-11440  282
-11456  283
-11472  282
-11488  280
-11504  281
-11520  284
-11536  282
-11552  293
-11568  283
-11584  296
-11600  279
-11616  277
-11632  282
-11648  302
-11664  293
-11680  285
-11696  279
-11712  285
-11728  280
-11744  279
-11760  282
-11776  278
-11792  282
-11808  285
-11824  281
-11840  281
-11856  280
-11872  281
-11888  281
-11904  307
-11920  281
-11936  283
-11952  286
-11968  281
-11984  283
-12000  296
-12016  279
-12032  285
-12048  286
-12064  294
-12080  297
-12096  307
-12112  277
-12128  277
-12144  281
-12160  283
-12176  308
-12192  286
-12208  281
-12224  291
-12240  286
-12256  279
-12272  304
-12288  290
-12304  298
-12320  282
-12336  278
-12352  290
-12368  278
-12384  281
-12400  281
-12416  288
-12432  280
-12448  298
-12464  302
-12480  310
-12496  280
-12512  282
-12528  302
-12544  304
-12560  306
-12576  278
-12592  279
-12608  301
-12624  286
-12640  283
-12656  280
-12672  286
-12688  280
-12704  286
-12720  313
-12736  279
-12752  281
-12768  307
-12784  294
-12800  304
-12816  285
-12832  280
-12848  316
-12864  302
-12880  289
-12896  286
-12912  328
-12928  294
-12944  281
-12960  312
-12976  294
-12992  335
-13008  298
-13024  320
-13040  292
-13056  319
-13072  282
-13088  307
-13104  285
-13120  283
-13136  290
-13152  293
-13168  325
-13184  281
-13200  310
-13216  284
-13232  286
-13248  284
-13264  301
-13280  309
-13296  286
-13312  285
-13328  316
-13344  309
-13360  287
-13376  298
-13392  292
-13408  319
-13424  300
-13440  284
-13456  320
-13472  304
-13488  332
-13504  312
-13520  303
-13536  293
-13552  321
-13568  288
-13584  296
-13600  286
-13616  311
-13632  322
-13648  287
-13664  324
-13680  313
-13696  334
-13712  319
-13728  288
-13744  287
-13760  340
-13776  297
-13792  284
-13808  322
-13824  339
-13840  328
-13856  288
-13872  335
-13888  297
-13904  286
-13920  294
-13936  285
-13952  290
-13968  332
-13984  286
-14000  338
-14016  290
-14032  297
-14048  348
-14064  290
-14080  288
-14096  340
-14112  332
-14128  291
-14144  330
-14160  327
-14176  307
-14192  311
-14208  294
-14224  338
-14240  342
-14256  356
-14272  321
-14288  330
-14304  321
-14320  289
-14336  330
-14352  287
-14368  288
-14384  288
-14400  330
-14416  347
-14432  288
-14448  316
-14464  299
-14480  311
-14496  298
-14512  295
-14528  328
-14544  319
-14560  338
-14576  341
-14592  326
-14608  313
-14624  334
-14640  320
-14656  315
-14672  318
-14688  314
-14704  361
-14720  352
-14736  296
-14752  307
-14768  325
-14784  363
-14800  340
-14816  363
-14832  301
-14848  326
-14864  366
-14880  323
-14896  341
-14912  359
-14928  356
-14944  334
-14960  337
-14976  371
-14992  319
-15008  287
-15024  344
-15040  322
-15056  366
-15072  346
-15088  317
-15104  301
-15120  330
-15136  345
-15152  324
-15168  346
-15184  352
-15200  327
-15216  334
-15232  344
-15248  334
-15264  367
-15280  338
-15296  338
-15312  364
-15328  368
-15344  315
-15360  357
-15376  348
-15392  325
-15408  334
-15424  374
-15440  358
-15456  360
-15472  351
-15488  356
-15504  372
-15520  346
-15536  363
-15552  334
-15568  352
-15584  369
-15600  359
-15616  326
-15632  341
-15648  372
-15664  370
-15680  374
-15696  366
-15712  368
-15728  369
-15744  349
-15760  355
-15776  368
-15792  354
-15808  366
-15824  346
-15840  342
-15856  363
-15872  371
-15888  347
-15904  324
-15920  368
-15936  367
-15952  373
-15968  367
-15984  372
-16000  364
-16016  372
-16032  356
-16048  372
-16064  371
-16080  372
-16096  366
-16112  370
-16128  363
-16144  371
-16160  374
-16176  352
-16192  359
-16208  364
-16224  359
-16240  362
-16256  330
-16272  369
-16288  322
-16304  362
-16320  381
-16336  370
-16352  375
-16368  374
-16384  372
-16416  378
-16448  373
-16480  373
-16512  372
-16544  380
-16576  377
-16608  372
-16640  371
-16672  376
-16704  374
-16736  363
-16768  372
-16800  373
-16832  375
-16864  379
-16896  383
-16928  381
-16960  376
-16992  374
-17024  373
-17056  381
-17088  373
-17120  385
-17152  373
-17184  383
-17216  378
-17248  376
-17280  376
-17312  385
-17344  384
-17376  383
-17408  383
-17440  387
-17472  379
-17504  393
-17536  382
-17568  379
-17600  391
-17632  390
-17664  383
-17696  384
-17728  388
-17760  388
-17792  382
-17824  388
-17856  394
-17888  388
-17920  388
-17952  383
-17984  385
-18016  379
-18048  390
-18080  394
-18112  387
-18144  392
-18176  385
-18208  396
-18240  388
-18272  393
-18304  386
-18336  480
-18368  402
-18400  398
-18432  395
-18464  399
-18496  390
-18528  392
-18560  388
-18592  392
-18624  391
-18656  389
-18688  393
-18720  385
-18752  395
-18784  390
-18816  393
-18848  393
-18880  389
-18912  392
-18944  391
-18976  390
-19008  392
-19040  396
-19072  389
-19104  389
-19136  393
-19168  394
-19200  390
-19232  390
-19264  399
-19296  392
-19328  394
-19360  397
-19392  396
-19424  389
-19456  392
-19488  395
-19520  397
-19552  399
-19584  395
-19616  403
-19648  397
-19680  396
-19712  396
-19744  397
-19776  398
-19808  389
-19840  396
-19872  401
-19904  401
-19936  399
-19968  398
-20000  401
-20032  395
-20064  399
-20096  395
-20128  401
-20160  394
-20192  396
-20224  397
-20256  394
-20288  396
-20320  396
-20352  392
-20384  402
-20416  409
-20448  392
-20480  396
-20512  390
-20544  392
-20576  394
-20608  397
-20640  393
-20672  399
-20704  393
-20736  411
-20768  396
-20800  400
-20832  394
-20864  399
-20896  398
-20928  398
-20960  400
-20992  413
-21024  398
-21056  396
-21088  416
-21120  397
-21152  395
-21184  411
-21216  400
-21248  396
-21280  397
-21312  398
-21344  393
-21376  400
-21408  418
-21440  401
-21472  396
-21504  399
-21536  398
-21568  397
-21600  399
-21632  396
-21664  399
-21696  399
-21728  410
-21760  412
-21792  415
-21824  410
-21856  405
-21888  409
-21920  411
-21952  408
-21984  415
-22016  396
-22048  409
-22080  412
-22112  411
-22144  415
-22176  412
-22208  410
-22240  412
-22272  414
-22304  415
-22336  412
-22368  417
-22400  411
-22432  413
-22464  419
-22496  413
-22528  415
-22560  409
-22592  414
-22624  413
-22656  421
-22688  411
-22720  408
-22752  414
-22784  414
-22816  400
-22848  395
-22880  413
-22912  421
-22944  416
-22976  416
-23008  417
-23040  416
-23072  395
-23104  415
-23136  417
-23168  421
-23200  416
-23232  410
-23264  411
-23296  412
-23328  410
-23360  398
-23392  412
-23424  411
-23456  412
-23488  412
-23520  407
-23552  412
-23584  415
-23616  411
-23648  411
-23680  413
-23712  409
-23744  411
-23776  418
-23808  414
-23840  410
-23872  410
-23904  417
-23936  414
-23968  414
-24000  413
-24032  412
-24064  419
-24096  411
-24128  421
-24160  416
-24192  417
-24224  414
-24256  413
-24288  414
-24320  418
-24352  416
-24384  409
-24416  418
-24448  412
-24480  421
-24512  417
-24544  421
-24576  418
-24608  434
-24640  428
-24672  430
-24704  430
-24736  434
-24768  438
-24800  432
-24832  434
-24864  429
-24896  432
-24928  430
-24960  434
-24992  428
-25024  432
-25056  435
-25088  434
-25120  424
-25152  429
-25184  433
-25216  433
-25248  426
-25280  430
-25312  434
-25344  429
-25376  439
-25408  432
-25440  440
-25472  434
-25504  431
-25536  436
-25568  441
-25600  436
-25632  449
-25664  449
-25696  443
-25728  437
-25760  439
-25792  441
-25824  441
-25856  442
-25888  451
-25920  448
-25952  450
-25984  443
-26016  434
-26048  457
-26080  461
-26112  456
-26144  457
-26176  464
-26208  450
-26240  465
-26272  451
-26304  455
-26336  467
-26368  463
-26400  453
-26432  456
-26464  456
-26496  455
-26528  463
-26560  447
-26592  455
-26624  455
-26656  462
-26688  457
-26720  466
-26752  465
-26784  460
-26816  458
-26848  454
-26880  458
-26912  463
-26944  453
-26976  477
-27008  455
-27040  460
-27072  471
-27104  475
-27136  459
-27168  488
-27200  464
-27232  459
-27264  472
-27296  469
-27328  461
-27360  476
-27392  465
-27424  473
-27456  472
-27488  484
-27520  482
-27552  491
-27584  482
-27616  471
-27648  480
-27680  481
-27712  482
-27744  484
-27776  476
-27808  486
-27840  484
-27872  485
-27904  494
-27936  478
-27968  478
-28000  490
-28032  478
-28064  481
-28096  480
-28128  478
-28160  487
-28192  487
-28224  481
-28256  491
-28288  479
-28320  495
-28352  486
-28384  480
-28416  480
-28448  501
-28480  478
-28512  491
-28544  489
-28576  472
-28608  497
-28640  483
-28672  494
-28704  474
-28736  491
-28768  494
-28800  503
-28832  490
-28864  503
-28896  500
-28928  493
-28960  495
-28992  492
-29024  496
-29056  487
-29088  498
-29120  491
-29152  491
-29184  502
-29216  489
-29248  489
-29280  488
-29312  497
-29344  506
-29376  495
-29408  494
-29440  491
-29472  504
-29504  498
-29536  501
-29568  512
-29600  496
-29632  488
-29664  489
-29696  503
-29728  502
-29760  490
-29792  502
-29824  494
-29856  510
-29888  501
-29920  1673
-29952  506
-29984  490
-30016  504
-30048  497
-30080  491
-30112  509
-30144  489
-30176  495
-30208  500
-30240  502
-30272  508
-30304  498
-30336  527
-30368  517
-30400  514
-30432  509
-30464  524
-30496  520
-30528  527
-30560  520
-30592  510
-30624  525
-30656  524
-30688  509
-30720  518
-30752  533
-30784  525
-30816  515
-30848  520
-30880  525
-30912  519
-30944  502
-30976  516
-31008  510
-31040  518
-31072  526
-31104  533
-31136  513
-31168  519
-31200  513
-31232  519
-31264  518
-31296  535
-31328  519
-31360  549
-31392  527
-31424  527
-31456  518
-31488  544
-31520  527
-31552  518
-31584  515
-31616  527
-31648  510
-31680  525
-31712  539
-31744  519
-31776  532
-31808  516
-31840  560
-31872  534
-31904  575
-31936  555
-31968  547
-32000  526
-32032  515
-32064  545
-32096  551
-32128  543
-32160  532
-32192  522
-32224  524
-32256  565
-32288  520
-32320  527
-32352  525
-32384  548
-32416  537
-32448  514
-32480  545
-32512  536
-32544  527
-32576  551
-32608  549
-32640  573
-32672  525
-32704  537
-32736  545
-32768  524
-32832  538
-32896  538
-32960  534
-33024  563
-33088  528
-33152  567
-33216  528
-33280  566
-33344  574
-33408  569
-33472  549
-33536  572
-33600  571
-33664  520
-33728  585
-33792  570
-33856  582
-33920  544
-33984  581
-34048  551
-34112  572
-34176  578
-34240  571
-34304  590
-34368  581
-34432  585
-34496  582
-34560  568
-34624  584
-34688  587
-34752  591
-34816  591
-34880  584
-34944  581
-35008  586
-35072  562
-35136  573
-35200  587
-35264  593
-35328  594
-35392  600
-35456  568
-35520  589
-35584  586
-35648  591
-35712  591
-35776  595
-35840  589
-35904  600
-35968  608
-36032  600
-36096  612
-36160  599
-36224  612
-36288  602
-36352  611
-36416  607
-36480  602
-36544  606
-36608  605
-36672  603
-36736  591
-36800  608
-36864  612
-36928  610
-36992  604
-37056  615
-37120  613
-37184  619
-37248  613
-37312  607
-37376  611
-37440  615
-37504  611
-37568  626
-37632  618
-37696  619
-37760  623
-37824  618
-37888  630
-37952  615
-38016  622
-38080  624
-38144  622
-38208  616
-38272  629
-38336  623
-38400  616
-38464  625
-38528  614
-38592  626
-38656  635
-38720  624
-38784  624
-38848  623
-38912  615
-38976  622
-39040  629
-39104  635
-39168  623
-39232  639
-39296  634
-39360  629
-39424  642
-39488  637
-39552  637
-39616  637
-39680  648
-39744  640
-39808  647
-39872  636
-39936  632
-40000  645
-40064  638
-40128  645
-40192  640
-40256  644
-40320  635
-40384  629
-40448  641
-40512  647
-40576  648
-40640  646
-40704  640
-40768  643
-40832  657
-40896  638
-40960  647
-41024  648
-41088  649
-41152  644
-41216  642
-41280  644
-41344  648
-41408  648
-41472  663
-41536  646
-41600  666
-41664  651
-41728  656
-41792  650
-41856  647
-41920  653
-41984  667
-42048  664
-42112  672
-42176  670
-42240  660
-42304  667
-42368  673
-42432  659
-42496  674
-42560  675
-42624  670
-42688  673
-42752  662
-42816  666
-42880  670
-42944  664
-43008  673
-43072  675
-43136  680
-43200  680
-43264  672
-43328  671
-43392  678
-43456  680
-43520  689
-43584  683
-43648  697
-43712  699
-43776  685
-43840  675
-43904  680
-43968  685
-44032  681
-44096  683
-44160  688
-44224  681
-44288  702
-44352  705
-44416  685
-44480  689
-44544  694
-44608  692
-44672  688
-44736  688
-44800  694
-44864  708
-44928  702
-44992  700
-45056  707
-45120  704
-45184  707
-45248  707
-45312  702
-45376  707
-45440  709
-45504  710
-45568  710
-45632  710
-45696  714
-45760  710
-45824  701
-45888  709
-45952  712
-46016  706
-46080  714
-46144  712
-46208  711
-46272  716
-46336  715
-46400  724
-46464  726
-46528  720
-46592  713
-46656  713
-46720  710
-46784  719
-46848  716
-46912  715
-46976  725
-47040  725
-47104  715
-47168  725
-47232  718
-47296  719
-47360  725
-47424  728
-47488  715
-47552  721
-47616  718
-47680  712
-47744  735
-47808  727
-47872  737
-47936  742
-48000  736
-48064  738
-48128  740
-48192  728
-48256  732
-48320  729
-48384  743
-48448  736
-48512  733
-48576  739
-48640  741
-48704  742
-48768  741
-48832  742
-48896  735
-48960  735
-49024  740
-49088  738
-49152  737
-49216  747
-49280  739
-49344  740
-49408  744
-49472  749
-49536  756
-49600  744
-49664  733
-49728  748
-49792  744
-49856  743
-49920  752
-49984  748
-50048  750
-50112  741
-50176  752
-50240  745
-50304  751
-50368  741
-50432  748
-50496  742
-50560  751
-50624  751
-50688  747
-50752  764
-50816  749
-50880  759
-50944  752
-51008  757
-51072  760
-51136  759
-51200  755
-51264  759
-51328  748
-51392  758
-51456  760
-51520  747
-51584  755
-51648  761
-51712  764
-51776  763
-51840  761
-51904  782
-51968  766
-52032  764
-52096  761
-52160  759
-52224  772
-52288  773
-52352  764
-52416  768
-52480  779
-52544  770
-52608  757
-52672  779
-52736  773
-52800  769
-52864  778
-52928  773
-52992  786
-53056  778
-53120  772
-53184  771
-53248  771
-53312  771
-53376  772
-53440  776
-53504  800
-53568  792
-53632  791
-53696  783
-53760  801
-53824  798
-53888  795
-53952  786
-54016  796
-54080  783
-54144  792
-54208  788
-54272  802
-54336  787
-54400  782
-54464  779
-54528  794
-54592  794
-54656  785
-54720  789
-54784  791
-54848  808
-54912  798
-54976  799
-55040  805
-55104  791
-55168  803
-55232  812
-55296  805
-55360  812
-55424  814
-55488  802
-55552  810
-55616  798
-55680  806
-55744  807
-55808  803
-55872  811
-55936  814
-56000  807
-56064  799
-56128  804
-56192  816
-56256  805
-56320  805
-56384  820
-56448  821
-56512  823
-56576  808
-56640  810
-56704  809
-56768  826
-56832  831
-56896  812
-56960  823
-57024  825
-57088  820
-57152  812
-57216  822
-57280  809
-57344  832
-57408  811
-57472  824
-57536  810
-57600  821
-57664  821
-57728  817
-57792  819
-57856  835
-57920  833
-57984  838
-58048  823
-58112  826
-58176  830
-58240  844
-58304  828
-58368  828
-58432  821
-58496  825
-58560  839
-58624  850
-58688  829
-58752  838
-58816  826
-58880  838
-58944  835
-59008  828
-59072  830
-59136  838
-59200  847
-59264  829
-59328  851
-59392  847
-59456  837
-59520  838
-59584  835
-59648  842
-59712  846
-59776  849
-59840  854
-59904  848
-59968  856
-60032  859
-60096  838
-60160  848
-60224  849
-60288  858
-60352  846
-60416  849
-60480  848
-60544  855
-60608  847
-60672  870
-60736  857
-60800  858
-60864  882
-60928  862
-60992  853
-61056  857
-61120  851
-61184  866
-61248  848
-61312  872
-61376  873
-61440  881
-61504  864
-61568  878
-61632  880
-61696  871
-61760  877
-61824  863
-61888  879
-61952  861
-62016  867
-62080  877
-62144  876
-62208  884
-62272  866
-62336  860
-62400  882
-62464  874
-62528  865
-62592  867
-62656  886
-62720  875
-62784  877
-62848  872
-62912  861
-62976  899
-63040  870
-63104  885
-63168  889
-63232  863
-63296  876
-63360  868
-63424  866
-63488  879
-63552  885
-63616  869
-63680  878
-63744  885
-63808  884
-63872  878
-63936  882
-64000  889
-64064  878
-64128  895
-64192  875
-64256  889
-64320  882
-64384  880
-64448  889
-64512  883
-64576  886
-64640  879
-64704  892
-64768  880
-64832  890
-64896  908
-64960  919
-65024  882
-65088  896
-65152  895
-65216  894
-65280  891
-65344  889
-65408  891
-65472  1164
-65536  1148
-65664  1172
-65792  1171
-65920  1164
-66048  1162
-66176  1176
-66304  1169
-66432  1184
-66560  1171
-66688  1198
-66816  1176
-66944  1169
-67072  1185
-67200  1180
-67328  1186
-67456  1170
-67584  1191
-67712  1171
-67840  1170
-67968  1194
-68096  1186
-68224  1175
-68352  1188
-68480  1190
-68608  1181
-68736  1195
-68864  1192
-68992  1198
-69120  1195
-69248  1198
-69376  1189
-69504  1196
-69632  1199
-69760  1201
-69888  1209
-70016  1208
-70144  1217
-70272  1213
-70400  1197
-70528  1209
-70656  1215
-70784  1221
-70912  1215
-71040  1218
-71168  1223
-71296  1213
-71424  1257
-71552  1225
-71680  1228
-71808  1207
-71936  1225
-72064  1239
-72192  1213
-72320  1230
-72448  1229
-72576  1229
-72704  1232
-72832  1260
-72960  1218
-73088  1225
-73216  1227
-73344  1231
-73472  1253
-73600  1238
-73728  1242
-73856  1240
-73984  1236
-74112  1245
-74240  1249
-74368  1242
-74496  1226
-74624  1264
-74752  1237
-74880  1257
-75008  1253
-75136  1257
-75264  1258
-75392  1260
-75520  1272
-75648  1263
-75776  1267
-75904  1258
-76032  1275
-76160  1269
-76288  1281
-76416  1271
-76544  1267
-76672  1277
-76800  1264
-76928  1275
-77056  1267
-77184  1272
-77312  1284
-77440  1275
-77568  1305
-77696  1308
-77824  1303
-77952  1284
-78080  1284
-78208  1280
-78336  1314
-78464  1286
-78592  1291
-78720  1278
-78848  1300
-78976  1280
-79104  1272
-79232  1270
-79360  1300
-79488  1323
-79616  1289
-79744  1310
-79872  1298
-80000  1345
-80128  1333
-80256  1302
-80384  1306
-80512  1334
-80640  1318
-80768  1304
-80896  1303
-81024  1347
-81152  1326
-81280  1303
-81408  1323
-81536  1316
-81664  1315
-81792  1335
-81920  1347
-82048  1316
-82176  1328
-82304  1315
-82432  1342
-82560  1338
-82688  1322
-82816  1320
-82944  1329
-83072  1366
-83200  1323
-83328  1356
-83456  1367
-83584  1338
-83712  1369
-83840  1369
-83968  1341
-84096  1343
-84224  1364
-84352  1345
-84480  1349
-84608  1348
-84736  1335
-84864  1337
-84992  1365
-85120  1355
-85248  1361
-85376  1348
-85504  1345
-85632  1329
-85760  1343
-85888  1365
-86016  1367
-86144  1333
-86272  1357
-86400  1349
-86528  1360
-86656  1393
-86784  1364
-86912  1385
-87040  1401
-87168  1368
-87296  1364
-87424  1378
-87552  1354
-87680  1400
-87808  1368
-87936  1372
-88064  1383
-88192  1399
-88320  1376
-88448  1418
-88576  1388
-88704  1382
-88832  1386
-88960  1408
-89088  1377
-89216  1383
-89344  1376
-89472  1389
-89600  1376
-89728  1417
-89856  1380
-89984  1402
-90112  1394
-90240  1389
-90368  1419
-90496  1393
-90624  1386
-90752  1388
-90880  1402
-91008  1382
-91136  1403
-91264  1379
-91392  1431
-91520  1432
-91648  1435
-91776  1404
-91904  1402
-92032  1434
-92160  1431
-92288  1402
-92416  1401
-92544  1412
-92672  1418
-92800  1423
-92928  1389
-93056  1442
-93184  1425
-93312  1428
-93440  1403
-93568  1430
-93696  1452
-93824  1401
-93952  1414
-94080  1415
-94208  1414
-94336  1421
-94464  1444
-94592  1421
-94720  1462
-94848  1457
-94976  1422
-95104  1423
-95232  1432
-95360  1416
-95488  1447
-95616  1442
-95744  1446
-95872  1444
-96000  1443
-96128  1426
-96256  1437
-96384  1442
-96512  1423
-96640  1457
-96768  1464
-96896  1454
-97024  1439
-97152  1464
-97280  1447
-97408  1437
-97536  1417
-97664  1430
-97792  1475
-97920  1446
-98048  1450
-98176  1445
-98304  1421
-98432  1445
-98560  1443
-98688  1441
-98816  1482
-98944  1447
-99072  1466
-99200  1449
-99328  1455
-99456  1467
-99584  1489
-99712  1461
-99840  1452
-99968  1466
-100096 1465
-100224 1458
-100352 1451
-100480 1510
-100608 1448
-100736 1468
-100864 1489
-100992 1480
-101120 1445
-101248 1487
-101376 1476
-101504 1475
-101632 1466
-101760 1455
-101888 1505
-102016 1465
-102144 1462
-102272 1488
-102400 1483
-102528 1514
-102656 1489
-102784 1491
-102912 1478
-103040 1474
-103168 1498
-103296 1497
-103424 1526
-103552 1521
-103680 1461
-103808 1532
-103936 1493
-104064 1469
-104192 1481
-104320 1482
-104448 1522
-104576 1515
-104704 1537
-104832 1504
-104960 1537
-105088 1500
-105216 1478
-105344 1514
-105472 1472
-105600 1483
-105728 1555
-105856 1481
-105984 1504
-106112 1537
-106240 1502
-106368 1530
-106496 1518
-106624 1506
-106752 1517
-106880 1543
-107008 1550
-107136 1506
-107264 1525
-107392 1548
-107520 1564
-107648 1549
-107776 1514
-107904 1526
-108032 1522
-108160 1557
-108288 1532
-108416 1531
-108544 1538
-108672 1544
-108800 1568
-108928 1550
-109056 1540
-109184 1527
-109312 1541
-109440 1519
-109568 1579
-109696 1532
-109824 1598
-109952 1547
-110080 1573
-110208 1545
-110336 1566
-110464 1553
-110592 1547
-110720 1566
-110848 1582
-110976 1568
-111104 1557
-111232 1559
-111360 1590
-111488 1561
-111616 1547
-111744 1574
-111872 1572
-112000 1542
-112128 1611
-112256 1554
-112384 1579
-112512 1581
-112640 1563
-112768 1592
-112896 1593
-113024 1553
-113152 1592
-113280 1590
-113408 1569
-113536 1596
-113664 1606
-113792 1594
-113920 1642
-114048 1570
-114176 1642
-114304 1648
-114432 1570
-114560 1630
-114688 1649
-114816 1581
-114944 1628
-115072 1573
-115200 1628
-115328 1631
-115456 1576
-115584 1635
-115712 1624
-115840 1592
-115968 1634
-116096 1614
-116224 1661
-116352 1609
-116480 1662
-116608 1577
-116736 1662
-116864 1647
-116992 1617
-117120 1627
-117248 1657
-117376 1631
-117504 1598
-117632 1681
-117760 1643
-117888 1634
-118016 1618
-118144 1639
-118272 1651
-118400 1605
-118528 1591
-118656 1655
-118784 1631
-118912 1622
-119040 1624
-119168 1629
-119296 1598
-119424 1665
-119552 1676
-119680 1620
-119808 1616
-119936 1624
-120064 1669
-120192 1673
-120320 1638
-120448 1627
-120576 1611
-120704 1700
-120832 1653
-120960 1715
-121088 1661
-121216 1659
-121344 1640
-121472 1666
-121600 1662
-121728 1680
-121856 1679
-121984 1707
-122112 1640
-122240 1626
-122368 1684
-122496 1666
-122624 1652
-122752 1633
-122880 1674
-123008 1676
-123136 1665
-123264 1687
-123392 1664
-123520 1659
-123648 1643
-123776 1672
-123904 1694
-124032 1641
-124160 1752
-124288 1648
-124416 1658
-124544 1720
-124672 1711
-124800 1723
-124928 1662
-125056 1647
-125184 1772
-125312 1671
-125440 1647
-125568 1719
-125696 1636
-125824 1694
-125952 1648
-126080 1750
-126208 1713
-126336 1771
-126464 1748
-126592 1655
-126720 1720
-126848 1720
-126976 1675
-127104 1662
-127232 1722
-127360 1675
-127488 1667
-127616 1671
-127744 1668
-127872 1659
-128000 1701
-128128 1667
-128256 1731
-128384 1671
-128512 1670
-128640 1675
-128768 1688
-128896 1690
-129024 1714
-129152 1761
-129280 1761
-129408 1684
-129536 1685
-129664 1774
-129792 1751
-129920 1679
-130048 1678
-130176 1712
-130304 1688
-130432 1810
-130560 1756
-130688 1684
-130816 1686
-130944 1688
-131072 1680
-131328 1750
-131584 1683
-131840 1697
-132096 1687
-132352 1694
-132608 1683
-132864 1683
-133120 1760
-133376 1718
-133632 1687
-133888 1707
-134144 1754
-134400 1761
-134656 1705
-134912 1695
-135168 1758
-135424 1697
-135680 1761
-135936 1754
-136192 1730
-136448 1725
-136704 1838
-136960 1743
-137216 1741
-137472 1739
-137728 1798
-137984 1737
-138240 1846
-138496 1744
-138752 1761
-139008 1755
-139264 1837
-139520 1776
-139776 1749
-140032 1832
-140288 1777
-140544 1792
-140800 1839
-141056 1777
-141312 1830
-141568 1787
-141824 1793
-142080 1798
-142336 1779
-142592 1806
-142848 1856
-143104 1804
-143360 1793
-143616 1798
-143872 1810
-144128 1805
-144384 1820
-144640 1808
-144896 1823
-145152 1812
-145408 1810
-145664 1840
-145920 1829
-146176 1826
-146432 1931
-146688 1889
-146944 1892
-147200 1816
-147456 1832
-147712 1873
-147968 1831
-148224 1836
-148480 1856
-148736 1846
-148992 1851
-149248 1902
-149504 1842
-149760 1846
-150016 1849
-150272 1867
-150528 1909
-150784 1846
-151040 1852
-151296 1859
-151552 1891
-151808 1845
-152064 1895
-152320 1857
-152576 1846
-152832 1929
-153088 1850
-153344 1859
-153600 1923
-153856 1868
-154112 1930
-154368 1867
-154624 1873
-154880 1921
-155136 1881
-155392 1879
-155648 1932
-155904 1874
-156160 1867
-156416 1984
-156672 1882
-156928 1872
-157184 1876
-157440 1948
-157696 1893
-157952 1886
-158208 1892
-158464 1890
-158720 1955
-158976 1893
-159232 1901
-159488 1881
-159744 1971
-160000 1891
-160256 1972
-160512 1904
-160768 1982
-161024 1934
-161280 1924
-161536 1925
-161792 1978
-162048 1915
-162304 1944
-162560 1937
-162816 1933
-163072 1929
-163328 2001
-163584 1934
-163840 1947
-164096 1949
-164352 1947
-164608 2008
-164864 1944
-165120 1964
-165376 1960
-165632 1947
-165888 1953
-166144 1971
-166400 2006
-166656 1964
-166912 1970
-167168 1968
-167424 1963
-167680 2001
-167936 1972
-168192 1989
-168448 1980
-168704 1980
-168960 2002
-169216 2061
-169472 1998
-169728 1991
-169984 2017
-170240 2036
-170496 2083
-170752 2016
-171008 2007
-171264 2009
-171520 2023
-171776 2027
-172032 2024
-172288 2022
-172544 2052
-172800 2031
-173056 2039
-173312 2042
-173568 2101
-173824 2042
-174080 2039
-174336 2045
-174592 2048
-174848 2049
-175104 2065
-175360 2056
-175616 2068
-175872 2073
-176128 2062
-176384 2073
-176640 2072
-176896 2061
-177152 2059
-177408 2093
-177664 2085
-177920 2085
-178176 2149
-178432 2084
-178688 2068
-178944 2124
-179200 2074
-179456 2088
-179712 2140
-179968 2088
-180224 2138
-180480 2088
-180736 2094
-180992 2069
-181248 2065
-181504 2084
-181760 2080
-182016 2058
-182272 2078
-182528 2069
-182784 2067
-183040 2084
-183296 2082
-183552 2079
-183808 2075
-184064 2081
-184320 2076
-184576 2092
-184832 2085
-185088 2163
-185344 2083
-185600 2092
-185856 2094
-186112 2091
-186368 2105
-186624 2080
-186880 2115
-187136 2093
-187392 2084
-187648 2170
-187904 2106
-188160 2096
-188416 2116
-188672 2117
-188928 2105
-189184 2109
-189440 2122
-189696 2121
-189952 2103
-190208 2107
-190464 2123
-190720 2123
-190976 2115
-191232 2137
-191488 2129
-191744 2136
-192000 2125
-192256 2135
-192512 2130
-192768 2134
-193024 2141
-193280 2135
-193536 2156
-193792 2142
-194048 2148
-194304 2163
-194560 2154
-194816 2156
-195072 2171
-195328 2233
-195584 2186
-195840 2179
-196096 2171
-196352 2190
-196608 2201
-196864 2216
-197120 2219
-197376 2203
-197632 2211
-197888 2198
-198144 2219
-198400 2222
-198656 2239
-198912 2235
-199168 2224
-199424 2234
-199680 2229
-199936 2218
-200192 2236
-200448 2268
-200704 2284
-200960 2240
-201216 2282
-201472 2252
-201728 2269
-201984 2277
-202240 2264
-202496 2277
-202752 2278
-203008 2279
-203264 2262
-203520 2286
-203776 2299
-204032 2283
-204288 2294
-204544 2283
-204800 2278
-205056 2299
-205312 2298
-205568 2317
-205824 2298
-206080 2311
-206336 2286
-206592 2300
-206848 2306
-207104 2301
-207360 2367
-207616 2308
-207872 2312
-208128 2305
-208384 2327
-208640 2307
-208896 2324
-209152 2312
-209408 2315
-209664 2331
-209920 2317
-210176 2409
-210432 2321
-210688 2322
-210944 2319
-211200 2322
-211456 2319
-211712 2336
-211968 2331
-212224 2323
-212480 2322
-212736 2345
-212992 2334
-213248 2335
-213504 2339
-213760 2344
-214016 2324
-214272 2328
-214528 2343
-214784 2326
-215040 2343
-215296 2345
-215552 2333
-215808 2341
-216064 2353
-216320 2341
-216576 2340
-216832 2346
-217088 2354
-217344 2344
-217600 2351
-217856 2344
-218112 2353
-218368 2350
-218624 2347
-218880 2359
-219136 2360
-219392 2361
-219648 2365
-219904 2359
-220160 2366
-220416 2372
-220672 2369
-220928 2359
-221184 2386
-221440 2389
-221696 2379
-221952 2384
-222208 2382
-222464 2396
-222720 2394
-222976 2402
-223232 2403
-223488 2407
-223744 2400
-224000 2409
-224256 2421
-224512 2427
-224768 2430
-225024 2405
-225280 2420
-225536 2435
-225792 2487
-226048 2449
-226304 2457
-226560 2544
-226816 2462
-227072 2440
-227328 2469
-227584 2456
-227840 2456
-228096 2472
-228352 2483
-228608 2478
-228864 2476
-229120 2473
-229376 2484
-229632 2483
-229888 2495
-230144 2496
-230400 2499
-230656 2505
-230912 2513
-231168 2505
-231424 2510
-231680 2516
-231936 2521
-232192 2509
-232448 2522
-232704 2531
-232960 2509
-233216 2525
-233472 2524
-233728 2525
-233984 2528
-234240 2520
-234496 2547
-234752 2534
-235008 2544
-235264 2532
-235520 2545
-235776 2549
-236032 2537
-236288 2554
-236544 2537
-236800 2539
-237056 2546
-237312 2550
-237568 2559
-237824 2560
-238080 2553
-238336 2549
-238592 2557
-238848 2557
-239104 2556
-239360 2569
-239616 2563
-239872 2557
-240128 2565
-240384 2567
-240640 2557
-240896 2562
-241152 2563
-241408 2584
-241664 2563
-241920 2582
-242176 2568
-242432 2554
-242688 2571
-242944 2586
-243200 2553
-243456 2574
-243712 2589
-243968 2581
-244224 2586
-244480 2581
-244736 2585
-244992 2583
-245248 2595
-245504 2575
-245760 2601
-246016 2606
-246272 2569
-246528 2564
-246784 2565
-247040 2567
-247296 2577
-247552 2584
-247808 2585
-248064 2649
-248320 2590
-248576 2574
-248832 2578
-249088 2592
-249344 2600
-249600 2598
-249856 2612
-250112 2599
-250368 2603
-250624 2602
-250880 2601
-251136 2614
-251392 2620
-251648 2619
-251904 2618
-252160 2636
-252416 2624
-252672 2633
-252928 2619
-253184 2631
-253440 2633
-253696 2647
-253952 2662
-254208 2662
-254464 2668
-254720 2668
-254976 2659
-255232 2681
-255488 2678
-255744 2684
-256000 2691
-256256 2712
-256512 2702
-256768 2693
-257024 2693
-257280 2712
-257536 2709
-257792 2712
-258048 2709
-258304 2723
-258560 2720
-258816 2717
-259072 2734
-259328 2728
-259584 2728
-259840 2739
-260096 2742
-260352 2739
-260608 2747
-260864 2751
-261120 2746
-261376 2742
-261632 2740
-261888 2757
-262144 2754
-262656 2768
-263168 2764
-263680 2773
-264192 2765
-264704 2773
-265216 2779
-265728 2788
-266240 2778
-266752 2788
-267264 2796
-267776 2791
-268288 2800
-268800 2814
-269312 2805
-269824 2808
-270336 2821
-270848 2805
-271360 2813
-271872 2812
-272384 2808
-272896 2816
-273408 2819
-273920 2832
-274432 2842
-274944 2829
-275456 2844
-275968 2850
-276480 2858
-276992 2857
-277504 2862
-278016 2871
-278528 2873
-279040 2883
-279552 2892
-280064 2891
-280576 2890
-281088 2914
-281600 2965
-282112 2929
-282624 2910
-283136 2912
-283648 2924
-284160 2927
-284672 2935
-285184 2945
-285696 2957
-286208 2965
-286720 2966
-287232 2983
-287744 2989
-288256 2979
-288768 2982
-289280 2976
-289792 2991
-290304 3011
-290816 3017
-291328 3018
-291840 3029
-292352 3027
-292864 3014
-293376 3018
-293888 3033
-294400 3025
-294912 3022
-295424 3028
-295936 3064
-296448 3033
-296960 3035
-297472 3037
-297984 3039
-298496 3058
-299008 3037
-299520 3064
-300032 3094
-300544 3065
-301056 3070
-301568 3076
-302080 3060
-302592 3076
-303104 3077
-303616 3076
-304128 3091
-304640 3085
-305152 3092
-305664 3100
-306176 3090
-306688 3113
-307200 3119
-307712 3110
-308224 3133
-308736 3118
-309248 3121
-309760 3152
-310272 3140
-310784 3135
-311296 3140
-311808 3143
-312320 3150
-312832 3149
-313344 3136
-313856 3154
-314368 3166
-314880 3177
-315392 3180
-315904 3192
-316416 3190
-316928 3205
-317440 3212
-317952 3219
-318464 3221
-318976 3217
-319488 3229
-320000 3235
-320512 3239
-321024 3251
-321536 3236
-322048 3239
-322560 3360
-323072 3269
-323584 3252
-324096 3257
-324608 3337
-325120 3280
-325632 3277
-326144 3274
-326656 3310
-327168 3289
-327680 3294
-328192 3299
-328704 3293
-329216 3396
-329728 3299
-330240 3317
-330752 3360
-331264 3320
-331776 3333
-332288 3335
-332800 3327
-333312 3328
-333824 3352
-334336 3353
-334848 3388
-335360 3361
-335872 3354
-336384 3357
-336896 3373
-337408 3423
-337920 3391
-338432 3407
-338944 3409
-339456 3413
-339968 3407
-340480 3402
-340992 3515
-341504 3404
-342016 3425
-342528 3444
-343040 3437
-343552 3435
-344064 3463
-344576 3446
-345088 3481
-345600 3560
-346112 3488
-346624 3484
-347136 3468
-347648 3502
-348160 3485
-348672 3475
-349184 3503
-349696 3498
-350208 3557
-350720 3493
-351232 3511
-351744 3549
-352256 3519
-352768 3499
-353280 3527
-353792 3523
-354304 3568
-354816 3526
-355328 3574
-355840 3648
-356352 3556
-356864 3571
-357376 3614
-357888 3582
-358400 3574
-358912 3543
-359424 3562
-359936 3603
-360448 3595
-360960 3577
-361472 3565
-361984 3600
-362496 3570
-363008 3601
-363520 3590
-364032 3589
-364544 3613
-365056 3668
-365568 3611
-366080 3619
-366592 3626
-367104 3641
-367616 3620
-368128 3654
-368640 3672
-369152 3652
-369664 3675
-370176 3691
-370688 3719
-371200 3671
-371712 3747
-372224 3697
-372736 3679
-373248 3692
-373760 3735
-374272 3750
-374784 3714
-375296 3787
-375808 3711
-376320 3714
-376832 3735
-377344 3746
-377856 3739
-378368 3719
-378880 3741
-379392 3779
-379904 3809
-380416 3768
-380928 3811
-381440 3777
-381952 3763
-382464 3835
-382976 3780
-383488 3780
-384000 3873
-384512 3785
-385024 3785
-385536 3823
-386048 3784
-386560 3796
-387072 3823
-387584 3827
-388096 3824
-388608 3900
-389120 3822
-389632 3886
-390144 3880
-390656 3830
-391168 3928
-391680 3857
-392192 3854
-392704 3943
-393216 3897
-393728 3867
-394240 3850
-394752 3912
-395264 3969
-395776 3880
-396288 3877
-396800 3866
-397312 3889
-397824 3903
-398336 3922
-398848 3935
-399360 3917
-399872 3919
-400384 3941
-400896 3938
-401408 3935
-401920 3936
-402432 3991
-402944 3929
-403456 4009
-403968 4012
-404480 3963
-404992 4051
-405504 3991
-406016 4029
-406528 3987
-407040 4075
-407552 4063
-408064 4041
-408576 4026
-409088 4079
-409600 4005
-410112 4002
-410624 4025
-411136 4006
-411648 4062
-412160 4019
-412672 4037
-413184 4008
-413696 4042
-414208 4047
-414720 4051
-415232 4110
-415744 4088
-416256 4094
-416768 4112
-417280 4155
-417792 4156
-418304 4077
-418816 4140
-419328 4063
-419840 4093
-420352 4114
-420864 4140
-421376 4148
-421888 4116
-422400 4094
-422912 4117
-423424 4087
-423936 4115
-424448 4141
-424960 4122
-425472 4143
-425984 4161
-426496 4141
-427008 4250
-427520 4203
-428032 4191
-428544 4153
-429056 4179
-429568 4264
-430080 4168
-430592 4189
-431104 4217
-431616 4217
-432128 4258
-432640 4193
-433152 4228
-433664 4224
-434176 4210
-434688 4296
-435200 4226
-435712 4293
-436224 4235
-436736 4390
-437248 4369
-437760 4275
-438272 4279
-438784 4281
-439296 4308
-439808 4285
-440320 4272
-440832 4353
-441344 4329
-441856 4307
-442368 4276
-442880 4308
-443392 4289
-443904 4293
-444416 4303
-444928 4300
-445440 4366
-445952 4312
-446464 4399
-446976 4304
-447488 4405
-448000 4355
-448512 4330
-449024 4332
-449536 4408
-450048 4334
-450560 4415
-451072 4360
-451584 4363
-452096 4401
-452608 4342
-453120 4359
-453632 4506
-454144 4385
-454656 4446
-455168 4374
-455680 4451
-456192 4468
-456704 4416
-457216 4400
-457728 4403
-458240 4403
-458752 4402
-459264 4411
-459776 4409
-460288 4428
-460800 4416
-461312 4492
-461824 4432
-462336 4461
-462848 4459
-463360 4451
-463872 4480
-464384 4481
-464896 4559
-465408 4569
-465920 4469
-466432 4498
-466944 4485
-467456 4502
-467968 4481
-468480 4564
-468992 4498
-469504 4530
-470016 4531
-470528 4511
-471040 4582
-471552 4508
-472064 4563
-472576 4537
-473088 4533
-473600 4611
-474112 4530
-474624 4578
-475136 4581
-475648 4554
-476160 4548
-476672 4547
-477184 4643
-477696 4598
-478208 4571
-478720 4626
-479232 4668
-479744 4572
-480256 4610
-480768 4598
-481280 4612
-481792 4676
-482304 4614
-482816 4693
-483328 4697
-483840 4626
-484352 4620
-484864 4645
-485376 4699
-485888 4663
-486400 4653
-486912 4640
-487424 4795
-487936 4687
-488448 4703
-488960 4710
-489472 4698
-489984 4790
-490496 4708
-491008 4748
-491520 4683
-492032 4771
-492544 4782
-493056 4799
-493568 4753
-494080 4741
-494592 4709
-495104 4726
-495616 4713
-496128 4735
-496640 4781
-497152 4788
-497664 4770
-498176 4763
-498688 4799
-499200 4764
-499712 4814
-500224 4824
-500736 4765
-501248 4835
-501760 4787
-502272 4862
-502784 4894
-503296 4855
-503808 4813
-504320 4826
-504832 4817
-505344 4810
-505856 4800
-506368 4888
-506880 4806
-507392 4814
-507904 4875
-508416 4842
-508928 4895
-509440 4876
-509952 4828
-510464 4911
-510976 4908
-511488 4908
-512000 4888
-512512 4881
-513024 4862
-513536 4889
-514048 4925
-514560 4880
-515072 4927
-515584 4874
-516096 4891
-516608 4950
-517120 4975
-517632 4906
-518144 4968
-518656 4944
-519168 4946
-519680 4925
-520192 4917
-520704 4964
-521216 5071
-521728 5075
-522240 5015
-522752 5026
-523264 5012
-523776 4997
-524288 4981
-525312 5057
-526336 4977
-527360 4990
-528384 5117
-529408 5119
-530432 5079
-531456 5086
-532480 5128
-533504 5029
-534528 5157
-535552 5060
-536576 5054
-537600 5049
-538624 5079
-539648 5093
-540672 5132
-541696 5146
-542720 5117
-543744 5128
-544768 5169
-545792 5181
-546816 5171
-547840 5296
-548864 5163
-549888 5211
-550912 5240
-551936 5208
-552960 5407
-553984 5274
-555008 5300
-556032 5382
-557056 5325
-558080 5242
-559104 5310
-560128 5295
-561152 5369
-562176 5294
-563200 5313
-564224 5315
-565248 5310
-566272 5326
-567296 5377
-568320 5376
-569344 5452
-570368 5340
-571392 5413
-572416 5478
-573440 5441
-574464 5477
-575488 5435
-576512 5469
-577536 5476
-578560 5496
-579584 5498
-580608 5531
-581632 5451
-582656 5485
-583680 5559
-584704 5487
-585728 5536
-586752 5572
-587776 5557
-588800 5512
-589824 5559
-590848 5581
-591872 5534
-592896 5714
-593920 5768
-594944 6079
-595968 5834
-596992 5649
-598016 5585
-599040 5638
-600064 5668
-601088 5621
-602112 5645
-603136 5698
-604160 5646
-605184 5676
-606208 5697
-607232 5683
-608256 5774
-609280 5773
-610304 5828
-611328 5792
-612352 5868
-613376 5794
-614400 5781
-615424 5808
-616448 5811
-617472 5814
-618496 5799
-619520 5818
-620544 5876
-621568 5862
-622592 5788
-623616 5935
-624640 5899
-625664 5921
-626688 5895
-627712 5841
-628736 5864
-629760 6007
-630784 5937
-631808 5892
-632832 5983
-633856 5906
-634880 6000
-635904 6005
-636928 5995
-637952 6018
-638976 6042
-640000 5948
-641024 6030
-642048 6051
-643072 6053
-644096 5970
-645120 5991
-646144 6129
-647168 6057
-648192 6173
-649216 6088
-650240 6092
-651264 6037
-652288 6026
-653312 6208
-654336 6090
-655360 6174
-656384 6140
-657408 6124
-658432 6106
-659456 6114
-660480 6114
-661504 6183
-662528 6204
-663552 6257
-664576 6276
-665600 6139
-666624 6243
-667648 6217
-668672 6315
-669696 6280
-670720 6201
-671744 6294
-672768 6294
-673792 6382
-674816 6267
-675840 6303
-676864 6245
-677888 6285
-678912 6279
-679936 6318
-680960 6370
-681984 6371
-683008 6305
-684032 6325
-685056 6300
-686080 6379
-687104 6402
-688128 6456
-689152 6421
-690176 6408
-691200 6367
-692224 6454
-693248 6386
-694272 6385
-695296 6512
-696320 6477
-697344 6444
-698368 6524
-699392 6545
-700416 6665
-701440 6561
-702464 6567
-703488 6595
-704512 6569
-705536 6568
-706560 6595
-707584 6516
-708608 6614
-709632 6599
-710656 6627
-711680 6660
-712704 6642
-713728 6581
-714752 6688
-715776 6675
-716800 6677
-717824 6733
-718848 6614
-719872 6796
-720896 6697
-721920 6747
-722944 6775
-723968 6838
-724992 6770
-726016 6775
-727040 6720
-728064 6789
-729088 6869
-730112 6782
-731136 6785
-732160 6826
-733184 6775
-734208 6846
-735232 6829
-736256 6852
-737280 6949
-738304 6820
-739328 6786
-740352 6881
-741376 6906
-742400 6802
-743424 6864
-744448 6816
-745472 6859
-746496 6902
-747520 6839
-748544 6924
-749568 6969
-750592 6960
-751616 6970
-752640 6953
-753664 6898
-754688 6902
-755712 6930
-756736 6926
-757760 6981
-758784 7012
-759808 7089
-760832 7108
-761856 7017
-762880 7071
-763904 7065
-764928 7063
-765952 7143
-766976 7113
-768000 7131
-769024 7114
-770048 7053
-771072 7097
-772096 7143
-773120 7092
-774144 7088
-775168 7117
-776192 7140
-777216 7117
-778240 7222
-779264 7209
-780288 7221
-781312 7172
-782336 7336
-783360 7239
-784384 7265
-785408 7261
-786432 7332
-787456 7277
-788480 7211
-789504 7350
-790528 7319
-791552 7237
-792576 7289
-793600 7266
-794624 7342
-795648 7337
-796672 7348
-797696 7447
-798720 7367
-799744 7319
-800768 7321
-801792 7342
-802816 7339
-803840 7417
-804864 7346
-805888 7434
-806912 7385
-807936 7500
-808960 7389
-809984 7477
-811008 7484
-812032 7503
-813056 7499
-814080 7433
-815104 7577
-816128 7538
-817152 7549
-818176 7579
-819200 7535
-820224 7580
-821248 7500
-822272 7557
-823296 7610
-824320 7569
-825344 7538
-826368 7549
-827392 7558
-828416 7546
-829440 7674
-830464 7653
-831488 7633
-832512 7665
-833536 7651
-834560 7641
-835584 7695
-836608 7675
-837632 7622
-838656 7692
-839680 7721
-840704 7734
-841728 7702
-842752 7650
-843776 7683
-844800 7724
-845824 7853
-846848 7689
-847872 7718
-848896 7773
-849920 7781
-850944 7791
-851968 7822
-852992 7868
-854016 7833
-855040 7753
-856064 7791
-857088 7875
-858112 7811
-859136 7776
-860160 7855
-861184 7798
-862208 7918
-863232 7846
-864256 7928
-865280 8029
-866304 7870
-867328 7996
-868352 7878
-869376 7874
-870400 7981
-871424 7975
-872448 7918
-873472 7997
-874496 7942
-875520 7953
-876544 8077
-877568 7981
-878592 8030
-879616 8048
-880640 8078
-881664 8105
-882688 8133
-883712 8025
-884736 8176
-885760 8036
-886784 8111
-887808 8136
-888832 8104
-889856 8210
-890880 8178
-891904 8107
-892928 8249
-893952 8192
-894976 8209
-896000 8115
-897024 8127
-898048 8143
-899072 8229
-900096 8259
-901120 8246
-902144 8222
-903168 8329
-904192 8276
-905216 8183
-906240 8307
-907264 8208
-908288 8279
-909312 8220
-910336 8335
-911360 8281
-912384 8250
-913408 8250
-914432 8275
-915456 8267
-916480 8423
-917504 8285
-918528 8282
-919552 8325
-920576 8340
-921600 8411
-922624 8467
-923648 8423
-924672 8379
-925696 8403
-926720 8454
-927744 8369
-928768 8379
-929792 8543
-930816 8396
-931840 8455
-932864 8409
-933888 8503
-934912 8435
-935936 8543
-936960 8455
-937984 8480
-939008 8469
-940032 8594
-941056 8493
-942080 8689
-943104 8512
-944128 8509
-945152 8524
-946176 8553
-947200 8541
-948224 8542
-949248 8554
-950272 8561
-951296 8584
-952320 8583
-953344 8593
-954368 8600
-955392 8622
-956416 8616
-957440 8721
-958464 8649
-959488 8637
-960512 8654
-961536 8669
-962560 8688
-963584 8690
-964608 8715
-965632 8813
-966656 8763
-967680 8829
-968704 8801
-969728 8754
-970752 8778
-971776 8802
-972800 8769
-973824 8792
-974848 8802
-975872 8808
-976896 8909
-977920 8848
-978944 8841
-979968 8953
-980992 8902
-982016 8865
-983040 8878
-984064 8885
-985088 8888
-986112 8897
-987136 8914
-988160 8960
-989184 8922
-990208 8937
-991232 8943
-992256 8986
-993280 8982
-994304 8984
-995328 8976
-996352 8976
-997376 8995
-998400 9005
-999424 9006
-1000448        9021
-1001472        9019
-1002496        9055
-1003520        9059
-1004544        9062
-1005568        9069
-1006592        9127
-1007616        9073
-1008640        9146
-1009664        9084
-1010688        9097
-1011712        9098
-1012736        9101
-1013760        9124
-1014784        9123
-1015808        9129
-1016832        9135
-1017856        9238
-1018880        9204
-1019904        9173
-1020928        9219
-1021952        9192
-1022976        9204
-1024000        9262
-1025024        9220
-1026048        9257
-1027072        9271
-1028096        9332
-1029120        9270
-1030144        9269
-1031168        9380
-1032192        9341
-1033216        9294
-1034240        9334
-1035264        9385
-1036288        9343
-1037312        9363
-1038336        9411
-1039360        9336
-1040384        9363
-1041408        9413
-1042432        9377
-1043456        9356
-1044480        9417
-1045504        9414
-1046528        9392
-1047552        9444
-1048576        9497
-1050624        9501
-1052672        9456
-1054720        9487
-1056768        9553
-1058816        9524
-1060864        9609
-1062912        9643
-1064960        9658
-1067008        9673
-1069056        9597
-1071104        9651
-1073152        9649
-1075200        9663
-1077248        9750
-1079296        9728
-1081344        9819
-1083392        9813
-1085440        9830
-1087488        9823
-1089536        9792
-1091584        9881
-1093632        9793
-1095680        9875
-1097728        9830
-1099776        9927
-1101824        9920
-1103872        9975
-1105920        9888
-1107968        10016
-1110016        9945
-1112064        10008
-1114112        10061
-1116160        9981
-1118208        9999
-1120256        10028
-1122304        10055
-1124352        10140
-1126400        10070
-1128448        10092
-1130496        10116
-1132544        10129
-1134592        10139
-1136640        10168
-1138688        10275
-1140736        10201
-1142784        10311
-1144832        10249
-1146880        10268
-1148928        10295
-1150976        10381
-1153024        10326
-1155072        10332
-1157120        10360
-1159168        10447
-1161216        10375
-1163264        10403
-1165312        10424
-1167360        10434
-1169408        10450
-1171456        10460
-1173504        10574
-1175552        10490
-1177600        10500
-1179648        10529
-1181696        10547
-1183744        10553
-1185792        10580
-1187840        10586
-1189888        10597
-1191936        10625
-1193984        10632
-1196032        10649
-1198080        10679
-1200128        10697
-1202176        10715
-1204224        10735
-1206272        10754
-1208320        10758
-1210368        10769
-1212416        10803
-1214464        10819
-1216512        10828
-1218560        10836
-1220608        10878
-1222656        10879
-1224704        10907
-1226752        10934
-1228800        10964
-1230848        10980
-1232896        10996
-1234944        11025
-1236992        11036
-1239040        11055
-1241088        11072
-1243136        11081
-1245184        11101
-1247232        11131
-1249280        11143
-1251328        11172
-1253376        11183
-1255424        11189
-1257472        11210
-1259520        11217
-1261568        11233
-1263616        11241
-1265664        11292
-1267712        11280
-1269760        11301
-1271808        11311
-1273856        11322
-1275904        11338
-1277952        11385
-1280000        11387
-1282048        11402
-1284096        11419
-1286144        11418
-1288192        11462
-1290240        11477
-1292288        11509
-1294336        11528
-1296384        11550
-1298432        11669
-1300480        11565
-1302528        11574
-1304576        11586
-1306624        11613
-1308672        11646
-1310720        11652
-1312768        11676
-1314816        11700
-1316864        11786
-1318912        11739
-1320960        11742
-1323008        11771
-1325056        11782
-1327104        11805
-1329152        11825
-1331200        11829
-1333248        11876
-1335296        11876
-1337344        11884
-1339392        11938
-1341440        11934
-1343488        11938
-1345536        11950
-1347584        11981
-1349632        12002
-1351680        12012
-1353728        12026
-1355776        12047
-1357824        12068
-1359872        12069
-1361920        12118
-1363968        12116
-1366016        12161
-1368064        12142
-1370112        12159
-1372160        12174
-1374208        12316
-1376256        12230
-1378304        12312
-1380352        12329
-1382400        12262
-1384448        12307
-1386496        12339
-1388544        12315
-1390592        12373
-1392640        12442
-1394688        12346
-1396736        12440
-1398784        12459
-1400832        12451
-1402880        12531
-1404928        12461
-1406976        12465
-1409024        12560
-1411072        12530
-1413120        12542
-1415168        12550
-1417216        12672
-1419264        12634
-1421312        12655
-1423360        12715
-1425408        12736
-1427456        12758
-1429504        12673
-1431552        12773
-1433600        12760
-1435648        12732
-1437696        12825
-1439744        12785
-1441792        12770
-1443840        12791
-1445888        12843
-1447936        12823
-1449984        12892
-1452032        12889
-1454080        12953
-1456128        12936
-1458176        13531
-1460224        12912
-1462272        13011
-1464320        13012
-1466368        13054
-1468416        12992
-1470464        13056
-1472512        13066
-1474560        13048
-1476608        13143
-1478656        13058
-1480704        13082
-1482752        13101
-1484800        13159
-1486848        13138
-1488896        13221
-1490944        13176
-1492992        13208
-1495040        13225
-1497088        13252
-1499136        13360
-1501184        13284
-1503232        13307
-1505280        13385
-1507328        13451
-1509376        13352
-1511424        13388
-1513472        13385
-1515520        13415
-1517568        13540
-1519616        13448
-1521664        13447
-1523712        13468
-1525760        13490
-1527808        13606
-1529856        13556
-1531904        13535
-1533952        13558
-1536000        13558
-1538048        13571
-1540096        13613
-1542144        13605
-1544192        13637
-1546240        13646
-1548288        13654
-1550336        13684
-1552384        13701
-1554432        13724
-1556480        13745
-1558528        13760
-1560576        13773
-1562624        13801
-1564672        13810
-1566720        13815
-1568768        13842
-1570816        13885
-1572864        13901
-1574912        13895
-1576960        13993
-1579008        13931
-1581056        13970
-1583104        13990
-1585152        14002
-1587200        14023
-1589248        14035
-1591296        14150
-1593344        14110
-1595392        14132
-1597440        14193
-1599488        14220
-1601536        14155
-1603584        14199
-1605632        14175
-1607680        14229
-1609728        14211
-1611776        14222
-1613824        14240
-1615872        14263
-1617920        14284
-1619968        14294
-1622016        14293
-1624064        14306
-1626112        14352
-1628160        14337
-1630208        14362
-1632256        14382
-1634304        14384
-1636352        14425
-1638400        14420
-1640448        14460
-1642496        14470
-1644544        14552
-1646592        14498
-1648640        14522
-1650688        14532
-1652736        14572
-1654784        14577
-1656832        14589
-1658880        14649
-1660928        14632
-1662976        14757
-1665024        14763
-1667072        14737
-1669120        14715
-1671168        14849
-1673216        14759
-1675264        14791
-1677312        14812
-1679360        14803
-1681408        14885
-1683456        14837
-1685504        14980
-1687552        14958
-1689600        14905
-1691648        14958
-1693696        14962
-1695744        14953
-1697792        14961
-1699840        14968
-1701888        14990
-1703936        15125
-1705984        15062
-1708032        15060
-1710080        15039
-1712128        15120
-1714176        15193
-1716224        15234
-1718272        15166
-1720320        15179
-1722368        15274
-1724416        15216
-1726464        15241
-1728512        15303
-1730560        15287
-1732608        15372
-1734656        15310
-1736704        15284
-1738752        15364
-1740800        15357
-1742848        15337
-1744896        15420
-1746944        15460
-1748992        15521
-1751040        15518
-1753088        15560
-1755136        15452
-1757184        15456
-1759232        15567
-1761280        15497
-1763328        15607
-1765376        15619
-1767424        15680
-1769472        15642
-1771520        15590
-1773568        15675
-1775616        15716
-1777664        15761
-1779712        15777
-1781760        15795
-1783808        15825
-1785856        15819
-1787904        15798
-1789952        15855
-1792000        15803
-1794048        15862
-1796096        15776
-1798144        15909
-1800192        15871
-1802240        15857
-1804288        15840
-1806336        15848
-1808384        15951
-1810432        15904
-1812480        15920
-1814528        16019
-1816576        15958
-1818624        16075
-1820672        15989
-1822720        16010
-1824768        16032
-1826816        16031
-1828864        16062
-1830912        16063
-1832960        16242
-1835008        16175
-1837056        16134
-1839104        16313
-1841152        16150
-1843200        16191
-1845248        16368
-1847296        16221
-1849344        16359
-1851392        16273
-1853440        16285
-1855488        16299
-1857536        16322
-1859584        16334
-1861632        16360
-1863680        16376
-1865728        16391
-1867776        16398
-1869824        16433
-1871872        16458
-1873920        16466
-1875968        16482
-1878016        16498
-1880064        16498
-1882112        16517
-1884160        16536
-1886208        16535
-1888256        16575
-1890304        16594
-1892352        16592
-1894400        16618
-1896448        16633
-1898496        16662
-1900544        16674
-1902592        16676
-1904640        16703
-1906688        16708
-1908736        16738
-1910784        16750
-1912832        16768
-1914880        16787
-1916928        16813
-1918976        16805
-1921024        16843
-1923072        16855
-1925120        16876
-1927168        16890
-1929216        16903
-1931264        16932
-1933312        16949
-1935360        16960
-1937408        16996
-1939456        17016
-1941504        17042
-1943552        17061
-1945600        17085
-1947648        17102
-1949696        17112
-1951744        17134
-1953792        17138
-1955840        17155
-1957888        17174
-1959936        17192
-1961984        17209
-1964032        17220
-1966080        17245
-1968128        17266
-1970176        17292
-1972224        17297
-1974272        17310
-1976320        17315
-1978368        17323
-1980416        17347
-1982464        17362
-1984512        17400
-1986560        17412
-1988608        17427
-1990656        17423
-1992704        17451
-1994752        17476
-1996800        17527
-1998848        17549
-2000896        17522
-2002944        17537
-2004992        17571
-2007040        17590
-2009088        17596
-2011136        17685
-2013184        17652
-2015232        17652
-2017280        17660
-2019328        17709
-2021376        17750
-2023424        17726
-2025472        17758
-2027520        17792
-2029568        17792
-2031616        17862
-2033664        17881
-2035712        17843
-2037760        17863
-2039808        17909
-2041856        17922
-2043904        17963
-2045952        17982
-2048000        17964
-2050048        17954
-2052096        17982
-2054144        17996
-2056192        18006
-2058240        18085
-2060288        18087
-2062336        18141
-2064384        18061
-2066432        18081
-2068480        18079
-2070528        18220
-2072576        18193
-2074624        18205
-2076672        18184
-2078720        18283
-2080768        18288
-2082816        18224
-2084864        18316
-2086912        18319
-2088960        18280
-2091008        18310
-2093056        18307
-2095104        18429
-2097152        18422
-2101248        18392
-2105344        18478
-2109440        18458
-2113536        18517
-2117632        18554
-2121728        18587
-2125824        18691
-2129920        18648
-2134016        18840
-2138112        18724
-2142208        18819
-2146304        18804
-2150400        18896
-2154496        18904
-2158592        18879
-2162688        18922
-2166784        18939
-2170880        18979
-2174976        19076
-2179072        19136
-2183168        19066
-2187264        19153
-2191360        19264
-2195456        19223
-2199552        19247
-2203648        19274
-2207744        19314
-2211840        19344
-2215936        19378
-2220032        19425
-2224128        19491
-2228224        19469
-2232320        19507
-2236416        19551
-2240512        19577
-2244608        19633
-2248704        19634
-2252800        19685
-2256896        19723
-2260992        19759
-2265088        19774
-2269184        19847
-2273280        19861
-2277376        19957
-2281472        19930
-2285568        20058
-2289664        20033
-2293760        20039
-2297856        20148
-2301952        20202
-2306048        20179
-2310144        20190
-2314240        20211
-2318336        20245
-2322432        20273
-2326528        20376
-2330624        20433
-2334720        20451
-2338816        20401
-2342912        20474
-2347008        20475
-2351104        20582
-2355200        20537
-2359296        20587
-2363392        20661
-2367488        20730
-2371584        20765
-2375680        20863
-2379776        20782
-2383872        20882
-2387968        20994
-2392064        20901
-2396160        20945
-2400256        20947
-2404352        21040
-2408448        21035
-2412544        21101
-2416640        21159
-2420736        21201
-2424832        21165
-2428928        21219
-2433024        21231
-2437120        21346
-2441216        21331
-2445312        21327
-2449408        21368
-2453504        21583
-2457600        21468
-2461696        21622
-2465792        21549
-2469888        21604
-2473984        21664
-2478080        21648
-2482176        21640
-2486272        21707
-2490368        21722
-2494464        21878
-2498560        21841
-2502656        21820
-2506752        21871
-2510848        21908
-2514944        21966
-2519040        21952
-2523136        22027
-2527232        22014
-2531328        22132
-2535424        22083
-2539520        22126
-2543616        22172
-2547712        22224
-2551808        22259
-2555904        22339
-2560000        22404
-2564096        22338
-2568192        22379
-2572288        22466
-2576384        22437
-2580480        22495
-2584576        22515
-2588672        22551
-2592768        22579
-2596864        22599
-2600960        22672
-2605056        22683
-2609152        22728
-2613248        22812
-2617344        22772
-2621440        22804
-2625536        22873
-2629632        22876
-2633728        22931
-2637824        22966
-2641920        22992
-2646016        23031
-2650112        23143
-2654208        23112
-2658304        23156
-2662400        23181
-2666496        23216
-2670592        23310
-2674688        23399
-2678784        23419
-2682880        23432
-2686976        23466
-2691072        23389
-2695168        23469
-2699264        23486
-2703360        23528
-2707456        23561
-2711552        23590
-2715648        23613
-2719744        23650
-2723840        23724
-2727936        23818
-2732032        23785
-2736128        23805
-2740224        23972
-2744320        23883
-2748416        23951
-2752512        23987
-2756608        24052
-2760704        24046
-2764800        24047
-2768896        24153
-2772992        24137
-2777088        24151
-2781184        24275
-2785280        24208
-2789376        24352
-2793472        24297
-2797568        24389
-2801664        24358
-2805760        24408
-2809856        24556
-2813952        24535
-2818048        24554
-2822144        24611
-2826240        24580
-2830336        24644
-2834432        24676
-2838528        24769
-2842624        24787
-2846720        24805
-2850816        24778
-2854912        24832
-2859008        24929
-2863104        24928
-2867200        25037
-2871296        24939
-2875392        25035
-2879488        25115
-2883584        25048
-2887680        25115
-2891776        25177
-2895872        25156
-2899968        25209
-2904064        25303
-2908160        25335
-2912256        25330
-2916352        26120
-2920448        25459
-2924544        25501
-2928640        25514
-2932736        25508
-2936832        25549
-2940928        25557
-2945024        25649
-2949120        25629
-2953216        25699
-2957312        25788
-2961408        25751
-2965504        25778
-2969600        25866
-2973696        25964
-2977792        25853
-2981888        25972
-2985984        25972
-2990080        25980
-2994176        26013
-2998272        26099
-3002368        26099
-3006464        26186
-3010560        26221
-3014656        26279
-3018752        26300
-3022848        26393
-3026944        26365
-3031040        26451
-3035136        26419
-3039232        26484
-3043328        26384
-3047424        26490
-3051520        26576
-3055616        26600
-3059712        26669
-3063808        26633
-3067904        26710
-3072000        26765
-3076096        26766
-3080192        26820
-3084288        26807
-3088384        26846
-3092480        26976
-3096576        26999
-3100672        27065
-3104768        26957
-3108864        27018
-3112960        27099
-3117056        27131
-3121152        27169
-3125248        27101
-3129344        27227
-3133440        27165
-3137536        27273
-3141632        27329
-3145728        27462
-3149824        27395
-3153920        27337
-3158016        27482
-3162112        27401
-3166208        27571
-3170304        27483
-3174400        27526
-3178496        27567
-3182592        27596
-3186688        27635
-3190784        27657
-3194880        27714
-3198976        27744
-3203072        27770
-3207168        27916
-3211264        27832
-3215360        27969
-3219456        27906
-3223552        27921
-3227648        27972
-3231744        28150
-3235840        28032
-3239936        28208
-3244032        28098
-3248128        28147
-3252224        28185
-3256320        28316
-3260416        28263
-3264512        28357
-3268608        28449
-3272704        28361
-3276800        28413
-3280896        28491
-3284992        28494
-3289088        28508
-3293184        28542
-3297280        28579
-3301376        28682
-3305472        28689
-3309568        28765
-3313664        28697
-3317760        28734
-3321856        28764
-3325952        28910
-3330048        28843
-3334144        28895
-3338240        28970
-3342336        28952
-3346432        29095
-3350528        29037
-3354624        29198
-3358720        29146
-3362816        29262
-3366912        29229
-3371008        29210
-3375104        29242
-3379200        29359
-3383296        29338
-3387392        29422
-3391488        29375
-3395584        29482
-3399680        29576
-3403776        29506
-3407872        29556
-3411968        29626
-3416064        29678
-3420160        29837
-3424256        29745
-3428352        29721
-3432448        29813
-3436544        29847
-3440640        29835
-3444736        29929
-3448832        29955
-3452928        29892
-3457024        30063
-3461120        30043
-3465216        30116
-3469312        30032
-3473408        30062
-3477504        30102
-3481600        30326
-3485696        30148
-3489792        30304
-3493888        30230
-3497984        30408
-3502080        30383
-3506176        30338
-3510272        30496
-3514368        30413
-3518464        30453
-3522560        30486
-3526656        30516
-3530752        30564
-3534848        30642
-3538944        30774
-3543040        30658
-3547136        30696
-3551232        30751
-3555328        30835
-3559424        30786
-3563520        30826
-3567616        30851
-3571712        30897
-3575808        30932
-3579904        30957
-3584000        31000
-3588096        31038
-3592192        31062
-3596288        31100
-3600384        31138
-3604480        31168
-3608576        31206
-3612672        31251
-3616768        31287
-3620864        31332
-3624960        31354
-3629056        31400
-3633152        31613
-3637248        31463
-3641344        31511
-3645440        31530
-3649536        31585
-3653632        31754
-3657728        31627
-3661824        31693
-3665920        31767
-3670016        31727
-3674112        31775
-3678208        31807
-3682304        31836
-3686400        31877
-3690496        31906
-3694592        31983
-3698688        32019
-3702784        32051
-3706880        32118
-3710976        32099
-3715072        32150
-3719168        32153
-3723264        32246
-3727360        32242
-3731456        32272
-3735552        32336
-3739648        32340
-3743744        32378
-3747840        32441
-3751936        32473
-3756032        32476
-3760128        32576
-3764224        32524
-3768320        32566
-3772416        32706
-3776512        32695
-3780608        32672
-3784704        32772
-3788800        32752
-3792896        32786
-3796992        32919
-3801088        32863
-3805184        32961
-3809280        33032
-3813376        32962
-3817472        33026
-3821568        33123
-3825664        33074
-3829760        33216
-3833856        33127
-3837952        33151
-3842048        33208
-3846144        33322
-3850240        33269
-3854336        33301
-3858432        33333
-3862528        33366
-3866624        33401
-3870720        33436
-3874816        33471
-3878912        33515
-3883008        33544
-3887104        33581
-3891200        33619
-3895296        33668
-3899392        33695
-3903488        33733
-3907584        33759
-3911680        33790
-3915776        33855
-3919872        33868
-3923968        33884
-3928064        33920
-3932160        33971
-3936256        33998
-3940352        34038
-3944448        34055
-3948544        34106
-3952640        34145
-3956736        34163
-3960832        34236
-3964928        34269
-3969024        34283
-3973120        34321
-3977216        34350
-3981312        34392
-3985408        34483
-3989504        34469
-3993600        34494
-3997696        34558
-4001792        34564
-4005888        34611
-4009984        34645
-4014080        34681
-4018176        34690
-4022272        34749
-4026368        34759
-4030464        34787
-4034560        34869
-4038656        34913
-4042752        34891
-4046848        34962
-4050944        34996
-4055040        35014
-4059136        35069
-4063232        35179
-4067328        35116
-4071424        35231
-4075520        35264
-4079616        35297
-4083712        35258
-4087808        35371
-4091904        35326
-4096000        35422
-4100096        35463
-4104192        35421
-4108288        35520
-4112384        35550
-4116480        35526
-4120576        35632
-4124672        35634
-4128768        35731
-4132864        35766
-4136960        35717
-4141056        35741
-4145152        35780
-4149248        35834
-4153344        35868
-4157440        35893
-4161536        35932
-4165632        35956
-4169728        36094
-4173824        36030
-4177920        36175
-4182016        36082
-4186112        36226
-4190208        36138
-4194304        36181
-4202496        36269
-4210688        36332
-4218880        36487
-4227072        36555
-4235264        36544
-4243456        36627
-4251648        36708
-4259840        36762
-4268032        36823
-4276224        36908
-4284416        37036
-4292608        37039
-4300800        37088
-4308992        37166
-4317184        37336
-4325376        37330
-4333568        37385
-4341760        37469
-4349952        37537
-4358144        37602
-4366336        37667
-4374528        37763
-4382720        37834
-4390912        37944
-4399104        38028
-4407296        38040
-4415488        38112
-4423680        38167
-4431872        38302
-4440064        38298
-4448256        38376
-4456448        38441
-4464640        38598
-4472832        38576
-4481024        38667
-4489216        38757
-4497408        38786
-4505600        38941
-4513792        39008
-4521984        39005
-4530176        39088
-4538368        39186
-4546560        39317
-4554752        39254
-4562944        39343
-4571136        39397
-4579328        39489
-4587520        39603
-4595712        39647
-4603904        39685
-4612096        39778
-4620288        39966
-4628480        39917
-4636672        40109
-4644864        40114
-4653056        40090
-4661248        40341
-4669440        40316
-4677632        40319
-4685824        40420
-4694016        40456
-4702208        40539
-4710400        40625
-4718592        40646
-4726784        40828
-4734976        40786
-4743168        40940
-4751360        41034
-4759552        41072
-4767744        41126
-4775936        41193
-4784128        41333
-4792320        41324
-4800512        41346
-4808704        41487
-4816896        41525
-4825088        41600
-4833280        41830
-4841472        41748
-4849664        41856
-4857856        41909
-4866048        42064
-4874240        42031
-4882432        42148
-4890624        42171
-4898816        42181
-4907008        42330
-4915200        42434
-4923392        42500
-4931584        42475
-4939776        42627
-4947968        42755
-4956160        42677
-4964352        42826
-4972544        42943
-4980736        42974
-4988928        43017
-4997120        43038
-5005312        43194
-5013504        43282
-5021696        43227
-5029888        43320
-5038080        43376
-5046272        43443
-5054464        43537
-5062656        43606
-5070848        43744
-5079040        43803
-5087232        43855
-5095424        43931
-5103616        44021
-5111808        44198
-5120000        44157
-5128192        44207
-5136384        44307
-5144576        44372
-5152768        44557
-5160960        44414
-5169152        44479
-5177344        44551
-5185536        44790
-5193728        44673
-5201920        44763
-5210112        44844
-5218304        44914
-5226496        44968
-5234688        45244
-5242880        45222
-5251072        45205
-5259264        45299
-5267456        45311
-5275648        45389
-5283840        45463
-5292032        45532
-5300224        45605
-5308416        45751
-5316608        45736
-5324800        45848
-5332992        45878
-5341184        46057
-5349376        46007
-5357568        46092
-5365760        46157
-5373952        46228
-5382144        46309
-5390336        46373
-5398528        46451
-5406720        46507
-5414912        46586
-5423104        46662
-5431296        46781
-5439488        46809
-5447680        46975
-5455872        47039
-5464064        46988
-5472256        47098
-5480448        47214
-5488640        47193
-5496832        47272
-5505024        47447
-5513216        47495
-5521408        47534
-5529600        47550
-5537792        47719
-5545984        47685
-5554176        47764
-5562368        47824
-5570560        47899
-5578752        47958
-5586944        48036
-5595136        48115
-5603328        48171
-5611520        48323
-5619712        48306
-5627904        48381
-5636096        48512
-5644288        48534
-5652480        48588
-5660672        48681
-5668864        48740
-5677056        48800
-5685248        48893
-5693440        48971
-5701632        49021
-5709824        49080
-5718016        49226
-5726208        49220
-5734400        49298
-5742592        49370
-5750784        49435
-5758976        49503
-5767168        49619
-5775360        49646
-5783552        49836
-5791744        49871
-5799936        49869
-5808128        49915
-5816320        50040
-5824512        50099
-5832704        50154
-5840896        50229
-5849088        50275
-5857280        50374
-5865472        50494
-5873664        50581
-5881856        50609
-5890048        50671
-5898240        50747
-5906432        50956
-5914624        50933
-5922816        50957
-5931008        51067
-5939200        51193
-5947392        51219
-5955584        51261
-5963776        51268
-5971968        51311
-5980160        51587
-5988352        51564
-5996544        51673
-6004736        51599
-6012928        51769
-6021120        51733
-6029312        51803
-6037504        51888
-6045696        51937
-6053888        52008
-6062080        52093
-6070272        52143
-6078464        52238
-6086656        52306
-6094848        52355
-6103040        52446
-6111232        52529
-6119424        52558
-6127616        52665
-6135808        52698
-6144000        52791
-6152192        52901
-6160384        53014
-6168576        53078
-6176768        53043
-6184960        53127
-6193152        53192
-6201344        53271
-6209536        53388
-6217728        53402
-6225920        53464
-6234112        53649
-6242304        53607
-6250496        53671
-6258688        53738
-6266880        53821
-6275072        54005
-6283264        53971
-6291456        54020
-6299648        54232
-6307840        54161
-6316032        54252
-6324224        54299
-6332416        54372
-6340608        54441
-6348800        54509
-6356992        54595
-6365184        54652
-6373376        54731
-6381568        54795
-6389760        54857
-6397952        54960
-6406144        55015
-6414336        55067
-6422528        55170
-6430720        55203
-6438912        55270
-6447104        55427
-6455296        55439
-6463488        55573
-6471680        55578
-6479872        55636
-6488064        55692
-6496256        55757
-6504448        55877
-6512640        55900
-6520832        56069
-6529024        56044
-6537216        56112
-6545408        56177
-6553600        56265
-6561792        56319
-6569984        56390
-6578176        56455
-6586368        56533
-6594560        56596
-6602752        56668
-6610944        56736
-6619136        56806
-6627328        56885
-6635520        56948
-6643712        57027
-6651904        57092
-6660096        57175
-6668288        57237
-6676480        57315
-6684672        57374
-6692864        57429
-6701056        57596
-6709248        57589
-6717440        57687
-6725632        57720
-6733824        57835
-6742016        58421
-6750208        57959
-6758400        58019
-6766592        58061
-6774784        58167
-6782976        58200
-6791168        58279
-6799360        58451
-6807552        58539
-6815744        58489
-6823936        58548
-6832128        58673
-6840320        58737
-6848512        58788
-6856704        58829
-6864896        58894
-6873088        58989
-6881280        59034
-6889472        59179
-6897664        59197
-6905856        59278
-6914048        59382
-6922240        59427
-6930432        59459
-6938624        59528
-6946816        59577
-6955008        59659
-6963200        59872
-6971392        59846
-6979584        59880
-6987776        60074
-6995968        60140
-7004160        60144
-7012352        60197
-7020544        60250
-7028736        60291
-7036928        60361
-7045120        60466
-7053312        60580
-7061504        60585
-7069696        60671
-7077888        60756
-7086080        60820
-7094272        60847
-7102464        61022
-7110656        61083
-7118848        61077
-7127040        61168
-7135232        61199
-7143424        61286
-7151616        61511
-7159808        61394
-7168000        61571
-7176192        61543
-7184384        61625
-7192576        61701
-7200768        61750
-7208960        61823
-7217152        61928
-7225344        61967
-7233536        62064
-7241728        62128
-7249920        62169
-7258112        62245
-7266304        62309
-7274496        62430
-7282688        62476
-7290880        62516
-7299072        62597
-7307264        62684
-7315456        62763
-7323648        62836
-7331840        62876
-7340032        62967
-7348224        63038
-7356416        63084
-7364608        63181
-7372800        63334
-7380992        63344
-7389184        63410
-7397376        63483
-7405568        63611
-7413760        63586
-7421952        63683
-7430144        63767
-7438336        63904
-7446528        63912
-7454720        64098
-7462912        64003
-7471104        64179
-7479296        64316
-7487488        64268
-7495680        64271
-7503872        64369
-7512064        64491
-7520256        64510
-7528448        64535
-7536640        64610
-7544832        64776
-7553024        64832
-7561216        64854
-7569408        64921
-7577600        64949
-7585792        65096
-7593984        65189
-7602176        65220
-7610368        65257
-7618560        65348
-7626752        65439
-7634944        65547
-7643136        65533
-7651328        65663
-7659520        65758
-7667712        65902
-7675904        66435
-7684096        65998
-7692288        65999
-7700480        66194
-7708672        66211
-7716864        66230
-7725056        66221
-7733248        66303
-7741440        66387
-7749632        66529
-7757824        66514
-7766016        66621
-7774208        66643
-7782400        66687
-7790592        66861
-7798784        66862
-7806976        67003
-7815168        67037
-7823360        67020
-7831552        67118
-7839744        67195
-7847936        67350
-7856128        67324
-7864320        67390
-7872512        67560
-7880704        67523
-7888896        67586
-7897088        67654
-7905280        67749
-7913472        67822
-7921664        67880
-7929856        67938
-7938048        68013
-7946240        68085
-7954432        68153
-7962624        68225
-7970816        68304
-7979008        68361
-7987200        68429
-7995392        68512
-8003584        68591
-8011776        68641
-8019968        68722
-8028160        68788
-8036352        68887
-8044544        69110
-8052736        69085
-8060928        69196
-8069120        69131
-8077312        69237
-8085504        69357
-8093696        69368
-8101888        69643
-8110080        69597
-8118272        69609
-8126464        69648
-8134656        69748
-8142848        69919
-8151040        69898
-8159232        69981
-8167424        70067
-8175616        70028
-8183808        70218
-8192000        70272
-8200192        70357
-8208384        70410
-8216576        70514
-8224768        70503
-8232960        70623
-8241152        70720
-8249344        70659
-8257536        70779
-8265728        70792
-8273920        70978
-8282112        71039
-8290304        71013
-8298496        71213
-8306688        71203
-8314880        71231
-8323072        71298
-8331264        71347
-8339456        71517
-8347648        71609
-8355840        71575
-8364032        71642
-8372224        71709
-8380416        71824
-8388608        71855
diff --git a/contrib/network_model/regress.py b/contrib/network_model/regress.py
deleted file mode 100755 (executable)
index 6df8e71..0000000
+++ /dev/null
@@ -1,354 +0,0 @@
-#!/usr/bin/env python
-
-# Copyright (c) 2010-2011, 2014. The SimGrid Team.
-# All rights reserved.
-
-# This program is free software; you can redistribute it and/or modify it
-# under the terms of the license (GNU LGPL) which comes with this package.
-
-#---------------------------------------------------------------------------------------------------
-# Example invokation:
-# % ./regress.py griffon_skampi_pt2pt.ski.dat 65536 120832
-#
-#
-# Given two vectors of same length n: message size S(.. s_i ..), and communication time T( .. t_i .. )
-# where t_i is the time associated to a mesage size s_i, computes the segmentation of the vectors   
-# in 3 segments such that linear regressions on the 3 segments maximize correlation.
-# The metric for correlation is now the cumulative, log error of the estimated time value given 
-# by regression, to the real time value.
-# 
-# Call r(X[i:j],Y[i:j]) = ax + b  the regression line for data of X,Y between indices i and j
-# Call E[i:j] = E( e_i, .., e_j) the vector of estimates from the regression, where e_i = a*S[i] + b
-# Call mean_logerr( T,T' ) the average log error of paired elements t_i and t'_i, of vectors len n T and T' resp.
-#                 i.e  mean_logerr( T,T' ) =  1/n * Sum_i^n ( exp(| ln(t_i)-ln(t'_i)|) - 1 )
-#
-# The script computes indices k and l, s.t.
-#   mean_logerr( r(S[0:k],T[0:k]) , E[0,k] ) + 
-#   mean_logerr( r(S[k:l],T[k:l]) , E[k,l] ) + 
-#   mean_logerr( r(S[l:n],T[l:n]) , E[l,n] ) 
-# is minimum.
-#---------------------------------------------------------------------------------------------------
-
-import sys
-from math import sqrt,log,exp
-
-
-if len(sys.argv) != 2 and len(sys.argv) != 4:
-       print("Usage : {} datafile".format(sys.argv[0]))
-       print("or    : {0} datafile p1 p2".format(sys.argv[0]))
-       print("where : p1 < p2 belongs to sizes in datafiles")
-       sys.exit(-1)
-
-if len(sys.argv) == 4:
-       p1=int(sys.argv[2])
-       p2=int(sys.argv[3])
-
-##-----------------------------------------
-## avg : return average of a list of values
-## param l list of values
-##-----------------------------------------
-def avg (l):
-       sum=0
-       for e in l:
-               sum=sum+e;
-       return sum/len(l)
-
-##-------------------------------------------------
-## cov : covariance 
-## param X first data vector (..x_i..)
-## param Y second data vector (..y_i..)
-## = 1/n \Sum_{i=1}^n (x_i - avg(x)) * (y_i - avg(y))
-##--------------------------------------------------
-def cov(X,Y):
-       assert(len(X)==len(Y))
-       n=len(X)   #  n=len(X)=len(Y)
-       avg_X = avg( X )
-       avg_Y = avg( Y )
-       S_XY=0
-       for i in range(n):
-               S_XY = S_XY + ((X[i]-avg_X)*(Y[i]-avg_Y))
-
-       return (S_XY/n) 
-
-
-##----------------------------------
-## variance : variance 
-## param X data vector ( ..x_i.. )
-## (S_X)^2 = (Sum ( x_i - avg(X) )^2 ) / n
-##----------------------------------
-def variance( X ):
-       S_X2 = 0
-       n = len( X )
-       avg_X = avg ( X )
-       for i in range(n):
-               S_X2 = S_X2 + ((X[i] - avg_X)**2)
-
-       return (S_X2/n)
-
-##----------------------------------
-## mean log_error
-## param X data vector ( ..x_i.. ), length n
-## param Y data vector ( ..y_i.. ), length n
-## return mean(   1/n * Sum_i^n ( exp(| ln(x_i)-ln(y_i)|) - 1 ) 
-##----------------------------------
-def mean_logerr( X,Y ):
-       assert( len(X) == len(Y) )
-       E = list();                     # the list of errors
-       for i in range(len(X)):
-               E.append( exp(abs(log(X[i])-log(Y[i])))-1 ) 
-       return (avg( E ))
-
-
-##-----------------------------------------------------------------------------------------------
-## correl_split_weighted_logerr : compute regression on each segment and
-## return the weigthed sum of correlation coefficients
-## param X first data vector (..x_i..)
-## param Y second data vector (..x_i..)
-## param segments list of pairs (i,j) where i refers to the ith value in X, and  jth value in X
-## return (C,[(i1,j1,X[i1],X[j1]), (i2,j2,X[i2],X[j2]), ....]
-##    where i1,j1 is the first segment,  c1 the correlation coef on this segment, n1 the number of values
-##          i2,j2 is the second segment, c2 the correlation coef on this segment, n2 the number of values
-##          ...
-##    and C=c1/n1+c2/n2+...
-##-----------------------------------------------------------------------------------------------
-def correl_split_weighted_logerr( X , Y , segments ):
-       # expects segments = [(0,i1-1),(i1-1,i2-1),(i2,len-1)] 
-       correl = list()
-       interv = list()  # regr. line coeffs and range
-       glob_err=0
-       for (start,stop) in segments:
-               #if start==stop :
-               #       return 0
-               S_XY= cov( X [start:stop+1], Y [start:stop+1] )
-               S_X2 = variance(  X [start:stop+1] ) 
-               a = S_XY/S_X2                           # regr line coeffs
-               b = avg ( Y[start:stop+1] ) - a * avg( X[start:stop+1] )
-               # fill a vector (Z) with predicted values from regression
-               Z=list()
-               for i in range(start,stop+1):
-                       Z.append( a * X[i] + b )
-               # compare real values and computed values
-               e = mean_logerr( Y[start:stop+1] , Z )
-               correl.append( (e, stop-start+1) );   # store correl. coef + number of values (segment length)
-               interv.append( (a,b, X[start],X[stop],e) );
-       
-       for (e,l) in correl:
-               glob_err = glob_err + (e*l/len( X ))  # the average log err for this segment (e) is 
-                                                               # weighted by the number of values of the segment (l) out of the total number of values
-               
-       #print("-> glob_corr={}\n".format(glob_corr))
-       return (glob_err,interv);
-       
-##-----------------------------------------------------------------------------------------------
-## correl_split_weighted : compute regression on each segment and
-## return the weigthed sum of correlation coefficients
-## param X first data vector (..x_i..)
-## param Y second data vector (..x_i..)
-## param segments list of pairs (i,j) where i refers to the ith value in X, and  jth value in X
-## return (C,[(i1,j1,X[i1],X[j1]), (i2,j2,X[i2],X[j2]), ....]
-##    where i1,j1 is the first segment,  c1 the correlation coef on this segment, n1 the number of values
-##          i2,j2 is the second segment, c2 the correlation coef on this segment, n2 the number of values
-##          ...
-##    and C=c1/n1+c2/n2+...
-##-----------------------------------------------------------------------------------------------
-def correl_split_weighted( X , Y , segments ):
-       # expects segments = [(0,i1-1),(i1-1,i2-1),(i2,len-1)] 
-       correl = list();
-       interv = list();  # regr. line coeffs and range
-       glob_corr=0
-       sum_nb_val=0
-       for (start,stop) in segments:
-               sum_nb_val = sum_nb_val + stop - start;
-               #if start==stop :
-               #       return 0
-               S_XY= cov( X [start:stop+1], Y [start:stop+1] )
-               S_X2 = variance(  X [start:stop+1] ) 
-               S_Y2 = variance(  Y [start:stop+1] )  # to compute correlation
-               if S_X2*S_Y2 == 0:
-                       return (0,[])
-               c = S_XY/(sqrt(S_X2)*sqrt(S_Y2)) 
-               a = S_XY/S_X2                           # regr line coeffs
-               b= avg ( Y[start:stop+1] ) - a * avg( X[start:stop+1] )
-               #print("   range [%d,%d] corr=%f, coeff det=%f [a=%f, b=%f]" % (X[start],X[stop],c,c**2,a, b)) 
-               correl.append( (c, stop-start) );   # store correl. coef + number of values (segment length)
-               interv.append( (a,b, X[start],X[stop]) );
-       
-       for (c,l) in correl:
-               glob_corr = glob_corr + (l/sum_nb_val)*c  # weighted product of correlation 
-               #print('-- %f * %f' % (c,l/sum_nb_val))
-               
-       #print("-> glob_corr={}\n".format(glob_corr))
-       return (glob_corr,interv);
-       
-
-
-
-##-----------------------------------------------------------------------------------------------
-## correl_split : compute regression on each segment and
-## return the product of correlation coefficient
-## param X first data vector (..x_i..)
-## param Y second data vector (..x_i..)
-## param segments list of pairs (i,j) where i refers to the ith value in X, and  jth value in X
-## return (C,[(i1,j1,X[i1],X[j1]), (i2,j2,X[i2],X[j2]), ....]
-##    where i1,j1 is the first segment,  c1 the correlation coef on this segment,
-##          i2,j2 is the second segment, c2 the correlation coef on this segment,
-##          ...
-##    and C=c1*c2*...
-##-----------------------------------------------------------------------------------------------
-def correl_split( X , Y , segments ):
-       # expects segments = [(0,i1-1),(i1-1,i2-1),(i2,len-1)] 
-       correl = list();
-       interv = list();  # regr. line coeffs and range
-       glob_corr=1
-       for (start,stop) in segments:
-               #if start==stop :
-               #       return 0
-               S_XY= cov( X [start:stop+1], Y [start:stop+1] )
-               S_X2 = variance(  X [start:stop+1] ) 
-               S_Y2 = variance(  Y [start:stop+1] )  # to compute correlation
-               if S_X2*S_Y2 == 0:
-                       return (0,[])
-               c = S_XY/(sqrt(S_X2)*sqrt(S_Y2)) 
-               a = S_XY/S_X2                           # regr line coeffs
-               b= avg ( Y[start:stop+1] ) - a * avg( X[start:stop+1] )
-               #print("   range [%d,%d] corr=%f, coeff det=%f [a=%f, b=%f]" % (X[start],X[stop],c,c**2,a, b)) 
-               correl.append( (c, stop-start) );   # store correl. coef + number of values (segment length)
-               interv.append( (a,b, X[start],X[stop]) );
-       
-       for (c,l) in correl:
-               glob_corr = glob_corr * c  # product of correlation coeffs
-       return (glob_corr,interv);
-       
-
-
-##-----------------------------------------------------------------------------------------------
-## main
-##-----------------------------------------------------------------------------------------------
-sum=0
-nblines=0
-skampidat = open(sys.argv[1], "r")
-
-
-## read data from skampi logs.
-timings = []
-sizes = []
-readdata =[]
-for line in skampidat:
-       l = line.split();
-       if line[0] != '#' and len(l) >= 3:   # is it a comment ?
-       ## expected format
-       ## ---------------
-       #count= 8388608  8388608  144916.1       7.6       32  144916.1  143262.0
-       #("%s %d %d %f %f %d %f %f\n" % (countlbl, count, countn, time, stddev, iter, mini, maxi)
-               readdata.append( (int(l[1]),float(l[3])) );   
-               nblines=nblines+1
-
-## These may not be sorted so sort it by message size before processing.
-sorteddata = sorted( readdata, key=lambda pair: pair[0])
-sizes,timings = zip(*sorteddata);
-
-# zip makes tuples; cast to lists for backward compatibility with python2.X
-sizes   = list(sizes)
-timings = list(timings)
-
-##----------------------- search for best break points-----------------
-## example
-## p1=2048  -> p1inx=11  delta=3 -> [8;14]
-##                                             8 : segments[(0,7),(8,13),(13,..)]
-##                                             ....                                            
-## p2=65536 -> p2inx=16  delta=3 -> [13;19]
-
-if len(sys.argv) == 4:
-
-       p1inx = sizes.index( p1 );
-       p2inx = sizes.index( p2 );
-       max_glob_corr = 999990;
-       max_p1inx = p1inx
-       max_p2inx = p2inx
-
-       ## tweak parameters here to extend/reduce search
-       search_p1 = 70          # number of values to search +/- around p1
-       search_p2 = 70          # number of values to search +/- around p2
-       min_seg_size = 3
-       if (search_p2 + min_seg_size > len(sizes)):  # reduce min segment sizes when points close to data extrema
-               min_seg_size = len(sizes)-search_p2
-       if (search_p1 - min_seg_size < 0):
-               min_seg_size = search_p1
-
-       lb1 = max( 1, p1inx-search_p1 )         
-       ub1 = min( p1inx+search_p1, p2inx);
-       lb2 = max( p1inx, p2inx-search_p2)      # breakpoint +/- delta
-       ub2 = min( p2inx+search_p2, len(sizes)-1);    
-
-       print("** evaluating over \n");
-       print("interv1:\t %d <--- %d ---> %d" % (sizes[lb1],p1,sizes[ub1]))
-       print("rank:   \t (%d)<---(%d)--->(%d)\n" % (lb1,p1inx,ub1))
-       print("interv2:\t\t %d <--- %d ---> %d" % (sizes[lb2],p2,sizes[ub2]))
-       print("rank:   \t\t(%d)<---(%d)--->(%d)\n" % (lb2,p2inx,ub2))
-
-       result = list()
-       for i in range(lb1,ub1+1):
-               for j in range(lb2,ub2+1):
-                       if i<j:         # segments must not overlap
-                               if i+1 >=min_seg_size and j-i+1 >= min_seg_size and len(sizes)-1-j >= min_seg_size : # not too small segments
-                                       #print("** i=%d,j=%d" % (i,j))
-                                       segments = [(0,i),(i,j),(j,len(sizes)-1)]
-                                       result.append( correl_split_weighted_logerr( sizes, timings, segments) )  # add pair (metric,interval)
-
-       # sort results on ascending metric: ok for logerr. Add "reverse=true" for desc sort if you use  a correlation metric
-       result = sorted( result, key=lambda pair: pair[0])
-
-
-       top_n_sol=5;  # tweak to display top best n solution
-
-       print("#-------------------- result summary ---------------------------------------------------------------------\n");
-
-       for k in range(top_n_sol):
-               (err,interval) = result[k]
-               print(k)
-               print("\n   RANK {0}\n-------".format(k))
-               print("** overall metric = {0}".format(err))
-               for (a,b,i,j,e) in interval:
-                       print("** OPT: [{0} .. {1}] segment_metric={2}          slope: {3} x + {4}".format(i,j,e,a,b))
-
-
-       print("\n\n\n")
-
-       print("#-------------------- Best Solution : cut here the gnuplot code -----------------------------------------------------------\n");
-       preamble='set output "regr.eps"\n\
-set terminal postscript eps color\n\
-set key left\n\
-set xlabel "Each message size in bytes"\n\
-set ylabel "Time in us"\n\
-set logscale x\n\
-set logscale y\n\
-set grid'
-
-       print(preamble);
-       print('plot "%s" u 3:4:($5) with errorbars title "skampi traces %s",\\' % (sys.argv[1],sys.argv[1]));
-       (err,interval) = result[0]
-       for (a,b,i,j,e) in interval:
-               print('"%s" u (%d<=$3 && $3<=%d? $3:0/0):(%f*($3)+%f) w linespoints title "regress. %s-%s bytes",\\' % (sys.argv[1],i,j,a,b,i,j))
-       
-       print("#-------------------- /cut here the gnuplot code -----------------------------------------------------------\n");
-
-
-else:
-       print('\n** Linear regression on %d values **\n' % (nblines))
-       print('\n   sizes=',sizes,'\n\n')
-       avg_sizes = avg( sizes )
-       avg_timings = avg( timings )
-       print("avg_timings=%f, avg_sizes=%f, nblines=%d\n" % (avg_timings,avg_sizes,nblines))
-
-       S_XY= cov( sizes, timings )
-       S_X2 = variance(  sizes ) 
-       S_Y2 = variance(  timings )  # to compute correlation
-
-       a = S_XY/S_X2
-       correl = S_XY/(sqrt(S_X2)*sqrt(S_Y2))  # corealation coeff (Bravais-Pearson)
-
-
-       b= avg_timings - a * avg_sizes
-       print("[S_XY=%f, S_X2=%f]\n[correlation=%f, coeff det=%f]\n[a=%f, b=%f]\n" % (S_XY, S_X2, correl,correl**2,a, b)) 
-       
-
diff --git a/contrib/network_model/regression2.py b/contrib/network_model/regression2.py
deleted file mode 100755 (executable)
index fc4e84b..0000000
+++ /dev/null
@@ -1,176 +0,0 @@
-#!/usr/bin/env python
-
-# Copyright (c) 2011, 2014. The SimGrid Team.
-# All rights reserved.
-
-# This program is free software; you can redistribute it and/or modify it
-# under the terms of the license (GNU LGPL) which comes with this package.
-
-# This script takes the following command line parameters
-# 1) an input file containing 2 columns: message size and 1-way trip time
-# 2) the maximum relative error for a line segment
-# 3) the minimum number of points needed to justify adding a line segment
-# 4) the number of links
-# 5) the latency
-# 6) the bandwidth
-
-import sys
-
-def compute_regression(points):
-    N = len(points)
-
-    if N < 1:
-        return None
-
-    if N < 2:
-        return (0, points[0][1])
-
-    Sx = Sy = Sxx = Syy = Sxy = 0.0
-
-    for x, y in points:
-        Sx  += x
-        Sy  += y
-        Sxx += x*x
-        Syy += y*y
-        Sxy += x*y
-    denom = Sxx * N - Sx * Sx
-    # don't return 0 or negative values as a matter of principle...
-    m = max(sys.float_info.min, (Sxy * N - Sy * Sx) / denom)
-    b = max(sys.float_info.min, (Sxx * Sy - Sx * Sxy) / denom)
-    return (m, b)
-
-def compute_error(m, b, x, y):
-    yp = m*x+b
-    return abs(yp - y) / max(min(yp, y), sys.float_info.min)
-
-def compute_max_error(m, b, points):
-    max_error = 0.0
-    for x, y in points:
-        max_error = max(max_error, compute_error(m, b, x, y))
-    return max_error
-
-def get_max_error_point(m, b, points):
-    max_error_index = -1
-    max_error = 0.0
-
-    i = 0
-    while i < len(points):
-        x, y = points[i]
-        error = compute_error(m, b, x, y)
-        if error > max_error:
-            max_error_index = i
-            max_error = error
-        i += 1
-
-    return (max_error_index, max_error)
-
-infile_name = sys.argv[1]
-error_bound = float(sys.argv[2])
-min_seg_points = int(sys.argv[3])
-links = int(sys.argv[4])
-latency = float(sys.argv[5])
-bandwidth = float(sys.argv[6])
-
-infile = open(infile_name, 'r')
-
-# read datafile
-points = []
-for line in infile:
-    fields = line.split()
-    points.append((int(fields[0]), int(fields[1])))
-infile.close()
-
-# should sort points by x values
-points.sort()
-
-# break points up into segments
-pointsets = []
-lbi = 0
-while lbi < len(points):
-    min_ubi = lbi
-    max_ubi = len(points) - 1
-    while max_ubi - min_ubi > 1:
-        ubi = (min_ubi + max_ubi) / 2
-        m, b = compute_regression(points[lbi:ubi+1])
-        max_error = compute_max_error(m, b, points[lbi:ubi+1])
-        if max_error > error_bound:
-            max_ubi = ubi - 1
-        else:
-            min_ubi = ubi
-    ubi = max_ubi
-    if min_ubi < max_ubi:
-        m, b = compute_regression(points[lbi:max_ubi+1])
-        max_error = compute_max_error(m, b, points[lbi:max_ubi+1])
-        if max_error > error_bound:
-            ubi = min_ubi
-    pointsets.append(points[lbi:ubi+1])
-    lbi = ubi+1
-
-# try to merge larger segments if possible and compute piecewise regression
-i = 0
-segments = []
-notoutliers = 0
-while i < len(pointsets):
-    currpointset = []
-    j = i
-    while j < len(pointsets):
-        newpointset = currpointset + pointsets[j] 
-        # if joining a small segment, we can delete bad points
-        if len(pointsets[j]) < min_seg_points:
-            k = 0
-            while k < len(pointsets[j]):
-                m, b = compute_regression(newpointset)
-                max_error_index, max_error = get_max_error_point(m, b, newpointset)
-                if max_error <= error_bound:
-                    break
-                del newpointset[max_error_index]
-                k += 1
-            # only add new pointset if we had to delete fewer than its length
-            # points
-            if k < len(pointsets[j]):
-                i = j
-                currpointset = newpointset   
-        # otherwise, we just see if it works...
-        else:
-            m, b = compute_regression(newpointset)
-            max_error = compute_max_error(m, b, newpointset)
-            if max_error > error_bound:
-                break
-            i = j
-            currpointset = newpointset   
-        j += 1
-    i += 1
-    # outliers are ignored when constructing the piecewise funciton
-    if len(currpointset) < min_seg_points:
-        continue
-    notoutliers += len(currpointset)
-    m, b = compute_regression(currpointset)
-    lb = min(x for x, y in currpointset)
-    lat_factor = b / (1.0e6 * links * latency)
-    bw_factor = 1.0e6 / (m * bandwidth)
-    segments.append((lb, m, b, lat_factor, bw_factor))
-
-outliers = len(points) - notoutliers
-segments.sort()
-segments.reverse()
-
-print "/**--------- <copy/paste C code snippet in surf/network.c> -------------"
-print "  * produced by:"
-print "  *", " ".join(sys.argv)
-print "  * outliers:", outliers
-print "  * gnuplot: "
-print "    plot \"%s\" using 1:2 with lines title \"data\", \\" % (infile_name)
-for lb, m, b, lat_factor, bw_factor in segments:
-    print "        (x >= %d) ? %g*x+%g : \\" % (lb, m, b)
-print "        1.0 with lines title \"piecewise function\""
-print "  *-------------------------------------------------------------------*/"
-print
-print "static double smpi_bandwidth_factor(double size)\n{\n"
-for lb, m, b, lat_factor, bw_factor in segments:
-    print "    if (size >= %d) return %g;" % (lb, bw_factor)
-print "    return 1.0;\n}\n"
-print "static double smpi_latency_factor(double size)\n{\n"
-for lb, m, b, lat_factor, bw_factor in segments:
-    print "    if (size >= %d) return %g;" % (lb, lat_factor)
-print "    return 1.0;\n}\n"
-print "/**--------- <copy/paste C code snippet in surf/network.c> -----------*/"
diff --git a/contrib/network_model/smpi_calibration.c b/contrib/network_model/smpi_calibration.c
deleted file mode 100644 (file)
index 7c1abb6..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-/* Copyright (c) 2011, 2014. The SimGrid Team.
- * All rights reserved.                                                     */
-
-/* This program is free software; you can redistribute it and/or modify it
- * under the terms of the license (GNU LGPL) which comes with this package. */
-
-/**--------- <copy/paste C code snippet in surf/network.c> -------------
-  * produced by:
-  * ./regression2.py ./pingpong-in.dat 0.15 30 2 2.4e-5 1.25e8
-  * outliers: 66
-  * gnuplot: 
-    plot "./pingpong-in.dat" using 1:2 with lines title "data", \
-        (x >= 65472) ? 0.00850436*x+558.894 : \
-        (x >= 15424) ? 0.0114635*x+167.446 : \
-        (x >= 9376) ? 0.0136219*x+124.464 : \
-        (x >= 5776) ? 0.00735707*x+105.022 : \
-        (x >= 3484) ? 0.0103235*x+90.2886 : \
-        (x >= 1426) ? 0.0131384*x+77.3159 : \
-        (x >= 732) ? 0.0233927*x+93.6146 : \
-        (x >= 257) ? 0.0236608*x+93.7637 : \
-        (x >= 127) ? 0.0246645*x+94.0447 : \
-        (x >= 64) ? 0.037963*x+93.0877 : \
-        (x >= 0) ? 2.22507e-308*x+98.0633 : \
-        1.0 with lines title "piecewise function"
-  *-------------------------------------------------------------------*/
-
-static double smpi_bandwidth_factor(double size)
-{
-
-    if (size >= 65472) return 0.940694;
-    if (size >= 15424) return 0.697866;
-    if (size >= 9376) return 0.58729;
-    if (size >= 5776) return 1.08739;
-    if (size >= 3484) return 0.77493;
-    if (size >= 1426) return 0.608902;
-    if (size >= 732) return 0.341987;
-    if (size >= 257) return 0.338112;
-    if (size >= 127) return 0.324353;
-    if (size >= 64) return 0.210731;
-    if (size >= 0) return 3.59539e+305;
-    return 1.0;
-}
-
-static double smpi_latency_factor(double size)
-{
-
-    if (size >= 65472) return 11.6436;
-    if (size >= 15424) return 3.48845;
-    if (size >= 9376) return 2.59299;
-    if (size >= 5776) return 2.18796;
-    if (size >= 3484) return 1.88101;
-    if (size >= 1426) return 1.61075;
-    if (size >= 732) return 1.9503;
-    if (size >= 257) return 1.95341;
-    if (size >= 127) return 1.95926;
-    if (size >= 64) return 1.93933;
-    if (size >= 0) return 2.04299;
-    return 1.0;
-}
-
-/**--------- <copy/paste C code snippet in surf/network.c> -----------*/