diff --git a/DataPreparation/1.tf_train.py b/DataPreparation/1.tf_train.py new file mode 100644 index 0000000000000000000000000000000000000000..1a4714244ef9c2e9d714407604efb920bdca38fa --- /dev/null +++ b/DataPreparation/1.tf_train.py @@ -0,0 +1,102 @@ +import os +import pickle +import numpy as np +import scipy.io as sio +from config import data_path +from tqdm.auto import tqdm + +def compute_tf(boundary): + ''' + input: boundary points array (x,y,dir,isNew) + return: tf.x, tf.y + ''' + if boundary.shape[1]>2: + boundary=boundary[:,:2] + boundary = np.concatenate((boundary,boundary[:1])) + num_point = len(boundary)-1 + line_vector = boundary[1:]-boundary[:-1] + line_length = np.linalg.norm(line_vector,axis=1) + + perimeter = line_length.sum() + line_vector = line_vector/perimeter + line_length = line_length/perimeter + + angles = np.zeros(num_point) + for i in range(num_point): + z = np.cross(line_vector[i],line_vector[(i+1)%num_point]) + sign = np.sign(z) + angles[i] = np.arccos(np.dot(line_vector[i],line_vector[(i+1)%num_point]))*sign + + x = np.zeros(num_point+1) + y = np.zeros(num_point+1) + s = 0 + for i in range(1,num_point+1): + x[i] = line_length[i-1]+x[i-1] + y[i-1] = angles[i-1]+s + s = y[i-1] + y[-1] = s + return x,y + +def compute_tf_dist(tf1,tf2): + x = np.unique(np.concatenate((tf1['x'],tf2['x']))) + dist = 0 + idx1,idx2 =0,0 + for i in range(1,len(x)-1): + idx1 = idx1+(x[i]>tf1['x'][idx1+1]) + idx2 = idx2+(x[i]>tf2['x'][idx2+1]) + seg = x[i]-x[i-1] + d = abs(tf1['y'][idx1]-tf2['y'][idx2]) + dist = dist+seg*d + seg = x[-1]-x[-2] + d = abs(tf1['y'][-1]-tf2['y'][-1]) + dist = dist+seg*d + return dist + +def sample_tf(x,y,ndim=1000): + ''' + input: tf.x,tf.y, ndim + return: n-dim tf values + ''' + t = np.linspace(0,1,ndim) + return np.piecewise(t,[t>=xx for xx in x],y) + +# load data +data = sio.loadmat(data_path, squeeze_me=True, struct_as_record=False)['data'] +data_dict = {d.name:d for d in data} + +names_train = open('./data/train.txt').read().split('\n') +names_test = open('./data/test.txt').read().split('\n') +n_train = len(names_train) +n_test = len(names_test) + +# turning function: training data +trainTF = [] +tf_train = [] +for i in tqdm(range(n_train)): + boundary = data_dict[names_train[i]].boundary + x,y = compute_tf(boundary) + trainTF.append({'x':x,'y':y}) +pickle.dump(trainTF,open('./data/trainTF.pkl','wb')) + +tf_train = [] +for i in tqdm(range(n_train)): + x,y = trainTF[i]['x'],trainTF[i]['y'] + tf_train.append(sample_tf(x,y)) +tf_train = np.stack(tf_train,axis=0) +np.save('./data/tf_train.npy',tf_train) + +# turning function: testing data +testTF = [] +for i in tqdm(range(n_test)): + boundary = data_dict[names_test[i]].boundary + x,y = compute_tf(boundary) + testTF.append({'x':x,'y':y}) +pickle.dump(testTF,open('./data/testTF.pkl','wb')) + +# turning function distance: test-train +print('Computing turning function distance ... it will take a long time.') +D_test_train = np.zeros((n_test,n_train),dtype='float32') +for i in tqdm(range(n_test)): + for j in range(n_train): + D_test_train[i,j] = compute_tf_dist(testTF[i],trainTF[j]) +np.save('./data/D_test_train.npy',D_test_train) diff --git a/DataPreparation/2.data_train_converted.py b/DataPreparation/2.data_train_converted.py new file mode 100644 index 0000000000000000000000000000000000000000..cf693ce4c7f6e616a6afe56a6b12596c21e7c5cd --- /dev/null +++ b/DataPreparation/2.data_train_converted.py @@ -0,0 +1,32 @@ +import numpy as np +import pickle +import scipy.io as sio +from config import data_path +from tqdm.auto import tqdm + +# load data +data = sio.loadmat(data_path, squeeze_me=True, struct_as_record=False)['data'] +data_dict = {d.name:d for d in data} + +names_train = open('./data/train.txt').read().split('\n') +n_train = len(names_train) + +trainTF = pickle.load(open('./data/trainTF.pkl','rb')) + +data_converted = [] + +for i in tqdm(range(n_train)): + d = data_dict[names_train[i]] + d_converted = {} + d_converted['name'] = d.name + d_converted['boundary'] = d.boundary + d_converted['box'] = np.concatenate([d.gtBoxNew,d.rType[:,None]],axis=-1) + d_converted['order'] = d.order + d_converted['edge'] = d.rEdge + d_converted['rBoundary'] = d.rBoundary + data_converted.append(d_converted) + +sio.savemat('./data/data_train_converted.mat',{'data':data_converted,'nameList':names_train,'trainTF':trainTF}) +data = sio.loadmat('./data/data_train_converted.mat', squeeze_me=True, struct_as_record=False) +pickle.dump(data,open('./data/data_train_converted.pkl','wb')) + diff --git a/DataPreparation/3.rNum_train.py b/DataPreparation/3.rNum_train.py new file mode 100644 index 0000000000000000000000000000000000000000..d41c8578320add54100615f00d216893435ab801 --- /dev/null +++ b/DataPreparation/3.rNum_train.py @@ -0,0 +1,20 @@ + +import numpy as np +import scipy.io as sio +from config import data_path +from tqdm.auto import tqdm + +data = sio.loadmat(data_path, squeeze_me=True, struct_as_record=False)['data'] +data_dict = {d.name:d for d in data} + +names_train = open('./data/train.txt').read().split('\n') +n_train = len(names_train) + +rNum = np.zeros((n_train,14),dtype='uint8') +for i in tqdm(range(n_train)): + rType = data_dict[names_train[i]].rType + for j in range(13): + rNum[i,j] = (rType==j).sum() + rNum[i,13] = rNum[i,[1,5,6,7,8]].sum() + +np.save('./data/rNum_train.npy',rNum) \ No newline at end of file diff --git a/DataPreparation/4.data_train_eNum.py b/DataPreparation/4.data_train_eNum.py new file mode 100644 index 0000000000000000000000000000000000000000..19875f5c7dae9f7a284d4a87e0506b67a7de8767 --- /dev/null +++ b/DataPreparation/4.data_train_eNum.py @@ -0,0 +1,32 @@ +from os import rmdir +import numpy as np +import pickle +import scipy.io as sio +from tqdm.auto import tqdm + +data = pickle.load(open('./data/data_train_converted.pkl','rb'))['data'] +names_train = open('./data/train.txt').read().split('\n') +n_train = len(names_train) + +eNum = np.zeros((n_train,25),dtype='uint8') +for i in tqdm(range(n_train)): + d = data[i] + rType = d.box[:,-1] + eType = rType[d.edge[:,:2]] + # classfication + rMap = np.array([1,2,3,4,1,2,2,2,2,5,1,6,1,10,7,8,9,10])-1 # matlab to python + edge = rMap[eType] + reorder = np.array([0,1,3,2,4,5]) + edge = reorder[edge] + I = (edge[:,0]<=5)&(edge[:,0]>=1)&(edge[:,1]<=5)&(edge[:,1]>=1) + edge = edge[I,:]-1 # matlab to python + e = np.zeros((5,5),dtype='uint8') + for j in range(len(edge)): + e[edge[j,0],edge[j,1]] = e[edge[j,0],edge[j,1]]+1 + if edge[j,0] != edge[j,1]: + e[edge[j,1],edge[j,0]] = e[edge[j,1],edge[j,0]]+1 + + eNum[i] = e.reshape(-1) + +pickle.dump({'eNum':eNum},open('./data/data_train_eNum.pkl','wb')) + diff --git a/DataPreparation/5.data_test_converted.py b/DataPreparation/5.data_test_converted.py new file mode 100644 index 0000000000000000000000000000000000000000..52ba9cb9a68aec75ba3c2878d258826907e35f1c --- /dev/null +++ b/DataPreparation/5.data_test_converted.py @@ -0,0 +1,31 @@ +import numpy as np +import pickle +import scipy.io as sio +from config import data_path +from tqdm.auto import tqdm + +data = sio.loadmat(data_path, squeeze_me=True, struct_as_record=False)['data'] +data_dict = {d.name:d for d in data} +testTF = pickle.load(open('./data/testTF.pkl','rb')) +rNum = np.load('./data/rNum_train.npy') + +names_train = open('./data/train.txt').read().split('\n') +names_test = open('./data/test.txt').read().split('\n') +n_train = len(names_train) +n_test = len(names_test) + +D = np.load('./data/D_test_train.npy') +data_converted = [] +for i in tqdm(range(n_test)): + d = data_dict[names_test[i]] + d_converted = {} + d_converted['boundary'] = d.boundary + d_converted['tf'] = testTF[i] + topK = np.argsort(D[i])[:1000] + d_converted['topK'] = topK + d_converted['topK_rNum'] = rNum[topK] + data_converted.append(d_converted) + +sio.savemat('./data/data_test_converted.mat',{'data':data_converted,'testNameList':names_test,'trainNameList':names_train}) +data = sio.loadmat('./data/data_test_converted.mat', squeeze_me=True, struct_as_record=False) +pickle.dump(data,open('./data/data_test_converted.pkl','wb')) diff --git a/DataPreparation/6.cluster.py b/DataPreparation/6.cluster.py new file mode 100644 index 0000000000000000000000000000000000000000..2f889f1357d198293cbad45c5abe0c48eeeba5ae --- /dev/null +++ b/DataPreparation/6.cluster.py @@ -0,0 +1,38 @@ +import pickle +import numpy as np +import faiss +from tqdm.auto import tqdm + +def sample_tf(x,y,ndim=1000): + ''' + input: tf.x,tf.y, ndim + return: n-dim tf values + ''' + t = np.linspace(0,1,ndim) + return np.piecewise(t,[t>=xx for xx in x],y) + +tf_train = pickle.load(open('./data/trainTF.pkl','rb')) + +tf = [] +for i in tqdm(range(len(tf_train))): + tf_i = tf_train[i] + tf.append(sample_tf(tf_i['x'],tf_i['y'])) + +d = 1000 +tf = np.array(tf).astype(np.float32) + +ncentroids = 1000 +niter = 200 +verbose = True + +kmeans = faiss.Kmeans(d, ncentroids, niter=niter, verbose=verbose,gpu=True) +kmeans.train(tf) +centroids = kmeans.centroids + +index = faiss.IndexFlatL2(d) +index.add(tf) +nNN = 1000 +D, I = index.search (kmeans.centroids, nNN) + +np.save(f'./data/centroids_train.npy',centroids) +np.save(f'./data/clusters_train.npy',I) \ No newline at end of file diff --git a/DataPreparation/README.md b/DataPreparation/README.md new file mode 100644 index 0000000000000000000000000000000000000000..e6320bd6467931d4e55f2a302ac2fb9d87831b09 --- /dev/null +++ b/DataPreparation/README.md @@ -0,0 +1,89 @@ +**1. Data from RPLAN to Graph2Plan** + +Please refer to https://github.com/zzilch/RPLAN-Toolbox. +You can also download the extracted data from [here](http://vcc.tech/file/upload_file/Data/G2P/Data.7z). +You can load the `Network/data/data.mat` in Matlab to chek the data structure. + +![data.mat](../Interface/Img/data.mat.png) + +Data fields: + +- name: file name in RPLAN +- boundary: (x,y,dir,isNew) + - first two point indicate the front door. + - dir: 0(right)/1(down)/2(left)/3(up) for `dir`. + - `isNew` means the point is not a corner point (usually a point of door) +- order: room order, the larger one will cover the smaller one. +- rType: room categories +``` +# index,name,type(private/public),floorTexture +room_label = [ + (0, 'LivingRoom', 1, "PublicArea"), + (1, 'MasterRoom', 0, "Bedroom"), + (2, 'Kitchen', 1, "FunctionArea"), + (3, 'Bathroom', 0, "FunctionArea"), + (4, 'DiningRoom', 1, "FunctionArea"), + (5, 'ChildRoom', 0, "Bedroom"), + (6, 'StudyRoom', 0, "Bedroom"), + (7, 'SecondRoom', 0, "Bedroom"), + (8, 'GuestRoom', 0, "Bedroom"), + (9, 'Balcony', 1, "PublicArea"), + (10, 'Entrance', 1, "PublicArea"), + (11, 'Storage', 0, "PublicArea"), + (12, 'Wall-in', 0, "PublicArea"), + (13, 'External', 0, "External"), + (14, 'ExteriorWall', 0, "ExteriorWall"), + (15, 'FrontDoor', 0, "FrontDoor"), + (16, 'InteriorWall', 0, "InteriorWall"), + (17, 'InteriorDoor', 0, "InteriorDoor") +] +``` +- rBoundary: (x,y), boundary points for each room +- gtBox: (y0,x0,y1,x1), min-max bounds of a room [RPLAN] +- gtBoxNew: (x0,y0,x1,y1), min-max bounds of a room [Graph2Plan] +- rEdge: (u,v,r), room indices and relative position(u relative to v) +``` +edge_type = [ + 'left-above', + 'left-below', + 'left-of', + 'above', + 'inside', + 'surrounding', + 'below', + 'right-of', + 'right-above', + 'right-below' +] +``` + +**2. Data from Network to GUI** + +We provide scripts to create the same data as we provided in Interface. Like DeepLayout, we use 75k for training and about 3k for validation and test. +Started from the `Network/data/data.mat`: + +0. Change the data path to the `data.mat` in `config.py` +1. Run `1.tf_train.py`. It will create: + - `trainTF.pkl`, `testTF.pkl`: Piecewise turning function. Each element is a dict like `{'x':[x0,...,xn],'y':[y0,...,yn]}` + - `tf_train.npy`: Sampled turning function with shape (ntrain,1000) + - `D_test_train.npy`: Truning function distance matrix with shape (ntest,ntrain) +2. Run `2.data_train_converted.py`. It will create: + - `data_train_converted.mat` & `data_train_converted.pkl`: The `.pkl` one Just a copy of the `.mat` re-dumped with pickle. The data have similar structure with `data.mat`. + - box:(x0,y0,x1,y1,room type) + ![data_train_converted.mat](../Interface/Img/data_train_converted.png) +3. Run `3.rNum_train.py`. It wil create: + - `rNum_train.npy`: counts of different room type +4. Run `4.data_train_eNum.py`. It will create: + - `data_train_eNum.pkl`: A dict like {'eNum':Array with shape (ntrain,25)}. Each array is reshape from (5,5) which means adjacency matrix of 5 coarse room types. +5. Run `5.data_test_converted.py`. It will create: + - `data_train_converted.mat` & `data_train_converted.pkl`: The `.pkl` one Just a copy of the `.mat` re-dumped with pickle. + ![data_test_converted.mat](../Interface/Img/data_test_converted.png) + + Data fileds: + - boundary: (x,y,dir,isNew) + - tf: Piece with turning function + - topK: 1000 indices of the training data has the minimun turning function with current data. + - topK_rNum: Counts for differnt room type of each topK room +6. **[Depends on [faiss](https://github.com/facebookresearch/faiss)]** Run `6.cluster.py`. It will create: + - `centroids_train.npy`: 1000 discrete turning function cluster centroids (1000-d) of training data + - `clusters_train.npy`: 1000 nearest neighbors in training data of each centroid \ No newline at end of file diff --git a/DataPreparation/config.py b/DataPreparation/config.py new file mode 100644 index 0000000000000000000000000000000000000000..00ae9ccb636374ee2af07c487e24a9d8438e8b37 --- /dev/null +++ b/DataPreparation/config.py @@ -0,0 +1 @@ +data_path = '../Network/data/data.mat' \ No newline at end of file diff --git a/DataPreparation/data/test.txt b/DataPreparation/data/test.txt new file mode 100644 index 0000000000000000000000000000000000000000..622a1a19d224d6d5119a59c0612a265c74cfd317 --- /dev/null +++ b/DataPreparation/data/test.txt @@ -0,0 +1,2880 @@ +80598 +59984 +33887 +34092 +79214 +57405 +15948 +80054 +45590 +38931 +3669 +37724 +65752 +60276 +2984 +80569 +76155 +48753 +24276 +7584 +28372 +73777 +57560 +17292 +9556 +38997 +33494 +22100 +79282 +39495 +80341 +55518 +47396 +41018 +62007 +34201 +35453 +55224 +75548 +78900 +78527 +56693 +34171 +68576 +71577 +49542 +49298 +12505 +22946 +6305 +51086 +49015 +30845 +5626 +50299 +41353 +64436 +24657 +33774 +40192 +52774 +58008 +60345 +32836 +21207 +60622 +25366 +68686 +63879 +66309 +27186 +14772 +39276 +38445 +63572 +54413 +41517 +47439 +49481 +67677 +16557 +3972 +79384 +15344 +71566 +30484 +22276 +18170 +12214 +30634 +1169 +26617 +57520 +13603 +75321 +62497 +61479 +20342 +12691 +80533 +35072 +16900 +52093 +4203 +48247 +46298 +26966 +48878 +41244 +11606 +7422 +34819 +48698 +32605 +54429 +30841 +17175 +57498 +71265 +77397 +66111 +57248 +74683 +67980 +24269 +75721 +6255 +6881 +26692 +830 +35975 +13073 +30930 +49242 +49504 +63284 +5561 +5909 +70301 +64523 +27325 +68392 +29598 +50565 +68276 +18426 +36358 +40864 +40299 +33935 +77847 +7544 +43055 +15604 +79141 +47835 +2285 +29808 +78202 +53409 +49549 +62338 +62567 +65617 +73079 +38544 +53300 +53474 +2337 +64310 +23235 +58666 +21690 +9406 +69293 +44389 +23712 +9168 +20520 +20352 +12926 +23824 +73793 +71245 +64342 +17839 +24717 +64830 +49892 +41414 +34852 +32725 +58188 +44522 +39018 +53937 +65620 +50588 +19259 +78801 +5267 +55251 +48891 +23839 +34280 +68738 +44892 +8355 +6251 +72376 +17560 +37714 +13909 +50557 +9246 +71545 +69274 +22858 +36625 +22941 +67482 +3760 +56803 +24250 +64949 +21840 +30745 +18820 +23490 +10218 +35561 +70554 +40239 +61987 +77036 +15162 +69028 +66232 +5998 +53577 +30367 +47454 +29119 +80124 +5582 +16648 +30445 +7906 +50127 +5660 +50223 +72333 +59028 +46164 +19457 +77489 +14598 +6433 +68370 +30789 +45897 +41351 +78535 +38055 +66021 +72715 +38562 +11963 +75839 +52223 +38810 +5358 +31218 +35302 +64189 +53439 +1115 +163 +61794 +37405 +11632 +6441 +65615 +19293 +55060 +33271 +33556 +45702 +11023 +66923 +33573 +70743 +65659 +8341 +49116 +51665 +20259 +59378 +50527 +5992 +30502 +69594 +33040 +49649 +75870 +57291 +32302 +4372 +41491 +77111 +60146 +49993 +66860 +6817 +14616 +38606 +14665 +11487 +61656 +29586 +59307 +45089 +67118 +59983 +9721 +33997 +11518 +32280 +59135 +63796 +3275 +37634 +45981 +79769 +36119 +76489 +59018 +37034 +20491 +72217 +69437 +10429 +28838 +52026 +27673 +61812 +35446 +58820 +62099 +45289 +57930 +9759 +45183 +78404 +878 +3856 +55999 +21825 +16182 +68493 +77191 +34223 +35392 +55620 +29855 +8512 +1346 +52068 +4134 +2739 +48916 +64775 +58394 +60278 +41202 +75471 +45720 +30572 +1494 +13919 +48989 +19207 +22306 +9417 +33423 +47560 +25144 +14479 +57024 +80162 +41525 +53246 +20954 +24279 +54286 +1502 +12985 +65391 +52886 +71262 +72534 +41808 +50148 +21602 +29016 +67047 +1034 +12256 +15687 +4497 +11450 +47155 +69200 +25673 +68055 +31828 +65934 +5193 +58654 +42289 +55359 +64182 +73451 +30416 +52349 +28525 +65400 +44292 +41921 +47755 +68816 +76014 +80733 +2612 +50896 +20589 +72793 +41927 +30463 +47569 +44076 +23135 +35861 +50332 +55691 +18364 +19063 +53781 +45225 +79878 +45020 +59208 +69337 +32962 +31743 +46751 +7764 +19664 +58182 +56044 +68770 +19711 +4053 +69209 +75125 +46258 +12654 +55570 +78223 +77751 +37660 +69983 +78155 +74020 +54515 +77551 +43578 +26826 +1425 +60406 +80256 +863 +13759 +28110 +52189 +55360 +43847 +65798 +13195 +14506 +33443 +18803 +70805 +10914 +23678 +48815 +77442 +47561 +35260 +31937 +24721 +59719 +72583 +9585 +68052 +24005 +31470 +27294 +23845 +738 +29272 +62482 +43433 +69714 +74483 +55871 +75053 +50282 +72951 +4422 +75029 +76419 +7467 +58524 +9019 +32868 +65883 +58730 +35459 +29843 +21077 +5438 +35984 +35905 +59783 +324 +29875 +13272 +2849 +55532 +25431 +61610 +71035 +62758 +36166 +57357 +75678 +45754 +44324 +11456 +67397 +29762 +6508 +2914 +46273 +8067 +61508 +65184 +58772 +39974 +47970 +50890 +48349 +65357 +30438 +65795 +1310 +29513 +6379 +18008 +53109 +67666 +42815 +11467 +31982 +75308 +48953 +39067 +26443 +33497 +1650 +29856 +39772 +66906 +65279 +59616 +63165 +25039 +71796 +11494 +19245 +72677 +64502 +32108 +24895 +48758 +5954 +66176 +5550 +23814 +75440 +784 +45211 +4809 +1638 +53375 +42762 +73928 +48896 +46987 +74264 +19751 +22164 +51157 +42736 +73388 +47288 +43873 +46106 +29860 +65459 +40576 +61246 +75348 +57271 +9034 +68182 +75993 +66741 +11375 +54912 +7321 +7094 +52840 +71588 +33375 +75043 +48443 +72086 +30694 +31552 +69725 +62106 +63614 +80276 +78653 +57539 +16380 +24696 +67190 +9807 +6690 +61265 +46309 +33315 +74008 +75396 +23084 +45458 +72553 +68690 +60394 +28109 +15003 +53856 +59173 +60595 +33896 +21694 +48206 +9217 +5041 +7332 +12508 +31204 +72388 +2797 +58172 +27745 +61383 +48978 +33960 +31699 +12656 +59762 +13138 +66203 +62221 +61122 +79726 +1224 +14061 +72169 +43111 +76308 +64863 +44103 +57358 +44787 +38411 +27488 +1243 +5213 +29206 +36236 +45123 +71731 +55887 +44635 +3892 +64929 +69057 +46874 +46466 +15812 +74242 +78386 +29387 +56156 +62630 +23618 +27569 +50625 +42690 +60906 +40196 +29583 +15853 +15689 +50511 +9424 +2381 +40291 +62179 +59889 +37962 +27357 +23920 +16251 +77426 +56950 +8336 +57249 +7832 +38617 +48715 +29967 +70902 +71529 +48289 +79422 +65756 +4784 +32057 +44337 +38161 +6512 +64166 +55057 +43735 +10547 +7833 +78344 +12467 +15534 +19023 +55437 +76749 +4214 +74597 +1693 +33097 +19431 +39422 +74965 +61696 +18635 +71223 +55964 +59112 +4743 +27983 +7727 +56481 +49024 +21612 +61379 +20069 +41614 +32258 +75191 +15606 +6210 +72514 +62763 +46345 +12108 +35204 +38210 +4108 +60901 +30289 +70661 +79968 +51290 +69412 +44363 +13438 +65496 +59423 +41503 +47158 +3242 +52684 +67504 +67277 +3573 +54121 +35282 +51547 +65745 +59918 +76927 +26392 +60246 +24824 +64163 +49114 +79793 +70098 +29724 +71244 +29531 +61464 +53860 +64402 +39481 +74135 +4324 +12340 +6064 +9634 +40168 +49436 +19776 +61612 +71030 +60841 +48589 +16502 +60555 +72662 +57297 +12430 +74871 +22837 +12708 +1107 +68836 +850 +5989 +71058 +7954 +62118 +41682 +59652 +33138 +67656 +54009 +31037 +18486 +4778 +64817 +30705 +73564 +21282 +21109 +22543 +3419 +16521 +27380 +40586 +9501 +26172 +28360 +77674 +68270 +37002 +19914 +38954 +74210 +1212 +74508 +10056 +16622 +42193 +24936 +59102 +30020 +36495 +32713 +76175 +24589 +52705 +60987 +14291 +66618 +76009 +25971 +79773 +18566 +78144 +78351 +57781 +53983 +49080 +10161 +15587 +43457 +62344 +62867 +56561 +70993 +56873 +34953 +61723 +79049 +10232 +3989 +4448 +33365 +22952 +1208 +27400 +41548 +10169 +9603 +20941 +31033 +26705 +48739 +75787 +30073 +42942 +73120 +50075 +75713 +22465 +28234 +9153 +78810 +7552 +28793 +38113 +5094 +46292 +23181 +9010 +9706 +47298 +75343 +77416 +63068 +33225 +38682 +24408 +54974 +15292 +44170 +26770 +33190 +45207 +32708 +24341 +61932 +527 +48802 +48546 +76517 +77129 +67314 +56310 +6521 +51449 +66787 +14210 +315 +70820 +13383 +53566 +67370 +45413 +68172 +50303 +43362 +45147 +59699 +23331 +38713 +78611 +56576 +42342 +3051 +60867 +46805 +3790 +75614 +9592 +31809 +76432 +69968 +40881 +26923 +47225 +70091 +33372 +37465 +56848 +71469 +67890 +267 +5369 +21462 +63336 +49043 +38199 +15956 +74507 +45576 +78778 +3810 +13300 +31046 +3822 +60070 +65442 +57028 +23671 +11906 +48439 +26874 +38195 +56134 +64849 +77289 +70607 +112 +33765 +65926 +15305 +14647 +27398 +61333 +67983 +63422 +9601 +68618 +62852 +58382 +59093 +60125 +22270 +25615 +40806 +59799 +37554 +34554 +1311 +20290 +42058 +70682 +19724 +63248 +73356 +60831 +53231 +32186 +6712 +25485 +80445 +14599 +10370 +23226 +3622 +77862 +40324 +48035 +1458 +29934 +29510 +77540 +62514 +73718 +10489 +77898 +5754 +32570 +60895 +77245 +12570 +49724 +44254 +11894 +77758 +66093 +2022 +8616 +7284 +19665 +33951 +52690 +8066 +7087 +7536 +2436 +40198 +68750 +1021 +29142 +36656 +14129 +69159 +36161 +20114 +68694 +11092 +11398 +25305 +65576 +38663 +22070 +59473 +51257 +64113 +60213 +26280 +26622 +74677 +63958 +60123 +78701 +10868 +21360 +23929 +29607 +11432 +9143 +76214 +56276 +53370 +23910 +29010 +62461 +60848 +46907 +25497 +61934 +35601 +38423 +27189 +61797 +32190 +48332 +18848 +76211 +41438 +71247 +40120 +78470 +36859 +39523 +18079 +720 +32710 +53322 +44380 +2834 +55215 +72529 +39235 +50157 +74745 +6083 +45974 +60407 +34346 +75449 +5715 +5295 +49487 +52205 +78690 +61585 +77574 +27890 +41282 +20966 +61808 +44628 +60823 +13424 +66474 +58152 +32069 +44651 +74004 +24888 +17960 +49880 +19492 +56722 +27437 +20595 +15826 +58811 +35059 +71710 +54563 +7508 +68920 +39890 +4016 +26062 +50575 +67899 +31508 +64008 +28436 +33958 +73990 +25518 +41661 +59613 +21088 +44398 +27174 +13458 +12022 +55226 +70574 +71154 +7620 +77177 +80448 +62623 +66184 +40253 +65133 +66844 +30981 +30604 +73725 +14117 +35900 +69726 +37059 +32035 +37810 +9472 +62609 +57220 +51155 +49692 +11488 +63157 +43002 +6758 +19544 +25967 +28452 +52188 +18481 +27738 +19382 +63751 +38999 +73411 +73638 +74765 +26133 +27699 +56717 +62490 +30343 +13718 +30741 +55286 +594 +68718 +46302 +57656 +23612 +1149 +59908 +1923 +24355 +13515 +12729 +62861 +18694 +51409 +37031 +19504 +26580 +28736 +53170 +48339 +68788 +28489 +37047 +63590 +16509 +77013 +9384 +12628 +44655 +11262 +60499 +75075 +27105 +53057 +52870 +22121 +80589 +65678 +44216 +42936 +54616 +57578 +9311 +53142 +67518 +26398 +26440 +31155 +15896 +79153 +29709 +65117 +66669 +69634 +43460 +20694 +34046 +63457 +17016 +7096 +77383 +39903 +53855 +56861 +53331 +41590 +34752 +8937 +70011 +24498 +43936 +25788 +46649 +58415 +37247 +47380 +14186 +69972 +16768 +40171 +52732 +72560 +8469 +42676 +123 +57128 +62878 +55748 +28246 +78076 +16877 +63883 +45833 +26264 +6327 +51619 +17005 +24502 +19648 +38996 +78078 +26134 +20508 +75249 +79396 +49003 +6860 +77208 +72522 +20244 +49896 +1350 +74493 +49756 +25223 +13434 +76732 +22731 +67205 +66541 +66086 +12373 +32512 +40912 +76337 +77479 +12878 +42902 +51009 +69465 +71025 +12841 +71418 +17906 +47623 +38254 +8072 +14539 +73627 +44602 +69210 +63335 +61342 +48658 +62991 +58349 +55487 +19356 +9409 +7180 +51355 +70919 +49738 +21202 +20437 +33586 +13055 +29708 +49008 +62380 +42036 +68733 +4636 +35318 +24337 +70050 +37507 +42118 +18969 +66796 +27044 +60405 +65061 +73098 +69898 +67302 +3262 +21498 +80367 +29505 +21093 +11952 +34246 +12401 +39347 +8811 +42412 +25693 +49657 +68289 +66208 +44876 +20340 +6757 +36288 +13821 +48355 +8229 +7443 +54914 +54111 +59315 +17240 +69939 +51915 +8885 +27334 +76617 +10791 +64879 +32524 +53243 +43926 +29546 +50657 +50230 +16014 +63354 +59254 +63577 +49111 +75808 +14267 +27063 +28802 +32501 +33943 +68273 +20201 +36960 +71945 +70452 +33447 +55085 +51752 +80461 +55593 +42293 +30935 +25728 +16131 +15360 +66024 +80597 +38066 +42827 +46993 +45910 +25242 +36533 +62138 +37954 +72318 +76262 +23577 +78186 +27054 +18713 +67279 +31403 +6605 +19085 +444 +15012 +26662 +9857 +10423 +40620 +29070 +38341 +40077 +73241 +54714 +2859 +73082 +56695 +51612 +26787 +44639 +8252 +73741 +9535 +41087 +17050 +67577 +56367 +40081 +10531 +38594 +8936 +36144 +21833 +58285 +68034 +78682 +53904 +29928 +40980 +41405 +27671 +67948 +74029 +20374 +26888 +56691 +47880 +66995 +48861 +3566 +43007 +58335 +2057 +78892 +29680 +54081 +13172 +41546 +32230 +32148 +23418 +79416 +30929 +24716 +65440 +67120 +46605 +35998 +23508 +47913 +31124 +8314 +55492 +18249 +4572 +39439 +76017 +41216 +3151 +38757 +63420 +10583 +40893 +18238 +14795 +28151 +80179 +7301 +41584 +5951 +59923 +23686 +9243 +73016 +33390 +70118 +15227 +76552 +19403 +38036 +63235 +47888 +53946 +65830 +35646 +72460 +47800 +63605 +32805 +2133 +77380 +22702 +71902 +36725 +11814 +80245 +50155 +39825 +6099 +69704 +77685 +6148 +72588 +42139 +69653 +38630 +25508 +59262 +50271 +36751 +67139 +27963 +56724 +65208 +45213 +20839 +19989 +74226 +34286 +27992 +67921 +26720 +57670 +56106 +31692 +16101 +62459 +78841 +22235 +27674 +62708 +76622 +343 +1744 +30400 +11038 +21605 +59210 +35438 +26789 +41507 +67353 +28022 +54470 +75778 +47416 +5864 +77876 +32663 +54442 +69149 +67064 +8164 +64199 +2788 +53836 +53207 +65526 +11753 +49517 +14352 +25522 +61544 +3348 +75113 +26765 +63374 +57359 +11884 +41555 +15394 +56136 +64070 +6604 +79680 +75687 +6781 +51680 +42138 +2766 +14809 +77302 +35119 +71084 +65369 +3949 +72607 +69559 +6097 +70006 +989 +8334 +26195 +55193 +77351 +50947 +2108 +48939 +73162 +78465 +31551 +54231 +71947 +27482 +64097 +6166 +23571 +371 +17090 +34227 +36710 +26901 +45599 +61066 +38502 +2768 +54160 +79838 +74811 +34418 +8052 +61521 +45431 +58023 +1945 +75401 +7113 +52153 +29063 +6037 +7453 +45994 +78562 +63939 +65551 +47600 +14193 +42847 +57605 +16397 +40022 +36259 +33769 +41877 +27343 +57850 +9419 +28362 +31296 +65581 +17008 +4289 +77681 +57210 +23511 +3469 +71708 +4831 +22521 +67568 +30121 +55605 +23046 +24015 +7720 +2031 +79078 +22305 +65040 +17635 +35585 +21961 +33553 +40962 +34558 +67519 +42816 +41524 +26429 +13140 +5414 +3839 +45968 +4563 +50509 +9407 +80532 +54994 +16960 +4442 +70395 +38649 +78009 +20512 +51084 +75519 +28668 +76135 +27934 +10306 +19902 +52796 +46488 +72887 +53177 +70157 +38813 +23771 +15097 +44538 +44803 +76054 +60776 +43138 +58635 +64727 +76327 +37824 +78142 +17639 +48114 +47751 +21261 +21053 +20099 +74392 +14396 +9179 +65461 +12184 +13622 +10198 +56537 +63461 +10586 +36440 +76527 +54774 +15500 +8196 +32481 +13580 +17959 +59720 +26589 +29522 +71848 +73535 +70785 +13237 +48924 +18363 +12140 +10981 +17027 +54874 +13081 +59510 +18046 +46071 +51704 +32008 +52236 +54969 +13687 +37588 +64903 +79487 +29559 +3203 +61191 +31402 +30397 +19121 +48501 +68721 +6078 +32076 +6720 +17003 +80355 +59436 +46491 +50367 +38076 +39542 +11289 +47264 +60450 +25986 +30955 +28553 +33757 +45922 +34188 +30138 +43805 +29557 +59987 +20619 +65163 +52207 +828 +48256 +16140 +24444 +34832 +38402 +5191 +70967 +19705 +38085 +13344 +12574 +17402 +77462 +21052 +69169 +11690 +31132 +4058 +14326 +53514 +10703 +34006 +63496 +4789 +60519 +915 +27114 +11272 +28606 +71541 +12023 +31578 +13463 +34131 +33155 +27025 +73747 +75844 +52811 +47360 +79882 +74657 +43875 +76550 +68069 +10251 +62003 +49737 +6428 +32820 +79038 +9645 +30193 +44117 +66384 +51075 +19696 +37308 +42262 +73592 +39037 +54368 +52467 +57814 +25962 +77567 +46808 +19838 +35186 +50655 +40133 +45990 +79259 +33460 +18557 +37365 +61787 +66715 +9471 +27156 +15535 +53350 +34401 +69806 +6473 +27121 +23834 +24687 +19817 +22333 +73139 +11766 +10408 +59220 +4507 +31288 +31778 +20377 +39050 +18521 +9636 +69211 +71416 +22485 +37470 +44917 +62740 +62074 +25840 +62117 +26096 +3096 +75311 +6630 +25597 +35231 +28336 +48182 +28857 +76902 +51337 +44746 +23640 +31762 +46104 +66975 +4275 +58847 +71022 +59939 +46634 +50874 +41959 +21399 +64009 +26767 +48323 +19223 +76075 +20832 +17825 +62681 +25889 +71838 +26569 +36984 +29338 +18824 +73015 +56697 +5059 +16308 +63845 +43672 +64084 +70763 +26122 +14629 +66142 +29043 +29453 +45728 +36470 +50844 +38426 +5004 +49214 +2990 +1608 +52860 +44234 +68386 +13145 +60938 +79089 +38413 +9493 +77780 +18859 +3522 +35451 +62127 +27709 +10440 +70730 +80449 +79387 +5514 +24473 +30451 +76855 +730 +52102 +48199 +18695 +49561 +9043 +18400 +62827 +50292 +62136 +37387 +15731 +820 +34243 +42480 +56701 +78028 +21501 +32476 +22961 +23523 +38287 +62910 +15770 +25742 +59386 +48562 +74441 +77033 +37025 +53041 +75618 +28608 +41543 +44818 +70498 +54741 +31341 +16800 +27695 +59581 +48296 +18348 +11271 +31763 +10417 +67092 +47547 +3752 +7368 +3751 +64648 +56052 +10473 +24804 +31020 +79918 +5458 +31084 +4757 +62298 +36997 +1282 +58739 +36689 +46044 +69099 +57984 +26927 +7221 +2596 +9569 +10435 +72368 +27626 +66551 +24511 +74539 +54130 +47935 +30554 +16378 +74101 +51983 +62779 +44931 +20581 +20110 +58227 +74113 +76269 +30944 +16389 +18028 +69246 +42962 +37727 +26231 +18738 +38702 +71841 +6498 +59610 +34325 +34316 +25148 +50522 +32063 +64387 +40162 +45193 +33237 +31411 +18791 +7621 +543 +59314 +28866 +73751 +32526 +75802 +34438 +77509 +64469 +12059 +75770 +73952 +80268 +4104 +28516 +22829 +12834 +70679 +482 +80703 +79527 +14623 +12790 +12712 +49391 +60696 +274 +23521 +4906 +2462 +52002 +59476 +77362 +24413 +29604 +60288 +77427 +42782 +27877 +40557 +21221 +22427 +36941 +32738 +35359 +61552 +6214 +9941 +70443 +8160 +28302 +55709 +66854 +68563 +71988 +60514 +9782 +44481 +16195 +51651 +54559 +72733 +7996 +60711 +10657 +21535 +38944 +563 +57553 +54227 +40478 +59576 +52672 +60505 +30449 +49829 +52170 +31636 +62083 +41125 +75369 +6585 +75219 +72689 +45972 +50023 +78278 +73608 +24357 +57650 +71087 +56439 +13058 +50187 +35416 +69597 +58584 +66259 +7491 +65360 +75314 +821 +18332 +1711 +23794 +14354 +61257 +16980 +24627 +37079 +54852 +44977 +50079 +69527 +61641 +49762 +66310 +70433 +3353 +70825 +8579 +76251 +44063 +14777 +63385 +65840 +13926 +51683 +28867 +59584 +24007 +67825 +2333 +75009 +26025 +20768 +39768 +67349 +861 +68222 +35865 +46997 +46337 +51607 +15903 +9506 +69980 +64110 +7769 +50912 +38212 +52069 +41820 +38003 +67958 +42897 +31494 +17309 +32461 +36202 +16042 +60928 +26273 +60780 +1381 +58595 +54532 +58552 +57345 +5680 +64941 +61645 +80273 +43461 +12079 +1680 +51251 +80244 +77863 +17236 +24878 +45430 +16830 +67839 +1319 +71663 +12093 +35676 +16539 +53250 +2628 +39089 +35090 +53686 +46459 +17739 +9256 +22366 +54259 +39090 +20666 +25709 +34698 +13232 +6691 +54136 +1413 +79483 +10756 +74962 +79645 +13803 +16293 +45189 +64463 +27257 +45797 +28976 +2568 +11812 +43290 +43334 +62500 +22862 +73662 +60989 +71471 +49924 +12662 +60943 +25229 +21062 +13544 +63619 +2941 +9031 +6737 +19453 +16928 +78431 +28674 +5001 +37639 +36585 +23793 +71163 +75182 +22897 +62553 +28471 +13744 +6996 +26448 +14397 +21105 +15863 +74276 +3193 +23061 +29032 +29925 +397 +36538 +65359 +25197 +71693 +71195 +39006 +30237 +19295 +10210 +5289 +38800 +66970 +45351 +34496 +14567 +56284 +64862 +76287 +52452 +3720 +16709 +51260 +29176 +47673 +27993 +9339 +59514 +25042 +3646 +76958 +70058 +63553 +3974 +51359 +54768 +56514 +36525 +64585 +27027 +6948 +5464 +47226 +13217 +62960 +25701 +69692 +29942 +26502 +36651 +1591 +36023 +35774 +25901 +8171 +44558 +52 +15664 +19096 +78547 +56889 +45647 +14903 +52030 +65874 +44307 +64975 +33793 +56257 +34857 +34846 +20711 +66876 +25118 +31895 +32366 +68431 +34032 +38405 +57450 +52192 +20563 +10314 +31659 +3204 +53978 +16995 +27526 +74018 +45513 +48555 +16163 +70998 +68387 +65345 +13757 +67647 +48633 +62813 +19473 +52391 +57986 +19400 +38452 +33140 +60945 +36873 +73426 +9707 +51330 +10062 +58809 +75163 +37190 +30660 +4742 +75838 +29744 +71827 +22011 +35369 +49125 +53653 +54214 +64567 +3716 +72797 +24322 +60476 +33840 +71895 +42547 +35997 +59654 +45844 +54311 +50293 +67385 +6218 +61096 +31111 +4206 +69379 +54531 +34483 +23259 +50386 +8879 +9821 +57116 +69547 +25373 +29969 +31660 +34503 +17120 +48321 +70244 +18056 +50105 +22849 +28174 +2368 +44320 +67124 +586 +74218 +47625 +54263 +8773 +63514 +58201 +41232 +61867 +31471 +56094 +2342 +4634 +70231 +15533 +18025 +63507 +20975 +74488 +30107 +47758 +67276 +74875 +5900 +1818 +73092 +45710 +57289 +21206 +78052 +8741 +16284 +34725 +65190 +13870 +22089 +41607 +55252 +66394 +24942 +17855 +61279 +1786 +32806 +70249 +25647 +75833 +45878 +42020 +30875 +15257 +32675 +39209 +51 +58655 +12457 +44140 +16611 +8770 +25531 +8161 +55431 +68143 +56929 +22020 +45964 +18953 +19308 +59888 +28680 +41313 +68640 +78474 +22069 +60773 +19510 +80291 +27982 +12397 +41441 +3872 +1564 +18326 +36957 +12947 +6766 +16470 +33858 +54592 +74726 +65741 +28713 +8347 +31179 +50910 +4774 +8271 +5735 +52638 +55055 +35454 +73313 +28155 +712 +73736 +50228 +51345 +7831 +56832 +74072 +8138 +33189 +20661 +46398 +15151 +68620 +16777 +54030 +64353 +51392 +2488 +12001 +45499 +54651 +21743 +56531 +19129 +57675 +55539 +40631 +36491 +69192 +53735 +30160 +50485 +4971 +24202 +18604 +13403 +12164 +10524 +9518 +2877 +36107 +78102 +20653 +21157 +65081 +309 +18002 +70974 +47077 +69415 +78255 +42517 +68486 +32751 +20353 +39780 +28133 +41578 +15011 +72168 +33238 +4115 +62444 +58391 +5631 +15776 +17845 +63752 +26333 +28833 +76971 +43396 +58884 +80351 +36297 +37337 \ No newline at end of file diff --git a/DataPreparation/data/train.txt b/DataPreparation/data/train.txt new file mode 100644 index 0000000000000000000000000000000000000000..29bb7f5c7ad5d7f2dd1420266196f73ca08c0fa0 --- /dev/null +++ b/DataPreparation/data/train.txt @@ -0,0 +1,74995 @@ +42007 +4799 +2168 +79518 +67225 +29965 +47292 +77115 +69431 +64255 +42044 +60545 +15506 +73322 +55319 +56965 +68519 +39674 +53086 +39731 +7569 +64566 +23314 +21653 +5455 +73328 +60243 +76922 +80214 +75103 +30850 +36608 +77607 +56915 +1308 +16301 +50706 +14896 +867 +38929 +8478 +10915 +20741 +69627 +79948 +13739 +34117 +18868 +31771 +12791 +56517 +22044 +79195 +67249 +4738 +66418 +73237 +56089 +301 +26636 +3618 +32622 +33982 +45639 +7702 +7967 +49920 +30684 +43326 +80727 +35610 +56144 +6385 +15794 +13062 +73168 +38989 +66172 +29879 +34391 +61499 +19632 +40394 +4748 +11844 +80763 +21727 +33166 +74735 +20464 +52411 +42330 +19269 +64263 +6869 +7983 +49915 +21146 +64224 +34635 +32103 +22332 +73762 +41230 +49904 +28791 +52291 +79365 +51356 +34604 +19577 +48098 +40716 +33013 +60524 +64842 +36055 +20971 +22814 +32022 +34680 +50021 +67455 +523 +38788 +1911 +39231 +1188 +57519 +37263 +17425 +2629 +34213 +1779 +34495 +73161 +14723 +11964 +48522 +56857 +8965 +33113 +74554 +14546 +33467 +25359 +568 +19617 +51266 +73905 +72499 +78716 +1546 +7972 +26395 +72630 +57469 +72743 +28066 +23875 +50186 +50870 +13354 +64075 +10154 +34160 +80700 +57732 +80716 +35834 +10934 +51550 +29641 +75747 +49556 +42071 +49554 +66965 +39732 +36195 +4530 +56741 +50768 +60634 +5884 +34763 +67558 +77904 +2023 +49916 +12865 +13927 +63817 +58300 +4484 +15448 +66108 +52274 +57151 +63060 +9963 +15288 +52955 +27226 +75961 +10771 +11871 +59717 +77802 +5185 +27309 +72926 +4782 +45080 +6002 +12767 +70137 +70629 +26658 +77130 +24774 +35021 +78157 +69715 +27899 +45143 +24814 +18946 +50918 +77552 +7524 +50503 +41689 +27586 +68079 +57771 +53939 +1882 +15185 +56801 +46835 +32432 +6844 +28044 +56734 +49588 +72962 +57020 +55078 +48023 +20006 +5401 +41264 +23127 +61493 +78347 +19025 +77949 +50672 +51483 +36935 +64669 +53261 +20013 +9057 +102 +17857 +27685 +3022 +64490 +71455 +20959 +75908 +239 +45631 +32243 +3109 +46498 +70913 +17851 +22605 +2329 +75854 +2331 +7986 +52917 +41355 +75705 +54152 +45712 +45937 +42298 +8535 +48860 +33424 +67330 +70637 +78765 +63818 +66499 +58416 +54537 +50454 +79922 +22558 +21549 +65820 +67909 +65817 +40137 +3721 +62730 +65608 +28435 +37163 +78513 +56236 +39333 +8427 +66955 +63494 +55836 +12145 +4458 +79618 +12148 +57572 +61850 +19772 +59078 +67126 +46082 +19900 +70397 +76352 +22930 +7498 +36416 +3656 +59808 +28598 +41967 +33000 +77511 +31328 +57326 +59731 +71039 +6544 +50058 +14812 +69001 +59623 +52257 +27766 +69894 +49589 +272 +9502 +77003 +69769 +11862 +50624 +25450 +42456 +36591 +76425 +72510 +25724 +78216 +24506 +6803 +20472 +49032 +11264 +55031 +14570 +30228 +44833 +55379 +37383 +61560 +68033 +76999 +42650 +27940 +30739 +68504 +19362 +5560 +44673 +68510 +39034 +35956 +36316 +13069 +28870 +76311 +68336 +1148 +8719 +5196 +23028 +28451 +64410 +3534 +9646 +70135 +30494 +33273 +67329 +40145 +42573 +33515 +47727 +11782 +36917 +67419 +21346 +57372 +48326 +19548 +13350 +56745 +14349 +77559 +66122 +32340 +46005 +18762 +15263 +78031 +73379 +25065 +41882 +20468 +27358 +75909 +50988 +42086 +8177 +54074 +34591 +21286 +66658 +29108 +3632 +79076 +55077 +43496 +62748 +4495 +32256 +59522 +76853 +47964 +4853 +48844 +45329 +7763 +24236 +43133 +62420 +12189 +3623 +67165 +53241 +12404 +34258 +67615 +38251 +53208 +20919 +26399 +57303 +77951 +16650 +11868 +52605 +54795 +79312 +40485 +3920 +30252 +67573 +6411 +64491 +7316 +17598 +63873 +15265 +75945 +55610 +28558 +74822 +10895 +30616 +14803 +4682 +13734 +2318 +40845 +27264 +475 +7898 +26862 +23012 +38208 +65335 +31675 +41122 +55002 +35772 +66659 +52294 +56054 +24147 +62128 +49117 +5182 +79130 +38414 +2828 +48893 +11513 +49232 +60873 +4245 +37772 +42657 +77739 +20350 +63361 +59982 +44814 +35512 +43525 +54791 +14372 +10277 +66871 +2755 +68558 +10421 +35477 +13625 +708 +63104 +13227 +19578 +79706 +56880 +38835 +10077 +5066 +80218 +6702 +55908 +64709 +39256 +30126 +12610 +6866 +22037 +65155 +34231 +77808 +12266 +23177 +13882 +45956 +76417 +28170 +13161 +1012 +77919 +51434 +1093 +27449 +39918 +65493 +33089 +71057 +54063 +10243 +7451 +14654 +35445 +79028 +38316 +28769 +40752 +59509 +53012 +56254 +22812 +49640 +79185 +10884 +37055 +14467 +42708 +59056 +12187 +70329 +35156 +72541 +54068 +48240 +71544 +2581 +48208 +50229 +26911 +24165 +7461 +20490 +57777 +53643 +18786 +39137 +2479 +75684 +30655 +68822 +49132 +12685 +66043 +72479 +3174 +49601 +6714 +2526 +11994 +30505 +47947 +14004 +51081 +75362 +34701 +75862 +50814 +74308 +47802 +30987 +78275 +22211 +51373 +2522 +15965 +155 +15363 +43382 +61026 +52759 +29984 +34245 +32321 +56307 +52048 +43414 +49220 +63317 +13187 +75299 +1366 +50205 +26575 +38993 +11437 +52930 +27315 +43216 +66456 +57228 +21625 +48224 +28111 +22845 +29917 +48154 +39248 +65511 +41024 +47075 +69340 +60078 +30803 +70087 +27405 +77976 +52329 +80230 +8850 +39777 +60907 +72436 +30938 +69633 +58220 +40977 +27536 +20232 +16342 +11688 +24332 +43229 +32534 +39647 +56198 +26965 +75871 +29301 +68787 +68976 +74027 +40956 +77663 +36507 +50952 +34358 +21481 +36893 +80208 +27507 +31971 +66728 +60866 +18723 +181 +74299 +17746 +40776 +6330 +53116 +69956 +2456 +4346 +21646 +347 +59280 +17809 +23825 +55958 +4729 +58011 +60116 +1794 +57729 +25436 +47163 +14308 +41450 +46949 +41115 +61256 +64437 +62283 +53022 +56913 +36095 +26501 +61252 +52475 +33450 +5159 +47104 +28890 +64158 +6462 +37668 +71536 +37736 +36031 +22196 +11347 +22592 +59775 +50061 +32090 +76319 +5132 +25336 +42571 +12587 +62142 +71268 +60102 +20483 +75741 +38615 +62470 +9013 +27036 +32462 +71888 +6730 +42645 +51381 +16601 +53526 +54203 +74473 +61606 +41404 +23474 +6914 +71692 +11026 +35735 +2222 +59980 +80571 +72760 +23688 +42823 +25438 +30787 +16068 +195 +57377 +57940 +13817 +55204 +4739 +31413 +3340 +15992 +26488 +56579 +54736 +29068 +59945 +56599 +34511 +72739 +8273 +26846 +63676 +21786 +80512 +22775 +22314 +980 +75122 +29910 +62786 +26384 +70320 +43163 +44888 +22021 +30410 +69452 +22910 +29053 +18085 +8003 +31273 +80247 +65641 +61507 +40000 +11804 +36136 +79297 +62153 +27170 +63922 +26895 +39546 +9996 +21807 +6570 +12290 +418 +25641 +69676 +24229 +73760 +18588 +10691 +76382 +54597 +17656 +73776 +77457 +25423 +48920 +19448 +45464 +64297 +59291 +29804 +77349 +39360 +13337 +55978 +43330 +50255 +61336 +25746 +24719 +50917 +55942 +76105 +23763 +31088 +24578 +52843 +60685 +15938 +50904 +38614 +59492 +22740 +6291 +62481 +58185 +80290 +5165 +49769 +69109 +79239 +77902 +36193 +19110 +17195 +30664 +56716 +640 +60665 +56375 +15868 +443 +7610 +21740 +18280 +66921 +70315 +65065 +69361 +12700 +4517 +6470 +43328 +79362 +28941 +51848 +47916 +80600 +31759 +50474 +932 +30132 +10307 +23537 +69303 +41017 +51205 +65720 +38473 +32219 +40286 +2454 +18339 +42284 +70598 +16908 +46361 +31579 +41951 +53740 +71356 +75782 +56479 +58687 +9689 +41213 +49186 +3468 +42417 +21068 +45194 +24877 +76197 +64500 +29225 +54508 +32025 +30740 +68187 +17518 +55426 +47056 +7396 +45382 +48995 +44637 +52342 +50404 +73615 +59069 +55115 +59347 +79920 +48258 +36403 +61099 +53019 +34516 +35916 +15921 +64088 +43911 +78809 +5431 +45530 +37913 +69073 +7361 +26809 +29659 +28370 +77197 +23480 +53839 +63286 +1090 +72459 +42434 +71301 +10745 +9037 +10974 +62107 +39830 +12251 +21032 +78342 +49379 +17769 +39898 +25249 +76063 +44765 +67623 +965 +56230 +69605 +63754 +9141 +56585 +16416 +55689 +63689 +53485 +35611 +2030 +38991 +23438 +6425 +33182 +45444 +66412 +69483 +38497 +39178 +39897 +10572 +39954 +73166 +6016 +57985 +26851 +1556 +31469 +76758 +64479 +44828 +56536 +10391 +18324 +60478 +58339 +47850 +32367 +3345 +32803 +2494 +73808 +60501 +69326 +58361 +76829 +968 +57021 +18144 +10302 +31705 +43854 +26376 +9351 +61230 +77856 +65108 +51697 +29123 +12643 +25464 +43439 +31925 +62014 +63305 +31794 +27716 +74843 +51183 +38166 +66881 +71132 +58976 +21577 +5841 +58530 +48807 +76030 +29204 +73508 +74932 +48357 +8479 +77418 +12091 +65832 +69761 +58402 +61196 +73533 +53037 +21839 +5465 +57803 +69916 +54995 +17484 +65738 +19533 +39928 +55761 +68041 +66059 +65379 +61103 +78143 +26007 +14424 +30217 +20203 +76734 +8604 +61245 +37180 +80603 +48804 +13731 +61629 +48734 +9642 +23273 +51961 +25290 +31323 +9836 +3167 +13812 +19120 +27744 +46895 +9202 +18913 +68575 +64210 +19964 +57390 +79554 +74249 +33279 +63030 +2905 +24708 +32290 +24866 +55869 +21191 +45370 +74510 +11270 +72566 +57374 +44460 +61067 +41582 +8854 +52181 +20455 +50612 +64248 +36201 +44795 +68067 +53525 +3035 +80651 +50797 +14244 +13865 +26335 +57199 +23978 +80346 +76305 +2196 +64330 +19278 +24253 +13671 +71915 +71296 +15495 +21887 +22706 +32313 +76418 +56149 +32760 +17371 +49736 +66621 +28405 +40397 +62917 +42539 +32318 +73011 +37928 +45570 +79117 +44498 +62264 +5668 +32147 +2275 +74120 +66191 +45723 +44490 +64922 +23013 +21404 +42024 +62955 +1904 +57929 +41981 +67586 +43954 +45743 +48033 +27749 +53070 +31602 +27304 +78115 +66278 +28100 +61435 +52004 +50691 +30728 +4854 +33101 +6740 +31516 +11728 +53063 +22087 +9861 +11900 +41857 +540 +47702 +28213 +16720 +55779 +26945 +78564 +62184 +79472 +49235 +41836 +32654 +42238 +31880 +44778 +75783 +57913 +71825 +73773 +30177 +74545 +44494 +26734 +17918 +2956 +69667 +17148 +79474 +55325 +650 +53464 +52950 +39162 +30098 +6302 +60786 +67963 +15906 +43181 +61595 +29285 +10780 +48557 +34487 +34137 +16997 +70788 +24076 +18964 +55236 +43668 +18226 +50487 +35247 +75984 +7097 +30359 +13263 +69874 +43037 +46536 +3218 +34489 +52360 +75035 +17685 +62027 +42839 +18684 +30348 +55367 +56102 +31320 +38690 +18875 +59244 +47186 +78064 +60327 +43835 +18620 +32793 +77766 +63369 +17578 +28070 +54146 +33700 +46368 +43549 +40396 +64782 +7743 +8765 +20647 +3908 +37598 +17397 +63562 +46792 +33579 +31543 +42337 +17118 +152 +67108 +37376 +43739 +7111 +76156 +63289 +70684 +56494 +56824 +18083 +44316 +39509 +31250 +40723 +52379 +2209 +22954 +3521 +72146 +52923 +19942 +19614 +46019 +41083 +29883 +17773 +77608 +6939 +60247 +69312 +48923 +19899 +75494 +62591 +10717 +8717 +79908 +58340 +30969 +580 +55765 +58204 +13446 +40495 +10655 +51050 +15260 +39078 +12469 +21956 +63894 +55537 +52973 +35897 +54432 +37866 +46657 +49310 +19652 +7286 +23879 +21233 +61282 +20136 +21478 +20315 +11094 +62671 +25970 +7300 +77210 +14205 +38273 +21870 +12744 +66314 +52417 +11455 +36818 +39778 +40859 +26127 +38047 +64870 +46328 +10424 +12924 +21318 +53477 +20097 +27500 +19704 +33993 +23539 +39142 +27191 +33928 +4071 +26474 +57412 +5723 +29941 +55179 +79877 +64116 +35288 +55586 +21486 +33180 +8784 +78032 +38620 +69338 +39296 +4194 +10457 +42664 +53444 +20555 +30474 +70789 +27141 +25459 +69919 +13223 +38574 +14693 +7035 +21102 +28409 +2416 +57254 +21944 +36229 +28717 +74021 +11819 +6703 +55851 +901 +16561 +48814 +66969 +65487 +1098 +73471 +37535 +9738 +32029 +547 +5304 +47235 +61728 +60503 +55774 +9483 +22880 +30507 +13593 +46457 +72480 +13224 +38337 +75161 +53196 +19392 +26012 +76652 +66066 +2450 +23857 +22817 +42649 +53153 +7863 +25447 +778 +14971 +36621 +7659 +59369 +57797 +26782 +37205 +4684 +2963 +74149 +53491 +36049 +39789 +51691 +22415 +29054 +60579 +23440 +21568 +62569 +79041 +26217 +78969 +11004 +65638 +79093 +38390 +21472 +9492 +41194 +56057 +17276 +67148 +28016 +9819 +37377 +28929 +71371 +59114 +61962 +21133 +62509 +5581 +64680 +66229 +40342 +68636 +17866 +19288 +14294 +59118 +78558 +41336 +68166 +32796 +44627 +21767 +72053 +19584 +12194 +56818 +46240 +35441 +10536 +42998 +26957 +61472 +16707 +46765 +58571 +55223 +54339 +77092 +11088 +55634 +35495 +46629 +20344 +37633 +11741 +40702 +57824 +7905 +5466 +48783 +71198 +28573 +11343 +54459 +3878 +4866 +71649 +61374 +917 +43575 +48768 +80335 +44309 +29832 +78248 +70553 +23606 +40642 +12062 +57914 +38371 +4386 +36004 +47351 +56169 +55720 +36947 +17501 +32448 +52392 +31363 +68156 +53176 +21050 +80239 +4951 +54224 +22622 +71858 +34675 +76394 +61100 +39452 +39350 +4771 +64230 +11394 +78916 +13159 +41384 +914 +37029 +64753 +11893 +57119 +52161 +48072 +69037 +33710 +77444 +72996 +9717 +57168 +79953 +18428 +74851 +59407 +3378 +9426 +20375 +33253 +40280 +32677 +56836 +67211 +16364 +40571 +61899 +13441 +41456 +32835 +79084 +74753 +53595 +3644 +34979 +58129 +47952 +68111 +63044 +16447 +42817 +45219 +20868 +55072 +3982 +79144 +32440 +51840 +44781 +3372 +69079 +61666 +16116 +43683 +67493 +34985 +14553 +70635 +40809 +68227 +46338 +53567 +23020 +19101 +47506 +57593 +9503 +39611 +77174 +21913 +44652 +866 +24300 +66886 +29356 +58337 +41305 +52929 +61798 +30352 +55211 +18213 +16642 +71806 +54997 +18619 +73788 +79568 +61449 +51792 +8057 +29012 +58835 +54999 +13460 +2987 +78398 +32540 +22059 +37265 +69746 +33193 +44943 +48986 +66569 +47227 +14560 +76133 +6414 +43907 +49103 +15483 +7249 +32282 +63270 +4043 +67409 +55201 +46753 +65153 +62319 +72158 +45152 +75135 +58430 +6461 +18810 +55318 +31424 +49776 +46351 +297 +33613 +63433 +51379 +76944 +32065 +54898 +22145 +14413 +40219 +25795 +14727 +63642 +46532 +10445 +80635 +47122 +10599 +14611 +5875 +553 +70254 +69142 +43942 +61170 +3188 +77907 +58943 +22078 +977 +7814 +10589 +59938 +44099 +2878 +10650 +23186 +32337 +26737 +62350 +48961 +19386 +46465 +32549 +63105 +35902 +66802 +58636 +16017 +46339 +8155 +32687 +16241 +68115 +48996 +8245 +60262 +28694 +55412 +9613 +68871 +54365 +6773 +62364 +66135 +6084 +63306 +72337 +75660 +33491 +39745 +39985 +20904 +55260 +32016 +8001 +51189 +48190 +25287 +18642 +42162 +2111 +25561 +27970 +69611 +57697 +7476 +66792 +32778 +65305 +53700 +1683 +60076 +74414 +27417 +7378 +14258 +2155 +24806 +57922 +17987 +27971 +34064 +68585 +9849 +55800 +44621 +73112 +54985 +52897 +52764 +50477 +66426 +7531 +13741 +58864 +9334 +69961 +29276 +20433 +26676 +10557 +28952 +31234 +19361 +22563 +75091 +29328 +66532 +38817 +49933 +41390 +9285 +8303 +42892 +53587 +59594 +27952 +48512 +52405 +25704 +71399 +34856 +45161 +27091 +46252 +13087 +47575 +80070 +16531 +11666 +14023 +43411 +36986 +6793 +8142 +16213 +72843 +66486 +33294 +50617 +29652 +34048 +61052 +5654 +40115 +11651 +5886 +28255 +771 +27645 +47111 +43660 +80274 +40508 +67294 +46387 +4204 +77436 +36070 +68479 +25675 +39914 +10159 +33836 +13668 +27361 +74881 +58572 +75293 +42694 +55241 +29660 +59880 +162 +39629 +53000 +12606 +74318 +79749 +72698 +49898 +66352 +53197 +47618 +12706 +5323 +58715 +18087 +49956 +12169 +10892 +2928 +54560 +47975 +60396 +38380 +52230 +11162 +23167 +14433 +57252 +44179 +71479 +26686 +19396 +36368 +439 +39651 +25247 +58069 +15309 +54393 +7670 +55452 +56420 +31968 +10538 +29184 +53876 +35703 +66562 +48929 +41666 +73211 +36630 +21051 +62206 +78053 +29446 +6435 +56330 +53944 +28287 +1699 +56605 +4817 +48835 +60419 +63116 +18554 +20667 +2146 +23005 +57799 +57306 +46725 +43753 +11423 +43262 +14593 +11119 +69226 +6154 +42586 +10412 +78667 +12403 +44223 +44092 +6311 +2380 +26935 +4426 +35569 +27094 +71085 +12310 +26919 +24961 +42106 +78116 +44039 +74163 +6698 +74772 +64724 +48490 +75303 +32834 +8807 +53585 +37041 +15978 +76523 +38633 +6013 +56485 +75409 +65200 +12436 +7439 +77536 +35366 +62205 +62211 +31637 +5061 +10002 +913 +32080 +68354 +24553 +8862 +442 +79515 +12804 +45468 +64579 +39114 +69166 +13542 +24643 +40744 +36660 +63278 +66045 +38687 +42622 +8327 +53607 +39703 +33667 +43491 +64118 +57685 +39389 +33802 +77393 +42415 +76121 +12339 +48884 +79569 +54078 +45419 +7979 +8390 +26953 +8170 +78432 +56904 +78312 +34144 +68828 +75373 +76476 +44235 +8093 +37370 +2460 +7029 +66662 +22860 +48365 +19168 +68429 +27390 +3290 +7197 +19388 +818 +34957 +42525 +4967 +69553 +32538 +47808 +66141 +54461 +16565 +4341 +73197 +13230 +34555 +57671 +61550 +20068 +10772 +28695 +69454 +23375 +73525 +1259 +63546 +596 +34539 +27601 +19639 +3691 +19226 +23441 +75084 +71375 +43123 +36063 +61647 +63456 +52716 +57774 +31784 +79216 +992 +58048 +34683 +74316 +14402 +9504 +60279 +59599 +15930 +64480 +80479 +74722 +76202 +42296 +14301 +63233 +46707 +17604 +13784 +10016 +51156 +18874 +24955 +67602 +39053 +64562 +67009 +17747 +37234 +45281 +78391 +42145 +51492 +59582 +10242 +60604 +72913 +78300 +34629 +1934 +64364 +52400 +37397 +35203 +21115 +72252 +74718 +31125 +71214 +78080 +62034 +707 +73816 +42046 +61956 +46205 +67742 +70915 +68454 +69797 +1292 +64217 +60520 +29777 +77069 +37202 +75649 +6088 +30200 +75116 +6636 +28538 +5871 +76427 +78796 +75670 +73019 +21455 +76045 +4492 +68505 +62440 +9911 +63102 +63705 +31966 +17933 +35637 +35250 +39533 +17265 +38184 +23361 +32431 +71810 +78327 +18322 +31537 +60869 +77012 +58446 +58344 +46864 +4062 +60453 +24835 +70573 +14018 +73542 +78257 +14901 +8265 +51236 +3523 +75347 +7607 +34876 +23477 +78415 +23008 +11720 +20916 +4913 +38443 +55764 +1230 +49959 +43633 +17622 +44201 +2918 +8337 +37677 +1274 +53279 +54507 +32411 +55423 +54209 +47527 +66712 +76144 +44068 +40813 +45855 +57870 +18871 +50232 +6357 +45831 +46242 +40088 +40262 +43272 +33686 +21686 +56677 +79105 +42455 +62276 +27003 +47133 +53222 +76542 +45561 +30250 +74779 +79868 +16870 +33 +67434 +25252 +38908 +16744 +26372 +16498 +71853 +70463 +20680 +23238 +23505 +50438 +40496 +13962 +24389 +63436 +27378 +80258 +69941 +69619 +42259 +63902 +37322 +70424 +2642 +33653 +46537 +26883 +26641 +67369 +15758 +72678 +55001 +38282 +2854 +18968 +58546 +27166 +20363 +69237 +33100 +14735 +19563 +2064 +43000 +60804 +67018 +25244 +80142 +67584 +78988 +24060 +68077 +60360 +13380 +46123 +57466 +69719 +11681 +22576 +44160 +48292 +27406 +7054 +67829 +27454 +57103 +10446 +35554 +9890 +28603 +69125 +20532 +50980 +78632 +446 +49297 +48699 +51571 +18578 +30889 +53224 +63279 +42016 +78346 +71280 +60469 +23147 +67456 +44909 +13004 +80349 +30821 +23094 +30247 +1677 +70067 +69060 +13486 +25166 +77768 +9578 +32879 +76865 +61836 +65262 +978 +20603 +67719 +61063 +62271 +80101 +15716 +39282 +68839 +75076 +62147 +18677 +18111 +77412 +62745 +78172 +79657 +21048 +22992 +65653 +62781 +15114 +80380 +50549 +5823 +56336 +52920 +4367 +60657 +23613 +22472 +35390 +20537 +79229 +54197 +80665 +73222 +35967 +51818 +77957 +5058 +45992 +8353 +52139 +32898 +16749 +44853 +57191 +53180 +14257 +12986 +29927 +41021 +50838 +38217 +51793 +35467 +15598 +67050 +626 +45532 +24533 +8 +36786 +42436 +75916 +6103 +47614 +40540 +26177 +60344 +7385 +45044 +15735 +62449 +20042 +80475 +52431 +62330 +31211 +71557 +7021 +31009 +58419 +5945 +42128 +61795 +61275 +30757 +25621 +3119 +11917 +67873 +19474 +3938 +74512 +21837 +40931 +30922 +2486 +68378 +4161 +33082 +27497 +15937 +40380 +25495 +2591 +49894 +40475 +32876 +44622 +78447 +67608 +32251 +48977 +31648 +34123 +7383 +3432 +31318 +1333 +51710 +38099 +60561 +4869 +58802 +5873 +4835 +15839 +59243 +69460 +70399 +27096 +79477 +72420 +74474 +75179 +50067 +42188 +1763 +61124 +32471 +22292 +19257 +25299 +44065 +49035 +20254 +10850 +42288 +44141 +20412 +77230 +11763 +13013 +45176 +72597 +80515 +74971 +57608 +67611 +22102 +37462 +52055 +77523 +20942 +38881 +60358 +70256 +38972 +51119 +57338 +14843 +26971 +16771 +23987 +55642 +42543 +64235 +53145 +60881 +4164 +5249 +79540 +54435 +62145 +1983 +60083 +62972 +8966 +65331 +3820 +12751 +19738 +48094 +72967 +64914 +51131 +13160 +24261 +41259 +7472 +36508 +18794 +25163 +30597 +54290 +15346 +49698 +41469 +34760 +17544 +41518 +55879 +30866 +16141 +35886 +16127 +69923 +35819 +23043 +39257 +71532 +57645 +23221 +42840 +1673 +893 +56783 +73308 +8905 +15600 +48092 +52414 +61438 +48303 +814 +1773 +51231 +31077 +23263 +42966 +63543 +80732 +58532 +30785 +63195 +864 +20903 +76823 +48376 +33215 +70666 +1820 +40605 +36000 +61076 +33327 +65687 +46763 +40569 +68356 +31023 +80294 +65446 +12640 +39292 +66360 +55015 +67528 +10140 +20330 +45371 +69030 +58650 +40313 +54355 +45738 +43190 +52609 +55246 +41511 +14900 +3865 +811 +19088 +2618 +29078 +22417 +6443 +54131 +61533 +37510 +23071 +75164 +32706 +74696 +58017 +32399 +18851 +19435 +30156 +28863 +57586 +630 +904 +24023 +77824 +73485 +3205 +69491 +29801 +21411 +70264 +72111 +8231 +40405 +74835 +37664 +80454 +38947 +26644 +15047 +36723 +33284 +40830 +57284 +74536 +72987 +66078 +73294 +12649 +13935 +25767 +68372 +51243 +5583 +48955 +55652 +48663 +41473 +39616 +46568 +31373 +66610 +29139 +74012 +73006 +1074 +79525 +36422 +8976 +55850 +55133 +57766 +70708 +59277 +12807 +79631 +61369 +73697 +59876 +22188 +32978 +29960 +16103 +19786 +76951 +25379 +73790 +38348 +21069 +12846 +52581 +12937 +80590 +26841 +36705 +60899 +79740 +35898 +22896 +72594 +26821 +51743 +38453 +64360 +4140 +70350 +1716 +28300 +47735 +42475 +25859 +50945 +8568 +3306 +2792 +37561 +27385 +22047 +52703 +46502 +25269 +74906 +43946 +32417 +30954 +8560 +31825 +22798 +56371 +71856 +51176 +11496 +53059 +24978 +12881 +67280 +45247 +40788 +43494 +80203 +11980 +45874 +69762 +11974 +46419 +38052 +65091 +20800 +64966 +44543 +80588 +53269 +52665 +42234 +68251 +73667 +63770 +21324 +42511 +57138 +37149 +48716 +19094 +42534 +38928 +68117 +4884 +73824 +32947 +38159 +28995 +65151 +68629 +50935 +77016 +9962 +21587 +19393 +41841 +29725 +20518 +17100 +74645 +63064 +24619 +17849 +67158 +23587 +23680 +79674 +15485 +6365 +75240 +69066 +37098 +63471 +61713 +26117 +37979 +54229 +31186 +59480 +7789 +50334 +67307 +40714 +38051 +68461 +72644 +69164 +9866 +11356 +64628 +36573 +54931 +69392 +58219 +41153 +52238 +59828 +13928 +32359 +62700 +34595 +25528 +80262 +74397 +17723 +76001 +74742 +18389 +21571 +10146 +6601 +33971 +44557 +43489 +26269 +64526 +52940 +75222 +24219 +55352 +34121 +68961 +33164 +5710 +64832 +72304 +44600 +29956 +56851 +59763 +254 +47684 +7680 +23199 +30669 +67305 +43246 +30800 +48866 +12072 +64821 +24285 +29247 +34407 +13274 +72709 +61451 +12092 +37813 +47852 +34599 +58310 +41867 +62238 +52287 +20885 +23323 +37539 +13677 +34977 +77078 +63475 +37976 +13054 +72071 +37476 +78103 +6395 +29726 +7638 +40546 +8133 +64960 +15658 +19227 +60356 +43967 +72712 +25284 +42419 +52166 +74139 +33917 +47832 +33338 +16045 +73400 +75604 +43511 +40875 +44446 +58839 +58975 +35088 +61108 +17223 +24079 +5448 +51970 +16273 +28337 +49462 +45165 +3477 +11198 +75843 +29693 +69701 +67977 +72609 +69601 +61724 +35190 +18214 +33856 +14964 +6684 +29052 +7463 +10063 +72393 +80623 +55544 +8258 +13977 +62928 +42965 +74387 +67299 +61727 +63292 +16984 +3736 +73786 +67660 +14344 +27944 +54513 +74298 +61495 +23428 +1586 +53650 +63540 +75683 +20821 +21766 +56004 +30615 +27258 +45007 +74502 +39832 +71637 +29735 +38144 +4525 +35163 +51022 +29050 +51111 +58749 +65054 +8428 +12163 +58894 +14722 +33569 +66436 +79863 +42826 +2660 +75704 +71187 +45587 +19340 +68434 +57619 +44298 +43823 +11225 +15183 +319 +67503 +75656 +22082 +52253 +58114 +43721 +47214 +7129 +21190 +4302 +39464 +61405 +50567 +12490 +73252 +47469 +47920 +43738 +34987 +24316 +45562 +16123 +60 +52187 +78793 +54055 +45186 +44350 +35778 +68986 +40939 +1453 +49178 +53996 +10998 +38001 +54430 +12509 +22755 +25286 +15713 +46893 +66512 +69177 +605 +76459 +41204 +25578 +69309 +11936 +56009 +2564 +1269 +30725 +48352 +13136 +26437 +32521 +59505 +36741 +17413 +71519 +29245 +48703 +23077 +2609 +63625 +18603 +32427 +43301 +7874 +77965 +60978 +2558 +1560 +22046 +67096 +13894 +60275 +2113 +17290 +76434 +14428 +47619 +26587 +24660 +32333 +61994 +21758 +47388 +59282 +4850 +73378 +47813 +78835 +6423 +12440 +63532 +44881 +5806 +28981 +23555 +79052 +76416 +78199 +30466 +24516 +15728 +3796 +74615 +18512 +597 +49879 +49172 +27889 +3954 +65728 +9746 +46116 +51117 +76267 +76516 +27489 +13188 +36244 +39560 +79586 +55056 +62923 +63897 +3655 +70740 +31298 +39133 +66549 +5827 +37890 +33159 +35612 +74243 +33038 +32923 +53693 +41732 +18225 +73710 +31939 +54084 +13648 +15383 +13660 +45565 +17207 +53078 +15447 +34967 +7876 +30633 +19613 +50696 +64520 +31295 +78755 +53273 +31917 +80037 +3843 +19980 +52083 +44744 +56454 +24891 +49036 +35068 +14058 +80553 +38585 +27340 +62059 +41156 +18736 +72664 +20702 +46349 +78016 +64827 +6989 +41098 +30874 +72725 +3969 +63283 +18387 +42247 +2243 +47819 +19252 +2594 +3737 +45303 +31360 +73202 +44771 +80450 +32681 +75692 +30355 +67811 +21214 +73434 +80729 +11785 +50993 +28807 +22515 +26746 +12899 +67490 +15285 +75923 +41653 +41718 +41322 +4366 +11151 +313 +44370 +37067 +20831 +72730 +47177 +51344 +75927 +70183 +20814 +58307 +62432 +9988 +56503 +1431 +54167 +48067 +35525 +24752 +67610 +4500 +47859 +17870 +80197 +43713 +9879 +15670 +16886 +5098 +17652 +76854 +3846 +4896 +48108 +68110 +53272 +59895 +19615 +31275 +24312 +54787 +18957 +29371 +16809 +28263 +54842 +23074 +46914 +56994 +71507 +57873 +6236 +37368 +80519 +54289 +25822 +14993 +11740 +19796 +51587 +40844 +12557 +51395 +41349 +75438 +3393 +50651 +13721 +44946 +14191 +29345 +34260 +26897 +9523 +47316 +8234 +32159 +19806 +49744 +40643 +36521 +40783 +15857 +79176 +67703 +24591 +73146 +6530 +51958 +4705 +63281 +4135 +80000 +9961 +33754 +12262 +41512 +58417 +39113 +62067 +78983 +57259 +32206 +35487 +1527 +77066 +12815 +13730 +33124 +53692 +39004 +20085 +56061 +10578 +80615 +28382 +15252 +35278 +55069 +25475 +25816 +36208 +80220 +39242 +73806 +6994 +61407 +18761 +66553 +7579 +5173 +50491 +58639 +6663 +1403 +33165 +50810 +18726 +69963 +8439 +77805 +77990 +25616 +57792 +13608 +22177 +71473 +22083 +33621 +28366 +70484 +76492 +34732 +60258 +34416 +47781 +61015 +6451 +61195 +20496 +43360 +13348 +12739 +70931 +62325 +10266 +65425 +11258 +71932 +51644 +74252 +55275 +49499 +19886 +51981 +1123 +42925 +4848 +22088 +46400 +46764 +78899 +77871 +25722 +60540 +61726 +5510 +49591 +38728 +79492 +36484 +49707 +8799 +44758 +21489 +61198 +40156 +14027 +32616 +5534 +76714 +27936 +73018 +16432 +66231 +70818 +58942 +37899 +35537 +67360 +12435 +44552 +5242 +57580 +20030 +15884 +46583 +44128 +78488 +68853 +21615 +16298 +46517 +10248 +22629 +36856 +38285 +7530 +34150 +40676 +17596 +38851 +75739 +53774 +44810 +73276 +67534 +10513 +66121 +7017 +61663 +15717 +35714 +21595 +69250 +58333 +54626 +2395 +66125 +7350 +22191 +18272 +6426 +8918 +42484 +25610 +10936 +20305 +73068 +79824 +1787 +72129 +25295 +3613 +22588 +2935 +46658 +31359 +62303 +41184 +1694 +66302 +14391 +28295 +50240 +9171 +44401 +61470 +31847 +44910 +8886 +51045 +22283 +58933 +29409 +43019 +30344 +36334 +30975 +9369 +74208 +75014 +76235 +36490 +44075 +3266 +12726 +25515 +12199 +57489 +27078 +53178 +11902 +71441 +57008 +2998 +42620 +43196 +5140 +6242 +15332 +39076 +25549 +18349 +27975 +2407 +11435 +50523 +24493 +33421 +40616 +40689 +36240 +463 +67248 +32720 +65006 +52601 +2700 +37556 +61834 +4283 +12850 +70267 +8128 +15734 +19706 +16987 +27388 +59430 +52876 +22413 +36375 +64078 +43107 +61586 +39687 +71091 +6772 +36019 +12278 +12476 +47615 +64465 +25088 +600 +60815 +32972 +77618 +4637 +72574 +13688 +35647 +27015 +12660 +52196 +18308 +3953 +4883 +45906 +10434 +43186 +75325 +46617 +62434 +65997 +10018 +69391 +78467 +39753 +66652 +34536 +40385 +46126 +11096 +36707 +47309 +77769 +32614 +34559 +76908 +14070 +79945 +17193 +67376 +51305 +37754 +13264 +38516 +56200 +78925 +384 +37042 +75096 +25303 +12225 +43678 +2081 +35102 +34259 +49928 +71024 +31368 +55125 +30266 +50643 +38489 +62480 +7532 +7298 +22475 +9920 +30210 +34940 +61603 +3395 +3029 +7506 +18622 +32783 +72362 +75988 +39112 +25278 +4908 +19692 +28914 +44610 +66075 +1713 +44030 +59406 +74102 +47552 +24456 +20187 +75162 +58554 +37950 +44056 +37038 +38905 +5672 +66615 +63222 +20505 +52044 +31317 +74174 +10049 +44045 +47412 +68437 +42502 +71694 +111 +50384 +68730 +39840 +14315 +68880 +7264 +48894 +55913 +44934 +47129 +62853 +3401 +26324 +40281 +25842 +6768 +6352 +74757 +8011 +3375 +45938 +62431 +41371 +10216 +65148 +8821 +72788 +32338 +53388 +2197 +61141 +20154 +66803 +35361 +42924 +22518 +39900 +3780 +7869 +77998 +56806 +34124 +22343 +4695 +73429 +3832 +21898 +39473 +57516 +18093 +50341 +45457 +3154 +75798 +62317 +15970 +43063 +60322 +38918 +64100 +9416 +61547 +65154 +21768 +5399 +74770 +52887 +46777 +13549 +22956 +26011 +31196 +65354 +35670 +18593 +46819 +34067 +39099 +54397 +4444 +61630 +58816 +50280 +62260 +25319 +9917 +40996 +16171 +56283 +33205 +30793 +20754 +49906 +4251 +70917 +70064 +72061 +42896 +18185 +24807 +33509 +30901 +76733 +63192 +28207 +53427 +6273 +32723 +79707 +50209 +73554 +43563 +2236 +7529 +78651 +73550 +9410 +59959 +35036 +19410 +71333 +75840 +78604 +29796 +28492 +42380 +32362 +54400 +56841 +15178 +72977 +19926 +34119 +16646 +31721 +44829 +59065 +16064 +61439 +13728 +78593 +49515 +33204 +11380 +5236 +36841 +13614 +43731 +73394 +47135 +78808 +56146 +58589 +57992 +57941 +66722 +68443 +71886 +9651 +41381 +18024 +55434 +65271 +57417 +22048 +23714 +7684 +78023 +17516 +23082 +42134 +73488 +37099 +25131 +19387 +6093 +22730 +48089 +36170 +66678 +50913 +43762 +35353 +72918 +79798 +14490 +57772 +40191 +17943 +60111 +20368 +9936 +70294 +13824 +77322 +49661 +61017 +21514 +39033 +36076 +13351 +17321 +58108 +64924 +35586 +40352 +19527 +44831 +48611 +6525 +66686 +60959 +17752 +66933 +60534 +78597 +23423 +35795 +55090 +5924 +50994 +68808 +11372 +49638 +10322 +72004 +39555 +50701 +26161 +36562 +55306 +14522 +42135 +31904 +71944 +58806 +52748 +8530 +20338 +63132 +13676 +45436 +30336 +17690 +42490 +22090 +69007 +27862 +24260 +24181 +49050 +35328 +56025 +27559 +23027 +51969 +21210 +68287 +77028 +50834 +41071 +75863 +32037 +32582 +74223 +31388 +25574 +26300 +80685 +17091 +24601 +27797 +19976 +79449 +75986 +13025 +29529 +28496 +51946 +46018 +75892 +71996 +38625 +51058 +32871 +14854 +20990 +64847 +23255 +9670 +32174 +60071 +44752 +13522 +42495 +8992 +21264 +63113 +33662 +40883 +59643 +37344 +64316 +12901 +1899 +5821 +12584 +22624 +20441 +44668 +63320 +27755 +46921 +30489 +24262 +12241 +75959 +16001 +64338 +32552 +32680 +35153 +53842 +26656 +2472 +56186 +42200 +8310 +39283 +56617 +42776 +8955 +56987 +10373 +59796 +45759 +40165 +52018 +73657 +46446 +60549 +58583 +49540 +1969 +64836 +13551 +39645 +4120 +60872 +53813 +40730 +16971 +44508 +5634 +12793 +59124 +3919 +42397 +65770 +67200 +12125 +66809 +25355 +12692 +77077 +4512 +37712 +22639 +26763 +53013 +6211 +63119 +36250 +74740 +43441 +27306 +59083 +65290 +12338 +2325 +22479 +15581 +72801 +68236 +60993 +13079 +63025 +20237 +35462 +13607 +16236 +7840 +35304 +5542 +6444 +77267 +13950 +46148 +47465 +27830 +74580 +77755 +50927 +52995 +70343 +66816 +14128 +74280 +77017 +65999 +47313 +57448 +4860 +27185 +77645 +77309 +42717 +15262 +31255 +31834 +25203 +6073 +7619 +38056 +3866 +14941 +58773 +80591 +46943 +16423 +25082 +47339 +6889 +11388 +57033 +36471 +44080 +1531 +2367 +46481 +32382 +11304 +6094 +42426 +27484 +30100 +43150 +49558 +48016 +21508 +6777 +50818 +8528 +700 +45549 +58537 +2853 +66750 +2132 +44459 +6180 +69503 +73254 +79788 +69180 +14928 +77819 +11842 +47839 +35733 +78531 +29484 +52232 +18355 +8636 +51785 +15473 +57402 +48559 +62641 +31235 +65754 +62398 +38781 +37401 +52588 +37568 +29059 +13914 +73652 +75472 +8154 +31995 +46673 +34515 +35921 +56474 +63802 +30842 +8743 +10996 +5036 +79433 +11706 +59185 +47338 +6707 +31629 +8087 +52599 +24461 +17971 +48538 +51080 +19495 +39726 +57507 +65349 +37511 +33085 +8520 +44774 +38651 +15080 +3884 +61139 +61232 +44699 +18047 +64716 +34058 +64431 +13121 +336 +39735 +18717 +39815 +37279 +1229 +10746 +40934 +55936 +40810 +17997 +72645 +13641 +49855 +45608 +43499 +62474 +31422 +49342 +42794 +20797 +17693 +24426 +9631 +48951 +73548 +69369 +16606 +54731 +69697 +46247 +6027 +9182 +14041 +8386 +66098 +12951 +54652 +57072 +7882 +43232 +18751 +48063 +50086 +44806 +31026 +48914 +11331 +67152 +1623 +8856 +35391 +30995 +41616 +39953 +9985 +58029 +33682 +51706 +69302 +57547 +27006 +1426 +49914 +75132 +37618 +37076 +22878 +30105 +36824 +52014 +7248 +57613 +15579 +834 +13231 +66900 +43612 +1756 +59967 +2622 +16842 +62565 +14043 +60611 +77037 +36353 +13624 +8582 +64985 +74177 +7064 +2307 +50305 +45786 +28539 +8033 +21805 +77946 +52234 +46232 +50877 +13566 +63761 +40398 +45009 +65972 +339 +39001 +77994 +36080 +1177 +68220 +39180 +74614 +34409 +33945 +67790 +54786 +72985 +40154 +57318 +27018 +283 +57908 +24605 +48591 +30454 +61511 +19828 +44050 +38017 +46061 +18132 +10928 +49245 +46612 +73279 +25660 +72387 +17030 +73875 +80691 +55802 +57700 +52681 +18580 +71768 +61392 +43488 +20829 +18230 +10886 +22850 +79019 +31340 +70193 +41409 +47121 +63029 +12437 +58585 +32562 +11672 +28856 +72532 +76312 +72681 +20135 +75734 +15708 +74437 +29342 +25856 +31274 +28782 +3668 +74997 +1663 +13774 +29551 +25674 +55627 +59471 +1407 +1908 +50129 +18300 +14575 +41250 +1577 +30053 +56060 +61024 +44974 +36418 +45465 +73058 +38510 +37557 +5494 +21181 +53265 +21433 +28697 +16779 +59644 +79484 +23026 +70124 +22324 +73288 +38707 +51167 +69297 +28954 +26355 +73093 +21663 +60250 +43921 +4035 +20025 +13075 +51695 +53960 +66760 +18988 +79042 +76686 +11848 +73292 +61923 +4049 +75177 +57796 +28365 +38096 +37958 +47741 +63158 +2577 +24200 +32305 +3234 +53025 +58769 +11734 +43860 +24879 +34014 +29265 +58205 +12934 +45309 +5457 +7277 +53848 +2822 +42859 +22620 +72275 +48648 +22754 +63589 +6645 +68226 +24673 +67006 +32587 +50467 +36933 +67263 +74023 +13584 +73712 +62141 +51938 +38495 +13166 +34469 +76912 +3710 +39883 +76978 +36932 +15356 +17730 +11875 +55521 +74363 +15302 +38277 +30558 +53784 +53158 +54005 +28028 +41124 +43005 +78532 +8517 +28514 +78848 +74919 +76763 +49931 +25460 +74635 +65933 +59405 +42175 +71310 +36784 +39913 +56221 +72772 +32207 +2697 +76653 +30910 +2895 +43965 +5002 +32523 +30977 +50720 +9533 +68369 +17637 +4111 +11571 +18375 +75540 +50184 +35604 +75817 +55180 +50577 +57486 +10941 +14602 +65022 +74477 +55934 +74410 +3981 +15184 +13266 +63067 +37423 +56802 +32034 +43030 +41713 +78359 +15874 +71162 +26893 +74810 +12045 +29122 +73913 +26628 +45610 +26052 +26328 +22349 +31189 +56600 +73088 +31984 +69523 +76808 +77359 +36711 +62340 +44545 +75176 +15760 +41411 +36939 +25670 +9465 +13174 +75895 +76840 +70176 +34923 +13623 +47665 +30119 +60346 +48859 +13932 +12296 +66064 +70964 +61431 +37195 +41870 +25865 +78015 +74480 +53255 +63474 +37527 +19236 +58088 +64141 +73142 +14707 +41168 +70136 +51952 +69355 +29457 +27389 +70462 +14272 +57759 +62862 +57234 +43634 +22180 +63201 +13843 +16632 +1252 +60970 +64254 +73789 +32594 +6416 +9247 +25848 +11509 +9425 +25653 +72005 +53685 +21854 +68038 +59421 +18138 +78017 +50068 +19774 +18687 +69100 +50211 +12906 +26039 +21750 +78936 +36349 +74000 +64120 +60473 +73989 +43268 +16340 +29042 +20709 +28934 +68749 +57793 +40080 +59993 +37646 +63364 +16820 +50402 +15966 +34139 +17142 +65666 +57848 +60544 +71918 +27308 +45493 +38612 +65047 +54744 +14251 +11144 +66785 +42629 +43892 +54353 +72738 +33357 +76347 +26344 +47028 +10209 +9226 +4113 +69442 +56245 +75021 +13719 +57006 +8326 +32701 +77262 +66625 +45962 +23700 +34961 +45818 +61243 +17643 +53524 +23670 +4938 +38345 +63828 +59058 +51278 +75511 +3492 +69140 +21592 +32007 +42307 +42388 +63490 +53603 +35400 +46832 +51751 +10374 +33713 +25585 +76082 +50640 +44848 +53010 +79286 +7629 +36160 +22328 +44169 +32565 +30590 +13798 +18616 +3893 +37926 +47283 +12787 +33520 +11406 +34735 +21164 +71440 +56822 +69033 +59842 +31042 +72075 +3597 +30760 +54547 +55483 +58422 +44496 +61955 +75257 +20335 +56462 +77232 +35177 +65443 +57186 +19343 +61658 +35511 +37590 +601 +35281 +51517 +39597 +62072 +39910 +33017 +34447 +18499 +27207 +35262 +1227 +43622 +59998 +47663 +19246 +45884 +53999 +80145 +20016 +13130 +54386 +29750 +8557 +21298 +7692 +36766 +18716 +4061 +66780 +11738 +7267 +30267 +55595 +69457 +59003 +12082 +57878 +75105 +5554 +18019 +79744 +65681 +68914 +50191 +57575 +72874 +7989 +12121 +19732 +42308 +55220 +54928 +35946 +51490 +72719 +70248 +72805 +45820 +76893 +63447 +27320 +10576 +57787 +43562 +912 +80119 +47652 +45097 +78866 +70000 +77822 +13464 +9085 +7799 +73581 +37779 +40279 +69895 +20121 +22909 +43945 +56928 +7892 +40526 +67680 +41464 +23768 +39212 +40012 +27033 +34976 +77215 +5195 +60101 +72589 +36194 +40333 +15338 +46299 +7722 +41224 +32360 +68420 +6678 +57094 +55830 +69960 +39977 +65366 +52503 +65367 +46824 +42242 +20669 +34755 +28627 +3067 +23997 +69368 +37403 +18192 +67420 +11250 +59274 +19809 +25424 +52608 +75063 +68170 +42636 +52212 +19627 +61300 +16610 +38197 +19427 +29266 +55791 +9736 +61308 +63262 +29821 +58587 +14968 +11808 +48221 +21111 +80292 +76809 +2091 +62767 +3596 +46795 +13578 +12257 +27005 +49270 +80750 +16924 +6741 +65680 +25271 +5999 +52854 +7897 +22335 +41240 +72186 +48948 +54630 +48300 +8650 +52511 +59795 +46584 +66603 +44952 +22025 +45016 +69243 +30044 +4654 +38415 +28442 +35675 +18216 +11652 +41838 +57337 +28605 +49320 +66324 +19912 +6660 +64420 +7314 +59207 +65892 +64620 +30074 +11966 +8194 +37625 +50488 +33786 +21073 +31044 +77617 +46253 +75534 +21135 +67726 +8645 +51170 +73260 +17822 +13764 +69967 +44347 +65398 +74793 +68051 +31412 +62873 +48934 +44662 +25835 +2237 +10471 +60772 +20178 +25498 +29116 +4348 +45947 +36814 +7545 +54756 +9118 +73228 +66895 +54655 +9467 +47972 +7899 +4268 +23476 +38274 +25503 +75597 +77459 +58295 +67819 +73433 +2301 +7793 +60340 +34104 +21607 +32824 +12100 +63884 +13445 +32988 +37972 +43811 +12529 +49852 +2072 +55200 +24195 +71654 +34816 +55592 +70836 +12711 +1953 +19756 +12201 +29930 +6791 +78996 +56039 +68086 +21372 +41859 +55332 +7216 +23853 +74043 +32177 +77564 +39679 +48008 +80372 +13967 +62894 +25886 +45552 +78332 +2312 +70652 +8779 +64552 +66169 +6569 +4758 +32048 +49935 +47144 +62004 +68415 +58538 +76377 +6208 +73057 +51747 +7878 +77211 +57273 +33177 +59813 +53754 +72024 +80392 +78192 +49095 +75533 +9377 +43088 +50190 +2670 +76994 +40769 +13206 +2390 +30378 +71072 +33734 +23778 +19725 +1684 +70090 +52604 +66777 +8410 +78950 +62996 +50102 +9298 +25575 +35528 +22669 +73633 +71804 +38059 +726 +11515 +28795 +45024 +44245 +74584 +77102 +71248 +58484 +64549 +1948 +69418 +61274 +20128 +66498 +22838 +43714 +41113 +67423 +61670 +38041 +42045 +78976 +48660 +43453 +19251 +27856 +77146 +9797 +80329 +20247 +59385 +19422 +4851 +46196 +59589 +52878 +46086 +1838 +13252 +34505 +79761 +64785 +62934 +75452 +9072 +75913 +70668 +26784 +20487 +47331 +37315 +70353 +53574 +270 +42460 +14365 +73810 +21381 +32435 +4490 +28817 +3823 +50589 +21301 +34062 +26327 +47181 +32830 +58321 +53957 +35466 +25327 +80366 +44126 +67513 +54600 +63637 +45082 +41344 +47398 +14239 +26955 +58487 +70576 +50179 +21466 +33538 +17438 +32965 +8342 +48041 +9386 +77641 +11680 +29292 +73940 +24535 +37548 +28239 +6851 +57440 +23429 +40097 +72155 +36036 +70296 +37015 +43308 +58651 +18866 +32815 +68355 +10828 +70414 +13681 +27455 +15761 +58240 +15270 +5346 +44949 +63445 +19832 +28568 +20544 +64475 +54947 +29327 +1549 +4795 +1655 +71484 +73447 +14347 +1839 +36802 +23912 +35414 +65779 +59726 +77199 +29989 +43666 +122 +77569 +41026 +72056 +36467 +67849 +28359 +80302 +46836 +46641 +49910 +61377 +1554 +77733 +37351 +27355 +48159 +47460 +73590 +40522 +54053 +40852 +35527 +44939 +49441 +66836 +71873 +74141 +10024 +731 +71907 +5481 +42187 +26271 +197 +43776 +40003 +68304 +75206 +10107 +51867 +61083 +65197 +75510 +14989 +33949 +37215 +58033 +70442 +64746 +63820 +56519 +30411 +35439 +74759 +75022 +2776 +79074 +2734 +61033 +37005 +70590 +48928 +39880 +1338 +19693 +43010 +38743 +69008 +75643 +23636 +25642 +77956 +67463 +61125 +52559 +53149 +26522 +26559 +10372 +54080 +70065 +19072 +49691 +40195 +19940 +59845 +69937 +62417 +49791 +67864 +31462 +7008 +58491 +19545 +6584 +4199 +75399 +20361 +78619 +30301 +11960 +6402 +31436 +65237 +38393 +71130 +23157 +42166 +50805 +25297 +3416 +21715 +59666 +25534 +11584 +76559 +20411 +60913 +18808 +35212 +56175 +44688 +8031 +26250 +43920 +34867 +5887 +27223 +18205 +77757 +75742 +7324 +45729 +14357 +53807 +25044 +33504 +37158 +20504 +57634 +76381 +40302 +68094 +13521 +52112 +60625 +48359 +77832 +38446 +19749 +1474 +9059 +14364 +22362 +24598 +18900 +43992 +8035 +43409 +26813 +59760 +60227 +38770 +15180 +53325 +66222 +21614 +47780 +77439 +34739 +3476 +7438 +40197 +19147 +55284 +31108 +19132 +62695 +75003 +33595 +58397 +58972 +52583 +45127 +79256 +11295 +18889 +52227 +9169 +73193 +36426 +41309 +1973 +2691 +69360 +76091 +56917 +47101 +55032 +53202 +21089 +36773 +39628 +5784 +27610 +78176 +12655 +40959 +29698 +36458 +39320 +30776 +18524 +43947 +10137 +78502 +21022 +59233 +65039 +39854 +54992 +78379 +19565 +5423 +15931 +17701 +13353 +77466 +10966 +38115 +78569 +16741 +34670 +71678 +27149 +19338 +44133 +13497 +53684 +76791 +50501 +57312 +68191 +75487 +8019 +579 +4737 +37903 +27831 +71264 +60878 +7242 +34530 +31395 +69158 +5158 +57615 +71929 +22439 +57348 +17660 +56897 +18301 +1928 +36715 +61349 +56914 +8591 +60398 +70221 +38363 +17999 +17136 +1619 +40798 +55291 +68719 +35534 +34663 +6285 +8656 +76626 +37216 +68044 +77049 +17580 +63154 +50427 +29069 +29061 +47507 +77764 +6734 +36498 +42300 +13567 +40364 +53349 +67074 +68134 +24246 +74780 +12965 +32071 +23655 +1808 +71584 +15310 +80336 +65965 +58162 +5683 +80711 +77296 +8380 +20385 +8090 +29017 +77631 +43101 +79508 +18431 +51595 +65375 +74467 +58481 +44113 +73171 +80202 +61675 +57229 +26156 +33718 +27326 +35228 +50358 +73606 +3591 +67555 +80014 +25414 +71122 +14678 +71747 +14079 +11183 +37198 +68945 +46660 +40336 +24754 +20692 +10658 +68261 +10366 +45991 +44544 +4068 +22632 +27366 +655 +728 +8251 +75086 +78214 +6553 +65 +38850 +5189 +33080 +48621 +54492 +59051 +36260 +34219 +73250 +76956 +57019 +72018 +41444 +25207 +18776 +65122 +39682 +19658 +14019 +18012 +23150 +45448 +5251 +40344 +69921 +47894 +64548 +62840 +27900 +44722 +75681 +34448 +13473 +76141 +33208 +39805 +24783 +13808 +13613 +16233 +49431 +73885 +56026 +68860 +20921 +4683 +27529 +43925 +5076 +16525 +55 +71062 +50850 +25312 +44877 +77018 +28754 +79763 +47590 +14801 +30665 +34757 +42527 +75316 +6359 +25941 +40780 +77468 +57474 +27446 +75405 +55368 +79792 +36141 +57479 +64527 +57807 +71999 +63487 +70522 +24482 +47586 +75079 +2115 +58992 +63742 +65530 +26001 +25713 +9363 +19369 +8983 +33614 +44766 +6254 +18793 +30046 +35355 +43403 +26586 +66450 +76236 +61357 +57159 +33478 +22375 +3397 +42719 +17785 +60065 +49387 +40103 +41398 +34668 +49930 +12526 +72116 +16362 +17968 +63184 +21652 +15451 +6946 +44177 +67893 +13729 +77403 +26539 +75983 +68346 +17911 +30919 +36056 +68647 +64899 +72465 +58810 +39 +35442 +15336 +32548 +49410 +45817 +19953 +56073 +48261 +46632 +52844 +66383 +26640 +41000 +35208 +12844 +30139 +80474 +42643 +75012 +37929 +51780 +18577 +73943 +10975 +48316 +12770 +46249 +65854 +61050 +76683 +798 +14603 +3572 +76195 +79719 +36812 +5771 +41173 +16225 +25251 +53923 +36311 +67576 +59107 +51647 +13384 +2403 +41492 +20825 +20645 +44209 +41327 +5749 +54514 +1821 +29623 +11660 +75048 +7685 +51888 +54728 +73424 +31563 +30656 +58181 +6647 +31715 +79833 +8300 +61868 +38745 +15474 +67627 +63935 +58649 +12182 +13164 +1552 +14108 +40029 +45106 +70263 +21801 +38417 +185 +13972 +32650 +68617 +22167 +54919 +31306 +16641 +69218 +17221 +39786 +63400 +12343 +27751 +16733 +26768 +45039 +50614 +31528 +79543 +8481 +64624 +48721 +12586 +23835 +9926 +24394 +15331 +77658 +44462 +29874 +38255 +61193 +28529 +72213 +64448 +34184 +2966 +51198 +71958 +30244 +6286 +29280 +47628 +77668 +25537 +37374 +68089 +71413 +40840 +60656 +31065 +16740 +26665 +50845 +76259 +32907 +63542 +37771 +65036 +40675 +59947 +56429 +26564 +57253 +25694 +42978 +13982 +380 +59252 +8910 +26987 +13190 +74426 +49279 +42940 +18822 +70738 +32312 +47371 +18536 +47065 +28994 +4545 +60509 +17649 +27696 +33158 +38054 +43065 +10725 +38499 +13518 +74231 +76645 +52915 +43844 +45526 +44843 +48499 +58895 +33894 +10893 +75488 +37547 +13077 +43894 +9069 +34936 +21736 +71306 +50599 +12889 +6466 +8248 +77818 +34038 +75072 +4889 +56667 +29082 +28131 +950 +5566 +55119 +37063 +8172 +2673 +41589 +21877 +46127 +64983 +30539 +62737 +53052 +53665 +38815 +43670 +52464 +51997 +50082 +50812 +35652 +42344 +4843 +51467 +22612 +71435 +19972 +45847 +79294 +7903 +55736 +3620 +10087 +23230 +20148 +29364 +70742 +76046 +18852 +79659 +37734 +4238 +28778 +64027 +5214 +27209 +61376 +36339 +28945 +76180 +53245 +79796 +48226 +77657 +42062 +25021 +36849 +39406 +20905 +64188 +56179 +77463 +39798 +25401 +16714 +59121 +28338 +74303 +57957 +20726 +78964 +45257 +7127 +65381 +21332 +71165 +38378 +80028 +8782 +10984 +25937 +62294 +31106 +42034 +23305 +45852 +43252 +23465 +52779 +63520 +76947 +49623 +13531 +12684 +20594 +55122 +33211 +25989 +9732 +6175 +26798 +10453 +36945 +37134 +12507 +34421 +36022 +66699 +11063 +14346 +16372 +65553 +77453 +66942 +14485 +36639 +30948 +42005 +60767 +13752 +27922 +50963 +48466 +62838 +27913 +22614 +9999 +18232 +35134 +27040 +46101 +16911 +71106 +57998 +11194 +12852 +51817 +28502 +17486 +16248 +22689 +57371 +30686 +37722 +80551 +40609 +29458 +58886 +57849 +18405 +17000 +77165 +77508 +65864 +48693 +7715 +51280 +24883 +9888 +67252 +65506 +40580 +12941 +5610 +80196 +58061 +77716 +38146 +35657 +70979 +22241 +5139 +18495 +20326 +29107 +77498 +51759 +79111 +69280 +53497 +19715 +64150 +59228 +61298 +28966 +30135 +41894 +12015 +51159 +52115 +29868 +47864 +60839 +45940 +48539 +63882 +25101 +13177 +80667 +12250 +29865 +76512 +45595 +26275 +49101 +608 +7768 +65444 +50336 +14102 +36188 +71701 +35962 +29703 +26313 +62830 +34102 +9164 +60386 +60819 +45842 +56397 +51798 +10680 +34730 +30913 +30713 +70333 +48115 +13385 +39373 +2473 +58854 +35614 +52039 +10770 +57631 +63528 +38965 +16725 +26557 +75078 +47322 +73890 +55573 +45010 +64667 +65046 +56938 +7546 +36040 +18494 +40227 +25880 +35991 +6377 +52911 +42167 +33395 +49020 +37296 +73289 +74074 +40667 +20671 +15001 +11532 +33302 +2621 +57559 +41768 +23023 +67063 +37286 +74982 +74693 +37790 +55017 +79932 +4224 +80675 +18649 +63097 +29008 +53976 +39991 +26243 +32398 +50206 +31974 +55380 +59956 +55102 +31690 +57906 +19203 +5320 +74846 +40755 +56452 +64135 +48174 +49124 +42038 +66490 +71180 +54299 +34012 +6387 +77029 +44224 +62314 +57711 +72915 +30274 +39870 +25280 +62025 +61921 +45477 +43271 +58474 +39931 +10753 +36906 +55854 +43335 +66366 +35697 +17119 +30292 +79200 +46027 +59537 +21155 +73829 +6728 +1344 +44009 +5127 +73346 +53984 +12197 +63798 +21219 +42926 +57133 +58024 +15642 +4368 +70075 +9672 +32544 +26397 +48060 +2483 +1876 +78168 +58830 +10303 +23970 +64424 +6653 +65397 +60925 +33209 +907 +24797 +32528 +54149 +59847 +33074 +22888 +68553 +41422 +20081 +37341 +25391 +64608 +68811 +52641 +45057 +3071 +12273 +77576 +28772 +63051 +19528 +50409 +22148 +68132 +29350 +39480 +45671 +52078 +6841 +76790 +13568 +28399 +17429 +37482 +26091 +65750 +17074 +9194 +78333 +79782 +46696 +53503 +1114 +62122 +56078 +49281 +16796 +79034 +9594 +69892 +52782 +14174 +79982 +54821 +68664 +17104 +64677 +10342 +55182 +34998 +32877 +38814 +58519 +77308 +42651 +58198 +3862 +11805 +28676 +5545 +3025 +30807 +75127 +45051 +78481 +4882 +14304 +33248 +33849 +34442 +1288 +76079 +20860 +51909 +22957 +63774 +54611 +66907 +36323 +3334 +3451 +41664 +68267 +52556 +60259 +51295 +80357 +22801 +46428 +461 +44358 +26596 +5485 +57055 +47218 +56343 +10487 +23488 +892 +74789 +34508 +3968 +48053 +69364 +80102 +21513 +24760 +72669 +3356 +20432 +58292 +57622 +55199 +24693 +1281 +50734 +59534 +8501 +20501 +75233 +17780 +73359 +23390 +67389 +59006 +22403 +70177 +14817 +11978 +51188 +79318 +44857 +719 +25810 +58070 +54361 +64152 +8792 +13290 +4902 +34562 +46747 +68766 +59786 +59735 +77735 +23344 +70021 +17312 +11790 +58831 +40987 +13276 +71576 +59751 +51169 +57683 +18972 +75450 +6787 +68669 +32955 +26674 +9602 +22696 +36148 +6329 +67085 +44150 +6916 +12095 +58360 +76560 +5881 +16102 +31002 +23002 +58121 +15591 +69805 +18655 +34647 +59536 +10776 +25296 +42497 +73441 +46487 +38885 +51062 +5798 +24730 +74760 +29090 +60763 +79412 +52576 +16108 +63264 +41940 +9811 +80681 +24416 +45814 +21238 +20735 +59309 +29907 +15536 +18754 +28950 +57351 +44164 +67669 +1445 +37927 +77254 +46978 +15450 +40169 +50269 +51889 +56069 +68177 +35616 +20516 +62731 +10379 +46606 +45511 +63501 +26806 +41672 +8778 +80500 +56791 +69016 +35785 +61625 +43548 +67095 +29091 +51440 +20697 +59120 +4334 +72321 +43391 +33607 +16104 +1238 +70844 +66221 +33570 +9757 +3657 +44727 +32554 +12344 +14758 +22423 +31573 +77348 +37398 +27457 +41748 +63783 +28801 +31212 +722 +24214 +56183 +16894 +32049 +61557 +12530 +40345 +62714 +5682 +45868 +66655 +50212 +74345 +37829 +58408 +18502 +10245 +68281 +18468 +62550 +12203 +10569 +76824 +54505 +50072 +20439 +78781 +25913 +77741 +8184 +48506 +45452 +47058 +30712 +26408 +59096 +278 +49565 +65466 +36968 +76103 +66198 +9014 +42213 +58838 +26643 +42667 +5103 +68007 +67425 +25285 +73653 +13523 +2861 +2654 +7654 +15967 +57282 +36181 +62403 +76483 +45574 +63146 +39267 +19021 +79345 +19937 +28324 +43052 +55128 +79203 +11152 +19358 +63995 +68789 +69078 +64148 +1095 +20212 +33243 +3380 +16564 +45095 +10937 +80687 +46846 +47307 +56743 +45674 +55997 +44936 +77568 +46388 +14746 +12174 +9755 +26123 +5252 +49552 +1392 +25473 +76409 +58190 +10200 +38053 +70587 +69628 +13754 +3214 +76698 +68367 +55679 +57623 +6189 +7272 +39549 +42837 +27663 +15612 +71875 +15094 +40217 +11050 +48641 +58320 +6763 +49254 +23107 +68496 +13528 +50595 +76454 +8065 +18750 +3364 +29630 +19966 +41189 +60940 +80178 +74011 +19189 +51327 +23854 +47977 +10731 +6060 +74063 +6904 +63108 +36114 +64037 +791 +8755 +73735 +36186 +10275 +24402 +15811 +39371 +41972 +47854 +37024 +45428 +14823 +63991 +62729 +57468 +44482 +10783 +17295 +1598 +9679 +55429 +36958 +48571 +68907 +37049 +47238 +63842 +53511 +79170 +454 +47071 +18614 +6747 +73293 +898 +21762 +34738 +32429 +78522 +68305 +77562 +13793 +62415 +47034 +33118 +75241 +16931 +15837 +78743 +58721 +32685 +50164 +70048 +4959 +17238 +68736 +54260 +26185 +48301 +60920 +29264 +69623 +35120 +51836 +12162 +31001 +79593 +46119 +24485 +31339 +75963 +20119 +57495 +43777 +15231 +75493 +66335 +77155 +71707 +27364 +38973 +18952 +77497 +30455 +3997 +26036 +16887 +17482 +2481 +10689 +6209 +64868 +15189 +61768 +49083 +42993 +9998 +17160 +63296 +45471 +17602 +31727 +5546 +70439 +73496 +44747 +72917 +57833 +48690 +40775 +52867 +75636 +13304 +36090 +76848 +2651 +37663 +49331 +18334 +58662 +25225 +7513 +37944 +40023 +75329 +33821 +44136 +16088 +47914 +63373 +12546 +17405 +62575 +26336 +20048 +63339 +39737 +16425 +42890 +62354 +54223 +79612 +20788 +16363 +80021 +80090 +21588 +75074 +8625 +74378 +54875 +33373 +79962 +78937 +63008 +48207 +51384 +52132 +58263 +62346 +20143 +75050 +35936 +31950 +48071 +62541 +75581 +11334 +18305 +60037 +73027 +38883 +694 +55427 +7969 +64483 +64874 +52694 +46950 +36995 +78169 +10765 +55080 +69532 +40211 +21899 +79063 +12652 +53001 +9123 +20241 +51302 +30356 +11716 +20182 +80510 +40278 +78018 +17916 +17110 +21429 +35750 +13856 +4301 +65334 +22872 +37667 +61783 +32773 +59659 +70196 +62096 +3899 +79650 +32040 +21769 +37710 +33325 +62814 +63904 +22635 +62111 +72068 +3731 +31736 +58347 +26252 +24622 +4010 +59162 +10535 +71842 +5319 +42731 +16289 +19804 +10324 +24176 +14314 +69138 +37847 +40369 +62295 +56356 +74496 +17403 +29431 +43618 +62539 +7169 +12342 +47027 +6649 +33476 +33703 +30047 +62393 +423 +5812 +75448 +30534 +62775 +25834 +35520 +44743 +27290 +26309 +25306 +19517 +29635 +2600 +48469 +13244 +9450 +52643 +25631 +56300 +56524 +76451 +33438 +67989 +29415 +46063 +73440 +24840 +25058 +14492 +69824 +24372 +11362 +3711 +40989 +40951 +64079 +61432 +67229 +19682 +16496 +63720 +38214 +43374 +27050 +23062 +49159 +57865 +32758 +40556 +76967 +30407 +56749 +667 +48678 +32406 +28291 +22607 +3408 +43812 +18075 +76871 +44634 +37569 +27780 +38038 +72886 +15367 +32175 +65712 +59305 +38580 +17395 +33346 +65116 +67038 +32759 +29806 +40318 +56374 +80659 +58157 +56804 +26842 +49028 +51642 +57163 +17253 +73422 +41342 +32954 +20791 +23958 +40141 +4595 +43442 +49308 +6711 +8864 +23545 +58564 +77630 +10144 +73235 +9973 +64258 +63378 +52523 +27150 +47120 +72329 +35544 +65862 +66842 +76830 +33384 +1084 +11530 +25909 +55265 +20655 +40035 +48039 +66703 +20679 +58602 +54870 +68428 +63510 +4955 +56662 +80216 +56622 +29891 +51489 +29323 +18805 +3975 +39934 +43361 +54793 +45944 +62604 +15962 +69374 +37753 +42141 +70664 +78288 +8017 +23425 +2718 +62587 +52262 +48095 +15945 +1900 +28526 +34480 +54823 +53428 +14385 +23406 +80746 +10268 +67866 +40454 +69494 +19873 +24648 +73061 +79163 +1165 +17532 +22342 +30527 +49865 +54294 +76334 +57768 +13533 +45986 +40110 +66934 +73482 +59295 +54453 +23813 +72231 +35793 +19115 +12274 +1454 +4146 +70288 +16465 +63655 +18140 +62832 +71553 +31558 +16144 +68003 +67218 +25994 +28283 +48386 +65449 +29950 +79997 +30711 +24222 +78458 +17317 +67911 +31408 +58047 +65351 +65120 +56147 +9078 +44927 +66764 +24890 +80586 +18370 +2881 +53058 +38180 +57810 +52235 +39220 +38906 +38980 +8872 +1599 +64793 +35192 +37998 +53216 +13659 +54443 +65782 +59606 +59170 +41884 +54526 +48578 +39218 +40431 +54292 +45950 +63087 +59493 +7473 +11547 +78371 +26948 +28043 +67484 +40386 +52660 +4239 +29361 +10270 +56385 +59468 +37657 +55348 +50118 +18003 +21268 +964 +44540 +3486 +77846 +14879 +10879 +15888 +68200 +15561 +33877 +22512 +1119 +71013 +39966 +42503 +47951 +4762 +36688 +42874 +41354 +23024 +8261 +15817 +13426 +15301 +52836 +22998 +66263 +71968 +66832 +14824 +16113 +46296 +28533 +54818 +26425 +76095 +36408 +2704 +1127 +66294 +38106 +78148 +11190 +8130 +58796 +43266 +24896 +31228 +23179 +10684 +13249 +208 +5567 +31823 +48059 +21543 +29334 +48683 +7075 +18951 +27999 +21852 +10041 +53773 +63412 +77857 +27596 +11339 +72947 +79393 +38875 +49593 +53762 +3648 +76433 +9728 +15997 +52229 +45346 +72667 +43722 +48874 +42069 +938 +8740 +77831 +38832 +13044 +34548 +65267 +55670 +209 +2244 +21350 +30142 +26272 +49203 +69598 +73925 +41733 +29570 +49280 +43540 +26941 +65185 +39382 +28967 +38627 +44491 +50426 +24215 +3332 +5808 +55591 +35743 +46290 +58957 +69114 +62785 +1213 +38252 +69401 +15268 +12055 +47335 +76069 +30575 +36439 +25950 +47237 +43663 +37326 +63949 +76883 +80503 +25876 +1191 +12386 +37940 +24829 +8152 +11787 +17646 +15530 +6549 +67129 +63333 +41799 +43514 +70612 +78956 +48024 +45849 +55647 +31121 +36309 +69680 +61814 +52288 +57974 +64901 +54553 +75712 +64487 +9122 +39228 +38351 +56554 +62679 +64933 +7647 +72160 +3125 +40183 +70053 +12524 +33725 +60239 +28871 +22507 +23017 +8165 +24430 +78655 +57149 +47999 +13119 +69064 +18298 +46591 +11120 +27872 +7806 +38314 +28208 +27163 +52479 +37284 +12995 +26077 +18648 +33587 +14423 +67796 +70145 +59321 +57920 +40749 +51225 +30009 +7976 +21081 +19298 +12268 +9277 +79502 +73115 +54733 +37328 +12081 +23582 +38318 +15709 +43245 +38256 +16193 +12845 +7116 +19093 +78082 +43605 +57485 +59506 +19748 +55795 +19788 +38232 +46373 +21482 +29106 +58366 +5637 +14544 +48773 +69586 +75768 +10922 +68903 +4751 +22542 +69520 +63592 +35333 +66597 +51741 +24348 +42220 +65448 +33105 +18594 +9372 +53940 +71681 +63065 +34297 +3542 +11011 +17729 +80663 +52263 +14630 +72199 +29148 +68447 +31361 +8585 +3420 +78042 +14871 +67531 +15234 +60762 +4888 +43085 +45771 +72892 +42685 +62093 +31892 +49864 +13135 +66682 +29483 +27969 +1467 +4744 +57121 +64019 +64202 +26319 +14222 +38912 +16072 +58364 +47649 +12068 +47729 +67023 +52325 +65819 +65183 +36500 +23469 +55276 +62437 +28095 +8987 +69072 +22719 +33777 +33457 +71321 +2674 +52864 +4735 +24424 +24593 +35600 +37136 +61179 +3056 +22051 +63082 +30124 +31652 +50274 +9591 +47811 +16377 +64508 +12761 +77422 +53942 +28059 +38090 +1128 +61434 +13642 +43357 +75619 +17792 +34927 +17834 +58783 +18188 +39761 +80322 +48362 +25680 +50989 +27683 +65888 +9630 +14689 +16056 +54465 +6227 +72862 +76642 +41297 +20673 +30758 +52225 +66257 +60464 +65603 +26104 +33611 +32664 +59034 +57470 +46952 +44005 +28723 +11123 +51890 +21019 +7525 +48037 +10092 +42269 +70071 +2701 +21965 +53597 +38592 +26934 +15149 +80778 +42382 +75943 +20948 +66449 +9843 +27012 +34041 +24298 +67310 +55855 +46752 +5207 +6277 +32612 +52035 +34138 +71094 +24422 +42112 +52692 +51966 +29838 +14073 +57854 +41559 +52537 +11451 +37012 +51577 +40341 +19984 +37536 +20790 +38521 +6529 +34780 +59174 +57383 +24784 +47610 +23600 +7968 +76204 +74830 +12970 +77974 +26316 +3543 +43764 +23116 +42169 +62476 +69137 +14581 +61802 +31709 +6874 +59524 +19065 +36420 +24105 +18878 +6353 +10947 +4982 +2632 +41740 +61967 +29701 +40577 +4090 +43384 +14230 +15556 +68476 +74868 +45369 +13675 +19714 +75902 +78108 +6486 +20684 +65735 +69387 +28367 +28499 +56663 +44362 +7879 +51797 +70456 +5565 +29182 +3139 +49866 +70420 +56328 +80166 +73297 +39275 +36743 +1180 +40756 +35322 +6202 +61534 +12106 +75760 +68275 +47565 +35661 +72343 +28188 +966 +1777 +22606 +31400 +33762 +36014 +37327 +74848 +40979 +63942 +39185 +40736 +58683 +20506 +37762 +7370 +45890 +52928 +51688 +76572 +35555 +27522 +32911 +3391 +58562 +12651 +42131 +62492 +10220 +29946 +78001 +4773 +69040 +7574 +62331 +72238 +15150 +52254 +5639 +46285 +40047 +11325 +35373 +6316 +66502 +3254 +59627 +66313 +55535 +24530 +17546 +64395 +35509 +22757 +59669 +8746 +49256 +57853 +74970 +33446 +26707 +32891 +54803 +42174 +40754 +30878 +35378 +18500 +21165 +4213 +67517 +42605 +48027 +31354 +9822 +11856 +67730 +5517 +55312 +12976 +32930 +45894 +21110 +78139 +39850 +68366 +2569 +48907 +30666 +7275 +52299 +30052 +74037 +22516 +52008 +5498 +33645 +31693 +61467 +6321 +8917 +401 +7030 +17386 +65269 +70733 +26909 +13127 +34224 +59753 +19090 +12422 +15088 +43857 +1932 +74436 +18928 +7736 +41155 +69953 +922 +79957 +60113 +8840 +33201 +43263 +16404 +67850 +72975 +45843 +66276 +78424 +25233 +5454 +46136 +50253 +54324 +35313 +35121 +5110 +18123 +26603 +63208 +27346 +8423 +34512 +32719 +25881 +53085 +49788 +8039 +22076 +27369 +66781 +68071 +59198 +19512 +46097 +60269 +72643 +66068 +57753 +69087 +48602 +2202 +4083 +1484 +62770 +1194 +79132 +56849 +66061 +14875 +73975 +33695 +68209 +6298 +34825 +42310 +16860 +9188 +5885 +20397 +35065 +27434 +26487 +70014 +2467 +2496 +55866 +67433 +49397 +52385 +77972 +5336 +28615 +8961 +27509 +18452 +25454 +42687 +71751 +23652 +46740 +30050 +59246 +73921 +16560 +19151 +77779 +56126 +4647 +56967 +68050 +34340 +75264 +40585 +25184 +42414 +55925 +32250 +79776 +74653 +7755 +4963 +22698 +51886 +25894 +3556 +1404 +69903 +29459 +62023 +72143 +80747 +63077 +19074 +62015 +50995 +79115 +31859 +33590 +53997 +16480 +2613 +28951 +21075 +50639 +69295 +78874 +19802 +79319 +77080 +1714 +17539 +11390 +56758 +42798 +47655 +39669 +45941 +79646 +16889 +23895 +10406 +62755 +48764 +59273 +48065 +43026 +30456 +44873 +44864 +26381 +5721 +32655 +8412 +67928 +52655 +1508 +53499 +69501 +75811 +47157 +74429 +52337 +18936 +39344 +29468 +11744 +16206 +58322 +3533 +78666 +30014 +58056 +38935 +10053 +68813 +1489 +39956 +31166 +24290 +37597 +49539 +30478 +47965 +71421 +15898 +30733 +19326 +39045 +73014 +79395 +50078 +52739 +56362 +12869 +77433 +21813 +3175 +50307 +5894 +70896 +42983 +60433 +74172 +2699 +41041 +25760 +72241 +26750 +70622 +73654 +34027 +38395 +27392 +59328 +73468 +6178 +46947 +68423 +59132 +66831 +66458 +70168 +38242 +39940 +73062 +57918 +24325 +4668 +30294 +36526 +24938 +21382 +61725 +53593 +66509 +32109 +2103 +42252 +6043 +65719 +34654 +65640 +78281 +40793 +39594 +7302 +56942 +45761 +80189 +51611 +13686 +43902 +26002 +74462 +29191 +62056 +46971 +39836 +64416 +4658 +31977 +18650 +11642 +12891 +70821 +3499 +79898 +60160 +71123 +78997 +53930 +9408 +42124 +35677 +53365 +25471 +61209 +58180 +6449 +41755 +23883 +4076 +9867 +6574 +76869 +52579 +23151 +36811 +66380 +23755 +18223 +33764 +1060 +58021 +80314 +79104 +75932 +47345 +12160 +23624 +33469 +13096 +17297 +46533 +35925 +9420 +22974 +35981 +7253 +11961 +17575 +14466 +34991 +35407 +21563 +28049 +61772 +64714 +74889 +20570 +28384 +77728 +47929 +31091 +19166 +37968 +65343 +71781 +21867 +16304 +3309 +37461 +70024 +52216 +60937 +14952 +71901 +63727 +13422 +72247 +12571 +80410 +31220 +10147 +56272 +26167 +33735 +23551 +16599 +54711 +56799 +74794 +42191 +792 +61522 +54523 +39941 +73122 +63748 +5975 +69736 +70017 +62563 +68848 +24080 +4841 +61283 +19276 +27794 +60202 +49077 +74646 +387 +31910 +49127 +54420 +50324 +21853 +71188 +49343 +6156 +52546 +31734 +76183 +79493 +75439 +75256 +74964 +64921 +44854 +52535 +27587 +55732 +51851 +57730 +9397 +6609 +66133 +25412 +69205 +22852 +15023 +8686 +33807 +39505 +12315 +79246 +43507 +74925 +64687 +64758 +46492 +59353 +75327 +29113 +49134 +55753 +58044 +17528 +62197 +45408 +53237 +65167 +47650 +31262 +1965 +65686 +32270 +29290 +10095 +14008 +28400 +21516 +24431 +55493 +19845 +54850 +67884 +5281 +7618 +23096 +59773 +5606 +56498 +56496 +54661 +13043 +72911 +57919 +34402 +56130 +65158 +45961 +858 +75235 +51641 +33813 +55960 +26442 +17387 +39401 +64131 +79373 +44659 +22853 +15411 +30549 +38373 +44745 +12675 +67988 +33298 +20479 +40106 +48109 +36071 +6259 +67548 +28659 +60745 +17049 +36919 +47047 +51297 +62037 +4731 +24178 +30353 +13126 +60168 +60824 +78338 +49148 +5288 +23607 +63877 +31686 +36085 +13373 +14420 +36712 +50648 +48521 +8768 +77954 +74630 +58195 +41169 +66192 +28878 +69228 +6067 +69381 +51807 +25432 +32729 +35896 +20395 +74601 +4428 +72674 +16946 +41046 +77264 +26186 +15732 +80113 +69889 +17683 +30762 +18141 +2270 +41909 +15319 +25446 +17483 +12176 +3382 +14679 +77235 +42607 +277 +43291 +17989 +76638 +14415 +70412 +23320 +41716 +2440 +18586 +29545 +14401 +75088 +6894 +75425 +22617 +63036 +77938 +78013 +14261 +28544 +3581 +47521 +72110 +8249 +68858 +46076 +33216 +44809 +53985 +35541 +27727 +23675 +67927 +54284 +38911 +37739 +77062 +65901 +67347 +65333 +53721 +55567 +36134 +70084 +24196 +6769 +28085 +27909 +26723 +61436 +37675 +3184 +47636 +67043 +39316 +24781 +59831 +26347 +78 +16130 +66362 +70199 +11311 +629 +27650 +16320 +30681 +42538 +33835 +57 +47080 +1604 +68508 +34787 +27692 +51018 +25875 +71641 +53068 +73481 +29072 +52914 +11333 +27858 +23878 +15830 +47856 +7884 +9305 +3098 +44516 +46360 +33634 +71183 +27582 +20629 +39829 +38253 +28265 +63442 +39372 +16504 +64872 +61966 +51123 +28654 +57982 +30060 +46165 +164 +11485 +15190 +50692 +2852 +61745 +76194 +38896 +60719 +55931 +72724 +3984 +61023 +68008 +40404 +7166 +24678 +14528 +55741 +79794 +40804 +836 +14920 +55694 +31587 +44023 +71406 +69314 +14259 +79338 +71743 +80 +25199 +67345 +16785 +9323 +22286 +51002 +67838 +16821 +64645 +64530 +43051 +4063 +36670 +28073 +11594 +34767 +44967 +23489 +22637 +1570 +28555 +46652 +43692 +65489 +42172 +55358 +45536 +63425 +46289 +66910 +45811 +415 +64512 +78918 +50573 +56233 +35500 +26634 +17889 +12439 +9665 +65327 +74600 +43772 +1910 +6969 +48671 +51286 +15066 +52866 +8529 +65784 +16895 +75260 +5439 +52697 +34829 +65541 +18480 +52847 +79501 +75104 +71237 +59084 +74782 +70971 +60833 +78732 +17838 +59330 +64082 +42584 +46802 +24832 +548 +37651 +16438 +26454 +62616 +78761 +77050 +40992 +68122 +77940 +74680 +19357 +34932 +8440 +39366 +73844 +75541 +19894 +13952 +7834 +37873 +25677 +46964 +67343 +42387 +27609 +77225 +25193 +1976 +15743 +51072 +75765 +74216 +77746 +25737 +10039 +62359 +390 +7247 +5335 +62152 +8999 +56878 +10958 +35945 +37498 +18217 +50383 +58159 +43974 +24954 +7710 +2477 +31610 +32301 +70400 +15340 +47229 +2774 +8586 +481 +28123 +51941 +1451 +61165 +37616 +46616 +32535 +8884 +4528 +8173 +14380 +67068 +14638 +34714 +70601 +8210 +29656 +74081 +43288 +77358 +34534 +71788 +32168 +8697 +322 +78958 +2452 +10192 +60840 +44377 +12271 +33866 +25852 +73118 +52397 +34037 +80275 +14990 +14277 +27084 +17689 +6376 +51737 +10582 +65850 +25208 +3066 +11216 +8324 +47738 +17770 +71628 +40704 +41869 +61133 +18397 +74234 +12519 +25679 +47013 +65079 +69965 +65867 +55148 +28617 +31310 +66922 +27161 +70079 +12607 +51274 +279 +75001 +58980 +59651 +27793 +14626 +35207 +65628 +20038 +67332 +34145 +43819 +62780 +4922 +76015 +10261 +56348 +69504 +79110 +33336 +32004 +11756 +31818 +56050 +44638 +17333 +6798 +78712 +42227 +10706 +32200 +9943 +43238 +19921 +69213 +77112 +30010 +54000 +65555 +66631 +8667 +50056 +28853 +71682 +29363 +9562 +11519 +47119 +9897 +46379 +68604 +73651 +2267 +691 +23628 +20717 +8705 +75447 +21764 +58454 +32293 +17334 +44555 +34486 +25726 +38532 +42065 +32536 +58795 +16358 +14604 +13029 +18711 +70217 +74642 +48004 +4973 +48737 +59200 +35524 +53863 +57250 +75300 +28064 +7575 +67748 +59821 +33444 +6478 +41245 +64055 +80081 +56747 +8139 +26882 +63597 +51591 +46781 +64397 +79984 +9108 +23922 +22959 +13288 +21456 +49571 +65319 +8931 +32740 +54382 +70189 +72319 +25900 +33561 +52937 +28254 +38286 +63482 +79008 +10111 +68825 +5090 +2410 +74484 +15619 +76384 +17761 +47282 +56092 +74390 +7937 +59469 +71108 +57565 +22096 +31669 +37982 +20020 +6405 +28260 +40007 +63019 +35067 +66484 +67334 +53733 +44467 +35469 +41633 +8956 +6306 +74865 +52356 +60855 +15157 +764 +24094 +4201 +76470 +69760 +50552 +36228 +27252 +18367 +36668 +1859 +28153 +44120 +57815 +14172 +2272 +14436 +40535 +72216 +48723 +68948 +42766 +4960 +2504 +33557 +27907 +53634 +3443 +22893 +54815 +37604 +19930 +39711 +3859 +47585 +66413 +47232 +57211 +44387 +76736 +52010 +33626 +74988 +79967 +17372 +58737 +22525 +67100 +25326 +42726 +28536 +17934 +3570 +55594 +77864 +21862 +8970 +7507 +76930 +67000 +18176 +4994 +47464 +79270 +78926 +77067 +71992 +50620 +56891 +16728 +67442 +17881 +72731 +36176 +73310 +36549 +7754 +22243 +69915 +71591 +3625 +14605 +42231 +57843 +71983 +34758 +6794 +50686 +59910 +30613 +10166 +48401 +12648 +61904 +52760 +65622 +729 +65583 +3635 +80642 +13410 +11320 +65706 +43624 +47228 +17684 +67750 +46841 +24547 +66582 +41375 +72672 +23459 +38640 +25907 +26743 +24654 +2624 +33417 +40036 +33176 +26583 +67502 +8610 +51038 +73317 +26041 +54679 +36215 +71728 +4082 +3341 +3507 +46924 +80123 +48800 +1239 +3854 +49226 +62386 +24462 +12151 +79181 +10433 +24771 +14426 +20961 +74977 +53644 +12718 +71231 +17900 +5578 +2919 +78406 +61766 +9991 +38394 +70775 +55625 +11405 +79642 +69054 +37410 +13591 +4829 +44357 +33827 +7045 +71314 +75110 +17504 +30387 +48925 +30998 +51184 +42352 +59680 +56313 +63307 +64932 +19811 +29605 +31219 +78975 +33156 +45800 +59689 +58373 +63716 +65453 +30828 +32294 +13173 +43517 +28136 +7724 +66723 +42911 +72624 +25344 +55124 +32120 +34151 +37777 +72204 +67371 +66516 +17941 +4776 +26854 +32537 +73783 +20301 +39377 +15409 +29655 +32916 +71506 +21809 +57482 +68239 +62884 +64591 +30432 +69686 +22560 +58163 +75529 +21485 +67170 +514 +75245 +66274 +68120 +41652 +25748 +64774 +40847 +32084 +77927 +79476 +54255 +34361 +75094 +13797 +38438 +286 +15504 +52128 +25796 +6123 +40511 +33923 +17133 +32714 +62627 +37287 +6718 +5826 +29841 +74989 +35929 +71434 +10055 +72736 +10520 +76404 +14269 +74009 +76507 +63634 +65285 +26536 +41058 +27219 +66745 +67271 +78411 +49936 +13511 +52765 +52892 +25201 +9921 +23856 +12298 +1309 +48960 +46108 +38742 +12828 +62284 +71267 +47826 +69380 +34704 +68930 +29179 +58228 +36220 +28943 +65588 +51865 +48320 +54899 +22445 +3713 +25651 +3673 +18590 +18867 +50011 +42312 +19622 +8246 +71820 +42098 +10525 +21270 +15294 +70509 +49177 +62697 +36068 +57082 +28476 +7891 +69023 +58646 +57523 +78107 +56846 +22535 +20450 +35117 +23514 +59573 +6128 +1883 +71625 +66882 +24689 +63812 +34557 +26045 +26997 +17753 +78615 +46932 +49461 +35510 +76469 +31832 +52727 +71266 +10364 +60564 +54986 +48297 +44288 +36121 +43416 +41923 +25525 +17436 +61128 +19580 +33776 +15487 +21858 +47100 +30537 +69615 +22609 +39459 +2394 +34606 +43255 +59059 +5012 +33770 +31242 +37719 +19850 +18782 +36513 +79530 +58953 +72654 +57709 +65573 +22875 +54779 +18148 +49026 +35218 +39799 +49799 +66048 +42376 +38711 +36155 +21987 +35620 +24939 +33938 +78209 +79852 +40016 +55663 +52711 +11379 +34639 +64071 +1992 +52507 +36 +50820 +974 +12983 +20159 +3090 +31097 +41961 +9350 +23433 +73028 +37040 +39386 +43924 +63300 +19234 +33268 +54753 +20027 +35823 +39889 +54287 +47660 +21428 +69669 +30140 +74885 +30196 +19224 +979 +56636 +581 +17859 +29560 +63899 +29271 +48310 +17117 +54389 +44653 +23257 +24894 +73110 +64876 +68542 +45583 +8463 +39115 +53247 +77157 +47301 +53192 +24138 +10151 +9375 +75002 +71103 +2221 +67544 +5123 +56449 +30081 +76979 +56858 +63316 +44531 +34019 +21820 +70046 +40273 +55003 +748 +49371 +31985 +62597 +746 +13088 +65255 +42177 +65988 +32674 +70514 +6000 +27554 +77596 +37627 +40560 +16334 +80468 +73352 +236 +3660 +5032 +11479 +19542 +42603 +18902 +711 +78131 +40 +42064 +20403 +33788 +76611 +71823 +62160 +7604 +346 +35545 +20857 +40968 +73275 +24102 +76919 +53309 +36386 +52974 +53488 +57567 +72279 +11326 +26219 +262 +19133 +22173 +66470 +12679 +52682 +78455 +66467 +35148 +23381 +77914 +73499 +73717 +22391 +31327 +72253 +51508 +76939 +46138 +77333 +67956 +36734 +59444 +12781 +53377 +56427 +68975 +49264 +22715 +22712 +58448 +26203 +31210 +8083 +4410 +13395 +74673 +70532 +30275 +20102 +41436 +44957 +53164 +10066 +54755 +8946 +27808 +11619 +42521 +34921 +61211 +24265 +6608 +36528 +12749 +49238 +37906 +14427 +17017 +24103 +27085 +54929 +9463 +56326 +19008 +15918 +4221 +22255 +37787 +61402 +26238 +79973 +46454 +9957 +48570 +9265 +50000 +43242 +43081 +19795 +46961 +23969 +43213 +75590 +56797 +22414 +68728 +21897 +4452 +56762 +68552 +13991 +51043 +57382 +30066 +46733 +17053 +57102 +70976 +10241 +17420 +25387 +71574 +13875 +30129 +50677 +63188 +13973 +47209 +52954 +75960 +45615 +16904 +46178 +5942 +4323 +24336 +64642 +2506 +7959 +12123 +21566 +23036 +2110 +2750 +69189 +27764 +18125 +41781 +4357 +57545 +62664 +3088 +28494 +75907 +14878 +68941 +57198 +5167 +19175 +14554 +10217 +36835 +131 +63866 +28222 +26171 +46067 +50264 +37373 +44028 +28884 +52111 +44230 +16256 +7138 +47010 +65952 +66822 +9927 +47707 +70588 +58936 +77699 +13211 +46022 +49369 +48679 +12555 +12407 +20571 +3157 +18789 +47417 +51528 +68202 +53729 +33527 +24393 +54098 +28955 +46230 +7947 +42320 +3155 +56559 +78883 +18732 +19581 +30716 +25761 +8461 +69132 +69347 +77301 +33638 +10 +60587 +29922 +22877 +26894 +18033 +61466 +46046 +40570 +12130 +29711 +27546 +30512 +55273 +38218 +14212 +60208 +2149 +60046 +25719 +21315 +2321 +70546 +66819 +31755 +38692 +40272 +57223 +59997 +41237 +69277 +43011 +39455 +59597 +12462 +66730 +54703 +22299 +78818 +24268 +64274 +46033 +76446 +36717 +63901 +9378 +68186 +52021 +12616 +55852 +31737 +11567 +32047 +39648 +19979 +63524 +2686 +69002 +64761 +54816 +4250 +54245 +61140 +4899 +5121 +396 +54381 +30145 +76140 +38953 +46251 +53681 +78720 +13289 +73661 +34973 +77271 +70426 +24548 +44845 +38818 +72997 +47979 +41552 +58551 +74494 +38755 +47014 +79242 +64651 +74010 +242 +46826 +2587 +68106 +34474 +27533 +41797 +42243 +2067 +21228 +776 +6626 +68709 +78422 +14869 +27139 +2725 +49706 +26989 +74688 +43705 +26961 +23527 +73752 +1419 +44293 +11136 +43930 +21661 +26065 +22819 +35043 +1860 +7836 +10881 +35000 +59227 +34230 +42427 +48192 +28237 +32241 +10977 +30496 +37655 +24421 +48728 +31970 +69232 +5513 +31278 +9712 +73746 +53600 +22832 +75151 +60853 +51842 +12686 +68895 +6177 +36638 +63163 +66216 +12650 +3947 +49328 +69475 +24294 +64394 +46341 +41191 +64588 +34560 +62149 +67210 +37445 +14160 +80594 +632 +79705 +35380 +4405 +20685 +53323 +27190 +74573 +8295 +5982 +59958 +4244 +21205 +23645 +2824 +69260 +72586 +40954 +67920 +78446 +43356 +43792 +57083 +64004 +57779 +80699 +41655 +32180 +56785 +75512 +59794 +80735 +24912 +42346 +11788 +30973 +68218 +56393 +20401 +46691 +6096 +26026 +76573 +52209 +31944 +70381 +36804 +72944 +50493 +45908 +22533 +72377 +13027 +317 +66272 +781 +19907 +54072 +6642 +76720 +43628 +57180 +4586 +37179 +38080 +46820 +19347 +28010 +24401 +39845 +40319 +41196 +30870 +27224 +80506 +24130 +39338 +17920 +75975 +11811 +77213 +32099 +60067 +75302 +18172 +65103 +39032 +188 +67682 +18845 +29303 +75626 +61559 +31379 +40534 +17172 +50347 +10550 +31997 +26253 +24343 +53066 +5293 +45267 +4006 +71423 +60205 +52317 +5980 +34364 +56772 +5080 +47146 +76805 +56976 +46112 +3080 +46535 +31437 +13654 +7348 +74450 +12412 +76186 +3925 +57324 +79708 +39531 +38979 +21166 +27987 +61871 +23360 +725 +60287 +43761 +54739 +65376 +40796 +16369 +22681 +42742 +52419 +24 +66974 +34528 +26834 +407 +58608 +24522 +42707 +63734 +28821 +79664 +20174 +35565 +21320 +7191 +6275 +59098 +72035 +55287 +14240 +74232 +10935 +34281 +28479 +42929 +52999 +128 +11934 +16562 +2432 +69541 +57778 +3117 +62603 +50459 +41938 +70959 +74213 +69160 +465 +72003 +73339 +58470 +8089 +14221 +42113 +40795 +23761 +44944 +10754 +12362 +47566 +32422 +67590 +4711 +73445 +76166 +41796 +13319 +7551 +18980 +19651 +58804 +54006 +18068 +44066 +6831 +49996 +74282 +65643 +13963 +1154 +22788 +68021 +60445 +38206 +44968 +50854 +38836 +33744 +54258 +54544 +15968 +35685 +19636 +10328 +63386 +18943 +12472 +5043 +9367 +61095 +74874 +46114 +67327 +32576 +318 +20422 +34390 +71206 +80132 +39808 +52741 +43718 +37745 +60308 +35751 +63308 +12134 +55299 +34875 +33771 +42876 +53048 +2737 +39713 +66755 +76395 +69349 +2328 +49076 +57015 +61893 +49753 +74191 +66571 +32244 +3399 +33409 +8275 +41958 +12956 +31366 +79992 +39381 +75386 +35618 +22081 +5348 +25898 +3337 +4652 +33704 +14538 +62655 +62041 +65989 +21213 +55768 +76047 +74825 +19428 +63176 +77126 +8301 +63040 +38262 +58859 +2702 +66444 +51523 +47963 +75367 +38662 +74287 +11653 +21636 +41800 +27654 +1743 +70718 +41987 +18211 +78627 +14206 +22388 +15539 +65878 +68395 +49818 +4642 +1809 +10512 +38266 +224 +23339 +32637 +73381 +74719 +17873 +79729 +64368 +17937 +37549 +4620 +22747 +28276 +45850 +16686 +56444 +14422 +51478 +19868 +50439 +63731 +78301 +10155 +54186 +77367 +5851 +32558 +62328 +27935 +28843 +21361 +21117 +47531 +8926 +202 +39295 +66260 +9198 +14370 +46256 +27721 +71127 +67609 +49709 +51487 +69786 +471 +66041 +71023 +52723 +32774 +65473 +20931 +20094 +32994 +48781 +67206 +25991 +31086 +58498 +77366 +49175 +52280 +59882 +56565 +50908 +33282 +37019 +26190 +70804 +14698 +12573 +28547 +64354 +25002 +2249 +34 +77450 +20774 +33602 +57214 +56465 +60253 +10331 +27867 +52224 +62486 +51860 +70806 +52896 +57263 +7244 +39961 +36516 +1379 +54180 +54642 +19127 +55640 +2002 +28097 +38829 +69837 +35436 +76129 +27057 +17183 +44535 +7456 +25888 +58724 +18630 +40433 +36257 +33633 +76224 +45682 +47427 +68561 +54946 +45821 +33364 +35533 +13076 +74160 +57893 +46348 +32006 +64064 +23478 +18597 +63551 +65822 +25342 +17716 +48550 +71272 +71102 +36902 +47886 +37916 +960 +46213 +63578 +45209 +19365 +40971 +32024 +76190 +77238 +42273 +53945 +32276 +48423 +15337 +59695 +46401 +11670 +26900 +25258 +75726 +30198 +53625 +79458 +2900 +23552 +62073 +40283 +8819 +48709 +29375 +41484 +40201 +56654 +21274 +25474 +42466 +71428 +5042 +25237 +33664 +26527 +9468 +52550 +39293 +77057 +22779 +8581 +50533 +69436 +8383 +17509 +2545 +46115 +47368 +57503 +11370 +21464 +29694 +78266 +74364 +50920 +56467 +80282 +22947 +62290 +16387 +54228 +65658 +38020 +47936 +59046 +41623 +77357 +13462 +54089 +49566 +38703 +29393 +14481 +55939 +480 +34107 +7962 +56304 +69458 +56229 +65284 +9616 +76963 +52472 +54497 +74521 +28259 +70583 +36506 +37949 +74349 +56119 +64514 +69935 +17384 +36996 +49106 +63601 +8660 +45596 +20513 +69825 +56264 +57213 +3336 +22717 +45657 +3448 +77156 +14645 +10638 +75408 +20746 +38187 +969 +9440 +47959 +68252 +55446 +76628 +45644 +56671 +10600 +7512 +57231 +6951 +36163 +57356 +46505 +80141 +24517 +1189 +17728 +35418 +9959 +57743 +58731 +31588 +62102 +33003 +79321 +2150 +20233 +39121 +78668 +68299 +71041 +32789 +25774 +23730 +40855 +62397 +29202 +26624 +67025 +40595 +36716 +40579 +80009 +53385 +946 +67049 +2434 +53751 +55617 +45226 +12396 +66145 +66057 +53233 +166 +75728 +62495 +31523 +36211 +5745 +75801 +66214 +71912 +5171 +3524 +62975 +14682 +60029 +20257 +18919 +46779 +5866 +29631 +48618 +10613 +33472 +33317 +22923 +21811 +80438 +66586 +45726 +59050 +8100 +79534 +77649 +34002 +27329 +39102 +49730 +3889 +60614 +67268 +38556 +28919 +74520 +48696 +72573 +35667 +41821 +21479 +57208 +14049 +5591 +558 +57845 +47621 +30547 +64198 +40953 +3034 +66938 +15538 +68060 +77595 +41558 +80063 +5355 +22126 +34660 +69441 +15932 +71227 +30117 +48093 +46474 +70671 +44581 +64617 +78086 +58503 +5044 +37226 +74618 +2313 +76268 +64643 +75586 +56118 +77782 +49491 +24449 +59039 +54940 +80359 +38626 +37641 +43287 +73982 +18035 +46625 +25665 +69510 +12159 +35376 +45936 +20882 +7861 +63726 +55683 +16472 +27539 +64529 +45721 +58156 +47563 +2525 +52803 +16448 +75000 +39266 +73283 +15063 +4630 +5472 +20391 +3959 +68125 +865 +56436 +43456 +25241 +77844 +23340 +21980 +37295 +25718 +5265 +34529 +19948 +62392 +64285 +25614 +32848 +68536 +59020 +42302 +76898 +36355 +30923 +59556 +39644 +66321 +43289 +9656 +37585 +78066 +62047 +60200 +17460 +70382 +79635 +47851 +52680 +80074 +27520 +66329 +56896 +49966 +6619 +54221 +42752 +52632 +30197 +77106 +8747 +72884 +18801 +18381 +22012 +41792 +45997 +76814 +5169 +20663 +46015 +17913 +75406 +66116 +37277 +59497 +2463 +74817 +50634 +5113 +45982 +62453 +22654 +551 +40531 +68656 +53703 +1613 +79275 +34756 +44474 +76647 +28404 +1047 +68147 +11545 +42716 +73641 +7792 +4609 +53981 +14710 +65689 +3162 +73076 +71904 +80488 +66687 +71870 +41493 +46582 +38033 +7977 +58082 +8122 +56608 +59657 +61983 +66124 +62507 +16713 +28056 +17803 +59906 +74839 +40561 +39959 +36727 +47356 +65807 +71347 +12427 +71312 +71607 +56091 +51670 +19229 +60834 +65312 +58892 +16374 +15657 +5780 +50866 +80297 +55690 +7101 +75214 +33609 +22018 +73486 +63584 +13407 +45858 +54243 +62576 +13311 +77745 +951 +34773 +504 +8601 +17400 +32445 +21533 +34858 +16059 +43989 +43193 +43848 +5577 +9054 +5544 +58874 +55014 +76296 +32698 +78190 +350 +56505 +39613 +71585 +61480 +66501 +75443 +60095 +22237 +58275 +64778 +9303 +76564 +60199 +8958 +69804 +26466 +51343 +21941 +42869 +13045 +61601 +59150 +2399 +42930 +21511 +51282 +30004 +55155 +53906 +71407 +67676 +2019 +28879 +48669 +25864 +94 +33387 +59180 +42459 +17931 +3065 +71795 +71354 +78665 +13415 +74453 +6320 +36883 +61227 +6499 +72728 +53481 +57748 +22122 +60616 +67222 +30627 +11573 +17648 +17176 +21427 +66937 +18088 +12283 +64281 +30986 +14435 +61520 +38283 +37869 +16659 +28457 +67308 +20078 +35015 +62150 +68912 +22578 +61027 +54017 +3654 +29612 +13652 +23303 +80396 +13053 +52158 +22746 +47171 +62790 +34266 +66318 +55296 +45984 +25831 +79654 +63079 +30829 +33240 +34292 +66629 +39425 +29391 +58268 +64207 +78449 +22613 +80122 +48791 +41763 +16516 +721 +6805 +5795 +16148 +42127 +11368 +29103 +31815 +22336 +49191 +12783 +2032 +33239 +2965 +67290 +30254 +38278 +58097 +78334 +42458 +35747 +25945 +7994 +11219 +24184 +2266 +32811 +61143 +43522 +14994 +54688 +21317 +45983 +19797 +77756 +49108 +31518 +70277 +16175 +46395 +44176 +11090 +41265 +24095 +70860 +13179 +57746 +78191 +8890 +72826 +15129 +50548 +150 +23801 +24562 +24083 +66281 +56809 +25137 +1349 +21947 +11283 +42 +49317 +47048 +20495 +5613 +6459 +7133 +23593 +48049 +13656 +63003 +27333 +1568 +1754 +17067 +43910 +47070 +11982 +52949 +53914 +53965 +71112 +55278 +10141 +70672 +67770 +10193 +35666 +68846 +73270 +21490 +3690 +49137 +27062 +66308 +51934 +13201 +40233 +53677 +53098 +55448 +33860 +8906 +24387 +16038 +77931 +15751 +36469 +36709 +17547 +43358 +30045 +75309 +56015 +62356 +42442 +1966 +75111 +3957 +65861 +5705 +14040 +37118 +60035 +49306 +35343 +12223 +15829 +65763 +78578 +64061 +19406 +70528 +10983 +49150 +41217 +31574 +31372 +68651 +68798 +40942 +70633 +71190 +12760 +34884 +49664 +40148 +68385 +46483 +849 +21639 +45145 +31283 +17914 +72125 +44956 +25655 +18520 +42151 +57225 +27037 +37909 +73067 +22057 +12992 +25800 +60152 +77912 +7281 +36954 +47749 +54687 +25997 +14613 +58427 +14358 +1869 +80502 +8550 +45038 +67560 +57701 +55198 +73225 +67432 +13007 +44433 +75150 +43814 +1146 +31251 +24362 +46633 +56940 +56487 +59030 +28631 +69783 +47721 +38171 +72627 +26764 +42779 +37555 +42206 +46692 +49476 +1915 +73873 +573 +69942 +71615 +73031 +12240 +48825 +39666 +49208 +32909 +30026 +5936 +75215 +18101 +50443 +44013 +70599 +73811 +68263 +51135 +19840 +3021 +48350 +54369 +29461 +9542 +16207 +51420 +73390 +58000 +13901 +8200 +50110 +28735 +24697 +49974 +52165 +3693 +75547 +8047 +33318 +70909 +41619 +27351 +27606 +55780 +26916 +64797 +38488 +16700 +28537 +60820 +14677 +24860 +60158 +13302 +28656 +16767 +36475 +77353 +22634 +52101 +35682 +26241 +50331 +14586 +22674 +45284 +7289 +54649 +9719 +70721 +17247 +72632 +46666 +958 +73694 +61577 +62931 +39512 +2174 +44667 +71773 +35515 +63963 +11229 +70534 +7423 +37834 +1048 +28590 +50040 +70600 +35310 +46624 +47679 +61046 +63953 +58256 +18715 +13219 +72784 +35444 +56746 +2850 +53870 +12205 +63863 +70440 +43132 +5437 +73870 +54304 +82 +31826 +64838 +79991 +28230 +47179 +34842 +9237 +59362 +61980 +76355 +53883 +76774 +16115 +38483 +71713 +78201 +12393 +33049 +18896 +62181 +21071 +27286 +12302 +46426 +17257 +72399 +70929 +35193 +58370 +413 +34282 +30754 +50302 +54743 +34434 +73347 +17686 +59541 +37580 +9531 +3038 +78905 +46894 +6847 +52658 +36147 +79521 +47326 +13212 +24967 +22406 +5014 +51664 +51077 +23792 +29797 +35041 +49303 +13572 +70706 +11265 +13943 +37424 +52343 +6846 +13196 +60142 +41380 +51579 +9083 +15467 +15653 +45789 +69564 +29140 +9301 +8683 +9639 +64003 +34081 +17537 +62624 +15127 +1279 +58378 +36552 +74147 +63859 +253 +66694 +42536 +66985 +692 +21518 +6767 +52611 +20719 +26824 +15142 +77134 +24492 +652 +44416 +8737 +74142 +64813 +5354 +63760 +56982 +60794 +2811 +7593 +72716 +56281 +29734 +35944 +1912 +11527 +63294 +69926 +46555 +9560 +80379 +40124 +55315 +8474 +9519 +74559 +3481 +53493 +68413 +16009 +41223 +8935 +25322 +42598 +69885 +11246 +28983 +73370 +9022 +51762 +3005 +46340 +21007 +56253 +65802 +45285 +57158 +3811 +73749 +1798 +47969 +46034 +60403 +27524 +52110 +42385 +46405 +77024 +46311 +23055 +26513 +78250 +60130 +8554 +50622 +49761 +55046 +30131 +8105 +2588 +52989 +18765 +7557 +13037 +43981 +59608 +25048 +64773 +30756 +48100 +5716 +49153 +6495 +7426 +41568 +50142 +17863 +68775 +3300 +36565 +78862 +20049 +52063 +61835 +65743 +39911 +79169 +71269 +64766 +74134 +63427 +65814 +16359 +27131 +39729 +32119 +44374 +16249 +8659 +8757 +50606 +48808 +16698 +16991 +76713 +6136 +60814 +46161 +58041 +18911 +42014 +62036 +69129 +29650 +19438 +29120 +22628 +23196 +55378 +41408 +7199 +56046 +61115 +16085 +76485 +8633 +897 +49206 +77000 +23386 +72093 +5867 +12533 +75434 +80787 +34405 +27117 +40711 +78792 +42114 +3853 +25543 +65038 +29073 +29502 +47873 +69469 +56933 +12099 +34187 +79630 +55061 +43303 +45298 +78307 +37400 +54554 +7073 +55607 +44975 +3462 +22236 +30109 +33321 +64391 +18029 +24769 +52859 +23635 +30075 +30703 +20578 +24675 +60575 +1789 +13846 +35225 +64792 +38044 +47967 +59768 +69777 +15206 +46092 +27939 +56812 +54858 +60261 +16920 +26210 +60014 +41656 +25181 +26359 +13701 +74909 +40792 +22640 +554 +27754 +75115 +44920 +41795 +18408 +42386 +61192 +14930 +23711 +50354 +30559 +498 +63723 +65438 +37432 +35741 +56296 +60024 +69346 +18595 +51354 +15899 +31898 +64459 +3437 +32666 +70704 +73182 +67979 +45487 +54967 +7949 +51884 +37475 +36541 +48999 +15673 +36748 +19891 +32392 +30204 +38375 +24189 +39435 +10663 +4625 +15909 +65274 +79643 +358 +10139 +66401 +24205 +5068 +14494 +44109 +43796 +67046 +59157 +11909 +32478 +16414 +63016 +37375 +72847 +66524 +49187 +28286 +9149 +60887 +10034 +22172 +52514 +59694 +79096 +60828 +4519 +69256 +47901 +70461 +25519 +64011 +49677 +65713 +4241 +58036 +20061 +76373 +9922 +40904 +69446 +60683 +55965 +39030 +67605 +3226 +26202 +77852 +45764 +75969 +42246 +71617 +19684 +44884 +66979 +23831 +61793 +20554 +54426 +43160 +13815 +27499 +66973 +40420 +42963 +4879 +50665 +40512 +42844 +72331 +6903 +39085 +67470 +80501 +42878 +10188 +76458 +5045 +22575 +27007 +44132 +6113 +38433 +74444 +65226 +57438 +80441 +44590 +15075 +2836 +74775 +2664 +4309 +64231 +32884 +3052 +53140 +61680 +4455 +42154 +51749 +24004 +49490 +32595 +43379 +57568 +25102 +18667 +74225 +56713 +16436 +28504 +63672 +20142 +38887 +44264 +79638 +47648 +71583 +48156 +20656 +62835 +7978 +48330 +80592 +3700 +52309 +34975 +35374 +62062 +6368 +70016 +73144 +50012 +46889 +57812 +2417 +52131 +23848 +35449 +65697 +67701 +55568 +66270 +3804 +68456 +31072 +35070 +68204 +74836 +48367 +64684 +67530 +7973 +23484 +55574 +73364 +11682 +71171 +35846 +25811 +33853 +70460 +70200 +35385 +69219 +62859 +7563 +16841 +14015 +39261 +35053 +53330 +75015 +40832 +14793 +30752 +56017 +5064 +15678 +45050 +75304 +66892 +23006 +39508 +18383 +54184 +53268 +8637 +71361 +26738 +39223 +8325 +78370 +36772 +43872 +50343 +56787 +73477 +43443 +51532 +65737 +3782 +77882 +61259 +18038 +78208 +42678 +68509 +51986 +23170 +26322 +57727 +73966 +21526 +53771 +52541 +26884 +78383 +64711 +65125 +43933 +31900 +18105 +4248 +751 +26265 +62223 +30880 +65560 +10351 +70206 +31017 +52884 +35853 +58843 +31233 +40674 +12172 +6752 +16803 +20436 +78927 +77321 +1528 +8744 +57484 +2722 +63929 +12629 +24390 +27303 +68092 +42233 +58695 +41916 +18519 +15712 +3077 +67125 +12012 +47491 +54268 +2511 +67107 +52269 +58318 +34824 +43621 +28090 +20724 +20859 +30361 +28175 +13631 +14973 +44815 +34237 +35567 +50380 +72834 +63282 +66806 +76414 +45575 +20031 +16094 +18446 +16836 +72134 +77707 +59061 +62676 +11218 +77915 +53874 +18651 +63330 +64958 +73296 +78313 +19398 +12088 +78227 +65969 +16522 +74859 +27753 +21955 +17078 +4855 +37249 +57823 +38678 +40470 +35279 +19965 +2131 +66423 +8899 +60296 +11420 +797 +10201 +54792 +59894 +10334 +50942 +367 +77405 +6899 +23188 +1052 +11640 +19941 +39547 +9773 +63181 +9950 +15894 +19709 +50248 +38758 +33266 +74362 +69852 +12973 +76649 +37832 +885 +62483 +74130 +57702 +45401 +56280 +70926 +54668 +63323 +73624 +39358 +18518 +11888 +76061 +74424 +11491 +71978 +20683 +55714 +70533 +79679 +57826 +30326 +53478 +76399 +78070 +26383 +60876 +13621 +66251 +5053 +61524 +25308 +58691 +67026 +34396 +71556 +38698 +40056 +63724 +16485 +24302 +17021 +54882 +70005 +54406 +46594 +28361 +13532 +34324 +58555 +55749 +74083 +24077 +40122 +10617 +62651 +51056 +23341 +23308 +49745 +6577 +72657 +76768 +3316 +57764 +71560 +29164 +3733 +28566 +10221 +6935 +60795 +17588 +63537 +48128 +42772 +38403 +38873 +78589 +28908 +8316 +65721 +15742 +14148 +55747 +331 +12346 +38434 +7691 +19872 +1737 +45912 +34240 +44565 +13277 +50262 +19558 +285 +49183 +37763 +47287 +29567 +11070 +32731 +11569 +5253 +36971 +79205 +7671 +23803 +29037 +36091 +16086 +49229 +57410 +77320 +8689 +64103 +49029 +60186 +69123 +52522 +43126 +51838 +64771 +20837 +68535 +51871 +13702 +80200 +49850 +33312 +14455 +75040 +74207 +65882 +22999 +29908 +77247 +47030 +5299 +77275 +34969 +57657 +17703 +31544 +36976 +28340 +17248 +71037 +44900 +38026 +41627 +19766 +44999 +4314 +38319 +30306 +66984 +74096 +49505 +15788 +33600 +73984 +21139 +31254 +27863 +1864 +18668 +18032 +38040 +46716 +60854 +59399 +43922 +1273 +52308 +12935 +17612 +4182 +67876 +35674 +44677 +56129 +40040 +70618 +72190 +62718 +62545 +66680 +48015 +28212 +42793 +13163 +37493 +25568 +43958 +74663 +9366 +67179 +80751 +44966 +59703 +13806 +65212 +57505 +11873 +41201 +3555 +66303 +70227 +29161 +27885 +51316 +54588 +29541 +24235 +26298 +10733 +60369 +78749 +6230 +50542 +76537 +80575 +77665 +26450 +16538 +19853 +61189 +71184 +17261 +38313 +57570 +45443 +62828 +25063 +37947 +27060 +64543 +35035 +65734 +37204 +75899 +16503 +13382 +70318 +13120 +79411 +35978 +50535 +60720 +48794 +29064 +41314 +35064 +24086 +20549 +77879 +73335 +56560 +19574 +12544 +3671 +77960 +46414 +41129 +67798 +36726 +57480 +42425 +38529 +43296 +67059 +7939 +66537 +20086 +51954 +50974 +33213 +52376 +10239 +72470 +54952 +76294 +41535 +60424 +59496 +79462 +49136 +11517 +36876 +7944 +67497 +77666 +3540 +50073 +6232 +53156 +21217 +51788 +6598 +40334 +70539 +64378 +69613 +63591 +77002 +48796 +50811 +48478 +52837 +25752 +44984 +66326 +50483 +18932 +21434 +59074 +27104 +63439 +5774 +539 +54142 +15146 +14242 +238 +33808 +26866 +57569 +30190 +35447 +24629 +2756 +49669 +57161 +29776 +63380 +33278 +71297 +55698 +28650 +26047 +3881 +177 +79261 +36776 +33413 +23886 +64748 +14909 +33320 +7237 +3857 +19237 +74931 +772 +47249 +38203 +34011 +2207 +80091 +4471 +74107 +60335 +73320 +35180 +31852 +77406 +20325 +7686 +19445 +50514 +26722 +1602 +23249 +40275 +12838 +12748 +73892 +31237 +48513 +5131 +60936 +39232 +50609 +79812 +30389 +48102 +30599 +41020 +61826 +30974 +45012 +52461 +79789 +64957 +72557 +72656 +39011 +62995 +24748 +64034 +50758 +21215 +14430 +46838 +41421 +66927 +43915 +20587 +58452 +2997 +8974 +80199 +26452 +41888 +16176 +23819 +8411 +35777 +70606 +29713 +38769 +26774 +45559 +42409 +77613 +79206 +30048 +28313 +69251 +42275 +62906 +13635 +77896 +221 +22296 +43987 +65940 +7748 +6849 +49524 +34771 +59264 +57420 +8309 +4588 +64031 +56751 +25080 +4105 +24113 +57912 +25998 +55068 +46347 +49033 +37690 +80348 +36266 +62588 +25159 +2605 +67972 +23053 +60743 +2144 +64271 +12989 +63602 +74895 +53518 +61367 +60352 +36962 +3963 +11227 +49141 +71643 +37935 +24267 +69981 +7709 +22438 +8216 +70616 +10267 +14158 +72078 +53543 +49147 +10584 +28271 +40926 +60252 +64376 +63965 +50666 +27723 +66289 +66022 +69862 +70925 +37802 +17041 +25055 +32158 +3583 +44215 +54204 +38782 +77881 +4196 +6526 +42033 +64308 +2373 +59110 +53775 +45323 +49443 +78065 +52688 +28072 +41177 +38726 +30550 +51750 +53929 +33988 +37867 +78050 +31697 +2173 +17527 +22163 +24926 +228 +20376 +47064 +19735 +61161 +21759 +66737 +53160 +4186 +52029 +46979 +39725 +10229 +17733 +59574 +37595 +8050 +49253 +61870 +19585 +54034 +67295 +14582 +11199 +32881 +16526 +38922 +11126 +1919 +76661 +55440 +36797 +31371 +7862 +49808 +33102 +24554 +72012 +71448 +22175 +50222 +69727 +44444 +56389 +24571 +50716 +51649 +50512 +6111 +57636 +19019 +71411 +78421 +37564 +1526 +60686 +65962 +33280 +14137 +5709 +9269 +70875 +47392 +1944 +10514 +56312 +3024 +29485 +4215 +29395 +40132 +79663 +62611 +62404 +64505 +60293 +62778 +25896 +20759 +27051 +72524 +17224 +45719 +50203 +23099 +41453 +41738 +6562 +48840 +3185 +50333 +70480 +25825 +66807 +71632 +79884 +77654 +45041 +38717 +11391 +12438 +36118 +10793 +40985 +23090 +49885 +23752 +19173 +14660 +36879 +76548 +63477 +66136 +59475 +38406 +2619 +34017 +56830 +47761 +2468 +72809 +75578 +1927 +17819 +39965 +26426 +54900 +8952 +2815 +38383 +64094 +6947 +19808 +35452 +16346 +11592 +72966 +26687 +63063 +1303 +18517 +42522 +47949 +65346 +7328 +35942 +22017 +68148 +35718 +30698 +32652 +40515 +39866 +55153 +47017 +28294 +21671 +16254 +74814 +54975 +28323 +38331 +13356 +71793 +74144 +51429 +37806 +23902 +4296 +78957 +68904 +79615 +46639 +32639 +77943 +54334 +11846 +41956 +39514 +80421 +75109 +34076 +7965 +9618 +40990 +37552 +68838 +11710 +46146 +78317 +27143 +35046 +69519 +46686 +36527 +30345 +78628 +41686 +57467 +76199 +40178 +67946 +64744 +4812 +51835 +44575 +16793 +29811 +43919 +53184 +12958 +79736 +76364 +67288 +23663 +66143 +26740 +20668 +67065 +49862 +5892 +890 +61410 +60955 +78014 +62 +23193 +52137 +47493 +23209 +28301 +33533 +13225 +57141 +175 +52750 +69770 +38764 +60785 +56856 +46627 +43638 +54062 +70448 +49223 +5931 +39494 +35690 +17807 +14866 +61220 +36281 +17696 +79173 +47271 +57669 +54958 +63618 +45343 +59184 +56062 +66465 +70850 +70271 +38641 +6047 +56958 +59562 +5558 +2163 +6397 +43590 +29581 +45758 +33675 +54972 +23172 +41199 +76148 +18638 +19037 +43158 +6834 +66400 +17691 +73703 +34542 +40423 +73026 +57362 +26939 +2972 +58497 +4019 +62614 +30108 +30290 +15062 +26260 +4466 +69674 +33330 +62044 +42054 +69764 +46173 +29259 +75920 +49221 +25380 +1946 +71526 +7867 +46212 +37876 +56523 +80108 +43338 +26820 +33886 +47480 +47472 +3445 +79651 +45865 +49938 +32527 +34928 +55212 +38121 +65368 +43350 +29138 +52826 +54504 +80267 +39969 +2976 +55540 +30708 +5151 +55038 +51586 +43221 +41067 +25878 +1670 +13352 +32317 +30622 +71075 +49895 +9761 +67514 +72036 +32569 +32497 +67358 +61429 +8287 +73756 +23473 +13869 +40208 +3532 +19419 +67974 +79086 +26481 +72971 +21033 +78856 +51033 +76229 +31103 +60569 +39975 +42591 +30148 +41477 +57460 +18476 +64574 +8293 +21827 +49388 +45090 +41676 +78703 +51572 +69971 +18060 +77486 +35930 +9082 +36733 +54193 +10454 +24420 +53838 +69352 +4972 +12659 +8791 +58924 +63103 +79101 +59143 +14662 +52669 +60960 +56828 +55152 +19291 +40593 +14183 +26946 +76740 +74627 +26120 +20888 +52107 +6342 +48149 +36620 +8954 +72521 +704 +56992 +70768 +41054 +68421 +9883 +73385 +45358 +23098 +22976 +43113 +80173 +54301 +42119 +77506 +26365 +20079 +28026 +35051 +31891 +52815 +53697 +32609 +25428 +35732 +12527 +77752 +15106 +16843 +8641 +7211 +36581 +23716 +1085 +57478 +18916 +43503 +70303 +77424 +25382 +27874 +47715 +52666 +25555 +31418 +27347 +74933 +79112 +628 +18482 +42907 +23374 +26030 +12480 +56854 +11156 +16247 +46786 +23258 +28740 +23154 +13842 +73659 +40372 +45648 +33010 +79310 +26780 +38198 +37243 +11363 +38261 +52647 +33026 +51582 +48769 +17262 +49271 +39877 +32670 +58395 +63718 +52567 +42003 +74768 +27866 +31598 +508 +47511 +21220 +33197 +66772 +9680 +45907 +79151 +50725 +63277 +44990 +59523 +18165 +48726 +25358 +2864 +52960 +43737 +28561 +29608 +25004 +69172 +17865 +28240 +38061 +71920 +68973 +17961 +21090 +16662 +11147 +9261 +4791 +33139 +74711 +64160 +68489 +65668 +34649 +28068 +26000 +73945 +14135 +55812 +24617 +56909 +39300 +9196 +43195 +30533 +1762 +19591 +62360 +69490 +49976 +70285 +24240 +76040 +5675 +42271 +69477 +9845 +32908 +5307 +54535 +53021 +9094 +13538 +52440 +34290 +46565 +64934 +68242 +24513 +35664 +80671 +50470 +54576 +15441 +35383 +9394 +47785 +77091 +46332 +64176 +20320 +44477 +67377 +73926 +4783 +71702 +61101 +53989 +34475 +40296 +5788 +41099 +64544 +43344 +76052 +80539 +41613 +34915 +65049 +32376 +36649 +43799 +6390 +21709 +60739 +39181 +64575 +9586 +3293 +60305 +74739 +17316 +76231 +62097 +16341 +75359 +18559 +30812 +36200 +15412 +65217 +28907 +55083 +80025 +40619 +73375 +70735 +76563 +6868 +19135 +43001 +59758 +33784 +14844 +16848 +43156 +19695 +12821 +12270 +20317 +11524 +59205 +7196 +20794 +4863 +76624 +75324 +12056 +47216 +23048 +41200 +71335 +24727 +54751 +79091 +27332 +51895 +64181 +33685 +65338 +48129 +53832 +62327 +59725 +64867 +51593 +75624 +33681 +17144 +51267 +1341 +38409 +6895 +69861 +14281 +43349 +30949 +613 +25717 +40231 +24258 +41948 +12833 +5460 +73901 +50594 +4663 +72464 +73149 +12810 +50220 +74110 +75885 +35155 +77004 +16710 +22514 +54868 +2203 +50168 +50489 +15306 +50441 +48388 +33507 +72540 +49797 +30811 +21402 +7346 +25974 +11230 +37726 +6592 +46585 +8140 +24231 +7404 +15718 +16270 +72445 +20057 +23729 +78408 +47522 +3952 +23726 +51216 +16010 +9779 +62538 +37219 +45299 +72006 +61489 +62902 +58631 +44861 +14533 +41851 +11536 +12962 +30312 +77945 +26140 +55555 +4741 +67657 +72389 +34262 +23905 +670 +72841 +78525 +43896 +32299 +47562 +14715 +50835 +45790 +38746 +30958 +45417 +66914 +53151 +48798 +53730 +39000 +71562 +51841 +38035 +75294 +20196 +35731 +60393 +68982 +47244 +27893 +30970 +71219 +62210 +68857 +61456 +18168 +79040 +72740 +67110 +29347 +60182 +26056 +12171 +52745 +49822 +67777 +67188 +73387 +54338 +45799 +79071 +2508 +22424 +42996 +8964 +67753 +73775 +71868 +5353 +15907 +33688 +60145 +10231 +5011 +60097 +11266 +76455 +40872 +27765 +64834 +23467 +62245 +53539 +49823 +5361 +9267 +61876 +7290 +2687 +28645 +44222 +17390 +5040 +8846 +33453 +73503 +27803 +39939 +48372 +23617 +28012 +23219 +58165 +71603 +70585 +53080 +23139 +52820 +76131 +3288 +36509 +32519 +20003 +34047 +19475 +44032 +45037 +62222 +33738 +74413 +1654 +4514 +52260 +33286 +71665 +65870 +26407 +26573 +77660 +4231 +38427 +24713 +46436 +45178 +80580 +4110 +63868 +24958 +47068 +16958 +21656 +2554 +47344 +57741 +28236 +35851 +21234 +50270 +73427 +13626 +21116 +69400 +37991 +54125 +19222 +26105 +53065 +38838 +75032 +59973 +30892 +51088 +75212 +31261 +73860 +14646 +53791 +45386 +8490 +1848 +38119 +22638 +52382 +60710 +53205 +64452 +18231 +62148 +25841 +27506 +46197 +26198 +51390 +63541 +19249 +46560 +35022 +40564 +39860 +60235 +14421 +40186 +66170 +59323 +53663 +10065 +39415 +73510 +65839 +23946 +2770 +73386 +32070 +9984 +35776 +61910 +24016 +72016 +31292 +61886 +23756 +21912 +10258 +47617 +11596 +66523 +56238 +16196 +39443 +30702 +20058 +13616 +23687 +70920 +56361 +18435 +39921 +25854 +28314 +18855 +6755 +67783 +32593 +29862 +49718 +38569 +60531 +77221 +66946 +53917 +77810 +20156 +66457 +35551 +11984 +949 +69659 +37120 +78027 +9540 +4749 +61177 +63460 +80012 +64290 +47863 +18555 +75776 +48908 +6408 +62389 +19324 +15570 +55298 +47606 +51264 +23810 +69269 +57183 +17991 +47966 +71919 +60178 +22844 +23146 +14781 +75814 +32484 +34851 +7554 +72941 +57673 +37863 +30994 +76468 +43383 +50970 +57322 +74845 +53232 +45387 +32732 +5569 +8972 +30057 +1593 +62186 +2599 +3133 +57236 +60348 +24289 +21312 +17109 +13738 +76562 +66917 +59016 +1081 +34893 +19454 +14728 +56033 +11373 +9794 +11400 +65539 +61446 +22925 +37193 +1559 +30272 +55051 +70238 +1666 +20841 +63706 +55972 +1874 +50064 +55974 +69197 +25924 +63778 +14130 +3428 +75821 +69663 +7941 +76058 +18948 +71957 +17249 +38511 +58934 +25315 +30265 +78733 +2524 +19426 +51633 +64403 +77377 +34326 +20158 +74379 +74052 +35710 +52530 +139 +66353 +80780 +12038 +62320 +7057 +3754 +69936 +37705 +34950 +25385 +68409 +12702 +50722 +65646 +29165 +65299 +58644 +15972 +8555 +5409 +65121 +25527 +61947 +42514 +18484 +42182 +68027 +17304 +56952 +57355 +10522 +16983 +42205 +27926 +75023 +23599 +28420 +19745 +44423 +50610 +39286 +13374 +54762 +69212 +76207 +22168 +20725 +12221 +307 +58377 +31553 +7827 +39463 +906 +76293 +1159 +13176 +78412 +7777 +55466 +6760 +25275 +69775 +19006 +44914 +39958 +45305 +56355 +58678 +43631 +60320 +62000 +37127 +50119 +77962 +71204 +36402 +48271 +63517 +67639 +73954 +63419 +66649 +8727 +61573 +9252 +9769 +52120 +22395 +69660 +6665 +11322 +30942 +68259 +1444 +48280 +76656 +50628 +12736 +3557 +75198 +65048 +26535 +44577 +41907 +65202 +70080 +77722 +37033 +44015 +44296 +25015 +76473 +37196 +41978 +73395 +56827 +15341 +68929 +44711 +2283 +77870 +69831 +57614 +7235 +11033 +38354 +65544 +68812 +10813 +34278 +54057 +70210 +25378 +48952 +35720 +30723 +33455 +69427 +37340 +46897 +18376 +6867 +30729 +79479 +72417 +69201 +45901 +17376 +80386 +54769 +46758 +45841 +38855 +13786 +61155 +67520 +826 +76946 +68562 +10504 +40682 +4008 +44151 +34602 +40377 +33160 +4087 +8304 +60526 +23225 +28376 +32800 +56606 +19029 +7750 +30035 +6110 +34360 +9643 +80163 +34031 +28624 +74305 +3216 +40477 +16214 +41736 +46477 +63941 +33815 +29774 +37969 +84 +26073 +26751 +46321 +59617 +37259 +11079 +58656 +44800 +75017 +42819 +71548 +28917 +6314 +67144 +50707 +49359 +53284 +70910 +44712 +73850 +53694 +18974 +52944 +36576 +4953 +77877 +65726 +66851 +70626 +61667 +33063 +24755 +48576 +28279 +64000 +11260 +40532 +71191 +19395 +72754 +51324 +19003 +18368 +5027 +33045 +39722 +56066 +11590 +45223 +51678 +47113 +51911 +13330 +58488 +50524 +34697 +1558 +73628 +40015 +34830 +56568 +13709 +649 +38293 +63998 +80570 +3086 +12277 +34039 +33861 +27142 +43557 +13966 +70036 +2661 +74121 +60263 +76322 +11729 +77703 +70886 +76343 +13862 +36607 +37708 +22471 +60935 +27147 +33711 +48535 +67815 +33212 +12960 +69225 +9789 +77370 +31421 +63291 +9681 +66651 +61267 +56244 +46876 +15823 +19493 +28387 +78277 +26242 +64366 +6966 +60013 +30968 +48458 +42257 +8394 +80707 +75149 +43372 +17698 +46714 +59283 +31738 +38561 +14787 +20761 +75558 +47274 +22495 +72042 +8673 +8670 +44550 +54013 +38461 +80319 +17489 +61543 +66903 +45236 +70499 +57104 +29404 +75937 +17765 +16395 +44698 +64461 +11161 +76764 +57621 +4508 +57511 +14057 +25352 +57277 +36329 +8526 +73649 +39107 +20021 +29076 +80494 +60631 +65179 +60727 +30415 +70770 +77971 +45013 +64693 +1455 +7293 +9537 +31534 +10635 +15950 +64164 +17404 +68532 +34751 +648 +22573 +22246 +69386 +37293 +25801 +44489 +54549 +2502 +25261 +79675 +71383 +27735 +80289 +42290 +55844 +13478 +17902 +74818 +62348 +9704 +60830 +50841 +42668 +64784 +28144 +30671 +22085 +13694 +31362 +28751 +60541 +58792 +42210 +72782 +41626 +80627 +33407 +12013 +14800 +80537 +49917 +52626 +45363 +16373 +47945 +2620 +53282 +53651 +43795 +48166 +30810 +42336 +39475 +2562 +42499 +60741 +28768 +27394 +1723 +24639 +37270 +20045 +40214 +46586 +27770 +24308 +26811 +41878 +60924 +79584 +14890 +79238 +22591 +55314 +15373 +10497 +1233 +56160 +21647 +13545 +66254 +70729 +35146 +33377 +71787 +24656 +61040 +39100 +38910 +33127 +7865 +57836 +65427 +43973 +73848 +10341 +27781 +46143 +70224 +41893 +20872 +8789 +71043 +29217 +1513 +66454 +68643 +5696 +65589 +73839 +67541 +3333 +24471 +55420 +17890 +64719 +25529 +31684 +27153 +21259 +66638 +15850 +52965 +49869 +63334 +9555 +14214 +66962 +54819 +21933 +33946 +3831 +12563 +54360 +19250 +38706 +19330 +46833 +22854 +16758 +23007 +62950 +59394 +314 +64289 +30034 +60868 +48763 +78293 +52979 +69472 +65283 +52034 +7231 +52140 +79602 +38681 +16257 +48824 +5661 +32368 +30288 +9001 +72405 +17345 +60451 +15736 +20417 +31796 +48685 +59489 +3199 +64384 +13118 +15317 +25490 +33888 +39488 +40497 +15725 +79942 +8855 +5178 +76726 +4845 +75989 +24641 +13813 +23446 +71555 +4573 +68277 +21637 +2518 +20640 +57030 +61715 +63843 +76185 +13565 +6980 +381 +32185 +27249 +21935 +30506 +53446 +71359 +67372 +34611 +27253 +12871 +13585 +49473 +5230 +62287 +25566 +15867 +38808 +41776 +3767 +18846 +25138 +14907 +13273 +63392 +50737 +64485 +5743 +3248 +49637 +72400 +19702 +12247 +19671 +26184 +14189 +10930 +39937 +57871 +26458 +19750 +74445 +64218 +21917 +64054 +31519 +6634 +70650 +58803 +32665 +72751 +60568 +38919 +27611 +71185 +40519 +40274 +54029 +3595 +29189 +1975 +26288 +77239 +2617 +32807 +22128 +35931 +78302 +12209 +15281 +72375 +34681 +20615 +34363 +20473 +939 +20459 +64243 +59138 +45954 +61902 +65534 +1323 +34113 +56451 +74409 +63031 +10076 +69583 +49488 +11993 +1140 +79954 +8243 +22281 +27411 +2361 +76216 +9697 +16554 +65793 +8858 +63381 +24319 +74798 +24048 +35271 +22116 +72648 +6845 +75246 +50578 +5248 +18463 +3369 +50016 +23546 +62617 +22257 +1423 +73021 +33766 +13250 +9898 +79027 +53979 +17381 +5984 +25712 +68727 +65073 +7601 +45356 +62762 +68426 +47499 +1300 +11616 +60775 +47795 +53135 +9842 +78010 +49727 +49121 +9945 +21582 +77816 +2888 +70550 +46444 +20200 +44514 +25861 +5106 +44417 +19691 +47323 +24133 +65571 +18098 +29998 +32228 +56140 +61937 +80416 +77883 +41580 +80339 +10740 +7923 +30521 +44278 +44808 +10299 +76114 +28428 +36485 +8553 +68993 +75339 +35055 +27714 +4627 +43695 +64126 +25176 +28692 +18981 +7737 +58433 +72930 +20435 +20698 +29880 +33552 +9623 +32603 +50132 +18931 +17977 +24764 +71007 +25629 +31303 +62066 +64866 +36255 +28345 +61523 +26445 +51017 +4107 +61909 +67088 +5205 +20129 +58175 +54447 +26981 +63862 +16967 +6195 +37289 +16712 +59578 +56972 +80756 +35838 +8405 +30243 +43031 +27278 +78426 +4233 +46504 +5278 +80631 +28005 +66552 +63095 +30571 +46315 +29993 +65582 +70042 +28836 +23072 +73772 +62484 +49908 +49495 +11643 +74519 +50982 +40589 +71409 +1993 +69978 +60880 +42729 +80332 +61611 +3537 +29257 +40574 +28785 +29846 +5529 +36175 +9257 +18522 +27668 +72356 +16607 +64686 +25468 +19647 +59866 +79890 +19568 +38031 +17758 +42937 +5862 +53745 +46118 +12352 +22647 +24712 +33650 +40266 +34912 +59266 +64835 +74769 +76719 +38812 +34491 +11586 +17355 +23001 +41532 +14882 +76136 +44273 +20956 +7784 +62113 +42009 +58115 +4178 +32492 +21349 +10964 +1112 +21287 +30351 +54073 +7499 +38391 +7349 +60860 +35219 +39068 +9211 +28585 +69879 +2708 +42060 +50027 +68590 +15330 +63838 +4814 +810 +55509 +1782 +38101 +22981 +19335 +46796 +34943 +43321 +34590 +61602 +22363 +13240 +75812 +65139 +59764 +74578 +77304 +48603 +39638 +68559 +51713 +59575 +68192 +80674 +43573 +51730 +40232 +48756 +40520 +48532 +35831 +12317 +39210 +2796 +49876 +9875 +51246 +43953 +12405 +57267 +53124 +31994 +27591 +17963 +48186 +45514 +14247 +67780 +44560 +76490 +14084 +58483 +53334 +29261 +60930 +24815 +20270 +34112 +52179 +51293 +16935 +15804 +39521 +45337 +8986 +34785 +6491 +24816 +45282 +63515 +5284 +33263 +30379 +32533 +10126 +60761 +7596 +44108 +25905 +57624 +41945 +55875 +627 +68979 +28135 +64473 +35344 +45537 +31420 +17373 +39502 +47830 +8348 +68947 +16174 +44488 +46724 +47408 +31940 +6040 +18511 +79196 +10190 +58672 +71516 +61525 +23804 +43790 +13949 +7606 +43864 +62329 +57999 +39834 +21484 +25862 +34942 +53517 +8263 +46909 +61884 +9284 +75652 +80077 +58278 +77214 +80257 +3886 +46310 +17743 +57363 +59701 +36074 +53410 +14773 +2991 +42053 +78410 +53662 +48432 +18623 +69584 +31585 +59912 +60015 +41840 +34634 +55234 +50861 +1357 +52442 +28221 +24339 +26663 +28484 +63009 +27707 +34427 +5669 +73721 +23330 +44614 +37316 +69792 +28406 +38311 +47432 +73728 +78369 +26346 +5057 +78528 +46271 +70942 +78953 +64085 +6049 +5840 +21189 +52041 +6188 +26555 +64272 +47262 +75536 +34520 +21674 +11425 +8214 +54567 +63587 +44448 +12207 +55185 +21509 +4411 +59201 +51496 +34885 +65471 +64335 +68783 +33066 +62305 +17591 +14409 +47239 +22285 +8148 +5175 +31343 +56518 +34435 +56180 +37611 +26028 +30110 +34809 +62901 +11563 +61496 +519 +10234 +58824 +30626 +63582 +15889 +51398 +51948 +22964 +54169 +63426 +26823 +51265 +70830 +47620 +49119 +56466 +67950 +51594 +42068 +39069 +15387 +48666 +19957 +52208 +3791 +33242 +53099 +38328 +21976 +6967 +41496 +11214 +70242 +68937 +79486 +33956 +72032 +21531 +7578 +52729 +14685 +74433 +35058 +66795 +9654 +33521 +30150 +74548 +79465 +76984 +19218 +26639 +6234 +11838 +42180 +22594 +70565 +21621 +77762 +38243 +47962 +25806 +61792 +70186 +27061 +40179 +66679 +23497 +64363 +29721 +17428 +61060 +77637 +67580 +47442 +5394 +80782 +39238 +31096 +50172 +70865 +1217 +80325 +58073 +22693 +46359 +18159 +34203 +16738 +67142 +49246 +48333 +71293 +64525 +11457 +25084 +44276 +11572 +34306 +32030 +10614 +6586 +67554 +16155 +31804 +58111 +8997 +33692 +31799 +39781 +5179 +26560 +13057 +23725 +60713 +41908 +25218 +21902 +38000 +16005 +26563 +62579 +50460 +49361 +73066 +33269 +6216 +47991 +73000 +72556 +17573 +46250 +23318 +20974 +28618 +7885 +60079 +26956 +26779 +53326 +37213 +11943 +39026 +62876 +37304 +29180 +64658 +59022 +15167 +61028 +30835 +7857 +36182 +10183 +29308 +41863 +52786 +41293 +55637 +61249 +32735 +77356 +58711 +5625 +29027 +76253 +48135 +52465 +33188 +41500 +9709 +54163 +48253 +55202 +14470 +78075 +47036 +34061 +24682 +16826 +14444 +46199 +74069 +13934 +20310 +57806 +77373 +18145 +40524 +67312 +33123 +74639 +30308 +12089 +14252 +13418 +31865 +36447 +34729 +20394 +680 +51951 +20434 +51230 +37417 +26570 +2645 +24415 +59021 +41531 +54648 +30188 +58982 +287 +64047 +11972 +28329 +80135 +62466 +36476 +49099 +57780 +33984 +72536 +34968 +6602 +63874 +72551 +22601 +2322 +3206 +16940 +60620 +6328 +25422 +65990 +56502 +66752 +69996 +24248 +51371 +62248 +11719 +69461 +77997 +33706 +59548 +4746 +68175 +65140 +69270 +4584 +68212 +45062 +76007 +25785 +80029 +32053 +6897 +28898 +30396 +68652 +20827 +29020 +79485 +12465 +21707 +52076 +22777 +12639 +52571 +37583 +53954 +18167 +11702 +52728 +12372 +32483 +73935 +52778 +55093 +14709 +19944 +2487 +54412 +18343 +509 +7714 +9319 +39949 +61053 +38830 +74267 +34589 +8318 +17305 +43371 +18689 +16459 +68954 +41116 +61238 +3719 +69300 +71866 +24740 +44529 +75568 +40787 +16658 +30693 +28310 +47219 +1197 +51519 +72933 +8378 +68919 +71753 +16272 +44204 +18704 +7280 +21875 +80736 +41012 +8159 +19125 +32553 +27806 +51202 +54860 +47196 +49878 +47005 +22538 +71826 +42715 +54772 +41385 +61488 +62413 +41239 +71348 +60280 +33869 +45042 +58790 +49973 +64020 +8597 +52532 +14306 +4961 +46480 +68361 +13284 +16552 +5502 +79142 +14107 +54342 +64577 +32788 +79566 +50762 +64175 +12669 +44737 +42224 +45210 +47485 +66993 +19734 +26082 +15493 +55146 +4352 +7329 +72957 +33523 +80390 +42560 +29377 +61515 +34552 +65623 +66719 +51671 +9309 +34073 +76861 +62242 +6839 +16523 +71145 +39835 +65813 +65593 +31184 +7640 +51739 +24479 +52494 +80583 +33961 +32551 +6348 +71318 +5071 +49816 +48915 +29573 +1781 +77252 +51240 +22498 +63213 +22245 +49313 +30561 +67163 +34381 +65545 +28709 +71973 +17775 +41059 +13891 +27182 +36314 +73464 +72745 +50795 +34926 +15172 +50381 +37086 +61323 +55828 +46440 +47059 +5402 +50704 +58145 +9208 +33439 +60362 +64220 +67766 +78606 +2741 +47608 +47276 +48982 +18464 +77401 +74754 +34820 +11417 +43554 +2891 +30639 +69985 +71809 +63410 +56097 +10371 +15908 +36767 +32052 +7644 +80643 +77578 +20861 +34207 +59356 +27297 +43418 +30120 +70286 +67574 +54993 +19637 +45063 +71685 +71186 +72876 +34394 +13639 +6301 +80439 +60714 +69869 +43858 +29092 +16784 +54861 +56287 +17363 +17535 +49164 +39081 +49247 +27686 +40095 +60982 +20000 +46204 +62810 +5199 +42470 +32385 +61354 +80574 +1267 +60508 +78934 +127 +65858 +14609 +16742 +70468 +73421 +49683 +34925 +77152 +27318 +57062 +9545 +990 +55984 +64433 +52868 +24874 +46955 +11381 +38725 +4409 +39324 +55165 +21476 +75171 +64215 +66288 +10784 +18202 +24953 +19464 +74336 +65548 +78552 +17354 +23939 +75056 +47878 +39887 +73393 +79220 +19644 +16637 +60515 +13339 +34788 +31239 +39437 +63531 +16657 +35505 +40250 +72461 +78345 +79401 +49700 +6278 +63402 +75785 +18117 +26416 +58042 +18880 +79315 +31710 +4633 +77467 +19936 +49741 +43343 +12446 +76654 +74201 +5598 +30178 +69292 +42311 +28970 +9278 +80121 +16250 +54594 +20996 +59532 +12623 +14226 +44954 +29231 +39134 +7059 +41374 +37232 +54764 +79505 +66180 +53119 +67569 +35154 +160 +34025 +54246 +80092 +57911 +18073 +19480 +17952 +75248 +8015 +62177 +35513 +31936 +71158 +72485 +9470 +52540 +3838 +15781 +38131 +23598 +24242 +76225 +9175 +32517 +25803 +35702 +48213 +77182 +28411 +66812 +69335 +76592 +35757 +35779 +45985 +61859 +62947 +70349 +22574 +26138 +59920 +7518 +20638 +34055 +55245 +52416 +80288 +37707 +26119 +54879 +35346 +69102 +4454 +32757 +79579 +27342 +78428 +6812 +36742 +58999 +65100 +4038 +71334 +59978 +31133 +38854 +48185 +1361 +56365 +15089 +52775 +75131 +32772 +64306 +44093 +33987 +27702 +37228 +17286 +45658 +76461 +17274 +10641 +47492 +70252 +23057 +13831 +44085 +71234 +28980 +59561 +48198 +10343 +41470 +12601 +17239 +77461 +56111 +16638 +9749 +31045 +26206 +65723 +42249 +57182 +38349 +4288 +16699 +40846 +31745 +63869 +21729 +35595 +36247 +31581 +31410 +26558 +24494 +70175 +46609 +75714 +69278 +40486 +10562 +6888 +60193 +80469 +22279 +21255 +74511 +44228 +14334 +51283 +30233 +27200 +75261 +3256 +6710 +34093 +52307 +57696 +52145 +17369 +45467 +51711 +41246 +14127 +39374 +63237 +55237 +56394 +76072 +12917 +3292 +6469 +31854 +29394 +6290 +47317 +29818 +75596 +45027 +42120 +22703 +19230 +361 +19216 +2529 +30614 +69476 +12420 +58901 +52872 +74490 +62869 +23109 +36048 +49002 +23633 +28963 +68230 +49970 +18473 +60254 +31717 +33381 +56314 +55816 +56228 +53074 +41608 +54248 +46518 +34982 +53421 +33073 +52976 +22662 +55648 +45751 +48168 +33809 +27269 +9330 +64375 +9459 +47329 +18989 +69652 +21755 +22063 +75437 +14502 +33648 +10259 +29121 +72395 +14461 +40456 +9876 +78022 +40126 +13777 +60103 +67209 +68314 +45788 +48103 +15155 +54578 +3026 +46935 +30834 +38124 +76980 +45489 +76747 +53128 +80215 +71309 +47701 +45745 +20065 +41896 +52835 +58455 +35881 +28485 +11538 +60664 +36044 +28903 +1865 +51471 +16951 +78825 +80491 +10235 +9954 +78617 +77326 +21573 +75357 +26790 +68201 +56319 +50096 +3934 +33831 +68638 +51801 +18929 +40503 +79613 +18065 +40528 +34135 +43975 +24073 +22165 +59707 +38147 +41625 +20787 +21002 +842 +39177 +27879 +43581 +66223 +76321 +9174 +38310 +65939 +72620 +68107 +28888 +27502 +5067 +68015 +1840 +43297 +35872 +62653 +75346 +46963 +61091 +47771 +51374 +33370 +26165 +10052 +37537 +3330 +23197 +19824 +26396 +8991 +50279 +73635 +22505 +51101 +25448 +17886 +46344 +26428 +18908 +38622 +65001 +29842 +58406 +39839 +25745 +30695 +44905 +61913 +27120 +22668 +4777 +26021 +31474 +76621 +25075 +36645 +78576 +29616 +71276 +2089 +6452 +32218 +33846 +30103 +35745 +72767 +69148 +3113 +75917 +52822 +75334 +73348 +2633 +16952 +41219 +1767 +40070 +65594 +72138 +10214 +38778 +10997 +19562 +24055 +1462 +32371 +14732 +5367 +56088 +69986 +100 +80546 +18591 +53460 +72312 +46547 +1523 +22109 +19586 +29632 +46248 +77423 +30985 +9886 +15193 +34854 +58496 +34175 +5888 +42659 +54040 +54601 +9909 +31507 +190 +11224 +76060 +71360 +59540 +16268 +2903 +76016 +52640 +20781 +14447 +56596 +55890 +75059 +70696 +29033 +49128 +78960 +67801 +20737 +45967 +69397 +4719 +7741 +62993 +69563 +50562 +75599 +17166 +56905 +70130 +69351 +36740 +77382 +69419 +53162 +22636 +59848 +56351 +43204 +57011 +72807 +15879 +20734 +35734 +13995 +38224 +57305 +44064 +66829 +40592 +73699 +14857 +2985 +46133 +23921 +31726 +35844 +31688 +48854 +35375 +40076 +66367 +75285 +19700 +41677 +5757 +5089 +52067 +66461 +43189 +55923 +20896 +10321 +37656 +48973 +6917 +57887 +34155 +40392 +71800 +37733 +17123 +6995 +18427 +6382 +8222 +69018 +12735 +60539 +8541 +40724 +61167 +65664 +49340 +3470 +6646 +64888 +55467 +51063 +79199 +61366 +61423 +44024 +13526 +3161 +60047 +34917 +63603 +72427 +17213 +46267 +6417 +21981 +34779 +57451 +54090 +19810 +39973 +42801 +49614 +43352 +38895 +78663 +1043 +5773 +9966 +23941 +47312 +28686 +11299 +11142 +62649 +29417 +10029 +22685 +37502 +4714 +71962 +31353 +14260 +39490 +63971 +39007 +60326 +70520 +59875 +1406 +54278 +46006 +41321 +2160 +48904 +32378 +22272 +5753 +80447 +6237 +55247 +8600 +8233 +9981 +66269 +50659 +72466 +39031 +9331 +78041 +14462 +53826 +32387 +65222 +77901 +33775 +66212 +64102 +24830 +2049 +16986 +16586 +33030 +54806 +63023 +13107 +36441 +37241 +38924 +18781 +71045 +56825 +758 +13916 +41373 +70719 +42004 +5842 +67736 +14177 +41746 +49081 +77917 +19131 +62629 +64374 +59426 +12000 +51921 +34056 +54541 +17867 +49398 +40170 +79219 +69512 +64343 +69408 +52743 +13543 +55900 +12811 +76553 +38032 +75890 +36633 +3816 +76502 +69106 +51770 +46179 +62240 +1710 +20935 +32580 +5939 +45571 +23224 +41466 +47994 +39513 +13221 +27898 +21680 +29561 +33991 +70272 +73562 +4095 +55680 +46815 +12136 +21657 +39665 +28848 +34791 +56939 +64715 +12604 +25764 +45034 +43211 +47000 +61757 +49438 +63020 +29288 +17541 +70181 +47927 +36139 +54684 +70782 +57425 +71047 +73923 +29314 +18525 +51037 +49118 +49198 +49332 +59019 +13929 +80190 +47539 +49953 +53873 +10129 +15819 +44862 +7585 +10226 +3040 +13450 +18299 +26758 +51432 +62237 +57057 +58826 +76687 +22973 +21325 +37747 +41117 +79264 +44729 +9731 +54617 +19154 +18017 +6135 +53236 +80069 +7598 +37477 +36949 +72038 +64319 +51353 +41913 +28394 +76405 +7829 +44001 +69062 +5493 +31593 +1496 +72747 +24379 +79013 +16941 +4282 +40888 +21370 +14848 +72865 +30084 +32188 +56178 +22287 +68119 +37880 +19752 +47414 +28939 +18769 +36459 +41111 +60138 +42454 +58663 +22418 +67342 +51094 +45668 +55809 +63366 +61214 +75980 +8599 +76493 +38976 +17868 +44585 +21160 +8005 +74324 +37457 +63203 +67857 +27263 +25274 +11903 +21778 +66664 +49423 +57069 +66030 +13213 +41363 +76891 +79559 +60533 +70663 +49009 +38467 +62395 +56417 +31192 +20572 +19934 +15058 +60957 +76285 +10047 +18774 +7214 +2603 +66981 +4073 +20416 +63371 +26163 +43859 +10925 +8455 +30192 +56194 +47136 +70431 +22564 +38457 +74126 +75287 +28640 +62079 +26799 +37973 +4732 +53389 +54481 +50540 +44583 +35029 +39129 +31227 +67747 +74594 +20972 +12057 +77186 +25372 +30990 +8392 +49218 +33528 +44130 +75268 +80120 +74386 +21520 +4093 +28084 +48391 +51493 +27789 +35489 +41443 +51507 +72932 +2909 +38231 +31827 +59547 +50301 +50344 +31975 +24728 +31115 +78046 +68393 +49239 +48645 +20386 +24642 +10546 +69707 +8794 +5429 +49764 +27031 +79023 +4303 +23382 +40629 +24610 +77263 +74524 +67919 +3980 +50570 +41538 +9990 +20806 +40782 +22009 +43033 +23086 +20917 +28794 +17401 +12625 +32547 +39548 +56353 +52359 +7648 +60783 +22546 +62308 +66544 +30691 +37574 +31151 +58249 +51775 +51530 +60851 +34052 +47260 +43950 +35116 +18529 +28580 +31092 +55511 +14048 +7802 +6853 +29221 +15239 +51887 +53332 +27580 +46402 +31607 +74322 +54933 +59698 +53422 +34770 +75803 +41992 +20770 +62105 +54254 +38130 +46842 +39855 +16215 +30911 +25050 +56668 +44841 +20054 +2141 +54730 +69398 +32363 +210 +33192 +78870 +29814 +52538 +27919 +38070 +50375 +79780 +62914 +15618 +2142 +35463 +48886 +32248 +50843 +58861 +28482 +13912 +54570 +28927 +16623 +39062 +47131 +30840 +56563 +49424 +47525 +20140 +12003 +79347 +73163 +2164 +59111 +60779 +43471 +50621 +33109 +12249 +61448 +18567 +70240 +9970 +37759 +11044 +8676 +6631 +23373 +15489 +7230 +36083 +33740 +32662 +67508 +14805 +61105 +54522 +21064 +11531 +42165 +79404 +27130 +14889 +41085 +68763 +2841 +50065 +64614 +58729 +67664 +17606 +1022 +17015 +71510 +22133 +48453 +41001 +56675 +74338 +14811 +45077 +17724 +50089 +44071 +3433 +51510 +21851 +18120 +74187 +65509 +55929 +28507 +52964 +57194 +64706 +1733 +15414 +67620 +49243 +16067 +18496 +35855 +66677 +393 +64440 +76049 +28014 +10377 +52293 +18838 +69551 +18497 +54702 +15963 +22934 +7236 +14531 +78941 +76247 +72062 +33926 +15122 +33033 +72209 +64639 +38002 +3765 +24074 +17272 +68790 +32755 +36807 +3339 +66539 +77989 +63989 +12837 +52155 +57145 +21310 +7677 +21278 +12501 +71277 +28920 +6594 +66365 +45445 +2989 +52947 +11603 +48828 +34845 +22233 +48544 +64033 +14493 +53815 +7305 +40720 +79277 +56645 +62234 +53411 +70229 +74957 +5135 +73143 +59971 +18447 +70846 +65248 +21178 +10264 +27043 +58174 +38424 +8726 +6687 +31678 +80388 +27884 +15236 +64948 +1933 +10105 +44300 +2856 +49107 +74219 +61180 +18570 +22820 +7210 +73030 +47324 +30464 +33508 +75491 +1163 +36975 +69308 +58289 +24446 +74669 +14473 +30869 +2572 +64989 +34097 +25032 +58270 +50401 +19746 +1312 +17840 +54664 +15076 +46102 +23325 +32617 +48398 +59995 +9551 +32574 +39501 +31050 +36763 +69995 +25649 +30374 +72008 +55000 +74411 +45085 +74599 +72792 +71176 +42373 +69773 +63844 +74495 +34561 +39288 +5839 +13782 +25250 +49702 +24532 +19782 +20622 +71595 +32983 +46372 +61237 +26071 +59100 +29293 +20952 +75101 +41476 +79070 +75186 +58955 +44777 +66493 +33004 +2211 +59052 +63180 +73034 +75521 +26037 +1614 +25560 +64718 +48047 +10623 +80684 +48816 +57737 +35327 +61976 +13358 +53902 +27713 +75144 +40093 +71433 +1555 +36536 +34294 +29475 +3926 +25681 +38289 +66710 +39879 +10796 +12303 +80401 +31605 +48057 +61927 +21855 +16040 +4622 +10603 +10074 +53011 +32970 +29566 +7238 +41004 +73077 +63552 +32336 +6268 +4398 +13698 +10272 +68101 +5824 +79432 +68830 +79085 +63549 +18314 +71774 +4969 +31924 +1206 +60980 +67412 +53348 +45114 +46938 +16126 +18312 +62640 +30462 +76196 +52315 +37735 +38237 +25736 +75460 +22462 +35965 +12299 +58352 +21738 +55445 +4374 +10312 +29389 +33913 +37808 +2503 +15651 +66283 +46381 +67637 +80595 +41735 +59259 +756 +1648 +76845 +44834 +44976 +544 +32122 +13357 +69970 +9236 +47884 +373 +4276 +12723 +18143 +70980 +1073 +40331 +47159 +68771 +46404 +21876 +12253 +38447 +10317 +28422 +35254 +9729 +46081 +48991 +52326 +48694 +77300 +4131 +68872 +5800 +80146 +31344 +4527 +2706 +56773 +19543 +73055 +62060 +68665 +68746 +74195 +51859 +42201 +10951 +9853 +25820 +36502 +74720 +28098 +50100 +6879 +47471 +63054 +13634 +56425 +27028 +502 +57790 +55330 +49795 +38312 +46509 +66497 +35205 +2066 +32454 +43197 +3153 +3619 +21974 +37353 +33741 +7990 +5217 +32268 +3331 +39569 +4138 +63209 +29968 +35760 +33801 +21367 +63443 +80222 +77447 +50591 +12200 +56718 +51233 +35918 +72235 +8098 +43071 +29205 +27576 +46257 +41690 +69850 +56656 +13755 +8691 +71717 +63342 +26403 +73498 +38192 +51526 +23315 +13888 +69712 +12242 +23081 +78662 +12178 +12829 +24691 +22759 +71459 +5245 +60648 +78891 +33873 +15410 +59712 +39195 +38112 +40684 +73369 +217 +24087 +47682 +55515 +52910 +62273 +57418 +17464 +24795 +71855 +37144 +37087 +67113 +1836 +55293 +74486 +1401 +78516 +16139 +50626 +3454 +3863 +21448 +33582 +46399 +19244 +72696 +19482 +15141 +31497 +38736 +30848 +43322 +78074 +77487 +35826 +54372 +16208 +49112 +80579 +76782 +76184 +36042 +53501 +32009 +52663 +25870 +73198 +14131 +10555 +9850 +1797 +79640 +23806 +38069 +14521 +1955 +54348 +49553 +35307 +49130 +37168 +72670 +62171 +38884 +28122 +34210 +32857 +17340 +79718 +72313 +260 +57846 +17650 +15188 +76937 +79927 +8934 +8611 +39116 +8933 +10493 +2184 +61035 +54954 +80198 +23812 +14028 +32581 +26708 +43985 +79307 +51657 +74960 +16823 +10924 +14149 +40370 +57411 +59814 +27433 +59375 +34089 +14597 +53088 +78388 +73050 +70828 +31048 +34674 +5688 +60077 +2437 +20739 +45497 +6842 +8365 +78686 +12288 +74899 +10339 +5449 +385 +29230 +15202 +80030 +506 +73573 +28789 +29060 +35275 +54449 +19057 +12489 +39755 +64454 +875 +60536 +15603 +1205 +38879 +39955 +6906 +30450 +59658 +60008 +27908 +77903 +43741 +47494 +79921 +9764 +69318 +25509 +62776 +1037 +43048 +45875 +23456 +1222 +1216 +6085 +10962 +24376 +77686 +49500 +80522 +48340 +45911 +11204 +17383 +73063 +11028 +16021 +35597 +15841 +67692 +30222 +57424 +42875 +7868 +72136 +27782 +27788 +29488 +52966 +80049 +32984 +37171 +25164 +63080 +10274 +22545 +25209 +59859 +42952 +74691 +22073 +22477 +53398 +3914 +8492 +39739 +24288 +5704 +15335 +72320 +70556 +34365 +74812 +32495 +60126 +19654 +64373 +22449 +56002 +34531 +24970 +43299 +66688 +14390 +51226 +77936 +55414 +76159 +36190 +23110 +48117 +78051 +22016 +21009 +63112 +71514 +63985 +62443 +41684 +24151 +4025 +47950 +56870 +38660 +12626 +59488 +21368 +35539 +25538 +39681 +46442 +63125 +43842 +51879 +66701 +26516 +28062 +44723 +58460 +52364 +53964 +45904 +67348 +72924 +78730 +38939 +62310 +64323 +75815 +50085 +1936 +78503 +2363 +77312 +8573 +29382 +16450 +57686 +34895 +71324 +60717 +79917 +5778 +4664 +26044 +55240 +53431 +72429 +12191 +76906 +74307 +14684 +13715 +45774 +7005 +69521 +12248 +2117 +75095 +22053 +65028 +51774 +75583 +9785 +23913 +32288 +25435 +74605 +62865 +23241 +37440 +36990 +33039 +72945 +1240 +22095 +33693 +73306 +97 +64234 +48736 +4059 +31668 +12705 +38602 +8980 +49051 +59737 +34444 +60028 +37174 +15557 +46913 +80692 +78320 +61978 +15668 +5890 +37488 +22386 +66800 +76421 +19333 +14886 +57106 +64644 +73764 +76894 +58965 +73750 +25798 +78363 +1471 +70617 +74654 +72335 +7384 +38819 +27684 +61989 +61762 +12295 +3181 +31866 +56538 +42158 +22556 +80424 +62010 +29747 +74617 +51808 +69741 +37648 +74655 +67487 +61206 +21795 +65976 +70560 +37380 +37283 +40949 +30420 +18748 +25288 +68695 +38671 +17344 +25091 +79751 +70497 +62799 +37231 +67773 +49283 +48002 +21931 +35706 +18606 +55343 +24802 +46667 +62593 +67444 +20705 +15691 +65421 +61579 +534 +75412 +80385 +36937 +13924 +34132 +80672 +36137 +52970 +26279 +10189 +38449 +5858 +30194 +60736 +56526 +25476 +68653 +55987 +79377 +78963 +14225 +4158 +11303 +41995 +3896 +46408 +61531 +60444 +43866 +72029 +34600 +26423 +78049 +23189 +24311 +61551 +71089 +23359 +10863 +47395 +4255 +71463 +32234 +67204 +74662 +59746 +643 +42029 +58743 +67998 +52653 +24710 +71667 +35050 +41383 +46229 +4088 +12796 +63224 +20341 +30945 +2727 +1562 +18967 +39015 +30040 +30258 +44972 +62735 +80557 +33342 +20969 +44650 +79370 +47373 +21609 +750 +74155 +12512 +80775 +59667 +65679 +77476 +66361 +15749 +6456 +43963 +72009 +3467 +49511 +66305 +14190 +34949 +40243 +76162 +38857 +33708 +75841 +80238 +65165 +78442 +72937 +12227 +70370 +41310 +42223 +47377 +7927 +73130 +51185 +63268 +43941 +18244 +8277 +69416 +17256 +11539 +65389 +74975 +19086 +37801 +40174 +53610 +48069 +74959 +34458 +11037 +851 +40828 +76761 +61020 +24101 +75861 +7938 +73739 +72512 +30313 +25727 +30924 +12442 +11722 +72819 +28148 +44175 +71330 +14639 +42913 +19061 +60381 +14904 +50005 +55693 +71404 +24542 +29238 +4026 +71172 +46929 +46539 +64992 +16805 +72102 +67764 +12564 +25787 +74944 +9240 +76431 +76570 +1615 +39924 +14922 +28663 +30589 +58094 +50729 +80712 +72366 +57218 +10553 +13070 +30184 +63656 +11287 +10778 +67836 +37104 +67968 +76333 +50120 +15416 +31270 +51992 +71756 +24732 +70596 +36615 +71342 +72853 +41320 +70986 +75413 +16822 +43036 +77480 +57868 +36393 +25470 +59477 +17126 +73368 +2992 +76566 +59635 +37879 +18949 +37676 +68291 +56275 +30310 +47243 +15590 +53161 +49775 +7187 +61628 +33883 +69107 +2690 +25612 +39562 +75055 +1722 +5568 +30823 +32196 +8114 +42665 +20751 +75571 +43022 +46037 +75615 +34615 +55228 +9215 +62951 +41504 +74143 +44646 +66355 +4055 +26579 +72523 +30269 +41078 +14089 +45395 +66012 +62030 +55369 +46336 +67326 +68517 +79961 +70284 +31945 +72936 +15215 +78418 +3455 +10178 +28390 +26486 +27399 +40142 +70477 +45963 +71230 +72983 +21120 +77577 +55339 +45031 +374 +40626 +63007 +49523 +23483 +27549 +55750 +27071 +3435 +52481 +26964 +7887 +29574 +35272 +73442 +48433 +60140 +75755 +36292 +894 +70352 +69991 +41031 +12506 +23739 +50414 +19031 +68999 +60173 +78295 +78560 +78034 +52557 +45460 +4319 +11684 +48133 +66267 +56688 +70772 +77626 +39489 +16876 +60646 +8968 +25128 +20521 +74359 +23102 +77527 +54110 +48170 +58693 +52398 +49442 +740 +1054 +70149 +76301 +3194 +56045 +40001 +45103 +12952 +43230 +4675 +37621 +76575 +72919 +14888 +26350 +10737 +62103 +23562 +77839 +23773 +48236 +53401 +28389 +51575 +8703 +26982 +34625 +35350 +73714 +40654 +50490 +8721 +4136 +29638 +65478 +37520 +11570 +50431 +75646 +2546 +27687 +59486 +26080 +71646 +1070 +2408 +39971 +73828 +34720 +39258 +2339 +37519 +33106 +57504 +58074 +6913 +31430 +39175 +4864 +52441 +73686 +7084 +78799 +66173 +27896 +18129 +17804 +34956 +11310 +24061 +40389 +23713 +79787 +74173 +79611 +45700 +18895 +44617 +16350 +28972 +20173 +61801 +58449 +51677 +73723 +23178 +52438 +72492 +28189 +8924 +30918 +51220 +61572 +32408 +43200 +50435 +20415 +58592 +40317 +23743 +52769 +65701 +15511 +44041 +52389 +30522 +27077 +11987 +71086 +43516 +56684 +78711 +80083 +27402 +72976 +61940 +37921 +68118 +6612 +41487 +80584 +55463 +65951 +20662 +62599 +38016 +21441 +55744 +53287 +28450 +73843 +43282 +67164 +23266 +71492 +54010 +61742 +5891 +43237 +59081 +21670 +39140 +3615 +42202 +32573 +79915 +14270 +79424 +27408 +79459 +45375 +8684 +43332 +20569 +73383 +43258 +18516 +32227 +1937 +45384 +62143 +41918 +38517 +29133 +11908 +30490 +39008 +20074 +41946 +18106 +23821 +27594 +37113 +20558 +36051 +74967 +50892 +40567 +69897 +57018 +26530 +30859 +66322 +76370 +36462 +56176 +3335 +13457 +46266 +78759 +53095 +59166 +21583 +35178 +65675 +7576 +30952 +69118 +58142 +56934 +57740 +70394 +19381 +66071 +64565 +9266 +11997 +77826 +75686 +65715 +47669 +26471 +54970 +14703 +77541 +50124 +26164 +63497 +604 +40657 +2763 +26463 +15366 +28540 +10025 +31304 +59849 +12161 +54589 +72720 +11602 +80562 +69517 +11093 +31589 +37191 +78290 +27579 +41197 +33699 +25416 +25750 +1507 +28682 +21345 +50688 +30819 +31100 +66707 +5138 +3525 +73432 +57452 +65729 +70739 +44002 +2544 +17800 +55472 +35079 +15989 +46588 +5865 +37334 +3140 +34898 +14264 +48760 +31489 +20795 +25439 +69206 +70099 +52327 +63332 +64383 +62137 +19164 +65025 +27068 +60594 +20672 +80617 +10832 +45331 +67970 +29255 +8929 +79860 +36300 +50360 +38472 +67843 +78647 +9796 +44805 +29976 +65076 +29507 +55033 +71218 +47431 +11055 +4154 +8021 +21742 +57757 +6475 +30018 +78545 +79662 +42733 +705 +48430 +38234 +76090 +33322 +7217 +54590 +17926 +62857 +73898 +23520 +57706 +16244 +23158 +28083 +53777 +75205 +27676 +19770 +15865 +30720 +67515 +5054 +61307 +79808 +37798 +37843 +21515 +59926 +61149 +453 +17156 +24167 +40129 +20826 +52027 +13955 +48971 +76243 +10903 +70597 +55563 +9893 +3544 +42585 +44189 +58478 +44534 +72658 +78057 +13443 +44447 +74786 +42047 +41777 +46295 +35775 +44004 +7373 +75356 +55405 +47689 +20246 +48494 +38207 +8536 +79436 +59422 +50143 +67458 +17408 +41170 +6356 +32098 +8276 +37885 +78879 +71652 +3762 +20083 +32263 +9223 +63187 +48134 +32167 +2762 +42946 +37062 +31498 +21446 +2999 +50800 +15444 +51639 +73572 +1168 +73673 +52231 +35810 +24042 +55907 +11472 +93 +20546 +9427 +64592 +38816 +71799 +52827 +30947 +21668 +70634 +60149 +47823 +118 +65762 +30241 +35217 +76360 +37210 +6463 +8835 +58076 +45260 +33251 +77120 +47659 +80251 +20144 +34026 +26013 +33992 +32726 +578 +14069 +8590 +26010 +35168 +63167 +46489 +59941 +48623 +48708 +58353 +9473 +50900 +24995 +58010 +33654 +74557 +14068 +57130 +45902 +53831 +2443 +65170 +4787 +10316 +56042 +26207 +37983 +49918 +32163 +68082 +64105 +46484 +5700 +64594 +48146 +28124 +63703 +54780 +17526 +23233 +57044 +36568 +18760 +69345 +77821 +31609 +40210 +15328 +23816 +76608 +51764 +24011 +44327 +47763 +32121 +2897 +61889 +8943 +22027 +43104 +12631 +20304 +20614 +56445 +9524 +25294 +64309 +47605 +42283 +53766 +45335 +3814 +53390 +67443 +46305 +42422 +57067 +19985 +28660 +56513 +41329 +54380 +6132 +28261 +60417 +20939 +12170 +72577 +35679 +44985 +39803 +13260 +6723 +68352 +49846 +7756 +12698 +60016 +22214 +51638 +12158 +37986 +9777 +62834 +78549 +25113 +17296 +7266 +27275 +19124 +5708 +46731 +1831 +71862 +57600 +74430 +29313 +14818 +72126 +7140 +56001 +74540 +26067 +43045 +57896 +38721 +29524 +48931 +4046 +66826 +20245 +13965 +28842 +54973 +78897 +52278 +44521 +52462 +31816 +76685 +12186 +59964 +20552 +62601 +73221 +14465 +10386 +69195 +80559 +11160 +23364 +42261 +23876 +24549 +5072 +55460 +22726 +59530 +30321 +24158 +20842 +73899 +36590 +23009 +57301 +24328 +1989 +60992 +27438 +1110 +5130 +55371 +32364 +39392 +55218 +16008 +52488 +64944 +58229 +44867 +57181 +70396 +36722 +10953 +54051 +20190 +15120 +44880 +79114 +15683 +10980 +59089 +35112 +56837 +55981 +13895 +25079 +13364 +68500 +53122 +22304 +64776 +16545 +17798 +1391 +28157 +47072 +15985 +36523 +56295 +22939 +32894 +22835 +74016 +16846 +76303 +70323 +58128 +35713 +22767 +14906 +52908 +526 +76710 +55376 +53869 +75621 +65514 +70279 +62824 +50828 +41654 +51203 +61821 +61685 +64805 +32027 +16719 +2126 +51173 +1596 +7555 +45523 +30051 +27011 +59887 +27623 +4174 +29464 +18944 +45447 +11935 +15667 +16381 +51428 +23073 +59067 +28453 +4414 +39756 +68331 +41509 +29543 +63250 +38951 +80779 +6015 +80165 +43938 +9042 +4306 +11470 +48345 +67527 +6039 +52036 +29270 +57295 +18221 +25730 +11928 +37816 +4007 +59508 +21430 +35287 +15212 +38805 +74084 +51682 +13989 +6038 +79745 +18709 +47889 +29731 +62802 +80184 +2945 +22217 +47321 +6260 +50486 +75866 +4827 +72818 +63780 +12603 +63394 +36916 +25821 +26362 +69998 +47399 +23955 +41933 +64556 +41236 +49506 +37085 +39428 +19723 +49767 +48014 +70306 +56139 +49796 +39785 +67757 +76682 +66196 +70403 +5378 +35468 +36026 +46926 +57283 +23935 +57401 +66089 +2152 +26817 +35224 +9572 +75157 +74664 +62552 +10639 +65126 +31890 +79020 +21623 +14881 +19638 +70072 +52311 +6415 +7224 +37570 +66536 +75860 +34030 +41290 +54384 +37587 +22493 +42594 +23237 +35294 +27531 +71343 +55173 +14431 +79050 +75707 +66556 +19932 +74917 +73224 +34627 +25301 +55183 +1709 +1102 +40430 +46603 +32205 +7482 +2176 +29864 +41848 +12418 +36842 +54448 +53572 +58372 +48720 +19642 +5490 +12392 +54763 +65731 +21137 +21295 +63749 +29799 +28383 +4354 +41008 +14836 +63118 +26994 +15861 +32073 +71196 +22106 +2280 +21848 +5126 +28569 +15036 +34328 +71189 +27693 +41036 +36550 +67031 +41721 +50254 +38797 +39163 +16061 +43333 +78815 +23838 +31509 +11465 +21355 +61412 +28120 +57447 +68859 +67355 +19892 +53091 +21224 +26449 +61872 +7612 +7336 +4669 +37848 +8367 +48725 +10184 +11108 +15882 +7409 +45793 +48470 +39423 +63919 +65964 +68311 +1 +24929 +19399 +18270 +33535 +12859 +55557 +61159 +72821 +39571 +32542 +41722 +69222 +70953 +19843 +30844 +34485 +8902 +22420 +58665 +5491 +16694 +38221 +20641 +30544 +14476 +7104 +15280 +18306 +51578 +74887 +9383 +40493 +12011 +37814 +73800 +14799 +22049 +3246 +30475 +37030 +26302 +73794 +50421 +71197 +15883 +60197 +78463 +36789 +76316 +12210 +77428 +32456 +65378 +80191 +20312 +54347 +39468 +49654 +62467 +57831 +16755 +7603 +4811 +65556 +66968 +73064 +79737 +74641 +37650 +29199 +73577 +49793 +37484 +37635 +66575 +39022 +20877 +4099 +53798 +49573 +68353 +9741 +5420 +15291 +16006 +24131 +25643 +64021 +35198 +7919 +74990 +23579 +44678 +64720 +19835 +43596 +54066 +2812 +70960 +43180 +74204 +36479 +11358 +64339 +11947 +57897 +14224 +69607 +62573 +37177 +52149 +15353 +21995 +18930 +73373 +32381 +79883 +72756 +19463 +31913 +18526 +64635 +66381 +32690 +46899 +57752 +76481 +43685 +2638 +13516 +73466 +32718 +67550 +7082 +71325 +50983 +75516 +11015 +49486 +14192 +71954 +46456 +51993 +68232 +63485 +13307 +18420 +73797 +43068 +61278 +21435 +52685 +26220 +50165 +74942 +2319 +1830 +24969 +10290 +18258 +68347 +17688 +15334 +63789 +68487 +75508 +34200 +25186 +51676 +52505 +20674 +70374 +24091 +6235 +67351 +6339 +65769 +38604 +60756 +71778 +54471 +35717 +61608 +43882 +75121 +52283 +7856 +7454 +1849 +50417 +48994 +14569 +46775 +48167 +54088 +959 +21054 +14737 +67885 +17972 +51142 +25624 +20380 +10876 +43434 +75572 +49452 +44631 +12228 +26647 +22975 +52486 +24531 +58718 +53443 +9754 +1040 +38963 +77601 +71948 +66572 +39927 +43040 +36921 +30159 +19030 +55604 +40896 +62687 +70243 +2826 +63682 +60245 +63786 +75676 +15914 +25097 +28685 +68918 +68149 +34072 +70798 +18369 +48599 +38092 +65023 +77432 +62430 +3640 +55773 +38589 +15261 +10678 +27664 +16243 +50430 +31514 +34815 +22503 +53768 +76179 +39908 +70762 +12552 +68464 +31801 +31332 +55373 +39838 +45096 +30867 +77621 +30029 +42619 +66155 +1935 +56996 +61148 +3928 +21322 +36151 +46881 +45823 +32153 +12188 +69311 +58705 +68492 +30557 +12096 +19717 +17165 +65464 +522 +60697 +76304 +21487 +74229 +41741 +24455 +36131 +55644 +75375 +21212 +75481 +11957 +35157 +48624 +33855 +48172 +4089 +26453 +49395 +3764 +39901 +80453 +33434 +41999 +3224 +20440 +6 +31606 +29097 +51583 +53214 +26541 +61078 +9053 +70041 +6618 +45503 +78367 +5177 +48533 +74150 +76357 +77008 +11876 +62247 +77154 +21532 +45423 +4538 +47743 +43227 +43564 +60969 +54624 +51121 +33380 +61240 +41745 +78206 +7695 +14134 +51331 +56625 +17781 +70142 +15209 +12190 +50363 +43820 +33285 +78699 +43353 +61097 +13367 +19918 +57442 +70681 +75919 +18229 +27905 +71982 +67338 +54477 +644 +4909 +70703 +39773 +68944 +26179 +43348 +22066 +33420 +70834 +55930 +67303 +21988 +1304 +79316 +3434 +7731 +66042 +72702 +56138 +71921 +73126 +28033 +51366 +7510 +65162 +61944 +13412 +13104 +52129 +44332 +52103 +74194 +57344 +65142 +29961 +58917 +27873 +19144 +37785 +24584 +42358 +46888 +77747 +68290 +19683 +76786 +7223 +4060 +23694 +56810 +46478 +7331 +78817 +5031 +72364 +69499 +76388 +79599 +70488 +21932 +32289 +50500 +33941 +62236 +78828 +61578 +59504 +4277 +53638 +52969 +11687 +15703 +16146 +15153 +12333 +80079 +31712 +28557 +26849 +50137 +24525 +48588 +18039 +14037 +67261 +46818 +34716 +11430 +70205 +10462 +13299 +15148 +36185 +27470 +63611 +20889 +34471 +36461 +14953 +35047 +23148 +65876 +3795 +29218 +54810 +36894 +59999 +45521 +65510 +14691 +45314 +29912 +28029 +78767 +11675 +72299 +45102 +21836 +42520 +16643 +17992 +74273 +18996 +35114 +9587 +60905 +63006 +47374 +64013 +73478 +24143 +79213 +30128 +19634 +76887 +25033 +50256 +71917 +67240 +60588 +69094 +75813 +5976 +4478 +40839 +8369 +9885 +28410 +18198 +42750 +13182 +45160 +16351 +59761 +40734 +44620 +40637 +6464 +24741 +28688 +45004 +73069 +2640 +4559 +39891 +40384 +21091 +77823 +72232 +63823 +21200 +22589 +69202 +813 +26688 +56767 +50881 +36820 +37919 +70747 +23398 +29129 +12946 +25444 +75903 +75955 +76329 +6252 +26878 +57147 +22911 +26836 +14987 +49731 +40892 +27545 +39878 +36982 +8219 +18222 +77034 +50682 +20940 +43694 +30779 +75663 +29283 +12531 +78484 +33354 +19753 +53927 +42943 +62229 +26461 +11459 +52807 +25014 +15315 +32511 +26284 +49964 +50036 +68956 +52839 +21683 +77807 +27604 +16422 +76595 +29847 +65619 +79585 +65426 +11195 +25662 +73698 +31476 +12105 +46887 +27976 +63372 +2641 +36604 +76122 +78126 +41994 +27566 +76076 +67685 +35828 +10719 +35280 +16211 +69170 +67629 +37238 +46238 +29470 +29366 +55363 +16172 +1313 +13065 +40050 +16412 +11407 +21386 +1660 +68704 +38104 +19220 +73239 +12646 +16054 +33289 +42506 +29378 +16939 +25943 +26441 +75126 +71673 +9453 +46222 +65092 +70759 +754 +54582 +12840 +32467 +60163 +2954 +53656 +10585 +23956 +13748 +59870 +20321 +15307 +29953 +6117 +37693 +56850 +29867 +13293 +76625 +48762 +49802 +45353 +24190 +34974 +10686 +44457 +26371 +45422 +7112 +39851 +62418 +16203 +34594 +17291 +17500 +37254 +31886 +70465 +66609 +72903 +54341 +30224 +37778 +8576 +40207 +37746 +51285 +121 +74588 +18755 +75884 +26546 +40543 +48415 +34426 +23395 +26459 +9781 +65144 +34713 +10841 +22541 +21844 +8286 +64139 +10999 +53307 +77701 +9685 +36978 +44694 +77099 +9385 +69051 +5658 +37244 +37449 +11114 +32015 +57966 +78537 +36865 +37852 +21998 +60692 +51336 +37878 +78444 +63265 +21905 +27271 +8812 +6696 +68284 +74342 +69254 +54478 +5202 +4842 +56292 +5665 +65529 +58606 +61474 +13629 +36539 +41659 +2781 +37314 +77853 +32980 +78140 +40928 +39692 +45373 +24986 +19841 +7053 +42377 +36973 +51149 +77958 +809 +60967 +6729 +2489 +5376 +25751 +17114 +38856 +61004 +11165 +49545 +12351 +41692 +55582 +52689 +57206 +25579 +841 +80065 +34173 +46278 +51388 +16234 +74159 +41378 +75637 +66245 +10845 +73479 +2427 +58252 +28052 +2757 +54166 +6588 +72049 +76757 +62377 +32195 +66396 +57795 +11127 +30319 +32958 +29477 +62489 +23697 +50233 +24852 +63010 +69042 +47821 +72727 +51040 +75158 +7222 +37800 +4689 +31811 +8206 +13091 +4475 +51065 +777 +10284 +23269 +72230 +30570 +2047 +16888 +72474 +7788 +75456 +33086 +68178 +73578 +75528 +58621 +65718 +37159 +14558 +11077 +34948 +50654 +45717 +65450 +27962 +1837 +73487 +27456 +59757 +18617 +60550 +67501 +30540 +20288 +71398 +5223 +72684 +23149 +55269 +6659 +76982 +24831 +55891 +7477 +31639 +62208 +79754 +17577 +48268 +9553 +58846 +15890 +27362 +74394 +40778 +30583 +32416 +16605 +33071 +52007 +17521 +43311 +69175 +54427 +2254 +62959 +54959 +56034 +52354 +22987 +40999 +31846 +9445 +46623 +10835 +25611 +53594 +29058 +337 +68295 +42424 +38407 +58624 +1141 +31485 +63659 +6184 +21530 +38050 +22150 +50752 +22131 +67488 +31733 +32400 +78555 +72175 +18939 +42860 +21392 +52082 +75720 +39769 +2551 +56764 +72455 +2559 +35048 +54790 +24474 +43280 +15551 +38284 +3121 +24125 +27827 +21992 +42472 +2341 +60124 +76872 +73891 +2719 +64809 +68654 +39626 +40026 +73611 +57156 +56960 +32309 +30606 +52259 +54539 +30231 +21510 +7936 +9320 +24009 +12173 +67383 +2955 +24649 +11612 +12884 +73158 +20742 +31448 +33612 +30652 +21627 +68856 +61949 +67119 +47 +24321 +77734 +68759 +60774 +47530 +71884 +79036 +23884 +58761 +76153 +74268 +24100 +19540 +29753 +57923 +23059 +80486 +35791 +50416 +74840 +32742 +75873 +32946 +76905 +74978 +35762 +31722 +46169 +9910 +18854 +61690 +78271 +26214 +54746 +49932 +29829 +14657 +27813 +40225 +13205 +9218 +73877 +73461 +23270 +57681 +54392 +6065 +41606 +38279 +53442 +40096 +10749 +30317 +49501 +59675 +49467 +42956 +39131 +4069 +8330 +23507 +58243 +68237 +9088 +7307 +16985 +1200 +76217 +32491 +50584 +29169 +7442 +77153 +51968 +10938 +66507 +33879 +57144 +62232 +45959 +55994 +46211 +76443 +9405 +66958 +79454 +48179 +56190 +46100 +24509 +22441 +4496 +64537 +12494 +19197 +59552 +38642 +9814 +5317 +40449 +80147 +43637 +56013 +74082 +18323 +62564 +13449 +78040 +29086 +32050 +14366 +14867 +24349 +10392 +55951 +23596 +21036 +27478 +49867 +45101 +2241 +1019 +37078 +32091 +54494 +63430 +47995 +263 +16013 +3875 +55272 +73398 +15073 +69473 +30373 +71805 +45633 +642 +47587 +77926 +15605 +59620 +69875 +68010 +34348 +72894 +4242 +31329 +12942 +65234 +7798 +68435 +54701 +62428 +6629 +37971 +67658 +10859 +51574 +42634 +65586 +24476 +60911 +32613 +18090 +68619 +3383 +45446 +20283 +14408 +69555 +34587 +18562 +28078 +43178 +33218 +5994 +27134 +38554 +24861 +46989 +3257 +77248 +36221 +14530 +73046 +43320 +57232 +38248 +66754 +7796 +2858 +42027 +14147 +75172 +17461 +57857 +15799 +45071 +26514 +15026 +11192 +50447 +62932 +43703 +29714 +37023 +9648 +67619 +39526 +4079 +57597 +15125 +64593 +75068 +47674 +72184 +74774 +6988 +49165 +50183 +76169 +32716 +53724 +14576 +26049 +22267 +7395 +74056 +2896 +75756 +79340 +20414 +37481 +14676 +21196 +79629 +73148 +60624 +2102 +63418 +37303 +18122 +66531 +78361 +12914 +16444 +25689 +60427 +72507 +47944 +14036 +223 +3308 +11761 +41238 +26683 +36126 +48627 +60050 +869 +34005 +4768 +3105 +28818 +36832 +55482 +38956 +19956 +1103 +74707 +19764 +8669 +54498 +75563 +50848 +54095 +64511 +17786 +921 +24119 +44205 +40618 +25988 +27176 +71450 +46378 +65198 +59402 +21021 +45824 +23316 +45860 +35185 +8250 +60099 +68706 +62772 +11910 +39507 +57786 +34603 +3286 +58767 +79450 +33526 +66119 +25316 +31038 +18634 +80610 +45806 +65943 +29769 +68442 +66001 +56472 +12419 +10045 +45121 +36158 +43013 +11942 +32770 +25362 +73634 +42549 +35237 +49957 +42842 +49615 +71305 +51415 +64045 +8150 +45262 +30826 +27086 +78318 +52853 +14144 +16667 +8290 +75266 +38686 +60877 +42013 +43095 +29673 +42329 +75203 +56682 +55045 +47236 +30384 +21942 +66258 +59155 +11555 +26745 +38429 +30672 +1488 +3036 +69153 +50359 +68439 +37363 +8786 +2902 +41657 +13292 +9615 +67156 +22501 +68583 +10968 +23295 +48888 +48992 +12618 +3112 +51962 +4699 +26534 +26581 +201 +16164 +76349 +17708 +41082 +40340 +60363 +68677 +30296 +62578 +60181 +3689 +3494 +39504 +29966 +45607 +14526 +7786 +80249 +27705 +42462 +65823 +38528 +43501 +69801 +63293 +49190 +79288 +61632 +30927 +32931 +73857 +73526 +41971 +31988 +42632 +31978 +39055 +25684 +76356 +78240 +40111 +5174 +74374 +36445 +32632 +59935 +13732 +44271 +77492 +41253 +64956 +12562 +5612 +47333 +62633 +33295 +13388 +52987 +76836 +68710 +74555 +40662 +58508 +69617 +69139 +56302 +17206 +28395 +36963 +15102 +52454 +28172 +59940 +74671 +53369 +46548 +56047 +74118 +34221 +31947 +41418 +72505 +72108 +19744 +26476 +35285 +80609 +11346 +46663 +29286 +9559 +7296 +31754 +10404 +71879 +11376 +19346 +78888 +42253 +75236 +53918 +64147 +52369 +59676 +68188 +42915 +26695 +61809 +73273 +32631 +14816 +20463 +73278 +16495 +47736 +76588 +26877 +45627 +71975 +53890 +18542 +60051 +46434 +28829 +79094 +21194 +41579 +16861 +40573 +57320 +49347 +60670 +21106 +38704 +66976 +33914 +39561 +22007 +74439 +3999 +53381 +19506 +59130 +34761 +63398 +13461 +63608 +11153 +55139 +60375 +37922 +28303 +4551 +38011 +14883 +20536 +67460 +43836 +18665 +45953 +74412 +27836 +20625 +24703 +69133 +56321 +9758 +65562 +76634 +17359 +24092 +15723 +2939 +17186 +23767 +80253 +8274 +79557 +37741 +12308 +75052 +52817 +23945 +8267 +20810 +62747 +77647 +998 +38469 +27752 +9404 +48440 +41424 +2220 +59192 +51403 +11098 +24423 +11696 +5764 +22826 +51245 +26204 +51057 +27767 +37335 +28019 +74423 +59487 +72462 +32197 +30719 +38546 +70129 +1997 +32743 +54829 +64472 +20242 +45725 +15211 +21601 +26477 +41540 +9673 +19931 +39005 +16466 +39277 +72292 +62710 +16004 +7881 +18127 +75565 +42574 +8085 +22365 +57154 +12028 +15983 +57684 +44291 +32697 +63206 +31756 +19592 +31577 +56332 +57029 +76856 +15049 +48717 +74611 +3687 +45650 +8842 +34826 +11247 +80710 +36813 +26222 +56076 +70237 +16573 +30158 +77845 +71926 +36834 +63579 +50948 +3548 +13848 +71209 +23981 +68702 +49321 +45466 +56133 +29456 +56627 +6313 +32179 +1689 +22132 +27217 +33580 +11357 +12518 +52296 +40447 +27165 +57775 +54108 +66833 +26148 +60017 +19967 +8814 +10716 +68243 +32474 +56647 +39461 +33615 +65524 +54489 +48105 +11020 +30937 +61345 +32449 +35137 +24365 +11233 +1828 +50362 +80734 +47108 +56068 +51346 +78058 +79391 +14083 +17789 +40541 +37256 +24844 +63685 +51020 +33572 +16625 +46331 +2166 +21168 +66056 +38559 +70096 +46844 +29036 +47677 +69772 +25570 +6931 +19256 +18209 +3338 +64981 +68776 +11168 +22381 +26433 +6572 +1886 +8816 +47779 +42280 +21497 +10414 +48314 +25399 +12031 +28249 +77243 +7694 +29212 +47988 +52893 +30261 +59284 +48572 +4532 +32330 +6727 +49304 +36483 +19730 +5981 +27771 +23984 +68005 +62282 +33414 +30853 +43149 +19479 +36497 +63558 +47194 +32560 +57515 +26860 +34169 +77478 +18450 +46367 +21918 +42350 +15663 +76811 +51161 +40188 +67361 +3108 +73596 +24937 +13597 +53339 +12638 +250 +64952 +40028 +73588 +15419 +44592 +9280 +53055 +23648 +66952 +50971 +32981 +67494 +66102 +70026 +75466 +9411 +5592 +28228 +59271 +26387 +59424 +42688 +22728 +35085 +48972 +9221 +4074 +20817 +39427 +60603 +28698 +45714 +75463 +44507 +14441 +37267 +2711 +3574 +65957 +69799 +25812 +32696 +25968 +68824 +23758 +15254 +43878 +6600 +6332 +43388 +42932 +58302 +42407 +50321 +71801 +12876 +28559 +47141 +73858 +39556 +57860 +56759 +73194 +53405 +16446 +57594 +7105 +10801 +43932 +71674 +68807 +19255 +11798 +16430 +23693 +56760 +10760 +54510 +57688 +54943 +40700 +39689 +45472 +48402 +45172 +32377 +65386 +13703 +31197 +60751 +59038 +42256 +19171 +24008 +42567 +9346 +57592 +38849 +40206 +53345 +79804 +13655 +64195 +42281 +66334 +24827 +31056 +36998 +8068 +42977 +22691 +60551 +65160 +50410 +63043 +77148 +53958 +21928 +67495 +55973 +15818 +13066 +26610 +30528 +45915 +3761 +78454 +50388 +31599 +41331 +36435 +32112 +74017 +18753 +7909 +40950 +47123 +27712 +3551 +34593 +28819 +71974 +49613 +23597 +10280 +25668 +61711 +63267 +45439 +24508 +2082 +9557 +26349 +30299 +55881 +77281 +15308 +41038 +45348 +73040 +15427 +51222 +65931 +44026 +35141 +35325 +25891 +42392 +1069 +34709 +41212 +49947 +30530 +76882 +80655 +66026 +76193 +58619 +72584 +36940 +7614 +29915 +46416 +27625 +641 +77073 +37955 +41148 +36156 +27416 +9027 +16198 +67809 +54525 +50536 +513 +66357 +42727 +47273 +28224 +38498 +511 +63100 +61142 +7560 +72849 +29079 +65818 +58247 +11297 +56768 +9699 +57070 +39723 +52146 +80535 +50130 +67287 +24271 +67015 +29935 +69456 +65318 +21648 +38827 +47459 +27337 +26930 +42400 +7980 +47555 +21004 +34255 +22603 +12029 +59974 +16762 +71578 +8088 +6477 +29578 +63824 +22716 +54901 +36287 +47765 +15320 +34315 +76134 +10602 +69285 +29590 +67112 +40032 +18243 +49469 +69883 +74918 +43102 +58514 +55862 +51406 +3701 +38584 +73965 +29425 +43712 +50167 +79328 +66282 +53504 +5102 +53329 +77656 +4489 +52881 +40715 +46467 +27950 +78939 +72394 +78873 +1509 +60460 +71378 +72755 +69924 +34563 +75253 +50429 +31676 +25262 +20898 +28582 +3506 +70383 +56261 +12177 +4632 +76070 +48731 +65890 +5052 +51499 +74228 +47532 +66584 +70504 +70891 +51900 +17760 +71400 +12959 +33705 +14166 +43477 +75827 +9109 +51666 +45989 +61188 +27724 +61664 +25394 +620 +78439 +29994 +53803 +9766 +29427 +12492 +23333 +52977 +68438 +69880 +13016 +39271 +62024 +52563 +80226 +71270 +61058 +72208 +2635 +28700 +22397 +38004 +21358 +535 +36666 +48150 +57818 +46120 +20347 +2920 +2478 +58276 +73879 +44971 +41624 +47767 +50964 +40468 +51115 +21939 +3647 +14935 +71281 +23093 +51151 +79666 +17466 +29159 +60829 +57179 +41369 +77505 +74272 +16676 +60002 +48692 +53248 +30582 +3050 +3995 +28284 +22732 +1244 +24496 +72846 +43690 +57506 +66029 +35274 +58615 +46785 +19600 +36895 +9783 +55099 +77851 +46043 +17750 +71114 +19210 +69198 +56859 +5692 +47478 +20946 +42482 +23911 +64820 +27316 +36833 +19819 +113 +50297 +42994 +19645 +25769 +76006 +70449 +348 +52781 +53130 +45999 +34577 +16614 +36454 +42019 +25266 +8774 +20289 +75183 +30553 +58888 +16639 +43706 +49889 +76989 +79417 +22035 +4427 +5633 +23103 +77918 +42879 +13265 +10315 +61661 +59239 +16660 +79446 +24796 +23741 +40116 +20293 +56501 +62279 +74910 +7726 +9151 +15699 +45586 +1475 +1974 +62365 +16097 +5910 +17513 +63205 +24106 +56753 +11462 +17146 +72262 +65985 +5351 +79943 +78122 +79453 +12521 +65071 +761 +24182 +70623 +14218 +40636 +55430 +77999 +19719 +67578 +40510 +35464 +41025 +34774 +53141 +45146 +34276 +28797 +70211 +52691 +52993 +77241 +64115 +8666 +10465 +46863 +73674 +8519 +67879 +78867 +25256 +20894 +63393 +29143 +42015 +71959 +43493 +68303 +79936 +54673 +12324 +70358 +35170 +28586 +78910 +79254 +54681 +48257 +29384 +56595 +78392 +25024 +63190 +65045 +50088 +6393 +51569 +11669 +28957 +48441 +78669 +16262 +5035 +46636 +51026 +57409 +19499 +33337 +54118 +63698 +65268 +77065 +182 +45441 +16474 +36683 +65355 +58600 +76801 +44406 +44118 +69353 +7948 +34446 +72729 +58030 +18707 +53498 +77298 +69453 +36191 +12943 +78350 +11622 +53450 +55453 +7747 +61370 +17072 +61588 +5836 +79624 +27748 +31118 +45888 +43144 +13436 +76901 +77565 +42101 +12954 +39009 +46085 +282 +12070 +36352 +16602 +20186 +46501 +29227 +43674 +24551 +36480 +18691 +31546 +61395 +57317 +59088 +18097 +33800 +687 +75073 +39380 +9753 +58911 +14761 +65760 +72891 +52856 +67698 +69865 +44317 +76389 +45035 +9805 +42872 +64880 +47513 +62048 +39444 +46473 +19888 +7262 +29163 +15987 +61080 +60562 +12449 +15466 +71897 +33393 +46522 +27002 +4615 +74708 +3102 +9025 +64477 +40984 +45325 +29269 +62990 +51844 +73154 +18678 +57756 +72603 +23938 +36852 +38712 +35321 +8895 +68567 +54158 +5222 +29971 +38062 +18766 +15784 +8364 +55696 +48674 +33529 +37805 +74380 +48880 +76429 +50407 +28657 +2857 +21354 +50531 +6041 +36956 +49703 +36744 +45107 +21684 +42614 +46277 +58527 +6360 +13885 +65037 +43982 +44953 +33187 +41350 +45652 +17506 +54551 +75627 +77104 +26098 +40228 +44937 +50895 +73108 +15724 +35122 +17202 +69626 +37272 +55317 +9155 +71205 +37438 +37178 +39104 +36534 +34115 +77292 +40460 +45306 +55144 +67379 +35603 +65417 +66510 +41451 +74030 +52449 +70615 +33895 +34609 +61328 +58298 +76034 +68157 +65481 +62508 +57124 +69096 +10822 +37835 +70092 +37821 +45885 +66924 +15508 +9177 +15121 +19679 +55817 +7338 +14052 +64673 +26374 +77183 +59451 +29465 +68396 +7062 +31701 +57001 +15869 +430 +43766 +56621 +58974 +54173 +44343 +66704 +22045 +74183 +60310 +74980 +20309 +30429 +34192 +45792 +49375 +25734 +69156 +39718 +60790 +9032 +33006 +69567 +66157 +63896 +17561 +34652 +25897 +51276 +58698 +71732 +15820 +9432 +7076 +54041 +15690 +17949 +35827 +68142 +50475 +70973 +75609 +59104 +42873 +57488 +24375 +60273 +73117 +13770 +17033 +22595 +30058 +79058 +16857 +15547 +12431 +22810 +63620 +79549 +54800 +59520 +50448 +12124 +59358 +21746 +10419 +75312 +4434 +74127 +62068 +74389 +46437 +68538 +32468 +29717 +62089 +21195 +16999 +57639 +5453 +39741 +56159 +55769 +64142 +20858 +15134 +28670 +54656 +37723 +78487 +78973 +79336 +56730 +24805 +7415 +10607 +31781 +67151 +74565 +2348 +26932 +57980 +16065 +39806 +46026 +14642 +48250 +75914 +33534 +54261 +61975 +10483 +30529 +11635 +29662 +6704 +16878 +25903 +55424 +2675 +21574 +15675 +13017 +13275 +40514 +66627 +9225 +45473 +55843 +74953 +18990 +50596 +37433 +60314 +45708 +70172 +30008 +26807 +39997 +78583 +67945 +69681 +62061 +18077 +28924 +78744 +6312 +30846 +57212 +49599 +68591 +67874 +79179 +59639 +73969 +75886 +29018 +74077 +58492 +71522 +31053 +31752 +10827 +41207 +79907 +49277 +57542 +16202 +75525 +42947 +38670 +29745 +49312 +34400 +55770 +39950 +17874 +29254 +69298 +24283 +66693 +76474 +40019 +20256 +21138 +20034 +80376 +26331 +60965 +28371 +49176 +77849 +79512 +26852 +52533 +44330 +5125 +11937 +77047 +61817 +73399 +33171 +23213 +59304 +30342 +65616 +56683 +75579 +26566 +55949 +6299 +66534 +46701 +78235 +1334 +43169 +32320 +56748 +1482 +72227 +32963 +8264 +32895 +36718 +60662 +2258 +57096 +19553 +47213 +65393 +410 +56181 +26060 +13877 +33604 +11474 +16634 +43715 +27352 +56075 +37459 +76117 +793 +38672 +48975 +65644 +66590 +1275 +39095 +48216 +6537 +77924 +18316 +50090 +19909 +42703 +37112 +38658 +12724 +30286 +50059 +54825 +29758 +61631 +73090 +31164 +54848 +40374 +78456 +35419 +25535 +22380 +60466 +19194 +1181 +58105 +35723 +40004 +10629 +74579 +51566 +34410 +68833 +31521 +69860 +19242 +2601 +36142 +18569 +68992 +49546 +48771 +13637 +17592 +7074 +72642 +43121 +54340 +33505 +4912 +54778 +8350 +42378 +14899 +61626 +46239 +65590 +36112 +77706 +2114 +17415 +53173 +64892 +52245 +70662 +25157 +55187 +30362 +10119 +20111 +33397 +43351 +36108 +44904 +8919 +38439 +62478 +48680 +45598 +78384 +64927 +18905 +24295 +9490 +12032 +41574 +67406 +23746 +58686 +73277 +57712 +41828 +2556 +43816 +23535 +16543 +61596 +7933 +16047 +53042 +29512 +31144 +37975 +44604 +77573 +56733 +59852 +38138 +20138 +15298 +10250 +25879 +45291 +14934 +13014 +44241 +35833 +77336 +52038 +32771 +16978 +1512 +60742 +2412 +6474 +76073 +8725 +17672 +46922 +70916 +32499 +75981 +29851 +49193 +66158 +62537 +37186 +14991 +58762 +48341 +8147 +17062 +79971 +73513 +68637 +6494 +28467 +14970 +31240 +66402 +43283 +60156 +20822 +47495 +65979 +13106 +34136 +61324 +23850 +16408 +29872 +34382 +6925 +78768 +24515 +52857 +22316 +77932 +6542 +67776 +20855 +5129 +6212 +78747 +17059 +45624 +74007 +1316 +66827 +57502 +15759 +13216 +56651 +37066 +74075 +39589 +799 +38336 +47015 +40758 +10388 +47090 +35317 +1331 +27274 +26069 +20494 +65625 +30176 +27017 +48484 +64223 +57968 +63396 +43569 +11207 +45424 +61364 +41459 +78580 +71258 +80415 +838 +50516 +12938 +41312 +55288 +79755 +46280 +10455 +34455 +77137 +37992 +54831 +67394 +61445 +79271 +46167 +59840 +68286 +34989 +78553 +59925 +3062 +44455 +26314 +73871 +80676 +46998 +40230 +55322 +70216 +53538 +79985 +73151 +24837 +69912 +56408 +64533 +17270 +19049 +55899 +77088 +67464 +74361 +63710 +76959 +48175 +46644 +8714 +59417 +33750 +45791 +35164 +42642 +80140 +78698 +75156 +47860 +44321 +47420 +58202 +66028 +49464 +79303 +22178 +9482 +22921 +31897 +23602 +58207 +2338 +39963 +3312 +46933 +12220 +29556 +32453 +41950 +75384 +53909 +28478 +42282 +53313 +57725 +66811 +28076 +73113 +23542 +42683 +3493 +15981 +33619 +17912 +50931 +78943 +41819 +15649 +3252 +46109 +2831 +70851 +54872 +8442 +42486 +8208 +76524 +1139 +77231 +75038 +51394 +16073 +70897 +6319 +53033 +17619 +52125 +24028 +31085 +43789 +24459 +74857 +49831 +211 +68923 +50923 +51422 +15259 +30115 +22748 +80731 +19943 +60132 +13207 +26111 +71718 +68163 +66220 +2475 +44993 +30781 +47948 +37455 +80549 +24823 +25451 +42821 +66805 +847 +22756 +70332 +75518 +45180 +37666 +44563 +609 +47461 +13788 +1402 +18252 +39819 +29087 +26024 +29689 +52812 +22769 +2415 +79610 +31128 +68105 +30257 +33583 +6450 +20235 +14963 +72595 +40337 +54647 +41430 +38506 +66183 +53761 +44562 +80055 +55614 +47559 +13993 +18818 +22750 +10946 +42662 +12414 +31089 +29317 +25377 +7381 +17293 +10609 +20649 +2216 +31646 +28985 +33753 +24666 +70068 +7318 +42530 +41053 +78710 +53696 +49494 +1867 +77242 +78978 +39701 +80172 +27261 +12831 +79567 +40083 +74715 +14815 +60525 +52737 +4608 +41419 +10278 +28571 +7828 +45435 +35924 +23578 +68549 +26816 +70307 +78676 +32127 +6532 +38123 +9918 +12471 +49400 +1207 +8629 +68162 +18321 +1246 +18656 +59203 +10064 +36117 +42355 +69856 +40581 +17331 +19968 +72622 +79541 +3373 +42401 +41022 +9230 +6593 +38129 +74941 +36053 +2971 +13428 +1979 +5783 +31163 +80621 +75465 +71032 +61043 +37596 +47094 +62029 +11898 +37720 +32901 +20836 +80526 +58601 +60411 +31506 +52921 +44345 +6993 +53648 +7667 +17601 +18504 +68480 +25710 +56666 +15396 +54485 +40965 +65624 +62088 +47567 +19556 +80641 +68883 +24351 +42130 +57892 +70624 +78643 +24987 +71829 +4576 +45308 +50669 +50753 +19633 +28147 +16547 +29690 +73911 +54788 +43656 +41489 +80237 +79026 +22504 +65902 +9887 +75217 +42176 +68995 +61513 +54575 +35840 +77179 +5108 +8283 +19595 +78728 +34793 +41806 +27004 +16082 +38551 +6497 +35426 +59177 +1889 +57389 +29232 +10591 +53657 +13021 +9209 +53529 +11499 +24739 +46214 +23420 +31406 +37107 +5628 +53336 +34799 +65456 +8235 +77226 +34546 +35458 +58987 +36690 +34990 +34298 +41337 +12044 +76182 +16311 +72025 +74233 +2136 +48086 +42449 +31153 +19465 +36370 +17179 +21641 +37360 +23750 +15391 +37679 +48650 +71182 +64602 +43604 +77597 +32545 +44280 +79496 +12797 +10375 +26533 +38481 +2423 +68498 +24307 +30282 +62837 +1004 +70870 +41817 +30709 +43952 +16721 +24318 +69247 +19100 +73512 +5907 +5234 +41044 +10763 +61875 +26227 +4 +78729 +12061 +74928 +33483 +38485 +71060 +67683 +4122 +48096 +37006 +62808 +38786 +38848 +63808 +32744 +30003 +5425 +11367 +79978 +76478 +45130 +34001 +32508 +4930 +22210 +72949 +54604 +24971 +45100 +14509 +70214 +32667 +21679 +9695 +41458 +62749 +11752 +4359 +73327 +79996 +4185 +74383 +17189 +11486 +57449 +12908 +58215 +17488 +63648 +17799 +19402 +39469 +24373 +1050 +27110 +57816 +15584 +15669 +33410 +79616 +22055 +8701 +24395 +37124 +76491 +13525 +71304 +72785 +75067 +25857 +36159 +73887 +67720 +54153 +26173 +24466 +37538 +77580 +11707 +52813 +9066 +11562 +22627 +26112 +1356 +74132 +73360 +33876 +27439 +8460 +64415 +12522 +68934 +70543 +21037 +38558 +68017 +63253 +80186 +58540 +65682 +80255 +31524 +1783 +60226 +43769 +42006 +7567 +57935 +70220 +28900 +22407 +44918 +45856 +66127 +46915 +12073 +38327 +43446 +53670 +50889 +60585 +36192 +57187 +48087 +15654 +63545 +21431 +50224 +70985 +24369 +77117 +60811 +55043 +1649 +51623 +79712 +68503 +25754 +25596 +70562 +49282 +63559 +26651 +42601 +62941 +15054 +5477 +525 +72628 +5445 +36631 +44197 +27652 +26889 +61903 +69994 +31223 +43500 +35571 +10909 +78794 +4648 +66435 +4396 +57117 +13881 +46362 +61359 +48375 +34696 +8605 +35002 +66988 +50788 +29080 +3135 +63951 +80548 +77712 +44476 +6465 +66747 +26332 +9187 +13700 +24463 +9671 +20498 +70300 +45957 +45977 +64611 +19970 +62165 +50680 +29755 +13108 +25054 +80467 +60256 +52832 +38064 +30888 +44218 +68088 +28962 +4898 +65748 +50919 +32220 +22411 +11059 +62554 +41306 +64232 +70100 +63624 +74302 +58702 +74564 +18817 +8506 +61500 +45150 +10335 +48651 +62438 +37093 +57136 +74235 +41691 +767 +31878 +50750 +21323 +29740 +429 +21599 +25364 +50932 +70033 +24400 +78038 +66953 +7232 +10358 +30499 +68153 +1245 +13369 +50394 +26943 +68058 +61614 +18626 +78429 +53818 +45330 +73229 +31152 +11003 +57002 +45252 +9356 +4344 +46188 +25062 +72226 +15719 +24817 +64157 +13809 +77517 +57114 +27583 +1164 +45098 +2122 +59772 +13802 +66328 +26680 +53034 +4617 +27572 +51342 +36464 +5614 +9341 +9776 +11593 +24700 +42728 +50162 +30303 +74650 +52073 +31806 +64756 +78904 +79407 +58916 +69233 +21841 +40346 +64674 +28330 +64145 +73693 +15944 +18821 +2649 +63924 +5853 +68785 +58944 +70404 +52480 +15550 +12541 +45863 +24960 +78762 +38568 +71587 +64750 +6858 +44567 +76221 +37877 +1468 +16035 +66069 +11081 +78276 +38869 +19986 +6978 +15103 +72619 +31019 +71963 +29145 +14535 +60973 +80175 +49848 +64737 +22138 +18030 +76340 +74632 +79397 +78539 +43542 +70076 +47790 +28017 +21654 +29291 +64229 +47698 +49587 +11968 +76676 +41726 +1162 +76737 +54154 +55168 +476 +41171 +65134 +31513 +817 +7902 +17887 +24489 +55952 +45155 +62266 +64986 +18184 +74551 +66521 +1083 +15656 +19625 +51130 +68468 +52721 +50969 +76863 +38666 +17550 +57679 +65317 +77513 +57162 +40911 +41088 +61032 +46122 +11626 +40351 +77796 +27510 +17106 +49752 +64467 +72633 +74071 +79202 +9714 +58213 +58453 +34077 +36993 +67964 +56127 +56731 +57627 +45116 +29831 +40339 +66291 +40406 +41833 +35879 +6610 +23436 +42908 +32870 +68692 +2783 +6533 +32255 +47320 +78319 +44173 +25263 +19204 +17740 +50998 +67856 +29118 +17311 +8086 +76173 +43256 +20968 +71813 +44053 +30441 +70112 +77171 +20716 +20553 +55513 +72688 +64347 +35659 +14080 +19478 +11017 +46930 +42795 +46570 +14400 +11577 +20302 +48902 +23069 +60214 +26864 +65323 +40886 +55178 +49562 +77583 +41993 +31346 +53760 +40905 +18858 +26526 +17923 +47367 +43927 +21972 +29019 +79064 +65759 +55341 +34168 +2438 +77084 +57200 +16307 +22982 +4987 +53494 +52693 +72307 +32341 +60281 +21662 +29504 +30863 +33618 +66390 +30675 +29244 +43426 +57834 +28719 +7787 +77732 +11143 +25365 +57339 +42677 +3208 +47003 +17229 +78433 +8368 +15118 +19537 +39947 +52470 +72192 +73918 +27030 +69847 +18877 +56273 +18992 +51853 +36708 +76650 +37796 +66668 +47441 +40768 +65462 +58779 +12957 +60682 +65203 +2116 +15384 +74955 +80516 +49479 +27914 +5313 +73309 +51025 +15695 +63324 +47334 +66095 +11449 +8117 +3636 +63297 +64114 +33290 +57462 +16124 +49022 +23909 +44923 +39151 +15143 +68747 +17260 +24096 +56023 +47484 +10870 +69141 +5531 +203 +72922 +48204 +18899 +14508 +33367 +25279 +59139 +68451 +11554 +1605 +496 +74945 +51646 +18531 +1429 +42063 +10181 +10415 +45987 +20266 +54654 +48622 +33456 +71143 +71009 +80287 +12886 +69927 +50210 +34736 +57858 +39139 +41809 +50031 +33717 +68398 +39111 +63053 +8960 +62280 +12479 +69984 +28565 +8693 +36580 +27865 +59829 +8621 +57434 +53393 +36127 +41395 +65568 +80269 +4358 +44895 +46494 +65925 +24412 +52409 +26983 +24029 +19180 +57927 +38384 +60390 +17299 +77783 +65523 +44724 +5229 +77948 +10094 +65924 +39403 +51606 +73825 +39144 +61242 +70809 +47825 +40698 +30284 +47355 +25367 +58609 +36836 +2962 +46738 +46699 +74992 +15029 +27371 +77101 +35199 +24768 +34013 +58877 +29825 +42349 +20736 +11427 +12417 +3747 +59711 +44988 +8107 +34626 +36280 +49576 +66542 +9687 +67058 +47166 +31617 +65259 +5332 +52443 +23004 +44986 +8406 +63225 +23965 +26213 +50189 +749 +55608 +44582 +53920 +53851 +45168 +24875 +73665 +75173 +4263 +15169 +51816 +59481 +28978 +34965 +48795 +2124 +44190 +49710 +76392 +7119 +61002 +50829 +18023 +60716 +70586 +31860 +45278 +5814 +10548 +43325 +33458 +52706 +7633 +60318 +17981 +73846 +8420 +6875 +14929 +9430 +16417 +4159 +58700 +11049 +76475 +9451 +64062 +19067 +78919 +30943 +49212 +13742 +52668 +68140 +8921 +46515 +56438 +67333 +72833 +55685 +28432 +68570 +51590 +19211 +57256 +44172 +8497 +31174 +57821 +70725 +64280 +56597 +65067 +9297 +25374 +47212 +31973 +173 +12779 +27932 +74682 +58232 +42578 +62771 +70202 +48918 +46234 +50015 +47643 +61107 +43506 +43502 +247 +13582 +27902 +68424 +19741 +58309 +46261 +27778 +25692 +6221 +39623 +47124 +67328 +20273 +12381 +68054 +13349 +45474 +19323 +34945 +39496 +75837 +75148 +71861 +69264 +67655 +78813 +60196 +73177 +77953 +58799 +49237 +33223 +40695 +54571 +56707 +80020 +67267 +74568 +28353 +31785 +30404 +37680 +5029 +32700 +18009 +47844 +16533 +72278 +3075 +18629 +42222 +74258 +6545 +20559 +10363 +25882 +68208 +76604 +36223 +9006 +64890 +47637 +54607 +26136 +3480 +77290 +12357 +41445 +63944 +8880 +56957 +78999 +46977 +2080 +4399 +18414 +66052 +10590 +58489 +11774 +27516 +13923 +37993 +16854 +50561 +4112 +72469 +38893 +35109 +48616 +18556 +19265 +5321 +65569 +45602 +52370 +30890 +15632 +9605 +24848 +32355 +9348 +6271 +39477 +65356 +54846 +14517 +55548 +70885 +67546 +39874 +68869 +13627 +35877 +46602 +10060 +42226 +71117 +57017 +42888 +73200 +1190 +74165 +18971 +25466 +73878 +8445 +68339 +18245 +47756 +23934 +16788 +14170 +28741 +52429 +39398 +40117 +60730 +55154 +24778 +67296 +71391 +50304 +22442 +29385 +55410 +24299 +28992 +79125 +54745 +60546 +55963 +16187 +8891 +2911 +25711 +28766 +51069 +39339 +15647 +18664 +3665 +51988 +41034 +63684 +269 +80754 +21252 +28578 +62154 +78694 +74870 +66705 +64580 +22666 +25246 +65348 +37064 +10187 +57527 +63448 +39635 +44579 +67846 +42321 +10628 +38355 +52341 +13474 +39269 +45512 +25409 +5536 +35871 +3870 +73556 +63368 +43781 +52251 +39708 +80045 +2614 +18995 +61312 +6695 +37857 +41575 +43755 +45600 +41198 +40049 +6448 +66464 +47700 +53763 +34688 +78322 +5595 +22749 +4717 +49760 +38839 +34303 +43417 +38421 +6934 +40601 +6578 +7419 +48579 +62493 +66567 +20538 +7088 +14542 +22590 +65370 +74198 +9273 +17208 +67171 +32447 +76336 +61492 +65634 +32943 +656 +44456 +11245 +66711 +17907 +8425 +62622 +75703 +10729 +59804 +28564 +30651 +69444 +11201 +9259 +59533 +3425 +16921 +12854 +5148 +37379 +77801 +72873 +50766 +3368 +68731 +28031 +15901 +60286 +1497 +7547 +69258 +30621 +45411 +23291 +32240 +61151 +1204 +77313 +52022 +30137 +3229 +11551 +4975 +14013 +27192 +52589 +67594 +65746 +44574 +924 +420 +63664 +55895 +52373 +78542 +75227 +37936 +12112 +18645 +10750 +40863 +62399 +72157 +14789 +28381 +47794 +12971 +69115 +29611 +1030 +29298 +28679 +4612 +23367 +45032 +63050 +73947 +12709 +60241 +15117 +33440 +14238 +58393 +70104 +37542 +76796 +42973 +80369 +51273 +49255 +54707 +6582 +48356 +31452 +27541 +6031 +78519 +56096 +33594 +62944 +34273 +5586 +1895 +24255 +67918 +36113 +37181 +32332 +19969 +44382 +51376 +46453 +63493 +44866 +75971 +16445 +65455 +34622 +44926 +69236 +47997 +22352 +13340 +74532 +26944 +20708 +79137 +15763 +29780 +14513 +5629 +436 +29889 +1443 +3723 +72683 +36132 +16240 +4109 +3370 +65585 +33351 +56875 +15147 +32014 +33299 +49934 +434 +45449 +25883 +54044 +11949 +27146 +57476 +60946 +72935 +76238 +9837 +60045 +66298 +31141 +62353 +66009 +73582 +68595 +14649 +47366 +32804 +64370 +42115 +71554 +49720 +17153 +4839 +38934 +70984 +75998 +1036 +3895 +68580 +54614 +67304 +37898 +79497 +14265 +59055 +75868 +59049 +41964 +17850 +73351 +18311 +76151 +48875 +27070 +44182 +2143 +40538 +75229 +38372 +27336 +3213 +31231 +42702 +74741 +1250 +63 +1137 +70963 +38732 +8523 +38693 +23570 +72418 +78430 +64002 +60572 +11441 +11282 +48270 +38636 +40900 +59718 +743 +9340 +49836 +76711 +2735 +7945 +6674 +6334 +14760 +69621 +1873 +4298 +60909 +30951 +19412 +72141 +67967 +75992 +53468 +15025 +65791 +8613 +40834 +57946 +63499 +35138 +40836 +6732 +918 +7599 +72770 +55688 +65454 +68732 +23627 +75269 +24820 +4130 +77185 +8332 +36629 +26480 +28180 +65604 +32496 +133 +12138 +75423 +27706 +24454 +34610 +53018 +24206 +24470 +59344 +16664 +77522 +4293 +64314 +11105 +39233 +46156 +53129 +51417 +3244 +10138 +67197 +7425 +21263 +24199 +28612 +16598 +59618 +42513 +4187 +64411 +20231 +26115 +73080 +8749 +2863 +3692 +80324 +43744 +3048 +7846 +28835 +24468 +70855 +63876 +14825 +22369 +14704 +45275 +9803 +28454 +16291 +51615 +53286 +35914 +15293 +63979 +20851 +12320 +6907 +39312 +23592 +54966 +59044 +32347 +18741 +67806 +2887 +42356 +19509 +42072 +70416 +36863 +72099 +35382 +9997 +56571 +61561 +66989 +5805 +78657 +73501 +41050 +34886 +38045 +61111 +61147 +67510 +2537 +50735 +80157 +55432 +16026 +21660 +62766 +5750 +67752 +245 +42526 +60218 +30460 +65975 +14656 +31202 +58948 +67427 +9748 +24030 +18890 +8903 +54820 +29822 +2602 +39246 +72260 +55214 +4785 +55076 +59869 +51182 +11940 +25324 +23661 +9068 +58328 +59981 +58045 +7663 +34359 +39375 +5225 +22914 +25646 +39627 +15976 +57388 +48943 +39072 +47430 +80640 +11107 +15991 +57604 +38822 +38479 +11620 +11436 +37194 +11671 +41311 +20106 +69666 +39433 +116 +60157 +33128 +78986 +29150 +71458 +5541 +41885 +60813 +34796 +24780 +17496 +66897 +42542 +4009 +32977 +70542 +15067 +49890 +66037 +72732 +64208 +36111 +71133 +56547 +31615 +61268 +26147 +29643 +69283 +23400 +50700 +9231 +72804 +75160 +55349 +64851 +53301 +70344 +47255 +17252 +30904 +4294 +20177 +1579 +41427 +56255 +32033 +13318 +45609 +34997 +12035 +1486 +72705 +44850 +46637 +27107 +76258 +30015 +72638 +10376 +66003 +63126 +1417 +11089 +69513 +51484 +6673 +45000 +32699 +31446 +43108 +44125 +61687 +23207 +42133 +39329 +3757 +73070 +13220 +18155 +29144 +50373 +62636 +2837 +14692 +17279 +13401 +45110 +57642 +18255 +74371 +2790 +54849 +50645 +41717 +41794 +48980 +34226 +12740 +69241 +38768 +78638 +78036 +43420 +16433 +22582 +16489 +61804 +64713 +45185 +54907 +58923 +35465 +193 +66011 +8448 +42625 +8805 +39624 +8408 +35519 +28965 +38943 +80139 +79024 +19906 +41595 +70614 +41702 +21659 +67408 +11315 +6270 +292 +52071 +16688 +5530 +2388 +72373 +51132 +41266 +24590 +6179 +63337 +39038 +45006 +30211 +80397 +22920 +59655 +50660 +7716 +52834 +14088 +60812 +59517 +24828 +78387 +29408 +45300 +36293 +78120 +48582 +6615 +60789 +9092 +11085 +21616 +37084 +51584 +27799 +20451 +71655 +61928 +45678 +18572 +5074 +31594 +16654 +62949 +727 +4807 +38189 +59168 +13454 +44269 +43174 +53759 +24150 +44589 +47052 +29000 +41846 +74105 +26606 +69284 +25023 +80648 +61340 +10276 +39710 +60255 +11860 +36183 +6830 +52320 +80769 +74813 +36927 +30912 +28554 +18262 +27959 +30862 +40242 +69878 +11386 +37591 +52384 +20497 +31894 +57026 +75255 +39379 +71164 +75120 +57663 +10700 +68900 +15836 +26576 +47234 +54388 +52819 +12019 +56398 +35678 +41107 +79588 +6472 +20149 +46626 +51908 +55957 +65694 +27568 +15040 +37836 +73024 +2045 +47577 +38865 +32403 +15392 +28747 +51127 +71581 +74561 +3320 +61104 +42351 +61681 +80721 +68885 +29840 +57804 +22032 +6997 +66333 +40803 +7791 +61758 +15249 +14713 +41092 +79764 +18997 +67803 +67718 +71513 +76802 +48287 +70538 +31775 +23776 +16864 +71940 +54749 +41502 +48462 +26642 +58629 +76735 +20382 +43279 +13442 +62050 +16246 +5276 +17823 +75284 +39936 +69896 +36640 +37795 +12316 +79444 +66364 +65063 +302 +64324 +972 +45087 +45269 +37721 +41930 +78393 +7651 +30439 +43408 +11146 +49102 +13835 +16674 +17811 +1251 +25958 +611 +68318 +30764 +63522 +39299 +44322 +35136 +2428 +25654 +7086 +70969 +17904 +58193 +61386 +68826 +36724 +14885 +64906 +20337 +36487 +16589 +16838 +74154 +26549 +66528 +62610 +26092 +68018 +10816 +4472 +4193 +57562 +67048 +16099 +62879 +42764 +47041 +70466 +28115 +35230 +54968 +16033 +45881 +4075 +13650 +16135 +34161 +59351 +61741 +30023 +67138 +45312 +48751 +24785 +35971 +77145 +29924 +38268 +69836 +11625 +21952 +61605 +4101 +29194 +20167 +16869 +30013 +18537 +48897 +41215 +25376 +43869 +20823 +28264 +37989 +9251 +65960 +49969 +12085 +47435 +49995 +15576 +43240 +21747 +25605 +33412 +34537 +23991 +12578 +72701 +65766 +59641 +69646 +4660 +4718 +40621 +71761 +17271 +80419 +32060 +36855 +39160 +2327 +53987 +61887 +79037 +35526 +24947 +9242 +50559 +35388 +9376 +40669 +56544 +5916 +64725 +50300 +70446 +38165 +6105 +16582 +72530 +11916 +33301 +59108 +19273 +24441 +13484 +8900 +21547 +55703 +21049 +41637 +9684 +27302 +7014 +70356 +38462 +17676 +21924 +8335 +41286 +40401 +59637 +16556 +20210 +36409 +51935 +68641 +41143 +38470 +53076 +77528 +58469 +60475 +30041 +74684 +78273 +38593 +23324 +17392 +41144 +7215 +55181 +8468 +31672 +3675 +48761 +34185 +6261 +58922 +48491 +7813 +62387 +28756 +35030 +49362 +67645 +5647 +5701 +66077 +71911 +3500 +43444 +64858 +40150 +25949 +4805 +9582 +13063 +26135 +38628 +21373 +76257 +6068 +23764 +37673 +31104 +28414 +66908 +39767 +24996 +57598 +22135 +68322 +13840 +6171 +30090 +53531 +65210 +13513 +46559 +10632 +49940 +11057 +25804 +80611 +78764 +78812 +11776 +70101 +10619 +42933 +35289 +19564 +18413 +9005 +24134 +54159 +30574 +37297 +19141 +45149 +46597 +32529 +17325 +22683 +23300 +25300 +72637 +7910 +41396 +24803 +75482 +41539 +49527 +45931 +25046 +37381 +60223 +59241 +22733 +47354 +10837 +31071 +4641 +3600 +76597 +72623 +28599 +54014 +56021 +59418 +55776 +22446 +65618 +27074 +21915 +61371 +16774 +70941 +63459 +75234 +40418 +10205 +7511 +74706 +79237 +31165 +54363 +50636 +56525 +23811 +43309 +54267 +44311 +13381 +38714 +43763 +22463 +20166 +68229 +56704 +40087 +50714 +52345 +70859 +38809 +18507 +13974 +40764 +35801 +78691 +60632 +65508 +79923 +44750 +16994 +55847 +15705 +36596 +16475 +18887 +10329 +56373 +10291 +12037 +46307 +20208 +5228 +51083 +42117 +79969 +22294 +6786 +41594 +78289 +16231 +3554 +6509 +67264 +43801 +57414 +34656 +1854 +52736 +36858 +48155 +57789 +49290 +23889 +6701 +19277 +18394 +54797 +6176 +35629 +11714 +66247 +17731 +1150 +15300 +28916 +73363 +80783 +66368 +42270 +13590 +10362 +27658 +52913 +32204 +16689 +79267 +51898 +61710 +15352 +41977 +70044 +1796 +55530 +45287 +4229 +26031 +27324 +71923 +40261 +27616 +14814 +30383 +12847 +21001 +44664 +22524 +56000 +55499 +10682 +12782 +21512 +62355 +77599 +37343 +51380 +31531 +79811 +23723 +26891 +18963 +21192 +75267 +57882 +65033 +27903 +42746 +11802 +43745 +78352 +65031 +77283 +73621 +42615 +76237 +1807 +39656 +79167 +53347 +2901 +46363 +61001 +65192 +79339 +65488 +2510 +56699 +46241 +66947 +47524 +54635 +70487 +40612 +31526 +39348 +71765 +38276 +44717 +73081 +26699 +42706 +51805 +52926 +65860 +59551 +18102 +61784 +38538 +74901 +74354 +78707 +4944 +9919 +31933 +70113 +21085 +64006 +38955 +27732 +52517 +41862 +38200 +39678 +69888 +16294 +80781 +60456 +49685 +40584 +62871 +40412 +23944 +44875 +74256 +80087 +18631 +38118 +58570 +43996 +58640 +37544 +20934 +4450 +27173 +7852 +24226 +8537 +69324 +50077 +61671 +50419 +31948 +7496 +25956 +58178 +53806 +16366 +1078 +55174 +56962 +64091 +68357 +16319 +60185 +23334 +41675 +62416 +38525 +41075 +61827 +6054 +23078 +55979 +4333 +74805 +73613 +1534 +38902 +9391 +47705 +13132 +29809 +15233 +37452 +80389 +490 +40312 +43449 +4147 +2937 +14615 +58612 +45540 +59752 +32165 +12676 +4329 +29031 +27222 +67123 +70584 +79546 +7526 +12354 +1160 +67710 +71922 +23538 +36413 +18020 +78485 +28127 +22140 +4189 +24259 +73691 +45232 +43274 +51920 +36400 +37422 +27938 +6468 +59901 +45052 +66286 +18131 +37700 +72861 +75168 +78262 +42467 +52590 +15891 +74019 +10597 +10036 +1870 +76366 +38425 +77934 +74366 +16873 +23414 +49902 +15767 +77892 +50340 +78556 +14104 +78798 +7627 +351 +30916 +43838 +37456 +50315 +40572 +64570 +78239 +8421 +33241 +18583 +13988 +5761 +5603 +39886 +15630 +68066 +12165 +33264 +43454 +48935 +70308 +46746 +57384 +56689 +52569 +73603 +73819 +66623 +18191 +1628 +52094 +1062 +48148 +38774 +56993 +73500 +38347 +15644 +28198 +69846 +41064 +79519 +51372 +16258 +36378 +51076 +34643 +38718 +44354 +21159 +73253 +78734 +9625 +38386 +53251 +71892 +45628 +14310 +37305 +33220 +5525 +23044 +51375 +50497 +6174 +4151 +60521 +22519 +61070 +62895 +37970 +72802 +23623 +57692 +74024 +18977 +73354 +78315 +63227 +76484 +21994 +59952 +59693 +30216 +75546 +63503 +1539 +38530 +29498 +40379 +15541 +63974 +7628 +35581 +17662 +7379 +17068 +78475 +27277 +75524 +43368 +57400 +69440 +4543 +38513 +5722 +53408 +23274 +56844 +24432 +58673 +1383 +49871 +74522 +51874 +2465 +49000 +71739 +62784 +64396 +6369 +61498 +10660 +41520 +5782 +46107 +36162 +70282 +8707 +52032 +31397 +14491 +20226 +178 +2547 +54143 +17326 +5960 +41757 +30514 +40167 +63061 +67628 +21997 +3559 +3273 +8358 +73048 +56038 +786 +4425 +65402 +32493 +75223 +12005 +78417 +26318 +67992 +13396 +40119 +26977 +2712 +66858 +24706 +66165 +78166 +55409 +15582 +33513 +53500 +29757 +53271 +14232 +2825 +33563 +54444 +73330 +35200 +41730 +56460 +72482 +4004 +76945 +45266 +33152 +71690 +55457 +67614 +37278 +80306 +64136 +8711 +70012 +29131 +35427 +16597 +32971 +8496 +35242 +795 +48636 +25370 +18780 +56817 +40507 +49577 +15108 +18096 +27262 +2065 +65085 +36815 +7987 +4833 +60166 +24452 +35503 +21291 +46898 +8682 +36017 +75064 +17610 +5435 +57307 +61951 +17966 +79263 +40443 +38761 +2908 +58863 +1276 +50161 +23710 +22084 +55811 +69518 +62719 +1296 +7411 +28145 +41754 +12107 +53266 +40668 +45928 +53125 +12086 +49798 +14451 +24442 +22871 +31753 +43862 +48279 +5226 +60458 +34494 +8127 +31682 +75875 +76413 +8896 +52095 +14469 +32011 +71273 +69031 +57526 +26228 +4292 +24063 +75252 +22183 +19789 +29720 +58613 +50504 +73795 +69240 +76673 +63771 +33094 +57347 +28902 +8870 +45415 +53338 +60863 +27395 +78715 +71105 +58872 +63809 +11387 +13807 +21985 +76240 +19973 +10385 +33034 +955 +25130 +72569 +4818 +58787 +80129 +49568 +65224 +41481 +57227 +37875 +63970 +38864 +63696 +31633 +3799 +36761 +4696 +66527 +13657 +49023 +70688 +11452 +32583 +5383 +29494 +74995 +69113 +38005 +15740 +70813 +57313 +72100 +68141 +55833 +17869 +78303 +63574 +49713 +1582 +32819 +72946 +64647 +65559 +54493 +23119 +64848 +46032 +76986 +64770 +69514 +73834 +57105 +24905 +75708 +7880 +60056 +44882 +37428 +6513 +75092 +46542 +39294 +53695 +39680 +42734 +35726 +62868 +24141 +41413 +19994 +38613 +3750 +66905 +22940 +77603 +53882 +56657 +31549 +44461 +9144 +46970 +2138 +13939 +483 +27119 +18318 +36889 +74259 +28968 +59690 +53215 +42723 +61264 +4096 +8563 +64355 +16518 +72520 +34202 +38010 +62336 +59103 +55396 +28550 +55442 +29737 +65692 +33628 +76024 +47259 +71672 +29447 +61428 +58512 +74943 +31773 +22610 +74180 +19163 +58355 +31305 +63220 +56206 +13644 +48 +15756 +53581 +16501 +22928 +43483 +69548 +70899 +66240 +16449 +72422 +47042 +31943 +68765 +27314 +49652 +10162 +1553 +14637 +808 +20169 +42305 +74699 +9726 +35189 +42094 +78068 +72188 +56843 +18829 +70481 +44792 +14905 +42992 +4375 +23286 +56171 +5403 +19352 +66918 +59739 +73358 +23674 +39138 +11905 +34479 +5211 +18879 +23336 +68624 +29105 +23701 +46986 +17852 +10352 +29474 +16053 +56794 +37448 +58697 +34134 +47268 +3964 +43009 +34802 +28844 +28703 +35653 +74701 +20188 +31454 +42991 +14659 +58133 +24946 +60054 +2397 +16961 +46012 +15515 +49478 +15113 +59410 +23276 +29186 +42957 +39945 +2230 +11825 +31591 +42712 +73377 +67019 +55970 +58031 +46068 +66316 +77632 +22207 +71697 +44188 +20278 +72879 +68235 +58896 +18108 +37565 +70516 +16147 +72342 +80658 +15496 +4449 +75601 +43855 +76344 +12036 +47083 +20777 +79909 +27229 +72344 +25215 +64352 +31855 +60421 +47424 +62126 +73942 +46942 +69421 +19777 +7845 +29587 +38370 +47857 +46676 +7016 +2593 +49445 +45142 +77093 +45393 +47760 +53834 +2958 +28143 +45279 +71311 +11068 +16791 +560 +61964 +1473 +65537 +41410 +76447 +56268 +64351 +75319 +30933 +49674 +54279 +12377 +66487 +58548 +57406 +44640 +40709 +21232 +60718 +52047 +6162 +60734 +33502 +612 +69288 +73047 +64506 +7106 +12549 +16282 +79693 +72107 +73959 +49276 +76085 +14199 +72617 +79889 +54046 +37910 +21610 +36653 +23985 +42197 +16456 +54615 +67354 +23766 +73446 +50708 +44921 +18938 +50428 +14290 +70594 +17896 +64877 +36924 +23475 +60633 +35042 +30476 +11926 +76633 +58423 +2398 +49532 +16514 +63934 +10565 +45138 +72710 +13589 +25691 +889 +33115 +67881 +62989 +9055 +41359 +24490 +41935 +30187 +13042 +38298 +19701 +44919 +51475 +79809 +80714 +75175 +25320 +4350 +56679 +65575 +42023 +39601 +53767 +57915 +75904 +62101 +3498 +66053 +67054 +67172 +17713 +8594 +24683 +50001 +73854 +41273 +63566 +72409 +26999 +64344 +67017 +3009 +67995 +31632 +1734 +76925 +22924 +11817 +49030 +13363 +63715 +2862 +45882 +40101 +57233 +33293 +56692 +6092 +77815 +16160 +9884 +13890 +36897 +12111 +251 +67711 +220 +37654 +75867 +45 +70604 +50661 +36012 +44689 +21748 +71393 +2458 +33011 +19155 +5817 +62536 +59095 +19740 +70808 +21327 +68650 +60391 +59092 +6014 +33252 +20117 +24487 +77338 +45091 +27503 +51603 +12575 +75100 +9138 +20963 +39417 +61701 +27291 +40218 +51829 +33519 +34228 +76291 +42862 +46274 +29195 +62721 +35092 +45763 +59265 +70845 +79828 +79988 +68019 +30989 +26183 +63076 +41823 +33044 +13039 +11284 +25107 +6877 +3706 +42476 +76868 +1441 +57148 +13082 +51118 +72562 +63908 +8690 +43177 +68072 +5779 +52516 +55074 +13736 +8042 +54247 +41335 +64609 +58153 +23548 +38933 +14966 +3584 +8075 +78499 +60948 +7841 +71396 +75239 +67600 +21499 +67521 +20834 +10978 +24093 +63815 +48688 +61972 +78769 +37468 +53120 +26654 +17212 +46353 +38292 +48628 +60695 +27300 +78790 +48964 +48429 +73765 +57832 +22723 +39882 +74776 +3000 +13986 +7698 +54844 +41494 +14059 +14534 +4754 +22004 +34430 +27731 +66359 +4562 +13726 +6742 +3298 +1662 +31666 +33746 +7243 +78055 +27854 +8029 +63407 +53991 +67067 +53617 +75196 +73597 +65187 +47168 +61074 +59708 +75476 +8869 +29763 +52888 +53596 +39944 +47310 +19511 +27910 +63257 +48849 +14748 +76934 +6198 +17320 +9790 +30127 +70880 +28642 +10918 +5810 +64668 +80770 +46661 +60915 +53564 +19069 +52433 +3180 +13720 +48417 +37312 +63633 +27916 +4558 +60298 +13001 +70354 +43752 +60974 +30331 +80412 +71851 +62008 +51456 +61638 +79077 +24115 +76598 +9073 +42784 +49611 +49533 +68631 +15443 +31246 +36938 +3808 +21953 +49025 +70981 +70037 +64025 +68926 +4172 +39172 +55041 +81 +74099 +65991 +18513 +26607 +31222 +77335 +38595 +18330 +6668 +49608 +55117 +21794 +6204 +74525 +19820 +37223 +30201 +62046 +21538 +24927 +72717 +9435 +79897 +46001 +33475 +34746 +47161 +56457 +6338 +56197 +58745 +21362 +48610 +20909 +3255 +34834 +46695 +71118 +65513 +25763 +3444 +22579 +34128 +59812 +44528 +54603 +79498 +74582 +71601 +78585 +19733 +2813 +37888 +1028 +45327 +77594 +16845 +40591 +47764 +38263 +15810 +24791 +78954 +24956 +29563 +25302 +819 +72735 +53291 +1293 +30182 +59415 +61301 +66149 +20965 +43042 +5462 +47588 +25553 +4722 +3483 +36602 +60482 +42944 +51258 +8832 +42861 +26913 +64317 +37524 +59287 +36583 +19070 +65051 +75400 +46460 +45414 +44505 +26106 +37269 +11858 +72351 +73307 +29861 +41176 +43995 +46077 +70436 +46293 +40856 +70040 +2946 +41480 +47728 +49074 +42787 +56219 +61943 +80027 +23214 +25953 +29610 +30191 +39395 +28720 +13071 +59383 +47061 +17763 +31384 +78788 +7457 +69145 +42184 +62263 +57063 +43313 +24613 +71467 +50200 +10367 +76931 +29355 +59549 +74886 +42367 +35802 +76362 +52780 +19960 +29687 +7823 +49584 +47215 +70195 +32455 +3411 +71790 +32940 +6840 +69168 +458 +46788 +74986 +59626 +16917 +69032 +4587 +36682 +41229 +39438 +13849 +33064 +14550 +70088 +67227 +26329 +59357 +66285 +2685 +53089 +9946 +24237 +30858 +26334 +8801 +71082 +68195 +53744 +8119 +23204 +27467 +35093 +50199 +43172 +30770 +44930 +900 +1209 +3281 +68022 +8578 +51214 +63329 +3495 +32765 +61008 +77502 +77259 +64606 +9644 +21387 +17421 +13548 +23765 +47919 +1775 +75167 +69576 +25775 +65196 +2983 +46734 +39244 +25779 +28256 +40824 +38571 +63428 +2370 +64946 +53510 +49535 +62741 +25619 +38968 +19761 +64041 +37769 +53206 +51916 +8800 +34996 +6012 +15031 +11150 +57060 +31398 +7773 +12284 +14016 +16365 +42147 +49143 +42639 +53312 +24651 +21775 +20960 +77959 +71402 +54925 +48477 +34860 +71331 +43536 +58375 +48051 +28800 +49345 +31161 +52091 +32 +54418 +17824 +33959 +60022 +45328 +22425 +75453 +1588 +71523 +42701 +22902 +36547 +65238 +64504 +6657 +34726 +6745 +28622 +56872 +3438 +74131 +22874 +69432 +52527 +22229 +12345 +57327 +80443 +24763 +40246 +65970 +67625 +68255 +80748 +46873 +27852 +17827 +48344 +62332 +26274 +79685 +57177 +15347 +50611 +64381 +11285 +3539 +60172 +70312 +67805 +77744 +2804 +62804 +62425 +11261 +21248 +46472 +5056 +17182 +62285 +69943 +16162 +63805 +37260 +11061 +49092 +21030 +44713 +24378 +18813 +29420 +9660 +15552 +4580 +34205 +39052 +2170 +68026 +5283 +80093 +59949 +42483 +56706 +35071 +49273 +20449 +52824 +32463 +1547 +30234 +77888 +19310 +3366 +67447 +35669 +17915 +19798 +6675 +15358 +7871 +9279 +43997 +69670 +63872 +33980 +41195 +7115 +74472 +76354 +33075 +69323 +62513 +24121 +24690 +16734 +47383 +41638 +8026 +753 +17515 +71711 +33909 +16670 +71379 +25077 +29200 +74737 +53203 +16618 +34583 +32062 +1448 +80038 +5835 +26499 +52024 +80071 +75750 +75825 +59079 +44202 +218 +17772 +56871 +74418 +25469 +39036 +62915 +18021 +64692 +55603 +63735 +72591 +9929 +29770 +61081 +71061 +8722 +1885 +35240 +46858 +25893 +7372 +33292 +31836 +27266 +1433 +21879 +1679 +67273 +8798 +73570 +12114 +10156 +49185 +33799 +67089 +3519 +36721 +6281 +39525 +51553 +16596 +63131 +25392 +20949 +15425 +18575 +50045 +69358 +69766 +14321 +74421 +37948 +6322 +43691 +44127 +28535 +66977 +66346 +21409 +24397 +17450 +51686 +78197 +26230 +52904 +19458 +20373 +38894 +48046 +72476 +46471 +11048 +58101 +54373 +60843 +77372 +34507 +21784 +62918 +63259 +2314 +54853 +70122 +56329 +32852 +46264 +79490 +39279 +42217 +24292 +59903 +2251 +35875 +37170 +2008 +44775 +59032 +66137 +30360 +61183 +28473 +79965 +76708 +5807 +5880 +1498 +64814 +55333 +35830 +45381 +10579 +30964 +10940 +66641 +60645 +66266 +30657 +19425 +32265 +32104 +24546 +35852 +79018 +23463 +13913 +37114 +67729 +55877 +5279 +73992 +43212 +79062 +11078 +59727 +71260 +23492 +10848 +2855 +56413 +64127 +40743 +33287 +25151 +72828 +43780 +16083 +8531 +45930 +23502 +55094 +60446 +50759 +16022 +52286 +39272 +21966 +54836 +46529 +60361 +32960 +12874 +71648 +71141 +39599 +9486 +76992 +53892 +38153 +199 +64046 +52081 +60837 +5729 +13598 +12126 +44402 +75414 +62212 +64014 +21258 +39833 +53631 +38431 +3289 +50330 +54331 +17872 +14852 +69784 +31117 +43589 +6864 +48368 +16752 +59151 +58543 +17978 +34807 +72634 +44229 +13811 +61553 +38346 +45022 +1358 +68399 +16201 +36089 +67416 +5499 +71065 +6677 +35769 +44139 +47311 +32284 +79055 +46739 +59706 +26321 +56511 +51621 +57204 +24384 +32247 +56376 +24786 +25175 +38353 +13633 +43598 +835 +78236 +68380 +7068 +74137 +35663 +50966 +74122 +36008 +28546 +31505 +4724 +41895 +16290 +24618 +62642 +4237 +37999 +5290 +40293 +27612 +72181 +74994 +61693 +42672 +80104 +49665 +45412 +68274 +32146 +41126 +28464 +9462 +30508 +18460 +13970 +73101 +51782 +4002 +40190 +44658 +56346 +18571 +58290 +31051 +53534 +14204 +64943 +79394 +59429 +65627 +75436 +17523 +13827 +51073 +53563 +4173 +27567 +85 +49723 +18248 +10219 +16487 +77306 +43697 +53157 +55121 +59682 +62293 +40825 +59770 +7283 +18546 +22554 +9633 +7170 +35582 +67955 +60164 +45510 +52874 +43369 +34648 +28738 +45003 +22836 +23282 +38853 +74319 +50017 +23141 +57487 +34504 +57316 +75140 +69648 +37233 +34679 +74360 +43687 +1589 +78505 +1393 +68432 +7413 +67740 +320 +26749 +20043 +78613 +43727 +36093 +16815 +45942 +13246 +2310 +15476 +25705 +64291 +36886 +17533 +74133 +9485 +21716 +62028 +15572 +32457 +26193 +61160 +31266 +27055 +7241 +31883 +31631 +1594 +18082 +5329 +71016 +13942 +32976 +46374 +63719 +4416 +56480 +65777 +21288 +25930 +4124 +74054 +51726 +78360 +66547 +48119 +8830 +52304 +47230 +61460 +40917 +79552 +44901 +74537 +32391 +56157 +73610 +2779 +13618 +8982 +14979 +1707 +42785 +54238 +65980 +4974 +34268 +72106 +41812 +39094 +4750 +25501 +16128 +5212 +37629 +55665 +28621 +5392 +18998 +57540 +73768 +63776 +60159 +26837 +70083 +5512 +69977 +61373 +11793 +5920 +145 +928 +6372 +61285 +38269 +45572 +60547 +5208 +35770 +35276 +48021 +74628 +6256 +77524 +30839 +66980 +5231 +42968 +71639 +64710 +21378 +66683 +23218 +21437 +41609 +31998 +13488 +52190 +17744 +53027 +5347 +67166 +28355 +49234 +79352 +34692 +3388 +75928 +56520 +63612 +64109 +50310 +50185 +66883 +44624 +3742 +27715 +5553 +71004 +47421 +30104 +36700 +60647 +76241 +72054 +25981 +64134 +51325 +31899 +70388 +53840 +35594 +9332 +67886 +28534 +46589 +49857 +64551 +47838 +15395 +69384 +62385 +45753 +53320 +8679 +28845 +599 +41581 +44411 +10403 +43979 +73134 +32937 +37767 +27988 +38733 +77234 +36661 +58253 +62169 +68693 +21611 +18647 +23410 +48950 +15828 +9979 +31 +30097 +41983 +70 +49905 +66538 +25323 +6828 +39039 +11074 +11836 +65936 +71623 +66150 +78736 +7893 +29226 +32275 +62313 +20557 +3827 +66235 +59749 +9750 +58632 +43850 +19331 +59296 +71594 +60792 +78575 +58312 +73155 +66094 +20819 +36047 +66481 +26380 +15994 +58954 +54262 +44376 +52830 +41448 +40583 +62372 +23165 +7566 +27348 +14664 +16828 +29134 +2807 +33748 +51640 +13946 +37884 +18909 +409 +57525 +57898 +70330 +76558 +26008 +80509 +47822 +36557 +54773 +70949 +10177 +22447 +35169 +79388 +7728 +67091 +73071 +38876 +40153 +42406 +55047 +26229 +7228 +76149 +32866 +15746 +48233 +43162 +23411 +7428 +35370 +3092 +68103 +51382 +73233 +52322 +38302 +8477 +39614 +48152 +42904 +69506 +59142 +26795 +6810 +60429 +12593 +2705 +25510 +49291 +37077 +49755 +14453 +32672 +6250 +44736 +56104 +64486 +51387 +76807 +28374 +73727 +7154 +77483 +35947 +57573 +32734 +73939 +25 +38468 +10427 +14472 +2288 +62607 +6516 +28184 +40726 +13794 +48048 +35104 +45354 +75650 +67673 +63492 +20292 +19727 +13552 +54859 +65684 +13279 +60409 +72781 +51178 +2323 +32311 +18532 +57152 +79209 +31791 +47720 +17088 +69221 +30893 +17942 +75949 +2802 +53382 +51473 +36421 +45437 +8793 +36959 +50369 +10747 +54574 +38563 +48563 +2421 +55675 +78895 +73619 +51648 +35644 +52300 +22633 +23740 +77554 +40823 +57943 +11082 +50494 +19827 +27243 +27590 +80508 +58926 +1850 +51400 +43191 +49493 +45960 +44996 +48873 +63182 +25057 +47109 +72881 +51791 +63544 +39345 +33481 +58611 +76965 +6089 +73680 +55571 +53352 +20607 +4353 +70888 +38463 +5799 +74585 +43774 +15671 +9584 +42836 +10402 +7520 +26608 +15372 +3505 +54083 +63910 +36456 +49826 +7204 +9436 +78979 +41015 +73401 +53490 +48937 +30788 +47261 +882 +43481 +55489 +34712 +53868 +55163 +21237 +31869 +42440 +44270 +7830 +40894 +62297 +541 +47987 +28211 +68820 +26391 +49492 +71119 +8472 +50392 +64177 +34777 +16867 +39728 +49658 +20527 +44067 +34833 +1557 +48892 +48064 +76637 +29626 +64822 +66010 +52492 +32606 +42129 +5109 +22492 +51032 +61584 +63171 +47305 +56148 +4524 +20452 +43757 +11256 +32133 +64729 +80011 +70526 +21561 +24573 +61567 +67318 +78330 +56629 +45618 +37788 +41102 +28445 +6238 +3813 +25434 +15057 +59448 +10142 +19397 +19176 +20988 +75549 +78649 +68016 +14687 +39394 +60190 +20322 +64137 +15404 +42964 +39250 +27035 +42125 +147 +50499 +35521 +16892 +76444 +47403 +61761 +68666 +55738 +57534 +60187 +62773 +44661 +51248 +73655 +24869 +47797 +57361 +76378 +20284 +79805 +66847 +72888 +38639 +35516 +19803 +20193 +53311 +32003 +72415 +44618 +28583 +28996 +70887 +19903 +7157 +35658 +39168 +71935 +9008 +58222 +33068 +28532 +67021 +67090 +37235 +27198 +72829 +17044 +936 +75370 +20248 +7110 +59267 +71147 +48354 +52651 +30687 +21622 +7934 +70570 +10490 +32144 +30418 +55566 +15033 +12233 +25973 +24742 +54230 +35481 +33498 +37686 +78948 +9121 +46794 +61231 +16776 +21626 +56291 +28883 +37811 +39995 +29533 +21281 +8305 +65887 +14003 +77490 +38333 +22784 +1731 +77330 +65796 +56587 +4650 +25640 +73102 +27614 +27353 +51631 +78567 +2817 +67457 +22190 +7429 +9716 +32130 +44443 +20780 +70628 +62992 +11133 +77627 +63211 +71695 +69188 +63833 +72822 +73519 +40781 +37793 +11051 +2495 +23145 +40981 +22024 +14719 +2013 +47902 +52787 +29126 +21951 +49567 +18747 +24212 +67182 +48945 +68249 +21496 +71914 +56297 +59741 +63223 +53619 +79241 +6501 +35080 +19694 +9894 +30032 +62188 +10715 +15418 +47190 +5426 +33147 +10767 +74644 +49881 +4985 +21550 +58860 +25386 +41029 +29700 +52602 +13783 +56926 +57842 +20606 +64313 +19954 +71000 +55920 +74048 +79080 +53541 +71780 +77975 +2974 +68571 +17069 +22258 +60399 +61051 +77754 +48451 +7229 +50194 +26664 +49204 +35023 +1971 +17814 +25516 +33050 +69690 +76689 +50857 +21012 +54937 +68046 +60516 +36415 +17302 +25975 +46619 +28250 +25606 +13008 +57928 +70716 +78852 +55382 +57497 +8329 +38695 +58834 +57027 +53384 +71527 +75818 +30123 +26565 +33495 +30022 +33729 +71970 +48410 +80745 +57942 +49098 +61677 +45772 +44924 +5051 +35923 +39912 +4585 +4706 +63450 +23115 +24920 +30649 +40177 +49901 +24386 +65881 +51790 +62566 +16824 +39797 +26221 +31538 +25757 +26951 +69877 +60488 +80393 +33773 +68586 +12795 +18962 +28940 +13985 +67281 +60651 +79785 +76497 +40800 +66830 +46243 +57266 +18787 +11477 +50944 +33669 +73595 +24403 +43421 +54839 +13820 +5559 +38890 +66496 +2539 +6229 +8998 +77396 +27785 +61169 +14588 +21774 +9103 +39520 +6651 +67745 +10207 +56685 +10908 +1215 +44989 +58857 +27079 +67537 +26110 +66675 +15492 +57677 +29784 +28861 +32402 +56484 +43363 +14699 +79354 +47451 +24653 +10032 +9832 +16541 +32929 +11833 +61863 +5681 +5706 +64571 +63454 +71392 +13095 +48519 +39615 +28486 +14874 +5789 +31058 +79262 +62071 +17664 +21375 +75426 +77784 +18094 +68412 +5671 +13684 +75979 +78222 +5903 +65502 +75350 +20333 +58829 +22571 +71508 +60554 +8102 +8375 +50749 +64955 +66608 +46418 +60914 +56493 +52282 +63911 +63784 +59035 +16457 +74504 +13878 +76276 +55799 +17200 +47265 +72601 +49222 +16406 +76456 +13830 +13197 +9456 +67693 +38753 +69606 +51152 +1007 +19241 +43643 +32420 +43568 +58028 +63983 +68744 +79873 +35484 +78374 +61289 +24731 +15116 +74869 +2282 +8441 +12758 +15009 +56885 +8947 +65090 +62408 +68028 +17152 +60001 +59723 +44824 +37758 +77804 +46849 +47717 +76111 +68939 +79817 +22673 +38188 +19405 +12948 +54902 +70548 +14500 +4876 +50744 +5509 +26794 +65771 +18599 +78137 +67686 +67643 +46640 +62170 +79862 +58714 +70371 +65186 +36307 +39848 +16439 +67056 +8256 +13620 +72790 +49765 +59057 +26786 +70031 +5809 +11493 +14794 +25076 +48382 +18113 +57366 +50872 +80374 +7032 +59033 +38364 +77189 +1008 +55903 +13737 +80031 +5372 +26899 +60902 +26963 +73900 +18812 +48218 +41231 +36808 +62447 +34556 +47381 +65688 +45018 +42923 +19383 +49123 +61221 +40910 +69524 +72324 +67230 +65064 +67496 +53894 +67037 +76396 +1126 +65491 +55629 +17096 +14368 +65213 +75600 +36655 +73244 +32450 +30979 +5280 +55676 +78713 +8759 +29685 +44973 +39119 +14195 +10786 +8349 +15553 +4123 +31382 +18956 +56831 +38927 +40159 +330 +3743 +23609 +23660 +65424 +73133 +26422 +20046 +75112 +58676 +57721 +12851 +66015 +25407 +840 +32107 +25433 +48311 +51659 +43518 +36646 +56572 +21695 +21024 +27860 +11645 +10133 +2414 +15463 +34053 +14361 +71766 +47639 +43206 +35744 +44294 +38154 +41121 +65774 +59060 +12888 +77530 +80717 +2217 +1778 +68612 +62534 +34127 +47156 +22474 +80337 +37056 +38173 +71602 +53297 +64345 +54625 +66990 +16186 +58858 +33833 +66517 +75994 +43115 +79073 +32705 +40940 +32890 +15413 +25143 +71613 +58316 +30798 +43961 +13452 +6248 +21964 +61217 +3362 +68797 +62765 +42541 +39544 +29854 +40415 +22900 +73402 +20060 +71271 +45952 +74571 +25397 +76386 +73805 +44524 +36016 +66079 +11638 +9322 +77930 +60890 +63693 +38107 +34170 +68554 +77142 +35403 +24309 +59062 +20678 +12545 +24621 +44031 +26991 +19468 +54857 +1802 +7184 +79122 +79929 +57275 +73060 +52585 +46937 +64038 +18040 +62520 +8777 +41047 +33492 +52469 +39575 +26009 +19995 +12098 +44570 +21153 +74506 +13147 +29312 +21894 +42675 +9478 +26325 +80096 +17095 +42778 +63954 +69085 +54843 +7371 +51696 +45396 +55354 +69550 +31481 +9011 +15988 +74999 +44599 +28579 +41397 +61406 +45079 +54830 +60835 +79409 +39013 +55112 +58786 +39515 +55797 +51556 +8104 +24745 +73884 +17998 +60691 +56900 +72082 +50882 +41586 +76671 +32350 +71775 +3347 +62168 +19860 +24406 +20973 +61075 +55270 +64406 +19442 +3666 +10648 +28600 +233 +54704 +69835 +51949 +3400 +19329 +37531 +71752 +54455 +44305 +1389 +22867 +27720 +11658 +30594 +67262 +53513 +19384 +57276 +76436 +39363 +11901 +65886 +43261 +19522 +18666 +61998 +46713 +32306 +48819 +25240 +14780 +64542 +77525 +42465 +6476 +30402 +45229 +14673 +63692 +23822 +5016 +67691 +65714 +37478 +64536 +64697 +27835 +65811 +22553 +28822 +11692 +17113 +52595 +41423 +27386 +62518 +32000 +4761 +7589 +61421 +10482 +33135 +33816 +9784 +60679 +46008 +76437 +74710 +48657 +22751 +47140 +5689 +69121 +36537 +41514 +36779 +76098 +48077 +66614 +79066 +26155 +33092 +36817 +25792 +40257 +54345 +75566 +2982 +50139 +47869 +17529 +46187 +63891 +63880 +44181 +80668 +21969 +40879 +57463 +67671 +4769 +44725 +37930 +9925 +70159 +36822 +54960 +52031 +5972 +56997 +56269 +8470 +47290 +68321 +72746 +45206 +36713 +76950 +60170 +48448 +29500 +76607 +48266 +58326 +13805 +58560 +43544 +78145 +70167 +41892 +41249 +10890 +68506 +33885 +69544 +54395 +52998 +73958 +42927 +75953 +192 +35188 +58187 +80455 +26633 +19890 +68845 +59728 +45246 +1237 +39757 +2134 +48639 +73505 +12265 +24569 +12998 +28125 +11060 +18146 +76644 +41242 +63854 +16542 +59857 +39407 +47498 +60448 +64270 +33503 +21806 +70270 +42168 +45558 +44797 +67532 +79121 +16890 +28020 +47542 +14983 +65341 +57300 +68621 +59298 +58428 +48111 +12168 +30335 +76765 +73558 +21471 +35687 +65109 +17205 +67173 +1072 +57013 +69739 +38659 +7440 +18934 +22469 +63018 +3941 +8957 +70070 +44842 +41324 +45522 +51053 +31857 +43720 +1342 +30748 +59211 +21929 +41920 +9111 +33792 +3580 +26532 +34781 +14207 +62724 +65199 +48178 +51772 +76531 +57704 +77040 +27052 +73258 +29773 +8363 +46203 +65432 +8413 +36171 +17414 +35502 +8120 +23337 +50684 +20920 +22977 +79193 +42446 +38448 +14856 +5087 +40812 +60986 +32088 +451 +48267 +48018 +26521 +57146 +26819 +13723 +63668 +13305 +7808 +78928 +42580 +38307 +76068 +2650 +26822 +26197 +10714 +32287 +1606 +33018 +12329 +65967 +40422 +13170 +29111 +37021 +77438 +10131 +22038 +24900 +68970 +1469 +67368 +44449 +31511 +28988 +14478 +26873 +19354 +54847 +3792 +20146 +3825 +32563 +54520 +32498 +940 +47641 +47242 +34347 +62870 +16442 +65406 +37773 +33103 +25195 +50122 +10443 +7679 +9620 +4024 +18388 +22496 +28691 +10203 +26515 +34711 +41645 +69103 +51060 +68137 +65265 +19690 +53340 +18307 +34389 +6628 +18746 +32621 +2079 +17661 +60500 +51194 +36395 +74171 +52413 +71998 +28038 +45169 +72030 +64590 +79822 +23829 +13235 +47515 +51211 +15131 +33739 +25602 +43959 +51700 +41564 +27994 +31405 +49778 +60966 +30608 +49583 +31658 +21279 +26132 +29430 +46265 +45429 +15791 +79224 +68540 +4792 +4605 +41109 +76525 +20703 +76707 +16299 +43623 +72614 +55699 +44468 +74629 +54889 +15053 +23187 +53399 +67363 +76665 +22454 +1918 +16915 +6279 +32325 +73742 +24974 +51660 +40815 +23619 +44193 +66797 +18806 +77437 +80744 +32618 +24634 +49972 +2389 +44198 +66925 +67951 +19231 +14596 +8438 +62707 +13674 +33186 +26431 +48290 +27443 +46096 +44682 +5619 +13858 +65430 +77651 +25563 +5316 +15037 +75757 +10463 +68748 +70028 +12722 +12777 +19122 +76574 +6101 +57110 +30643 +71408 +21606 +79731 +78218 +70393 +70274 +25009 +71830 +32658 +62821 +20228 +48456 +30260 +23034 +56624 +57299 +32221 +36747 +79060 +9682 +61014 +68761 +4017 +76900 +67473 +5914 +12864 +23245 +14188 +67359 +39136 +67319 +59306 +62667 +55502 +33683 +15022 +27448 +469 +44951 +35014 +47941 +43856 +44859 +44733 +41883 +23212 +37162 +21242 +33824 +22960 +39284 +67297 +75694 +77749 +64931 +3354 +23650 +60649 +3786 +76691 +20880 +17010 +50880 +12668 +52962 +31297 +29322 +78247 +40428 +31586 +67878 +69496 +30894 +61461 +66891 +24944 +48080 +15271 +14173 +77797 +71480 +23432 +20835 +714 +69662 +7761 +4910 +74713 +25542 +11777 +21921 +20624 +73204 +55020 +17605 +39419 +51498 +76222 +66019 +68513 +8668 +17417 +51995 +31929 +22988 +79236 +32611 +70045 +77046 +34470 +6717 +17209 +34378 +23775 +3407 +4529 +36597 +29351 +16853 +79287 +19317 +43053 +33169 +47757 +63849 +13226 +67835 +11501 +455 +6859 +8500 +75555 +30268 +22374 +14734 +61465 +5913 +48001 +33512 +44676 +14832 +13555 +46364 +71295 +61280 +13481 +24886 +23642 +21492 +13193 +56108 +30071 +23696 +67196 +33090 +48710 +7019 +64503 +57172 +39214 +46514 +59790 +67706 +7330 +48331 +66261 +5417 +52114 +54550 +78909 +942 +73521 +1950 +73961 +45810 +77727 +55394 +55250 +73685 +10112 +35214 +2536 +47769 +3970 +67479 +38436 +29316 +20393 +67934 +45699 +17985 +69812 +26736 +64519 +49835 +4513 +56132 +54941 +47635 +46023 +36005 +25213 +13131 +62858 +45662 +5532 +26912 +37364 +28388 +43076 +78630 +70495 +39754 +24663 +68608 +68342 +9299 +308 +6119 +42429 +71364 +28334 +31259 +71572 +17702 +66447 +19833 +29412 +35013 +51990 +61691 +7239 +74200 +39016 +76778 +66453 +6021 +31199 +21781 +11989 +49157 +59615 +62819 +23519 +79030 +47422 +43020 +66632 +11181 +55621 +55010 +17742 +27941 +1442 +25626 +4801 +42637 +71969 +96 +19670 +46200 +65336 +17094 +36827 +53148 +36272 +49758 +36809 +46900 +47734 +4566 +20410 +72528 +17632 +52591 +26833 +7051 +19848 +66092 +49418 +73677 +31814 +12528 +69893 +21701 +66455 +11032 +47147 +33126 +3785 +32913 +24793 +80576 +28506 +28158 +78419 +72494 +24306 +9292 +8454 +22115 +14106 +71290 +45313 +2025 +8060 +54314 +16834 +51914 +71987 +23251 +78134 +7489 +70108 +33281 +54977 +75270 +58652 +74432 +428 +44710 +32261 +6442 +4252 +44435 +46540 +6458 +19318 +48812 +15052 +43606 +69600 +15720 +8313 +67820 +51959 +44421 +63024 +72649 +70417 +32818 +22699 +69545 +21000 +41193 +24160 +39273 +62109 +31871 +6681 +55474 +19041 +34687 +29321 +64219 +44070 +56082 +43041 +70720 +51349 +65193 +62851 +11117 +45453 +26149 +50801 +735 +28149 +5411 +46031 +26691 +32328 +46690 +29147 +24334 +24090 +56653 +79140 +51126 +67675 +38629 +3868 +37868 +36356 +19916 +60295 +63967 +58905 +78961 +46209 +59916 +9422 +76191 +65932 +31356 +58578 +76074 +5551 +31435 +74950 +1001 +50395 +59865 +35782 +22156 +13389 +61833 +36336 +50231 +46125 +40582 +58556 +24227 +55166 +27804 +31066 +9058 +60528 +42215 +64453 +29496 +34959 +70476 +79448 +59862 +36354 +21131 +72404 +60770 +58214 +11056 +76675 +36675 +72031 +11520 +72330 +1891 +54264 +76846 +47081 +79725 +30134 +32231 +68667 +9206 +60886 +10191 +72570 +49804 +19325 +3621 +55541 +60341 +38160 +79440 +78114 +36379 +65083 +14480 +36944 +64076 +77689 +41014 +12766 +44240 +33046 +59251 +64926 +52460 +57007 +53716 +38799 +29835 +64470 +30526 +23748 +49265 +8037 +68707 +56780 +42737 +59164 +75962 +32093 +47012 +72044 +1687 +45455 +32430 +28128 +51339 +478 +30934 +11981 +18091 +55086 +58594 +39982 +36398 +74463 +3326 +30136 +4644 +79633 +75623 +49680 +70876 +9388 +28648 +20056 +47953 +40993 +7590 +57533 +140 +61881 +67024 +39474 +37859 +62414 +45292 +25136 +14406 +22091 +42663 +52489 +30820 +48097 +69495 +27832 +65707 +68152 +74250 +507 +10898 +1795 +4132 +5599 +36065 +76171 +58259 +56864 +36781 +67775 +66763 +20307 +38635 +49981 +6679 +59570 +20105 +63390 +38719 +37689 +47369 +10588 +1700 +15124 +17199 +71153 +52001 +35990 +40568 +41308 +11338 +9338 +15218 +19005 +39445 +49983 +72326 +54758 +16093 +27734 +47731 +7932 +14902 +4481 +1186 +25686 +46613 +9023 +35316 +6820 +16510 +39088 +13218 +33386 +42137 +23191 +26118 +32405 +70947 +51504 +47786 +18067 +43400 +64840 +19829 +57705 +38779 +46406 +52473 +46919 +3776 +77192 +45614 +25690 +29127 +28252 +48235 +47436 +3131 +49402 +63701 +14179 +46567 +70261 +53808 +20772 +8308 +73993 +2171 +44503 +6816 +55138 +54863 +39454 +46065 +36780 +10479 +79661 +41583 +1815 +52147 +43275 +40922 +7001 +25558 +43285 +53126 +75502 +76020 +71486 +66295 +52850 +55622 +70854 +11506 +37966 +12263 +79231 +75910 +41086 +29798 +59779 +76535 +71668 +53786 +32892 +46995 +48609 +48202 +20848 +32728 +1364 +50956 +51861 +19762 +43523 +52613 +15010 +55927 +52578 +53051 +42076 +41556 +28331 +55504 +22351 +42451 +37323 +25402 +64598 +65579 +27317 +80048 +3734 +19048 +26903 +72923 +42008 +15844 +50464 +51124 +70907 +34174 +61222 +15512 +25087 +40972 +52841 +63646 +66297 +48461 +16558 +41389 +2366 +18406 +20481 +53799 +42235 +17037 +74196 +79376 +51234 +73157 +43367 +50644 +73397 +8414 +44155 +29696 +20303 +4990 +17631 +53138 +77653 +73914 +18659 +15084 +52250 +64902 +59345 +72369 +79154 +27651 +36991 +12043 +76292 +51973 +72837 +29222 +19896 +14977 +5579 +48997 +38175 +70701 +923 +35643 +19196 +31918 +33369 +44519 +57304 +49069 +37128 +19597 +39529 +50176 +61938 +5387 +51427 +57397 +75538 +53403 +31268 +14322 +11697 +80001 +48369 +60096 +7023 +23815 +65135 +15662 +20467 +55585 +61011 +18362 +47091 +63062 +30564 +65651 +36693 +62176 +63561 +67840 +53859 +80219 +824 +53821 +70289 +74255 +4920 +2033 +63438 +46524 +56430 +31336 +30386 +12547 +56453 +78141 +57293 +46223 +1881 +28814 +40697 +40114 +13680 +55562 +33275 +53601 +16118 +65665 +64056 +64804 +57379 +19162 +65350 +44908 +69526 +45078 +51200 +32589 +53710 +21977 +21831 +62292 +67973 +23973 +14759 +35332 +31622 +17930 +64209 +28633 +70182 +17674 +51407 +15258 +69263 +24465 +41905 +23278 +66301 +21247 +44613 +75764 +76881 +29177 +3424 +7705 +24581 +3396 +7550 +788 +3874 +11106 +56224 +54618 +46959 +54538 +68460 +26847 +53713 +70198 +16535 +74066 +75864 +12304 +77141 +36623 +18804 +25992 +9958 +12326 +34310 +48112 +6300 +63826 +40417 +71684 +64162 +28214 +62363 +21790 +11071 +16321 +38969 +33842 +9806 +67582 +18682 +43725 +39566 +41854 +28194 +10802 +30763 +1816 +5702 +44257 +77694 +68097 +15858 +8489 +45338 +56117 +14300 +76189 +9233 +21628 +49216 +61039 +42830 +22679 +59907 +43067 +44043 +57115 +57588 +69808 +77673 +51465 +44392 +75046 +30612 +43649 +11129 +61447 +2716 +44372 +70234 +61541 +59929 +63767 +70120 +25106 +65519 +77063 +28767 +51537 +22421 +20769 +55790 +33236 +37225 +35806 +66518 +32917 +40411 +63654 +29995 +56040 +43119 +3126 +48465 +3061 +10011 +48474 +68810 +16665 +50901 +39659 +37674 +54742 +45620 +58845 +38073 +23864 +47466 +59368 +9173 +58154 +7742 +4781 +22282 +75820 +25965 +80495 +18870 +40442 +14641 +71215 +49450 +66956 +63375 +54328 +21722 +33451 +13370 +66197 +5097 +62632 +75276 +20438 +70944 +7260 +7890 +17813 +63384 +1326 +19341 +57997 +18204 +78506 +29434 +4491 +19184 +71357 +40850 +4225 +2648 +10097 +48187 +62182 +48324 +58918 +2703 +68551 +27066 +6676 +77277 +80212 +24043 +62239 +80759 +4179 +11231 +51720 +7668 +6140 +29117 +43455 +6370 +227 +58241 +19839 +78524 +46201 +51802 +60506 +7732 +582 +52130 +39017 +10809 +49949 +38872 +7018 +62485 +20026 +62069 +65841 +22913 +61885 +39609 +20766 +23975 +59042 +31087 +44632 +64185 +53467 +13427 +170 +40530 +29991 +38142 +64936 +71849 +76961 +16831 +24166 +52351 +72814 +29870 +21010 +23302 +31280 +61293 +20419 +61737 +51564 +13341 +60233 +59780 +68989 +3833 +27221 +31180 +60260 +6783 +55040 +80566 +29320 +80224 +32488 +14307 +3850 +78551 +60669 +45870 +79542 +66358 +10814 +18624 +41621 +54680 +11854 +79284 +13034 +73145 +58475 +6355 +39298 +18268 +50019 +4806 +15609 +3342 +41767 +35263 +54022 +62427 +27811 +58457 +27427 +16205 +26484 +39727 +68991 +25129 +27140 +75567 +51191 +71896 +73970 +72386 +6325 +61358 +6613 +42540 +48900 +59806 +44760 +66894 +67356 +41074 +9730 +43050 +30472 +48832 +37945 +52062 +54891 +4946 +4511 +1853 +70541 +44346 +1942 +67737 +52645 +58667 +34422 +12814 +61229 +20923 +63962 +31540 +60889 +18608 +11759 +28013 +2777 +32166 +47468 +79604 +8564 +54694 +57750 +31517 +43699 +78610 +20360 +15913 +25141 +48701 +37151 +31441 +30322 +66624 +2401 +36571 +57270 +40955 +28874 +12750 +71546 +11800 +33297 +61234 +16189 +25421 +24882 +68309 +60623 +46550 +24989 +22901 +12994 +9133 +32334 +62596 +62943 +33543 +46870 +5968 +3987 +47746 +2913 +47404 +5166 +15872 +37781 +69154 +35266 +8457 +78006 +9939 +26494 +75326 +21633 +8651 +60898 +3158 +25334 +34727 +20475 +515 +32651 +59593 +62158 +3996 +29436 +79276 +27667 +39491 +1297 +71503 +2744 +34415 +34682 +8898 +69390 +23982 +55070 +14741 +24149 +58990 +37274 +27689 +20623 +65700 +12872 +10009 +72558 +49800 +46441 +4072 +68791 +28104 +10713 +9552 +31783 +26233 +47918 +40791 +76772 +68531 +10891 +40983 +39816 +69556 +29576 +14838 +2219 +18281 +65297 +36929 +45332 +45418 +58763 +13372 +70707 +57416 +61153 +14116 +58100 +53750 +24910 +42833 +70054 +28764 +15277 +50025 +7061 +80560 +75368 +31845 +44719 +73251 +72504 +52332 +37206 +8626 +70537 +42524 +44386 +68683 +41600 +67035 +14115 +27341 +26797 +37039 +70968 +23647 +76026 +78314 +49323 +21893 +37347 +42418 +17791 +40500 +9675 +9694 +44393 +11495 +4666 +10887 +29972 +15415 +43588 +10176 +65744 +31093 +14098 +25333 +31550 +26906 +49470 +8652 +35655 +44817 +6709 +21651 +28196 +20775 +77827 +76660 +63513 +61224 +17498 +8281 +63070 +57224 +79413 +18333 +66599 +15543 +61296 +45921 +30483 +31867 +7697 +12474 +1185 +24851 +10543 +77127 +55785 +13507 +77394 +56593 +2120 +47571 +31545 +2871 +72679 +65352 +39774 +27726 +38515 +79183 +43378 +63240 +1422 +43849 +34646 +51600 +62987 +36029 +63994 +36227 +14897 +20950 +51241 +69917 +58887 +9076 +70996 +23789 +71494 +31741 +76897 +60311 +72425 +22753 +17901 +11359 +5013 +64613 +59313 +31241 +41557 +47350 +77791 +21329 +21169 +78994 +7420 +66006 +74230 +1318 +10526 +42371 +54439 +46678 +75295 +27648 +31987 +21076 +60117 +24210 +35326 +57644 +77246 +62456 +76266 +13068 +43655 +40691 +5060 +5136 +3073 +68844 +60504 +14775 +68605 +67003 +56937 +31201 +68723 +10575 +20019 +21094 +49047 +42501 +11628 +71719 +9325 +37496 +31386 +40044 +19208 +25507 +72472 +67042 +33641 +54438 +70771 +36643 +29233 +27821 +22586 +62620 +77430 +74353 +41875 +70869 +68696 +39498 +52512 +39152 +79056 +28958 +18153 +36930 +43782 +38661 +52612 +74923 +60513 +63722 +9167 +41063 +80264 +48595 +34619 +40194 +1109 +8495 +44014 +21454 +36319 +44856 +18743 +31393 +22823 +1618 +35937 +60412 +9571 +25217 +15554 +72127 +46366 +45705 +19570 +22870 +60215 +6081 +5342 +38573 +14847 +7276 +9248 +47362 +63529 +1153 +79682 +28495 +32262 +22266 +20543 +62882 +75119 +49650 +16965 +5537 +25103 +20879 +28808 +68687 +38844 +36310 +1428 +72453 +80543 +27694 +43883 +37643 +58096 +43929 +23708 +12856 +10211 +20643 +14095 +21250 +76495 +40653 +47534 +33756 +16188 +33694 +28326 +34903 +7317 +50188 +73553 +14651 +4968 +80105 +40970 +6059 +68246 +56165 +26669 +64972 +41439 +52789 +26245 +52070 +27747 +64214 +47488 +63852 +43087 +75967 +39714 +25687 +41370 +26088 +3946 +27931 +59629 +57579 +39775 +55745 +76328 +37783 +11546 +24467 +10815 +72765 +66698 +77615 +9228 +16166 +64912 +25389 +41505 +47676 +53565 +26698 +1412 +11240 +4148 +73987 +44961 +1616 +80561 +22948 +78896 +5162 +58706 +4700 +20715 +34750 +65002 +21222 +23506 +67395 +5652 +50851 +10398 +60378 +39784 +32477 +25902 +75666 +5731 +60438 +65500 +57084 +14674 +3440 +28823 +51542 +8538 +44452 +21754 +17098 +74217 +7036 +63466 +48954 +61205 +58440 +19321 +55049 +52686 +48269 +14785 +39528 +20103 +38694 +7623 +69190 +60244 +52425 +26970 +32691 +54781 +16030 +54944 +60240 +55160 +18296 +9737 +33531 +73212 +28024 +80295 +63363 +13876 +80007 +25844 +51819 +8151 +28197 +80144 +35893 +33691 +49219 +76094 +79603 +66642 +78971 +24437 +57981 +62055 +68516 +5928 +19731 +10044 +44248 +12486 +80248 +61292 +50864 +7391 +20654 +44907 +54877 +33810 +61223 +53113 +14151 +53785 +69752 +41949 +43632 +67505 +28023 +78153 +67407 +24919 +77913 +53846 +19602 +64515 +4865 +29615 +61920 +13658 +60443 +14389 +9258 +70415 +15855 +49474 +60991 +64976 +60395 +80451 +26232 +38095 +64561 +78496 +13028 +31983 +37192 +25562 +29102 +32142 +8547 +1121 +8431 +52671 +78570 +41287 +67374 +64122 +70111 +65773 +19635 +30872 +42437 +59054 +43305 +78579 +27476 +9479 +66997 +71372 +69832 +57444 +22450 +51488 +63114 +27075 +54726 +6565 +35622 +25954 +55752 +75180 +67771 +25830 +45735 +45374 +78876 +63038 +57934 +77643 +6576 +16451 +16925 +55807 +21470 +21086 +56377 +2053 +40220 +13301 +26234 +79750 +38196 +79637 +1721 +52249 +16988 +9063 +57370 +67728 +35623 +68042 +60343 +59425 +39902 +66351 +48476 +47062 +72325 +20318 +38072 +29815 +66199 +77355 +80177 +74904 +33743 +76619 +48643 +56678 +20444 +36694 +28949 +19952 +43235 +58130 +55109 +36892 +61408 +36465 +80752 +56961 +64299 +44886 +61773 +4571 +4522 +55803 +37662 +32951 +7753 +15569 +55968 +71839 +1668 +7207 +51215 +60165 +39759 +15405 +11985 +4498 +12383 +14486 +60297 +9250 +56324 +24126 +29274 +78635 +12399 +69261 +69508 +53249 +51663 +20230 +79227 +25298 +12863 +73412 +42882 +50250 +68713 +19198 +12812 +48394 +46192 +15696 +63898 +62988 +15635 +17185 +28543 +15739 +57524 +30207 +17346 +72646 +14248 +72475 +46094 +70164 +28039 +43452 +63918 +45404 +43415 +6233 +20396 +66861 +33072 +78260 +22551 +35103 +59642 +67821 +11878 +13537 +13898 +54437 +46392 +62045 +61411 +58294 +33120 +23576 +55531 +30555 +60700 +42340 +37382 +23836 +37369 +12893 +35345 +57091 +80373 +79191 +63415 +29871 +39826 +32782 +20677 +17467 +50237 +24702 +21098 +75194 +54732 +5898 +17399 +49376 +62407 +14175 +67709 +27205 +67612 +3553 +62299 +22915 +24238 +65633 +8738 +72823 +65806 +75679 +55543 +65521 +38141 +46091 +33804 +36184 +64292 +49236 +1067 +1108 +41149 +49690 +41137 +68526 +76314 +12122 +50958 +64939 +46885 +62606 +68078 +61361 +37188 +56549 +3809 +32023 +80742 +5480 +59443 +66500 +5995 +42735 +61064 +40138 +54754 +19502 +76924 +74747 +50115 +35915 +15878 +36270 +11525 +72572 +55955 +45645 +68936 +30341 +64855 +49316 +3571 +50268 +17996 +10963 +22602 +80360 +64365 +45162 +67169 +30908 +73415 +4599 +10823 +39553 +5769 +53281 +71741 +53368 +57856 +28209 +47379 +56167 +31720 +51937 +9851 +71600 +4591 +58754 +74860 +44007 +74220 +55580 +63081 +30688 +77842 +52821 +72378 +18657 +49046 +11010 +49559 +14181 +55668 +6686 +36554 +22067 +69317 +70687 +74667 +7436 +58979 +77798 +30624 +2290 +18449 +40075 +63435 +20910 +72064 +30295 +36437 +13061 +52497 +29620 +20792 +5663 +3423 +49607 +55659 +17452 +25168 +70602 +30486 +19784 +44036 +30940 +40699 +66271 +32887 +78821 +79083 +53277 +16426 +8630 +9081 +18287 +77787 +18080 +60918 +52543 +65353 +13978 +65703 +67278 +49522 +55842 +43445 +55701 +10425 +6063 +68928 +70213 +63615 +80181 +43559 +11890 +10768 +18539 +65609 +62532 +72347 +7901 +11865 +30481 +23846 +25587 +67661 +64447 +75195 +3351 +70882 +20755 +14350 +28320 +77719 +43904 +4234 +9987 +12101 +32203 +13994 +4651 +33249 +21799 +47651 +19328 +66600 +53456 +20575 +35972 +42638 +70485 +71135 +22295 +46825 +51443 +56736 +68840 +24041 +10757 +78992 +17086 +7992 +5935 +77407 +50213 +38387 +10158 +61415 +32918 +16007 +38211 +13609 +72112 +48718 +40558 +62267 +33912 +18361 +59218 +35683 +44518 +62801 +27613 +35909 +49353 +31030 +3261 +35095 +76463 +41222 +38367 +53789 +33927 +45093 +39014 +58297 +77398 +32434 +70077 +27233 +45074 +5232 +77670 +7835 +60630 +50777 +54715 +51568 +47745 +70406 +75060 +56103 +44672 +24951 +45434 +15711 +73507 +304 +32902 +18740 +10896 +56923 +36173 +21685 +55447 +22892 +70903 +521 +16918 +70218 +3107 +7587 +35412 +17318 +37613 +67837 +55344 +30338 +46946 +68080 +48383 +30714 +22876 +5967 +20542 +75665 +20348 +39404 +676 +43601 +58495 +36617 +36015 +25789 +52793 +328 +63500 +50674 +32124 +77163 +36499 +51755 +11889 +6924 +28632 +16594 +54058 +1960 +61422 +33185 +78697 +43555 +51820 +41914 +11000 +36685 +37609 +702 +2789 +20223 +39899 +73546 +8950 +20843 +44894 +62304 +9469 +47633 +24201 +10182 +27466 +43998 +16434 +16563 +78756 +61021 +8736 +17362 +33157 +9955 +17847 +70291 +5 +70589 +54450 +43431 +77368 +53402 +37480 +26268 +23964 +30016 +6274 +58062 +69931 +41739 +39746 +38792 +55238 +794 +74005 +11533 +56522 +73413 +335 +20723 +32910 +39706 +64186 +52702 +64909 +35699 +14519 +8859 +21277 +19846 +56918 +31530 +7895 +52306 +75058 +30368 +54199 +25381 +77276 +63795 +35700 +50893 +66403 +3592 +76997 +52752 +78181 +55281 +54349 +26937 +34314 +23952 +26936 +43863 +14925 +7774 +70265 +62519 +50786 +15238 +61355 +42496 +27197 +43207 +23817 +80110 +8718 +29419 +23919 +64350 +44260 +66880 +23734 +18893 +20443 +33976 +69249 +78504 +51757 +1284 +20202 +17793 +19472 +38637 +1000 +58267 +20507 +69516 +65177 +22372 +55988 +70773 +69724 +58490 +38116 +15138 +64405 +79285 +26781 +14161 +46058 +19283 +55882 +9718 +27188 +57714 +21991 +70453 +70753 +19126 +49060 +5991 +64087 +15197 +64200 +59557 +12425 +74974 +20428 +75616 +4965 +41953 +20349 +65494 +48786 +10013 +53661 +75340 +13558 +13647 +42093 +44708 +61475 +42061 +79931 +74044 +53887 +11773 +75633 +36632 +77773 +48420 +58668 +65418 +62116 +1219 +55279 +50967 +49294 +39650 +10253 +58925 +58371 +73855 +30161 +33558 +72444 +31821 +38325 +2362 +48600 +27292 +5227 +9881 +71229 +60752 +7309 +11016 +78405 +55411 +52990 +76904 +66877 +73625 +75377 +17843 +4446 +6735 +62243 +80313 +25780 +70305 +28203 +19407 +20510 +51052 +62600 +27620 +78748 +49258 +1862 +53886 +40338 +5736 +18907 +77499 +71368 +67751 +19879 +73894 +58476 +27769 +64856 +6055 +45616 +21923 +5475 +2459 +6944 +41138 +53512 +45676 +22334 +22002 +34233 +59376 +28858 +67135 +61832 +78375 +44131 +19489 +21860 +71349 +37069 +57959 +77159 +42272 +71630 +56558 +71240 +51551 +36738 +69749 +79832 +16736 +80293 +24140 +58081 +51794 +66438 +20627 +9212 +23261 +70694 +33401 +48498 +5024 +28089 +48343 +9863 +16477 +65447 +23979 +1757 +63679 +26181 +624 +46551 +10805 +45887 +8692 +47200 +74723 +21783 +79688 +61120 +22738 +68881 +40944 +13171 +28744 +38724 +45782 +59600 +63149 +29273 +28412 +63757 +61255 +44571 +19508 +35086 +65846 +78923 +10456 +31961 +75872 +78832 +44114 +61044 +21296 +72315 +22451 +70779 +45181 +18795 +5324 +47803 +23830 +28069 +76339 +72817 +5738 +79696 +43784 +72905 +16943 +13920 +56246 +35315 +49921 +57518 +54909 +26959 +15559 +78590 +17704 +32522 +14996 +23444 +51833 +6150 +50815 +71474 +25140 +26588 +13964 +24207 +69029 +52986 +34569 +30721 +78739 +63518 +48403 +39743 +77470 +48120 +69842 +45605 +29083 +34813 +37981 +44057 +64356 +48868 +5608 +44040 +69788 +19992 +53391 +37924 +46074 +14731 +45461 +53132 +35347 +20082 +43250 +545 +7063 +36904 +46928 +69793 +41519 +9484 +31864 +3945 +58471 +28961 +27160 +29183 +78241 +15729 +68150 +75537 +18823 +20240 +36735 +48084 +75204 +12491 +14864 +66839 +22367 +38892 +56534 +65810 +53583 +76248 +25781 +53212 +22108 +265 +80080 +28718 +45204 +8323 +22803 +43970 +290 +10818 +69000 +50382 +5676 +52818 +33944 +13691 +39824 +20029 +53360 +35151 +52142 +36762 +51253 +80010 +763 +45660 +72798 +49841 +76338 +34337 +365 +58357 +16338 +12026 +8775 +56271 +21581 +11482 +49372 +48998 +56368 +3860 +46422 +21040 +26772 +28690 +6624 +76943 +61852 +52794 +49686 +5034 +17349 +30706 +3010 +25696 +30293 +51001 +62374 +64407 +59826 +67453 +14921 +66207 +1057 +61716 +33041 +69291 +24443 +29239 +64528 +12084 +29565 +80073 +29944 +19481 +11155 +75283 +70268 +24111 +16192 +36366 +74406 +25069 +26160 +57658 +26339 +11930 +56196 +79607 +64283 +63115 +79068 +43988 +16069 +12033 +72992 +57496 +7660 +32808 +67649 +67237 +12683 +49903 +19837 +14341 +27242 +60370 +77729 +32578 +71783 +3457 +76876 +44184 +21180 +37036 +52333 +9344 +16505 +10847 +57660 +49750 +32794 +57939 +39460 +13595 +16746 +47762 +22885 +42334 +42479 +50713 +7624 +71924 +40064 +18341 +17168 +8022 +44295 +73938 +33647 +2257 +25966 +44978 +69988 +7783 +57654 +4447 +69709 +54888 +40998 +56491 +39540 +69136 +79703 +62035 +8922 +20991 +2233 +38926 +24458 +45762 +23888 +50925 +61655 +48614 +68139 +71447 +45248 +56637 +16975 +23063 +8377 +53919 +51391 +28798 +29472 +40906 +50646 +63489 +16933 +13097 +53845 +45159 +62703 +72165 +32193 +29897 +37987 +57386 +28425 +56968 +41528 +43314 +51307 +75651 +27958 +32056 +39649 +13937 +57953 +30183 +8043 +9009 +79850 +14764 +45276 +74927 +38596 +80690 +11948 +973 +59885 +48722 +22061 +8785 +35696 +1456 +54033 +3414 +35630 +33130 +48970 +12929 +3569 +12406 +3379 +66585 +44351 +58155 +27768 +74620 +58264 +67506 +73745 +8772 +62717 +9972 +43260 +79670 +73188 +19095 +25093 +75007 +37150 +36322 +47871 +22412 +55050 +58141 +50887 +36671 +57844 +43853 +6137 +7107 +34887 +48276 +44274 +50664 +60188 +24698 +79940 +45157 +2707 +64065 +44268 +40747 +25429 +56262 +559 +80050 +62756 +48818 +34323 +61704 +67961 +62307 +9733 +11779 +3678 +5023 +25969 +47433 +41793 +18071 +22644 +69966 +71720 +79783 +16574 +80006 +65865 +37264 +21565 +13421 +27711 +70675 +30122 +45577 +32410 +27218 +73724 +46469 +2179 +77295 +47982 +66000 +44893 +4981 +55208 +10878 +46004 +47126 +21567 +48516 +17178 +79759 +19181 +11580 +58722 +57169 +48853 +69095 +34963 +38006 +60089 +4269 +72463 +54100 +29333 +22392 +76465 +41091 +55301 +43680 +40901 +2129 +46155 +56673 +26620 +79994 +55346 +14784 +78473 +29603 +25235 +14957 +52374 +33900 +74972 +65591 +50543 +13440 +43558 +9564 +41080 +74420 +516 +73722 +49954 +70521 +4867 +54222 +55561 +69851 +24213 +58358 +27602 +57310 +41072 +31554 +30025 +1561 +48464 +28653 +17816 +4670 +40300 +25826 +8915 +56277 +71302 +21959 +4220 +11242 +39044 +10171 +35895 +79690 +22300 +78219 +10612 +2121 +20721 +70673 +80277 +26281 +55938 +28220 +55810 +12374 +66639 +51828 +79003 +68943 +65089 +55995 +79439 +73544 +32863 +37224 +4418 +11918 +45869 +38322 +10007 +42266 +75184 +405 +64636 +651 +41186 +36034 +6336 +61990 +33198 +51437 +58960 +40721 +46134 +65872 +79854 +53253 +45923 +70669 +20801 +2865 +37861 +28242 +4997 +42820 +21082 +22422 +37886 +62471 +80755 +53865 +71626 +9865 +38701 +67149 +27403 +74924 +1626 +75657 +11564 +70592 +69765 +52968 +73380 +4445 +20933 +11377 +43141 +76546 +10212 +21445 +22359 +67587 +62209 +3439 +71624 +3307 +71444 +11503 +61319 +28357 +53752 +71890 +1675 +41670 +65790 +55953 +27681 +57499 +39719 +78306 +78526 +2183 +4552 +57958 +2970 +25317 +33588 +891 +63711 +33172 +30809 +8121 +64806 +77043 +32384 +50032 +73708 +65948 +12282 +1926 +28541 +42895 +50400 +23860 +75349 +15048 +51436 +28613 +58669 +41931 +29592 +48083 +4332 +14918 +54880 +9611 +54182 +59674 +28 +48131 +10836 +9669 +22711 +60927 +30727 +56908 +26938 +76208 +33747 +29661 +12542 +71910 +17458 +9895 +50769 +23105 +34183 +72220 +75138 +23321 +18734 +63585 +16310 +3089 +19550 +67233 +52097 +73852 +31116 +74045 +11610 +69027 +74224 +66081 +26390 +26267 +57776 +73036 +60325 +16810 +68865 +23142 +65764 +27201 +49399 +79564 +65215 +13884 +42178 +34586 +74908 +64672 +75824 +4200 +79717 +26568 +52255 +70474 +14981 +76398 +46010 +73617 +45280 +35626 +59258 +50796 +60234 +73372 +12641 +77982 +30978 +67010 +79816 +36001 +7646 +31486 +15174 +34567 +79198 +63340 +30431 +33091 +30578 +6641 +63261 +37474 +42589 +53288 +60282 +46189 +19498 +15006 +29473 +43082 +29369 +38392 +2135 +24228 +31576 +55205 +14614 +61437 +50051 +17177 +41897 +63673 +62938 +43603 +48045 +134 +31991 +2584 +77858 +2094 +8824 +39907 +55888 +59178 +61126 +34252 +70097 +61248 +31158 +72092 +45480 +73189 +51476 +73909 +19084 +34499 +11118 +56640 +5520 +36428 +35005 +68330 +8837 +39058 +24650 +8877 +3659 +75954 +38478 +934 +12341 +76852 +27553 +34955 +5190 +46920 +1354 +68422 +53036 +30173 +1202 +74311 +9655 +29516 +70056 +18264 +32601 +23185 +36931 +66911 +34222 +65178 +32717 +74956 +38388 +30646 +17755 +4156 +4542 +16493 +56539 +32239 +16491 +9095 +79614 +72303 +49314 +20710 +47018 +23631 +10679 +57342 +41954 +59086 +29153 +7183 +7504 +11130 +27158 +71509 +43688 +78011 +33544 +33657 +57691 +63049 +55552 +64443 +27801 +68161 +60423 +58086 +72655 +11971 +7464 +77007 +45131 +70736 +2793 +29480 +61233 +61297 +62458 +78287 +13907 +8731 +47173 +53540 +12090 +32316 +65171 +39551 +62883 +13310 +48926 +35804 +47370 +57240 +19947 +16253 +59419 +30520 +55468 +68890 +1198 +46973 +77268 +63981 +3279 +16337 +16753 +78491 +70871 +19758 +1418 +39820 +75315 +14002 +67 +9579 +44111 +72261 +43903 +8836 +40753 +51323 +46558 +35859 +43179 +62913 +49636 +32920 +23847 +35256 +41468 +42955 +65778 +28293 +50984 +70529 +24518 +79592 +57501 +53708 +5219 +1665 +10723 +51548 +6782 +38862 +54445 +4775 +35868 +14621 +38193 +19663 +67684 +8545 +77572 +70269 +62193 +77970 +28781 +14268 +36364 +44675 +72671 +14 +28493 +49912 +51064 +13606 +62499 +29794 +38837 +13185 +80608 +57582 +36302 +38091 +27475 +19076 +27250 +29397 +2037 +70326 +52905 +51259 +79225 +22774 +36765 +59709 +47978 +46132 +9033 +47067 +68297 +31960 +35911 +15615 +12597 +7189 +49169 +66885 +67238 +13762 +34862 +37271 +78373 +52168 +3578 +19769 +51998 +16330 +61458 +79974 +65827 +31321 +73138 +21352 +19814 +1958 +16119 +75887 +79772 +44969 +25622 +4765 +40289 +74415 +77875 +58319 +26838 +37367 +62110 +13261 +80232 +51904 +10877 +42599 +61957 +10843 +51147 +78772 +33698 +43734 +76220 +20175 +11818 +72989 +67086 +76556 +51108 +56019 +78469 +63629 +34882 +43219 +65014 +12832 +42809 +73976 +78425 +43339 +72868 +51505 +23865 +36577 +13874 +16062 +72980 +34317 +2809 +70515 +6819 +64915 +47293 +10552 +13833 +72590 +20137 +41140 +35755 +45191 +44716 +53424 +76884 +71405 +25676 +67367 +17365 +8426 +12041 +64264 +51940 +47400 +17545 +8751 +64119 +72177 +26595 +15201 +8848 +17231 +33031 +11923 +2846 +22330 +67364 +57131 +47393 +5781 +80507 +881 +59360 +42410 +9528 +33348 +14076 +19601 +2140 +5075 +58239 +10061 +4713 +77250 +48184 +69868 +52707 +73559 +71124 +38451 +2044 +27330 +24003 +51980 +53387 +15086 +10852 +44629 +20811 +61468 +21733 +74315 +2188 +63663 +10058 +56446 +37740 +26089 +73114 +23637 +47723 +65761 +23757 +79266 +49631 +30220 +53495 +11006 +67002 +50057 +4780 +56628 +25604 +73282 +26556 +2095 +16361 +54434 +28201 +67191 +41587 +588 +59232 +73141 +57261 +46500 +72043 +54101 +34197 +34608 +6541 +42691 +44896 +16566 +2119 +32322 +11149 +1913 +27534 +42218 +32684 +68340 +55837 +57160 +58627 +31667 +12021 +58725 +70983 +76880 +42532 +75344 +63785 +65324 +5021 +19082 +52395 +51291 +71048 +80511 +6923 +73766 +52045 +3148 +26988 +39453 +35913 +36575 +78003 +12421 +43004 +78592 +45184 +75573 +63042 +50905 +9229 +30226 +36706 +14658 +27295 +77114 +11009 +79720 +60404 +25887 +77697 +39356 +19158 +66706 +13529 +51196 +53475 +56418 +19641 +25702 +20430 +1430 +24777 +49633 +67681 +31249 +35957 +52052 +3091 +29579 +62129 +6219 +69818 +25708 +32349 +10043 +57666 +49980 +51857 +79405 +36335 +49888 +790 +5917 +2748 +67924 +72360 +79537 +53915 +74347 +32397 +12234 +38679 +18274 +57751 +53790 +49341 +10085 +30692 +53828 +62253 +32520 +27839 +49594 +54467 +41906 +78804 +49211 +1930 +78282 +40020 +46549 +48442 +69997 +36790 +51049 +17681 +13178 +56195 +11881 +43679 +33829 +19560 +66442 +12772 +44105 +69253 +51965 +26839 +36003 +19360 +26158 +18124 +19225 +49537 +56888 +24107 +64206 +56204 +69450 +7295 +79178 +19621 +64564 +42263 +14783 +1692 +63694 +50790 +55598 +39698 +26618 +21830 +64666 +22253 +68951 +49581 +47093 +386 +39289 +47170 +34384 +58348 +55053 +31062 +22848 +7859 +38696 +31364 +8618 +60658 +78059 +43531 +19536 +67401 +34125 +22201 +41701 +54713 +55391 +27954 +65815 +306 +24674 +59713 +77089 +34618 +18011 +15685 +52584 +77420 +53035 +76843 +24812 +15525 +13980 +34339 +72783 +37550 +78254 +77135 +47849 +32494 +61672 +42505 +8977 +64578 +13086 +14448 +23749 +4520 +7252 +45979 +15014 +65584 +60655 +61971 +5643 +76477 +7946 +52842 +5713 +28839 +30541 +71863 +13064 +50101 +5239 +69492 +62939 +52518 +78680 +3187 +56644 +27177 +46527 +50616 +41753 +61272 +66691 +63928 +64695 +71241 +57840 +29307 +29379 +52098 +18485 +55587 +68655 +62953 +65166 +68497 +77006 +5338 +34612 +38842 +3979 +31208 +68795 +44889 +9333 +76286 +9381 +34437 +9161 +27485 +32752 +9657 +52988 +21292 +75672 +57088 +35862 +77081 +19567 +78717 +30166 +75335 +23564 +75951 +42171 +29519 +63925 +38136 +77942 +73981 +78830 +10693 +33479 +48225 +55297 +39179 +79778 +14592 +11319 +31955 +76646 +38250 +20704 +78573 +15996 +28160 +73748 +42041 +42843 +2541 +27544 +62515 +14585 +46519 +51901 +60053 +33878 +51397 +10149 +12347 +14395 +47998 +27817 +47415 +6721 +4716 +24529 +35954 +2728 +17313 +30477 +7144 +14126 +66023 +14274 +31789 +58055 +15640 +74979 +17995 +78571 +40173 +24136 +51294 +45151 +40349 +4603 +73531 +32845 +15490 +52981 +35027 +55848 +14548 +48309 +33437 +58147 +38148 +6193 +47201 +10669 +5504 +30430 +26684 +37620 +73121 +77369 +40118 +34374 +59294 +44807 +364 +13960 +16204 +51800 +68662 +21908 +68083 +80354 +445 +28799 +75045 +65542 +34074 +11627 +8322 +38567 +24164 +22457 +27802 +15816 +8938 +26585 +67104 +2128 +11535 +39035 +10325 +39752 +61540 +47892 +4786 +60791 +53861 +24410 +58177 +30984 +73809 +52194 +31073 +67260 +38368 +8809 +9846 +68911 +39215 +3898 +14278 +56128 +62542 +49668 +5552 +58575 +73199 +40176 +14541 +70822 +25390 +1846 +35149 +68616 +19080 +6409 +4456 +56527 +55657 +54562 +16325 +71950 +39885 +8881 +41807 +51430 +47685 +27796 +56208 +28860 +32286 +47160 +15639 +48144 +39367 +64497 +34715 +24145 +33522 +41567 +39938 +56793 +70724 +29155 +32769 +39736 +72775 +34801 +67788 +27722 +69959 +12605 +54325 +67016 +48457 +58403 +11646 +29406 +9444 +38971 +21779 +29181 +56250 +75250 +19281 +15623 +5410 +39986 +60821 +4694 +14932 +29158 +27523 +44761 +71088 +11921 +24504 +22118 +43526 +48118 +1492 +13078 +19254 +33882 +35020 +51315 +72178 +32840 +11853 +79217 +43570 +58567 +66545 +47063 +11243 +62455 +22203 +73583 +75378 +76819 +34645 +138 +7942 +5831 +73910 +50521 +27049 +34506 +33907 +1829 +67243 +65704 +33974 +60085 +51831 +78844 +20632 +60425 +29621 +6396 +3037 +62180 +9593 +1847 +71734 +36110 +43626 +31238 +49603 +75881 +13984 +28267 +46227 +62259 +22631 +76892 +4693 +52922 +7864 +21524 +5519 +29136 +14776 +21083 +56833 +15264 +54047 +53235 +67378 +61420 +71109 +5104 +8343 +58750 +65630 +36359 +9595 +48377 +54918 +30377 +27196 +23205 +66859 +53895 +29344 +67644 +61841 +54785 +67136 +63142 +57046 +45520 +55818 +12819 +32851 +17670 +51004 +18203 +72498 +60072 +30273 +5184 +6940 +3803 +37870 +50136 +55459 +11328 +50825 +52784 +74094 +62769 +8467 +23705 +23664 +17725 +69565 +20567 +20523 +32401 +52335 +1530 +13325 +2500 +19716 +51416 +48293 +48180 +4793 +33758 +40240 +48740 +77548 +2550 +56659 +11721 +17430 +30087 +71282 +7118 +43486 +27216 +72820 +49642 +4821 +37119 +7028 +46813 +32730 +62130 +9708 +17300 +68179 +17709 +61845 +2885 +5469 +50318 +38646 +35094 +60601 +32781 +27453 +69732 +53090 +45825 +7132 +62121 +43208 +47462 +5925 +55167 +79691 +18935 +6693 +8499 +56867 +45342 +67810 +47251 +45864 +62888 +49378 +49455 +36745 +35009 +15771 +53290 +74186 +37116 +61665 +2517 +4054 +80773 +1063 +34269 +66742 +40467 +40362 +60265 +71101 +33874 +27758 +60087 +61473 +61065 +11135 +76860 +57174 +61590 +20617 +52135 +66944 +70817 +57165 +19028 +40287 +27880 +38776 +22143 +44970 +20897 +33948 +40903 +53660 +64284 +66038 +74358 +47358 +46129 +58266 +25051 +68001 +4755 +54738 +1256 +53772 +76921 +846 +43841 +11955 +30251 +50208 +20519 +64708 +8096 +49377 +74325 +55912 +21885 +66120 +27008 +32678 +41027 +79556 +75965 +27773 +72412 +18070 +14600 +44412 +19424 +33107 +8141 +34759 +53575 +1719 +43401 +1436 +11723 +59087 +57961 +16034 +79291 +63387 +38708 +19452 +32768 +67708 +69637 +50339 +35651 +30861 +73042 +57635 +42085 +58995 +75331 +38246 +35841 +520 +9986 +78204 +61501 +31269 +5395 +77612 +60688 +57155 +48793 +80425 +24287 +61514 +20612 +2669 +66999 +28771 +22641 +45661 +63349 +20846 +17288 +58260 +28616 +38987 +20873 +50495 +52520 +52901 +13200 +65522 +70160 +9026 +29396 +29521 +56423 +18498 +43035 +34484 +45626 +47671 +12018 +51460 +27608 +54991 +40427 +75702 +27087 +60934 +1569 +34934 +15090 +35091 +71769 +58947 +41288 +49337 +5264 +62512 +10509 +12378 +72433 +47055 +66666 +70728 +76603 +38162 +49990 +10637 +39987 +73585 +38741 +35249 +13889 +422 +80682 +671 +1147 +13790 +5957 +5585 +21475 +79358 +60092 +53747 +18885 +40030 +46180 +46974 +43510 +39206 +48435 +67695 +17465 +38891 +50667 +62131 +2335 +9184 +74042 +48393 +73666 +58674 +43686 +69176 +20324 +73716 +78453 +54239 +17756 +29482 +9413 +52148 +34588 +50776 +79723 +70419 +50583 +73524 +46789 +66097 +18568 +53959 +62357 +1738 +68343 +55357 +16435 +76029 +72927 +64304 +298 +39040 +6367 +73713 +13359 +57970 +38249 +80620 +55186 +3039 +68025 +72991 +11259 +2940 +32989 +38507 +50940 +78966 +27563 +53936 +58084 +49794 +56028 +38291 +32961 +71232 +64865 +398 +56898 +64092 +30027 +1420 +13839 +64510 +63258 +23575 +6157 +54346 +60976 +22384 +10594 +45388 +68159 +16159 +60703 +4477 +43135 +72535 +50219 +43884 +72448 +24990 +55461 +66529 +42032 +77549 +39418 +4362 +10712 +67159 +6590 +79099 +11300 +37386 +65250 +33625 +65792 +31795 +3670 +1522 +40457 +1519 +41749 +61318 +38564 +879 +37442 +79379 +16039 +51335 +56421 +77131 +2530 +52176 +54938 +44048 +31750 +17976 +62502 +33418 +74659 +54020 +65470 +29443 +9816 +24481 +10537 +60242 +51524 +22039 +73173 +1033 +43103 +4979 +29463 +29751 +9548 +27519 +29905 +11851 +68196 +66107 +62477 +48545 +48336 +30152 +75026 +11832 +19440 +38650 +28630 +41694 +76534 +80739 +24327 +75667 +50166 +23304 +56548 +56101 +32475 +74717 +70483 +57040 +46493 +44609 +54212 +61570 +10099 +77223 +33226 +9227 +5250 +12534 +61135 +14894 +36434 +25499 +6243 +10113 +77445 +73591 +66612 +12827 +12365 +7278 +21982 +40082 +13758 +77303 +18663 +4020 +72296 +32590 +16098 +22526 +74658 +23900 +66849 +38878 +66008 +70430 +24733 +14234 +14849 +47267 +38163 +6315 +30491 +14767 +72840 +19102 +61036 +67648 +67616 +54405 +56578 +70219 +24392 +72052 +8522 +28556 +57500 +78806 +4544 +60704 +11401 +60426 +65377 +55494 +71226 +19630 +54884 +57491 +49263 +24243 +41209 +71580 +27426 +76280 +3879 +47868 +31256 +69525 +63120 +57735 +30950 +9516 +70345 +61391 +60653 +25735 +29963 +6371 +14033 +74752 +75532 +34831 +48460 +66992 +38228 +51656 +58771 +24744 +65699 +41926 +22593 +46275 +40202 +70823 +27184 +20689 +76393 +16711 +16255 +1576 +79999 +41521 +10606 +13332 +16673 +18055 +21060 +22552 +52509 +18541 +56081 +19336 +50352 +77920 +68806 +61309 +79507 +19857 +36800 +75550 +26497 +59458 +40529 +22616 +56294 +60926 +8901 +48396 +76752 +66389 +70777 +24217 +13896 +72137 +5656 +43640 +32394 +66388 +65276 +63536 +59994 +40180 +32331 +43302 +2261 +64482 +29294 +63960 +39664 +20171 +75752 +21804 +8892 +26114 +27678 +61790 +74625 +24526 +47154 +22470 +37896 +67272 +15854 +14074 +67867 +40504 +76812 +72206 +53921 +1386 +59446 +16076 +26297 +55338 +11203 +10799 +62919 +42745 +39800 +66593 +37994 +34193 +45680 +67786 +4918 +44219 +62038 +4272 +75880 +56008 +78423 +12382 +46272 +79628 +23396 +25307 +13672 +3093 +6225 +34331 +76450 +32739 +19488 +60397 +72426 +72162 +14564 +56293 +29890 +56623 +35339 +42800 +57698 +80347 +65531 +22935 +30208 +63155 +63367 +43140 +11175 +33466 +37917 +8979 +38540 +47285 +38301 +29555 +36187 +48619 +154 +1901 +62678 +33161 +14940 +11852 +27708 +29282 +54896 +61538 +19755 +40841 +42558 +58441 +51830 +50471 +45459 +22789 +23068 +31980 +65708 +36343 +61401 +44306 +6187 +77625 +15529 +14119 +38643 +52889 +66339 +66213 +13873 +20524 +29699 +71283 +3402 +72302 +29029 +58966 +13535 +17217 +20657 +12945 +20462 +48542 +19531 +56973 +9191 +67352 +22098 +80086 +70605 +747 +40229 +7245 +3652 +20611 +39290 +62546 +6440 +6343 +30771 +39693 +3049 +35076 +7896 +31136 +17627 +9441 +52659 +46181 +73491 +59128 +33144 +73569 +44486 +57866 +10230 +441 +38500 +51219 +27232 +50160 +41417 +11508 +37339 +9293 +33445 +72041 +1142 +57964 +10979 +36177 +31145 +30750 +21185 +42951 +65131 +46521 +3641 +45830 +2385 +60971 +68194 +53108 +74755 +67402 +68458 +46553 +58367 +47224 +80066 +52575 +7673 +36642 +55013 +13242 +11124 +10021 +61200 +44308 +11046 +48416 +54374 +25272 +79827 +9818 +43487 +51396 +13414 +17040 +54109 +50785 +40688 +53613 +14051 +18380 +23217 +42564 +18210 +25794 +66236 +44958 +59072 +24722 +78268 +50705 +30063 +74734 +14790 +13651 +19056 +29666 +26212 +1398 +15730 +2627 +30381 +67247 +57996 +31281 +33606 +27565 +22873 +47796 +34375 +65821 +33480 +75407 +28177 +10500 +12577 +31301 +73374 +80504 +8384 +11013 +71136 +16271 +57290 +39059 +51882 +65674 +19898 +44251 +59281 +60641 +41182 +78069 +20783 +4474 +28488 +16780 +15986 +22344 +60251 +44008 +31907 +55992 +22041 +37567 +56123 +69183 +10897 +19142 +80112 +56323 +56202 +6738 +25639 +57048 +63560 +72500 +19933 +35961 +74460 +77667 +49656 +38705 +12193 +2039 +76084 +46981 +46741 +8268 +51561 +36970 +43202 +20492 +44211 +11007 +52925 +10807 +5327 +57571 +47582 +7478 +75865 +54293 +54881 +4834 +73332 +32436 +77042 +45704 +43636 +46060 +55337 +63575 +64984 +40353 +42990 +27379 +77294 +32296 +56209 +52885 +56241 +9403 +18212 +28575 +48495 +37691 +59819 +70408 +64811 +18699 +44262 +26667 +77121 +1051 +50803 +53380 +68462 +4734 +77535 +61837 +43066 +74969 +52967 +66300 +27859 +36104 +71001 +6520 +47112 +5947 +9658 +77266 +19624 +13922 +40505 +40182 +5241 +69196 +5093 +63298 +63004 +41635 +5500 +4402 +76310 +12799 +36275 +73497 +21943 +70444 +79087 +30766 +8143 +32344 +35440 +52410 +27039 +54452 +38535 +64288 +72963 +58099 +55885 +38216 +77251 +9791 +36774 +36792 +21410 +44606 +24273 +63057 +16132 +70962 +60530 +1466 +10704 +37108 +77638 +38213 +22530 +17250 +18987 +75507 +48536 +21129 +42818 +2514 +39167 +30662 +47205 +142 +76822 +31957 +31277 +60080 +24638 +60676 +65211 +7693 +37628 +61037 +45283 +49457 +41274 +59686 +2969 +71814 +70043 +45008 +55190 +5000 +77785 +2980 +78959 +79791 +43447 +19134 +77652 +47664 +47189 +18637 +62396 +3830 +20047 +45469 +30966 +24788 +57900 +69268 +10432 +29025 +22405 +72972 +56583 +12432 +79856 +32644 +1201 +68087 +59340 +41629 +13826 +30470 +7450 +57916 +73599 +12319 +52833 +15796 +49863 +57665 +7049 +79626 +21730 +26858 +44932 +43080 +59975 +70266 +21927 +78348 +78842 +16170 +24647 +53106 +13229 +52615 +63423 +12330 +12566 +1902 +70911 +6363 +65683 +60005 +52519 +48981 +1065 +17589 +11252 +21070 +39207 +75230 +79904 +53533 +70890 +33939 +44187 +63048 +48481 +31215 +941 +17908 +48899 +33419 +50879 +57143 +68302 +79998 +24396 +6182 +77310 +60041 +10794 +47666 +13238 +39919 +8849 +56016 +37109 +42786 +65838 +5990 +41275 +53712 +57435 +78246 +41151 +32428 +13035 +73150 +3359 +3074 +43210 +47467 +34086 +27763 +18982 +63148 +55475 +4066 +6131 +35448 +39253 +3748 +44159 +49289 +61649 +52639 +47955 +34414 +17864 +42981 +72101 +36704 +23153 +9619 +50978 +22509 +42714 +30093 +76896 +70877 +77633 +74531 +2056 +39467 +71857 +4392 +28468 +61901 +56776 +36333 +72832 +23056 +65332 +54433 +45073 +31007 +69822 +38039 +11433 +55350 +57045 +18742 +48580 +39962 +71100 +27169 +14254 +15611 +56203 +75638 +64 +31976 +41988 +42689 +52415 +51431 +41037 +72852 +69828 +22581 +66013 +66387 +26933 +26827 +74526 +8760 +50351 +73888 +70791 +4157 +36078 +42265 +13520 +29115 +64854 +20456 +69776 +78758 +16976 +34275 +58343 +57197 +44429 +7412 +78030 +36914 +77834 +42808 +2413 +17794 +73384 +25853 +73164 +62450 +5766 +75653 +39831 +33043 +66337 +45995 +73032 +27647 +25205 +53480 +55711 +35695 +33530 +75753 +37715 +37845 +54312 +44119 +37804 +33598 +7904 +78752 +44487 +71925 +30262 +53267 +72359 +79162 +56727 +73083 +34007 +68888 +32543 +23097 +26922 +56720 +33889 +64425 +39083 +52403 +17572 +74606 +64098 +47097 +5006 +51363 +47277 +32201 +21154 +28046 +63159 +37071 +23916 +67459 +48608 +16816 +37515 +55880 +61484 +11158 +70787 +75773 +69673 +7810 +10906 +54049 +8331 +80176 +31451 +11084 +46729 +29706 +70841 +80002 +47957 +11421 +61721 +23898 +12305 +68183 +51758 +78557 +4037 +28117 +30701 +68174 +48675 +40920 +15660 +35472 +71493 +34312 +40867 +11523 +37792 +54628 +76605 +42432 +5869 +43972 +76018 +80536 +43625 +60755 +17732 +20131 +56920 +41937 +15165 +14262 +40399 +67633 +19605 +68600 +77616 +36116 +15518 +2239 +18057 +56379 +79739 +73169 +33760 +42593 +60060 +37358 +48810 +11024 +64576 +47103 +10683 +23840 +37957 +4518 +36099 +18199 +39485 +23041 +59163 +10072 +69588 +67797 +59391 +55210 +52456 +67193 +41744 +38454 +28244 +10634 +80701 +75719 +26861 +20267 +14133 +68682 +42747 +25108 +25833 +16739 +9318 +63321 +40013 +953 +61273 +54528 +48593 +53440 +31787 +47646 +73690 +18456 +61839 +40733 +51616 +7100 +40181 +40837 +2787 +28116 +25214 +23762 +49742 +64167 +68714 +65804 +78396 +9136 +46600 +39608 +44740 +52222 +78409 +37743 +58362 +28877 +51134 +4954 +12275 +53546 +2883 +6953 +20258 +73759 +26027 +26473 +56981 +8796 +44249 +35557 +14497 +9015 +68587 +20323 +57052 +48486 +42718 +9659 +68569 +75286 +58037 +23615 +37551 +69557 +20927 +19081 +58138 +40785 +59463 +45893 +71746 +17042 +51971 +9609 +108 +74849 +42100 +12792 +80334 +8417 +19686 +23915 +37737 +65251 +62086 +11389 +26093 +65973 +66598 +39930 +67868 +28288 +9525 +43912 +55091 +73957 +55533 +47434 +6836 +64296 +74448 +13012 +46604 +26528 +23125 +14388 +77144 +77203 +29026 +634 +29281 +18869 +26251 +53438 +31157 +50740 +53020 +50831 +80644 +71782 +25618 +76816 +20185 +51872 +76784 +63946 +52199 +59922 +11618 +67396 +77676 +80326 +14975 +43940 +48664 +59013 +21126 +55915 +41996 +51893 +1322 +32831 +67436 +28762 +27083 +68323 +58053 +65621 +20785 +41392 +53652 +18313 +22151 +58144 +45666 +23622 +26885 +35132 +79617 +36518 +69740 +1879 +21311 +53296 +77389 +40692 +39025 +58949 +17004 +63358 +55896 +62291 +11829 +54854 +33461 +21984 +62251 +42264 +42673 +296 +3577 +11244 +21182 +22383 +65060 +20002 +66616 +3466 +110 +57314 +52350 +25395 +9828 +9317 +42025 +49503 +67266 +46797 +5065 +35832 +53259 +75941 +21675 +31915 +29003 +37670 +52521 +71533 +68855 +34440 +2943 +41057 +75539 +18724 +56122 +61898 +74727 +76027 +72088 +50053 +74206 +52485 +4618 +38775 +43112 +15783 +21017 +36417 +6066 +65017 +11497 +24903 +79324 +3267 +28509 +3083 +26976 +13361 +50234 +54403 +77132 +11019 +78827 +76081 +30434 +23866 +75416 +46798 +78097 +23451 +56588 +52064 +37145 +50415 +37246 +17409 +58336 +78389 +1793 +66595 +37411 +63534 +577 +71044 +68864 +216 +66555 +25634 +34576 +59611 +732 +19874 +71748 +39604 +31314 +18162 +19974 +49582 +43370 +44601 +7775 +71502 +52906 +42011 +69644 +30617 +15101 +27495 +12890 +13483 +64829 +63975 +29258 +56985 +80476 +74331 +24679 +72263 +50992 +57109 +51110 +55366 +7943 +46124 +69244 +64845 +23871 +24599 +69730 +10820 +2430 +25489 +26460 +41431 +1833 +69957 +74595 +67331 +9152 +76115 +58902 +55136 +77925 +52213 +47740 +28834 +37208 +3415 +60371 +50326 +1434 +48395 +13245 +40187 +48790 +9598 +58500 +39092 +7044 +80246 +50002 +57902 +67621 +60571 +53707 +61816 +17024 +11490 +19673 +25291 +72880 +73043 +60642 +54007 +6446 +50806 +57287 +27418 +46892 +64226 +50349 +27772 +66814 +77967 +64257 +55754 +70102 +70856 +68834 +32085 +388 +11685 +59498 +52636 +48962 +19666 +28150 +73105 +58313 +5377 +72179 +26345 +16137 +21537 +67603 +47074 +24808 +63472 +57904 +66563 +72039 +79403 +66287 +77344 +33666 +45853 +61857 +67269 +72090 +23992 +21158 +69053 +21719 +21330 +16292 +32597 +56347 +19759 +67872 +19847 +17364 +51099 +55546 +14202 +3059 +64301 +56405 +6197 +11164 +19282 +8374 +26741 +49201 +49512 +3315 +75805 +36424 +12104 +62352 +42600 +4849 +56881 +29426 +1740 +66168 +79570 +80405 +35362 +63848 +62652 +13983 +48620 +39578 +56712 +74185 +50608 +33922 +50368 +57963 +18179 +13111 +73443 +71808 +79168 +44454 +70564 +39224 +59450 +34279 +16704 +45783 +25961 +48245 +4977 +35672 +11630 +31786 +76281 +2574 +76600 +6062 +16421 +18973 +64282 +34066 +25583 +48524 +74138 +23045 +57876 +53310 +25661 +50378 +44541 +41446 +33274 +37883 +56796 +38 +32192 +4308 +17490 +3403 +63632 +77269 +42254 +4940 +18847 +58196 +7952 +65914 +2457 +34952 +70783 +20799 +68796 +52049 +70561 +6958 +31527 +6986 +62225 +39516 +40160 +23079 +73604 +6351 +36698 +2882 +28091 +8054 +5260 +10888 +73584 +32412 +70799 +67795 +10687 +29309 +14474 +75358 +47348 +45507 +77087 +9497 +66033 +36006 +55227 +34880 +2347 +57767 +57090 +22569 +34453 +48652 +52568 +69061 +46951 +67452 +72827 +14330 +63814 +295 +18937 +26505 +56978 +73418 +70695 +57938 +29497 +13713 +3033 +53073 +21667 +54645 +39483 +17719 +1563 +55116 +63143 +29174 +74050 +19109 +16302 +27840 +73299 +67935 +44549 +19423 +16766 +21618 +29302 +3496 +42741 +15714 +7356 +3714 +9176 +4871 +32145 +64513 +44530 +23275 +44607 +25771 +862 +48000 +812 +61094 +33247 +45538 +43359 +49965 +18811 +10090 +54798 +38145 +43874 +10711 +22929 +54722 +72166 +46334 +49354 +73025 +6796 +25565 +3099 +72113 +41399 +6901 +4942 +80489 +29235 +32925 +5832 +38664 +70478 +35583 +32886 +32571 +15269 +24699 +48273 +13546 +16872 +67072 +58436 +39802 +56419 +68076 +59075 +60313 +77059 +2720 +7631 +52203 +75019 +45197 +21909 +28469 +64928 +3237 +17579 +8606 +59490 +54822 +32425 +27056 +35570 +56305 +69691 +18528 +57827 +28931 +70094 +55075 +42395 +4767 +43877 +47874 +14939 +60175 +66602 +64807 +19885 +34211 +5359 +78816 +8608 +41243 +79683 +53418 +21412 +15350 +42710 +6970 +54376 +74088 +36149 +21702 +68199 +61968 +41051 +48789 +30784 +70655 +53144 +18703 +13747 +61539 +30700 +70082 +76810 +58876 +75421 +52319 +24211 +50653 +27069 +74148 +179 +5988 +6485 +9035 +7809 +67556 +60268 +74572 +66898 +6506 +71201 +13175 +4893 +25126 +18254 +12990 +11197 +13822 +72550 +69376 +32703 +53664 +34122 +49941 +34784 +22264 +29348 +66076 +47085 +43136 +56989 +3890 +29149 +37258 +21275 +10466 +50553 +53715 +33470 +10109 +55639 +17204 +63699 +7195 +22371 +26038 +15715 +71286 +65373 +73180 +6915 +39695 +47043 +64572 +54957 +39872 +7181 +75136 +64269 +52445 +30101 +39057 +13047 +9466 +4048 +24545 +45462 +67987 +10167 +57433 +25782 +17624 +34456 +25025 +28984 +22529 +71691 +1643 +79641 +69333 +60765 +62465 +50587 +42835 +55684 +24451 +61299 +34919 +46016 +3241 +14327 +76206 +33065 +63319 +28349 +20384 +31887 +49622 +46545 +59872 +58026 +50283 +57617 +49231 +770 +2350 +60324 +40053 +51494 +40343 +63408 +31822 +32945 +32479 +63074 +78215 +14792 +18160 +47598 +66451 +44373 +60681 +10773 +56910 +28548 +68910 +28989 +22213 +71836 +22895 +18959 +13710 +54028 +52542 +27512 +55835 +68625 +53598 +39810 +8292 +45822 +22354 +79333 +4887 +1548 +55439 +20635 +9723 +25236 +17061 +17337 +78947 +9787 +67189 +52618 +10831 +12556 +20298 +12883 +61121 +26652 +60931 +39061 +3642 +72197 +43098 +28521 +42554 +60304 +28796 +64894 +17391 +9306 +4211 +65325 +12900 +2003 +46854 +64434 +802 +7723 +72749 +31081 +18914 +72131 +59934 +2880 +9983 +46128 +70982 +51866 +57723 +21527 +41791 +19496 +21379 +25807 +62367 +79257 +27350 +69577 +24963 +15021 +42294 +19813 +2542 +76754 +50656 +21698 +435 +31962 +29156 +59989 +66799 +54187 +53549 +24809 +67910 +22288 +72361 +71336 +53822 +51715 +63516 +58986 +70338 +10766 +79343 +76693 +56067 +18745 +2268 +21262 +66656 +57514 +645 +79441 +20562 +5557 +5049 +39684 +24586 +32567 +54093 +56239 +56193 +14319 +34580 +53787 +69238 +4991 +57262 +4583 +79470 +44437 +34914 +58224 +17659 +27468 +72763 +70764 +48919 +44495 +34164 +52386 +33668 +65316 +4993 +51082 +72791 +71953 +46020 +52631 +34208 +72109 +57457 +59195 +39873 +41617 +75145 +27728 +15979 +72398 +63434 +67005 +46904 +36086 +76522 +1427 +50770 +32753 +58993 +4916 +36249 +19238 +56341 +10743 +15620 +7003 +16595 +9314 +18345 +52228 +69043 +68678 +57264 +55172 +59197 +8199 +29439 +75710 +59664 +15152 +1347 +15225 +17087 +276 +40163 +22866 +35066 +33995 +54665 +1056 +64197 +37309 +37332 +24930 +25124 +58904 +28687 +66123 +16750 +49834 +57080 +29547 +38863 +7470 +51154 +61682 +75244 +38508 +1136 +65986 +28875 +13562 +53230 +71567 +44697 +79538 +31352 +79625 +26653 +42519 +54147 +78378 +53437 +34238 +25330 +5197 +44110 +49135 +72063 +54094 +74930 +27311 +61062 +21874 +69131 +59392 +40332 +20470 +30609 +66206 +47199 +72370 +40878 +311 +54008 +70892 +9977 +79208 +72264 +73630 +17593 +13814 +15917 +47599 +21699 +40891 +77286 +70180 +30509 +45390 +35883 +30801 +9590 +42209 +65272 +57122 +50671 +72734 +14394 +8381 +75595 +58242 +54076 +26547 +9074 +51699 +65601 +48231 +71388 +10474 +59152 +58171 +59215 +35712 +25773 +75352 +1963 +35966 +646 +14804 +45295 +30849 +46923 +35365 +40403 +16463 +31131 +7701 +571 +51190 +31533 +2158 +18329 +57453 +54906 +26170 +74454 +68070 +80303 +73949 +43647 +17219 +52037 +23988 +33168 +13866 +8607 +58127 +75836 +26303 +41565 +19044 +37794 +24445 +21878 +73922 +75761 +288 +37818 +5601 +56661 +36021 +38220 +27234 +29433 +48169 +12780 +57112 +61717 +8723 +8079 +79701 +7982 +69763 +40869 +21638 +37404 +51439 +37014 +54534 +31252 +43129 +65282 +663 +44022 +19286 +78185 +53827 +61389 +45592 +76130 +53943 +19413 +79349 +61700 +49325 +37485 +32641 +1377 +58341 +55581 +75213 +42597 +23868 +23706 +54045 +69539 +21384 +17194 +70057 +73049 +7541 +18702 +57903 +56440 +21269 +25116 +61041 +10921 +6699 +66596 +7649 +28444 +42163 +55829 +75224 +37908 +47693 +39019 +25633 +3217 +61856 +7635 +64779 +46450 +22356 +47486 +17718 +4875 +28233 +45258 +30467 +16230 +49592 +30072 +45795 +12371 +51497 +14566 +69255 +67246 +62376 +16018 +15523 +75996 +487 +26191 +48826 +16998 +76888 +36753 +65078 +63746 +32633 +24757 +19608 +25052 +64428 +41785 +74104 +35377 +2105 +41917 +24358 +80278 +20816 +10528 +50510 +42709 +29335 +63570 +43804 +70482 +75857 +71772 +33940 +74335 +43574 +21576 +32423 +47347 +23718 +61800 +59411 +80422 +75036 +32869 +75010 +42354 +78230 +71363 +54602 +22847 +8449 +49681 +74946 +55845 +42635 +25083 +21343 +65751 +27293 +61598 +55579 +51964 +57464 +68843 +28205 +76680 +59688 +13168 +32095 +17759 +42324 +49449 +80463 +43259 +39128 +36896 +26304 +54865 +56441 +3436 +18999 +47252 +42969 +47867 +62268 +59214 +42315 +10405 +13941 +9892 +50922 +45553 +73196 +48517 +75433 +38587 +33150 +62940 +80391 +499 +22958 +67011 +67877 +4228 +60216 +80217 +59326 +41534 +61416 +26125 +69006 +16016 +26552 +67117 +64057 +35150 +66902 +33560 +59073 +1315 +38139 +54085 +28318 +24611 +38916 +50290 +80518 +53131 +3781 +37393 +45239 +72167 +80737 +33562 +34657 +14332 +56639 +35255 +50830 +59217 +10459 +43887 +61509 +49595 +61335 +28531 +18294 +38647 +26582 +39416 +38737 +8131 +17485 +42353 +26415 +8284 +12450 +33898 +29157 +45498 +51030 +51722 +27125 +46847 +593 +21043 +69130 +25360 +65904 +31623 +50295 +66332 +29101 +6276 +77491 +27429 +5479 +71242 +63816 +15540 +62698 +40849 +22205 +11464 +39892 +20957 +62709 +43170 +45765 +68329 +61864 +23603 +62713 +14122 +53136 +3134 +78616 +72939 +77861 +18237 +5079 +45798 +23820 +43659 +40189 +55397 +18708 +7928 +70778 +14363 +46352 +70670 +16907 +45451 +47445 +29367 +4266 +47602 +15112 +70409 +5522 +46655 +22864 +53007 +12707 +39259 +44768 +25413 +30239 +26907 +47881 +69661 +68074 +28733 +74824 +50943 +58113 +62316 +77054 +45040 +1131 +10346 +15638 +28658 +50257 +76718 +54640 +63837 +10618 +1822 +14984 +56227 +29748 +46435 +17198 +8084 +32905 +61803 +74861 +40857 +36752 +58210 +15050 +15287 +21922 +51876 +71582 +77644 +53406 +51068 +25697 +19708 +79952 +73269 +58057 +48337 +78868 +29756 +6217 +80042 +35771 +614 +15793 +43642 +18718 +59303 +32036 +73622 +3697 +50412 +45693 +74880 +7488 +63733 +19919 +1045 +56235 +3488 +54949 +77711 +79914 +56906 +4243 +39051 +29819 +43584 +43599 +21824 +4383 +14096 +4623 +50323 +62557 +18371 +18 +47858 +524 +68801 +42372 +16649 +77987 +18007 +17945 +15765 +47066 +67717 +24980 +404 +44948 +28398 +21906 +49160 +61404 +42018 +33227 +11750 +2516 +57408 +14802 +72353 +29537 +4680 +42857 +39632 +27137 +44578 +43809 +53966 +39957 +46439 +20147 +77611 +7095 +54840 +73565 +25179 +44647 +62258 +51989 +26685 +18897 +45355 +5615 +13391 +9315 +6658 +41789 +9365 +50084 +2017 +240 +40771 +58385 +411 +20271 +40498 +3302 +37791 +78167 +59336 +66131 +16058 +31094 +54608 +22937 +59053 +27 +24264 +66769 +11411 +29197 +48569 +452 +76530 +63350 +23050 +67817 +46901 +41472 +58726 +72608 +3007 +38759 +65863 +19805 +45744 +52025 +18220 +3923 +999 +3502 +68917 +60858 +31496 +42621 +40611 +34878 +13287 +71899 +33789 +78745 +4102 +30485 +6776 +68114 +13587 +57718 +440 +53163 +52033 +78865 +69755 +47938 +39024 +29999 +53181 +47544 +7760 +13968 +64768 +16783 +7669 +74145 +74247 +20999 +37665 +30813 +52353 +46194 +72700 +5523 +3232 +36981 +75185 +18605 +20870 +40435 +74762 +62985 +47890 +20747 +37572 +49874 +43893 +11831 +79843 +24089 +6080 +16927 +65786 +17774 +12502 +58915 +76795 +67289 +61118 +36555 +31267 +14751 +32066 +77908 +80023 +68257 +5078 +42587 +73511 +6263 +51158 +27374 +10626 +21230 +4763 +38840 +63616 +55916 +55356 +10008 +32181 +41325 +16464 +1954 +16158 +65169 +77009 +29392 +75789 +52622 +63491 +45505 +21144 +20486 +39917 +73720 +79697 +59276 +5562 +2480 +64864 +14081 +66779 +79155 +64764 +13740 +55123 +28731 +16455 +44559 +2994 +11213 +22261 +62638 +34380 +76097 +72959 +41145 +76787 +2772 +76723 +73785 +75280 +17150 +67040 +4526 +24871 +28852 +16441 +11560 +64777 +31149 +43017 +71031 +61755 +42317 +43749 +57222 +28897 +77464 +48750 +54767 +6403 +54266 +25951 +53190 +11473 +3282 +66407 +18492 +14754 +69329 +26973 +14460 +56705 +15560 +37717 +16079 +32067 +46237 +48304 +21700 +13769 +23254 +15542 +1044 +18459 +62064 +39960 +55135 +77794 +14067 +3019 +72104 +67668 +23365 +64068 +32140 +17638 +76065 +74093 +20465 +32585 +40407 +64212 +30581 +61604 +3243 +15875 +55706 +53963 +35904 +18540 +51777 +75718 +63650 +59302 +58891 +46137 +58541 +29422 +41104 +14666 +62562 +71669 +72067 +13455 +2112 +26145 +12321 +53314 +46552 +73702 +53931 +53118 +72087 +45438 +46195 +69536 +34190 +79716 +30799 +13690 +17607 +4894 +6927 +35507 +5587 +32882 +61212 +31167 +35410 +25892 +5952 +40784 +71489 +4952 +55651 +29024 +5028 +72284 +33822 +58971 +10995 +26876 +50773 +27953 +56930 +52116 +62811 +79766 +38790 +28993 +32872 +26659 +11075 +6293 +75966 +14287 +76332 +79230 +53559 +25648 +38619 +49705 +62452 +24305 +38352 +28728 +6900 +55739 +7858 +41712 +42686 +39323 +45402 +71059 +45524 +12875 +4030 +23413 +13997 +26139 +73185 +47044 +24822 +78935 +56529 +76620 +66879 +8339 +63166 +42997 +37658 +32097 +32257 +53690 +53040 +3318 +11413 +48056 +67976 +61734 +75383 +73209 +17788 +35574 +42669 +62288 +65252 +7875 +58143 +69105 +28930 +62887 +44094 +46062 +9393 +760 +27148 +18190 +54766 +58217 +61652 +19822 +6095 +63984 +28199 +5791 +70549 +20550 +66837 +70437 +32944 +73052 +2968 +49004 +38985 +68703 +51918 +39935 +64362 +53441 +39247 +65214 +903 +15722 +22429 +14219 +47031 +71561 +70493 +41028 +44049 +76942 +23658 +64128 +12922 +50894 +4091 +75610 +62503 +34841 +68374 +29162 +74086 +40807 +69618 +25153 +42865 +73679 +69671 +32683 +20263 +33196 +44548 +9371 +8788 +25540 +5456 +15422 +30736 +34045 +72257 +73688 +6172 +44648 +20729 +47984 +38522 +32082 +72121 +6239 +38802 +47346 +54213 +36589 +6739 +41154 +1452 +18574 +38083 +68062 +52428 +44106 +54913 +19534 +38404 +8319 +17455 +16407 +72211 +24715 +42953 +39500 +45290 +4119 +52502 +65961 +62226 +22322 +15926 +16317 +66238 +33830 +33083 +13467 +50434 +74369 +68362 +42096 +75313 +72079 +29022 +66943 +47865 +68389 +5062 +25230 +20488 +14501 +60607 +723 +42653 +50650 +24409 +30815 +74032 +11575 +53605 +37292 +26462 +1956 +50508 +65278 +59364 +44438 +6941 +15990 +39510 +50576 +30096 +33848 +74649 +39580 +58381 +51580 +26511 +50348 +73439 +20260 +78226 +75543 +69665 +79004 +63379 +74623 +57881 +53576 +34146 +36847 +33052 +73008 +59948 +19247 +9532 +63217 +14087 +19736 +63012 +1678 +9674 +51883 +15348 +30765 +80459 +59656 +58014 +6652 +21087 +73631 +9159 +60917 +24448 +24662 +68282 +30062 +45059 +46025 +38122 +43016 +1018 +42606 +47296 +38340 +9148 +38806 +61173 +38204 +58274 +66996 +19253 +55729 +46831 +52339 +4770 +32761 +13653 +50239 +51658 +19650 +65173 +71476 +28614 +14001 +59619 +16866 +17657 +70247 +29173 +59270 +65303 +55320 +75559 +20633 +30628 +29954 +74993 +4727 +67234 +70138 +58398 +77897 +79911 +41211 +41316 +6149 +39654 +43791 +5345 +21901 +43091 +59905 +44042 +49833 +48380 +26353 +59630 +45136 +33707 +45563 +23104 +75394 +73574 +52918 +68363 +15567 +25732 +59823 +12558 +14865 +6977 +22467 +39123 +9596 +47011 +69664 +3677 +18573 +38342 +22431 +57855 +30818 +33540 +9931 +32303 +3589 +11002 +72272 +27848 +61463 +8218 +8338 +9688 +36522 +3114 +68566 +30398 +37562 +43465 +66559 +18983 +76022 +46054 +45653 +77546 +71202 +55503 +40203 +69012 +35968 +43991 +57640 +34023 +50236 +31232 +2151 +39048 +15911 +59625 +14730 +18863 +15013 +61563 +53242 +21008 +67707 +59398 +6345 +54107 +23808 +55825 +2752 +45861 +11944 +40450 +73941 +32926 +25425 +79228 +37050 +14208 +6297 +33723 +15805 +29263 +25259 +50080 +391 +71464 +18474 +44753 +53016 +71352 +4364 +46479 +69656 +60044 +40185 +73469 +42856 +11352 +49803 +76578 +66177 +9751 +2429 +55118 +57894 +26055 +1094 +32790 +1790 +58110 +26592 +16143 +36396 +18628 +75642 +68660 +29739 +5344 +12504 +80637 +32418 +28423 +41188 +55638 +33905 +66460 +79905 +53238 +23728 +12592 +48284 +11047 +10152 +25778 +74203 +10671 +70471 +15128 +18207 +54119 +77854 +23182 +76120 +12697 +32424 +53582 +75634 +73132 +62549 +74897 +61977 +16181 +23405 +30982 +9499 +48052 +31480 +41172 +49057 +13102 +65698 +41889 +17830 +23745 +36881 +36103 +18994 +41772 +56562 +60220 +34806 +3663 +79576 +6536 +75080 +45819 +26967 +58727 +12717 +66114 +25617 +68997 +23963 +63047 +61203 +58647 +64791 +64336 +60757 +44473 +79844 +67670 +55326 +67772 +77035 +44666 +70034 +52565 +19655 +52256 +29249 +29048 +40614 +31014 +46427 +54027 +74038 +36376 +29407 +69266 +9802 +15248 +37541 +48101 +47390 +51852 +76272 +55305 +61277 +23439 +1266 +61417 +16653 +65775 +13202 +69214 +3662 +52677 +79335 +46807 +52855 +13611 +35107 +68717 +76759 +55415 +55433 +77014 +31689 +59316 +39165 +14743 +50921 +10901 +60364 +13864 +52390 +10396 +74339 +46140 +35907 +35007 +71353 +25999 +60865 +79825 +75281 +72518 +72458 +62558 +22500 +56711 +51042 +35722 +58288 +54496 +76412 +67055 +77921 +28297 +25006 +42883 +43171 +37508 +37525 +67192 +61574 +42212 +46041 +12923 +35284 +62905 +44844 +75097 +8715 +77360 +9771 +60726 +10175 +58467 +20316 +71564 +8346 +16992 +70025 +21745 +42724 +77219 +73862 +12826 +8644 +13439 +51010 +75749 +55943 +25418 +2749 +36027 +67181 +9661 +62833 +70148 +8153 +77995 +40683 +40387 +10795 +25885 +49322 +6437 +75632 +67060 +21798 +46534 +2679 +30459 +34666 +43583 +64112 +23031 +22430 +1978 +50813 +16947 +77598 +46168 +55940 +59460 +50003 +65903 +489 +78789 +49087 +53049 +62848 +31700 +80430 +43868 +41260 +79367 +45943 +23832 +74337 +68555 +37414 +25337 +66982 +54359 +27878 +26835 +48434 +68985 +17603 +4270 +43582 +15752 +60689 +7185 +49485 +38063 +18488 +22825 +12693 +15636 +12368 +24068 +80138 +64390 +62826 +56458 +32208 +61939 +20084 +51769 +74323 +39643 +56339 +31718 +1584 +51746 +28307 +48246 +17542 +2578 +17398 +67996 +3171 +15558 +27901 +64904 +14044 +72171 +7759 +75221 +37904 +54895 +14701 +35641 +77446 +1746 +55775 +22965 +39239 +39550 +24913 +18545 +39308 +47337 +12892 +64389 +34108 +19389 +75990 +74055 +76744 +43553 +35783 +73473 +37575 +61490 +34983 +63647 +80321 +45779 +31525 +58413 +79589 +37060 +12690 +6589 +56022 +64170 +29460 +52406 +14910 +5406 +76705 +51707 +43024 +78687 +29800 +72139 +39762 +46717 +21673 +5391 +20400 +58148 +78598 +26295 +2778 +12600 +33349 +27605 +41123 +76116 +72340 +26348 +8556 +78174 +54486 +8894 +66611 +7556 +44685 +64896 +63807 +36564 +54016 +53292 +66808 +18841 +8041 +35323 +77889 +261 +55656 +8620 +67114 +66782 +2873 +21294 +62702 +12478 +46839 +36910 +75328 +79429 +14949 +42577 +35719 +53615 +30903 +14766 +30730 +5785 +53562 +54479 +72527 +8920 +36478 +61575 +13976 +36477 +12742 +71093 +77097 +2445 +38675 +8706 +14487 +72271 +45701 +74470 +17328 +30601 +79758 +51987 +37430 +78605 +67185 +32657 +70174 +49338 +32921 +16681 +7665 +44796 +1365 +2349 +80211 +50754 +45486 +63697 +72267 +15092 +66869 +5589 +74356 +69122 +39434 +1076 +39790 +62262 +39863 +14090 +23989 +71079 +55151 +33175 +21047 +79548 +64887 +69174 +59097 +34467 +80565 +40548 +65857 +39176 +39724 +8014 +65097 +55388 +52267 +43770 +24976 +62246 +66073 +11583 +11548 +31247 +35908 +44123 +2801 +49521 +45215 +12540 +58006 +37408 +31335 +19699 +26577 +56145 +80312 +45133 +71530 +11754 +56842 +18662 +69019 +70434 +23566 +8475 +27631 +26825 +46516 +5830 +39466 +14456 +27911 +58748 +50197 +63084 +11275 +17289 +45075 +49675 +6960 +60567 +77293 +53445 +44006 +48817 +75698 +69587 +20050 +76147 +64496 +12398 +65596 +41598 +28739 +55662 +30328 +78311 +7999 +49913 +28849 +78591 +75531 +22219 +42203 +51694 +29449 +56754 +11830 +15834 +5915 +78083 +57561 +2010 +63800 +7200 +67942 +46749 +20782 +17343 +43815 +62278 +56174 +23925 +24631 +37425 +64853 +64553 +24324 +18315 +7090 +37252 +56170 +50959 +51078 +17441 +62880 +3123 +21866 +38245 +13180 +14653 +16197 +75819 +20548 +7202 +73732 +60570 +75944 +40491 +244 +70572 +13456 +56433 +10003 +63347 +42122 +14393 +59461 +3983 +44017 +41810 +77201 +78907 +36290 +32883 +10318 +70852 +3869 +65690 +79823 +55727 +67500 +55588 +76916 +19519 +77107 +14355 +58998 +35736 +80693 +60856 +34954 +52726 +26871 +59854 +40884 +10601 +45675 +70150 +31078 +49951 +54817 +77205 +61712 +54277 +7501 +26315 +61130 +5483 +6490 +73362 +66035 +43376 +80095 +29277 +78478 +4661 +21723 +60176 +15065 +32128 +40696 +56443 +42959 +43810 +33546 +74791 +35243 +68837 +59467 +71744 +21752 +47195 +27412 +53087 +33983 +58231 +56835 +48767 +9321 +51815 +38590 +19882 +17534 +35624 +52610 +13386 +24607 +62958 +47584 +29937 +75430 +18864 +79913 +48446 +21283 +58269 +76715 +30305 +70438 +37850 +66117 +52314 +57241 +65946 +72225 +57309 +46503 +60583 +50327 +29137 +62598 +10821 +31833 +65465 +8389 +38588 +31616 +31502 +34865 +43312 +14498 +18826 +29311 +79747 +678 +75385 +17454 +50764 +47722 +9181 +46683 +59010 +38691 +19266 +23347 +15497 +12142 +16239 +18563 +63571 +72635 +32688 +24331 +24735 +37227 +76320 +592 +55406 +24035 +12503 +10956 +59988 +63479 +76113 +34839 +22182 +31807 +16932 +3104 +21585 +55184 +5073 +50990 +5889 +995 +69608 +62908 +353 +18382 +68627 +44378 +57341 +78044 +18378 +44399 +7475 +18922 +38833 +40995 +48070 +27621 +41134 +37615 +11176 +54838 +48592 +4459 +74293 +38385 +58805 +67535 +67131 +15610 +73232 +22841 +23672 +55149 +2278 +45134 +3079 +78441 +67852 +58458 +75054 +20398 +47402 +6762 +30638 +34370 +29284 +33584 +14835 +46883 +23859 +24185 +7380 +31671 +7377 +75991 +13834 +34916 +49333 +3563 +55107 +36739 +76985 +66743 +51674 +24925 +54151 +57949 +44079 +9437 +41941 +9458 +6852 +43831 +61069 +56545 +45321 +11067 +55164 +26509 +53366 +2343 +17958 +14938 +48449 +23253 +72065 +8632 +21541 +23040 +10986 +18510 +65532 +44499 +56318 +60094 +27356 +29038 +51712 +823 +64965 +2560 +26451 +9624 +1218 +15513 +71916 +58707 +76666 +60798 +65676 +36041 +55203 +58692 +55771 +41566 +25776 +40966 +31146 +10664 +18759 +36018 +63331 +34008 +49259 +74694 +17127 +6559 +7915 +35993 +33308 +15704 +53152 +77880 +7233 +27447 +8262 +11110 +72960 +63395 +42761 +26992 +29499 +57825 +26467 +41842 +61399 +21465 +55524 +80377 +36102 +41553 +13089 +20943 +59714 +38015 +22393 +11454 +40835 +59605 +73295 +68351 +25589 +28079 +24943 +13987 +11453 +33485 +44122 +33701 +76264 +35324 +51845 +63353 +75832 +62217 +43243 +54411 +52936 +80523 +11217 +58271 +32235 +14985 +22256 +37653 +67906 +65799 +35987 +6284 +80645 +15256 +77587 +1370 +79014 +1130 +3410 +5926 +29416 +61942 +39993 +10022 +80638 +50437 +18444 +67653 +28195 +46497 +1805 +25663 +35707 +35758 +17082 +60510 +56211 +13342 +36611 +23058 +46618 +4160 +12928 +6833 +55910 +56660 +10692 +3629 +8916 +1844 +21371 +1061 +54476 +20033 +24849 +52627 +54693 +16989 +15960 +31022 +6200 +63766 +7258 +48823 +61883 +658 +33257 +18467 +62856 +32224 +5985 +23280 +70842 +2798 +55120 +21591 +58906 +64994 +3017 +5734 +25744 +61676 +51486 +64988 +80097 +49075 +30285 +69614 +29637 +22086 +3449 +70506 +8344 +5964 +4045 +28269 +63160 +73176 +26704 +13099 +58961 +56882 +4230 +31702 +95 +43046 +22435 +77721 +21519 +35082 +63085 +10121 +800 +28724 +23356 +62351 +32842 +34387 +66312 +45406 +35825 +38474 +16413 +72098 +78708 +23966 +12903 +48211 +34176 +70712 +68207 +74254 +22879 +40471 +43700 +67738 +16559 +79366 +46443 +79770 +75170 +9907 +67476 +19599 +41904 +61025 +71705 +54835 +2833 +63688 +78498 +34000 +9449 +69969 +4957 +30641 +35098 +35742 +31294 +1888 +58598 +48043 +665 +67208 +21266 +18799 +63996 +73831 +50556 +76209 +11977 +40482 +49284 +36436 +73220 +31427 +58529 +45578 +67413 +23042 +63098 +9180 +58937 +46992 +20911 +5203 +29644 +50436 +68534 +36062 +40969 +64604 +8447 +58072 +67465 +75146 +11924 +52953 +29168 +66431 +21229 +65436 +16792 +73430 +26435 +39685 +18445 +7781 +28074 +76731 +47896 +23201 +45636 +73195 +13880 +16375 +30860 +67804 +49447 +4163 +49415 +63593 +38236 +62241 +36795 +40301 +38114 +79473 +23863 +50711 +48653 +18317 +50507 +23611 +42416 +43331 +54595 +53624 +41010 +60107 +46 +1210 +41130 +70047 +79517 +15274 +53731 +66104 +61684 +9272 +8648 +44231 +44820 +54856 +65004 +76127 +39241 +65315 +67847 +34413 +64621 +5712 +73706 +66768 +7497 +31445 +14017 +37419 +44945 +80656 +32888 +26616 +50712 +19022 +79301 +42161 +2186 +77178 +23402 +27202 +47647 +33814 +63055 +41973 +76467 +39384 +76375 +77184 +57332 +24914 +27152 +13162 +43404 +31176 +6575 +67284 +6843 +28113 +45980 +37523 +26629 +75271 +2598 +50154 +70952 +68729 +57175 +48752 +26621 +33116 +69332 +3876 +47709 +65550 +43155 +52596 +55147 +20936 +27819 +21380 +50103 +61848 +61175 +11458 +75557 +63440 +36397 +20123 +11757 +42083 +59236 +59563 +26507 +73403 +27968 +14198 +30349 +78846 +66870 +55805 +78626 +19775 +4121 +61788 +19000 +10475 +24669 +23091 +16112 +9621 +34853 +52587 +8393 +19450 +66054 +79451 +75500 +42941 +16761 +30092 +65871 +10387 +28358 +37175 +26706 +66134 +12598 +24270 +74438 +68049 +11066 +9739 +5966 +38105 +56969 +54179 +37285 +43327 +17435 +58246 +31793 +36729 +76250 +18266 +10846 +50481 +27864 +69796 +21313 +67001 +71618 +45166 +48467 +40439 +31501 +33752 +79295 +66932 +9520 +73856 +41346 +79273 +45171 +10521 +26625 +70143 +15955 +56991 +52823 +21418 +32149 +7573 +59721 +30630 +44055 +36994 +55087 +53568 +71528 +2205 +9342 +75089 +2847 +27419 +67699 +69596 +72240 +74529 +78124 +36951 +50638 +50551 +44825 +20743 +69070 +70536 +69165 +27513 +35485 +77614 +62172 +24162 +18819 +68983 +78450 +60675 +37137 +15795 +46726 +51614 +70151 +39861 +65984 +46308 +14329 +80472 +10652 +64640 +64652 +34986 +74981 +47231 +61555 +5775 +70893 +63855 +65270 +72048 +74898 +65935 +2996 +39234 +45259 +66002 +40826 +25513 +8993 +55030 +65019 +23250 +28702 +63341 +19672 +56945 +78922 +18340 +38267 +43380 +24695 +43729 +52992 +58545 +31473 +34984 +35617 +29830 +71159 +31041 +33343 +68457 +6087 +20924 +29712 +45357 +45425 +68908 +60137 +34723 +33772 +10862 +12805 +43986 +63072 +47528 +67228 +47724 +60495 +13501 +27479 +74968 +35409 +64649 +69098 +31583 +64596 +3069 +29903 +75030 +19483 +23310 +7851 +13696 +63133 +49806 +15958 +845 +71524 +55873 +66972 +20630 +41136 +13320 +75552 +11925 +68607 +33258 +68958 +80309 +53462 +33817 +49417 +66824 +67259 +25304 +25161 +45951 +22433 +65415 +14325 +55268 +42613 +41318 +22329 +3504 +66446 +40805 +67654 +40819 +9841 +19687 +79157 +52722 +54126 +28749 +8116 +994 +53183 +45141 +18010 +17243 +55470 +28176 +72663 +58265 +64256 +55678 +71835 +60354 +42871 +51598 +9952 +19609 +25868 +19145 +62594 +53993 +55171 +10428 +12058 +17432 +73520 +63836 +79299 +56616 +80493 +74501 +27211 +1353 +45955 +7611 +24720 +34533 +21273 +69080 +64767 +2816 +31159 +69918 +30442 +72033 +36079 +42402 +36758 +48351 +78221 +71779 +5461 +40005 +72066 +5026 +74476 +76591 +22250 +8868 +26201 +24623 +55941 +30330 +61861 +9205 +35709 +26278 +44253 +41061 +32741 +53260 +34907 +79888 +80473 +54103 +66129 +37070 +18773 +79648 +62277 +70235 +13416 +69785 +17784 +58311 +9442 +28101 +73474 +78364 +30181 +6375 +46186 +7630 +9264 +73087 +57346 +46855 +45733 +38674 +78510 +61659 +27946 +50406 +26954 +78880 +49435 +44038 +25211 +3006 +21971 +37599 +14913 +18920 +47845 +12532 +76142 +64698 +1306 +68300 +41852 +12673 +21114 +16476 +69024 +36167 +41368 +8188 +66211 +29236 +60527 +59827 +48944 +22410 +44044 +29670 +32572 +63052 +4177 +28969 +74983 +34101 +20367 +69734 +28253 +51654 +64494 +6155 +9415 +9343 +24361 +32748 +59355 +28820 +76820 +68292 +62270 +18830 +15297 +4438 +78007 +74549 +14025 +34896 +66174 +8024 +46284 +2730 +65156 +4259 +25346 +32458 +8238 +23869 +4756 +50063 +72490 +45135 +67696 +4502 +78179 +79346 +72981 +14213 +33313 +64818 +76659 +48858 +73687 +66654 +3631 +25064 +68832 +26373 +74592 +80626 +64385 +54490 +41166 +21821 +29688 +24928 +4369 +16540 +18690 +17767 +71740 +62754 +64211 +9491 +30917 +39783 +17187 +9308 +11674 +42026 +69216 +41030 +19928 +77507 +63739 +18337 +19812 +79529 +1328 +73547 +45756 +79762 +2657 +56612 +60892 +18418 +74290 +9727 +29085 +57475 +45296 +71627 +40761 +6949 +50718 +46458 +78530 +19001 +65181 +20209 +20914 +35491 +65891 +21101 +2964 +60359 +62685 +56756 +27404 +63478 +39465 +37486 +72419 +1751 +30037 +76452 +74073 +63640 +65580 +24169 +76363 +10987 +34304 +76158 +75593 +14446 +11188 +16191 +31927 +38527 +46608 +77623 +7486 +63567 +64837 +37610 +24112 +48938 +41261 +60671 +12454 +22585 +70678 +21188 +67391 +3195 +36363 +38022 +53579 +12699 +42498 +7538 +55894 +59440 +45364 +15860 +32002 +60806 +26464 +57398 +42759 +38186 +54923 +2227 +25375 +27757 +23293 +65812 +57822 +45993 +28282 +37637 +2406 +20272 +29128 +25564 +12002 +57022 +20426 +38998 +57937 +35161 +66475 +45362 +23471 +57680 +60414 +27126 +44425 +10442 +34406 +44430 +10570 +41210 +25142 +34054 +54251 +35430 +34797 +56784 +2470 +41052 +55282 +59810 +80709 +70838 +67285 +20637 +61984 +11649 +20372 +38024 +36825 +6854 +79748 +71887 +36328 +42563 +44408 +26364 +46918 +77955 +14559 +26869 +52943 +35032 +41262 +44046 +42572 +62125 +19015 +46890 +47928 +5478 +16263 +40659 +75446 +13336 +30965 +12455 +58324 +59685 +45948 +54573 +31377 +71181 +30249 +47191 +22461 +49049 +74560 +60846 +26259 +37872 +52593 +28193 +67543 +23129 +5343 +22015 +46166 +10920 +74543 +11220 +50050 +48601 +51029 +68613 +34744 +29041 +52258 +36974 +40383 +49396 +1228 +45220 +29613 +36321 +17350 +46579 +20356 +44916 +67381 +54249 +21225 +56473 +59529 +8289 +15175 +32213 +60981 +79166 +51367 +18958 +41255 +64953 +25720 +13038 +50847 +34782 +8236 +40113 +18031 +4753 +3703 +68427 +38077 +17424 +21958 +74284 +24567 +29508 +72119 +32762 +29878 +9622 +26005 +24999 +40930 +37185 +36327 +13100 +31805 +15436 +54584 +68564 +24368 +54964 +37659 +23605 +60552 +74277 +69056 +56521 +19372 +32695 +69493 +70503 +76862 +28626 +33154 +53561 +10384 +23380 +4431 +56983 +16569 +25872 +25685 +14633 +40554 +70178 +49925 +33060 +46245 +33823 +1155 +76716 +13945 +66692 +79382 +20022 +1676 +62529 +46254 +13879 +77119 +63251 +72718 +4328 +43515 +14998 +79893 +6893 +36644 +76290 +40416 +29450 +59740 +63465 +41039 +41844 +8134 +56404 +22656 +65824 +21340 +39782 +66349 +18416 +57601 +6223 +78098 +27548 +77981 +52662 +66391 +42080 +59602 +53849 +30928 +38730 +43834 +15081 +50083 +11663 +80728 +62084 +53489 +31529 +25511 +77544 +11542 +39196 +71389 +15974 +25406 +70314 +73408 +61961 +9124 +74826 +58499 +60608 +7274 +27844 +14601 +22517 +62134 +27323 +10948 +71704 +44739 +33022 +10477 +19889 +50946 +14275 +54164 +37684 +31584 +2425 +77449 +66525 +18059 +44466 +51928 +33021 +79668 +73962 +2324 +26531 +26796 +12152 +25011 +77229 +46677 +58945 +13094 +48724 +7490 +68298 +69815 +65843 +12285 +62699 +11803 +29702 +11912 +50173 +45494 +47799 +5374 +49579 +24366 +63865 +35876 +51540 +71487 +48163 +72407 +3753 +55505 +50846 +67052 +35938 +67219 +70766 +38381 +42362 +78156 +79043 +72969 +505 +59466 +38323 +8135 +531 +49662 +15484 +62872 +807 +4856 +60862 +6505 +35252 +34822 +42807 +25354 +23654 +40681 +59404 +53079 +31459 +62555 +31391 +6826 +74136 +39264 +567 +32446 +20040 +42612 +32172 +74447 +12301 +25766 +65913 +501 +24097 +75732 +57047 +27450 +72559 +19350 +10505 +69445 +46730 +69013 +55329 +43702 +73172 +58334 +5096 +5330 +63988 +75322 +78233 +532 +43231 +66194 +79555 +27557 +56894 +76273 +229 +46333 +16478 +19598 +62114 +43425 +13727 +58473 +34424 +12753 +40748 +21828 +31698 +68889 +57733 +64622 +50246 +60672 +37897 +39157 +42596 +48217 +33548 +24193 +5270 +46121 +64010 +48005 +25931 +38852 +6318 +4726 +38576 +4501 +69585 +6194 +8279 +55763 +13708 +64050 +50761 +74178 +19148 +17936 +40476 +37366 +54529 +49570 +60105 +52753 +24977 +512 +32078 +78851 +62889 +9763 +20007 +68345 +55364 +16687 +42725 +49451 +58399 +16724 +16609 +60373 +38967 +58020 +34513 +32439 +15803 +3998 +41440 +5640 +76745 +14348 +51796 +37167 +67213 +37920 +61782 +65258 +48941 +7931 +36673 +29193 +43905 +26512 +53795 +10233 +73695 +24500 +63066 +38990 +55150 +2533 +33219 +27281 +12919 +62690 +11429 +27843 +41112 +68793 +6143 +56234 +20225 +48856 +61674 +36125 +46595 +9487 +10534 +3861 +49430 +54536 +44619 +30391 +70530 +58968 +76342 +6682 +44451 +73758 +61703 +3447 +69534 +43592 +48384 +46860 +27637 +3076 +17778 +27345 +66480 +34493 +17285 +46700 +73951 +53569 +51129 +42049 +56110 +70835 +43176 +80169 +10436 +29672 +40927 +55454 +26292 +49563 +14504 +36572 +29606 +33545 +21765 +73692 +47597 +70141 +62956 +56980 +17950 +63013 +59146 +7812 +68767 +15797 +63856 +55536 +74660 +15849 +52838 +4036 +39979 +33925 +31542 +76743 +2167 +21705 +26379 +46672 +44312 +39842 +6797 +39894 +19728 +74471 +24157 +59841 +61769 +24059 +52628 +71989 +55756 +8662 +29006 +52012 +46003 +20357 +12567 +45695 +58709 +26646 +26061 +27833 +23540 +75915 +6378 +206 +71491 +37764 +55455 +20659 +45065 +62400 +59289 +42313 +60189 +79305 +52367 +45697 +55216 +3143 +45556 +7658 +15284 +66761 +23676 +12185 +14154 +39340 +9360 +18752 +23279 +24109 +42087 +78462 +75371 +9899 +25248 +4534 +5815 +79481 +4653 +56770 +74404 +43413 +35546 +79174 +58468 +40458 +32117 +61774 +43094 +7393 +66185 +1408 +39636 +74100 +53649 +61207 +60081 +47024 +76730 +71249 +74863 +47280 +40445 +35126 +49694 +12046 +27022 +20183 +1916 +41943 +43852 +77887 +15388 +17332 +21502 +62815 +79801 +21341 +12931 +41630 +33489 +51509 +8942 +20696 +14672 +49019 +37311 +41101 +67435 +61172 +30452 +14549 +59311 +67386 +37372 +73754 +65150 +39738 +26543 +19854 +45237 +72051 +41 +46431 +17492 +27407 +31547 +77015 +7432 +32126 +12537 +52316 +72350 +13329 +17035 +35839 +8735 +29760 +75799 +63226 +78039 +17795 +3209 +8580 +56080 +17540 +48238 +42832 +38683 +48575 +20944 +24088 +71490 +49891 +5286 +51311 +28053 +63732 +79743 +79172 +23977 +15434 +31730 +67888 +10501 +24239 +56609 +59435 +51370 +55081 +7402 +4476 +22787 +75332 +60468 +51054 +40271 +50751 +43654 +14323 +69913 +31990 +74168 +79840 +73827 +71319 +17821 +76568 +65866 +47725 +21925 +78859 +28560 +79964 +40306 +12034 +5693 +31888 +32875 +59027 +29352 +19059 +57286 +42743 +25536 +73218 +51905 +78135 +43546 +35167 +17480 +39837 +77753 +36214 +42002 +48714 +27431 +27960 +54682 +24427 +76993 +79126 +19320 +41612 +29360 +35258 +76078 +11318 +13749 +16652 +53174 +25948 +72986 +10516 +42863 +33259 +13685 +30223 +16219 +21130 +29736 +48705 +25657 +55387 +31380 +39274 +30674 +23159 +41307 +22859 +2234 +52656 +67070 +21432 +74398 +67066 +77792 +59645 +27542 +47855 +61689 +70295 +72144 +16581 +34890 +19726 +6471 +26143 +80774 +14636 +79958 +43152 +39925 +52574 +46355 +45711 +37454 +71021 +39390 +69157 +80148 +67075 +38834 +45544 +19707 +64781 +34632 +28922 +8771 +71812 +77484 +64156 +21717 +74963 +13303 +38866 +35248 +53159 +75613 +64963 +12665 +6009 +21872 +26128 +60210 +2441 +70858 +9847 +67583 +17184 +79924 +77193 +77850 +12594 +53023 +39796 +11556 +10810 +25533 +63421 +975 +49293 +63569 +13150 +682 +37130 +32669 +35480 +49374 +56778 +27421 +72666 +28574 +80370 +27246 +9429 +22562 +24934 +6983 +47593 +44375 +17487 +15597 +32105 +71525 +67834 +58354 +5155 +16161 +54862 +28644 +51268 +14187 +48285 +50641 +44297 +33857 +61287 +783 +18027 +1758 +65301 +78279 +76466 +30735 +65536 +55660 +50 +52089 +29346 +79152 +35320 +37240 +25593 +8511 +55342 +42067 +64408 +657 +76407 +1049 +61315 +13499 +5134 +30248 +27284 +78646 +38143 +4597 +42849 +49138 +71422 +41118 +20332 +74952 +78652 +16619 +40139 +34532 +52754 +76037 +52676 +37032 +46538 +57260 +23265 +45692 +65928 +36468 +36517 +19456 +70290 +39559 +60626 +38748 +67450 +17367 +16839 +31168 +65029 +21035 +67714 +45933 +3763 +32351 +39186 +78534 +66514 +58807 +40735 +23901 +985 +30419 +44410 +11762 +51917 +52046 +3576 +48845 +17235 +52564 +37830 +23025 +19279 +55321 +8498 +38492 +73522 +38539 +69417 +39779 +8745 +42780 +70192 +8297 +18182 +16613 +5594 +3858 +21650 +56164 +6661 +21328 +77125 +68689 +25918 +59141 +60461 +19834 +20922 +67251 +12927 +35238 +72352 +78974 +72281 +67713 +54383 +11076 +47848 +55213 +51515 +49832 +68915 +80286 +51098 +59428 +43448 +32162 +59567 +43079 +25026 +35367 +9145 +7038 +15498 +32266 +3471 +2392 +65919 +19172 +38290 +16418 +15650 +76557 +69420 +80428 +3137 +3766 +50496 +17940 +14520 +72410 +6765 +1907 +22680 +76797 +72091 +45716 +76511 +49900 +57716 +22307 +25926 +23894 +30500 +14712 +43914 +33755 +68588 +56619 +59495 +21594 +49516 +15382 +74348 +36750 +21321 +73085 +18696 +76164 +25477 +31969 +61384 +74181 +31293 +79667 +31102 +29015 +46287 +26208 +65572 +56492 +61158 +15893 +10254 +25588 +10532 +34392 +73799 +40553 +30253 +21201 +78559 +52931 +69632 +69162 +30654 +72676 +11101 +80725 +61785 +24208 +67990 +59247 +8643 +41970 +42768 +30333 +77166 +312 +58186 +25350 +8450 +64945 +70676 +62011 +60339 +17034 +11290 +2092 +66798 +23370 +65856 +70943 +20499 +34993 +64583 +57590 +27118 +65016 +30385 +74834 +35870 +33568 +68734 +21665 +66350 +55416 +67599 +53858 +23122 +54710 +345 +15747 +8867 +45679 +27906 +21440 +4408 +12764 +8260 +51298 +19661 +47006 +41928 +44400 +66299 +79248 +21458 +45345 +47363 +24230 +32138 +18358 +59290 +48822 +61114 +48346 +8124 +35535 +22152 +4941 +22327 +24038 +59484 +49459 +56646 +22137 +80305 +20319 +40094 +18218 +47954 +59325 +42250 +14524 +53841 +43161 +76100 +71341 +44963 +15168 +53968 +65533 +21339 +44811 +36544 +33862 +66058 +65831 +53110 +1079 +36061 +67437 +10469 +65383 +42343 +6483 +72077 +21342 +47658 +26053 +2453 +79580 +19877 +35999 +35381 +9018 +16600 +17025 +56403 +47206 +15204 +12794 +33360 +29869 +32020 +71550 +40801 +77636 +54069 +15726 +68949 +7664 +33095 +17697 +36367 +6518 +59354 +31653 +19047 +16631 +77496 +18346 +46936 +14011 +42381 +5450 +10727 +50379 +2571 +15555 +27498 +15637 +49458 +21156 +28912 +1016 +51784 +27742 +10503 +76928 +70368 +31392 +49269 +14141 +27237 +80345 +62457 +43125 +80039 +35371 +18404 +1480 +70945 +8516 +13643 +51066 +2553 +2404 +67567 +35958 +45322 +80209 +45129 +44762 +45174 +12993 +58622 +33179 +42894 +25139 +61351 +57770 +38543 +52683 +69235 +64123 +49870 +21590 +23453 +46784 +53592 +63987 +68478 +49937 +46075 +31428 +14339 +15154 +69120 +60553 +33867 +23772 +69048 +74823 +32784 +32653 +31369 +49421 +65220 +21973 +29921 +39147 +72786 +9310 +75218 +54980 +32620 +64823 +74976 +16571 +8373 +74046 +25996 +14054 +5144 +61820 +74060 +70500 +67424 +63345 +57895 +13851 +52898 +56058 +5382 +75085 +24051 +53802 +68039 +62065 +58547 +65702 +34964 +39606 +16497 +59403 +53343 +51104 +73315 +24064 +46682 +24923 +52934 +10738 +44955 +51014 +77664 +33957 +1248 +2485 +34417 +63870 +65632 +35040 +20402 +57936 +77777 +47879 +6447 +54676 +3323 +69641 +36696 +30864 +26330 +59697 +60169 +1877 +29011 +73998 +55176 +32365 +44704 +6366 +4704 +64460 +74882 +931 +70864 +10269 +45781 +73529 +72133 +14716 +6488 +45594 +24407 +16802 +68402 +62663 +52164 +48667 +33642 +252 +44364 +17352 +8220 +72391 +73179 +66445 +52534 +22074 +46407 +58642 +22452 +74563 +17329 +66482 +33272 +71107 +17796 +67309 +32026 +3658 +21506 +7175 +76057 +17880 +62281 +16778 +22310 +54362 +60128 +52713 +47086 +14091 +15397 +69488 +66620 +33968 +51604 +57255 +30546 +20681 +70937 +16390 +67036 +26594 +36060 +41079 +36701 +48471 +44979 +54117 +76053 +40216 +15631 +20515 +38259 +27239 +79901 +42173 +1264 +62337 +70951 +43164 +12131 +75658 +24637 +14324 +30424 +3684 +65114 +65503 +78299 +61609 +27798 +19045 +28726 +61824 +59747 +66162 +61113 +43527 +23412 +20577 +35796 +25786 +12 +34459 +56243 +48379 +28280 +79578 +64040 +70454 +16173 +10670 +13630 +37716 +5978 +11428 +40630 +22695 +2356 +62662 +31634 +29297 +15745 +43839 +74022 +31467 +45254 +48540 +73566 +62842 +20125 +56681 +1362 +20035 +24736 +21843 +21389 +77297 +67943 +1378 +6112 +52980 +40295 +50453 +49472 +4606 +21289 +38222 +60486 +71736 +20249 +23066 +71475 +37902 +26802 +59660 +40474 +50364 +49922 +18661 +61986 +30232 +6388 +49580 +63199 +15814 +13133 +25349 +75427 +530 +19146 +12599 +11559 +21276 +76132 +18673 +34672 +79829 +30715 +11177 +20913 +79059 +24486 +24846 +12087 +52420 +70472 +69482 +15056 +67860 +44458 +60748 +51620 +53315 +70386 +5100 +24282 +36983 +59366 +77677 +36216 +61352 +41980 +5904 +23996 +47718 +48487 +20383 +58757 +44221 +42674 +13958 +41299 +19911 +44450 +38008 +49091 +56317 +59646 +58889 +17848 +43201 +62216 +42059 +24908 +1607 +51350 +29781 +46999 +23786 +58626 +53734 +37013 +58814 +12280 +38034 +52434 +64183 +53691 +55311 +60091 +22894 +70133 +22623 +68093 +63943 +13203 +76571 +74435 +71442 +17951 +60032 +55195 +10762 +5292 +62637 +64638 +49373 +58323 +57178 +67551 +79348 +44381 +10336 +9831 +16624 +44981 +78073 +26482 +39915 +3930 +24398 +37236 +28441 +43615 +56813 +5315 +806 +49475 +26468 +35889 +76110 +57328 +24044 +60319 +56877 +63851 +19573 +26066 +22254 +32938 +28386 +77138 +45848 +42236 +5877 +41728 +60379 +55230 +30011 +20 +36081 +15232 +31503 +73669 +34753 +46490 +47946 +65273 +38503 +43949 +69411 +13836 +1254 +19487 +52956 +23220 +15789 +67061 +58908 +60827 +23387 +27575 +6943 +14571 +3775 +14215 +32291 +14359 +16092 +7250 +61156 +64303 +71125 +33276 +71852 +36388 +56742 +59607 +58199 +20474 +60018 +71659 +15887 +9923 +42481 +16405 +72266 +47114 +22783 +61325 +38103 +63980 +63322 +42738 +47456 +3907 +4310 +53328 +39506 +68 +58486 +46821 +66146 +43244 +35596 +78112 +55462 +70900 +76041 +37388 +8617 +43106 +20152 +31979 +34265 +35673 +9162 +71657 +60998 +34810 +75938 +65566 +73004 +55097 +40602 +51529 +36756 +49422 +79057 +74961 +14303 +40043 +48366 +68138 +17338 +41761 +67255 +10610 +63468 +77140 +23461 +33015 +25652 +73876 +12785 +17475 +28896 +25632 +71824 +42430 +38460 +16091 +70988 +8118 +7926 +25426 +1811 +23384 +533 +62527 +71786 +75114 +30436 +35635 +6622 +56528 +70659 +62133 +44226 +33125 +78468 +32473 +11664 +70639 +56325 +76899 +79583 +7435 +21058 +40213 +11581 +49200 +11891 +22883 +5350 +34461 +43888 +33316 +55743 +77200 +45506 +49963 +75225 +15421 +7009 +11163 +48328 +35111 +3115 +29250 +31638 +28449 +50703 +26270 +25398 +73977 +43214 +59928 +65907 +80323 +41257 +70873 +80005 +10800 +30163 +13871 +63993 +18156 +44326 +6091 +59500 +29900 +169 +58742 +32437 +12076 +49548 +34114 +71776 +75475 +36494 +47474 +40575 +18454 +4361 +39399 +69658 +68768 +48164 +1652 +37589 +46528 +80402 +46569 +78565 +5527 +16309 +30077 +58255 +63000 +73738 +46095 +42126 +45320 +11691 +48473 +935 +6981 +28102 +1277 +77725 +48160 +73281 +42680 +36913 +28391 +18219 +67241 +75458 +65128 +17079 +65030 +2372 +13897 +32933 +75123 +79371 +11686 +31457 +55063 +55726 +1625 +6317 +55340 +79802 +10994 +62078 +38901 +64430 +65056 +38018 +4432 +65098 +64893 +56290 +14381 +71671 +53591 +46113 +67982 +27845 +13268 +57278 +22568 +46866 +75420 +22240 +30112 +37095 +13500 +55889 +49045 +20852 +63631 +29899 +78805 +66489 +54568 +18547 +56387 +10633 +61054 +9652 +16840 +19377 +15738 +64759 +62615 +8587 +57330 +45768 +48882 +62592 +44360 +39994 +38398 +77767 +14695 +3163 +55623 +29479 +40215 +51963 +58104 +72496 +32396 +11171 +8544 +64859 +57461 +23087 +67404 +16875 +38058 +61294 +17130 +58819 +75468 +59868 +618 +27984 +1824 +54521 +25388 +58466 +20466 +14891 +58286 +2527 +38995 +59837 +17722 +57167 +38533 +23076 +53913 +43375 +15020 +12949 +55024 +26803 +26969 +80235 +68800 +70367 +59329 +68606 +42140 +2083 +48830 +16863 +12713 +49875 +30503 +40527 +67203 +76957 +38825 +60891 +40964 +8443 +71764 +29251 +70571 +77579 +21884 +7911 +15842 +53948 +255 +15999 +79323 +58384 +43218 +5905 +18710 +29306 +57373 +73763 +43215 +52670 +54983 +79427 +48127 +58118 +4273 +36891 +35413 +11609 +23064 +27106 +51554 +14353 +47384 +30153 +39198 +71933 +28872 +22994 +23620 +49197 +19414 +72245 +74913 +58862 +15806 +41639 +80398 +66014 +78751 +54718 +47418 +43726 +8312 +4460 +15016 +71432 +27980 +45778 +62907 +44142 +49763 +57674 +75006 +24026 +3787 +76781 +70961 +12894 +55280 +25791 +41167 +11341 +78328 +9165 +80585 +26070 +78237 +15095 +13910 +65182 +77916 +12689 +2015 +28542 +34883 +80720 +5085 +41400 +10135 +71426 +32814 +73516 +30170 +21575 +31595 +78738 +35578 +15507 +53482 +65289 +69609 +29826 +50977 +72895 +15428 +44019 +46573 +66178 +64488 +43547 +60337 +26598 +71616 +11931 +51624 +17491 +36558 +12020 +67539 +43639 +3807 +70698 +47443 +28219 +66167 +57349 +69677 +39429 +7672 +43704 +39362 +67727 +48090 +79374 +75577 +52362 +334 +4709 +44830 +72153 +37871 +16661 +46013 +34299 +45481 +48552 +67298 +17080 +76205 +21677 +44420 +24524 +37464 +58671 +40297 +1376 +75673 +46300 +27157 +3405 +10347 +9683 +54042 +31090 +8603 +6749 +2732 +7376 +6975 +52846 +2038 +6500 +3268 +57042 +49498 +26495 +10710 +78160 +54303 +79887 +61236 +70059 +53452 +34320 +67239 +41929 +41174 +62874 +59186 +28114 +71807 +69900 +24565 +17564 +69409 +26178 +24084 +33306 +51195 +13857 +75580 +36345 +42730 +44469 +59592 +52482 +25580 +72314 +25253 +75011 +69729 +40731 +58485 +42803 +51705 +30426 +34383 +37342 +3482 +27159 +4656 +57719 +48647 +53412 +34838 +59343 +50581 +49678 +76988 +36230 +7080 +20172 +57243 +49432 +4070 +62183 +60010 +55347 +63202 +186 +18839 +61419 +49295 +79356 +22559 +74816 +80407 +76612 +62378 +59729 +4874 +5255 +34473 +57864 +68809 +70447 +74114 +30993 +67103 +3159 +24488 +4701 +68262 +60019 +29243 +18601 +1170 +60619 +65578 +66417 +53907 +13435 +17282 +2014 +56100 +8123 +73644 +44192 +58369 +65225 +16185 +75664 +27473 +10631 +72606 +24025 +21179 +27260 +16152 +52661 +55865 +16801 +11080 +557 +79189 +41187 +74376 +52735 +6885 +42985 +13645 +41388 +59183 +3976 +11170 +16567 +29622 +48799 +72276 +63645 +31729 +51826 +71076 +44991 +20018 +42644 +64449 +66804 +51589 +1924 +28765 +51100 +20639 +61778 +54893 +44203 +6292 +71178 +10869 +24916 +41986 +49444 +39317 +1071 +46857 +28517 +51212 +34177 +60209 +10059 +50413 +49 +28312 +71997 +66230 +7592 +72860 +19876 +22487 +58095 +66835 +51732 +49626 +8340 +76709 +42239 +8635 +39251 +12585 +7159 +73530 +68546 +14030 +45898 +109 +54377 +13886 +80261 +736 +11869 +54942 +75947 +47818 +48573 +68708 +53547 +38487 +34308 +19610 +74828 +53414 +42232 +61251 +42705 +75107 +4721 +75763 +5305 +60192 +31365 +26681 +79606 +51856 +46226 +74076 +76139 +59834 +11255 +9835 +33345 +27310 +58287 +73247 +3392 +72183 +1551 +17389 +72693 +78435 +35536 +27957 +755 +26455 +12721 +14082 +18239 +25666 +11522 +12907 +80481 +15478 +19917 +43827 +36925 +76974 +4209 +11813 +18196 +39330 +67212 +58777 +41974 +58015 +78683 +77311 +39576 +43519 +9276 +7052 +68679 +42073 +56322 +2714 +25569 +9075 +53614 +20891 +45815 +75306 +36515 +74567 +76406 +33454 +31557 +53476 +79461 +9114 +15825 +70569 +50961 +50117 +9964 +32584 +20100 +36233 +53465 +65227 +62962 +17064 +52439 +22218 +74800 +28602 +29386 +27729 +11498 +21272 +1038 +25590 +8162 +19923 +34847 +11537 +23362 +67689 +28132 +61216 +44821 +79380 +56337 +23338 +55909 +15876 +7600 +79600 +29710 +70933 +6026 +54887 +1892 +54530 +76163 +44258 +28232 +35128 +3645 +44611 +44623 +38194 +10824 +10993 +26769 +46772 +61034 +20269 +76161 +39605 +54748 +56845 +13917 +35268 +35024 +56883 +79045 +2681 +6632 +33825 +41890 +69826 +53548 +37307 +31567 +75141 +36785 +26048 +42079 +15110 +8583 +64180 +1253 +25599 +20446 +45048 +22697 +6079 +70510 +50325 +63486 +71252 +65852 +45580 +5408 +73920 +69276 +75513 +33506 +15299 +31039 +48278 +49097 +47596 +2552 +9274 +32111 +37820 +67177 +39696 +24911 +19659 +35788 +34775 +39193 +1314 +15170 +22141 +16328 +64462 +34451 +9160 +33818 +30510 +49389 +78261 +16078 +43154 +21889 +75169 +52526 +56816 +43765 +33300 +15354 +21254 +65885 +49167 +62926 +45776 +72372 +3821 +33374 +65414 +52555 +55257 +13243 +69108 +4384 +56247 +70123 +42411 +63287 +33790 +58710 +24118 +74401 +78932 +62734 +52193 +63912 +31708 +710 +20071 +8451 +71077 +25790 +15420 +53515 +22248 +49811 +2925 +27384 +24556 +53612 +72831 +77609 +54752 +19866 +77429 +55624 +64172 +30786 +78106 +62451 +17303 +56217 +5216 +16037 +55161 +46231 +9140 +75522 +22678 +40610 +12554 +48126 +69745 +52226 +20261 +67471 +34305 +20130 +72863 +76499 +19754 +63288 +11178 +53833 +40309 +7849 +57794 +2582 +45525 +58535 +29651 +51093 +68680 +11306 +59665 +80702 +55731 +16410 +53404 +76453 +25847 +40359 +62120 +66661 +48342 +28947 +17764 +64432 +47258 +47378 +43808 +64717 +28268 +10785 +76717 +52058 +66520 +24707 +44279 +47022 +72538 +46024 +19351 +76112 +50346 +14830 +71026 +49782 +17642 +50267 +23976 +54920 +3510 +39359 +35356 +52121 +29958 +61918 +58173 +27995 +74257 +79381 +40897 +47990 +29071 +26771 +19790 +31500 +28827 +58928 +51979 +35649 +52348 +19371 +18506 +73316 +43476 +47463 +24171 +75497 +66428 +11086 +76580 +29852 +51047 +46965 +40172 +36222 +20023 +30372 +33871 +34722 +46371 +24612 +41847 +75973 +3630 +59586 +63712 +38408 +28597 +61765 +50627 +28774 +65094 +54079 +16216 +30816 +50784 +73904 +59106 +39426 +10079 +4365 +61127 +55904 +72047 +856 +61018 +59647 +37048 +20268 +27571 +67986 +80068 +74388 +74893 +67585 +76851 +73217 +61819 +31079 +25078 +64133 +20075 +13564 +19865 +8734 +34958 +35882 +45208 +59883 +31612 +47503 +80531 +76325 +3294 +65107 +63037 +32777 +66275 +37757 +76954 +24082 +46702 +62672 +13146 +51978 +59633 +6627 +39568 +62727 +25096 +11996 +860 +23528 +76351 +17472 +31953 +65765 +32421 +57246 +10174 +1503 +56003 +43203 +41011 +63175 +19296 +6957 +66280 +40378 +33359 +3063 +60870 +23781 +34432 +48530 +3094 +1712 +29132 +21619 +19905 +12581 +63247 +2567 +26262 +1543 +34621 +6635 +50888 +17569 +67232 +64325 +22265 +76690 +55096 +74351 +33141 +40041 +4003 +7955 +766 +38081 +12387 +40509 +31122 +73607 +20345 +26078 +69907 +62656 +43676 +62903 +6075 +27098 +8508 +28643 +12754 +78092 +73336 +7738 +37165 +10899 +48020 +35490 +11613 +20981 +48885 +64726 +55577 +41669 +40615 +42975 +27795 +75034 +27465 +78902 +29594 +3324 +54283 +22739 +23108 +48662 +29983 +9756 +66573 +53792 +54129 +47942 +50756 +8044 +67512 +62204 +53280 +41788 +74556 +46507 +9722 +74062 +38042 +18374 +11578 +23621 +71151 +63905 +75216 +47095 +72080 +61 +77282 +62791 +57367 +51809 +41332 +53305 +78164 +43999 +29002 +50515 +37346 +62845 +76218 +132 +10923 +32123 +25552 +53544 +69328 +71006 +15442 +3718 +40544 +63847 +72085 +18142 +5069 +55018 +575 +39697 +29329 +32922 +6524 +37939 +53599 +31349 +71438 +75662 +40109 +45056 +71078 +65113 +72416 +72114 +67509 +17449 +33307 +16675 +3511 +9804 +37402 +70831 +79550 +22302 +74341 +53872 +60467 +25187 +54115 +61263 +43976 +52552 +8988 +49401 +12637 +59954 +68697 +59705 +21771 +56726 +48088 +58523 +79116 +20628 +22490 +43620 +19962 +56765 +3030 +61640 +20199 +57917 +28932 +33178 +53975 +56555 +25105 +56059 +75570 +57445 +4911 +43773 +22269 +61892 +44365 +47733 +73371 +42010 +58 +61134 +57353 +72291 +49715 +65419 +74372 +57038 +8863 +3829 +43480 +37573 +77825 +71243 +41845 +70863 +74053 +51933 +17129 +8030 +7687 +7161 +38898 +37290 +76536 +40929 +8873 +37123 +58450 +35443 +33283 +9989 +40932 +66635 +52756 +61504 +19185 +1520 +50941 +44526 +67438 +63383 +78500 +78965 +25671 +56018 +63607 +27424 +54275 +37858 +49807 +38537 +11796 +4326 +48642 +80281 +47943 +65480 +53420 +52408 +71401 +74587 +4988 +40737 +3142 +57965 +57769 +20815 +22972 +15951 +58291 +34212 +77737 +43609 +21171 +6487 +28971 +39672 +4877 +15790 +37546 +17258 +20296 +77074 +31449 +26310 +23184 +11329 +34951 +59189 +24959 +61952 +51513 +47817 +31679 +75849 +39864 +53658 +9 +52087 +22584 +50371 +50372 +8396 +51162 +68685 +56155 +14514 +49529 +28684 +46799 +79830 +37516 +28025 +63216 +33228 +80231 +37617 +67215 +71477 +12054 +17555 +60031 +65963 +66062 +79278 +60055 +31835 +47263 +62736 +18779 +69962 +74422 +10990 +40006 +74140 +39182 +53133 +77944 +49339 +3427 +57483 +27691 +79524 +50697 +71255 +77781 +36122 +24031 +50478 +34900 +8612 +46415 +48452 +48969 +47574 +46941 +60599 +53134 +30240 +51627 +37352 +419 +18727 +76909 +69958 +58531 +73300 +52785 +80338 +78002 +50273 +31193 +39155 +30737 +23399 +5790 +60708 +69742 +48438 +62058 +10202 +33537 +76361 +58827 +68984 +1265 +1089 +20616 +76614 +3225 +36588 +2 +36052 +30318 +62807 +53551 +30324 +1842 +73128 +3101 +70475 +49113 +31226 +50582 +58248 +50930 +55308 +1278 +24006 +68891 +65012 +8829 +41066 +68735 +47184 +55767 +37473 +37022 +19376 +61042 +20979 +43090 +32813 +686 +45548 +57387 +37357 +57492 +62739 +55464 +48234 +6262 +62275 +8572 +55681 +67606 +76315 +31922 +63129 +60141 +52667 +5206 +7642 +57075 +37963 +8559 +58102 +31338 +57738 +49721 +77350 +77217 +22720 +77659 +31760 +11483 +38412 +16199 +76962 +72224 +60006 +40158 +47406 +48042 +42328 +77730 +50798 +25749 +48631 +32407 +52895 +39432 +28041 +12525 +69273 +55884 +29413 +37088 +64665 +64828 +22786 +79709 +64772 +39630 +2090 +24001 +4687 +67258 +3 +62202 +64051 +41300 +28677 +73779 +55704 +53062 +6807 +67507 +29203 +67475 +370 +57111 +38093 +24120 +3327 +79623 +8642 +17587 +40887 +35566 +74035 +76953 +51557 +7407 +21666 +34070 +56311 +21630 +30914 +27564 +56285 +49837 +63269 +20752 +59836 +31257 +12572 +39109 +20687 +41790 +50207 +70732 +46513 +47866 +69424 +26299 +35892 +68109 +29964 +37752 +40091 +39219 +4838 +30963 +61791 +31156 +4246 +6639 +63775 +71362 +74905 +44329 +29287 +72408 +71485 +35619 +51322 +28002 +78189 +59261 +41081 +11209 +10718 +73331 +69230 +7251 +22763 +65176 +46828 +18917 +80528 +16087 +46389 +60106 +47968 +26496 +50135 +33134 +50957 +14097 +72269 +59927 +52763 +26342 +23118 +53509 +62568 +33452 +11223 +79859 +52361 +60910 +64769 +47438 +9337 +4631 +21569 +35636 +51411 +78546 +32077 +57747 +3460 +17682 +32634 +23194 +63822 +30012 +33510 +42316 +54019 +48335 +68933 +63088 +6857 +39391 +51000 +66543 +8010 +11866 +50739 +61112 +78213 +13208 +20760 +42920 +27562 +28202 +17835 +42314 +50860 +16051 +6697 +29625 +63397 +8513 +8748 +72468 +25427 +54315 +3794 +80596 +29665 +70686 +17393 +72502 +40739 +41685 +67441 +44195 +68847 +45426 +5949 +13009 +30744 +12916 +29491 +70063 +62272 +66689 +2683 +46709 +33356 +7340 +70310 +20124 +53952 +74375 +58869 +11132 +20989 +30988 +30957 +23222 +14266 +56686 +10499 +39946 +21152 +33672 +79979 +28999 +67808 +5674 +37143 +73089 +70879 +49997 +33785 +28448 +19997 +42339 +60437 +33643 +473 +78838 +62675 +68584 +80540 +76400 +12615 +20236 +54495 +11476 +26059 +61331 +28623 +44587 +17155 +52991 +42912 +64954 +76842 +32278 +57209 +35951 +4345 +5495 +24592 +12485 +7165 +58912 +58035 +43876 +39003 +45234 +51168 +12198 +5271 +3735 +74698 +68335 +73376 +30259 +47118 +64910 +34351 +48870 +2950 +60715 +9820 +63152 +26690 +60732 +25206 +20763 +23372 +25133 +5447 +4356 +45070 +37765 +43248 +23897 +29196 +399 +13109 +22234 +6827 +366 +2515 +48836 +46705 +16855 +16 +73836 +49194 +59788 +51352 +9747 +60801 +53969 +38579 +18448 +60479 +47809 +20039 +42922 +71794 +61481 +33964 +11521 +14045 +22408 +40663 +3912 +29785 +18437 +12335 +66492 +61982 +47328 +28911 +60109 +39916 +38591 +23355 +52957 +65205 +77830 +33016 +53877 +17751 +57093 +9128 +2907 +36908 +4278 +54297 +51092 +71439 +33402 +2074 +15676 +42374 +76804 +35292 +10874 +68751 +59521 +72323 +23862 +26017 +61838 +40789 +50444 +36650 +31713 +43165 +70207 +59896 +9880 +36791 +51125 +36273 +4439 +62085 +50440 +20525 +42447 +22816 +69624 +59565 +3263 +71558 +73576 +50928 +67462 +23573 +74452 +31285 +43192 +5328 +20597 +45686 +11382 +43538 +27615 +34147 +68529 +80758 +19893 +37230 +41573 +69507 +31142 +36616 +54327 +76508 +17396 +51410 +73881 +5516 +15385 +49853 +45379 +21480 +58677 +71083 +71456 +63639 +49502 +45256 +59161 +45715 +46861 +28483 +50637 +25486 +26711 +55328 +63328 +29802 +23358 +29044 +52177 +1982 +43681 +44485 +49196 +59456 +3541 +47616 +619 +55933 +79871 +40107 +63547 +29817 +77052 +41699 +3274 +1325 +35869 +5714 +54335 +62391 +21634 +10096 +11396 +48644 +37300 +11887 +39311 +18001 +30099 +4171 +40652 +76975 +47836 +47535 +33684 +47572 +28456 +29636 +62505 +56201 +7145 +37943 +23861 +43793 +19441 +20011 +78885 +355 +15446 +6818 +19192 +43832 +3705 +11072 +51947 +71374 +45500 +48143 +37558 +56150 +15429 +54580 +16553 +69076 +46153 +77519 +77244 +37140 +35227 +42814 +42641 +8366 +39321 +25784 +28986 +43742 +56887 +74562 +26277 +79506 +67076 +3740 +65314 +28683 +25871 +43560 +46508 +58429 +37436 +17563 +61731 +2358 +76277 +43891 +45268 +6358 +12590 +47557 +45612 +28788 +16923 +34395 +41752 +76288 +16697 +9355 +28182 +43504 +25838 +34673 +23683 +73490 +53115 +51847 +23106 +10871 +71098 +37853 +17423 +57510 +46665 +66823 +56641 +5371 +48543 +66386 +26113 +28729 +53753 +25265 +6731 +70387 +47266 +51421 +38685 +52117 +44547 +38241 +51806 +3779 +25932 +20194 +15939 +15243 +28327 +15458 +27230 +46905 +6650 +53319 +27276 +56963 +33660 +42588 +28991 +67824 +45722 +67704 +79467 +72057 +30959 +78944 +65342 +73338 +72954 +48227 +42834 +19925 +62583 +23112 +9455 +53640 +9214 +53213 +3240 +63099 +35729 +72605 +4338 +35952 +54761 +22400 +9096 +64455 +42268 +12243 +69404 +11951 +41679 +19260 +75554 +17070 +42383 +75277 +74278 +25152 +18412 +22107 +8928 +57755 +60517 +54211 +27547 +11824 +52264 +40441 +20756 +21039 +10563 +56344 +34009 +1134 +9021 +42075 +72516 +21849 +10533 +60932 +5396 +30186 +23777 +17905 +37984 +78742 +61444 +16107 +63241 +23421 +58306 +35001 +15952 +33585 +9877 +20636 +78256 +53811 +22534 +15762 +41382 +68698 +41695 +77692 +41871 +25938 +26131 +44145 +70796 +74090 +59149 +58658 +39217 +72123 +22440 +72489 +31003 +13005 +37514 +40371 +55361 +80568 +11715 +20306 +13314 +52755 +15897 +74920 +42341 +54036 +70610 +21617 +34721 +5077 +3728 +72249 +8112 +66660 +21403 +57851 +53432 +80057 +78249 +44517 +47853 +31139 +71149 +63643 +4190 +495 +69217 +12589 +55385 +9703 +72383 +349 +76658 +7114 +60021 +54782 +38418 +40880 +23128 +73414 +52678 +25404 +2352 +38547 +30545 +25196 +54699 +5186 +18865 +66112 +68541 +53516 +43746 +79475 +15267 +33224 +19552 +58167 +69989 +56829 +30440 +45597 +75051 +65606 +5543 +35807 +75695 +62774 +7333 +1887 +31803 +58708 +12379 +9838 +65460 +18501 +59577 +39041 +24845 +17416 +11959 +9809 +3826 +56251 +63788 +40712 +32733 +67141 +21319 +37540 +55898 +47082 +52450 +79011 +25832 +13365 +30647 +62302 +6644 +50579 +71715 +59123 +5596 +64998 +4611 +44847 +64569 +21728 +44336 +33036 +25012 +6072 +56265 +46185 +15707 +12322 +8533 +25003 +77869 +9975 +79314 +4377 +6557 +30780 +8925 +21080 +74771 +32993 +18421 +27630 +75731 +52902 +17101 +24859 +26406 +19718 +1464 +54932 +4023 +69735 +71579 +56112 +31443 +25823 +33910 +77963 +44748 +24762 +54291 +64923 +73636 +13346 +7966 +59031 +48385 +63039 +30747 +71451 +34906 +19497 +55451 +23923 +39690 +80686 +41853 +25121 +54219 +51244 +53535 +27301 +36025 +69718 +76181 +68502 +78480 +45634 +35694 +30039 +26742 +35422 +36920 +8509 +43099 +22226 +38581 +47989 +2369 +28831 +43422 +78434 +14926 +57835 +69135 +21331 +5955 +3955 +39770 +65758 +45272 +7362 +20938 +71504 +3913 +22963 +59650 +42654 +17173 +40465 +57378 +71323 +35864 +35763 +43802 +34786 +49696 +79581 +44227 +80776 +33661 +55655 +79728 +7208 +32780 +56594 +72571 +22387 +23643 +64340 +14670 +22181 +61963 +60221 +43931 +71134 +31673 +56620 +33087 +45479 +68745 +24313 +35983 +75942 +3465 +13771 +43470 +39705 +69059 +11005 +20881 +54542 +79326 +16386 +30399 +53552 +60706 +63957 +17011 +69639 +47304 +47275 +49530 +64222 +14619 +12969 +3841 +76252 +52126 +14464 +50018 +12538 +65598 +22555 +40488 +48803 +35822 +31683 +65111 +78321 +11384 +20728 +60810 +58116 +68317 +25165 +41258 +61636 +8505 +7645 +17479 +55478 +51193 +17342 +45203 +6169 +71990 +10271 +77774 +27214 +66820 +60027 +76870 +35415 +12719 +1812 +5274 +5588 +26040 +74687 +62674 +76596 +16326 +71104 +72401 +21463 +12150 +50975 +50506 +66161 +26404 +61806 +68256 +402 +2262 +80149 +1394 +78111 +10911 +28210 +35173 +42995 +36535 +51932 +68507 +12047 +68473 +62683 +63763 +39357 +18883 +68988 +18350 +50238 +39101 +18564 +46306 +33819 +73029 +16105 +15573 +15205 +31357 +21539 +73140 +6207 +43740 +57551 +74867 +59048 +66343 +39313 +9641 +66376 +7437 +38783 +38676 +58209 +79469 +13550 +72943 +53221 +65387 +16313 +63638 +14022 +9368 +37851 +65401 +38360 +33111 +38074 +38244 +74407 +68020 +80550 +30580 +33576 +37146 +40238 +52471 +47903 +75630 +54565 +17310 +58851 +71797 +10350 +77417 +44997 +71036 +2767 +29553 +72339 +76632 +53344 +45886 +43029 +33250 +37709 +75028 +6560 +19579 +19998 +48554 +69982 +24857 +49534 +65612 +68755 +7220 +30644 +68628 +59301 +29973 +60566 +59000 +49513 +77909 +12293 +25706 +45698 +50242 +11116 +15768 +8649 +73191 +41671 +30078 +37819 +1766 +62921 +75024 +33906 +69025 +3156 +20534 +70923 +68324 +13632 +54272 +56971 +46175 +68433 +34543 +59930 +12004 +25829 +42338 +65101 +40221 +52124 +51896 +59269 +14211 +54963 +31438 +36010 +53809 +80762 +34403 +37985 +14529 +34463 +58191 +6713 +4747 +57576 +33137 +51630 +44709 +774 +18359 +29170 +17812 +3777 +53293 +23450 +4536 +38441 +17806 +15672 +16536 +146 +12180 +32530 +74251 +16716 +40355 +70473 +10840 +23495 +7455 +2371 +54695 +52023 +67895 +65922 +31465 +11915 +72625 +3446 +56956 +60148 +18164 +44255 +45238 +15226 +42360 +20978 +15864 +53341 +40459 +42357 +16797 +56757 +59248 +4335 +65484 +62094 +7561 +10858 +8569 +58459 +21211 +22990 +51786 +9788 +77885 +43168 +1578 +43759 +65309 +51822 +75259 +16930 +53496 +61587 +4657 +19871 +48504 +27255 +64184 +17856 +18844 +8415 +77635 +13996 +4274 +53479 +70924 +75790 +63416 +50782 +75496 +67634 +67965 +9715 +44591 +31300 +20964 +64800 +6519 +56205 +4331 +51926 +6127 +12653 +46510 +58238 +61929 +38176 +8940 +49671 +39776 +44536 +60194 +1515 +35291 +60709 +74175 +9241 +12238 +11810 +37786 +3769 +79009 +19505 +21632 +38763 +43779 +11148 +50156 +51681 +30569 +69592 +43610 +66007 +34605 +76722 +61548 +79177 +21649 +41161 +37803 +37472 +8598 +2245 +55111 +31130 +17565 +14246 +15549 +74728 +10068 +61873 +72616 +12429 +29902 +65877 +73367 +31732 +56388 +4752 +29938 +22815 +71965 +35599 +56808 +5003 +5105 +10080 +75611 +68233 +39199 +38886 +31911 +79510 +65983 +60484 +68337 +29466 +36519 +59452 +74546 +18187 +76271 +69354 +10115 +62224 +51247 +59861 +51736 +25539 +52424 +45803 +10145 +65216 +20239 +28169 +32310 +63628 +75950 +80062 +47937 +22945 +12325 +69887 +21856 +29664 +24520 +75155 +27636 +13002 +21145 +4000 +62098 +4380 +54416 +75640 +58844 +54939 +55418 +59588 +4579 +48564 +13003 +10031 +5580 +60933 +69890 +48733 +34821 +37255 +44397 +28289 +35849 +75905 +27267 +56508 +15980 +25013 +60033 +15251 +12066 +47473 +11345 +58973 +21756 +77537 +61911 +47607 +57990 +3771 +13470 +66890 +1863 +46499 +79207 +49877 +21819 +64153 +73664 +70857 +40738 +62957 +69542 +23608 +62506 +14217 +33749 +68537 +69406 +5927 +31031 +65825 +50730 +57034 +18658 +32021 +14412 +45490 +18100 +42917 +43323 +64464 +34946 +5679 +61356 +58559 +11337 +10577 +66171 +55304 +64426 +53046 +4391 +47668 +9526 +908 +76601 +18792 +76663 +32856 +5088 +45119 +64918 +41366 +24067 +37443 +32982 +21285 +8907 +63198 +47629 +23560 +68786 +78849 +61190 +62639 +53454 +45816 +33736 +34941 +930 +17143 +27481 +70575 +56703 +66640 +333 +10297 +79678 +74367 +25846 +9373 +23464 +50458 +20796 +9635 +13717 +45528 +46021 +22951 +52435 +36691 +2252 +80408 +25630 +26081 +2375 +11654 +37703 +52206 +45591 +72357 +28121 +35887 +10395 +26830 +12359 +70362 +8932 +67130 +437 +76662 +3547 +63948 +21184 +8049 +31565 +57439 +57350 +79281 +63622 +15439 +13489 +66405 +38740 +58009 +6905 +69262 +2875 +79218 +20500 +52330 +51877 +51843 +66424 +52321 +58438 +25127 +16627 +17474 +68610 +79946 +41226 +16015 +77495 +58558 +32283 +34935 +73389 +16555 +13787 +10196 +58741 +80384 +79351 +76780 +60746 +56690 +60916 +5282 +36205 +62318 +40329 +51812 +69117 +53469 +53933 +10755 +54813 +43027 +5107 +67217 +61185 +22898 +64632 +79941 +31766 +74624 +19342 +15480 +66508 +79499 +18201 +32442 +11186 +16575 +48788 +64507 +11385 +70609 +26828 +16847 +36278 +8619 +19713 +28491 +72305 +73428 +66036 +11100 +17481 +23454 +26382 +27915 +63930 +38377 +37291 +76815 +10735 +42755 +41128 +23032 +3727 +21791 +42398 +6457 +56959 +47573 +4958 +47514 +79937 +45021 +23088 +16812 +7069 +60307 +66580 +73458 +22630 +46045 +5384 +18942 +56030 +16431 +20299 +64388 +50678 +37901 +43580 +53407 +37310 +204 +34464 +80061 +7351 +14035 +51984 +6643 +53812 +53986 +56504 +19098 +39431 +4028 +63290 +3012 +5468 +10288 +58098 +47164 +7719 +48711 +2870 +40058 +20460 +10337 +22065 +26317 +44693 +21600 +77720 +78323 +76837 +22795 +17893 +73807 +66789 +10304 +44691 +33303 +68197 +14868 +76410 +28887 +73623 +70765 +66439 +70840 +40622 +29172 +80272 +8315 +32550 +6323 +54250 +77760 +47604 +15802 +63535 +11302 +5575 +35457 +12817 +76941 +41693 +58681 +1096 +60818 +79330 +7794 +13581 +1996 +76584 +69538 +53609 +13114 +65136 +11478 +54202 +15904 +49251 +6623 +74332 +58689 +701 +59474 +63909 +44551 +50605 +77451 +9795 +41225 +51804 +80283 +28347 +31719 +21447 +49842 +19618 +68371 +16180 +22337 +57207 +22677 +7335 +12550 +35692 +4197 +37092 +68875 +19113 +30931 +22480 +58620 +26859 +9628 +35501 +7908 +74091 +65422 +32721 +20064 +64178 +56564 +60847 +1006 +11371 +80133 +36291 +31312 +27552 +6987 +5436 +10774 +16913 +75461 +53637 +68784 +16353 +45508 +24191 +24750 +20063 +28851 +76929 +39740 +57948 +76215 +21302 +55196 +73796 +49412 +40125 +28746 +16419 +52281 +43228 +79807 +36714 +63977 +56154 +21260 +13818 +30277 +53668 +65390 +22321 +67525 +72202 +46851 +65648 +38962 +41585 +45047 +47051 +14563 +11872 +21593 +19136 +47687 +65974 +12663 +24537 +12769 +16288 +79609 +4420 +5732 +57441 +2923 +19646 +963 +44812 +80363 +62850 +36179 +40679 +54564 +40623 +53071 +53636 +73409 +76089 +24192 +11369 +26457 +22665 +55089 +60984 +6004 +71449 +55307 +21559 +6871 +53097 +3008 +63687 +42441 +19099 +24251 +58797 +3207 +41968 +55377 +15677 +56515 +54316 +42627 +51187 +10764 +27967 +25405 +67712 +42681 +12784 +26247 +43923 +36864 +51442 +33051 +46575 +68601 +19205 +7766 +1369 +71771 +42207 +17048 +51552 +23881 +50502 +78893 +54252 +35662 +52513 +64839 +45233 +28944 +12732 +67004 +24528 +39280 +75985 +80240 +11778 +56478 +18154 +26054 +37838 +73099 +24491 +38977 +28378 +8195 +79700 +50755 +26144 +69954 +5352 +31844 +54871 +61644 +63069 +2784 +31949 +47134 +68701 +67785 +52766 +29845 +53630 +36299 +9439 +31260 +28140 +68850 +30227 +16371 +51051 +80619 +39472 +59963 +8388 +80639 +30443 +35172 +9091 +32489 +77820 +10128 +56477 +9554 +12236 +68924 +72097 +65328 +18169 +71128 +64802 +26199 +13859 +48883 +61005 +11039 +46882 +53578 +56665 +17442 +36619 +60983 +78217 +71563 +63026 +63382 +80116 +24114 +6121 +56369 +37545 +51868 +72145 +60150 +4635 +3280 +57302 +3150 +14831 +1478 +7092 +40673 +65954 +77547 +3924 +30830 +32896 +31619 +16461 +39602 +10010 +32116 +34623 +26162 +27670 +10340 +14316 +78648 +75274 +30667 +29242 +37153 +12409 +33828 +7265 +65626 +67887 +19825 +8967 +75099 +10411 +22743 +2726 +15034 +39822 +31169 +33589 +61382 +44135 +24388 +17658 +15032 +61071 +50320 +40898 +49950 +26375 +46648 +42811 +42770 +6962 +14280 +36124 +21365 +70126 +4342 +72021 +45420 +782 +24304 +78196 +74879 +5572 +79622 +38280 +74619 +52724 +76995 +37010 +13404 +71928 +24057 +4539 +72255 +51024 +49296 +19447 +8521 +68164 +59919 +15827 +23634 +53671 +12327 +6680 +77980 +26591 +15376 +78403 +49544 +43908 +46221 +44089 +7058 +54674 +46886 +16356 +23383 +55175 +62104 +70613 +28380 +68545 +44171 +31704 +37518 +36574 +74744 +48274 +27220 +52000 +62805 +15813 +76850 +4429 +1511 +34129 +26725 +12703 +52877 +58967 +36654 +42043 +16770 +45621 +25899 +75883 +37141 +41530 +1132 +8397 +11215 +28298 +55131 +64897 +62618 +53032 +73264 +293 +39564 +72349 +34319 +40409 +31493 +66252 +29428 +16354 +19183 +75551 +63920 +61433 +14555 +54851 +38190 +47489 +45564 +78890 +12843 +34734 +13795 +5366 +71174 +68691 +25393 +51479 +56553 +6454 +42583 +78310 +42142 +42413 +32503 +36504 +6715 +59447 +35549 +6333 +36448 +58664 +64442 +51930 +73902 +50642 +73883 +13828 +73787 +42551 +7811 +8266 +41393 +55733 +54540 +78586 +39154 +31829 +44436 +75374 +31908 +42347 +62582 +34502 +29246 +41043 +23021 +49979 +46966 +17567 +64146 +40650 +70653 +13509 +77085 +35790 +12569 +74935 +71905 +9982 +17525 +24659 +3182 +65112 +80427 +32459 +35191 +29175 +67324 +57828 +55290 +41252 +26785 +77270 +59350 +73646 +66740 +16420 +8671 +69841 +62965 +67445 +7815 +50862 +71373 +63153 +59738 +9097 +49845 +51576 +47096 +8831 +72554 +40327 +65138 +80613 +52652 +13990 +1236 +51599 +35115 +42186 +14914 +16683 +50726 +3739 +69086 +29679 +22813 +27810 +34694 +71610 +36392 +40644 +10108 +59339 +3966 +11748 +37923 +2589 +50266 +80786 +69782 +29895 +65595 +5115 +37682 +24677 +3744 +67440 +9438 +23986 +33665 +45205 +60042 +48181 +48358 +53463 +40025 +74604 +53321 +39457 +64654 +59478 +52919 +21731 +49992 +68935 +67971 +20753 +29564 +70912 +43751 +33841 +21256 +39230 +10779 +14099 +64691 +66607 +71116 +8984 +78942 +67966 +21721 +46057 +59420 +71972 +6974 +23744 +73450 +77639 +10659 +16959 +37728 +57336 +29716 +28748 +35506 +59710 +76505 +27432 +35298 +77315 +16156 +75831 +50123 +66414 +48141 +12458 +22194 +67932 +53776 +31008 +61851 +68572 +2210 +40677 +31175 +2476 +19408 +31040 +40539 +42089 +22916 +65347 +5407 +13338 +3783 +72916 +18706 +39281 +24507 +44441 +5921 +46393 +15641 +37761 +4406 +79245 +52277 +41127 +23580 +47752 +11655 +66246 +40871 +60153 +20355 +37262 +14644 +35461 +74973 +42510 +57395 +69439 +25758 +25559 +14317 +47656 +23101 +34218 +59445 +26312 +29836 +45899 +10081 +5143 +37506 +65451 +43889 +74458 +5848 +50010 +37505 +9434 +66065 +29067 +73319 +35099 +56309 +33488 +7917 +36912 +24543 +78060 +55300 +32942 +31863 +13322 +12622 +63889 +51690 +51146 +24624 +32019 +14860 +30678 +33217 +12896 +36964 +80395 +24069 +7403 +61327 +21504 +42528 +3609 +28810 +21204 +14053 +56288 +20757 +9036 +23703 +59546 +17771 +16587 +66533 +63179 +16630 +13579 +49115 +79106 +10932 +55601 +59099 +38603 +5573 +27891 +56546 +28745 +48409 +80761 +21336 +79835 +36731 +22050 +9676 +17366 +22000 +26732 +77539 +67959 +35885 +17268 +51237 +72083 +3291 +37318 +5452 +15099 +18319 +55079 +41365 +30680 +39751 +7822 +14299 +1708 +14046 +50121 +69946 +76794 +78911 +44077 +23887 +56903 +53756 +40060 +18489 +77385 +12681 +39841 +46770 +21112 +54686 +15755 +76331 +25463 +28666 +72089 +55558 +52183 +76738 +50111 +42318 +58058 +62812 +79866 +28759 +15586 +34433 +72295 +58080 +38012 +54415 +53483 +45046 +18815 +19459 +19983 +50544 +7735 +66708 +20090 +59249 +79983 +40200 +66228 +42037 +31082 +60560 +21890 +61302 +62528 +23239 +13056 +2383 +6892 +37961 +35406 +49733 +40131 +19054 +35270 +40161 +5912 +77793 +17241 +49939 +14414 +23625 +3948 +55849 +66115 +50933 +25890 +66156 +53433 +15283 +69789 +50903 +70030 +10281 +52712 +63204 +20313 +76576 +44315 +40479 +3186 +36282 +36084 +26043 +9762 +40448 +29675 +69478 +78970 +8452 +45829 +70889 +19322 +52594 +59990 +70908 +47791 +62961 +12801 +68699 +54633 +7988 +7712 +68217 +2279 +3798 +32844 +42569 +3136 +69245 +65800 +60942 +30238 +19549 +74883 +55971 +15314 +51679 +13149 +48597 +52606 +67257 +29952 +67848 +36831 +61284 +10293 +43797 +24701 +15064 +53094 +7779 +39590 +77060 +47476 +6667 +61007 +6122 +63252 +54473 +66382 +48735 +54407 +49944 +27175 +2988 +32005 +50571 +48780 +55870 +60088 +72909 +2357 +58304 +7704 +623 +25703 +28343 +63168 +34904 +64417 +6809 +53884 +29214 +51628 +71294 +43381 +61477 +76838 +2715 +57695 +37622 +7770 +689 +31287 +59001 +44214 +56573 +58236 +13468 +65722 +40429 +19239 +17468 +36317 +67382 +2844 +32441 +18175 +38771 +64441 +16883 +42970 +5441 +15522 +57296 +78931 +773 +17339 +33716 +19108 +46804 +36463 +36869 +36189 +17163 +68501 +52536 +63728 +12813 +30185 +16391 +22242 +15345 +54737 +19004 +67889 +77343 +71763 +44794 +19607 +23517 +1622 +12752 +30423 +42938 +36038 +41358 +20351 +21011 +28204 +8808 +71656 +27511 +75020 +76968 +50451 +71937 +56924 +51006 +44087 +46447 +23616 +2242 +659 +19002 +20153 +26058 +8507 +7149 +55813 +47583 +31114 +34601 +78184 +28716 +56652 +57659 +55496 +22170 +20096 +7581 +16515 +75208 +62526 +1972 +13776 +16990 +79652 +72799 +55259 +80187 +2386 +69316 +34808 +74721 +6694 +15856 +47132 +8694 +18107 +12258 +10616 +30591 +2040 +22379 +72942 +21682 +38134 +49518 +13286 +39226 +815 +40444 +42277 +52085 +74058 +33712 +57765 +34105 +55048 +8419 +60690 +44869 +28385 +30620 +47069 +47449 +39205 +29778 +77319 +21911 +50545 +61304 +22996 +16396 +21290 +65298 +11883 +42881 +24475 +39173 +14132 +46651 +74116 +34568 +30414 +63755 +70699 +14618 +20104 +70464 +54982 +31902 +67575 +48775 +52423 +67851 +24323 +46079 +60497 +20219 +12802 +15187 +29996 +67831 +32297 +673 +74285 +34718 +70074 +49161 +26409 +75711 +56826 +62300 +69549 +11134 +17815 +61368 +80285 +37553 +74281 +53769 +26169 +39442 +9253 +15339 +10882 +17462 +76178 +17861 +10842 +19924 +67373 +44879 +24935 +76976 +22130 +65475 +32661 +10695 +61914 +75754 +50468 +52675 +62530 +77848 +33536 +41554 +74991 +36600 +65507 +62945 +38974 +70922 +49825 +46288 +19073 +24855 +19710 +34970 +55242 +15862 +3933 +17427 +57376 +18360 +21737 +74589 +52762 +3707 +7479 +60944 +44654 +15071 +55823 +80205 +51541 +30376 +12822 +79605 +69074 +65833 +24615 +79134 +46317 +64007 +52266 +11409 +11588 +50937 +75366 +35309 +7850 +41467 +75736 +1587 +60257 +54043 +55327 +69151 +5963 +5638 +1041 +26850 +35922 +45212 +12127 +33901 +42749 +4581 +76408 +72457 +55808 +73967 +79 +73991 +77082 +21760 +75445 +35920 +789 +40254 +42500 +80429 +71340 +53220 +80353 +41208 +161 +4451 +45251 +14510 +51673 +71285 +79233 +49156 +48719 +8354 +58850 +40598 +16279 +20928 +41114 +73936 +45017 +44852 +22184 +15625 +70700 +42919 +55695 +26520 +44741 +55705 +49268 +45832 +64026 +55037 +7042 +76910 +41858 +32404 +67321 +56509 +424 +4482 +74697 +78304 +25293 +9147 +64630 +56278 +34929 +79504 +57924 +21284 +16411 +21419 +47167 +16077 +57477 +26604 +18233 +28238 +51296 +60543 +43677 +22721 +44643 +987 +74393 +70578 +40665 +47907 +48463 +58719 +15417 +15621 +27598 +75247 +39812 +48702 +30497 +74672 +79211 +48006 +25517 +63669 +6884 +80440 +68925 +62891 +74809 +29057 +45352 +4676 +13167 +31555 +52912 +13539 +4759 +62323 +14305 +63058 +49789 +34472 +20853 +35351 +66961 +67826 +40525 +40537 +11125 +73449 +49528 +25008 +67526 +5792 +54585 +66034 +60728 +37780 +55484 +14362 +9692 +53794 +72298 +38917 +24756 +23873 +24344 +79963 +55248 +45518 +9597 +80599 +60975 +42493 +75622 +34888 +23742 +33427 +54271 +78837 +661 +70990 +23287 +60229 +25683 +1571 +51451 +55954 +39793 +10102 +59137 +25040 +43118 +13906 +46856 +45061 +50676 +7717 +13957 +65235 +66153 +36150 +33037 +72503 +30746 +51925 +80413 +6973 +75290 +13432 +25283 +50934 +78881 +57004 +18904 +65558 +57884 +33255 +61048 +10967 +69636 +27556 +17779 +2420 +75258 +14241 +29305 +29684 +36360 +57962 +9637 +10573 +11673 +58345 +22364 +79215 +39583 +39996 +23721 +33355 +48104 +54320 +71300 +45196 +58396 +24982 +61176 +64348 +73874 +60802 +24293 +75874 +42303 +9765 +64997 +2874 +74705 +48353 +74949 +35848 +75288 +17741 +78109 +31055 +78056 +47490 +69830 +3922 +40143 +33442 +17538 +80154 +26216 +69703 +54336 +18089 +39565 +44568 +32649 +61372 +41164 +11140 +37184 +62213 +63173 +56260 +37563 +27472 +34724 +40034 +45475 +13938 +15171 +17255 +33062 +73515 +4155 +15574 +25132 +70567 +2652 +56074 +23692 +47060 +39456 +6825 +36505 +43935 +79870 +36659 +8299 +56210 +57521 +43458 +57016 +62909 +19316 +9061 +103 +64179 +37661 +26508 +12192 +2795 +4092 +78085 +56781 +2746 +32383 +19313 +23681 +30722 +4291 +66857 +64763 +14892 +59113 +57393 +36243 +63356 +61653 +40237 +74328 +53028 +38610 +78906 +55244 +2448 +40067 +73820 +15475 +48012 +68725 +26593 +72921 +35389 +27164 +34765 +73127 +46131 +18627 +17065 +7327 +59008 +50924 +18013 +45646 +48116 +17745 +31127 +26261 +24274 +45579 +65504 +79247 +37874 +29634 +4050 +77538 +6785 +80089 +23385 +16757 +79423 +35483 +77873 +3724 +60432 +59937 +11693 +17111 +23561 +51179 +18269 +40877 +62439 +45787 +76300 +2374 +3473 +15601 +47444 +58513 +50742 +57548 +30049 +80229 +55757 +24899 +71570 +55600 +33436 +60559 +44287 +34740 +27842 +75878 +46215 +11122 +74591 +14411 +37605 +896 +24726 +18790 +11561 +48770 +67812 +50442 +5507 +67174 +1029 +60977 +34229 +40298 +46525 +48444 +27458 +9908 +74189 +67894 +13453 +30492 +39622 +13662 +69572 +47440 +58032 +19314 +49460 +19370 +57074 +3558 +6380 +31036 +77521 +29913 +27656 +24983 +49884 +59542 +62090 +36678 +49356 +45199 +69344 +9500 +18582 +54878 +77860 +48865 +23547 +17679 +22688 +26035 +11332 +34848 +8996 +20371 +38057 +49109 +54145 +58579 +12067 +21500 +47247 +21474 +4254 +59007 +75930 +66557 +62252 +39922 +22796 +64018 +28430 +23301 +80538 +17307 +51019 +24975 +43059 +47401 +71168 +61365 +17766 +6670 +23724 +5163 +19514 +33622 +43385 +18729 +28601 +20865 +3564 +40994 +2555 +46610 +37608 +79765 +76464 +36438 +57536 +30405 +73467 +62435 +26881 +15119 +17407 +17894 +28042 +74724 +17673 +79197 +3956 +76403 +18688 +32546 +10173 +51825 +80170 +46745 +32209 +67626 +47391 +47125 +40269 +30898 +44799 +69223 +76657 +36180 +51242 +53897 +60923 +21718 +44242 +3514 +76422 +49630 +20884 +52247 +41479 +34844 +77413 +19107 +67650 +22962 +3138 +4039 +68711 +80228 +15222 +72561 +63135 +11760 +23707 +40490 +43269 +9829 +46028 +16415 +1995 +79847 +62366 +41597 +41644 +45394 +60893 +71559 +22443 +58898 +2631 +48930 +70750 +11263 +9447 +73953 +57599 +18342 +51824 +54700 +57773 +47837 +55559 +9906 +28463 +35608 +5092 +59996 +75087 +47739 +58565 +13368 +18523 +45310 +180 +75041 +80556 +9599 +67137 +51975 +6603 +7128 +60832 +44082 +51463 +39470 +78520 +34962 +6422 +37080 +39124 +51386 +34855 +21613 +75807 +4933 +62254 +38260 +71880 +43198 +25584 +51760 +7458 +7431 +68592 +49055 +69321 +18927 +28181 +59797 +38357 +63469 +33547 +61897 +13019 +79226 +66256 +1490 +59899 +34778 +79434 +46380 +26418 +73035 +68623 +18410 +63032 +6984 +74907 +46968 +67344 +41756 +43602 +21937 +71257 +15520 +11307 +56098 +47933 +50076 +2696 +76457 +62082 +69750 +22358 +17112 +26469 +38247 +57193 +53667 +28651 +12925 +1516 +56999 +43730 +54692 +29863 +70152 +80206 +25146 +40874 +49526 +63895 +72154 +75489 +58941 +15041 +36667 +65245 +13683 +22536 +11280 +21552 +70236 +12466 +69925 +76635 +6310 +21337 +64615 +73700 +26670 +68425 +16695 +5430 +23698 +28864 +28030 +79332 +10437 +63232 +66928 +49987 +29732 +22318 +80279 +52358 +55917 +70906 +38362 +3732 +78719 +49433 +49311 +2538 +65254 +29112 +23443 +62829 +1521 +38915 +21407 +11111 +75889 +57863 +74295 +35349 +14443 +49977 +62929 +22926 +41281 +58825 +29319 +54326 +39075 +77789 +29558 +27113 +30082 +11212 +48561 +67624 +44371 +24672 +9359 +61648 +77354 +2948 +35587 +8182 +46089 +67106 +78508 +40260 +43880 +57189 +46047 +52961 +60389 +68861 +28757 +41922 +3057 +15061 +54463 +74803 +59668 +66284 +3381 +51692 +70313 +48985 +23377 +54175 +66101 +55839 +36105 +3902 +20404 +67083 +45105 +73600 +23590 +63917 +21014 +58518 +51570 +38060 +56798 +10742 +40831 +68288 +40655 +30448 +46323 +259 +68130 +45263 +72990 +68467 +68913 +8430 +60342 +52777 +12014 +18772 +48431 +64739 +38601 +66767 +18419 +37748 +78253 +34918 +38240 +48201 +69393 +59310 +51441 +6253 +80117 +49739 +14753 +54511 +64734 +73147 +77334 +50760 +22058 +38765 +35476 +2692 +2125 +18979 +71869 +31067 +72579 +58445 +49110 +4878 +59465 +29949 +59792 +38350 +3900 +10255 +70325 +42950 +75845 +18960 +55142 +58435 +26020 +72215 +27680 +22967 +54188 +70081 +2291 +41298 +45629 +11274 +18338 +41284 +58930 +42368 +12060 +66478 +66051 +79258 +71452 +43137 +65026 +23067 +23231 +38791 +75459 +2435 +45654 +28545 +75592 +68582 +1986 +28178 +55631 +66354 +71481 +49006 +13517 +63136 +67545 +39161 +19778 +49961 +24594 +37638 +74193 +58812 +75921 +14717 +41720 +76284 +7421 +23516 +15455 +16084 +1661 +17520 +54242 +17477 +78645 +6283 +71633 +11317 +2729 +37946 +49655 +43707 +70110 +24281 +38785 +41990 +29884 +13210 +64534 +75772 +20707 +474 +39859 +12129 +17879 +1760 +11138 +2764 +58738 +3490 +77488 +55221 +77605 +52909 +17630 +77168 +60822 +70505 +59681 +52318 +1099 +76664 +68978 +5825 +43675 +16349 +28528 +61618 +19525 +35348 +65789 +56011 +67789 +57625 +30699 +68931 +51753 +9020 +31627 +7657 +7842 +74837 +17264 +40473 +25037 +54168 +22478 +79463 +32642 +54685 +26293 +10734 +26865 +72816 +71387 +49038 +47165 +55105 +64751 +72000 +55793 +67346 +32973 +40104 +57995 +37718 +50192 +76397 +1449 +62625 +46002 +2309 +35078 +16149 +50842 +7406 +5440 +9137 +14356 +24175 +3867 +17211 +14590 +48315 +15949 +11568 +32604 +37647 +74327 +65918 +67589 +18253 +22010 +15838 +64982 +43139 +23089 +7549 +49016 +21006 +78523 +14807 +28761 +80168 +41339 +73560 +53955 +9129 +80067 +24753 +20252 +13573 +3741 +80094 +45182 +38611 +46622 +71497 +10656 +25963 +42853 +1255 +768 +70204 +18015 +71113 +31107 +18553 +60667 +8062 +23998 +25119 +2773 +11861 +77714 +44987 +64646 +51452 +56815 +18876 +3314 +7605 +41501 +16717 +56964 +22252 +43528 +15873 +32541 +58574 +9400 +46056 +80192 +3350 +39804 +61862 +26363 +52144 +4816 +35297 +18178 +6215 +35052 +76025 +33783 +72105 +74621 +59025 +53294 +25419 +20429 +23397 +53881 +15322 +53506 +30215 +72652 +45560 +34655 +53645 +72002 +33363 +49986 +69838 +45086 +25314 +12264 +27370 +1871 +9563 +17953 +47106 +35654 +2736 +21193 +13253 +6170 +55092 +49962 +67195 +3043 +65868 +65008 +31744 +76346 +32072 +56475 +14635 +43310 +15072 +61132 +35455 +33720 +66292 +63414 +54697 +12997 +41955 +3778 +21303 +14457 +34572 +7098 +16964 +19012 +69327 +77550 +53623 +68064 +61720 +41715 +2820 +45307 +4574 +48189 +10608 +26032 +19935 +44686 +79075 +73314 +55110 +3479 +19851 +25827 +20168 +74164 +69296 +25482 +74503 +45935 +1968 +27477 +57531 +8240 +38653 +12115 +64495 +33232 +31054 +14951 +23100 +26218 +38824 +47807 +1193 +79398 +48847 +38907 +3183 +27997 +69554 +65410 +10732 +77307 +51223 +66936 +1298 +66748 +63246 +11953 +46409 +58442 +13893 +43994 +11794 +27807 +10959 +5318 +23932 +41780 +43768 +75834 +26632 +29681 +25452 +22736 +5192 +32226 +13189 +25000 +18600 +21814 +74788 +52515 +7010 +39522 +29600 +8032 +22215 +13491 +18084 +21763 +12078 +36614 +65971 +46728 +62635 +52549 +34766 +58856 +75289 +1747 +60939 +2694 +18041 +76643 +54725 +56847 +62978 +13198 +10761 +71338 +36816 +47696 +73803 +65371 +23690 +80356 +16893 +15077 +50335 +78823 +55428 +29077 +79820 +31746 +49872 +34840 +39536 +40833 +45640 +16715 +38505 +72486 +66926 +45569 +78863 +10360 +24884 +61057 +53318 +37964 +30838 +41925 +60485 +38450 +34441 +55488 +36764 +25768 +35824 +32626 +17982 +63756 +33834 +63674 +37261 +38570 +45694 +15998 +75424 +16668 +58179 +67183 +58203 +37288 +37138 +69873 +34035 +8227 +46576 +15004 +42754 +28577 +14125 +30408 +12596 +6919 +3800 +53217 +51567 +19466 +58158 +44757 +24221 +47450 +55762 +46090 +78242 +10646 +2165 +50631 +39984 +72940 +16209 +58752 +65080 +4702 +28368 +20331 +53580 +49225 +59933 +69721 +41822 +6424 +31559 +71425 +37331 +35927 +7343 +26776 +30042 +36423 +14105 +19596 +2892 +59671 +65295 +73238 +5128 +194 +19289 +68803 +62925 +13251 +26301 +59332 +68131 +20118 +9993 +42740 +29454 +19303 +58848 +80554 +80330 +29383 +42545 +45144 +11704 +75393 +65908 +28118 +79350 +39646 +31482 +35532 +27973 +9903 +10674 +53166 +6364 +12146 +38600 +21231 +54177 +11867 +13000 +40361 +58900 +71881 +51480 +5415 +36324 +74778 +30808 +50424 +32996 +9627 +22368 +57257 +68326 +17921 +7523 +44840 +70927 +19315 +74703 +54720 +58218 +50066 +56601 +22054 +50827 +77778 +63357 +75733 +34800 +11167 +76996 +19875 +26597 +61348 +78029 +71066 +43851 +24197 +9443 +40853 +64016 +61846 +24503 +8764 +57703 +48821 +55547 +72380 +75090 +21015 +15571 +12565 +23646 +35817 +34521 +13796 +45785 +5379 +10451 +6185 +7131 +37738 +55804 +32277 +59822 +50370 +52924 +55990 +44157 +47703 +64241 +39370 +7459 +45175 +16281 +69307 +68927 +1566 +63525 +36530 +24931 +67293 +75924 +5112 +10236 +59785 +79702 +16312 +60441 +72028 +11291 +14840 +24019 +43748 +63162 +57422 +27805 +69046 +17137 +56370 +45770 +72651 +7109 +74128 +14180 +79120 +15361 +5111 +65329 +61831 +26661 +55021 +42066 +3536 +60238 +74300 +23401 +54424 +18873 +75455 +51453 +32776 +60162 +47099 +17882 +30005 +289 +52453 +49780 +17358 +69447 +51629 +68057 +46615 +19046 +35899 +22675 +48531 +17510 +14974 +32361 +34482 +5362 +29882 +53219 +69267 +69705 +1501 +19040 +21838 +78336 +31656 +5742 +11919 +57638 +71367 +10688 +22655 +6863 +52338 +69111 +63950 +50107 +69279 +26553 +2123 +12075 +5632 +41910 +28711 +3201 +30167 +13255 +60605 +7190 +40184 +44730 +57064 +58235 +29046 +41367 +41783 +27029 +55266 +64053 +45801 +73784 +72838 +71193 +40446 +47829 +29674 +61266 +52437 +56218 +54610 +49604 +25357 +14477 +53187 +25877 +9335 +25843 +11416 +54402 +35342 +69928 +1981 +12774 +9934 +61973 +39788 +52191 +59377 +73124 +28262 +5063 +34321 +47026 +394 +37157 +34728 +28088 +52436 +13376 +59724 +30983 +10160 +71980 +24606 +8255 +27875 +37626 +62390 +66775 +28163 +15780 +59962 +10907 +25783 +66416 +16003 +48408 +13992 +25010 +827 +22103 +71730 +10730 +27677 +56333 +28438 +14705 +3295 +14978 +44062 +43556 +65141 +14967 +17988 +77961 +24867 +25445 +51636 +33056 +7430 +46088 +60380 +27072 +20808 +6823 +22765 +61088 +54148 +27178 +57817 +23993 +9224 +2109 +16100 +39742 +8282 +12674 +68972 +2484 +36652 +35162 +45913 +75671 +19981 +72294 +35590 +19767 +49142 +44432 +71635 +54623 +4468 +7776 +10333 +68901 +74492 +32504 +67468 +16383 +19156 +72897 +5664 +22806 +28106 +43667 +65361 +408 +11424 +25922 +57176 +43341 +74292 +53487 +36207 +69362 +50288 +17768 +54391 +17910 +21713 +51250 +38339 +36301 +17327 +48378 +16218 +26818 +31315 +69570 +51875 +30960 +39709 +74403 +33719 +42722 +7121 +76526 +35061 +65605 +45271 +59226 +42783 +40426 +55922 +57058 +62794 +73815 +56012 +16979 +26116 +22725 +29943 +58591 +4986 +27123 +18491 +30629 +62881 +73865 +16837 +53143 +5337 +53743 +5050 +69949 +60637 +4145 +39700 +51462 +30175 +20764 +10769 +79006 +183 +77249 +11797 +65607 +26540 +35996 +17284 +24330 +45491 +38514 +64138 +1875 +58414 +20087 +18399 +31596 +54569 +20180 +69629 +71831 +26305 +7866 +60413 +31757 +19274 +5863 +45245 +7155 +77556 +67051 +15462 +1653 +2087 +48222 +77709 +58694 +6362 +12996 +59824 +8145 +10104 +46611 +10070 +50126 +59554 +9775 +18440 +11962 +33516 +49596 +26801 +29667 +22402 +21265 +18505 +40562 +30920 +35384 +28051 +5147 +9135 +55553 +38396 +43595 +9900 +77216 +34356 +63128 +17833 +47110 +9120 +961 +49774 +72487 +3562 +8081 +25977 +57071 +1573 +69143 +25721 +67492 +77415 +25449 +31499 +10558 +1621 +33028 +41352 +39670 +11208 +50840 +3202 +25656 +35752 +14499 +39414 +805 +56267 +42961 +41105 +33640 +61225 +63801 +16490 +14861 +46176 +78119 +73349 +8728 +79563 +1299 +35229 +9329 +36788 +12307 +58962 +27460 +34685 +67907 +26574 +44660 +29354 +30332 +39884 +61843 +40647 +79976 +63588 +562 +38734 +78548 +32671 +76602 +30102 +60264 +59614 +3409 +66348 +25328 +4397 +76146 +41932 +69319 +37392 +3355 +51742 +31012 +70341 +15922 +4340 +4535 +40978 +63533 +9104 +61450 +3528 +55100 +45971 +53867 +10431 +58117 +29099 +62115 +48153 +40414 +5623 +1317 +62789 +44982 +24257 +71274 +25955 +51506 +46370 +24635 +56381 +9740 +36587 +19859 +12410 +51061 +62144 +12695 +52105 +49070 +4936 +20126 +80545 +66634 +49152 +17994 +80768 +61398 +42132 +37841 +68547 +46425 +4509 +45137 +63704 +75297 +46621 +3236 +27834 +27483 +35197 +43324 +24680 +71722 +59240 +21240 +32899 +66948 +57272 +16629 +73985 +70039 +2819 +30631 +64386 +2286 +59507 +47834 +50986 +49144 +60652 +60766 +31472 +37201 +40729 +62660 +19800 +47019 +22822 +75850 +60110 +52805 +10549 +5621 +19052 +61239 +48779 +73350 +7837 +48846 +36601 +32380 +79906 +37997 +69695 +38914 +15132 +13345 +53104 +23753 +59909 +31687 +13844 +33942 +34301 +33966 +29627 +66440 +54629 +266 +4690 +79730 +48374 +5970 +63972 +74068 +28886 +45845 +36569 +40166 +77278 +30511 +28787 +65900 +17038 +8169 +60577 +70324 +15592 +34133 +4570 +19674 +66998 +47222 +1791 +16916 +54583 +39270 +24863 +3278 +4493 +49734 +63700 +30281 +79138 +73109 +19066 +7981 +21127 +10698 +59363 +76324 +44200 +1595 +8624 +1231 +52154 +30111 +65915 +39122 +51608 +65920 +6952 +39801 +49096 +7319 +34068 +80757 +79956 +13142 +55402 +64400 +58978 +15044 +58356 +10759 +79410 +20150 +76460 +4868 +25669 +54123 +73246 +15045 +70848 +49645 +38949 +1765 +67387 +70328 +65747 +69110 +46269 +75635 +74894 +51277 +75922 +14398 +60768 +63238 +47847 +37827 +2198 +61639 +10256 +5484 +10480 +43128 +34291 +12762 +22456 +39319 +51766 +46235 +36989 +17411 +38983 +64221 +55840 +2277 +29695 +35812 +26544 +17259 +12936 +63504 +59260 +60494 +44470 +30579 +58040 +5257 +22953 +76694 +39662 +56865 +15316 +57230 +71020 +46812 +34850 +23037 +66919 +26180 +4261 +33020 +42774 +6933 +41891 +35319 +21415 +4257 +48659 +44304 +75569 +11205 +53911 +77566 +32064 +48472 +18725 +20359 +51136 +57977 +66047 +73333 +52852 +74291 +24224 +49072 +79790 +52072 +69155 +56687 +55819 +29253 +49651 +62817 +5856 +19443 +31600 +44883 +15362 +33733 +72283 +1388 +45691 +43650 +57629 +72549 +75226 +72148 +7733 +5899 +37239 +73242 +28142 +64540 +46722 +72906 +61879 +54678 +66304 +672 +45827 +70340 +43377 +460 +51862 +25929 +19697 +29489 +69571 +9288 +12773 +75972 +78814 +54807 +37602 +65437 +8351 +16297 +34999 +65695 +37172 +3917 +42199 +62080 +41982 +41706 +65261 +64246 +50732 +47992 +50526 +3639 +23038 +38191 +73 +8020 +28519 +70451 +69069 +50145 +3509 +48682 +59395 +7382 +6930 +37889 +21038 +65059 +17145 +52629 +31355 +16168 +21148 +75337 +14768 +78654 +3745 +17418 +43451 +77337 +27335 +74443 +30461 +45043 +32564 +35754 +26430 +55735 +27633 +50598 +25041 +42640 +4928 +31187 +71749 +79874 +6558 +2845 +76767 +58776 +71505 +5022 +33383 +37526 +47197 +59765 +76048 +43435 +6666 +3210 +27099 +14916 +33222 +40375 +38501 +36909 +1667 +11544 +18940 +27599 +36133 +52248 +78785 +14047 +72441 +70253 +6246 +40413 +16252 +73528 +33291 +57632 +60068 +15105 +10186 +25183 +13241 +56574 +50281 +57532 +30388 +29919 +3847 +78117 +54208 +2832 +12786 +67084 +28805 +20675 +9200 +23954 +31195 +37938 +44261 +34642 +65549 +13596 +8203 +29683 +57078 +65066 +19640 +79158 +16306 +20066 +56774 +43286 +50633 +11511 +8382 +62200 +13711 +80280 +35738 +5627 +69698 +13887 +65374 +43423 +75929 +79571 +76973 +32161 +49209 +24718 +45124 +41874 +63741 +18733 +26829 +59518 +25198 +11173 +23447 +25607 +21749 +13504 +58815 +24377 +72431 +64971 +32694 +15445 +57609 +27653 +77 +75542 +32054 +48889 +12624 +31725 +1970 +49943 +51727 +1495 +43492 +44353 +33953 +52237 +58517 +56411 +3170 +79845 +10486 +42508 +63945 +18074 +852 +57352 +32329 +65300 +3717 +44608 +41023 +14184 +68829 +55417 +64028 +74841 +46607 +24418 +54257 +71723 +78776 +69640 +38100 +66411 +3608 +47382 +38202 +68644 +10438 +5878 +50979 +64273 +36217 +16851 +41497 +62412 +2201 +72439 +10839 +30607 +8228 +1167 +78104 +35589 +10413 +60879 +16473 +13900 +79572 +35716 +40587 +46803 +43629 +71208 +79308 +2775 +68598 +26200 +17273 +1929 +12806 +20164 +31774 +72297 +66201 +4212 +47939 +22460 +26068 +31539 +33200 +79757 +63630 +1499 +54428 +77715 +75265 +61457 +47004 +48158 +24864 +13722 +17360 +9840 +78962 +64192 +31004 +69819 +74428 +62013 +56426 +38275 +15408 +5846 +23470 +4589 +25031 +37831 +23168 +48851 +31777 +54776 +550 +15953 +69829 +42931 +39591 +54087 +12488 +70760 +34118 +3179 +67659 +65413 +74461 +46329 +35300 +41356 +3277 +45001 +20408 +15289 +74855 +21930 +57428 +10420 +21226 +16274 +40639 +41426 +1031 +45216 +11576 +53392 +39577 +39200 +57333 +51095 +29210 +33918 +50174 +76697 +32934 +45113 +21589 +22426 +78452 +54724 +10204 +55485 +73931 +14686 +17013 +28171 +21417 +35450 +79536 +9824 +77324 +21578 +51525 +73007 +19179 +21161 +40024 +20605 +42190 +24705 +25030 +14203 +11857 +3363 +75027 +70230 +65834 +61634 +17922 +69682 +75620 +45427 +28655 +52290 +4208 +44680 +80573 +606 +21936 +17505 +26693 +15912 +21596 +17837 +28290 +46996 +42000 +56979 +77772 +77669 +67099 +5405 +11431 +18749 +66901 +70429 +69191 +49094 +40628 +47453 +34250 +16315 +10313 +42796 +72070 +80008 +42369 +61907 +6779 +64765 +43424 +76504 +75514 +35019 +44427 +41837 +68063 +25483 +1075 +25484 +58447 +52100 +7313 +55538 +28512 +29866 +6998 +35974 +67883 +48869 +79891 +74241 +13829 +21629 +23262 +17903 +77001 +64826 +76359 +44802 +27273 +51402 +72825 +56459 +3904 +14178 +56868 +77194 +4437 +18737 +69330 +3272 +36845 +78554 +28918 +46294 +72659 +2326 +54288 +47176 +66739 +7521 +80301 +4925 +5893 +60951 +33405 +43199 +18183 +7588 +24688 +69050 +41372 +63151 +31711 +66646 +63452 +26421 +66189 +23947 +622 +8797 +14821 +17190 +52933 +69104 +34665 +43673 +32799 +10790 +57583 +42090 +64253 +70187 +5845 +7143 +69 +45028 +60011 +74527 +1068 +36492 +75444 +4772 +15235 +51653 +14056 +129 +73183 +12911 +58482 +72974 +59624 +67478 +10262 +68940 +33933 +66867 +1550 +1835 +35265 +72322 +36493 +55345 +51021 +79491 +75106 +58409 +61960 +12156 +52042 +7853 +10422 +57932 +24570 +60048 +4378 +36803 +53728 +7299 +61997 +20300 +40664 +50950 +50272 +4389 +15910 +51235 +38553 +48745 +66560 +53223 +31882 +75382 +44096 +17975 +77520 +21162 +19461 +25678 +43217 +77181 +49382 +55450 +70119 +73523 +18933 +3828 +47341 +37100 +23704 +59213 +18771 +42104 +5895 +80299 +76948 +32956 +41903 +4325 +56289 +8596 +67869 +67265 +67570 +62844 +41975 +25839 +71069 +52182 +14702 +50150 +7652 +51308 +58437 +55501 +20695 +55372 +12175 +47054 +50243 +54721 +60787 +46206 +51175 +6611 +37043 +23751 +29094 +62589 +40480 +51426 +3527 +19114 +70060 +66825 +28750 +42684 +3085 +18538 +5883 +28708 +28977 +27067 +44034 +35063 +30531 +51414 +23833 +11882 +3587 +72402 +79072 +78329 +41647 +46766 +43008 +74998 +9044 +60678 +80164 +59288 +39683 +39249 +68024 +6220 +72449 +15659 +15192 +7434 +59802 +61260 +14948 +53054 +4065 +1397 +25919 +43537 +31951 +50853 +59449 +70121 +35953 +56853 +30264 +42287 +52816 +54366 +18825 +49564 +16024 +71934 +3173 +41515 +80601 +8994 +62720 +22599 +29669 +4810 +48317 +3749 +52577 +54235 +1752 +79577 +5198 +20660 +12255 +72542 +17171 +75486 +23782 +40357 +34719 +41241 +70401 +27607 +64742 +65835 +67121 +58704 +15935 +77899 +33194 +38751 +24497 +40648 +53508 +15800 +16827 +3169 +16969 +23512 +34783 +17440 +52761 +6535 +24514 +20876 +11397 +76529 +32246 +79406 +56672 +51994 +80387 +36676 +6347 +40382 +65194 +12118 +61623 +35393 +71179 +15017 +66279 +24241 +22718 +2606 +23796 +11109 +10332 +13706 +36054 +36286 +58120 +41778 +34710 +11340 +42453 +9549 +47840 +54401 +54971 +24110 +13569 +49088 +14933 +71095 +33078 +40718 +30031 +583 +22197 +24984 +11633 +4064 +38526 +44615 +78787 +46711 +3464 +12216 +47895 +78540 +1373 +45669 +42590 +24596 +2634 +43096 +64907 +56342 +71068 +44878 +16977 +39127 +77402 +1656 +12254 +80109 +50049 +29704 +34988 +15326 +41696 +78128 +16591 +13471 +3746 +54500 +25741 +48428 +22966 +6597 +73303 +40732 +31021 +65930 +7135 +42792 +65313 +50597 +58254 +14405 +47257 +16633 +17757 +37217 +66579 +78581 +27718 +55692 +74013 +14012 +26756 +62140 +47289 +75603 +12482 +3078 +64204 +20850 +38225 +21642 +2238 +42631 +66606 +36612 +57053 +37942 +53175 +79925 +76088 +16929 +39306 +45970 +4578 +44738 +3990 +76936 +23152 +51137 +11393 +30304 +18137 +68006 +78901 +4907 +76426 +60640 +72978 +68599 +37744 +40069 +5535 +31024 +1387 +77481 +80602 +73452 +37058 +23656 +1826 +51279 +77531 +12179 +36866 +40751 +31345 +40651 +52301 +32157 +60677 +70342 +1039 +62341 +75617 +71316 +26542 +12208 +55993 +15870 +37421 +78072 +44564 +64913 +8429 +79249 +1174 +70551 +2353 +75093 +8688 +33070 +70302 +58363 +46719 +75925 +31714 +80666 +45539 +18283 +64554 +52009 +6965 +66473 +22030 +69733 +65445 +1257 +62831 +33973 +48877 +25318 +43105 +1086 +45611 +22022 +23363 +51960 +12183 +72600 +79951 +3708 +21635 +56552 +75061 +43354 +67429 +18372 +3152 +48777 +5334 +40599 +68827 +52092 +47931 +40916 +25135 +29793 +22791 +46038 +79184 +7024 +18257 +77038 +64450 +50450 +15024 +421 +62750 +49129 +1405 +21449 +74821 +16640 +6510 +21172 +60374 +6784 +32904 +74643 +13561 +29987 +21802 +7995 +40494 +31265 +27360 +70023 +55353 +30605 +28786 +68548 +73964 +21903 +78920 +15144 +21507 +48139 +14859 +78833 +47551 +42765 +1851 +25100 +48200 +64322 +53361 +34741 +22557 +56340 +41960 +77895 +65308 +76952 +4421 +41435 +22494 +17895 +5616 +34379 +66515 +43430 +68373 +7505 +79304 +12765 +44625 +11899 +64755 +376 +59012 +53680 +17469 +31331 +13792 +30070 +6118 +9823 +12966 +59776 +68296 +36481 +27213 +3418 +55398 +31258 +8027 +33970 +68113 +7485 +73586 +20445 +14463 +70999 +16897 +64689 +6480 +36251 +78724 +49847 +1717 +46869 +5306 +52474 +72766 +66889 +74656 +12803 +69430 +43635 +41334 +66983 +10179 +79597 +80026 +11248 +68418 +57087 +56352 +65105 +34457 +63090 +403 +6722 +42971 +40152 +48214 +78091 +2334 +60621 +50408 +21406 +24667 +57364 +20093 +36206 +61936 +55755 +23557 +78981 +78603 +757 +48949 +37760 +60129 +40861 +58977 +51160 +11792 +54533 +16862 +72748 +78147 +49330 +23415 +23780 +9969 +42698 +7163 +75498 +45527 +35331 +1825 +31313 +17585 +76641 +61181 +40870 +60090 +40027 +37434 +70369 +43529 +49210 +64860 +32659 +75999 +38899 +41338 +8828 +41510 +44823 +48196 +61150 +55191 +39405 +27627 +35435 +37467 +3310 +33076 +1761 +10971 +49575 +52383 +33432 +15633 +51447 +1814 +51446 +40952 +59066 +48827 +51109 +56567 +47455 +34633 +22280 +14445 +57219 +54587 +59023 +49040 +41881 +31838 +66040 +80064 +21369 +65149 +67101 +14580 +12239 +56242 +70989 +29733 +8158 +41203 +17001 +2378 +6835 +899 +29554 +10806 +68307 +34944 +69286 +68635 +34664 +17085 +952 +13733 +78933 +11927 +27034 +62235 +64259 +75254 +31148 +63713 +24040 +17499 +61440 +888 +14250 +23867 +31934 +76806 +32137 +58970 +5161 +33406 +23882 +5678 +22320 +74416 +23896 +222 +3738 +20733 +26159 +59388 +1058 +61698 +65069 +32253 +36330 +13583 +8094 +14109 +79139 +35543 +4264 +79133 +59754 +56577 +44196 +39125 +66315 +60800 +3903 +859 +32948 +48626 +44580 +44383 +19139 +15537 +23134 +51464 +20354 +47203 +8176 +50140 +13775 +71429 +29975 +59029 +54961 +12879 +63405 +60882 +45593 +37431 +67316 +33153 +50329 +67607 +10468 +37125 +6247 +29552 +4984 +39184 +24233 +20291 +18310 +5724 +8311 +45156 +17832 +49907 +70883 +22230 +16949 +66864 +43226 +43 +19243 +78529 +60004 +5463 +17102 +36361 +66783 +51361 +66818 +32591 +37406 +56615 +9239 +39190 +15217 +76011 +68851 +44742 +68715 +45368 +4433 +52499 +77624 +45603 +63444 +59172 +62092 +5719 +70511 +6850 +19858 +2088 +9544 +65547 +55751 +73263 +79594 +38209 +49018 +2942 +49725 +27657 +46343 +74748 +45495 +45391 +35890 +54897 +947 +48676 +54978 +7039 +69702 +69055 +78225 +17891 +21 +1117 +18915 +52371 +69489 +80563 +1843 +22667 +2382 +45589 +39720 +6746 +63555 +75876 +56954 +1287 +34836 +71636 +47057 +79418 +9304 +64787 +26411 +47246 +120 +26157 +48806 +29469 +2264 +44391 +46840 +25814 +46759 +36867 +68884 +69438 +73994 +53555 +24172 +50538 +62540 +62426 +9768 +75645 +60694 +41292 +31348 +37892 +45642 +389 +7636 +61597 +5650 +41434 +59455 +55674 +66957 +10540 +2803 +47708 +45918 +24670 +5539 +36732 +74665 +72286 +8546 +19235 +68602 +41649 +41700 +18945 +22370 +14923 +69394 +76701 +20844 +15694 +73340 +11946 +69867 +3045 +75987 +13832 +13780 +70826 +72741 +23039 +17063 +36449 +2944 +56694 +34274 +78259 +12809 +25056 +30738 +5857 +58132 +2840 +23994 +18596 +3198 +80465 +19861 +33564 +57319 +77828 +22026 +14039 +15602 +60816 +50968 +19157 +39766 +33471 +18304 +16891 +10867 +39126 +63169 +42494 +61271 +59206 +48778 +50006 +7444 +41049 +52674 +30625 +59663 +4085 +1411 +64083 +63498 +67335 +41185 +7000 +67859 +20631 +22396 +6801 +20568 +77878 +40624 +39225 +23931 +43984 +32222 +12999 +36218 +57098 +52432 +17161 +48922 +3789 +25238 +17616 +65647 +18171 +80128 +9856 +59604 +17954 +48177 +36489 +38923 +43346 +88 +73436 +71867 +51902 +39208 +5273 +15295 +11529 +64228 +66385 +45757 +21401 +14992 +40774 +77167 +68308 +68160 +37394 +27046 +68774 +1630 +68145 +70117 +50899 +19555 +45109 +37350 +80043 +70829 +62634 +48219 +24725 +5834 +74583 +15311 +13297 +70977 +12350 +61154 +42292 +79591 +11678 +56655 +33721 +22311 +54086 +66262 +25185 +64044 +21108 +58760 +56936 +4271 +2180 +58103 +9515 +78170 +70966 +40432 +13256 +75647 +74847 +1223 +35336 +17084 +41391 +42566 +19439 +78693 +44992 +5684 +28753 +65244 +63768 +78993 +10383 +77202 +43968 +60270 +69929 +49536 +33731 +24614 +59601 +10972 +225 +14663 +77139 +18592 +34186 +16023 +16134 +4598 +51596 +10707 +54658 +59769 +22597 +56986 +80647 +70287 +70950 +56455 +20077 +3988 +31626 +72452 +68980 +22865 +33899 +38494 +55722 +74948 +24122 +7533 +11184 +54091 +48707 +15461 +37333 +4462 +31909 +27661 +30468 +57544 +80764 +64233 +13324 +68436 +15984 +31409 +35698 +28272 +48142 +37766 +28474 +17181 +14797 +51563 +58821 +3303 +79753 +12143 +20214 +249 +56189 +68328 +66255 +64961 +59662 +10124 +9870 +14956 +21364 +699 +69067 +33891 +3585 +80698 +13482 +57808 +10574 +43794 +4870 +35420 +23357 +18514 +74263 +32343 +60368 +20073 +325 +72045 +21005 +9653 +20967 +45064 +6354 +19982 +40321 +63352 +23155 +51055 +41989 +74487 +34798 +71225 +42533 +55140 +16871 +55589 +53604 +51348 +45659 +28707 +2492 +63484 +33024 +45366 +60449 +36168 +55004 +50425 +79372 +66378 +29438 +40521 +27088 +6061 +64908 +34547 +41147 +2077 +71651 +16235 +20994 +79935 +79933 +33132 +15845 +2223 +8874 +41985 +47137 +26042 +54102 +24347 +25408 +20727 +68490 +74915 +1884 +14055 +16283 +69859 +61823 +3417 +58064 +36603 +61045 +28433 +5974 +42399 +63627 +71056 +74689 +7683 +2464 +33950 +31011 +11510 +10910 +16049 +4639 +69009 +8099 +74395 +31458 +1940 +57668 +21300 +16360 +23855 +55016 +60972 +64678 +56383 +26627 +685 +75341 +67446 +1612 +25620 +1196 +68316 +37450 +17935 +52982 +78394 +32058 +58734 +78608 +41447 +19116 +37521 +50960 +6203 +50131 +12400 +21739 +58091 +53453 +20329 +53674 +64358 +66964 +37156 +6616 +70957 +26187 +55106 +50033 +55292 +30214 +71029 +64201 +12515 +39349 +53995 +5055 +75517 +72777 +18643 +40451 +61085 +68804 +64634 +63140 +7571 +470 +54191 +12987 +62135 +62053 +14876 +41603 +55497 +58245 +2915 +7873 +8167 +55022 +50182 +13334 +47409 +32893 +18644 +40960 +323 +3978 +590 +2250 +48898 +64042 +15599 +34545 +72956 +32821 +59800 +34818 +16096 +53620 +56471 +2316 +57785 +21757 +53723 +1104 +22830 +20297 +38524 +80085 +3283 +1195 +20314 +75124 +15359 +61683 +5397 +51495 +13239 +25222 +41563 +67033 +67588 +16807 +44165 +28087 +65538 +55324 +64392 +58813 +31325 +21570 +43534 +48255 +28344 +21187 +35363 +33803 +70233 +73059 +34641 +62581 +19603 +45504 +14608 +9994 +18721 +11316 +13837 +17314 +59879 +37453 +75390 +67759 +27463 +34060 +54636 +10407 +59037 +79221 +36882 +54696 +21900 +4923 +10390 +9817 +78043 +28634 +38486 +13763 +16229 +35049 +45566 +69463 +32833 +6337 +53363 +47695 +23581 +40982 +25480 +15957 +50836 +6240 +6288 +78681 +60155 +78358 +7227 +71871 +27871 +7160 +53950 +57285 +15835 +6926 +16335 +80362 +80417 +25845 +40797 +68916 +55702 +15130 +80614 +4167 +40885 +5861 +43787 +6163 +53796 +20982 +40373 +2439 +32409 +52744 +29084 +67390 +1639 +43785 +65660 +73818 +73111 +22980 +19071 +52851 +31769 +18462 +64970 +8593 +55969 +62648 +18066 +58462 +12289 +71946 +71906 +10265 +60781 +3588 +22003 +46208 +19604 +587 +12211 +75016 +9873 +8971 +70819 +76748 +77941 +42153 +64522 +538 +13165 +45377 +50996 +41506 +28591 +67020 +50856 +78362 +17192 +54979 +48318 +69474 +52458 +48032 +68452 +16970 +63078 +31374 +26545 +316 +25613 +40234 +75442 +54641 +51332 +79210 +65873 +6979 +21442 +50285 +46697 +16060 +24749 +66070 +6077 +34311 +65074 +41498 +45625 +31665 +44422 +39103 +61660 +38565 +13024 +12331 +7493 +11502 +33012 +40725 +19913 +72156 +27047 +11395 +60219 +14986 +24957 +56252 +11099 +30043 +71 +70239 +78721 +65895 +16305 +61895 +29190 +48497 +76219 +29104 +79159 +28830 +65736 +12964 +14577 +8914 +40606 +54916 +66684 +31831 +78509 +76513 +35959 +74047 +52751 +30076 +47591 +31264 +74246 +47519 +80399 +11374 +78784 +17877 +44554 +48968 +61617 +75716 +71028 +35708 +56303 +35232 +79107 +44256 +27543 +43466 +60850 +32502 +15682 +21741 +57429 +54329 +62091 +23430 +62866 +49420 +51444 +77176 +51650 +51383 +70935 +35187 +64601 +23699 +62422 +46009 +60590 +57830 +58192 +19938 +48013 +23256 +80704 +1035 +39448 +35330 +19186 +9052 +56070 +8168 +63990 +67734 +71170 +60803 +29959 +74221 +24579 +29332 +56083 +74123 +38867 +14846 +65168 +16050 +5698 +62855 +67337 +70171 +39420 +37007 +72046 +36627 +15607 +26972 +47932 +50035 +1735 +19150 +26236 +19280 +59230 +13308 +22971 +71317 +44025 +22099 +19870 +66374 +79368 +35894 +32189 +26282 +10410 +77342 +43151 +12991 +66356 +76725 +70918 +67828 +50309 +70144 +56709 +32600 +57829 +64367 +47592 +65306 +44933 +12408 +39948 +37749 +5977 +49507 +32862 +2256 +73997 +45533 +55730 +32285 +44964 +43833 +24789 +26886 +4467 +51365 +56592 +31625 +44649 +46879 +50802 +78130 +69581 +29728 +78251 +39150 +73033 +42031 +43225 +41296 +7188 +18034 +76833 +1291 +5380 +19271 +1372 +53641 +36369 +36520 +51610 +67931 +63221 +79944 +55005 +62051 +26718 +12611 +68029 +30017 +53994 +68056 +40923 +55449 +34509 +65889 +41483 +71845 +62402 +70991 +61908 +76498 +72961 +31613 +9833 +38697 +76582 +7158 +41285 +12230 +37695 +66734 +2127 +35607 +53199 +27894 +56879 +72280 +9154 +69642 +73580 +55381 +72374 +53988 +5434 +34573 +536 +5091 +4703 +11115 +53182 +66866 +14572 +45068 +4546 +41416 +64688 +18828 +76799 +59782 +7122 +57841 +41267 +28006 +1258 +54650 +31326 +43093 +51560 +8180 +73416 +50779 +38205 +58817 +61779 +49648 +58223 +26896 +42091 +34613 +62100 +39817 +77474 +23649 +26890 +19344 +58755 +44174 +68240 +37320 +33999 +34460 +72596 +24128 +47921 +55856 +57707 +57140 +73053 +28865 +73186 +64332 +4387 +71650 +6567 +52495 +66904 +52242 +56437 +59397 +43490 +57557 +15370 +74425 +57909 +64444 +37439 +67300 +38784 +44959 +35932 +47325 +45456 +63218 +57010 +53077 +68971 +74236 +7056 +77386 +77518 +19106 +2469 +8973 +15266 +6813 +68792 +70970 +30340 +66311 +23673 +4180 +71714 +53647 +41035 +43698 +18151 +6870 +34658 +11945 +27042 +13379 +51102 +77458 +66558 +30563 +59004 +69468 +28472 +15160 +74530 +1355 +43969 +80204 +58109 +19539 +63892 +5694 +26246 +33084 +37855 +45115 +55961 +76547 +46149 +18683 +69817 +77680 +78182 +71211 +52553 +29719 +38739 +64043 +16462 +56259 +47678 +17990 +64940 +47470 +23563 +60997 +7888 +68511 +15459 +60120 +19869 +60523 +18036 +49252 +12775 +30636 +70901 +62301 +7399 +47149 +66725 +64422 +3561 +53227 +25923 +48334 +35195 +31941 +65570 +73107 +58405 +17151 +3681 +35746 +15213 +67572 +43462 +6596 +53608 +66987 +54205 +24056 +61305 +16032 +58751 +76616 +36066 +2583 +25873 +62063 +40838 +35552 +50550 +50398 +29198 +4859 +52637 +74244 +58680 +60294 +45802 +60347 +44323 +73005 +5590 +34095 +72984 +9296 +63156 +33617 +68475 +50914 +39543 +36737 +79232 +18560 +58866 +24743 +73645 +57237 +49013 +5365 +26050 +44185 +42196 +58303 +25068 +44630 +20170 +26226 +11736 +41766 +55782 +25908 +44523 +57331 +46141 +73287 +71604 +50277 +37009 +44217 +51408 +44000 +15091 +61199 +6748 +56240 +78637 +20665 +50679 +69313 +79768 +74475 +40902 +2947 +18509 +77010 +70776 +25047 +55654 +18535 +63931 +26320 +38037 +41576 +79767 +27584 +32017 +46244 +9992 +20977 +36258 +33088 +69932 +51931 +59036 +69531 +26993 +60075 +76379 +66226 +7696 +22709 +75797 +30603 +73020 +76071 +13125 +5726 +11709 +45069 +28229 +19521 +35628 +60291 +43767 +63266 +23019 +68180 +68614 +18379 +4549 +20987 +31758 +33937 +42319 +38430 +68383 +39197 +64801 +48871 +11601 +18048 +74695 +31877 +14249 +51870 +28806 +32724 +23095 +65476 +11598 +72328 +1581 +1715 +58950 +66323 +17581 +17463 +76688 +73444 +15406 +67743 +31490 +65958 +79260 +8577 +19262 +51672 +10026 +58628 +31765 +71792 +79821 +62595 +21253 +14877 +44871 +58909 +8609 +80653 +50163 +5923 +72994 +45340 +51165 +80513 +6968 +12267 +13387 +62854 +24818 +27081 +51424 +27041 +2491 +3100 +49001 +20388 +25224 +73771 +25550 +29146 +56032 +27021 +12071 +6381 +22596 +27474 +15028 +72795 +78326 +1967 +65058 +73647 +56700 +73948 +57693 +30155 +53008 +46880 +73658 +51317 +9352 +74853 +59818 +11097 +43732 +23389 +1597 +44102 +33114 +39814 +22776 +12390 +4966 +47040 +80442 +7172 +17583 +22458 +22955 +13409 +23015 +40986 +4443 +44247 +9396 +65280 +11293 +45502 +47033 +27486 +72316 +28524 +49034 +68596 +60574 +43475 +26730 +10257 +18022 +48574 +46557 +39476 +988 +57517 +77795 +22278 +63117 +72001 +75562 +29892 +24367 +29759 +40943 +5718 +61759 +30658 +7964 +78173 +32602 +51545 +2449 +20327 +275 +21907 +54488 +25545 +30822 +74481 +21842 +61276 +75243 +75492 +71703 +35235 +21540 +38326 +65384 +67672 +36235 +70491 +20041 +10640 +7958 +66468 +73804 +8845 +69657 +79938 +8675 +30151 +33093 +28854 +31792 +72149 +3530 +6599 +44414 +742 +75429 +8823 +65296 +67721 +12644 +19908 +39853 +73484 +15566 +18722 +10960 +43298 +17456 +18078 +31243 +24414 +4339 +39734 +78946 +77571 +62643 +37110 +51005 +30755 +58078 +352 +2029 +75505 +51333 +41499 +12246 +28299 +3616 +55316 +9647 +51143 +55897 +68376 +10123 +70191 +47078 +12980 +8113 +52457 +16727 +64369 +28311 +28270 +37426 +55615 +14271 +10596 +35184 +21697 +43061 +74377 +54712 +4557 +8149 +41220 +42825 +8588 +57188 +635 +24428 +50091 +5897 +23524 +15312 +9387 +12759 +37325 +48630 +46877 +63144 +19815 +6133 +27288 +10592 +55827 +38111 +43028 +78125 +15196 +45925 +38132 +17057 +21970 +36344 +61624 +52592 +44154 +41936 +12728 +75561 +18043 +4983 +4932 +35854 +20718 +58822 +6800 +3650 +62547 +58910 +43073 +67451 +59045 +10298 +76785 +29481 +59632 +10926 +43072 +3228 +61215 +52340 +56750 +40895 +70938 +12027 +46350 +1414 +17214 +34702 +9792 +48587 +1286 +10568 +19292 +73291 +5153 +3456 +15207 +38420 +15327 +32997 +73731 +25644 +11765 +71250 +56626 +75737 +73325 +16428 +73609 +69021 +39675 +58331 +58424 +15039 +11647 +32373 +66393 +38860 +2070 +56095 +6050 +45755 +158 +45835 +73219 +58935 +68293 +58112 +25851 +30525 +68634 +54138 +35768 +79194 +66601 +1541 +45883 +26717 +72685 +73075 +65879 +42255 +20425 +17055 +34287 +1182 +12680 +72392 +67936 +68494 +35606 +6410 +54683 +34861 +4885 +34142 +37688 +67778 +77027 +35986 +11726 +25743 +43317 +6789 +50275 +27701 +42109 +38227 +54194 +70428 +24671 +976 +21173 +23322 +6736 +17099 +45670 +45637 +16261 +18072 +34706 +3230 +38760 +18194 +37915 +24645 +47773 +14157 +75588 +62112 +7462 +35638 +77693 +57459 +69090 +75901 +22238 +43867 +16454 +31535 +51232 +46957 +14961 +10426 +30897 +43293 +45179 +41460 +80052 +66613 +62185 +40706 +55550 +26064 +27430 +5221 +21408 +67807 +77606 +27698 +26189 +34353 +44060 +20489 +69470 +38376 +26619 +57731 +26151 +62933 +13918 +69979 +26439 +8865 +64305 +59367 +25070 +7007 +38229 +76255 +55597 +77105 +41632 +31515 +78514 +59603 +37359 +67167 +64372 +56414 +45264 +36510 +44588 +50125 +52795 +67563 +9495 +55860 +21882 +12636 +59778 +23198 +58958 +43074 +64371 +18561 +70802 +1481 +13678 +60383 +57925 +32415 +33403 +34181 +41486 +32134 +14862 +70035 +43114 +8753 +9294 +53146 +77575 +72174 +45632 +76302 +66887 +55512 +1337 +36948 +55619 +49179 +75207 +37090 +68213 +61303 +6502 +63312 +30065 +53862 +72650 +75661 +76828 +23234 +27985 +23494 +28775 +72011 +35054 +20998 +66568 +65600 +36072 +41915 +77150 +26554 +54256 +38335 +17667 +107 +28487 +54282 +77884 +51328 +3712 +31389 +71212 +24865 +6539 +63183 +34737 +38531 +45876 +72993 +75018 +12391 +76506 +76278 +34051 +74725 +33059 +27741 +64824 +24681 +52080 +57245 +56946 +71995 +29213 +45880 +49484 +49126 +75795 +79523 +45934 +11713 +62031 +11018 +56464 +22317 +3545 +53586 +7186 +48480 +66913 +20591 +74647 +24510 +26051 +4802 +27501 +14375 +54269 +33722 +18653 +50658 +42404 +3986 +65286 +39617 +36338 +60039 +79435 +25488 +2800 +64401 +74117 +25808 +484 +48686 +59634 +9370 +12984 +13646 +42192 +32314 +9527 +30168 +68135 +28007 +23353 +66290 +36877 +39596 +56895 +11988 +62517 +44669 +41605 +76684 +28520 +39265 +64337 +68758 +31695 +14114 +64738 +25257 +51783 +71700 +172 +19616 +17227 +73483 +16829 +71754 +61767 +27618 +74609 +78258 +28481 +9547 +9358 +53905 +45643 +4307 +35108 +32837 +37248 +46561 +60558 +61213 +44947 +78095 +31216 +66732 +77988 +12069 +39998 +60591 +10787 +56334 +7282 +69487 +51023 +3212 +13411 +36098 +25112 +78754 +15468 +12415 +58996 +75982 +68108 +36455 +53980 +54436 +70105 +64205 +16936 +4685 +37907 +31191 +58273 +46736 +66090 +7997 +47457 +44168 +67768 +3390 +44277 +61894 +47526 +66817 +9830 +41769 +59750 +15079 +70125 +14434 +17497 +78243 +50748 +29767 +20620 +31548 +45214 +1697 +7974 +9201 +1367 +59957 +74712 +51899 +24945 +67320 +27181 +1580 +61678 +24220 +60699 +77993 +54460 +4315 +35821 +4621 +68112 +1994 +1565 +66884 +68550 +56185 +11228 +9064 +47612 +26475 +66843 +48974 +19345 +69505 +10864 +28715 +79400 +66369 +68002 +27655 +67969 +48404 +72203 +26456 +74947 +23800 +31641 +18797 +17036 +36443 +22690 +65787 +41343 +6196 +67613 +14121 +78621 +70685 +5847 +70544 +6640 +72122 +45515 +46687 +6911 +71735 +7616 +13143 +74179 +32737 +73153 +5902 +53934 +51881 +64298 +6856 +33429 +4847 +46117 +63130 +5703 +71644 +39567 +74500 +54808 +11091 +33847 +1192 +57879 +6990 +1645 +51150 +35127 +25740 +25049 +21796 +5609 +29336 +32114 +10916 +34251 +26254 +63409 +19036 +47076 +78702 +52650 +32629 +38075 +58332 +35118 +8023 +9197 +13312 +67214 +4935 +69342 +45432 +15104 +33551 +80084 +1750 +3844 +65847 +67231 +64968 +80156 +51850 +68449 +25985 +3487 +14845 +64190 +63968 +68470 +76762 +35579 +15954 +28200 +31644 +41341 +21797 +27887 +27861 +78445 +7360 +11815 +48078 +21857 +3586 +13101 +35939 +37593 +3942 +5419 +30298 +31810 +39084 +10939 +73971 +22908 +64427 +31740 +11641 +25824 +12921 +6304 +29518 +10285 +60760 +69515 +17141 +52289 +69713 +27540 +2668 +46659 +52313 +2549 +9203 +53121 +76479 +14005 +21023 +80241 +11443 +13789 +53932 +400 +62768 +32074 +45976 +77274 +41097 +39968 +47820 +72478 +49541 +52858 +62584 +42489 +49017 +69780 +54120 +58712 +52077 +44011 +36254 +34162 +78045 +36411 +24163 +77260 +14898 +18352 +21868 +56476 +40472 +38324 +76606 +6496 +3259 +78355 +57325 +25936 +24847 +31582 +65035 +44836 +44788 +80697 +3901 +74892 +68527 +42487 +23407 +44052 +31747 +56737 +53484 +31282 +50662 +450 +72629 +58279 +24539 +54491 +26003 +35037 +43719 +69052 +39189 +61485 +46743 +68897 +66459 +66265 +64745 +3264 +34216 +45927 +59140 +4862 +63790 +62686 +49805 +24574 +39658 +52717 +7353 +52171 +16747 +4515 +22029 +6548 +30028 +77096 +61030 +41944 +59965 +59793 +50876 +11279 +15246 +9710 +68491 +48772 +74553 +9475 +61546 +43474 +10012 +23051 +8434 +50396 +11676 +27592 +69840 +65409 +14943 +21620 +33112 +48940 +26237 +31620 +45732 +46286 +78020 +73240 +41886 +22159 +23870 +45949 +24856 +42515 +1894 +62942 +73284 +54385 +10517 +8893 +79090 +4646 +62571 +36199 +62157 +22887 +67529 +2663 +77118 +5533 +33314 +65164 +80017 +15369 +41089 +17470 +65326 +29986 +13663 +24495 +47411 +27415 +28825 +20912 +48932 +50792 +52468 +77149 +46834 +21676 +22561 +60788 +75896 +52270 +5339 +51562 +51466 +70754 +71569 +74838 +64104 +46631 +72027 +45224 +67201 +72310 +30560 +55194 +10598 +2332 +69275 +9113 +38065 +55661 +65363 +6554 +75745 +36429 +24568 +70228 +17810 +8059 +38801 +30444 +64886 +80236 +58005 +7509 +68815 +16722 +14763 +48509 +11799 +32914 +17026 +70188 +8817 +15886 +62201 +59809 +49557 +5375 +51558 +48872 +62877 +72537 +27133 +36985 +74842 +9281 +66217 +71758 +23823 +14942 +44980 +15195 +27026 +1111 +65055 +63411 +29791 +43990 +8095 +59587 +6672 +36472 +43669 +25797 +25731 +51209 +79363 +70347 +21986 +1720 +3346 +21175 +59077 +58134 +22797 +34206 +63299 +50317 +68773 +26747 +2200 +48841 +232 +74283 +26538 +66408 +42390 +26360 +46475 +22119 +59342 +27208 +36165 +60778 +37003 +11179 +14143 +42887 +53306 +19958 +75669 +733 +14976 +57423 +19611 +55523 +66485 +64582 +66971 +12932 +6394 +44252 +189 +66083 +57430 +50819 +50987 +76261 +74028 +5246 +11845 +48649 +46647 +6992 +23536 +19268 +2490 +66695 +8638 +63779 +50859 +32326 +38722 +59133 +76035 +17162 +62410 +10545 +55632 +13911 +71203 +48445 +29828 +27019 +19653 +73780 +65189 +69336 +64662 +43410 +17568 +41839 +61380 +41860 +31407 +65310 +12513 +60947 +3565 +34776 +56570 +70692 +23614 +55506 +42366 +4086 +40719 +44928 +20115 +63738 +54809 +35215 +23431 +967 +28777 +3233 +16813 +15321 +56779 +74586 +41775 +40009 +46217 +77494 +11058 +64637 +40265 +60415 +30659 +25104 +40750 +7818 +3177 +34699 +8016 +48062 +47038 +32849 +28921 +11236 +52597 +20892 +14756 +17623 +11045 +42332 +48066 +56402 +80284 +29550 +3072 +73917 +7020 +8733 +35226 +42555 +1009 +8480 +31337 +74427 +51708 +68762 +31635 +68441 +13259 +60074 +24993 +34960 +55575 +70066 +74402 +43964 +18469 +70540 +14503 +3508 +44054 +153 +53910 +12475 +53193 +12789 +11404 +32709 +33908 +70555 +40303 +58733 +16120 +56434 +21396 +77021 +68031 +30498 +25311 +16324 +57563 +2199 +29511 +36488 +47833 +15564 +19160 +24438 +61519 +56056 +28734 +5818 +45718 +58511 +27760 +61749 +51368 +45606 +13375 +16278 +32860 +51592 +6145 +57097 +28619 +5759 +48122 +22983 +40603 +36261 +12375 +57281 +65662 +73944 +75526 +71699 +9664 +20243 +33486 +66139 +63811 +46816 +73974 +26572 +75952 +39255 +73924 +54566 +72759 +71148 +22991 +38030 +25458 +63304 +57947 +65204 +58038 +12464 +76756 +56469 +11103 +63521 +23018 +66268 +25755 +38094 +69558 +34436 +2051 +21940 +13010 +39712 +10148 +13343 +75108 +69886 +51340 +77055 +65247 +79777 +57973 +73301 +78171 +50306 +22652 +39707 +65143 +75948 +34199 +27508 +52942 +76442 +73744 +2615 +70656 +62997 +25226 +8969 +50783 +49300 +46281 +43479 +17548 +58939 +10086 +71930 +15821 +70557 +69372 +25805 +32832 +31224 +77285 +69215 +5180 +56582 +69161 +48275 +60949 +42854 +76835 +60376 +30116 +8077 +43117 +80534 +51910 +17237 +37102 +36432 +70469 +11823 +28164 +34180 +34565 +67430 +77053 +62659 +3818 +63417 +67853 +11703 +29034 +59915 +53557 +30133 +43277 +23849 +71053 +24988 +69101 +9938 +37701 +64144 +53683 +35335 +70552 +49145 +72147 +33426 +54805 +40350 +9573 +76212 +62924 +14841 +76448 +5959 +4672 +40288 +45011 +30568 +47862 +35955 +35171 +62002 +77169 +55666 +43977 +74958 +62803 +47452 +76678 +21960 +53346 +52113 +63348 +4914 +22904 +24310 +27338 +15241 +12272 +4516 +17653 +33559 +75469 +63315 +76911 +62522 +51618 +30302 +27739 +76903 +62722 +37458 +71872 +29241 +27020 +57651 +8674 +36130 +54591 +3855 +66637 +35517 +6324 +37027 +56932 +38605 +16467 +35621 +55256 +2289 +75380 +25479 +60057 +63109 +36277 +60428 +29028 +63947 +3260 +43684 +56120 +34620 +18646 +23162 +19232 +5741 +11834 +33599 +42088 +11492 +4371 +68394 +35267 +17611 +76724 +36759 +60507 +34225 +19856 +29602 +9357 +7805 +55157 +53 +54026 +45673 +17826 +72742 +7632 +39146 +21999 +43646 +41045 +6848 +11327 +20390 +20713 +67283 +67477 +25850 +25123 +73438 +36850 +72673 +19566 +47885 +27639 +42516 +19801 +12862 +16585 +14103 +12051 +21835 +56482 +76275 +61919 +51312 +69872 +46312 +11221 +61650 +27855 +37037 +4464 +79146 +55718 +48492 +76486 +7682 +67687 +56648 +8391 +74482 +1032 +59858 +68410 +45250 +26980 +51873 +24177 +63695 +67781 +17244 +4349 +55027 +37559 +52508 +21186 +10969 +19327 +43224 +78021 +76232 +60321 +80740 +29093 +59158 +76955 +50044 +34399 +61556 +22550 +55313 +22499 +60777 +80411 +15905 +42241 +3106 +50433 +5635 +31447 +2292 +24616 +9336 +20216 +39633 +2260 +26571 +47372 +20786 +75759 +33969 +23653 +21249 +37321 +44801 +31926 +61915 +57334 +43306 +52028 +77170 +67722 +68228 +59502 +49948 +37103 +59704 +5156 +73656 +76323 +8539 +76335 +23668 +59748 +68609 +15652 +15737 +55162 +29988 +61840 +52997 +13214 +67186 +35813 +29618 +59165 +63424 +11956 +11591 +78735 +31837 +43524 +65671 +66605 +43120 +5474 +66215 +46679 +64825 +13714 +59860 +60198 +43060 +77072 +51869 +62194 +59438 +61329 +33929 +39145 +47976 +58200 +72708 +47595 +45567 +7366 +20955 +60897 +31230 +70385 +67949 +31570 +59893 +4256 +63797 +12039 +54802 +66049 +43054 +27876 +67994 +6167 +56635 +12560 +18947 +1925 +38365 +47611 +79329 +42155 +58581 +677 +54996 +48527 +62706 +38960 +18224 +16506 +53616 +41478 +1321 +38088 +2016 +18487 +8839 +35264 +55137 +8724 +35144 +362 +30585 +28077 +32281 +35311 +19469 +73431 +45383 +10844 +75701 +40021 +57123 +65805 +42219 +8678 +76387 +53394 +74270 +72493 +80484 +65404 +45775 +32810 +63001 +46927 +57456 +63600 +2884 +75200 +16048 +10952 +35096 +34156 +64421 +57108 +12885 +28273 +24558 +13448 +47386 +15304 +63839 +60565 +64379 +33709 +14489 +9508 +9541 +22770 +39141 +77188 +5874 +12231 +44858 +75410 +19620 +78664 +54765 +46320 +40294 +14155 +17280 +19337 +31015 +43645 +45421 +72695 +72022 +17058 +39096 +44180 +7564 +67595 +54804 +31479 +56922 +40045 +14652 +68043 +28112 +30488 +63680 +13498 +28333 +79990 +591 +59777 +4858 +42617 +15465 +71236 +31706 +54634 +43428 +3770 +17939 +16583 +76949 +32615 +69204 +69443 +79608 +7514 +67842 +35354 +64159 +28647 +40635 +46452 +6912 +39554 +60372 +78898 +3674 +63758 +16481 +61662 +28281 +26518 +40666 +58296 +73342 +66912 +45167 +8756 +42914 +46783 +25066 +22700 +67954 +79561 +6431 +76038 +49771 +69178 +13155 +3918 +71332 +9345 +15005 +28321 +74888 +18062 +52444 +13271 +9235 +8897 +60191 +75181 +37844 +74934 +33385 +16982 +48746 +37415 +2026 +58521 +37815 +53866 +23565 +43576 +53688 +49787 +40914 +77032 +40048 +47419 +20280 +55392 +46712 +14842 +65564 +57538 +6398 +66420 +59677 +57662 +5649 +15509 +17164 +20255 +15403 +13750 +44728 +43586 +5172 +60400 +25548 +52863 +60995 +19026 +49224 +70872 +53015 +57552 +28183 +58085 +35856 +56463 +7650 +52715 +68265 +25321 +51133 +10697 +6434 +56634 +24002 +61086 +70246 +47315 +19105 +76172 +33335 +58932 +48741 +34894 +48510 +50520 +48965 +28925 +31057 +57724 +43505 +56064 +63431 +68778 +67702 +54729 +75201 +130 +76847 +55500 +76472 +77939 +35691 +27381 +70868 +77378 +6664 +23166 +29423 +41759 +36453 +15578 +14620 +1352 +58194 +34029 +36770 +26840 +58164 +72661 +61012 +49827 +51289 +19349 +49059 +57493 +9725 +47529 +23306 +55716 +485 +35340 +43594 +79634 +34684 +47594 +41060 +11859 +44403 +12548 +36348 +449 +62897 +39071 +40516 +64762 +983 +22793 +63978 +50652 +73084 +40645 +79426 +6764 +492 +24404 +46464 +46048 +32094 +20109 +8911 +54398 +2868 +74622 +50473 +37011 +50787 +68752 +39579 +17097 +75504 +1823 +50476 +4253 +55778 +51544 +54930 +49363 +40821 +63451 +76263 +8209 +24137 +56507 +26637 +74061 +77503 +74309 +19623 +69795 +16427 +39424 +33864 +38151 +69708 +37730 +48684 +53852 +66940 +21693 +62900 +18103 +27440 +63314 +4327 +57311 +27809 +63675 +7821 +25521 +70786 +61736 +52185 +27376 +23679 +31375 +10919 +13673 +27393 +44472 +22192 +46144 +61582 +78656 +9313 +21826 +11822 +66566 +29337 +37529 +39387 +77713 +50875 +76866 +15051 +19385 +24948 +45132 +18470 +77947 +14999 +4318 +49192 +78377 +32236 +24665 +23669 +18086 +35060 +18552 +20423 +16217 +19363 +5497 +73304 +8409 +8103 +2499 +43943 +22434 +7025 +80013 +5254 +16458 +5767 +53064 +46801 +79044 +414 +39794 +14152 +39888 +7447 +5896 +3726 +72948 +715 +18161 +52133 +9382 +48338 +72796 +73527 +73640 +72282 +60724 +58374 +46694 +68741 +23783 +66044 +46976 +28223 +31850 +55697 +39846 +18641 +60366 +39451 +7527 +33009 +65291 +31203 +902 +75037 +11232 +71015 +6282 +12441 +37089 +54144 +3321 +26831 +55734 +5467 +30877 +71981 +31466 +29807 +57065 +9844 +67012 +42237 +6716 +43069 +19643 +42553 +80103 +54955 +54677 +48079 +59219 +31954 +51139 +13020 +2563 +3688 +80749 +17694 +66419 +65468 +27282 +78099 +51779 +13117 +79864 +5852 +44603 +36898 +50695 +5786 +18114 +53457 +70839 +24872 +66846 +16019 +27372 +43440 +10330 +40236 +11662 +19884 +44553 +57819 +3531 +30587 +8280 +58025 +75296 +40054 +6205 +71365 +62448 +61847 +3812 +37812 +56658 +20424 +80153 +6439 +68225 +30162 +44207 +5168 +46421 +77207 +62371 +73835 +8146 +45088 +72877 +58043 +144 +69711 +28641 +10091 +58389 +54232 +49519 +46145 +5149 +13765 +24021 +45083 +25411 +14279 +72265 +52059 +30271 +13600 +69373 +58257 +14858 +41142 +52184 +18053 +30551 +24039 +29582 +9974 +66032 +48757 +33844 +39487 +37543 +64471 +63028 +61306 +65233 +54333 +38988 +36145 +46412 +70689 +62580 +1374 +53014 +73637 +32861 +18778 +8853 +35166 +77224 +16265 +29374 +14587 +7394 +42225 +15777 +15318 +71453 +71394 +36305 +20036 +38397 +50361 +67559 +77376 +3626 +9347 +55820 +4679 +4162 +61163 +22997 +67749 +73010 +46470 +51284 +29192 +38509 +40112 +56450 +43342 +49726 +57678 +76152 +55740 +21598 +5828 +39909 +22204 +57039 +15892 +34889 +33231 +41233 +24203 +2519 +43318 +47479 +48672 +29881 +78161 +36887 +30320 +74162 +22247 +65095 +74166 +2698 +70427 +36524 +44134 +15279 +32154 +52402 +15692 +30206 +6950 +8056 +24636 +17590 +16808 +80076 +53111 +50778 +25007 +57945 +64260 +38272 +31657 +39236 +23268 +427 +6806 +69787 +60740 +24187 +49743 +11360 +23747 +69304 +22453 +72076 +7971 +19055 +1801 +70928 +20820 +74777 +29588 +33394 +26141 +44492 +28611 +7583 +26079 +15176 +57274 +80478 +78600 +71551 +47359 +13495 +50991 +6134 +77978 +53209 +52600 +41328 +78451 +50390 +38667 +31367 +51977 +19014 +74098 +49574 +0 +71653 +74108 +69239 +21975 +41432 +15069 +77103 +34217 +68965 +3349 +71298 +70418 +78448 +78479 +6265 +50294 +47502 +64675 +37725 +25368 +79849 +50757 +28959 +62230 +66893 +7306 +33890 +27247 +64831 +80118 +62321 +12800 +15393 +67044 +64699 +6445 +4407 +77678 +48263 +9915 +68854 +43469 +80072 +35799 +67140 +74862 +47073 +18836 +51503 +75275 +65119 +46563 +56664 +71256 +37298 +8239 +18000 +23190 +65482 +14150 +5746 +75688 +47777 +64476 +14796 +52387 +1704 +20601 +71488 +49334 +23335 +75415 +16227 +63915 +205 +27059 +27883 +68364 +69754 +7198 +64679 +41687 +28498 +68310 +59126 +22549 +76895 +64203 +76299 +9574 +16157 +58637 +60580 +6607 +10954 +17876 +57558 +36787 +32927 +18862 +37706 +57195 +60643 +39592 +53780 +25110 +75071 +26276 +19195 +73543 +26356 +61526 +33702 +46324 +18251 +52186 +31113 +59801 +38230 +60563 +77952 +41526 +20343 +25667 +13940 +48584 +53741 +66046 +20824 +6484 +17220 +12428 +62818 +31444 +48248 +24577 +24108 +55560 +65130 +21065 +38942 +72014 +59756 +4247 +47627 +36219 +59979 +21555 +41798 +27841 +75794 +69858 +53972 +42976 +51103 +75856 +74197 +4830 +33630 +47208 +76198 +40068 +34598 +72140 +23080 +8871 +25453 +16655 +68957 +7071 +50574 +52210 +24876 +9864 +80630 +72928 +48673 +15082 +52635 +48286 +74598 +24223 +2872 +39535 +62531 +36407 +30854 +10389 +77838 +68121 +43728 +55335 +11711 +16852 +34341 +27109 +77261 +7495 +40746 +1759 +41801 +51955 +38652 +18615 +63832 +46403 +67160 +40705 +1964 +41697 +73532 +66248 +64193 +64048 +30856 +76886 +73567 +32764 +7483 +3430 +75680 +7707 +46630 +74833 +30932 +13033 +46688 +2018 +64023 +54717 +61869 +19685 +43783 +30471 +46011 +78688 +27948 +21074 +2498 +15198 +15527 +12857 +32812 +9028 +44265 +66863 +51039 +51036 +45854 +64547 +71538 +1011 +4337 +72610 +36687 +6896 +14806 +27280 +72968 +9494 +765 +69325 +51849 +5511 +49672 +45463 +41482 +54719 +77460 +7951 +16486 +11238 +63399 +6436 +73135 +61396 +33323 +2818 +36209 +64633 +58197 +59237 +24968 +80741 +27555 +78595 +10819 +46423 +60154 +62189 +48514 +46581 +44779 +75631 +37489 +69716 +50423 +42039 +72647 +68757 +12245 +42652 +36952 +25114 +737 +9389 +11739 +56575 +1705 +61394 +67901 +52958 +63455 +47241 +74590 +3529 +76651 +77388 +29535 +69909 +53666 +30141 +57672 +14936 +4601 +48370 +1834 +58549 +58376 +52218 +38952 +60538 +15502 +79442 +70665 +71111 +21681 +31780 +34302 +38338 +38140 +18479 +58828 +74515 +56063 +549 +9570 +73248 +43364 +69630 +21522 +78967 +49249 +78951 +11897 +4027 +3679 +9649 +2540 +59333 +32352 +64942 +14034 +70013 +40613 +45478 +11414 +47704 +5540 +45903 +44208 +61494 +15181 +3044 +77364 +40590 +27643 +72026 +62256 +52198 +71382 +65096 +44194 +13169 +32135 +44687 +53938 +31484 +57726 +58881 +39620 +65705 +65458 +22404 +25964 +6814 +5303 +7130 +54458 +19062 +69891 +52143 +57556 +75004 +69242 +28403 +54915 +5829 +47672 +76137 +42111 +65859 +80098 +25976 +71121 +55636 +60434 +12332 +20588 +58501 +25867 +34789 +27367 +76249 +59401 +35222 +14042 +16296 +43336 +34933 +47512 +79103 +17597 +63729 +37504 +41401 +52788 +80753 +19470 +49067 +48468 +4553 +21423 +73536 +8002 +37218 +15624 +59409 +53123 +29410 +12588 +55708 +9589 +20365 +63325 +37338 +26728 +54139 +58618 +46461 +2027 +28936 +66427 +45517 +1985 +30887 +18391 +9446 +23774 +42848 +39252 +34270 +75049 +31495 +27231 +7656 +70807 +32843 +24626 +31813 +61418 +58855 +74211 +52573 +12798 +48730 +10812 +47180 +27629 +26358 +574 +43300 +5740 +53324 +17726 +8372 +34745 +48526 +34462 +44898 +23936 +50249 +12981 +74312 +50709 +4720 +28855 +31601 +12226 +49329 +25134 +36907 +75047 +66565 +36922 +19743 +26500 +56116 +65670 +44003 +78005 +70705 +2020 +63527 +52136 +80578 +49538 +37952 +43886 +12444 +29914 +73462 +35737 +28669 +54456 +24315 +22153 +19178 +16844 +58420 +76188 +31751 +43365 +68253 +27704 +55101 +73864 +58003 +72450 +63794 +51605 +2178 +3384 +27155 +12287 +12048 +32628 +73683 +39538 +174 +68407 +62479 +54096 +53702 +3011 +44860 +48260 +660 +24483 +47153 +34020 +16909 +27227 +74547 +66930 +47793 +45122 +77253 +18099 +67147 +13841 +28054 +51527 +32747 +39331 +29539 +74954 +78741 +49188 +19353 +14237 +39634 +72722 +35364 +23779 +80765 +68004 +76067 +36252 +1990 +59196 +11323 +72615 +36605 +79457 +13283 +37649 +19421 +30991 +1980 +55667 +60758 +66626 +32413 +3909 +61729 +64174 +72899 +28804 +60754 +33571 +58018 +64752 +33435 +14911 +31160 +76119 +56298 +5922 +2147 +60357 +65206 +43039 +34241 +3936 +56556 +66670 +11807 +73791 +70531 +13328 +3082 +69322 +2724 +243 +72020 +40820 +61730 +30523 +61688 +35976 +49309 +47640 +30446 +72477 +57443 +5673 +23727 +65034 +44342 +22523 +3145 +1363 +65639 +16899 +40212 +80130 +65232 +71960 +60332 +67631 +54313 +45665 +41303 +62896 +27989 +3041 +11439 +45286 +19051 +20192 +73234 +45372 +37361 +35206 +77512 +3951 +18816 +3081 +17927 +69356 +67952 +43918 +32472 +68899 +23 +27825 +73988 +21203 +22794 +44463 +26917 +32274 +22199 +2639 +2162 +54367 +26258 +47089 +54579 +31016 +8185 +75365 +8503 +63725 +6190 +344 +58211 +51199 +33549 +75697 +13571 +43627 +25983 +29399 +27410 +63121 +4822 +86 +42900 +62973 +47661 +40452 +53746 +35794 +30778 +57056 +26832 +71777 +79392 +35341 +27700 +22694 +19137 +61082 +49632 +7767 +40175 +62081 +58075 +59564 +9825 +47926 +36245 +31263 +18069 +23120 +61403 +19228 +13204 +21954 +80126 +36926 +37349 +41683 +68193 +77937 +3722 +48942 +80435 +38480 +73475 +54987 +6959 +46220 +52792 +44846 +23567 +28431 +47770 +67700 +22225 +4218 +49946 +74491 +22918 +36094 +46916 +42960 +79797 +59293 +14256 +41765 +65463 +42777 +77992 +46577 +47202 +25576 +32854 +50461 +67564 +9878 +77996 +51128 +43567 +68543 +4947 +67604 +19130 +39847 +59692 +73410 +79987 +33462 +34042 +65945 +12982 +75977 +70390 +19159 +74261 +39237 +7363 +24383 +75804 +45036 +37026 +40779 +7540 +39893 +39857 +79837 +44720 +63185 +48583 +60267 +60659 +67799 +65742 +16443 +80221 +29013 +80414 +11914 +41856 +51091 +69908 +73626 +67094 +18670 +54833 +53194 +64251 +40226 +34354 +60410 +10185 +39992 +60496 +62464 +11312 +45231 +58679 +44863 +15111 +2139 +36268 +510 +68146 +47750 +44368 +50909 +49437 +281 +46571 +59897 +59820 +69561 +26958 +43167 +431 +55355 +67947 +24225 +29526 +11354 +21025 +54317 +36262 +42671 +51393 +38475 +38519 +37887 +10197 +71803 +13032 +32160 +17045 +68639 +79160 +58919 +19557 +41433 +33048 +34253 +34994 +9868 +64015 +70646 +32059 +69944 +27812 +40268 +24979 +59843 +19836 +36636 +31154 +31761 +7782 +17228 +1410 +54735 +10093 +45877 +47613 +7838 +56358 +78689 +5442 +54404 +79317 +75740 +47900 +2195 +36058 +64216 +69486 +46742 +69620 +32237 +53039 +13915 +23307 +58168 +76721 +47087 +36326 +47792 +22881 +29098 +68514 +34731 +62488 +17571 +30645 +79156 +51729 +9700 +76066 +20890 +71750 +50291 +79656 +6429 +50038 +9290 +28639 +24244 +51270 +63437 +7067 +71239 +61476 +21056 +68673 +36412 +15568 +49370 +45339 +986 +196 +68657 +3020 +50916 +66463 +56535 +74065 +3906 +68181 +18618 +29188 +8525 +10739 +60644 +60849 +34667 +54976 +45651 +32792 +17617 +18576 +35142 +31912 +44088 +41643 +66667 +76176 +79972 +25085 +10380 +32798 +46103 +47788 +7120 +22077 +21227 +30905 +44770 +76528 +14870 +9854 +6106 +20207 +65849 +36451 +22262 +18051 +7060 +76972 +65007 +67439 +8063 +35147 +42582 +61786 +71436 +67013 +24033 +51404 +26097 +38477 +25145 +19209 +3932 +1939 +15378 +39318 +73003 +41802 +41660 +54546 +51781 +64346 +54077 +36853 +20381 +27245 +42628 +5600 +11735 +29432 +37631 +1351 +25770 +9800 +11615 +47505 +3235 +79647 +27659 +51261 +56744 +33119 +76228 +34087 +79161 +25332 +40899 +19050 +33468 +39204 +14700 +58464 +5256 +37751 +64969 +73802 +9511 +51217 +43775 +52506 +32482 +27268 +8567 +56222 +33737 +16865 +29248 +43273 +62798 +44595 +39482 +34966 +25637 +50530 +15710 +34837 +11582 +31190 +52783 +70073 +17107 +68167 +23124 +30524 +43070 +29381 +43871 +13951 +59175 +47272 +59805 +59568 +50690 +19460 +50298 +44929 +77872 +30169 +63773 +59736 +37809 +37750 +27688 +57073 +70810 +39552 +24981 +22548 +21424 +30280 +32051 +8975 +37669 +55859 +14778 +26700 +21439 +17574 +34388 +10283 +35010 +33730 +31173 +58768 +14200 +62954 +67418 +46325 +20895 +46811 +60228 +23052 +66986 +10067 +26655 +79017 +2682 +77265 +72117 +60979 +19649 +68474 +7961 +51795 +18064 +11795 +65776 +11911 +59878 +16000 +72581 +61702 +80618 +76969 +52096 +6053 +23877 +14912 +57012 +26905 +18610 +47297 +45380 +53451 +23610 +41707 +57596 +56048 +38888 +18739 +75574 +76640 +70647 +24751 +42916 +45945 +20378 +57170 +15706 +74569 +77222 +25699 +44773 +58927 +58717 +23010 +40347 +41902 +2810 +79851 +79065 +38900 +27490 +38668 +77025 +49520 +63370 +9568 +26153 +38087 +31768 +23371 +57215 +14285 +22144 +25532 +60861 +2345 +37301 +8129 +61549 +55792 +79503 +14982 +76699 +4712 +77558 +75842 +61849 +6880 +28910 +17140 +72544 +66277 +65950 +44868 +14185 +76585 +62472 +35728 +23961 +19515 +59384 +38986 +23137 +50772 +1545 +68905 +10460 +5187 +34149 +34863 +59968 +46822 +72290 +27101 +73968 +54659 +61865 +17974 +21119 +235 +9234 +41068 +4895 +4616 +70441 +64458 +48010 +26600 +35025 +69252 +4202 +40018 +53003 +2761 +23290 +59470 +23526 +7315 +19904 +62076 +20706 +76096 +37057 +58832 +2904 +58338 +16471 +78244 +41704 +73280 +51229 +18286 +66477 +3698 +74167 +29151 +34592 +61708 +48455 +71169 +62095 +20409 +66778 +61900 +13447 +9668 +27917 +58421 +57050 +69127 +66319 +61187 +4707 +1221 +60289 +54056 +33202 +66650 +25551 +55059 +61558 +9067 +24668 +63219 +68401 +53669 +56357 +56512 +10933 +42805 +37197 +63568 +1460 +21793 +11683 +8758 +54440 +6540 +46193 +41680 +1100 +19011 +26493 +33539 +46823 +68388 +27981 +22134 +37173 +17128 +55786 +24047 +1544 +30517 +61815 +59319 +49292 +48813 +28497 +18177 +13194 +69167 +51321 +18475 +33787 +49952 +9079 +41678 +40921 +31358 +41533 +28763 +8710 +54527 +1610 +2036 +51016 +67823 +27784 +24263 +8820 +47088 +45294 +16142 +20767 +59221 +15087 +8464 +51754 +37276 +27425 +1409 +74518 +79032 +24346 +9047 +45302 +42408 +10114 +40130 +14872 +46397 +52709 +6754 +18587 +44339 +30902 +37354 +36312 +1023 +48390 +48418 +52880 +31716 +26645 +4001 +16669 +24272 +68646 +26033 +71019 +27382 +78380 +73832 +60225 +76839 +20010 +56401 +70641 +57676 +41592 +45154 +63127 +62574 +27818 +78609 +53646 +5983 +36566 +77983 +14064 +16615 +10559 +71327 +69810 +17734 +43653 +17669 +48482 +39020 +10676 +57967 +30437 +28427 +32900 +9698 +55465 +28096 +16075 +26761 +28997 +15775 +37797 +58317 +59229 +48075 +21063 +19097 +66202 +21724 +16332 +5624 +76031 +52455 +33806 +15643 +29429 +1242 +80254 +10665 +49820 +23479 +49199 +12493 +47692 +76064 +20899 +64095 +40772 +67941 +26420 +24284 +78847 +17829 +53017 +46356 +66653 +62312 +7465 +38744 +42575 +72467 +41602 +23202 +46875 +78871 +11366 +31464 +33678 +36593 +41364 +20930 +70654 +25505 +584 +56769 +51145 +3441 +61709 +79595 +21027 +52879 +4655 +74678 +18640 +27442 +15900 +46643 +775 +59043 +17266 +74866 +70319 +73719 +50886 +2365 +72631 +48209 +20573 +18853 +9012 +6759 +10222 +44994 +33142 +40421 +32490 +27168 +49687 +10449 +44513 +34913 +41475 +12868 +26940 +71593 +37895 +15595 +32273 +77198 +40100 +8647 +36442 +35814 +22771 +18837 +38379 +32608 +69339 +98 +33812 +51725 +61339 +33324 +73663 +74541 +45442 +69119 +55606 +80628 +77738 +41991 +46650 +37319 +31958 +40499 +29444 +39545 +46151 +1080 +22094 +10880 +78132 +72421 +17898 +7312 +48551 +42464 +10356 +13074 +27828 +31047 +38028 +72218 +33184 +37698 +54172 +33448 +30679 +52399 +27943 +78766 +75379 +27305 +31423 +23510 +33267 +66018 +72259 +51936 +37495 +80382 +26126 +43822 +22686 +77395 +24173 +22162 +80423 +33679 +12355 +31621 +44236 +35251 +20221 +34158 +15840 +1730 +53060 +41770 +19971 +52932 +76803 +79135 +26721 +53376 +63881 +4873 +54358 +40425 +61055 +19111 +19167 +11589 +23971 +59015 +11422 +45066 +78952 +17201 +12459 +48541 +3793 +71395 +72454 +37687 +7408 +52617 +55217 +53435 +24759 +7134 +79560 +75709 +40866 +12627 +58418 +66657 +78105 +11695 +66888 +14085 +50397 +62793 +61182 +42384 +7929 +75727 +20833 +19963 +21963 +72563 +78760 +79565 +68104 +79212 +33610 +16754 +66724 +70619 +76374 +35634 +16177 +56771 +39744 +39479 +59194 +40264 +45277 +9222 +2226 +20863 +75584 +44072 +39895 +19765 +24950 +1225 +14833 +28576 +75691 +28325 +56077 +34527 +45483 +72120 +64516 +3111 +66676 +21398 +2575 +34575 +52302 +62333 +23544 +23702 +23795 +46327 +55937 +28047 +65801 +42433 +80460 +39301 +37148 +28462 +24155 +24046 +76306 +37154 +16524 +57294 +706 +32307 +29887 +74459 +52297 +66630 +59684 +37931 +4900 +64067 +32828 +51956 +11344 +215 +8221 +27102 +76703 +63272 +41162 +73707 +62863 +1890 +62250 +75891 +52173 +16260 +17301 +66770 +73392 +54441 +66503 +61954 +769 +27743 +42866 +52529 +65498 +51516 +8908 +74610 +71263 +37513 +42102 +40933 +16492 +71592 +31487 +41490 +16934 +28942 +46635 +33151 +33129 +32013 +64361 +50316 +29754 +44903 +23522 +21584 +18636 +42361 +50472 +51512 +39595 +53430 +1348 +63186 +35045 +30562 +20531 +8437 +10705 +11030 +54503 +52220 +23121 +77806 +11574 +72058 +53240 +39671 +76875 +33464 +25089 +75933 +23378 +1792 +22995 +70797 +38560 +45649 +77482 +30270 +19064 +20802 +71889 +29783 +78090 +41108 +36950 +35202 +17640 +19575 +64261 +69757 +61637 +72885 +10527 +69257 +52312 +2159 +79869 +47107 +33117 +31415 +36303 +19678 +35888 +34179 +4106 +55724 +21517 +8549 +42769 +21061 +39598 +77172 +37121 +39677 +53820 +45613 +22455 +32795 +14283 +67769 +33794 +40011 +74864 +54155 +29490 +16818 +7718 +65921 +45158 +1776 +11206 +39972 +5476 +66437 +17139 +50601 +57728 +1961 +25220 +52562 +45932 +3940 +61093 +48171 +31788 +76242 +69093 +46318 +56274 +30724 +50180 +74912 +42474 +72585 +57031 +30095 +6770 +72567 +6116 +50225 +38491 +32211 +13192 +18978 +49133 +79033 +2721 +12297 +67317 +20613 +52265 +32826 +58390 +16896 +29414 +42276 +12613 +39871 +61262 +70527 +12620 +19112 +18263 +459 +35860 +72854 +135 +12217 +39876 +58136 +18290 +23192 +69616 +64991 +74215 +72811 +77469 +51177 +20062 +48759 +58774 +4628 +48829 +64140 +64747 +65927 +55878 +6706 +57513 +19187 +13601 +80308 +42148 +59672 +45153 +29810 +70158 +44983 +42244 +7369 +76751 +32992 +58525 +65955 +8927 +65785 +63458 +52016 +25557 +74806 +13153 +74733 +9163 +63122 +12109 +8433 +21631 +11031 +5259 +7577 +61219 +63178 +38021 +23715 +44837 +34661 +14725 +17108 +6938 +54657 +51378 +16544 +70190 +56424 +1122 +19999 +43818 +34428 +31532 +15629 +2306 +28901 +79414 +50781 +50528 +53458 +56506 +15030 +58614 +55787 +18442 +14583 +62757 +13697 +74790 +75069 +73817 +2213 +9017 +52365 +23176 +26766 +64641 +4129 +48727 +43236 +73643 +34769 +40356 +30891 +65650 +15666 +17368 +12370 +23967 +3299 +310 +49991 +50849 +44780 +27124 +52118 +73956 +65257 +71054 +6226 +40073 +66674 +49508 +78722 +42394 +62544 +14026 +44511 +69753 +18584 +26984 +25603 +71299 +23029 +61469 +34651 +8995 +63275 +41394 +9801 +5969 +3992 +3147 +78357 +29234 +26294 +44594 +76487 +357 +60483 +70275 +55295 +47178 +33465 +55189 +31643 +60447 +3459 +46748 +53823 +66915 +10355 +33422 +23666 +71832 +41095 +56350 +57620 +48312 +51811 +34871 +24873 +56237 +40033 +32215 +61517 +55635 +6389 +72443 +28505 +45188 +28513 +51637 +4453 +21978 +41234 +30847 +39213 +33798 +27377 +40777 +45392 +37768 +5707 +10726 +34525 +54794 +45410 +64022 +11540 +70640 +40245 +54216 +11447 +76021 +32102 +66327 +72430 +23054 +4629 +16402 +56607 +9965 +72682 +40241 +63453 +32245 +24602 +56775 +34689 +53900 +2391 +22522 +78913 +68466 +79421 +76420 +80743 +36401 +5238 +71535 +64950 +65711 +61620 +22346 +41662 +37126 +16944 +54321 +32169 +16052 +13479 +15881 +23292 +3965 +11157 +25125 +36943 +30598 +50741 +62043 +13961 +23351 +12484 +1880 +33001 +38861 +17495 +24921 +50328 +62613 +9038 +20514 +5181 +62421 +33104 +21041 +51597 +26366 +12113 +71640 +56282 +28009 +65490 +57089 +25572 +63326 +72212 +66594 +6108 +1681 +6492 +60317 +39951 +68661 +72898 +56943 +23852 +47632 +31279 +9724 +75912 +62777 +23720 +16468 +79806 +39865 +12619 +46330 +29515 +18686 +33663 +33108 +17157 +59017 +2419 +2953 +21104 +59389 +23899 +41513 +49468 +8402 +70582 +77560 +66397 +354 +48313 +77228 +8680 +28397 +70197 +55469 +291 +10441 +11775 +24904 +60323 +37959 +11850 +40523 +9860 +36662 +3478 +25524 +50938 +55919 +4295 +14931 +35033 +55267 +61854 +15245 +43870 +60904 +29380 +15831 +57867 +16109 +62619 +943 +79724 +36923 +42954 +69310 +57235 +14318 +77098 +13689 +20442 +63938 +6186 +64265 +20222 +53367 +26225 +50868 +64930 +31724 +38493 +1999 +71326 +60660 +72515 +59640 +52246 +53804 +75788 +35857 +12080 +63903 +36087 +23272 +43750 +29730 +67827 +40074 +47509 +28847 +17459 +64535 +57954 +12953 +60440 +40794 +25191 +58793 +27195 +39077 +12602 +32096 +1087 +52162 +19477 +19594 +23243 +69717 +37407 +53659 +5137 +28522 +21672 +1396 +62296 +41471 +4560 +1788 +75730 +57610 +10023 +38239 +38164 +53824 +7655 +41758 +79302 +70677 +62362 +4593 +64670 +53519 +22268 +25260 +29985 +51880 +24078 +375 +11351 +14449 +12495 +61706 +69973 +73357 +18134 +59851 +19368 +31419 +31512 +52828 +46669 +40484 +73361 +79980 +53901 +80046 +12137 +5385 +74368 +59494 +13508 +10808 +5906 +27736 +15792 +53757 +24505 +65828 +49163 +46385 +72580 +45240 +2709 +67794 +7048 +67937 +33637 +45492 +54337 +71689 +45966 +58140 +9379 +22927 +54001 +45838 +69171 +25979 +54357 +2830 +56642 +20364 +72256 +1424 +18579 +41073 +56788 +17737 +16223 +52446 +75422 +7146 +62190 +73502 +60807 +9834 +53570 +76821 +55824 +43316 +41449 +44749 +49425 +30346 +16764 +46157 +71785 +47092 +74408 +64302 +20690 +64987 +25541 +27100 +40462 +25440 +7081 +27870 +71320 +48197 +24909 +39346 +27187 +63973 +57655 +5398 +11558 +35645 +55905 +6942 +5451 +44284 +36342 +26929 +21304 +11746 +69779 +41843 +48917 +33593 +42845 +40627 +63594 +60900 +50817 +14410 +17666 +20992 +46954 +27048 +34617 +9530 +28637 +23874 +67132 +639 +66429 +7164 +74648 +26845 +63005 +29007 +8156 +77431 +25980 +33881 +24153 +785 +78118 +78461 +64607 +60315 +26660 +66505 +76539 +70215 +36332 +2570 +17361 +50278 +64005 +33233 +35140 +32194 +55649 +78872 +35131 +31800 +14750 +34336 +10199 +60702 +9003 +25437 +24464 +41094 +50422 +73178 +51300 +56124 +20650 +36154 +35977 +48493 +9513 +73916 +28354 +60738 +56422 +12291 +31138 +52404 +1861 +35277 +42507 +42523 +76350 +41152 +46482 +13661 +46671 +13090 +2189 +44827 +8543 +27737 +36405 +51413 +48988 +57221 +73203 +3515 +48243 +29580 +36011 +56338 +39352 +46934 +35031 +47805 +62368 +60442 +12261 +41291 +72687 +10668 +74884 +54237 +72037 +70007 +39287 +63508 +59572 +21067 +2677 +15698 +77991 +14167 +50178 +58561 +24037 +25817 +1283 +78284 +29506 +15941 +52305 +17071 +32151 +2400 +36618 +1476 +44029 +55156 +18993 +49999 +79722 +73668 +32968 +73986 +54784 +78308 +4995 +73165 +64130 +15674 +55707 +41360 +3836 +76213 +70566 +70568 +9216 +43436 +20134 +59784 +72258 +11827 +25729 +15070 +10484 +41646 +12237 +30653 +53304 +22676 +1166 +15510 +30769 +45053 +13112 +18472 +37500 +16106 +1637 +9488 +30538 +52178 +28727 +62751 +67870 +27492 +41880 +43209 +47253 +69435 +1092 +22309 +21335 +33566 +54070 +37257 +52620 +60629 +47050 +43337 +75395 +17131 +75118 +54112 +75625 +30855 +41251 +23787 +20037 +64295 +75231 +46279 +21934 +50873 +37530 +61922 +59636 +59154 +20012 +56162 +31455 +30726 +17524 +36548 +60602 +27972 +29827 +37756 +44767 +7213 +79402 +66759 +63101 +78272 +61362 +60952 +30218 +35008 +61621 +65898 +29478 +4730 +25190 +58079 +48107 +56114 +11791 +48081 +62005 +18050 +53805 +40010 +50463 +41463 +14683 +61157 +20053 +46420 +7922 +41865 +13855 +19104 +60666 +58401 +79746 +58463 +26626 +44233 +39999 +29110 +55928 +76515 +66373 +13408 +47699 +71278 +22570 +20778 +18206 +4219 +2957 +72222 +55408 +73326 +23434 +56435 +36872 +35034 +28948 +67122 +28681 +44525 +69272 +10826 +34574 +5570 +69899 +66581 +39091 +52941 +38110 +21235 +64090 +14373 +64938 +35176 +76587 +80318 +15055 +50590 +53830 +8888 +48967 +50727 +12364 +75530 +26256 +34116 +7218 +56500 +39541 +4412 +61924 +18712 +15426 +78834 +24072 +48782 +7070 +57099 +12452 +46255 +59144 +40255 +69710 +74479 +8484 +66091 +79016 +67474 +33309 +76230 +45243 +76813 +42889 +28377 +76577 +17507 +20522 +20362 +34772 +13944 +52086 +64597 +43355 +64404 +73579 +7226 +39314 +40039 +30067 +16671 +18109 +60908 +35425 +23496 +6638 +55687 +80210 +63830 +36296 +7762 +65364 +57720 +14452 +36109 +36306 +14711 +63563 +66253 +71971 +57595 +78341 +60052 +17433 +75361 +61912 +11631 +69857 +67871 +15684 +19418 +64558 +20906 +46342 +30199 +50456 +30566 +61462 +73404 +21079 +73492 +36871 +7661 +65403 +8356 +78365 +34254 +14749 +36265 +46944 +50469 +47007 +65072 +35239 +18918 +28415 +17964 +15381 +78661 +78824 +80581 +74015 +18669 +45900 +76920 +33163 +32915 +13199 +24053 +305 +58049 +56740 +2693 +12083 +7345 +68742 +27597 +61906 +57661 +15219 +69045 +40437 +36769 +48425 +17668 +50037 +73711 +4725 +42775 +54518 +13605 +57839 +40547 +68894 +28693 +63147 +26551 +12363 +17820 +44018 +363 +6595 +33542 +45862 +9431 +66766 +30972 +7311 +27435 +14547 +21314 +65995 +28742 +55039 +38557 +42721 +75796 +37250 +15247 +72519 +67744 +77079 +33652 +36075 +65021 +35748 +59830 +14382 +10260 +59080 +43760 +52971 +65416 +5204 +61254 +37122 +76042 +58282 +7150 +13018 +71521 +4565 +66813 +55073 +55576 +50771 +47183 +32308 +59961 +49716 +18549 +79899 +41333 +4249 +80616 +30007 +74297 +58425 +80019 +48946 +45519 +49667 +80260 +73366 +20530 +64760 +54759 +56892 +67207 +32083 +9190 +3601 +50586 +54307 +31642 +62388 +75823 +8009 +13390 +25581 +51823 +69790 +40908 +56886 +55985 +59580 +68753 +28248 +77346 +44384 +23735 +14440 +46135 +65767 +43373 +69231 +17582 +15098 +79775 +54192 +24469 +47711 +69370 +77133 +47730 +47281 +64799 +50673 +78492 +32187 +67244 +72172 +3931 +9460 +7688 +11269 +77589 +15575 +38978 +21979 +74265 +18432 +32625 +30083 +60609 +48567 +30287 +24686 +3676 +32356 +75934 +25556 +66154 +35605 +58963 +23826 +54104 +41139 +23872 +42159 +80552 +75816 +1171 +241 +77070 +29876 +15565 +10494 +44813 +14668 +71834 +23288 +9106 +1340 +28672 +23630 +24711 +71540 +8766 +40600 +17797 +42713 +35686 +71745 +35903 +75859 +20399 +13617 +28824 +63413 +24335 +34695 +37105 +70003 +73255 +1235 +39534 +44074 +25086 +21708 +59867 +66126 +1157 +27089 +2444 +7790 +76670 +9254 +73859 +26689 +3166 +69092 +33843 +28032 +15544 +42979 +80499 +74829 +7011 +70241 +1491 +59414 +70517 +18975 +30836 +39396 +25430 +37839 +31028 +39593 +15060 +76050 +79369 +3412 +71762 +77581 +43577 +36946 +39588 +55114 +58753 +52323 +77585 +31870 +37842 +15398 +69455 +18042 +17385 +46675 +44112 +14220 +5007 +43459 +23416 +73778 +80404 +21529 +70317 +30179 +8634 +59744 +74795 +44911 +69382 +61487 +49086 +33019 +22724 +1017 +66422 +2263 +4564 +7826 +76099 +16732 +31921 +8655 +50563 +71431 +9566 +34549 +30409 +59891 +70881 +36020 +53358 +5958 +72023 +59631 +22208 +77542 +18241 +26609 +30967 +23294 +40767 +46960 +51821 +29065 +31442 +24576 +39342 +23572 +13903 +8566 +29980 +71589 +16080 +52375 +11727 +33832 +46225 +46698 +33998 +28894 +63888 +23000 +40315 +41642 +7341 +44561 +43078 +45108 +80114 +70734 +50350 +48282 +8951 +76108 +67162 +1535 +48848 +57978 +77906 +76704 +22497 +13791 +3386 +19631 +25345 +37111 +79311 +39484 +26239 +17871 +67071 +63976 +48157 +66404 +49274 +23709 +48361 +51536 +20918 +72473 +54190 +21776 +51765 +11698 +55664 +29318 +8552 +35471 +32395 +13191 +46593 +68878 +43188 +12730 +4764 +16856 +36903 +58392 +56488 +7089 +62843 +31032 +14142 +77561 +69574 +64586 +34937 +72060 +78878 +67410 +55821 +45739 +44385 +42660 +60115 +3672 +43662 +34334 +25594 +41120 +37487 +26152 +76039 +70837 +75690 +4127 +58350 +4040 +70644 +5360 +12725 +58991 +18785 +55725 +66190 +33496 +38219 +47174 +2835 +61059 +70559 +23805 +61166 +20576 +66945 +32531 +39361 +57014 +77894 +76554 +3849 +71358 +34350 +6029 +58528 +15194 +30255 +46562 +75066 +74676 +71860 +73837 +45221 +47578 +49988 +39149 +64707 +10811 +29849 +79306 +43147 +55441 +10354 +70958 +7047 +12353 +62087 +3634 +3027 +19284 +79649 +29654 +67134 +28351 +23503 +32136 +1077 +62689 +78427 +10263 +20789 +23223 +21413 +53550 +55728 +58684 +21990 +47899 +57436 +60131 +19103 +31841 +3284 +73257 +50965 +78740 +30421 +48903 +44051 +61545 +57135 +35158 +75467 +51531 +35253 +71662 +20234 +38762 +25520 +3431 +26778 +75723 +60133 +2513 +23203 +58542 +68996 +44115 +44872 +49335 +57465 +42469 +12595 +23891 +22780 +38399 +66345 +29185 +35101 +60654 +49858 +42562 +70636 +10223 +11886 +70146 +6937 +62324 +4258 +48638 +68248 +46668 +40997 +59441 +55742 +12664 +60230 +42576 +65516 +7662 +67472 +61576 +59596 +71865 +16706 +9901 +55261 +32225 +56649 +20088 +25921 +57689 +61673 +19572 +18136 +55498 +23504 +50689 +8945 +41002 +70389 +43116 +16956 +58630 +43532 +42559 +11849 +71575 +3196 +35003 +21544 +67039 +5030 +69791 +53372 +9354 +14568 +42297 +27951 +41816 +32859 +57782 +5666 +80431 +78541 +77809 +17710 +66744 +71991 +55071 +41601 +79313 +68211 +52948 +7137 +63021 +50041 +22459 +18827 +16394 +1633 +6296 +13451 +39201 +18548 +59268 +29932 +7674 +41962 +8055 +34733 +32704 +61877 +11292 +9101 +61478 +40542 +38966 +25351 +65246 +17517 +10476 +79939 +34398 +72902 +29697 +70311 +51012 +13023 +61810 +71074 +29492 +40008 +8109 +51227 +18894 +29341 +4097 +58878 +22760 +51724 +36362 +44409 +18881 +51521 +65803 +69546 +67904 +19729 +7445 +11967 +11273 +69683 +37678 +16849 +26887 +43971 +36203 +12050 +72714 +51252 +60941 +58645 +74275 +79672 +21414 +63139 +53397 +19561 +14650 +77339 +74014 +35478 +43966 +42758 +70002 +69150 +3535 +63505 +27080 +74613 +78924 +11553 +43292 +18764 +23880 +69187 +33639 +48566 +5838 +21477 +72757 +66320 +48044 +69569 +71051 +42980 +45361 +20798 +61953 +34322 +30953 +50062 +13051 +7077 +80521 +14454 +49810 +22232 +22129 +49821 +9361 +23342 +76013 +29501 +58801 +38382 +58262 +66713 +40811 +62936 +27593 +45529 +44148 +54832 +76496 +27644 +45808 +35572 +11932 +78533 +80485 +8288 +57437 +79558 +65221 +79800 +62782 +45727 +18834 +75598 +11877 +46681 +43304 +1138 +29062 +29916 +27064 +66821 +4600 +42017 +80446 +76391 +43509 +54226 +68959 +21150 +32046 +14063 +58842 +71210 +3627 +14565 +63429 +79460 +38555 +65733 +47254 +48913 +42870 +9139 +32964 +2190 +61594 +20139 +18758 +50276 +64531 +1962 +8211 +25071 +9302 +80180 +53507 +55677 +29125 +30689 +45641 +13735 +34747 +53302 +40762 +70222 +58407 +77419 +12877 +11907 +75209 +38294 +60921 +5201 +33767 +32087 +35556 +13695 +26057 +4596 +53473 +79526 +2534 +47458 +47690 +35492 +46358 +54631 +32624 +46601 +5765 +6048 +50411 +54548 +76834 +68769 +71936 +2717 +33797 +72896 +28138 +78685 +1014 +7534 +56990 +60167 +25530 +58952 +50029 +40678 +23558 +33482 +12017 +12517 +72488 +40976 +35681 +59678 +51112 +40822 +58833 +45433 +78079 +34939 +42868 +61106 +35548 +68700 +46674 +70625 +30447 +2497 +54670 +19883 +2214 +65992 +69126 +53682 +22808 +54234 +6152 +22028 +36406 +42439 +24070 +76742 +32184 +31928 +72236 +46925 +23983 +39517 +63260 +57885 +1725 +78245 +26074 +13816 +67597 +13506 +64603 +32358 +80673 +2281 +21488 +43561 +67250 +29648 +43407 +53755 +41872 +30792 +40249 +21163 +27925 +42987 +34016 +18984 +74631 +24566 +38422 +39527 +69433 +36419 +70281 +78349 +33574 +47008 +36045 +10224 +70512 +12473 +4149 +71742 +49365 +38270 +62347 +58808 +22944 +44061 +47192 +28086 +53527 +33859 +70849 +14432 +32985 +67022 +70392 +14880 +67697 +27585 +60177 +45746 +12897 +34204 +72163 +15614 +1415 +77408 +18227 +67339 +67199 +40328 +13355 +36129 +32323 +9065 +27791 +67767 +33340 +75806 +50247 +1343 +31217 +65669 +9752 +60285 +61184 +78566 +72242 +32353 +27551 +33934 +68189 +52814 +2695 +51011 +14062 +24252 +37533 +32414 +11335 +1718 +36837 +724 +58346 +2805 +59942 +13141 +78861 +29440 +55023 +4760 +63170 +73684 +5737 +37129 +4607 +40256 +58169 +11701 +9937 +49772 +73170 +67897 +77233 +62155 +37147 +10834 +48528 +11440 +58250 +68349 +18433 +29833 +46754 +79975 +53720 +49439 +67168 +9428 +25331 +63702 +5119 +1280 +23732 +57239 +49434 +1320 +24278 +51287 +57061 +38655 +39188 +65577 +56143 +1124 +66209 +68684 +62984 +7877 +70299 +41093 +1893 +67499 +57049 +60236 +9002 +70140 +3905 +75674 +78674 +58984 +22179 +51197 +46036 +45879 +26694 +13799 +28783 +3472 +78280 +46574 +25884 +57432 +64967 +64286 +39074 +26805 +2595 +75031 +73782 +39983 +73489 +7785 +45347 +46463 +78718 +2215 +36844 +68168 +14714 +41560 +63986 +7912 +37139 +23682 +20339 +16787 +32841 +65966 +7022 +17831 +18104 +35650 +37905 +62680 +14612 +64478 +13371 +36977 +6865 +14681 +55285 +44874 +52570 +18986 +28429 +2086 +78845 +16145 +59491 +59256 +40204 +15140 +41289 +64690 +51326 +65730 +46152 +22023 +25019 +23313 +10636 +67601 +31851 +54689 +7528 +5962 +7176 +53810 +29646 +60522 +56580 +74085 +46078 +11995 +28309 +66729 +56890 +64595 +21305 +64980 +55646 +51668 +39202 +63871 +52580 +26286 +80464 +74523 +1465 +71534 +19656 +39322 +16212 +40517 +53357 +43047 +29595 +30068 +70715 +23644 +87 +51716 +79437 +32464 +70185 +72173 +12380 +37640 +674 +8806 +60174 +18004 +23403 +15645 +24129 +43736 +5787 +47220 +17687 +54454 +71157 +54690 +32749 +17167 +9933 +62491 +49272 +53977 +44356 +30552 +14573 +10630 +44714 +24559 +36543 +39446 +23352 +68831 +55159 +29403 +57323 +13557 +77255 +41631 +52418 +1144 +62498 +40938 +51501 +26808 +60712 +52006 +36410 +15964 +8092 +27145 +68154 +56540 +1726 +72161 +58544 +29653 +66628 +24329 +19297 +56049 +15971 +36267 +47448 +13080 +78843 +73012 +11481 +63091 +70457 +51320 +54981 +28649 +9735 +11288 +11281 +42274 +50465 +74157 +71238 +73465 +10381 +78376 +27339 +20608 +61945 +36823 +38632 +70547 +51892 +6522 +744 +68430 +55258 +54663 +41040 +23585 +9852 +45998 +26174 +31213 +59335 +11998 +15214 +66726 +52357 +6662 +30325 +52916 +60290 +40304 +80492 +59338 +28348 +56153 +16954 +55522 +64705 +40085 +56884 +38749 +42450 +6774 +636 +1806 +3768 +42810 +32509 +43025 +38889 +61948 +19507 +43270 +25045 +64993 +51046 +78622 +48909 +42230 +31083 +7182 +60350 +69481 +61530 +72938 +20346 +24652 +62218 +57713 +40687 +28523 +47407 +37176 +23785 +74966 +9380 +18186 +74797 +3606 +75451 +21426 +3305 +28859 +35057 +38281 +57166 +32131 +28982 +780 +52771 +17443 +49759 +38868 +74385 +16224 +67565 +11661 +46147 +27719 +4205 +19319 +22481 +40055 +31188 +64359 +52586 +54217 +26368 +24198 +14342 +27244 +58959 +49955 +14196 +4388 +20477 +30648 +17853 +20540 +73104 +7173 +33791 +17519 +17378 +8110 +4540 +7713 +49578 +10282 +6918 +42448 +34267 +52268 +56163 +26289 +15278 +41070 +79632 +56182 +16729 +2433 +22323 +64059 +41221 +53264 +29977 +6267 +28891 +61874 +38288 +39171 +26432 +57494 +1055 +60477 +41705 +39603 +42763 +16590 +48834 +73365 +56137 +15942 +2929 +12979 +34075 +54067 +10319 +57754 +35159 +62445 +36234 +16183 +34425 +66771 +23133 +4861 +29216 +8306 +36669 +22532 +35286 +8813 +63022 +31488 +71967 +74313 +77646 +79879 +54557 +41551 +66872 +65102 +17445 +65106 +25099 +3429 +68445 +68341 +9913 +49840 +6181 +77874 +23907 +31840 +24994 +23060 +80652 +78494 +45015 +71289 +31920 +61208 +71645 +33697 +19862 +67939 +37229 +6165 +49740 +73978 +22704 +24915 +21655 +26524 +17503 +21334 +47397 +1187 +73734 +26188 +76200 +33388 +44870 +59071 +12861 +64240 +34835 +54672 +18533 +45807 +51533 +78012 +1360 +55517 +62712 +47039 +29049 +55009 +25117 +5446 +15594 +10991 +44331 +42107 +23354 +75392 +14429 +4486 +52619 +48347 +42421 +57139 +33636 +32045 +38079 +45939 +38258 +49453 +62559 +68011 +69399 +5950 +71246 +49792 +64850 +43957 +37166 +62409 +72338 +20427 +39130 +43438 +13425 +4343 +34043 +32304 +41747 +72626 +54281 +21141 +39156 +11301 +30413 +48123 +64024 +49411 +41205 +52561 +40051 +62162 +26601 +33967 +60471 +62752 +67774 +67057 +54174 +23113 +6350 +57847 +29663 +67562 +23906 +10741 +51943 +68823 +80340 +29715 +61079 +34371 +9536 +73672 +16948 +60498 +69152 +41465 +22949 +5833 +65808 +43127 +36092 +65772 +19394 +70645 +45293 +32451 +53335 +76679 +13156 +47554 +3253 +33965 +8038 +72484 +15460 +19128 +61258 +74465 +3276 +68578 +4081 +59181 +28231 +54319 +21388 +35434 +39183 +12823 +1116 +56497 +50897 +56613 +13999 +70519 +73696 +17654 +22566 +57784 +43223 +38306 +19075 +3053 +46029 +80456 +13366 +51855 +64788 +26614 +36821 +39758 +68102 +78353 +1810 +71846 +80158 +77158 +17928 +35233 +79255 +61732 +47361 +8575 +20480 +16245 +78466 +18857 +14418 +61807 +47670 +38699 +36955 +35786 +70331 +36269 +12642 +6331 +29601 +24186 +43689 +5538 +41825 +77404 +70008 +64905 +42105 +78678 +53699 +42306 +52798 +43807 +22482 +40079 +78991 +74577 +55962 +19675 +14696 +45889 +73540 +31221 +57969 +3686 +76274 +27897 +77812 +6573 +19516 +14075 +38007 +39194 +66363 +77273 +42581 +56086 +40391 +44556 +52407 +13030 +78088 +50839 +21176 +14378 +35196 +21425 +55108 +26996 +957 +63230 +78127 +65685 +51255 +66619 +22338 +1903 +40802 +47576 +43939 +49693 +53092 +58903 +29 +48617 +78129 +63576 +45794 +51555 +16336 +30663 +63932 +53706 +40134 +18288 +56412 +79522 +2181 +60859 +58616 +822 +4393 +1020 +43897 +56212 +61751 +13031 +497 +79331 +68705 +78252 +18130 +54414 +21473 +24842 +33592 +49054 +75165 +44243 +72379 +53093 +16945 +78659 +31875 +67080 +31205 +49859 +62475 +21829 +124 +17234 +66966 +20132 +76789 +65693 +12149 +26094 +2028 +34859 +26605 +57216 +47686 +76940 +77748 +18282 +1906 +22653 +70580 +29727 +47877 +79582 +20983 +13431 +15343 +49975 +10681 +72555 +79325 +52088 +32042 +48030 +38442 +78401 +5571 +70756 +54419 +51543 +19920 +15402 +22773 +27603 +23111 +32999 +21394 +47580 +29005 +20358 +56489 +26337 +48990 +49663 +51303 +77371 +36918 +22727 +970 +27225 +73181 +45163 +77750 +35368 +52214 +34096 +17645 +28882 +27396 +38167 +60143 +19698 +80003 +16692 +27183 +12195 +50832 +49689 +75792 +7855 +11718 +65020 +38067 +10040 +24580 +55471 +62551 +66472 +29957 +14884 +7480 +10645 +38482 +22827 +64278 +77116 +72844 +12219 +21376 +45081 +47477 +70769 +46384 +44726 +53234 +75499 +52903 +8709 +76858 +78443 +13480 +17115 +4550 +14995 +3614 +64196 +34439 +68782 +18926 +53364 +33256 +72381 +8385 +49483 +69184 +28905 +33555 +48855 +10349 +51469 +75829 +32269 +27151 +36598 +19206 +36532 +72073 +5427 +19334 +37782 +46872 +49062 +75418 +44782 +38536 +41442 +46780 +31861 +46259 +10472 +11504 +1088 +68863 +8841 +22092 +73908 +23638 +65947 +804 +29278 +58577 +14471 +47654 +36387 +20732 +22043 +16057 +52298 +73345 +59516 +57202 +71002 +14765 +58520 +14123 +10035 +1247 +171 +4837 +35183 +75936 +79480 +45118 +31797 +67816 +67032 +38169 +528 +50355 +74854 +60687 +25512 +38831 +71345 +39385 +41912 +37094 +24836 +22912 +22968 +77977 +37183 +12064 +11700 +49336 +34972 +45857 +19863 +42918 +69747 +62342 +77788 +46991 +45454 +8761 +37645 +1688 +20598 +19287 +19864 +42791 +31914 +17854 +1640 +68384 +14669 +833 +72196 +53201 +61116 +65739 +75262 +55098 +76123 +77136 +49326 +7819 +80364 +14288 +21028 +72497 +64681 +28665 +27740 +43145 +51913 +68009 +69203 +8217 +56589 +26615 +15431 +58216 +2099 +3197 +74064 +3612 +35211 +2276 +23601 +52616 +37441 +19628 +65412 +70843 +26561 +51218 +50763 +8403 +52496 +41719 +35711 +40127 +19530 +41618 +69377 +14755 +75133 +21603 +10071 +28418 +75398 +47130 +8432 +60584 +72456 +20308 +47747 +15000 +50911 +32986 +42824 +23277 +24275 +43754 +60722 +69179 +9859 +47504 +61669 +75411 +17076 +43829 +54637 +67725 +8202 +51319 +17174 +6090 +52772 +80567 +62249 +14561 +71606 +36657 +37072 +60883 +68952 +47327 +48958 +58510 +69731 +53737 +44303 +38599 +24381 +75523 +36263 +15532 +28173 +3222 +73869 +16494 +79520 +34296 +56610 +50519 +37522 +35437 +44938 +18438 +61413 +13326 +54845 +69706 +50663 +8515 +38930 +30347 +703 +17138 +39827 +36771 +23329 +2482 +13181 +22340 +18882 +78612 +18373 +69771 +23419 +30661 +74365 +62369 +25172 +78270 +30154 +40808 +47425 +70413 +69058 +25456 +19569 +28876 +54295 +11958 +36880 +45696 +44328 +62967 +46983 +51450 +38174 +16550 +29326 +31099 +12579 +41544 +5597 +51138 +27904 +37692 +2225 +76615 +63027 +35401 +45585 +60302 +38518 +75848 +35209 +50518 +25443 +37967 +30479 +13022 +25018 +4313 +63318 +17149 +40641 +79143 +76383 +31964 +62732 +77110 +78700 +65597 +80160 +34420 +6142 +44124 +25595 +43295 +26101 +71798 +56676 +76318 +13863 +56468 +79430 +9581 +77691 +598 +29445 +33727 +77526 +15843 +68332 +54039 +20008 +2387 +19589 +20856 +63804 +43159 +67724 +70833 +80458 +65474 +39843 +27660 +15182 +68676 +44965 +21452 +34098 +45359 +31872 +66519 +54837 +69091 +34167 +63557 +33963 +23452 +46219 +54215 +15786 +57380 +63280 +28134 +45780 +75699 +22861 +28837 +52699 +69049 +5482 +12559 +7711 +9928 +38428 +75501 +79029 +41218 +18174 +11595 +17147 +60857 +35798 +53908 +65540 +46654 +2931 +46544 +22547 +73290 +77966 +71092 +80480 +55026 +38845 +30999 +68215 +47193 +43993 +45139 +4976 +17735 +40868 +60272 +39904 +78984 +11730 +58444 +13530 +64380 +39584 +8361 +29752 +7002 +4240 +3247 +41688 +34004 +30768 +11526 +58740 +63952 +13128 +37601 +54285 +62533 +61714 +8111 +60206 +37774 +70680 +17278 +78232 +75159 +77256 +21134 +4779 +40991 +65880 +21640 +47675 +66774 +49079 +56948 +44359 +70179 +58068 +80669 +36755 +26503 +28126 +35787 +64581 +40061 +48085 +28737 +41541 +70423 +43498 +65783 +21505 +1736 +64702 +37995 +23937 +50915 +7634 +63657 +70226 +50403 +33852 +54482 +10498 +56316 +1745 +18398 +49230 +74214 +69578 +63613 +7177 +77504 +35405 +39408 +59864 +39117 +21967 +38859 +23583 +69466 +6481 +38958 +77986 +9827 +40773 +12853 +69700 +7900 +36204 +10701 +65912 +28440 +1118 +74202 +24013 +72668 +60582 +67791 +14071 +23289 +76933 +5294 +14336 +59670 +8197 +37702 +61194 +62677 +47706 +19799 +30174 +24893 +72403 +66175 +36318 +37990 +17628 +6069 +15628 +55986 +3484 +56795 +73774 +4555 +14360 +72300 +4740 +68219 +10345 +34239 +27409 +51008 +11979 +73620 +71943 +11689 +10825 +49634 +36514 +14762 +22936 +64732 +20028 +7689 +21243 +36890 +38932 +76729 +3594 +79001 +56029 +31952 +55826 +16651 +35018 +17170 +75958 +63787 +35152 +47045 +2936 +76932 +38440 +57118 +32164 +71155 +68737 +78929 +12369 +32152 +517 +71542 +19826 +78395 +7125 +63017 +65302 +62454 +49007 +76126 +11885 +30814 +3758 +79097 +32932 +46326 +46202 +6775 +32393 +33131 +31061 +59442 +32086 +22198 +2753 +61503 +20980 +65501 +50822 +72434 +63900 +63197 +35220 +30393 +36069 +33235 +78274 +2305 +54905 +68035 +76003 +70643 +13444 +26 +33170 +26902 +29503 +71629 +35836 +71038 +69181 +1813 +37683 +13936 +2710 +11747 +56006 +51275 +54472 +14066 +67097 +20915 +70525 +71661 +24897 +20145 +22331 +22502 +72095 +67157 +79378 +37956 +53226 +47624 +79100 +72074 +27013 +11253 +43657 +40925 +48742 +15449 +75318 +27912 +26323 +34234 +49052 +37065 +61164 +67844 +625 +5993 +29729 +23604 +40727 +15133 +41547 +44367 +28790 +40400 +68841 +39933 +10798 +28179 +51433 +31414 +75693 +9529 +68642 +67029 +78263 +73889 +34947 +69866 +41545 +28973 +75272 +26612 +68278 +26810 +4067 +75503 +32229 +61733 +72397 +40267 +21197 +40469 +73863 +20962 +67792 +7960 +59890 +46988 +3935 +52695 +52217 +39557 +24132 +9316 +40854 +59844 +18353 +50020 +45736 +8379 +16537 +27014 +53165 +47537 +37132 +13615 +948 +75282 +68524 +79250 +26266 +16850 +61288 +23200 +61999 +67900 +37135 +35809 +22157 +45813 +51518 +71543 +12463 +70792 +38534 +74333 +25608 +6023 +8473 +1691 +24180 +46684 +8198 +72214 +17802 +56270 +3189 +67224 +33261 +46150 +39458 +15824 +59190 +57392 +48905 +13921 +16942 +63467 +24135 +54206 +11139 +67632 +24734 +36570 +22298 +38716 +46262 +35518 +19467 +68819 +19737 +35850 +52946 +38946 +21460 +8762 +22868 +57258 +73437 +69579 +8488 +20197 +26470 +29300 +2520 +51738 +69863 +477 +14562 +66535 +58151 +7460 +26631 +69350 +55253 +31404 +7448 +3130 +66773 +17956 +31681 +17566 +3550 +1203 +49357 +17283 +19042 +62822 +48302 +75478 +53337 +9629 +21042 +56901 +63002 +36953 +49746 +63137 +25457 +3018 +49360 +80171 +52324 +69371 +56761 +234 +55759 +1450 +927 +37469 +73545 +12678 +21812 +37652 +38903 +24018 +41667 +8000 +30002 +25933 +34995 +40710 +65032 +5796 +26417 +38720 +10327 +17105 +25554 +17615 +34368 +33008 +19538 +48068 +68852 +24152 +73425 +9882 +46424 +28987 +9512 +21029 +9948 +64155 +40092 +38084 +50147 +70940 +15778 +50668 +6201 +33361 +41879 +71291 +45273 +29315 +1101 +21357 +79431 +78298 +38456 +8106 +17169 +45140 +55841 +53765 +60836 +36692 +11839 +37636 +61253 +80679 +18396 +50568 +15253 +65124 +1064 +79955 +63890 +38014 +80059 +17226 +61890 +56630 +32210 +76777 +56320 +80053 +21044 +10865 +33392 +12385 +68453 +33391 +44942 +21297 +64815 +13773 +5157 +41272 +44283 +65897 +33631 +20001 +36730 +24779 +37131 +65467 +72432 +14726 +60542 +60336 +77109 +14810 +30079 +13151 +24371 +23807 +51425 +1302 +28067 +20566 +30707 +14369 +29628 +72495 +53748 +26724 +22722 +60490 +2926 +43980 +23754 +61350 +34091 +5152 +55407 +7894 +6206 +49480 +44665 +68244 +58593 +29130 +42935 +68754 +27517 +52978 +2827 +40248 +20295 +56674 +36157 +74661 +21405 +34261 +16819 +79445 +35756 +79201 +1262 +74449 +16628 +29657 +21018 +17712 +55618 +77642 +44334 +16592 +31063 +32936 +37117 +29619 +41714 +4305 +77964 +28562 +64833 +54322 +30742 +37187 +8518 +50013 +29256 +19217 +762 +17066 +62349 +51213 +57931 +39304 +34581 +65546 +32588 +10485 +30354 +64730 +54276 +53210 +26400 +53732 +8602 +58921 +42967 +41628 +8909 +35563 +4032 +72737 +34078 +63550 +76681 +60420 +14077 +15390 +8989 +67111 +69906 +28678 +2054 +9930 +19792 +62424 +1634 +25491 +18049 +79456 +78366 +57708 +75 +68085 +19867 +65956 +74320 +4708 +39341 +37207 +64001 +27322 +10929 +12423 +64509 +29981 +69722 +58885 +51034 +17031 +28584 +603 +60809 +1636 +6058 +80134 +15457 +32767 +14233 +65899 +41681 +66564 +35693 +1703 +47908 +24000 +76618 +3497 +71565 +52483 +64307 +34408 +77328 +64107 +58093 +25492 +53704 +15364 +10249 +24787 +12306 +52127 +62370 +61627 +33398 +28570 +51468 +72019 +17154 +39245 +60808 +48210 +58841 +25461 +44707 +77288 +73886 +20926 +26102 +22710 +67384 +72069 +16910 +55758 +16644 +72501 +67143 +69194 +15832 +33577 +18798 +60492 +71049 +37317 +45304 +26108 +41065 +27236 +70089 +5860 +56919 +60912 +16028 +26196 +65161 +42704 +39537 +52767 +72010 +30205 +42753 +41636 +47046 +72237 +72132 +51763 +29455 +2340 +7586 +3885 +53359 +63094 +32012 +49093 +25819 +68594 +44573 +44212 +55113 +56470 +29160 +34283 +28527 +4897 +30246 +12734 +64293 +63285 +65287 +26490 +4614 +63825 +18441 +78750 +80195 +42838 +6159 +24825 +34891 +49287 +79147 +38152 +1938 +31119 +18680 +43265 +72187 +18465 +19945 +73210 +78054 +78550 +55188 +73757 +54409 +1175 +17412 +23695 +27947 +621 +905 +53520 +32386 +71894 +12701 +60222 +51015 +62744 +71386 +61073 +54606 +63781 +67421 +66622 +46158 +35124 +28094 +31095 +33014 +50052 +21712 +69428 +33567 +13402 +49701 +21467 +61591 +65599 +63835 +77220 +66504 +58588 +27009 +3704 +58434 +5501 +6493 +34524 +71802 +51013 +16731 +23472 +64653 +68896 +41911 +52490 +16511 +64631 +33616 +7178 +74937 +23466 +40634 +38049 +18544 +5263 +26590 +63666 +23379 +18377 +19007 +5687 +406 +67448 +6876 +58509 +65172 +23343 +35835 +11392 +26076 +20866 +44656 +33408 +58386 +40284 +64587 +68294 +75689 +28421 +25772 +854 +17196 +43806 +9326 +61554 +5695 +51364 +46430 +15679 +35428 +48613 +80333 +4803 +55796 +71638 +50289 +76002 +65175 +31214 +1214 +23309 +72824 +66815 +70348 +39943 +74505 +55255 +57837 +24117 +70492 +16154 +80564 +7417 +49463 +80766 +43630 +35077 +17375 +60043 +16799 +55473 +42478 +46382 +77717 +25276 +7240 +13323 +74260 +23481 +73086 +71596 +63806 +53084 +78940 +16165 +53896 +62309 +56335 +18954 +49278 +23264 +26635 +58451 +16384 +18503 +10970 +60452 +44700 +71380 +64935 +51897 +15697 +76438 +46662 +2461 +15276 +16046 +49786 +43064 +55868 +34644 +69625 +64627 +23995 +79113 +54834 +57577 +39254 +79268 +16300 +62018 +52019 +14690 +31052 +75696 +66941 +49065 +27090 +72706 +27838 +4280 +23667 +41663 +30611 +54519 +51272 +62173 +15007 +78563 +61719 +14757 +47842 +78515 +23285 +15220 +10001 +24767 +1698 +25895 +55564 +1845 +5356 +14263 +42789 +65382 +29390 +3014 +63936 +27259 +7043 +32068 +58277 +19816 +74446 +70591 +63708 +68306 +54280 +12855 +42477 +39400 +5804 +74581 +20101 +64885 +9778 +1957 +16584 +72929 +35671 +46386 +7136 +53632 +7516 +69904 +19657 +44149 +40876 +64412 +21706 +8790 +25059 +59850 +503 +10702 +52603 +16226 +66448 +21949 +48371 +4989 +76353 +34313 +75301 +38826 +59063 +8126 +24575 +57944 +34071 +64664 +77759 +6561 +62825 +74304 +72773 +73639 +39976 +45677 +66425 +42829 +6999 +13556 +5114 +13110 +17944 +13867 +3842 +51522 +9150 +54466 +15477 +35829 +1129 +29779 +30710 +36641 +55815 +35660 +78763 +29658 +78019 +46871 +49171 +21711 +6788 +60826 +8004 +80350 +14954 +17651 +23940 +51539 +37054 +35522 +40563 +71482 +72653 +43733 +73261 +71160 +15822 +46710 +6515 +49620 +48306 +72250 +29888 +71080 +69071 +49994 +72084 +55798 +76043 +62839 +9156 +39043 +36198 +10117 +37152 +79803 +54127 +15846 +39222 +73851 +23332 +13254 +41062 +12065 +8357 +73833 +57584 +78493 +73701 +78914 +12356 +10401 +50765 +54171 +14791 +80604 +46829 +13494 +2565 +32125 +30592 +69537 +24179 +13502 +57092 +28964 +38938 +14946 +36961 +69004 +72758 +844 +73537 +44826 +50997 +65499 +55222 +16905 +40671 +273 +39763 +5508 +51028 +14632 +33191 +74612 +35470 +26377 +32369 +69933 +28770 +43473 +34191 +52221 +26107 +6341 +26290 +60512 +31919 +60735 +16703 +4473 +53075 +34628 +73073 +78151 +15779 +62875 +39309 +4012 +68455 +59257 +78753 +28714 +77465 +68073 +717 +26928 +47742 +47117 +38361 +28396 +77094 +61425 +1600 +35337 +38795 +3715 +49404 +39881 +68408 +10215 +17599 +32766 +28065 +2232 +675 +69728 +29376 +21326 +49182 +5630 +31177 +6008 +14607 +31426 +34393 +77108 +4998 +54270 +5617 +3599 +36703 +75828 +65062 +75464 +4691 +50391 +46720 +57715 +76889 +25115 +31782 +17782 +12456 +55700 +17054 +63827 +30879 +49729 +5772 +31674 +53847 +76509 +50954 +59182 +26498 +6104 +44515 +67062 +54015 +42375 +17251 +49244 +2922 +58284 +72815 +47423 +19434 +71315 +73353 +30480 +66020 +14228 +31691 +13772 +28974 +19214 +63799 +16996 +51044 +64117 +21560 +46073 +24247 +31649 +20953 +49770 +22123 +43845 +67516 +60007 +60062 +58149 +5934 +61332 +28652 +75197 +38909 +52649 +29023 +36212 +8558 +7548 +5961 +59535 +24676 +718 +12757 +75065 +75743 +57127 +20454 +68966 +24352 +52560 +17092 +71724 +48307 +2172 +13745 +28392 +8444 +71609 +57192 +27965 +56984 +31170 +76667 +36582 +65637 +20758 +52810 +78026 +37451 +66138 +25341 +17884 +42322 +36238 +60104 +14740 +68835 +11040 +20369 +31520 +75771 +69044 +2523 +15924 +20089 +38846 +26918 +17634 +32693 +34828 +29676 +77648 +69848 +662 +73995 +78331 +19831 +54431 +60838 +55401 +68315 +48264 +25038 +25455 +28470 +32660 +31580 +34911 +1998 +30685 +48183 +64843 +41549 +76538 +73840 +26672 +20551 +9087 +50312 +56839 +1493 +34088 +13760 +57455 +69146 +50356 +44289 +34090 +17711 +76873 +47925 +70194 +59871 +8237 +28424 +57329 +19887 +78773 +71099 +52478 +75918 +46656 +61228 +68266 +63652 +46304 +24232 +13433 +7326 +66960 +20600 +36884 +71233 +7033 +61950 +30054 +31101 +57522 +56354 +3617 +36457 +49319 +73302 +69287 +54025 +11541 +5101 +9452 +65321 +27248 +55789 +16635 +32555 +10027 +48147 +44405 +48525 +61003 +55956 +55067 +34514 +44960 +24256 +78224 +18115 +14837 +47634 +78407 +80127 +23242 +68203 +4047 +12460 +59352 +15430 +31590 +77123 +31767 +51306 +41743 +55519 +33404 +61935 +46761 +74039 +6552 +14313 +3389 +60884 +42884 +79092 +51172 +59884 +54621 +64108 +17022 +36511 +38624 +46554 +7935 +72 +59622 +12968 +37299 +26709 +22075 +35123 +42561 +11446 +77742 +11507 +67388 +52738 +53179 +33820 +76867 +11350 +31575 +52090 +8592 +32939 +69720 +19446 +14540 +75735 +47025 +70535 +19233 +2059 +18409 +62753 +34178 +34094 +36760 +6726 +78602 +40440 +23733 +49380 +51474 +416 +15093 +52043 +30417 +57508 +15437 +60351 +49367 +30337 +8912 +41076 +31468 +35012 +43551 +65661 +33994 +59924 +9477 +36663 +62269 +18351 +58929 +12704 +42544 +79981 +58176 +59041 +44428 +56364 +9786 +65082 +35179 +64413 +73872 +50217 +32176 +78285 +34015 +75291 +11 +52710 +30619 +57591 +22643 +3633 +13419 +10450 +13466 +43585 +64925 +29066 +41620 +69020 +30805 +18530 +31245 +43899 +46853 +60737 +28673 +2839 +78113 +15368 +46769 +80542 +18681 +59526 +65602 +8657 +5563 +52614 +58747 +32855 +28975 +27240 +27881 +933 +73208 +25546 +74370 +65027 +22389 +61316 +5488 +76471 +65893 +11855 +24810 +73517 +7730 +69599 +57537 +17655 +1097 +71156 +28629 +30790 +23559 +36838 +5849 +1005 +22843 +74984 +53137 +28040 +12102 +69022 +70132 +52053 +72289 +36546 +23126 +17973 +64419 +40701 +22932 +44361 +65249 +22 +26413 +17002 +9398 +5235 +19959 +27649 +44612 +60237 +65587 +48864 +18901 +50569 +2287 +35026 +2247 +39378 +32791 +36634 +56602 +64414 +53101 +30403 +68012 +27521 +27849 +9638 +40492 +9558 +17451 +24792 +56141 +33341 +24254 +43419 +54841 +21782 +27328 +38994 +54082 +70954 +51661 +76000 +1769 +72934 +17562 +53081 +17394 +5725 +3961 +76083 +12918 +20609 +30939 +52279 +33484 +59943 +28008 +16508 +4836 +22660 +19200 +69945 +2623 +55781 +59272 +74783 +51357 +13122 +20634 +3358 +52664 +6160 +39868 +46848 +10502 +49426 +4903 +51891 +14235 +21696 +57419 +29325 +22664 +19993 +53736 +64780 +56053 +34443 +68726 +67323 +55914 +75263 +36404 +43315 +52169 +1585 +67926 +69813 +66488 +37142 +27532 +37273 +14747 +18534 +50026 +45839 +63636 +39478 +31735 +14309 +35933 +13638 +17613 +50043 +33795 +45198 +69077 +237 +41787 +28604 +33110 +58506 +76233 +56442 +5381 +45482 +39447 +4316 +25221 +42221 +31307 +51491 +69383 +4881 +49624 +63071 +61607 +78354 +12395 +47518 +44885 +69423 +53722 +17705 +41771 +56820 +72288 +26777 +50670 +1632 +32592 +69134 +21556 +25034 +73272 +3603 +66896 +59331 +75589 +41864 +12040 +21888 +21280 +18384 +6902 +28443 +20080 +4395 +25577 +68344 +35684 +67832 +40915 +66027 +60457 +24382 +26578 +70496 +2351 +6340 +59370 +40817 +80317 +303 +75033 +40464 +30743 +11743 +73056 +51846 +2597 +42327 +48173 +74129 +66577 +10365 +72707 +23513 +29947 +51309 +24538 +69116 +41835 +64409 +54892 +67793 +19849 +64446 +80612 +8091 +5164 +29514 +61347 +20579 +2354 +17736 +14525 +70683 +47500 +68037 +42670 +16795 +59559 +6046 +77391 +46984 +74808 +31749 +51626 +18250 +48966 +46099 +19781 +33981 +54474 +38271 +35210 +37035 +20847 +7103 +76028 +45837 +64660 +74294 +15296 +3095 +73472 +45104 +51271 +35329 +70250 +10020 +43495 +50251 +41214 +53083 +4548 +58293 +36992 +78324 +25815 +13693 +21703 +40799 +50479 +67223 +62952 +64878 +16546 +80143 +10651 +59381 +10273 +29906 +72135 +66325 +14024 +39315 +17553 +22036 +9662 +65011 +10988 +77545 +37912 +64663 +50529 +15324 +13397 +58703 +20744 +53204 +69112 +6287 +58212 +25462 +44645 +32953 +41562 +63263 +1690 +58688 +63083 +68942 +27065 +28364 +76775 +75305 +48890 +32867 +54183 +9711 +7746 +63086 +30573 +1421 +2396 +46072 +46110 +58568 +27690 +10359 +37932 +74381 +62244 +76793 +78048 +73192 +34551 +21579 +39355 +74440 +16794 +27974 +53413 +30906 +59026 +49327 +30759 +60119 +25993 +2869 +20642 +8257 +28477 +76348 +47653 +4939 +46862 +14442 +25571 +37222 +37329 +35394 +13183 +16973 +2961 +32897 +1261 +35011 +76672 +34659 +73174 +52331 +78887 +68127 +12097 +25733 +49429 +688 +68319 +15325 +31504 +2930 +10654 +106 +2084 +33133 +57933 +20818 +11870 +50128 +16656 +27638 +27820 +65137 +60377 +15488 +49384 +22537 +15038 +62761 +79930 +7568 +7721 +3651 +36346 +10478 +552 +7365 +29402 +31967 +13847 +34930 +74922 +65949 +19258 +73453 +2424 +30610 +59371 +67242 +24353 +35523 +19532 +70630 +57874 +79644 +21926 +6045 +20807 +31140 +52172 +7699 +27942 +53953 +14769 +8750 +25420 +54612 +29765 +39585 +73648 +65147 +9550 +15173 +3489 +16626 +20141 +39421 +28275 +43038 +17570 +24519 +49942 +10781 +16264 +79150 +71328 +36024 +35139 +45319 +47250 +18052 +17608 +30971 +80434 +6606 +57546 +78194 +25925 +24354 +55029 +3064 +38552 +72761 +32746 +65987 +61137 +34445 +8418 +4198 +74034 +70432 +48956 +45905 +25623 +39397 +75462 +39748 +39211 +77341 +17308 +48805 +8376 +40059 +19901 +72309 +48137 +41934 +80433 +51003 +31143 +67422 +65431 +22315 +44083 +8207 +68981 +27929 +28093 +22006 +33347 +50159 +22758 +80036 +31655 +74059 +78770 +44419 +65994 +71081 +3685 +55569 +25487 +50898 +21691 +19 +61592 +15693 +14643 +76143 +28638 +58720 +42260 +56876 +11801 +40907 +47020 +52051 +73726 +20211 +80677 +29782 +73382 +3994 +44663 +15400 +57472 +26388 +28826 +29362 +22615 +71161 +18325 +15744 +50134 +71979 +54 +3144 +50152 +9183 +58920 +51454 +35411 +7416 +18279 +33916 +32707 +2405 +24933 +43146 +60306 +79665 +4796 +15505 +26168 +36289 +62446 +65439 +36496 +53962 +35740 +14827 +43392 +11566 +42974 +11469 +76753 +31492 +76187 +79867 +49572 +79742 +15342 +11512 +10564 +65024 +36313 +41737 +31905 +39747 +44286 +72221 +27285 +23677 +50141 +64704 +9813 +10873 +8524 +34466 +7167 +51927 +56406 +74182 +58299 +79408 +72411 +53448 +73826 +12292 +28369 +22339 +16401 +27387 +21459 +14788 +30882 +40108 +51687 +3598 +64287 +9312 +21850 +35 +73903 +65293 +54558 +5816 +2302 +13459 +47487 +54770 +20618 +64701 +65923 +14819 +68521 +45872 +7147 +24646 +78089 +34905 +38109 +35593 +48130 +28809 +57694 +3116 +42278 +29089 +20652 +29520 +60668 +654 +41178 +38823 +34678 +42579 +23541 +13437 +52708 +49151 +67153 +45892 +80520 +12053 +48833 +39558 +18609 +28402 +42052 +79947 +77775 +37169 +77910 +62658 +55926 +8532 +4118 +338 +11434 +25809 +11402 +68581 +64238 +52531 +54378 +58764 +47631 +20250 +49868 +34166 +72618 +44537 +10481 +70173 +52160 +22528 +73650 +72694 +67818 +34596 +28840 +33868 +63641 +16579 +20812 +75417 +23553 +33575 +10804 +8653 +68053 +41033 +2951 +66587 +55551 +54506 +58597 +45148 +51153 +24964 +46042 +37466 +53416 +57667 +48548 +25625 +38920 +76317 +64498 +2808 +64722 +75278 +6036 +25874 +41206 +22176 +76567 +30677 +32787 +59691 +25228 +18835 +53169 +13377 +7400 +42214 +7553 +64563 +56363 +34153 +54639 +54071 +45045 +14606 +56407 +44512 +54775 +63709 +56735 +76077 +3894 +12117 +55918 +18884 +47710 +62423 +48050 +77019 +13785 +26137 +64080 +22350 +29816 +19593 +43412 +4013 +75780 +30059 +17039 +62704 +11500 +50311 +64871 +38127 +14708 +47127 +73514 +9767 +72582 +56142 +55476 +27632 +12222 +46172 +26715 +63376 +8076 +76423 +65075 +39063 +77284 +23455 +1025 +34476 +666 +63511 +23388 +77935 +78205 +12988 +26130 +27886 +15562 +26401 +18607 +44493 +47683 +79858 +26985 +42443 +32075 +24776 +78436 +39862 +51728 +14371 +35941 +39503 +17478 +37826 +42901 +5986 +18277 +50907 +74570 +11445 +64493 +17801 +4852 +698 +66452 +44584 +70932 +14384 +20162 +360 +49089 +59115 +43043 +80624 +35633 +35573 +38389 +70972 +45871 +71478 +29047 +72842 +40565 +71712 +54740 +45828 +11597 +37133 +70411 +57381 +44299 +30080 +68659 +12132 +56723 +42081 +31618 +80547 +65207 +49181 +67865 +55233 +52020 +59609 +7225 +5690 +74900 +44670 +43023 +25917 +53558 +60958 +42082 +33532 +2097 +17254 +46445 +55170 +51778 +53102 +34743 +3611 +31568 +61346 +11922 +62797 +2346 +79359 +49240 +5728 +69853 +46224 +41084 +64754 +31932 +46750 +42136 +46638 +39216 +47778 +31879 +24906 +45946 +39450 +14697 +77477 +32342 +66483 +80452 +19404 +19444 +4840 +24154 +11412 +31478 +15748 +47188 +61896 +12836 +1583 +8201 +26095 +34811 +12311 +54948 +24014 +21562 +67891 +8226 +5322 +12860 +48151 +52363 +52687 +76565 +20596 +50885 +17776 +6173 +73184 +73311 +69502 +43696 +11001 +75956 +62946 +48194 +45555 +73972 +71042 +29124 +38265 +15286 +43571 +24924 +68068 +41577 +46177 +28721 +46756 +80161 +42568 +38623 +15282 +67553 +70745 +1285 +10567 +11471 +25910 +41650 +28166 +4813 +49893 +47642 +36637 +46050 +59341 +40913 +35530 +48124 +7984 +78035 +2284 +66991 +33400 +58365 +3413 +73821 +1832 +50104 +12978 +37463 +42958 +18589 +39328 +17446 +26602 +45929 +33463 +71755 +41495 +36848 +42565 +9395 +80785 +71670 +14021 +30144 +78220 +49228 +53611 +22155 +23533 +55874 +11841 +34500 +46377 +48933 +8491 +75846 +48635 +3661 +64656 +76367 +76831 +32957 +15389 +4698 +69767 +49241 +56041 +77280 +52746 +14138 +32979 +77736 +53655 +77440 +56072 +35244 +52491 +11992 +48879 +9421 +42156 +11349 +46917 +55375 +31109 +19987 +48500 +27365 +30936 +44084 +46039 +51351 +78286 +38157 +77287 +44816 +26584 +42461 +72531 +37242 +16858 +56550 +53229 +18850 +70049 +56483 +66132 +855 +78807 +7083 +28322 +50093 +78178 +45859 +24572 +68967 +76579 +17675 +4166 +24685 +39524 +65942 +35236 +31018 +4011 +17281 +72883 +75515 +5357 +34579 +28812 +340 +63470 +59519 +14255 +668 +61427 +61344 +41641 +35174 +41784 +61528 +17158 +13704 +66604 +10621 +46084 +48604 +36425 +73812 +72151 +74878 +47536 +18674 +80777 +62726 +60753 +3343 +5314 +7397 +79468 +21873 +23790 +63343 +11278 +63621 +11679 +20714 +70710 +25682 +14296 +25001 +56814 +20052 +57802 +60040 +49285 +51565 +18730 +57268 +752 +50245 +50939 +42364 +20032 +45805 +65875 +71938 +35241 +31126 +53069 +47299 +24765 +72508 +32928 +78839 +29585 +45111 +3967 +38545 +37378 +50039 +15919 +8930 +40057 +31178 +28063 +56184 +7494 +38137 +9522 +29909 +17641 +70162 +21822 +52334 +29451 +19961 +39120 +7757 +25239 +30146 +17531 +9561 +58280 +55982 +63681 +27775 +11191 +58788 +53026 +66409 +14483 +7139 +50227 +44037 +60084 +29252 +80263 +14182 +55012 +15244 +64276 +75556 +25636 +30921 +6028 +61739 +5272 +2100 +45253 +6420 +22486 +32346 +32444 +47143 +13049 +70936 +59263 +58411 +67538 +69259 +9004 +69911 +60299 +4872 +6568 +7433 +75585 +80150 +63310 +52104 +70255 +33055 +45033 +60204 +61152 +3200 +40633 +3605 +45192 +1620 +32324 +50547 +52285 +53973 +57407 +18393 +35858 +40157 +8527 +32561 +75189 +39721 +5470 +2315 +28503 +78133 +14168 +14072 +50681 +4322 +39807 +52381 +38747 +10310 +71070 +54475 +54318 +18121 +21810 +16044 +6158 +44506 +53990 +6071 +57739 +42655 +53072 +28664 +64550 +14853 +2192 +36213 +1855 +53947 +49262 +42934 +66776 +10326 +30245 +1106 +1082 +17980 +59955 +7591 +77061 +62436 +27265 +70894 +7 +71908 +22284 +11764 +2300 +33032 +28784 +23999 +79545 +29834 +5008 +64039 +61981 +80730 +56907 +48242 +12133 +1742 +68406 +54998 +26719 +19078 +76092 +6700 +72246 +72118 +23950 +7354 +14516 +34792 +35648 +53117 +72293 +55991 +2156 +17246 +63821 +40251 +22193 +32238 +2308 +14947 +39655 +36610 +49641 +13636 +29671 +10042 +80300 +15885 +54927 +70992 +54140 +53961 +70276 +61985 +61529 +15753 +24850 +55556 +57041 +62693 +59715 +2041 +6972 +79360 +37579 +52476 +4891 +67336 +29400 +13541 +24277 +62666 +45049 +4226 +1301 +41157 +20092 +36551 +13712 +54910 +8174 +69685 +16580 +74926 +8453 +23284 +51745 +16775 +21658 +63677 +68520 +27215 +54605 +38566 +77005 +62119 +25860 +76825 +37974 +74158 +65152 +38789 +3023 +12658 +56862 +71876 +74457 +54627 +56902 +31556 +18235 +20670 +35811 +43084 +74804 +3192 +38432 +58016 +19391 +59817 +34318 +71472 +23442 +10030 +37008 +50284 +12535 +10777 +61430 +62311 +45389 +51385 +68615 +60463 +66273 +9199 +2636 +25972 +9448 +55653 +63432 +70029 +62012 +52487 +7539 +67960 +2042 +53778 +36164 +67732 +36680 +50113 +69083 +28465 +53829 +33714 +65910 +79834 +76160 +38738 +47958 +74451 +18756 +63506 +73459 +51667 +8815 +32736 +17083 +10724 +3361 +24561 +58226 +5142 +27112 +29343 +25544 +52865 +24834 +79204 +29764 +35969 +15229 +41527 +46958 +53928 +15399 +21557 +68630 +55421 +50204 +75777 +64655 +24746 +74827 +47783 +51472 +16963 +63635 +21363 +29208 +44532 +17749 +46080 +44016 +13753 +69528 +18744 +69425 +60036 +44479 +64947 +42739 +45409 +57120 +74466 +50883 +48405 +50074 +15166 +6581 +43948 +34481 +61144 +67882 +8780 +11418 +78574 +70642 +31207 +15303 +61330 +8565 +8074 +51502 +2076 +56874 +54024 +14648 +74125 +55911 +59109 +50376 +52804 +70361 +34293 +1671 +51448 +78671 +70714 +77833 +79861 +24985 +26308 +50534 +13902 +26760 +66672 +14589 +36241 +57722 +22080 +32092 +60401 +73017 +64538 +4503 +40967 +16718 +29597 +3637 +5018 +7914 +696 +6689 +64012 +21309 +30316 +46737 +66344 +37862 +15203 +75976 +20107 +19017 +64333 +29624 +75134 +66225 +54666 +42548 +27759 +38303 +76023 +35725 +28241 +51609 +74455 +57360 +21536 +37396 +53274 +53891 +47538 +18385 +42204 +38300 +13751 +6705 +41866 +53105 +28048 +42751 +29372 +62743 +24472 +10817 +51299 +14661 +24123 +28609 +18923 +62971 +18700 +26354 +22831 +22752 +62669 +48927 +48957 +28593 +39821 +11353 +31475 +54883 +58746 +24245 +52368 +29584 +69603 +32991 +43044 +33277 +29109 +66296 +11480 +57883 +72713 +71949 +65709 +4577 +11732 +51863 +52831 +63481 +55141 +59863 +19485 +70384 +693 +7203 +60059 +79885 +62885 +34677 +67984 +6076 +80738 +43709 +16621 +36389 +25169 +46438 +6750 +74815 +36431 +38673 +7072 +63670 +61261 +14164 +1400 +55516 +60723 +5505 +6778 +28413 +25255 +53275 +43533 +8699 +49569 +52714 +65982 +65672 +38410 +40502 +69375 +43387 +20155 +79881 +21572 +21551 +59462 +51070 +51389 +49261 +55858 +29075 +26338 +8959 +61722 +57682 +56349 +70748 +231 +44671 +19771 +41651 +65525 +36719 +22782 +31477 +49407 +75333 +53727 +48831 +12009 +23283 +24116 +28274 +26793 +8006 +52273 +75847 +13969 +22251 +76981 +73678 +31378 +21453 +67571 +1672 +33838 +53276 +74115 +3128 +36563 +62976 +22326 +61047 +49413 +20887 +19202 +67340 +23236 +33680 +15438 +67483 +32173 +6335 +10127 +26436 +77718 +7066 +4311 +49643 +40390 +63034 +45663 +11277 +52233 +68359 +45766 +78087 +63803 +42693 +24563 +58791 +7537 +49856 +47342 +29978 +26995 +59374 +25957 +22651 +68151 +80078 +32822 +21914 +42491 +69038 +10955 +4919 +47185 +14742 +46396 +43508 +27452 +39108 +65099 +54876 +77911 +6534 +27082 +30668 +52466 +74936 +17081 +68416 +73249 +73882 +69602 +3238 +23858 +24655 +15374 +8767 +52352 +53295 +6910 +34742 +2106 +31198 +576 +71443 +46572 +17962 +29448 +33053 +66084 +32559 +26006 +77501 +33715 +55436 +13399 +12481 +56638 +1026 +55062 +8285 +10699 +10752 +78061 +58728 +79279 +35992 +33936 +42211 +42903 +66665 +43956 +15634 +37606 +56384 +58599 +22663 +12688 +12839 +9142 +60674 +48654 +4195 +19747 +53155 +9049 +44081 +12154 +64393 +77979 +14417 +7758 +80688 +72346 +63255 +51470 +11185 +52985 +28646 +32039 +70004 +28461 +18256 +34120 +55710 +49120 +73129 +8132 +45687 +33742 +8040 +41899 +50263 +71511 +2011 +58617 +33780 +79684 +44851 +71520 +60532 +32627 +1947 +34538 +33501 +2659 +29786 +76059 +63191 +53709 +71843 +25467 +70814 +19720 +602 +3501 +42921 +66050 +49809 +73853 +21347 +71097 +69884 +24625 +14333 +35948 +80310 +21883 +31853 +10883 +36433 +926 +75154 +25171 +16901 +54789 +5755 +16400 +47776 +57630 +79385 +26209 +4745 +38009 +52525 +53256 +55529 +19955 +71292 +19300 +51864 +17006 +52239 +69938 +8944 +30772 +60058 +21099 +4678 +18471 +63747 +71955 +54032 +35358 +67985 +62187 +29509 +48713 +3772 +68772 +25496 +10508 +15223 +42021 +5648 +39260 +25828 +79855 +11419 +72750 +18411 +31431 +15686 +10238 +7308 +66702 +53837 +34065 +11976 +56752 +69758 +26729 +34130 +52862 +43254 +4094 +38583 +77410 +71052 +54632 +61988 +46530 +77602 +69467 +7700 +13291 +19201 +13850 +45360 +52252 +60312 +54048 +49639 +44404 +56855 +27228 +20458 +2665 +66392 +24012 +79673 +62535 +48518 +51903 +52554 +4286 +34373 +17315 +2145 +11193 +14404 +69778 +43587 +65631 +52634 +21789 +1686 +1898 +58907 +80266 +64659 +53629 +22319 +14379 +55876 +42445 +17029 +36239 +26678 +26650 +3406 +73337 +70884 +27949 +156 +80365 +60535 +23014 +30806 +73268 +71844 +29435 +43937 +59825 +10399 +73587 +4170 +13316 +3422 +2376 +27882 +52972 +30157 +76449 +22577 +2177 +57783 +28161 +10885 +30618 +57761 +78305 +38156 +48400 +24585 +33415 +9271 +27391 +39002 +24333 +43345 +4956 +31694 +15548 +26783 +2426 +46369 +39012 +44755 +48637 +2422 +99 +38098 +42251 +35995 +45242 +28296 +29771 +73671 +59972 +3628 +16832 +35609 +74858 +5870 +70502 +19927 +79660 +63926 +79928 +1113 +71064 +4144 +32106 +58653 +47365 +10295 +62577 +79601 +65724 +4662 +63831 +65420 +57734 +73932 +33433 +66954 +24183 +15407 +29894 +7374 +11294 +15156 +25098 +62511 +45187 +20215 +50353 +35100 +71496 +60797 +19416 +18016 +48615 +36794 +68712 +2071 +79046 +49704 +14955 +60114 +80718 +13315 +43276 +18508 +26022 +39563 +20533 +3301 +23033 +13144 +63840 +76104 +16027 +73504 +59911 +12312 +75629 +33554 +44272 +59555 +40596 +7027 +3910 +9815 +24813 +7034 +36542 +69306 +52200 +47882 +19267 +11587 +51685 +40961 +31425 +30865 +76055 +78709 +19013 +38598 +76561 +13113 +68488 +8387 +33996 +20421 +56360 +50906 +51116 +1336 +38820 +66293 +54598 +38970 +63449 +70019 +43944 +42057 +10050 +33207 +63596 +3513 +55438 +5548 +53005 +74738 +8082 +41729 +36325 +5793 +37212 +66786 +52700 +65457 +26696 +37933 +49215 +35283 +69128 +7870 +10667 +20646 +25384 +57035 +6164 +63737 +58951 +29640 +2471 +28277 +65757 +51360 +42945 +61542 +75826 +54157 +53316 +32598 +41774 +63850 +26343 +10653 +24997 +64844 +15386 +59513 +65485 +65123 +63819 +36783 +50457 +48655 +67216 +36331 +18265 +45201 +77076 +15043 +57905 +36365 +42610 +59898 +78067 +115 +59147 +4262 +36843 +21725 +49819 +7481 +60618 +52504 +17715 +8144 +70746 +43241 +15877 +69976 +9617 +25338 +48837 +14407 +7126 +50484 +4015 +28893 +64171 +52355 +45581 +18436 +24071 +12645 +3450 +12349 +60000 +13768 +76365 +51314 +49714 +62077 +8990 +69643 +59742 +69807 +48241 +9780 +13666 +68764 +22127 +36002 +72764 +66182 +62487 +13184 +36390 +72442 +54705 +50869 +57891 +78582 +16184 +76282 +71173 +72856 +20285 +68158 +3503 +40660 +72094 +36854 +63667 +168 +29820 +50972 +41420 +54709 +4892 +11172 +42531 +14292 +53362 +21218 +66100 +9663 +45742 +31808 +59136 +16814 +79102 +70184 +62462 +12915 +58670 +33651 +67270 +5944 +48553 +62042 +29596 +42393 +17609 +60964 +64683 +41006 +68126 +8704 +58066 +60707 +48605 +25609 +8861 +48520 +12963 +61518 +51999 +29990 +66874 +20565 +78692 +12153 +3835 +10004 +8713 +55302 +10353 +5291 +638 +69737 +67822 +22648 +2585 +2265 +42179 +58139 +51810 +35514 +27235 +12543 +34686 +61409 +55249 +60283 +79192 +19451 +34154 +70545 +4117 +53471 +58052 +18714 +50241 +28466 +59209 +68223 +71216 +38120 +59299 +57368 +72130 +1774 +67929 +28416 +12337 +42999 +72406 +68632 +2643 +12483 +12451 +41674 +62922 +63089 +47198 +17448 +25947 +50738 +59591 +40376 +31981 +50198 +48479 +39572 +40102 +24973 +7522 +58161 +10829 +39920 +14627 +11083 +65977 +69068 +55901 +48850 +15126 +69405 +73078 +52109 +79677 +42331 +57077 +9130 +61735 +60249 +74542 +62033 +49368 +31183 +59202 +13011 +18195 +64320 +37612 +57960 +53974 +50261 +11938 +10751 +53573 +64819 +62163 +39499 +4594 +9050 +5416 +78200 +31628 +80457 +54904 +27679 +3852 +69348 +26124 +22919 +40151 +47352 +9291 +13930 +8178 +60929 +56090 +38296 +74405 +62556 +33768 +27710 +72533 +75098 +41158 +37833 +49392 +63750 +33921 +58553 +70402 +45177 +63764 +40140 +11565 +77056 +27298 +35780 +58775 +54181 +79334 +34333 +76170 +38811 +42647 +33331 +30749 +40483 +44769 +15224 +78400 +13956 +61129 +41096 +54060 +39369 +62621 +23957 +56977 +77399 +25067 +31889 +28515 +80471 +42348 +42240 +4265 +56432 +23959 +41900 +52151 +43205 +51445 +30565 +15757 +79290 +26523 +6228 +48895 +3602 +33870 +57403 +29487 +14917 +36308 +65180 +67357 +42608 +31429 +33183 +62561 +48022 +42767 +73470 +36450 +70946 +37581 +20044 +69871 +59811 +57800 +28873 +50607 +24949 +9178 +72194 +1951 +54195 +49989 +36559 +47609 +63355 +27868 +70784 +8175 +59349 +37592 +6982 +22520 +48820 +38680 +14536 +77985 +4051 +28589 +60613 +59199 +7234 +16122 +5404 +74729 +76700 +74357 +60922 +61891 +35818 +14721 +77811 +68780 +58124 +43743 +79826 +56216 +36285 +35761 +11879 +50746 +60750 +19939 +59167 +4126 +44899 +46429 +53139 +34869 +55712 +15626 +4924 +55772 +34662 +79842 +38645 +60003 +20418 +27349 +27956 +61818 +79443 +50619 +39263 +29267 +16110 +34703 +16316 +48947 +79774 +39967 +50034 +32823 +73927 +61781 +57616 +49830 +16318 +48485 +16955 +8702 +2073 +3590 +4417 +41276 +46413 +50202 +19703 +50804 +14997 +40128 +58981 +41304 +6547 +37362 +60271 +24099 +80605 +8847 +20511 +21818 +20574 +66546 +69081 +32480 +65077 +77095 +63327 +46376 +59235 +27669 +4917 +11880 +22684 +39760 +294 +57335 +41571 +66307 +11087 +58756 +65797 +8730 +9089 +18018 +2573 +5244 +69422 +53147 +75360 +7804 +12677 +28460 +21246 +56569 +36138 +78372 +48625 +12898 +45784 +21020 +15916 +9580 +962 +58716 +56696 +28352 +42359 +2867 +26083 +78538 +17551 +22619 +33328 +78187 +30518 +13899 +23435 +50482 +8166 +43406 +36672 +6151 +23211 +46817 +13296 +27422 +2009 +4825 +61763 +25818 +11466 +25353 +52720 +63940 +23462 +31299 +54675 +64883 +709 +72931 +21669 +79698 +30006 +45222 +39262 +7320 +53672 +37623 +69748 +32816 +33487 +29260 +64499 +8510 +10720 +37164 +56036 +37817 +62108 +41724 +56893 +57859 +23317 +47570 +80529 +49785 +77473 +35075 +68953 +11314 +48327 +76859 +28508 +67286 +6708 +53317 +7123 +39906 +53472 +24433 +49393 +55323 +28730 +12269 +71698 +66163 +23525 +19119 +50133 +72914 +45760 +20840 +76 +8360 +66899 +76551 +43724 +24049 +76583 +58696 +58314 +10194 +41462 +10905 +48389 +30774 +13321 +35919 +31417 +8215 +2995 +15700 +62590 +71986 +46098 +74188 +23131 +62159 +17494 +29330 +53801 +35820 +383 +30642 +26283 +80035 +53096 +378 +64974 +25167 +48281 +61000 +77058 +2576 +17473 +61092 +62384 +12920 +2269 +53006 +23534 +19060 +27535 +12361 +24439 +39023 +39764 +34159 +44095 +46270 +37384 +52733 +59815 +75193 +47079 +20830 +73095 +46599 +77695 +78803 +48212 +43579 +49063 +35577 +24998 +72565 +19881 +13954 +7474 +20676 +12714 +77650 +18788 +36674 +24436 +633 +75070 +46159 +74534 +40941 +45914 +78507 +39079 +2451 +74714 +53486 +13429 +80705 +29691 +25396 +61571 +19433 +7503 +57142 +874 +24560 +65505 +36482 +47343 +68260 +4649 +20804 +43347 +77731 +13317 +47806 +78727 +41348 +61642 +42170 +65636 +41731 +27441 +2678 +6344 +8574 +35989 +8783 +58272 +55088 +61455 +41947 +6802 +44569 +44453 +65611 +73041 +10931 +23556 +5170 +15848 +2934 +67350 +74764 +47221 +24345 +71976 +11364 +41522 +72855 +71614 +10875 +80320 +29812 +24216 +26947 +27058 +26438 +19794 +392 +15471 +74080 +4948 +9510 +136 +24460 +6019 +44162 +79574 +70691 +18705 +79653 +9489 +67557 +58789 +40259 +24766 +76987 +34083 +68096 +7375 +70755 +45029 +15773 +4056 +26483 +71537 +67146 +36798 +14617 +10666 +5099 +991 +56409 +27238 +56279 +14383 +29357 +35884 +8561 +14060 +59771 +4992 +71620 +63765 +21678 +51972 +26701 +49838 +71882 +57987 +41762 +25869 +77726 +26504 +63923 +79131 +1749 +143 +28227 +29056 +34868 +60274 +53635 +33581 +60135 +7006 +2148 +77696 +10130 +78731 +16593 +53654 +38773 +500 +68611 +70731 +2130 +71891 +17210 +67481 +77190 +35493 +19712 +8852 +33136 +47105 +49383 +34080 +24868 +5932 +55983 +49899 +76326 +78544 +31000 +65710 +59191 +22221 +34277 +22567 +53711 +65486 +49684 +4533 +42744 +8663 +75858 +47376 +71275 +19311 +62892 +72776 +18026 +37016 +76532 +49195 +28317 +42181 +75724 +78283 +80544 +47029 +55145 +67245 +6829 +78337 +74373 +5651 +8640 +69580 +14694 +33629 +61204 +79880 +55872 +7270 +19535 +20476 +22491 +63714 +31333 +17790 +13905 +46967 +56840 +16835 +35928 +59472 +17493 +11950 +55658 +77048 +4640 +5644 +43983 +78159 +62728 +11460 +62899 +25601 +17748 +28551 +16938 +68740 +19823 +60100 +64857 +38882 +20854 +21834 +76832 +71390 +19009 +46727 +20893 +6954 +61613 +13778 +24922 +59212 +22587 +49612 +14937 +19248 +1575 +43497 +33955 +45200 +47540 +26848 +11442 +62668 +69951 +79704 +48363 +71005 +4005 +51457 +8834 +45025 +58106 +42609 +28868 +44763 +9666 +7920 +6928 +65231 +569 +46556 +59545 +48668 +77553 +33371 +70801 +64600 +72774 +35529 +71003 +60600 +8866 +43003 +41271 +22855 +73781 +14289 +31229 +35404 +69876 +27204 +35259 +67784 +15452 +9193 +58515 +15432 +42552 +5046 +52054 +74431 +22886 +31434 +24534 +67715 +18796 +13378 +69011 +8097 +6908 +8941 +1987 +15355 +47915 +32300 +22464 +12738 +3756 +4937 +4379 +75057 +35764 +65809 +1799 +77164 +68285 +74344 +41315 +72808 +25916 +13157 +71228 +4304 +41317 +25188 +25339 +57150 +20055 +12667 +29940 +49728 +36561 +68128 +31450 +8465 +10110 +58281 +41508 +17047 +44418 +11677 +51210 +65837 +44107 +16705 +56051 +57991 +22834 +73298 +61250 +26773 +44310 +4624 +55403 +23827 +23759 +60180 +77510 +7291 +27451 +27103 +76960 +71461 +68499 +1290 +35985 +13360 +73847 +74346 +52430 +74852 +54218 +28057 +52654 +73256 +28247 +7641 +39409 +75388 +43828 +77710 +36237 +30595 +77786 +75403 +62460 +52013 +42030 +5247 +13547 +14425 +68902 +68098 +45582 +80633 +40936 +4217 +12553 +44683 +43890 +48712 +71883 +18783 +40851 +36444 +78882 +44333 +13270 +72780 +78577 +32966 +20014 +20686 +35935 +52211 +72864 +50008 +21306 +48239 +16968 +32912 +15754 +48983 +49011 +44275 +56805 +57079 +71055 +50418 +79235 +20793 +12279 +56819 +52336 +49355 +73216 +681 +27354 +49217 +76174 +71850 +21208 +58150 +7347 +30896 +47550 +23943 +12286 +43545 +33493 +26491 +2035 +52500 +77454 +21580 +73897 +30501 +73435 +35396 +18424 +58759 +23252 +14671 +65691 +7441 +59400 +28732 +20482 +76514 +19275 +3546 +48906 +74456 +12895 +47891 +25472 +52869 +997 +40014 +52566 +47816 +37584 +67400 +10580 +42485 +47336 +40290 +69974 +6412 +33924 +31286 +13215 +1437 +79320 +27045 +58648 +29154 +48979 +31597 +5997 +69679 +4029 +70425 +80015 +64889 +38125 +1329 +80082 +50004 +37864 +43239 +69365 +69882 +17633 +49851 +159 +31536 +537 +79119 +76341 +5803 +60557 +36050 +44116 +55633 +10048 +31664 +23215 +48011 +64977 +67898 +76177 +6799 +70751 +26004 +71008 +25273 +6733 +22621 +32754 +18886 +13394 +67236 +57710 +59188 +16322 +20067 +49688 +42403 +38400 +46994 +69881 +64610 +30941 +19780 +47993 +57550 +39486 +80201 +26611 +57217 +4125 +19582 +24161 +17554 +9307 +49843 +45554 +47446 +27135 +77923 +68539 +39132 +68279 +57875 +7985 +14624 +57805 +65543 +73213 +21865 +61031 +1156 +44369 +75389 +50181 +57647 +10789 +27666 +31342 +21333 +38936 +24174 +25866 +10857 +78623 +5868 +10393 +45909 +79054 +29857 +9905 +16685 +79280 +25292 +68047 +23319 +70283 +50071 +59090 +41254 +16679 +70794 +62937 +12720 +38631 +2742 +23248 +21123 +16588 +9774 +49958 +1439 +11986 +74781 +26109 +12103 +30412 +75279 +1339 +27270 +70069 +53426 +67105 +10860 +62948 +31564 +49629 +44166 +4798 +74151 +63406 +70577 +29201 +14655 +36382 +63886 +2758 +51622 +52056 +31624 +48009 +67365 +57585 +78228 +1727 +2304 +67930 +53283 +65044 +15680 +41428 +34189 +42788 +65512 +36686 +17197 +2402 +49058 +50244 +55613 +34057 +13267 +37106 +21525 +8071 +64559 +68440 +63861 +69331 +12376 +58504 +16242 +50060 +7930 +11062 +37490 +33005 +21366 +33875 +67854 +9080 +21950 +55760 +21351 +17379 +14960 +17056 +80358 +78229 +69955 +50623 +26924 +62375 +23665 +46198 +48993 +68444 +47784 +3667 +43389 +27978 +35039 +55011 +44504 +33305 +50863 +51789 +23639 +31541 +34978 +51310 +17665 +64096 +79175 +8570 +79128 +45202 +13576 +61979 +34582 +67109 +8628 +10320 +14416 +70109 +7287 +69299 +2860 +14720 +67069 +69426 +5428 +73866 +13682 +72268 +11095 +58131 +54023 +26754 +16680 +75345 +70815 +55822 +3921 +20238 +64657 +4100 +22778 +44925 +35223 +16751 +79079 +16520 +72182 +42379 +11758 +80151 +30086 +24952 +20762 +63360 +493 +18336 +53447 +63813 +44338 +36427 +12808 +25990 +29795 +76402 +17457 +24632 +3880 +6546 +17620 +3682 +44998 +42518 +14136 +34764 +3047 +26444 +956 +27628 +22347 +57340 +41537 +54826 +76864 +61959 +19140 +41924 +66181 +57653 +62198 +14828 +9608 +69334 +24480 +31069 +12778 +45584 +25765 +31225 +19785 +75307 +1532 +51511 +62006 +61796 +17020 +30113 +17287 +8664 +74190 +7745 +30567 +41734 +15702 +34490 +67093 +27682 +48857 +12733 +50108 +63653 +77332 +4846 +39326 +37825 +49754 +6956 +21846 +61443 +50537 +57555 +34669 +55413 +47875 +1827 +21792 +33353 +35261 +28706 +43521 +796 +25109 +64712 +29589 +74321 +33726 +50976 +32198 +72721 +77702 +24608 +32178 +36373 +67254 +71207 +76313 +59976 +6030 +25400 +31289 +5048 +6280 +9971 +54035 +5801 +40945 +62605 +56947 +46972 +29544 +36695 +24405 +29517 +64990 +9935 +76773 +55977 +71647 +52528 +47971 +37854 +2760 +21421 +6479 +67763 +32702 +7246 +59040 +66249 +55686 +36385 +49213 +68375 +9402 +226 +7595 +56191 +77218 +50981 +5547 +80022 +73187 +52891 +23942 +58875 +10989 +78594 +68247 +48026 +61760 +77592 +9810 +71307 +38723 +59539 +20849 +67154 +920 +79342 +51814 +48055 +23918 +50632 +80496 +3664 +73495 +39354 +34330 +42699 +46053 +64466 +572 +69864 +33260 +41942 +68123 +37280 +2493 +48288 +10054 +75520 +6503 +2949 +38317 +68404 +13536 +7484 +80185 +52393 +76696 +2253 +5691 +76964 +6936 +23171 +58573 +4169 +65395 +10992 +57566 +79562 +30516 +30795 +9742 +56970 +58107 +29939 +17203 +44465 +68866 +73906 +61995 +64996 +59904 +28162 +32061 +65657 +74766 +51041 +58022 +4575 +29178 +73996 +75607 +29045 +51744 +9098 +69271 +35863 +67903 +78677 +55229 +66753 +3398 +15616 +16898 +61756 +20585 +26176 +31236 +59337 +39056 +78568 +36279 +50715 +6044 +71893 +14507 +28036 +72270 +65209 +44313 +5390 +71864 +11410 +79949 +36635 +68382 +50675 +36341 +20700 +55616 +14302 +5748 +62406 +41919 +78757 +38961 +67665 +53419 +23138 +16882 +66113 +62233 +35135 +10675 +58480 +7847 +33203 +36174 +54988 +44163 +72900 +68645 +40551 +5120 +19667 +70558 +56495 +66103 +79341 +63878 +24540 +7572 +3624 +176 +80723 +56931 +42630 +32952 +45996 +68756 +10073 +77425 +47115 +76101 +40545 +40550 +49044 +48838 +25309 +74819 +51719 +51723 +35097 +46313 +47353 +17677 +45730 +59835 +46814 +60747 +74391 +37704 +35602 +20886 +32995 +31385 +4645 +78614 +49403 +48646 +14162 +54399 +39852 +37268 +58867 +13781 +8458 +47139 +30683 +71680 +24370 +12561 +65479 +53705 +61269 +10195 +18417 +10458 +19878 +7387 +10551 +58823 +23933 +72952 +33270 +12500 +2747 +33206 +22744 +58596 +10620 +18335 +49882 +51718 +28662 +16532 +1270 +48565 +5017 +12119 +65716 +50929 +77361 +77124 +34980 +4376 +37694 +40958 +26800 +2393 +18365 +29081 +22790 +55219 +9604 +76769 +65159 +36030 +15179 +64349 +23482 +24661 +65339 +76201 +25672 +41263 +29388 +36699 +327 +60493 +72910 +13767 +29788 +42389 +42658 +7219 +74109 +26998 +40071 +42592 +37742 +53342 +9423 +79252 +44626 +64481 +36553 +54037 +30761 +40816 +71586 +33511 +5819 +76036 +2068 +73733 +30030 +54586 +12144 +60023 +3883 +11621 +23227 +7617 +67489 +6564 +43251 +48706 +54031 +21416 +18423 +45750 +70874 +19523 +29228 +49366 +41386 +26361 +9770 +61178 +4904 +28628 +44191 +21397 +61844 +53553 +30363 +20970 +54501 +59416 +20771 +7142 +2050 +5116 +48729 +72348 +32873 +23003 +48634 +53816 +4499 +2745 +60597 +4370 +37775 +15801 +76056 +11234 +33058 +70741 +51559 +50767 +28292 +54917 +31696 +48749 +6086 +32941 +45112 +9093 +65132 +62411 +68210 +78149 +51007 +68381 +22291 +19677 +64555 +36225 +60161 +12244 +36474 +41474 +73830 +76283 +54198 +76488 +68390 +72176 +54298 +19420 +61281 +39353 +18633 +75654 +66371 +3357 +24127 +23769 +2713 +19787 +69582 +52180 +4808 +60292 +68932 +7703 +19010 +7469 +74400 +28215 +80530 +5859 +25500 +66179 +8708 +18309 +35538 +49496 +37784 +78188 +7666 +2000 +26472 +57956 +67944 +26775 +62345 +52975 +67145 +28581 +10089 +53198 +35296 +60954 +12141 +61654 +75606 +33195 +37951 +40222 +11837 +52084 +30283 +24139 +61568 +40597 +2751 +32711 +74036 +79007 +10244 +79916 +71370 +19348 +40670 +71816 +59348 +29933 +72440 +44706 +79896 +36624 +45405 +56286 +75323 +12276 +69684 +15596 +61917 +21271 +72871 +26904 +40843 +38575 +29859 +73318 +33671 +51482 +3178 +53262 +73038 +37446 +68124 +69566 +68779 +21785 +78477 +34335 +13124 +57244 +2608 +73160 +44527 +68411 +56192 +57744 +36777 +40434 +36782 +4312 +79447 +28592 +36028 +8494 +50265 +64492 +55294 +65219 +55025 +20059 +50613 +35431 +36851 +65996 +20929 +66462 +5844 +40017 +29441 +18076 +14312 +29707 +3755 +15526 +48436 +74103 +47330 +61770 +4901 +57742 +54390 +40367 +53698 +62463 +28956 +19285 +16210 +51799 +20251 +80606 +10305 +24729 +76157 +8400 +4697 +26921 +22360 +10560 +46590 +24966 +67533 +32689 +55777 +17888 +37460 +25210 +54662 +64429 +78482 +32880 +49440 +3087 +66471 +46908 +10357 +8028 +78786 +59679 +22353 +11585 +38359 +25282 +49048 +39657 +37097 +8739 +48687 +14515 +26525 +59766 +6688 +73563 +11745 +75706 +73271 +16572 +38309 +23530 +62694 +76540 +71115 +53327 +16295 +63245 +62723 +58659 +29340 +55520 +29738 +47782 +46810 +55525 +23791 +31248 +47697 +25189 +36888 +4044 +36870 +66865 +59312 +61748 +5496 +77893 +19190 +38992 +8833 +40649 +44855 +30172 +63207 +28880 +66244 +3971 +79127 +71177 +65557 +74003 +877 +5933 +58605 +80722 +70723 +30469 +53788 +1232 +31370 +80342 +56166 +25267 +60127 +78684 +426 +72578 +80525 +51776 +9650 +24738 +25960 +6571 +58251 +664 +69485 +30650 +53239 +72612 +25149 +79269 +55602 +6392 +9940 +12366 +8948 +2611 +62764 +71726 +1042 +79124 +26150 +58852 +16232 +33902 +67997 +5657 +47217 +3985 +42720 +30690 +43881 +49408 +11557 +8882 +5620 +35433 +36819 +35499 +76297 +24065 +60663 +66399 +48054 +11298 +3070 +52621 +76849 +22851 +69163 +49154 +20541 +63462 +27530 +60885 +73321 +801 +76669 +377 +38608 +79415 +32679 +43153 +11656 +77299 +36271 +14459 +25160 +27138 +33732 +34922 +26357 +41887 +11969 +63745 +26063 +12580 +15139 +44021 +45547 +15531 +17695 +73274 +37395 +3802 +59673 +47510 +23760 +67007 +9539 +51405 +59379 +48496 +1440 +8025 +75376 +3538 +5662 +32044 +80331 +43530 +58557 +3146 +46066 +52806 +41542 +67917 +60576 +11528 +35680 +28258 +34571 +55386 +48230 +49010 +25723 +19240 +69017 +17965 +1685 +41939 +35145 +38330 +31006 +18697 +6620 +54114 +58426 +29279 +29462 +37028 +40354 +65944 +341 +8720 +35044 +5389 +42194 +47973 +69034 +2740 +47207 +21880 +22158 +33333 +12756 +1771 +75779 +76706 +74248 +79760 +8904 +74876 +72413 +18403 +31185 +65477 +54038 +54926 +60673 +54012 +68518 +28881 +62893 +11737 +56949 +41106 +46598 +73448 +9667 +20590 +48061 +32132 +29992 +27672 +69484 +16388 +42852 +10511 +29682 +11712 +68403 +32465 +21016 +64191 +55737 +54178 +54302 +80167 +48505 +48251 +78819 +52633 +27998 +76086 +33826 +69744 +51939 +75174 +71454 +50999 +73861 +73065 +47340 +72598 +24892 +2218 +54716 +46017 +77700 +27462 +28552 +9086 +62161 +54855 +7921 +46762 +66633 +25155 +34257 +20120 +5943 +37729 +19417 +78165 +80155 +42611 +59732 +62196 +80661 +29398 +3694 +9577 +46580 +23173 +74417 +50097 +9062 +73329 +40358 +14826 +18395 +7916 +27675 +40489 +30753 +70501 +64267 +54894 +36100 +78339 +45840 +67480 +66250 +58325 +54890 +41831 +36380 +44950 +33979 +27783 +44849 +14458 +43278 +46806 +62379 +60009 +44335 +71499 +22942 +39619 +36466 +3683 +59459 +75769 +69743 +42877 +65894 +67782 +36905 +71355 +6753 +68045 +36059 +19518 +24314 +17222 +71415 +1335 +7582 +39046 +25348 +58883 +65978 +47349 +36586 +2738 +68760 +64382 +57626 +42042 +35004 +74666 +57955 +66931 +77515 +66241 +6625 +41634 +35308 +22120 +66128 +13485 +73267 +70032 +78836 +18731 +63564 +44232 +36775 +7492 +28846 +59373 +1504 +78782 +10069 +12313 +46760 +45235 +11073 +41898 +51787 +65228 +60355 +22222 +53303 +31938 +68099 +45094 +72950 +80432 +80664 +73676 +1664 +12716 +64236 +45752 +39436 +48689 +18970 +78037 +6100 +11579 +31731 +73568 +48073 +41855 +35475 +74730 +20602 +1390 +486 +20217 +76792 +32640 +63686 +35547 +60491 +6406 +57791 +18289 +10301 +5908 +76593 +68264 +69035 +53814 +70085 +59661 +46170 +30370 +3549 +67542 +80477 +21864 +68946 +41622 +79222 +42457 +42512 +70978 +76915 +80107 +45076 +2866 +27423 +46865 +10057 +71760 +58404 +28243 +66195 +49448 +15002 +53992 +49170 +79619 +17215 +17983 +12939 +67375 +66801 +53675 +62228 +23299 +76885 +11308 +70052 +10615 +74679 +21059 +11342 +22729 +22799 +15115 +23457 +14688 +14887 +39875 +4659 +28671 +80683 +63913 +14972 +28760 +24833 +2898 +32500 +47548 +12443 +42989 +68977 +39858 +50393 +5486 +12497 +32745 +67978 +70690 +50399 +32779 +46837 +58387 +34235 +59076 +2626 +16095 +41402 +42431 +18386 +74192 +19415 +73823 +62040 +76093 +58661 +1249 +43817 +26812 +24628 +76879 +26757 +63834 +8962 +67561 +79390 +61235 +11634 +65635 +1657 +8913 +77683 +60349 +70939 +22735 +14245 +47568 +39174 +75725 +62358 +54189 +35960 +70103 +77600 +74499 +21236 +10136 +57988 +59064 +56079 +18415 +18328 +37412 +70339 +58494 +57399 +77041 +32906 +5200 +15808 +6792 +5393 +37860 +6719 +79857 +21239 +38548 +47985 +46236 +77448 +6419 +22978 +26960 +25270 +44101 +32264 +16513 +60382 +60134 +35598 +32975 +22160 +59977 +2785 +31802 +77593 +28185 +75781 +26990 +7055 +50955 +1487 +50602 +14338 +9839 +47960 +75746 +26727 +27193 +69687 +68090 +22884 +61580 +75591 +26306 +3311 +71010 +24843 +70169 +28889 +35639 +12974 +71597 +48697 +17019 +56800 +31942 +30635 +78949 +78780 +62631 +55853 +16382 +26926 +8298 +35803 +11305 +46070 +39532 +7337 +5518 +64035 +19182 +3319 +18478 +73929 +67787 +27076 +8136 +37275 +59224 +27642 +24941 +16966 +24737 +76639 +60093 +28862 +67741 +31603 +30 +72857 +22772 +77044 +72789 +55611 +8328 +70490 +42405 +21103 +2204 +70627 +60402 +78047 +55721 +36046 +60592 +11770 +72358 +19301 +13892 +62001 +65320 +71139 +79293 +10889 +25523 +7152 +31614 +22052 +44692 +46980 +38777 +9232 +44199 +369 +78930 +19513 +40533 +62849 +32878 +77075 +2240 +4022 +17374 +31171 +38657 +59789 +50226 +23144 +49315 +32858 +17576 +15135 +6107 +61969 +33099 +40946 +16926 +10439 +71909 +64743 +2161 +21113 +20651 +80646 +76203 +32775 +44158 +29718 +11008 +9362 +36320 +46940 +73919 +23689 +74951 +15943 +80034 +77866 +80695 +65253 +40717 +44593 +63234 +21393 +47148 +48007 +16011 +1432 +5400 +40957 +26562 +67524 +67411 +50258 +46468 +39823 +29805 +38464 +74212 +4191 +58633 +76234 +52261 +54379 +3360 +5117 +47961 +49053 +11296 +30593 +2532 +1753 +70717 +52740 +62980 +62628 +69182 +35488 +27171 +50146 +26248 +47102 +57880 +36371 +467 +56988 +28316 +28034 +41032 +63045 +28305 +22745 +61314 +52477 +21521 +34059 +14873 +60309 +23065 +69834 +66909 +8204 +1327 +12614 +47893 +59464 +50158 +23229 +56777 +37053 +80483 +72680 +79500 +59881 +26788 +3518 +27776 +70147 +53002 +21895 +69065 +19791 +42906 +11415 +10855 +45573 +59648 +31098 +63210 +28045 +48237 +77890 +31728 +48577 +74205 +19929 +72925 +35084 +73231 +5300 +3759 +6514 +64451 +55628 +3042 +78008 +37642 +5275 +27814 +34676 +22476 +18181 +56710 +51192 +37355 +7471 +21910 +25586 +37822 +59807 +77679 +13060 +52938 +22604 +47541 +66193 +77969 +75441 +716 +20947 +40848 +74799 +45748 +57308 +49318 +15975 +34522 +67863 +44238 +80505 +60025 +37004 +63303 +64803 +69208 +20116 +35110 +48229 +37713 +74891 +57877 +50539 +80361 +71279 +17883 +21523 +66306 +67642 +10311 +67454 +13015 +31387 +18260 +19058 +3220 +22922 +78726 +66340 +48322 +62326 +2231 +10853 +79514 +56431 +52825 +3250 +60617 +64245 +16275 +43187 +3960 +45638 +64073 +49909 +7502 +80243 +41248 +8179 +32505 +25793 +5941 +35295 +909 +31848 +19668 +30390 +40419 +64143 +74681 +28594 +41141 +79035 +12232 +53673 +78995 +58956 +5210 +58125 +75147 +4077 +61777 +40136 +7594 +55645 +31670 +54698 +14120 +33245 +43281 +47223 +28426 +1651 +44440 +79671 +1158 +47789 +6114 +80311 +26402 +23662 +76555 +48203 +25325 +77628 +50377 +11210 +33098 +20838 +28620 +15608 +33061 +52984 +76991 +52057 +33851 +72034 +11180 +45551 +18719 +58004 +57171 +26257 +33382 +60248 +75612 +49140 +61993 +40402 +1856 +50313 +22950 +25959 +24684 +77318 +51141 +37614 +4320 +67814 +35423 +68312 +22171 +70445 +77690 +68084 +59755 +47716 +2967 +62715 +44734 +31742 +11659 +49482 +50009 +39240 +11820 +58526 +75232 +56533 +18443 +24194 +14345 +38780 +7597 +48912 +26550 +51418 +50081 +41829 +73391 +47622 +58744 +13602 +9734 +23930 +26485 +62657 +76818 +60985 +42146 +29528 +9210 +69005 +51906 +48228 +60610 +58870 +3421 +22448 +29411 +7690 +34431 +66243 +13269 +3887 +75682 +59485 +51942 +39337 +72185 +45125 +23160 +48590 +80706 +48784 +79296 +17536 +43652 +36684 +14556 +45681 +12835 +49414 +74288 +62429 +19083 +3797 +64121 +42864 +25494 +21948 +12824 +76914 +46182 +42781 +65236 +3871 +9575 +61811 +46506 +39989 +45397 +69289 +75608 +63523 +69694 +33057 +59590 +49605 +19332 +80555 +19270 +16055 +78705 +28251 +8101 +22856 +61337 +68338 +72800 +23327 +58054 +62586 +20583 +66130 +2973 +9204 +22189 +55643 +73798 +9186 +41163 +78476 +12024 +48138 +39791 +32532 +49659 +47152 +13649 +60749 +28725 +60061 +8395 +45731 +27179 +42333 +74784 +26146 +20845 +6890 +57396 +12367 +48765 +1105 +55336 +68014 +15375 +13575 +59966 +74533 +23369 +35721 +2021 +9192 +21251 +8810 +6245 +33578 +37160 +21395 +65749 +78737 +42656 +66663 +3164 +61247 +19455 +75495 +18293 +22583 +13413 +64796 +20688 +39010 +56410 +617 +40193 +54669 +10758 +59787 +5084 +15059 +31569 +19619 +9245 +38700 +19662 +40205 +21267 +37696 +19032 +23311 +7803 +70621 +73285 +2876 +16194 +44340 +9567 +39631 +4931 +15580 +55309 +28050 +43824 +9855 +62026 +42905 +72248 +24411 +13819 +80106 +11444 +29001 +21147 +16012 +57164 +53386 +26815 +46723 +9414 +49082 +20517 +76270 +73761 +52275 +5655 +7031 +47145 +35843 +51292 +77045 +6231 +13612 +72904 +30895 +13838 +47798 +62760 +70258 +47662 +16691 +23180 +20749 +78084 +5194 +80004 +24124 +77557 +77196 +54517 +13975 +6007 +57043 +1179 +8193 +2927 +13628 +19807 +10098 +42984 +28518 +58660 +23468 +30515 +6213 +70334 +13724 +1459 +27038 +49828 +68348 +41826 +6035 +52648 +21128 +54543 +74396 +26548 +38086 +12030 +68873 +57528 +14450 +5412 +73571 +54417 +21461 +23169 +64881 +46260 +48489 +57648 +52197 +67428 +70486 +4373 +30435 +1371 +78294 +50555 +45317 +42697 +58166 +22112 +12621 +51288 +3304 +21996 +12260 +42880 +14552 +21816 +72228 +13559 +56530 +2512 +68360 +5005 +58566 +31992 +41362 +23518 +33262 +39964 +29746 +13472 +27850 +79960 +23549 +21107 +61295 +25836 +34248 +14171 +61858 +16825 +29893 +58938 +36088 +69668 +67082 +29096 +47986 +57652 +75083 +7257 +49227 +17984 +36384 +59238 +49105 +67591 +51996 +7780 +32885 +41407 +30473 +47002 +3475 +53374 +66834 +41830 +28103 +41132 +65515 +39688 +21714 +73091 +68998 +4381 +60529 +78800 +3371 +49390 +61363 +20560 +45846 +2557 +67115 +43607 +47774 +34044 +64072 +59433 +57054 +1542 +23092 +34209 +60769 +18861 +62691 +29495 +15995 +70895 +8825 +27180 +14774 +19612 +55834 +20784 +9238 +5602 +79322 +32516 +36135 +21374 +30946 +4227 +56105 +79995 +69654 +37046 +9799 +23499 +92 +7752 +36681 +28923 +16500 +5047 +44413 +51459 +70581 +15486 +18985 +22938 +58849 +71531 +29452 +39717 +71420 +15688 +77187 +70638 +32630 +32028 +35429 +67078 +62742 +36276 +42149 +57051 +70780 +23501 +52801 +63992 +8069 +56372 +31483 +36878 +66511 +69649 +9289 +66550 +79894 +34707 +40707 +3801 +76923 +67962 +73950 +28141 +45541 +59297 +14351 +38233 +2806 +32919 +70078 +56093 +45249 +57618 +16327 +4667 +48412 +12229 +14850 +76857 +11222 +74593 +30036 +68495 +1514 +6192 +31685 +63791 +36799 +20664 +39926 +65294 +18284 +68528 +27312 +19977 +10957 +77776 +7625 +31561 +32139 +214 +36146 +30038 +59387 +22466 +61825 +74095 +38013 +32539 +62473 +46233 +7255 +62733 +41406 +62261 +66916 +68906 +10644 +42267 +54200 +62052 +30851 +4962 +37083 +20206 +18327 +3015 +34881 +62665 +32252 +57354 +25277 +8070 +72471 +79741 +22506 +31989 +79655 +15925 +49815 +75129 +13093 +51171 +51174 +76783 +12388 +77591 +30556 +63548 +48839 +70934 +60465 +78829 +669 +78704 +11468 +66696 +12147 +38334 +50109 +17636 +6963 +50973 +62696 +1173 +31322 +74087 +74640 +76677 +65696 +44318 +8486 +26714 +5756 +75509 +53171 +10854 +7468 +76226 +23260 +56823 +56085 +18430 +23458 +34386 +24595 +14591 +33745 +11657 +52719 +44426 +40031 +32847 +72506 +13707 +76440 +69449 +74399 +20015 +40555 +43253 +4351 +37306 +51573 +24821 +77212 +56415 +19430 +69947 +56151 +29349 +34873 +28278 +48325 +76118 +47364 +11249 +13933 +40703 +73593 +47812 +48586 +64484 +38490 +55572 +75853 +40513 +55857 +51734 +33121 +8622 +75372 +20478 +876 +72152 +15934 +76569 +65842 +50826 +42557 +44098 +37891 +7418 +21800 +61941 +28938 +70201 +38149 +76674 +66118 +49887 +37517 +27527 +44210 +56721 +14706 +3824 +62570 +32839 +60301 +48797 +73324 +47245 +16221 +739 +64616 +17502 +17242 +47603 +44751 +20264 +24604 +26649 +8646 +72513 +73266 +44962 +67723 +17230 +45023 +63530 +1706 +33459 +70579 +51087 +41591 +19471 +65052 +68720 +65535 +3031 +39148 +53970 +13853 +9158 +74651 +45126 +63172 +57993 +27600 +23974 +45924 +10206 +3927 +21359 +884 +35874 +32372 +13041 +45261 +72703 +71500 +31654 +47053 +11826 +77175 +33985 +58899 +25192 +22891 +63651 +74301 +44100 +15078 +33310 +21534 +10851 +74317 +36096 +54274 +70898 +33728 +52894 +35994 +64891 +63610 +62986 +44906 +20730 +35399 +15433 +28168 +35704 +38027 +77655 +11749 +24156 +65266 +372 +36857 +29761 +46735 +46282 +38117 +22273 +66758 +48910 +30033 +46757 +27327 +36665 +42850 +7615 +24799 +34805 +1852 +72769 +11725 +18407 +37211 +78381 +68574 +2662 +48259 +8456 +50736 +35576 +76411 +22104 +24218 +61482 +40790 +19991 +25028 +40708 +48596 +30831 +45496 +49897 +50867 +35421 +20370 +49465 +29629 +20593 +65916 +35940 +33229 +18037 +64629 +62433 +53554 +25995 +33761 +65050 +248 +2912 +64919 +46773 +19462 +68129 +62670 +33311 +47481 +24917 +30857 +36178 +48003 +61491 +58580 +53844 +15895 +40827 +50719 +76983 +56792 +63864 +1145 +53998 +44471 +42604 +79005 +43233 +30380 +18800 +37409 +43813 +73341 +1161 +12016 +19680 +1682 +20366 +69940 +77493 +50600 +6669 +34329 +73407 +45747 +4401 +12849 +73106 +38715 +48852 +79872 +64612 +75419 +30064 +6266 +23904 +48034 +11141 +15329 +21348 +57473 +18297 +33620 +22840 +68483 +68301 +79681 +68059 +70357 +25688 +43100 +67630 +32556 +75237 +24360 +54867 +2046 +13610 +51181 +2359 +7816 +69290 +25714 +695 +23392 +51377 +4078 +77317 +65613 +21664 +529 +55028 +44941 +21199 +29803 +2297 +69992 +10309 +17552 +23626 +63276 +38877 +71385 +41228 +8887 +3231 +40617 +73552 +72848 +55351 +3491 +9039 +49923 +46614 +15936 +53742 +73960 +5622 +62151 +12771 +44186 +68622 +79516 +47016 +76165 +22970 +73979 +47846 +28696 +34126 +25005 +47084 +48298 +31764 +18063 +61882 +54300 +12825 +43249 +35592 +20648 +5593 +56299 +47543 +3287 +15491 +13490 +15313 +55084 +46592 +61486 +11751 +1984 +27888 +64661 +17356 +46216 +31776 +59585 +54468 +41773 +56763 +19219 +17324 +29844 +5233 +30428 +52310 +56014 +53560 +36579 +45488 +77761 +55784 +55950 +31351 +64618 +1878 +29775 +55947 +35842 +67081 +43131 +29525 +47983 +20389 +35949 +58184 +67116 +38913 +31137 +53857 +57664 +38843 +45318 +66576 +6249 +34754 +36460 +59159 +41742 +1446 +6307 +25343 +33296 +32212 +57574 +63907 +21003 +72180 +50170 +78177 +2271 +59992 +57298 +66784 +43788 +2096 +7500 +3344 +28928 +12128 +70608 +54253 +48082 +9614 +11904 +65201 +43124 +3840 +22274 +6303 +65816 +29074 +25403 +36911 +54323 +12933 +50092 +56152 +22154 +37221 +61497 +1091 +33649 +9509 +49646 +40882 +64568 +65304 +53351 +74758 +39343 +52959 +8270 +80622 +7653 +1658 +46417 +66039 +8883 +36966 +45867 +60817 +76012 +55456 +18860 +59638 +1858 +16409 +59579 +54561 +29789 +66589 +2894 +14386 +15741 +22646 +60136 +29100 +21121 +43711 +1540 +41159 +42028 +31884 +56811 +32801 +32889 +6168 +61341 +49122 +68626 +25978 +15733 +73589 +73813 +72866 +54451 +25180 +10894 +1772 +72539 +19390 +2959 +5039 +54613 +11426 +684 +74289 +1868 +23586 +44366 +16136 +3873 +20995 +26529 +56199 +46432 +78495 +53880 +35496 +44497 +55599 +70051 +30825 +48329 +15798 +66967 +10106 +33850 +61378 +43895 +56113 +78670 +36556 +39511 +76800 +78850 +37560 +63254 +1359 +70405 +61343 +36805 +69367 +38078 +52791 +6430 +1659 +30885 +13854 +58758 +67940 +20993 +71224 +25914 +9872 +42748 +49146 +71126 +62787 +26446 +32486 +41488 +16684 +18422 +28979 +49301 +67306 +13725 +61718 +49699 +17 +6126 +4926 +11438 +5033 +33863 +52776 +58090 +37911 +37846 +55143 +47546 +30843 +68272 +7565 +14340 +77325 +33344 +24932 +21892 +39988 +36754 +59390 +54170 +6032 +7013 +18453 +80498 +32298 +37324 +53949 +78945 +31376 +74464 +45740 +17121 +28206 +47172 +22409 +18292 +73849 +28776 +26121 +35038 +62560 +20658 +79088 +57037 +40963 +41849 +66697 +56161 +18119 +33954 +72193 +607 +70955 +78264 +5489 +27895 +70867 +35494 +30000 +61615 +280 +47413 +43086 +43665 +35398 +34285 +1780 +15524 +34412 +70366 +80242 +65127 +63193 +71046 +52426 +49346 +71539 +52770 +48232 +11029 +79375 +78093 +70595 +67256 +36274 +78588 +13574 +16125 +75402 +21469 +36899 +9916 +41708 +60069 +16070 +20485 +7424 +2658 +59105 +1631 +56461 +8639 +78110 +52935 +45099 +2055 +53889 +79733 +64341 +23445 +59798 +27127 +65380 +49173 +23629 +27414 +57813 +9610 +50259 +63853 +65567 +46778 +26340 +55479 +51206 +5733 +14320 +4394 +18173 +54866 +76500 +14009 +23417 +16885 +66673 +52344 +7998 +17875 +66920 +39164 +22187 +66588 +17135 +36874 +47726 +12576 +51534 +63599 +47810 +70116 +19520 +21945 +15613 +19138 +56542 +49352 +14579 +62441 +19688 +49514 +25627 +14331 +71167 +72055 +61506 +58046 +48901 +74731 +51338 +43257 +23802 +33148 +19092 +13823 +64790 +58914 +23391 +72414 +28530 +64049 +65794 +49189 +8186 +37497 +61338 +7839 +4317 +17357 +27515 +39792 +63617 +4970 +38215 +23161 +47278 +52060 +36231 +22312 +48515 +49610 +77865 +73838 +49621 +69388 +59292 +69993 +29359 +63059 +49266 +8048 +21344 +71549 +71462 +21732 +77051 +36647 +73912 +61822 +54619 +75766 +271 +1785 +34100 +35498 +26291 +71518 +30256 +48414 +70309 +47923 +3774 +38358 +68922 +4886 +16167 +23632 +14031 +14518 +60030 +72964 +61930 +72835 +70657 +63244 +20277 +12155 +70156 +51031 +2656 +16222 +5310 +24249 +74902 +30588 +24901 +14822 +39021 +25182 +66233 +40348 +6815 +46303 +6921 +51238 +5237 +32712 +77886 +59515 +68876 +45378 +42157 +9046 +68968 +68658 +937 +53425 +66377 +5298 +29223 +79095 +33751 +13103 +62139 +50635 +42666 +40740 +43909 +59413 +63626 +38572 +13129 +25777 +44167 +60284 +49635 +31123 +36796 +4031 +63015 +30143 +23818 +39221 +18814 +60489 +59803 +60387 +20274 +66237 +72640 +29486 +65041 +58675 +24664 +14980 +67833 +74176 +23851 +46868 +68030 +49131 +32223 +79590 +61459 +48677 +71350 +33952 +75897 +44445 +71351 +62255 +62525 +60845 +59234 +38182 +15454 +45916 +41412 +72013 +36967 +73223 +22811 +40728 +41377 +70379 +26085 +19087 +37199 +58964 +48074 +12609 +8838 +3028 +59127 +30069 +3058 +77723 +23247 +12882 +69471 +35749 +52157 +69429 +80694 +36875 +9170 +42279 +6671 +71631 +79786 +14578 +9412 +62175 +15933 +64545 +66736 +53455 +62602 +52545 +34971 +25417 +53185 +61738 +25904 +64194 +25573 +9968 +70713 +38644 +6656 +20205 +1768 +69193 +71339 +32327 +29523 +49653 +59538 +74025 +51912 +64973 +40368 +32577 +26424 +47912 +19676 +18058 +80527 +1646 +12314 +34232 +74550 +2296 +61089 +49682 +35901 +54394 +45688 +27256 +26735 +62156 +79478 +29824 +32648 +33145 +51412 +40786 +74040 +36965 +43710 +29289 +74792 +71837 +80343 +28004 +9889 +10775 +20453 +28108 +68477 +65275 +20471 +55609 +40909 +41323 +45195 +56188 +8058 +32827 +43175 +32485 +18118 +38975 +56448 +12358 +17663 +51067 +47496 +44394 +9793 +35917 +41668 +51500 +21055 +23132 +75900 +35357 +56135 +22042 +25335 +23584 +7918 +52983 +72189 +20265 +29171 +58315 +14236 +78587 +71611 +79274 +2224 +70611 +72367 +19721 +46411 +22671 +10496 +41760 +28913 +61400 +19922 +53167 +74911 +72243 +50042 +17559 +35982 +48195 +43405 +78269 +52005 +58516 +14924 +14625 +31739 +60701 +54059 +55263 +73205 +61291 +37068 +74033 +75893 +78163 +12672 +6761 +2653 +34762 +56944 +34194 +34349 +75758 +63509 +71833 +24340 +21483 +28341 +80223 +56715 +9826 +66159 +56215 +4103 +27115 +72547 +17626 +11939 +79511 +73575 +17717 +55590 +33047 +71658 +67993 +50951 +6241 +14253 +48223 +16874 +23312 +75602 +78497 +72602 +53502 +14950 +11733 +73740 +68023 +30536 +40436 +8878 +59437 +12909 +46051 +8672 +20878 +35656 +57201 +59431 +49606 +59222 +74051 +53714 +62705 +63875 +40646 +69589 +19212 +18133 +61780 +26205 +32785 +20773 +21919 +49471 +43049 +71931 +69849 +59960 +75995 +1305 +23486 +35129 +9283 +34544 +56115 +76917 +62219 +58083 +74603 +16029 +40461 +50007 +38897 +2625 +37220 +59216 +57736 +75490 +4430 +40487 +49861 +46541 +49971 +34717 +50342 +54864 +25174 +34172 +79799 +5843 +32202 +3239 +2960 +70376 +57153 +61397 +5331 +32315 +77743 +27504 +9102 +25231 +57454 +34157 +13139 +6878 +71152 +2063 +26880 +25935 +63997 +77240 +55095 +61168 +39699 +51731 +35201 +25281 +64247 +69901 +76154 +45895 +10082 +48959 +48809 +63595 +28061 +26986 +10917 +61453 +10627 +48140 +79025 +16267 +34288 +13258 +18757 +30242 +18271 +20828 +34103 +4084 +76779 +80490 +8698 +26599 +11254 +31080 +17514 +72744 +26791 +57612 +74850 +60118 +13998 +34570 +8889 +59553 +78198 +19739 +25942 +19170 +52215 +54141 +34748 +22325 +1485 +34630 +59816 +33911 +52195 +637 +36826 +60231 +24940 +46945 +18802 +19169 +66016 +59014 +18208 +72979 +45367 +72768 +56380 +55713 +48373 +60961 +37189 +53082 +21149 +74796 +4463 +3882 +34518 +11489 +21983 +31043 +51269 +18961 +55490 +6346 +22303 +22378 +47861 +28490 +15083 +69281 +80344 +68048 +29577 +6633 +71815 +74820 +53528 +18147 +31993 +19895 +71927 +26567 +46587 +58477 +65010 +36720 +15627 +54052 +9745 +44891 +479 +44475 +46319 +1384 +27199 +68867 +7334 +59543 +23684 +77905 +48413 +4382 +57603 +4041 +69854 +8584 +50214 +54011 +59361 +40757 +38684 +25120 +21400 +71675 +53459 +26192 +58368 +32809 +59612 +29639 +24058 +55058 +2671 +45684 +27703 +34550 +14543 +39621 +37492 +23717 +70790 +47303 +27251 +75102 +11629 +68250 +24450 +26287 +3442 +45604 +23972 +29813 +8595 +41361 +11644 +23657 +2024 +43012 +61593 +67674 +41998 +45834 +18831 +46708 +27241 +68377 +16452 +75190 +3118 +30997 +27023 +71468 +47482 +66875 +71199 +42624 +43617 +15 +45920 +31592 +16645 +20447 +17007 +9029 +11783 +9960 +50319 +64173 +31396 +69823 +18247 +46040 +31723 +66929 +28092 +5521 +30886 +59187 +5095 +79489 +46642 +70155 +62227 +79784 +51991 +31820 +7860 +11202 +72072 +13309 +19177 +59322 +5188 +54643 +31308 +5373 +16117 +4554 +52421 +15977 +71337 +69562 +40395 +58623 +59499 +16512 +10170 +51120 +69811 +12910 +71437 +31901 +6120 +6399 +46948 +56121 +32233 +71377 +67635 +77984 +77629 +54811 +65753 +7681 +6295 +58798 +61564 +50698 +54133 +79533 +49814 +79669 +36106 +9947 +73598 +40164 +67735 +20875 +21122 +42790 +284 +11321 +66716 +55806 +47843 +65043 +43552 +56998 +63403 +67762 +31416 +29575 +19307 +46069 +41110 +73476 +67028 +49456 +16276 +49071 +75310 +23426 +38235 +45588 +69816 +22708 +15042 +17269 +4610 +22313 +49409 +73136 +80044 +73243 +58880 +71939 +59359 +67922 +53270 +30796 +52718 +54207 +63189 +5837 +27093 +77327 +32452 +5218 +24583 +70450 +60871 +57926 +58493 +58221 +55399 +70380 +39530 +66144 +16043 +45623 +65018 +28187 +3993 +44244 +13234 +16859 +74001 +72273 +79986 +19852 +56258 +9048 +78489 +6051 +62788 +80670 +68882 +55998 +65372 +69987 +78101 +1921 +60147 +15847 +54956 +68206 +8007 +53429 +10605 +42050 +47284 +79180 +57543 +67622 +17878 +62585 +15035 +48265 +46830 +1611 +42695 +68974 +9812 +59432 +2590 +9543 +45117 +77387 +15018 +76501 +77204 +72812 +35334 +55921 +18458 +17437 +79357 +62054 +6057 +79012 +76755 +2821 +15107 +65563 +56207 +70298 +32586 +65396 +71261 +50630 +31461 +22682 +23449 +62382 +64168 +28308 +71303 +17122 +56739 +29209 +49617 +30382 +56249 +75355 +58638 +52065 +70410 +71859 +26949 +49543 +42396 +41876 +9514 +68672 +2208 +26352 +31560 +28058 +57529 +25984 +45350 +38847 +40146 +42570 +70165 +18515 +18240 +46462 +68238 +2447 +43464 +873 +75655 +25928 +6808 +24148 +72955 +22093 +20776 +62746 +42841 +17370 +51334 +14343 +23349 +24286 +9270 +41523 +55863 +24045 +77375 +24902 +7570 +65654 +56396 +28216 +27000 +39227 +64951 +51074 +43484 +56618 +36987 +43157 +9496 +66647 +15969 +77147 +54750 +66204 +66762 +62920 +27990 +944 +42438 +63671 +57888 +28935 +60171 +9195 +74773 +54671 +24027 +34344 +51520 +70795 +58940 +53492 +44703 +65057 +33042 +74528 +71483 +33986 +16266 +74419 +73632 +5524 +64541 +57745 +74079 +5776 +5081 +39410 +7765 +60903 +39570 +64081 +65005 +9632 +11461 +5618 +21777 +25813 +10157 +19588 +62912 +42988 +21420 +5739 +17924 +15380 +40566 +22139 +49068 +71660 +15208 +4556 +47553 +29405 +68358 +9207 +56955 +67855 +59683 +32217 +50106 +22600 +2034 +20691 +67678 +29187 +10625 +77113 +8822 +24374 +12411 +4592 +67841 +72336 +15583 +16782 +47385 +79710 +19306 +34920 +40322 +77400 +359 +43450 +78490 +54885 +41803 +79977 +27307 +23737 +28439 +54499 +30577 +37052 +16682 +40588 +24142 +52749 +61090 +63554 +42370 +20693 +36702 +16385 +59774 +71403 +62673 +20113 +8244 +17618 +43723 +27619 +64439 +12426 +58781 +52899 +49302 +47645 +49735 +27144 +6017 +45060 +78596 +42335 +45672 +6052 +38264 +35508 +42773 +22907 +9374 +48381 +45656 +79699 +18189 +74092 +76692 +56516 +46703 +55064 +8487 +45019 +38484 +10622 +32949 +8013 +4567 +28130 +9084 +41966 +37418 +67830 +35759 +6391 +40438 +34498 +45398 +50405 +62192 +12755 +37348 +50449 +16804 +57125 +50287 +50560 +5730 +51907 +48754 +2193 +71767 +59511 +56860 +29945 +3463 +3526 +46896 +77740 +48876 +25347 +29929 +2431 +71200 +70139 +51761 +33931 +12955 +44819 +44539 +679 +21391 +45301 +50837 +48936 +30794 +45516 +70273 +31076 +29141 +21548 +16343 +64093 +472 +22227 +17777 +41997 +64962 +68095 +945 +10709 +31147 +10120 +6523 +74509 +64731 +10046 +74761 +32756 +58534 +39686 +17714 +79902 +70744 +16303 +15585 +64111 +67175 +68268 +68994 +585 +34909 +62684 +78193 +74340 +42150 +19626 +5670 +59255 +77340 +71942 +37934 +74736 +40258 +43648 +64694 +27445 +5243 +57100 +74253 +15482 +75292 +13563 +78457 +64501 +63721 +15216 +38982 +36452 +8213 +52388 +17233 +28021 +44129 +74985 +57059 +48747 +25526 +16344 +78316 +69948 +80315 +41723 +35087 +75775 +42692 +39268 +29467 +51635 +14311 +9691 +74558 +46578 +8540 +1015 +37607 +43717 +5697 +67552 +44786 +18625 +3837 +71512 +62315 +14094 +57820 +72150 +38223 +16549 +48399 +67087 +40935 +49911 +19500 +14399 +29904 +75675 +44756 +74089 +64846 +22200 +66738 +18303 +35800 +36531 +44566 +32643 +68950 +48629 +42885 +13067 +76445 +22064 +68481 +45891 +15915 +40741 +79919 +68032 +74442 +60487 +26215 +65780 +57458 +35273 +45804 +80436 +68530 +71605 +2688 +77365 +30458 +51438 +45341 +25043 +14511 +72526 +50260 +27097 +59501 +45703 +58913 +19165 +64995 +53779 +37996 +4080 +15177 +47564 +78472 +28501 +42909 +39990 +75364 +19526 +16138 +78980 +15973 +77031 +2355 +4436 +6308 +2043 +35542 +20076 +36793 +21457 +4733 +40873 +53417 +78912 +31456 +75931 +78511 +22781 +1770 +22828 +64735 +73946 +59730 +64334 +4673 +23297 +77859 +52800 +11378 +10488 +66873 +75879 +28018 +79466 +52734 +61049 +55008 +51756 +37073 +18676 +14736 +72867 +64937 +77023 +14959 +1241 +37356 +47475 +62612 +8064 +39607 +53676 +10748 +996 +58244 +50286 +34870 +68579 +53588 +2048 +3474 +20448 +15046 +61077 +17644 +74112 +44225 +40224 +29030 +42891 +49609 +79689 +33659 +72081 +50717 +23075 +17897 +42899 +79895 +5711 +35815 +45777 +64279 +61657 +42898 +40410 +15499 +54644 +6648 +61117 +16399 +54004 +5082 +45344 +38476 +75978 +30837 +3788 +68870 +48503 +24296 +8623 +60331 +50775 +31812 +20406 +14146 +62468 +58794 +61860 +72869 +14537 +7543 +42812 +22228 +5262 +7854 +5325 +1053 +8804 +67184 +55893 +11550 +58818 +6683 +56486 +36567 +47601 +64277 +54306 +30230 +28960 +74516 +34099 +34263 +15158 +77675 +57066 +57809 +759 +30300 +60744 +75793 +13298 +62286 +77634 +13116 +68969 +43437 +78894 +16460 +42345 +38025 +12687 +4723 +56551 +48921 +74239 +17929 +871 +11781 +40760 +5070 +36599 +75178 +7957 +71854 +66341 +60329 +71877 +30427 +74987 +71138 +21170 +15871 +45826 +49618 +15163 +32838 +78634 +79886 +79596 +1483 +12389 +56557 +839 +41832 +33920 +54408 +11742 +8189 +56603 +37755 +5340 +17330 +61707 +68144 +48397 +20213 +27299 +26537 +51645 +17938 +39334 +69699 +51163 +5574 +31381 +6991 +48419 +23591 +55239 +20502 +28892 +32232 +18158 +65104 +2794 +14851 +18126 +56669 +23016 +148 +77151 +22657 +8259 +23770 +46939 +19039 +19035 +44143 +42095 +42185 +19038 +4619 +59457 +47737 +47175 +356 +23731 +40147 +41165 +5301 +14893 +19033 +20336 +47269 +50094 +39641 +46878 +31194 +71259 +67953 +69568 +28071 +35130 +30164 +42074 +66727 +24380 +45416 +4223 +30278 +54653 +63011 +36143 +15377 +54106 +1574 +4934 +38043 +38435 +6837 +24800 +35767 +15096 +58001 +26748 +4980 +53850 +6517 +49031 +39715 +50216 +29741 +16020 +20009 +71517 +46827 +26931 +66336 +69774 +74057 +38366 +67916 +62516 +49100 +15519 +21468 +58882 +5364 +32487 +68799 +9720 +68960 +65110 +68419 +66570 +20626 +12632 +19161 +34465 +34631 +1268 +37044 +62274 +28816 +68556 +4210 +75042 +17298 +1567 +15255 +21808 +79039 +38304 +42797 +48534 +56395 +66166 +43916 +28946 +43142 +9056 +48252 +5636 +46982 +40766 +4290 +80587 +47558 +48099 +11843 +1909 +2175 +25022 +1920 +17089 +41861 +10491 +54936 +46496 +51461 +65574 +6407 +35397 +69265 +33591 +10075 +34864 +8205 +52346 +67933 +17692 +67282 +34345 +57365 +34366 +75435 +4819 +44263 +27550 +7392 +7256 +19432 +23408 +18275 +48162 +5240 +73534 +71501 +75786 +66017 +25194 +79848 +1647 +32510 +33149 +72711 +929 +51186 +72912 +5876 +57292 +7259 +47533 +25212 +79002 +67915 +3806 +5919 +46495 +68169 +41725 +41901 +20883 +15528 +56708 +76631 +8795 +50592 +61226 +3943 +69952 +57415 +13779 +66469 +17032 +50566 +78660 +46105 +41665 +43109 +21542 +18425 +47319 +17388 +21564 +9126 +31999 +74616 +67638 +9110 +29979 +16577 +47589 +60211 +80654 +14574 +30195 +35963 +49812 +17277 +76739 +69693 +30767 +42858 +9282 +3929 +80131 +53449 +42463 +58800 +53522 +60330 +39430 +72592 +77374 +58461 +51071 +35387 +26244 +71733 +56974 +50144 +73074 +47428 +18639 +29009 +34242 +5422 +6455 +50694 +55944 +4828 +2890 +20580 +5659 +49719 +46291 +14156 +2505 +67073 +51854 +31029 +70161 +16190 +79482 +32470 +79795 +56345 +79756 +21491 +21861 +75855 +25383 +62016 +48475 +62401 +60430 +46903 +6006 +20900 +1841 +69751 +51625 +63351 +56834 +1143 +15137 +47906 +38089 +69651 +10400 +26962 +49419 +40549 +44520 +27368 +44464 +17721 +53590 +15365 +36304 +69434 +35906 +26814 +62860 +13904 +64584 +75320 +40307 +72170 +46620 +69675 +66031 +22034 +39093 +62572 +11330 +62504 +12523 +70170 +26679 +26326 +63539 +55365 +43708 +4797 +17353 +44832 +1500 +47681 +42661 +45218 +71412 +22714 +40235 +51689 +42291 +15545 +60026 +38767 +20867 +29839 +23136 +35456 +40065 +10164 +13465 +14779 +37644 +72611 +68241 +44715 +1669 +61699 +27491 +6821 +17431 +24536 +16702 +49860 +48695 +15109 +50171 +31906 +8953 +2906 +61754 +23206 +52040 +28165 +26385 +10083 +49260 +60139 +40149 +7517 +9944 +62999 +60082 +24555 +11041 +46931 +80188 +6898 +39365 +30094 +9213 +80207 +69910 +42757 +44344 +43014 +41425 +54410 +40052 +36595 +60151 +33565 +37413 +20803 +28455 +42623 +54984 +79818 +11383 +60888 +80444 +61123 +59700 +10856 +26863 +45542 +52167 +57185 +4133 +151 +19188 +71885 +72164 +57238 +23130 +67127 +23047 +25441 +52204 +69464 +69622 +66690 +10530 +19978 +40408 +4488 +7206 +69768 +30209 +23409 +30297 +5443 +33366 +62809 +36101 +78989 +63730 +31060 +10788 +12634 +68987 +62543 +14628 +65118 +21916 +48511 +58258 +41295 +65483 +8045 +32874 +66578 +2689 +30495 +52099 +1629 +32089 +57811 +17351 +11025 +61600 +70009 +73480 +65911 +32370 +8370 +69591 +22993 +45713 +62164 +8712 +10611 +67034 +4950 +63772 +5010 +27622 +8571 +71322 +69738 +19501 +11355 +49616 +6832 +6022 +61970 +23738 +14086 +27129 +55331 +17885 +32041 +74245 +49550 +37385 +39098 +37 +48560 +9349 +38803 +38634 +26510 +3221 +35028 +57023 +73175 +76750 +6309 +37251 +69497 +42771 +66434 +29569 +34082 +56020 +27518 +51721 +69448 +713 +54064 +29609 +9418 +37576 +23948 +67414 +28813 +44835 +41615 +16726 +65472 +54646 +27279 +8562 +64398 +35808 +21643 +30482 +25035 +38750 +3516 +62983 +75575 +60474 +15764 +43840 +69403 +19946 +74636 +65740 +49697 +31663 +7883 +41048 +6872 +74238 +15929 +7637 +22734 +48411 +63678 +35395 +44732 +52797 +28363 +1375 +4014 +3461 +11128 +30824 +77022 +6811 +60435 +2893 +22117 +80250 +12516 +26014 +25952 +76102 +27413 +11036 +61536 +33892 +20584 +17380 +71676 +53043 +28815 +58308 +8978 +20682 +77933 +76298 +10172 +72878 +73880 +74685 +23509 +25987 +76613 +26613 +56428 +73355 +37894 +2509 +69385 +24477 +7706 +42051 +9070 +80593 +51090 +62994 +45706 +57611 +4018 +16647 +48976 +5930 +67754 +67030 +29593 +54233 +33541 +53225 +35386 +36242 +66109 +6401 +30088 +9262 +29229 +28235 +44681 +46055 +47306 +41804 +2531 +1046 +64560 +68681 +67739 +33362 +63111 +60416 +35165 +60431 +60842 +33962 +69914 +332 +37586 +33632 +56755 +34691 +10642 +75391 +39376 +6528 +58732 +27313 +44137 +42616 +3365 +68061 +60627 +75939 +8551 +23163 +46953 +26370 +75957 +58007 +9949 +10430 +37965 +71012 +28953 +48483 +51974 +66415 +71465 +74921 +76307 +11035 +3709 +49777 +43092 +25017 +69036 +75628 +2851 +7772 +67663 +24034 +26412 +51201 +80111 +37499 +70378 +16121 +30406 +36283 +78517 +10792 +68448 +57952 +72787 +4098 +59148 +14286 +10872 +52758 +10361 +17023 +65241 +72287 +2255 +20051 +55650 +79714 +1804 +12433 +65277 +80328 +8615 +15588 +1059 +32646 +8716 +24104 +34195 +43267 +50902 +15927 +50374 +38068 +13761 +64357 +60721 +36196 +40090 +68459 +14007 +26952 +34249 +19783 +43075 +24709 +49085 +1461 +14145 +24266 +4824 +12252 +16398 +27122 +20191 +21078 +55422 +68472 +33352 +28909 +77173 +59318 +67311 +1263 +59653 +28304 +41280 +5751 +55225 +11806 +12944 +6685 +62215 +41561 +61878 +50492 +67679 +44237 +54116 +80352 +71840 +39412 +80394 +48632 +59833 +50366 +69590 +58988 +6985 +18267 +17842 +57901 +30327 +76239 +80371 +54708 +73561 +50201 +49644 +49385 +40690 +27577 +7367 +63242 +50420 +10900 +19193 +51967 +68417 +44069 +55980 +25912 +26752 +22807 +26419 +55480 +43778 +45026 +71811 +52848 +77619 +50710 +20908 +59696 +52366 +66242 +2075 +76369 +55723 +72699 +29493 +51301 +11767 +33676 +25219 +60459 +9565 +55508 +16179 +10949 +76510 +71222 +75830 +22161 +57509 +59231 +5607 +22110 +67226 +68100 +4710 +45476 +29572 +80136 +30114 +39047 +39413 +60661 +44146 +2607 +44533 +35299 +79136 +28625 +13469 +54065 +21142 +5768 +20484 +69063 +65042 +61387 +79639 +28803 +38577 +57137 +56024 +68739 +16879 +23140 +64154 +9772 +66994 +74468 +4034 +910 +57890 +9295 +26369 +7288 +9588 +54524 +11970 +39733 +5752 +56766 +13285 +58685 +43543 +27979 +14667 +22216 +17508 +12434 +11809 +7193 +66370 +31876 +59558 +11534 +42216 +72355 +60615 +23485 +51709 +48294 +28035 +37483 +71599 +79240 +34307 +52463 +76586 +34143 +14297 +803 +44483 +31244 +22889 +61375 +58778 +28139 +40308 +76998 +79190 +33517 +31996 +13845 +71017 +24484 +76594 +20311 +2507 +71985 +23531 +20224 +68450 +69635 +34106 +24010 +18054 +73895 +76966 +42363 +48843 +3122 +62650 +35797 +368 +58736 +55783 +1644 +26753 +44586 +37960 +23588 +56732 +44839 +61537 +71738 +18675 +45543 +16817 +5794 +19079 +26224 +76125 +13510 +52731 +37776 +60122 +51477 +71737 +7970 +31316 +59716 +9942 +46383 +60012 +982 +63196 +12461 +59193 +68938 +39765 +55283 +56632 +58607 +21045 +8436 +70061 +22917 +50069 +48744 +72830 +53061 +24098 +63441 +62203 +61880 +59528 +29837 +1510 +77323 +22645 +74607 +21608 +52159 +73226 +69950 +77555 +37001 +38677 +8471 +4440 +58969 +78152 +31350 +20420 +39243 +77837 +43846 +16811 +57184 +28075 +64650 +6400 +36934 +18701 +70372 +23529 +75594 +80420 +48387 +56055 +17434 +33416 +51601 +77891 +61320 +65727 +14337 +38828 +78325 +68962 +15242 +13295 +4052 +40988 +78180 +66513 +117 +432 +75722 +55477 +2543 +48121 +46391 +55254 +14958 +15866 +26016 +32348 +9476 +76549 +31453 +7078 +18273 +66506 +35306 +71175 +66433 +59005 +35303 +46268 +77421 +29858 +56650 +23927 +68893 +36073 +78968 +33811 +15275 +80634 +33524 +47410 +11973 +13800 +62214 +66218 +59873 +45128 +79251 +34338 +44772 +22166 +71688 +8181 +72697 +49428 +61746 +11769 +18777 +1472 +72223 +60962 +64869 +34584 +47824 +55945 +55717 +67194 +4457 +50687 +52484 +57983 +25442 +41588 +22531 +9702 +75852 +47128 +59846 +61084 +4681 +47841 +76874 +1176 +34357 +46975 +66160 +56738 +33254 +71951 +62510 +1013 +49766 +69655 +10122 +12696 +47754 +61210 +1627 +70697 +78000 +80040 +55443 +64423 +79752 +7004 +34377 +4582 +50884 +18910 +26856 +72875 +69814 +36197 +37245 +47688 +7466 +36578 +74872 +67938 +14065 +8658 +70015 +27933 +79876 +12416 +59122 +5855 +60384 +3579 +70800 +21803 +32676 +21096 +48291 +27560 +55578 +12633 +3958 +67694 +12120 +65768 +12008 +80024 +40765 +23500 +1572 +52551 +23328 +63313 +16114 +848 +60038 +35847 +2933 +46049 +32507 +72423 +76246 +8677 +19950 +74041 +61866 +44642 +79309 +14374 +34708 +55126 +79283 +38185 +50685 +23143 +78121 +18092 +49406 +34803 +30375 +62335 +40455 +8012 +39118 +69638 +55458 +1463 +72371 +12006 +64685 +22785 +71817 +24588 +33490 +36372 +72200 +20294 +925 +77363 +55044 +15351 +19842 +18550 +77090 +7427 +9060 +47980 +53379 +38504 +80650 +54021 +72810 +70523 +12394 +35816 +29548 +29004 +34541 +6724 +30632 +66441 +5727 +15727 +74916 +27272 +37390 +57126 +62998 +41131 +12468 +12499 +4638 +35837 +46744 +5025 +77500 +45120 +65009 +9705 +58853 +25178 +71956 +24188 +18770 +42851 +41150 +13327 +12842 +26870 +36936 +18632 +16708 +187 +66617 +10904 +18966 +22565 +70914 +31200 +75202 +72771 +7268 +34910 +38356 +12858 +77161 +24356 +76817 +57190 +42040 +35701 +79810 +79265 +3367 +30309 +2733 +6621 +38729 +5019 +48125 +47332 +30876 +20871 +78840 +5604 +34272 +54132 +48640 +12950 +62496 +78572 +75715 +78884 +11348 +44785 +6199 +65941 +42986 +52079 +53308 +44341 +9107 +68649 +21257 +1739 +61136 +51059 +8230 +3172 +18768 +32055 +58135 +33884 +68271 +25698 +9760 +56031 +22527 +8108 +3977 +63302 +52451 +21095 +52347 +66495 +61162 +41957 +9286 +27851 +55243 +29749 +24523 +36347 +1368 +14419 +15589 +52459 +6020 +33845 +13072 +7771 +76223 +48547 +69650 +78650 +13868 +67862 +77409 +62682 +60064 +43110 +54555 +56729 +28704 +825 +50733 +60731 +12413 +17191 +56927 +41007 +24885 +60573 +42910 +15272 +22056 +52704 +16129 +8242 +3725 +80514 +74170 +60266 +51313 +53466 +3223 +51423 +64060 +72982 +3215 +37020 +62231 +72958 +34300 +72254 +27428 +72382 +63239 +8483 +38858 +30236 +77843 +61855 +38937 +47375 +36679 +4815 +33947 +35765 +44887 +50558 +79910 +69990 +17543 +64959 +55838 +78413 +20282 +72239 +19484 +55384 +76977 +57076 +77331 +21444 +35558 +30212 +77392 +71874 +40680 +41452 +50789 +7124 +16499 +6961 +34429 +22195 +12010 +69282 +18654 +41536 +14527 +38618 +14962 +17557 +73262 +37624 +27383 +25154 +4355 +12496 +46843 +62178 +51347 +46564 +56306 +42949 +42435 +47169 +9481 +79732 +56614 +21503 +51180 +5492 +46301 +50743 +64457 +60874 +41457 +6421 +67913 +21688 +71716 +16666 +68886 +50953 +76462 +24066 +27319 +6129 +48594 +70853 +63106 +70163 +58931 +47766 +57315 +31571 +49985 +17625 +32846 +33007 +18166 +68254 +54552 +65434 +1294 +80629 +57762 +41379 +52328 +44059 +24478 +13861 +39492 +20779 +14124 +13105 +57321 +76533 +1952 +30751 +22989 +72327 +72517 +54210 +70022 +80400 +77209 +45769 +75211 +42326 +21753 +7209 +65191 +20869 +6326 +60586 +40320 +22805 +34477 +14752 +3695 +79875 +44434 +26710 +43800 +11929 +55491 +6269 +32686 +1220 +70225 +13222 +4996 +57086 +40594 +75013 +34289 +4207 +80225 +75454 +57095 +16517 +29920 +16773 +16469 +74111 +59950 +9260 +48785 +53926 +200 +25072 +51085 +2823 +57760 +54480 +39730 +55510 +76541 +29645 +49695 +39929 +6130 +41640 +63736 +4643 +25371 +35089 +44791 +47233 +72015 +45333 +29568 +63123 +62982 +68670 +80099 +31074 +35143 +17586 +24020 +74831 +42103 +34033 +65495 +72424 +54240 +13699 +63075 +44259 +30996 +17647 +79420 +18679 +42056 +66714 +64300 +67399 +589 +53783 +16693 +36064 +27786 +51684 +16972 +12582 +17762 +23083 +28159 +70862 +70722 +43821 +32990 +51662 +39305 +69800 +27194 +28060 +26668 +29471 +74352 +15809 +66395 +70459 +60020 +52996 +53556 +12213 +43701 +49248 +5911 +12816 +40388 +59583 +33972 +5971 +64605 +13392 +42144 +59129 +74330 +37532 +40694 +17600 +44266 +78875 +22263 +34111 +61853 +53967 +3915 +28701 +8685 +45399 +64623 +65115 +58641 +13594 +23968 +72813 +49205 +779 +44239 +25747 +39610 +16002 +58071 +31491 +53800 +39327 +78877 +79495 +3730 +58039 +54660 +20699 +41461 +595 +52907 +39856 +34901 +57446 +33673 +32525 +43756 +23799 +80719 +38752 +78501 +27162 +72593 +73493 +77622 +73116 +2889 +73207 +57861 +22863 +64521 +61131 +74716 +77257 +68198 +68633 +33696 +46476 +9328 +68722 +76482 +46184 +24630 +65656 +5413 +54061 +65174 +11200 +24435 +43861 +43885 +8732 +23049 +44596 +31662 +31703 +57641 +28137 +21198 +18461 +72007 +42092 +70758 +55886 +41183 +64089 +22001 +13979 +10289 +39335 +74350 +19763 +48911 +39582 +63271 +18565 +12731 +71941 +7844 +18455 +35213 +76330 +75774 +52271 +67651 +70667 +78460 +39087 +19996 +61360 +34141 +9131 +49257 +6556 +1260 +6929 +19359 +31885 +25628 +74146 +10556 +20932 +51894 +2780 +21072 +4285 +78636 +12768 +1178 +51148 +39086 +36391 +77640 +45534 +31916 +23659 +1024 +37789 +73506 +42679 +5797 +1184 +54828 +46485 +15665 +89 +69229 +59412 +16063 +50087 +68874 +72893 +14169 +37266 +37074 +48862 +2004 +72365 +44597 +59317 +321 +26968 +56010 +19016 +66700 +38874 +78618 +75228 +22289 +55902 +73009 +3888 +62146 +61692 +26434 +34817 +65195 +895 +14969 +44407 +9626 +68990 +28419 +67636 +52994 +69343 +40314 +34034 +70292 +38656 +17188 +20731 +27010 +9517 +50572 +32750 +27573 +33759 +7725 +23208 +39694 +66210 +10252 +53257 +66878 +55948 +79839 +690 +41347 +22933 +6922 +68688 +47905 +27172 +74031 +71346 +45190 +55435 +64328 +49078 +30670 +61009 +8542 +10132 +22142 +15766 +72096 +11268 +14771 +27646 +80060 +55669 +51140 +76841 +54903 +14718 +76545 +60999 +79841 +10416 +6531 +14110 +43512 +30371 +4057 +23691 +54727 +35773 +11043 +11336 +72639 +42867 +29873 +11639 +55814 +24811 +78521 +50821 +25465 +78695 +7156 +78795 +53378 +76581 +7739 +63887 +70020 +50357 +45054 +39351 +78438 +75336 +36295 +26427 +14915 +46218 +53885 +78536 +63580 +61830 +22097 +22984 +2754 +61775 +6183 +46083 +62864 +17103 +10296 +61388 +45685 +12930 +57602 +4042 +80517 +20528 +43928 +21957 +52241 +57554 +36503 +6744 +3160 +16393 +31661 +10168 +80259 +23960 +73137 +15085 +13400 +64052 +31772 +71966 +60963 +10728 +61381 +49288 +75477 +23828 +79970 +21780 +18612 +71381 +26843 +18924 +23924 +41437 +45241 +29135 +64242 +24022 +63961 +29955 +23788 +70593 +18925 +41709 +7608 +60784 +70479 +53258 +39278 +55495 +76844 +16570 +63658 +59900 +38444 +21886 +33978 +22611 +39332 +54241 +78831 +45546 +28192 +13247 +20526 +30291 +6222 +58059 +24052 +3124 +71251 +4141 +22125 +14622 +59733 +8191 +13236 +80607 +35486 +62343 +52808 +64161 +11226 +14496 +80497 +50936 +3127 +56382 +32797 +39661 +42189 +73616 +68075 +73227 +40559 +46912 +70774 +54483 +8803 +55549 +33376 +64474 +61109 +44478 +32987 +76990 +66840 +38870 +38369 +47712 +79082 +62800 +28081 +23232 +15240 +25645 +31025 +24364 +35062 +16737 +34823 +77345 +22824 +23893 +24170 +76010 +30001 +65565 +26671 +33930 +1857 +38177 +4347 +66219 +79892 +71727 +19590 +14282 +27928 +22308 +27800 +2212 +71847 +71430 +564 +34284 +1617 +60439 +73334 +27480 +19524 +3607 +61581 +61244 +74106 +31276 +456 +71090 +35246 +5820 +62334 +49446 +60919 +70752 +16756 +36501 +74763 +50816 +11065 +41277 +48031 +56447 +37294 +41270 +58189 +54545 +17955 +74704 +9546 +34924 +47035 +49854 +58897 +78518 +67756 +19436 +23422 +18558 +76926 +61829 +66949 +63690 +70470 +43566 +27892 +33023 +28458 +14101 +10470 +10566 +28567 +53189 +1905 +16604 +13586 +25243 +70375 +78267 +73096 +76935 +43513 +8404 +24054 +49660 +41965 +18193 +33029 +72219 +70095 +28105 +44431 +40381 +80100 +7734 +39073 +44542 +63107 +13347 +9090 +19855 +79253 +40918 +47630 +58690 +33644 +67461 +74844 +23345 +36248 +41824 +79428 +13908 +27373 +36594 +11821 +15920 +16748 +49233 +49783 +18840 +80784 +48987 +32374 +38029 +67758 +25759 +28667 +32692 +23368 +65157 +78723 +9956 +38416 +70027 +80713 +20281 +54150 +67498 +79010 +2154 +13281 +36736 +11399 +7886 +19760 +73538 +16568 +15453 +42304 +72050 +75639 +69224 +21356 +19503 +68185 +32043 +26084 +58625 +36628 +34040 +45690 +17426 +64524 +4021 +7729 +25254 +7085 +77443 +24440 +66793 +73907 +33441 +22608 +6883 +29743 +38880 +981 +38756 +70128 +49679 +61505 +610 +65826 +15516 +67802 +49510 +25802 +34109 +69530 +79553 +13331 +8115 +77590 +52152 +74002 +77381 +11705 +1518 +5720 +11137 +43600 +6654 +34650 +16678 +59914 +54396 +11863 +7041 +33989 +69359 +59512 +51669 +36810 +58087 +24790 +18246 +64249 +65855 +34271 +66347 +31817 +77030 +13496 +64884 +34182 +17422 +72059 +22271 +36172 +27762 +57633 +77456 +53150 +30171 +64816 +22419 +79692 +2052 +27986 +4128 +38841 +7261 +54989 +21687 +55846 +56158 +77206 +1609 +60098 +29365 +78886 +5341 +20738 +77586 +58261 +58550 +25506 +80678 +61174 +2157 +18551 +11650 +35081 +72207 +48755 +10348 +2085 +13406 +37671 +12727 +33796 +5215 +79814 +14276 +53263 +71913 +50338 +5901 +72870 +17817 +5564 +71445 +58012 +15959 +51632 +63229 +48792 +41750 +19583 +30279 +71366 +59479 +66421 +53888 +60212 +11022 +31209 +37182 +20599 +61016 +14010 +14377 +43608 +57872 +59176 +65087 +13664 +43955 +34795 +75997 +63933 +44388 +7889 +22259 +53024 +40063 +11789 +58206 +39135 +31390 +73312 +47626 +30602 +8435 +2185 +36861 +56995 +11617 +20024 +49984 +43651 +12215 +48606 +53797 +38135 +49602 +10180 +40089 +76589 +42802 +67198 +50855 +47974 +38097 +6125 +5421 +17738 +10101 +17919 +4287 +75835 +37977 +32271 +48529 +36677 +62017 +39402 +3394 +69696 +28356 +50462 +1988 +74227 +57279 +60217 +28119 +44731 +28037 +60511 +46891 +78183 +7263 +11145 +14153 +12820 +63556 +35689 +62935 +27493 +55932 +58432 +58034 +5146 +42893 +3176 +67405 +76668 +48308 +62701 +57549 +16220 +58472 +79353 +79989 +79903 +10744 +15100 +4949 +29896 +70458 +29923 +50048 +62166 +50385 +379 +71137 +46390 +31630 +22764 +1784 +1477 +68777 +28780 +48732 +35943 +73094 +18285 +64757 +27826 +57113 +76435 +80383 +78972 +34264 +24782 +72599 +38321 +15563 +38128 +12110 +10088 +28373 +32335 +26255 +36264 +63955 +52861 +2060 +40123 +44793 +1479 +65337 +23394 +66935 +44349 +69999 +40066 +3352 +8078 +67041 +3132 +11623 +21353 +10448 +24582 +24773 +39170 +6824 +41326 +5872 +31347 +19844 +79831 +11104 +22737 +58137 +42504 +46142 +56226 +16333 +21245 +78402 +29850 +63212 +6460 +51164 +43472 +67301 +47508 +28607 +61098 +20286 +54113 +8981 +45873 +7817 +68133 +4531 +36801 +34578 +12776 +10292 +71140 +72308 +63365 +2731 +2418 +45767 +22113 +33146 +36007 +49619 +3944 +8183 +45484 +73420 +52017 +46646 +65917 +79950 +74856 +58225 +1941 +48305 +51634 +33025 +17073 +75748 +28480 +47426 +39978 +42110 +18613 +73051 +3452 +35301 +34768 +34352 +26697 +67549 +50047 +3891 +4804 +11941 +28027 +11027 +65452 +1295 +4820 +1748 +77770 +49926 +12453 +62265 +62966 +55444 +51221 +28850 +16323 +56390 +18598 +28152 +59527 +54309 +57530 +71677 +33690 +22906 +9932 +42012 +25232 +21968 +30961 +55036 +78822 +61056 +43089 +31110 +68849 +73933 +50808 +60392 +39663 +11920 +21817 +10523 +2644 +3568 +22508 +20958 +52927 +57758 +72675 +19401 +26872 +4674 +35257 +33499 +42546 +24326 +24775 +36648 +41572 +18767 +80252 +55235 +72390 +68214 +42939 +7907 +44572 +21881 +19294 +32969 +13477 +46768 +18602 +745 +1307 +3149 +65677 +36545 +59454 +22249 +4192 +73983 +39393 +76877 +1729 +49982 +48091 +56782 +46451 +75544 +73305 +72345 +32272 +7162 +10708 +75869 +20189 +63073 +79573 +46297 +57081 +67511 +2298 +33687 +49012 +119 +61643 +3649 +71706 +42365 +64626 +857 +71568 +39054 +9007 +48863 +64518 +58576 +14484 +59225 +45326 +69363 +14738 +1922 +11990 +19476 +79243 +31129 +21436 +78343 +5677 +28906 +37881 +59544 +58657 +53470 +19309 +53047 +43978 +43166 +30868 +12235 +12848 +42444 +22544 +47897 +13278 +28595 +33035 +77765 +76494 +50580 +73767 +73206 +17512 +24587 +35133 +1172 +9896 +35926 +49042 +78335 +46653 +65435 +6139 +15501 +12360 +74751 +49267 +19355 +24747 +41279 +63583 +48691 +34693 +22687 +22489 +36153 +32636 +46059 +15349 +31566 +40099 +54236 +3084 +74266 +53825 +39307 +10544 +46985 +24385 +11786 +59550 +8548 +56786 +54018 +18527 +78908 +17511 +77950 +76770 +35564 +36749 +26405 +38665 +17245 +23298 +73215 +46546 +18392 +21554 +20163 +53112 +45557 +54502 +20392 +37571 +9244 +47732 +26142 +43879 +14988 +29021 +39191 +38609 +76629 +37494 +45072 +14223 +28099 +19089 +3374 +56173 +65642 +49773 +30883 +18005 +52003 +631 +5150 +49027 +32575 +17471 +76519 +65905 +66264 +76741 +1506 +46664 +47898 +75506 +63793 +71666 +14834 +20509 +26950 +18276 +2548 +70803 +32865 +4890 +32295 +53154 +67077 +62032 +31309 +65068 +16287 +22033 +35175 +42070 +39952 +5471 +51944 +13335 +12052 +60606 +72396 +63846 +36152 +10019 +43830 +15136 +12077 +13947 +71964 +25227 +74334 +18215 +63463 +34540 +20229 +11600 +18763 +64808 +1438 +16367 +29040 +53127 +9189 +77020 +31896 +38796 +41146 +1380 +44 +51953 +10338 +73039 +59921 +45274 +17979 +28689 +19541 +48488 +28549 +11772 +36828 +65492 +23210 +75800 +53172 +21031 +14387 +4260 +10015 +28154 +63969 +23917 +31647 +3001 +40144 +28937 +17439 +55052 +65906 +55719 +4880 +80125 +67925 +80304 +44442 +12218 +72859 +56714 +15961 +23123 +75117 +17805 +80047 +26129 +50799 +787 +13209 +60338 +67617 +37399 +8362 +60537 +48295 +49005 +52572 +38455 +9157 +7744 +58383 +12635 +27937 +5277 +44695 +77661 +66087 +23174 +53044 +8345 +27790 +32924 +39166 +14000 +46910 +36862 +15785 +68334 +42928 +47940 +67491 +17180 +15464 +41727 +25369 +50151 +11983 +66720 +38201 +8053 +25725 +52134 +62306 +64898 +16617 +67221 +9353 +35988 +76256 +57541 +24633 +76890 +3245 +34198 +83 +30056 +14551 +7168 +39519 +56604 +22903 +78783 +18110 +14557 +2916 +46030 +35182 +29722 +52644 +69341 +70513 +34423 +22846 +53639 +39844 +13746 +35069 +17892 +10418 +38471 +54516 +816 +50852 +8614 +47447 +26389 +38984 +15815 +12583 +12116 +41042 +2723 +40685 +29792 +10973 +63033 +55042 +69647 +15290 +78483 +78921 +68577 +54421 +8476 +78368 +65725 +3552 +15333 +52219 +4330 +75130 +43482 +49784 +63164 +77414 +10294 +65260 +70975 +39869 +57413 +63740 +41192 +1538 +8241 +13981 +149 +54734 +42646 +25415 +9105 +19571 +12206 +42152 +60990 +32853 +6005 +5266 +57003 +22416 +75964 +44674 +71067 +47831 +64798 +57490 +7800 +78081 +74070 +64151 +76124 +29275 +67485 +40672 +57512 +30734 +40924 +60578 +14032 +29768 +23393 +49073 +74801 +73955 +916 +49351 +74746 +73963 +30394 +3643 +55832 +19689 +16153 +56386 +45485 +32825 +65242 +50794 +40199 +7271 +63014 +31842 +10495 +43843 +67102 +37155 +47883 +43173 +68955 +30832 +54308 +51767 +63777 +7956 +75470 +74634 +2979 +52493 +50138 +49299 +29530 +55766 +40311 +57196 +64682 +72234 +75153 +15273 +61752 +75238 +50891 +66432 +37900 +57889 +20220 +33378 +1943 +24501 +77100 +76128 +5763 +54423 +18672 +64573 +42696 +35627 +42301 +7355 +10005 +4945 +73551 +55672 +25481 +62124 +63858 +2616 +63665 +32143 +17377 +76776 +44439 +44501 +43077 +20545 +78714 +15145 +22209 +19988 +68465 +53371 +43658 +7192 +64327 +78917 +54556 +62927 +26367 +3680 +50498 +13519 +47394 +51144 +65218 +30717 +40037 +71460 +40658 +3897 +38329 +35739 +68224 +42804 +870 +13475 +58569 +23228 +30777 +57994 +36942 +37081 +44940 +44285 +50014 +43693 +65469 +65086 +25939 +77973 +58997 +33244 +3003 +48426 +63138 +54425 +65649 +167 +3141 +11131 +80660 +59874 +78033 +10961 +62796 +16111 +34653 +42048 +78791 +8416 +2069 +32345 +38688 +26492 +79067 +78675 +61925 +61635 +46721 +73555 +14512 +60725 +34449 +28705 +61697 +73201 +5744 +6861 +10247 +60385 +77227 +7388 +49757 +7950 +11965 +32514 +16169 +3120 +58536 +54364 +22345 +53218 +70816 +25074 +63959 +4483 +30697 +62521 +71759 +55177 +24541 +45227 +41180 +35083 +19546 +1525 +2978 +2246 +67027 +19367 +16723 +80636 +12904 +50116 +63495 +33174 +11816 +61805 +12448 +71679 +32129 +20461 +67652 +75974 +19951 +49381 +65188 +17341 +60581 +47787 +12763 +43468 +9904 +5979 +22488 +8125 +57000 +79188 +6432 +56951 +34981 +12424 +46596 +31510 +60184 +24819 +31770 +45385 +34671 +68165 +45741 +2294 +47768 +2917 +13313 +12818 +13398 +5965 +2001 +52598 +22376 +26175 +63150 +8485 +2610 +5576 +46791 +43021 +71729 +69459 +43394 +20765 +39441 +49349 +74686 +29536 +44153 +16677 +8034 +25053 +38582 +65264 +60635 +10028 +79488 +33623 +22572 +26731 +27930 +7294 +74240 +26311 +45988 +79399 +14610 +59320 +73103 +16789 +71709 +63377 +80689 +59621 +59877 +29215 +58126 +34165 +48450 +70001 +49405 +26914 +32599 +72636 +6882 +20592 +35408 +16379 +50585 +78004 +74355 +56532 +9100 +6790 +11113 +20151 +47804 +68525 +32081 +77841 +74513 +30962 +36294 +64077 +6838 +54921 +9924 +19020 +33872 +43641 +7389 +57798 +24552 +47887 +2107 +20004 +17558 +70767 +18832 +50169 +48607 +41827 +8742 +45217 +19272 +50833 +44073 +17216 +1332 +57972 +53254 +8446 +30130 +72762 +76380 +73769 +63295 +30704 +32115 +42423 +52061 +75822 +37209 +22436 +66548 +58412 +57564 +43565 +72311 +69533 +37437 +44290 +27464 +48681 +76192 +25016 +49084 +26804 +19830 +16280 +66239 +58893 +71144 +40770 +60365 +77671 +16798 +71457 +79244 +2101 +16914 +38754 +59991 +19606 +12007 +57869 +50858 +12224 +24499 +73457 +48447 +53642 +73072 +52845 +10518 +74633 +20379 +32357 +61270 +33389 +18955 +26386 +72806 +64783 +45630 +36009 +24342 +447 +44616 +16479 +55528 +46207 +13417 +1674 +69575 +28332 +41330 +22062 +25162 +9980 +72332 +56789 +23543 +65428 +46448 +15250 +2007 +15546 +45737 +51813 +16868 +60729 +13716 +20195 +51329 +40937 +50480 +44657 +51878 +22432 +10452 +72384 +29353 +20720 +25356 +34148 +72851 +853 +48568 +59204 +31330 +13514 +21097 +23685 +21787 +22659 +18390 +60333 +3453 +26410 +71621 +36969 +52163 +14038 +58533 +78775 +12671 +69357 +72965 +43134 +23926 +7279 +11034 +27359 +3973 +8046 +8665 +51035 +22540 +67579 +3834 +26341 +34879 +40360 +44396 +77314 +54935 +54162 +67912 +79464 +36399 +70355 +16881 +52799 +73755 +412 +15019 +52849 +11102 +64895 +66671 +44510 +27538 +61138 +6617 +14908 +27528 +78955 +39336 +5154 +26942 +7153 +39070 +36039 +29538 +60875 +73557 +72575 +14328 +37082 +44183 +20387 +18366 +60650 +5183 +15852 +56256 +16370 +12384 +22869 +57391 +43798 +37302 +51362 +42164 +74384 +53353 +3404 +71424 +6507 +3258 +56248 +6655 +3567 +27634 +52108 +56510 +47922 +57205 +64321 +54757 +60796 +27363 +16150 +29220 +19302 +23070 +4114 +35560 +26249 +25478 +21100 +47775 +66862 +78123 +25934 +30203 +77687 +79865 +69781 +41698 +16981 +13137 +60418 +6751 +18493 +80409 +49104 +45376 +71608 +22398 +9914 +47772 +52066 +33597 +46174 +69207 +68603 +68515 +74262 +53622 +12617 +39060 +62383 +71898 +41181 +19793 +77698 +51773 +70781 +54886 +15577 +9874 +70422 +24962 +57173 +9327 +69593 +9030 +23844 +28990 +65652 +41984 +66186 +71235 +23350 +72564 +10561 +48254 +45689 +79292 +14020 +24291 +34397 +1199 +44922 +31311 +79164 +47248 +10208 +31291 +5770 +25111 +2848 +40481 +60698 +59327 +56869 +5605 +67523 +45866 +4677 +65781 +79531 +65053 +34843 +16151 +29296 +70232 +71495 +30584 +30314 +10519 +74152 +64099 +10672 +1382 +58342 +8627 +24798 +49037 +46111 +52829 +50046 +71696 +31075 +62783 +17969 +32426 +18490 +63362 +911 +10624 +70711 +26517 +43122 +26223 +10696 +8254 +65365 +69560 +30350 +48249 +58379 +31120 +72017 +60480 +50024 +56071 +40084 +16339 +71344 +8769 +27697 +71384 +72973 +34553 +51254 +65517 +73159 +75877 +74 +70632 +51613 +74314 +19364 +11365 +16772 +79234 +55864 +5653 +77379 +60066 +34700 +5141 +25122 +78150 +57838 +11052 +27588 +37330 +433 +19576 +80159 +55946 +12913 +887 +40973 +1533 +78309 +61393 +68333 +8502 +53289 +31035 +49711 +55715 +75273 +518 +47429 +66147 +63769 +73893 +3297 +53817 +48364 +47581 +17932 +51249 +73054 +30925 +63141 +59838 +78771 +49927 +5269 +4470 +27822 +29599 +66751 +17970 +57247 +37161 +5160 +51228 +54706 +61022 +47523 +43934 +54099 +18921 +70726 +78725 +18200 +18941 +71073 +53461 +24081 +68512 +10227 +65239 +45365 +22341 +6511 +80724 +20874 +46283 +25158 +65788 +30542 +32155 +75700 +5686 +20198 +16919 +71071 +36592 +25020 +71547 +72794 +15237 +46183 +68216 +43386 +50215 +78903 +59169 +48748 +59598 +80680 +64435 +43182 +79289 +41179 +71254 +50030 +22401 +47748 +40282 +872 +51262 +53395 +20722 +13228 +73463 +69809 +2293 +56581 +75353 +31572 +64017 +72546 +3696 +51096 +79223 +5309 +39302 +53606 +39383 +55082 +37115 +27847 +4626 +17808 +21034 +21422 +14111 +62419 +15371 +19742 +24640 +65561 +26103 +37389 +79047 +2924 +61931 +29562 +33763 +70693 +23908 +71770 +80041 +55374 +43056 +58234 +46190 +54225 +37828 +75767 +55019 +22212 +53893 +58431 +45509 +23246 +39169 +75128 +54824 +19551 +21125 +65552 +29331 +68544 +70467 +11516 +33915 +57687 +65230 +66746 +49039 +2899 +17410 +7079 +61442 +14403 +35979 +25027 +49454 +8187 +22105 +14139 +54962 +40759 +72435 +62057 +2194 +38308 +35553 +71612 +42806 +51839 +11828 +51740 +63256 +41811 +342 +54873 +2921 +49585 +1324 +6756 +31748 +24017 +74209 +2838 +67220 +21438 +25234 +18807 +22220 +31334 +60462 +23437 +43900 +46276 +28563 +26713 +14640 +54908 +9268 +4153 +59091 +16806 +50235 +15750 +1226 +28904 +58723 +3877 +34992 +78915 +44480 +47405 +34163 +12630 +62167 +41376 +49751 +58985 +78644 +53618 +65518 +79513 +5850 +58170 +71376 +71027 +6725 +30091 +75381 +63906 +55158 +49817 +70391 +72363 +76544 +69934 +44897 +5020 +58233 +16357 +25361 +8985 +4978 +56037 +35766 +33782 +37732 +10722 +4461 +4360 +27108 +75560 +60548 +47759 +64676 +49364 +16453 +62759 +64882 +16530 +75005 +53532 +9677 +44058 +20539 +35531 +73037 +16576 +78238 +1345 +38437 +76590 +4222 +54354 +40632 +47828 +28926 +51419 +17858 +58060 +53633 +19263 +78624 +69366 +62009 +75582 +35312 +13085 +74310 +67045 +11665 +60764 +14594 +36140 +24858 +17419 +22800 +32110 +61510 +6955 +41302 +22239 +33865 +57036 +58327 +68081 +4547 +72545 +67522 +27725 +31181 +36988 +35540 +51239 +60472 +3097 +74199 +7108 +16769 +16950 +8424 +76712 +70737 +54050 +77543 +7825 +53004 +34236 +27287 +58610 +8860 +29668 +68668 +17957 +67896 +67274 +18660 +14675 +28828 +76080 +53738 +69026 +54165 +35668 +18278 +38108 +46526 +60232 +62019 +80265 +22986 +68484 +25410 +17043 +24280 +14820 +54161 +52156 +25855 +49307 +71120 +27558 +56925 +79031 +32623 +34827 +23962 +54945 +50878 +19199 +51106 +69097 +32259 +51643 +257 +53436 +76106 +24887 +44598 +58160 +36284 +35568 +57132 +60639 +3560 +21993 +49275 +47549 +76521 +16429 +75363 +73097 +24429 +17406 +45969 +74596 +70398 +30833 +74675 +72385 +56866 +61424 +28832 +10038 +76008 +22399 +72301 +54581 +66845 +3845 +66227 +22484 +2579 +14919 +68716 +27662 +37345 +13852 +1505 +1590 +16974 +57385 +69689 +21066 +40501 +19490 +32506 +60034 +44789 +26666 +69794 +53864 +60049 +39368 +31162 +64625 +34564 +18357 +78071 +52119 +37807 +71515 +70154 +57637 +20862 +4297 +27624 +51458 +22539 +74222 +74153 +31881 +47638 +46130 +75044 +14545 +67957 +64749 +75545 +74274 +57979 +7795 +80482 +37953 +6018 +49021 +9507 +10541 +3784 +60179 +79425 +46911 +76210 +67315 +75851 +20748 +39867 +59932 +30596 +31070 +54801 +30024 +59223 +16392 +24772 +79452 +22111 +38957 +29970 +76372 +7940 +41610 +23928 +78599 +4857 +14813 +70761 +57134 +33880 +32079 +26853 +66790 +58989 +464 +3939 +15494 +39411 +44147 +37837 +28245 +50070 +46154 +53971 +62969 +11835 +18671 +29358 +7205 +63311 +47142 +14295 +7639 +34010 +42121 +49747 +74469 +13492 +24521 +52679 +11668 +42550 +38226 +31858 +79900 +63744 +9172 +16833 +64124 +61905 +59702 +25716 +69047 +20582 +71213 +26875 +52015 +23798 +42428 +66110 +207 +61789 +1732 +57899 +62322 +33077 +43520 +80056 +64225 +49945 +34454 +54244 +49998 +2561 +19779 +66554 +40365 +19449 +52106 +62836 +52730 +45749 +75484 +24168 +24085 +11276 +76760 +41529 +34196 +48136 +24391 +74124 +58522 +55271 +22149 +74702 +36980 +24209 +7012 +26046 +1977 +13860 +65663 +734 +53252 +14770 +44500 +54796 +24550 +22483 +6543 +13804 +48422 +8729 +77329 +21823 +49066 +67640 +61583 +38520 +64589 +77704 +18434 +55630 +24338 +17530 +12049 +2311 +11257 +36829 +26414 +10965 +14100 +37281 +38804 +63236 +55289 +29095 +1517 +6438 +27774 +12902 +35562 +43284 +22437 +43234 +62964 +20997 +17218 +40310 +51369 +30365 +15787 +30873 +58063 +33143 +61933 +47667 +58122 +52698 +70018 +5297 +53009 +57852 +22890 +14829 +9255 +55883 +23183 +80760 +77534 +5645 +34877 +52448 +56223 +50175 +36298 +58027 +39618 +39187 +42229 +54273 +27212 +70861 +46706 +52011 +68065 +16424 +61532 +73156 +26087 +75166 +51985 +70293 +66591 +7559 +28588 +35417 +3911 +38772 +12830 +27331 +77452 +73642 +49064 +34018 +65732 +59571 +26925 +39291 +7171 +76609 +68379 +19757 +9040 +63885 +65829 +79713 +74574 +55104 +57690 +16089 +71129 +22385 +63476 +26296 +17306 +45316 +11463 +71977 +66060 +63660 +29549 +5667 +13766 +1027 +29931 +4139 +21136 +46512 +64468 +61946 +70904 +47516 +65497 +28915 +22701 +19053 +36768 +70127 +31849 +24724 +69186 +52873 +73867 +73125 +3517 +56725 +46566 +32390 +69522 +41100 +28636 +64318 +73494 +34085 +56921 +78854 +27132 +41090 +20108 +38459 +66583 +39587 +68469 +31272 +5444 +28475 +34404 +71642 +19494 +41005 +53188 +11251 +26979 +27824 +35640 +8190 +72334 +31935 +38945 +32959 +24907 +58784 +47256 +62608 +78234 +7643 +27779 +31112 +125 +18149 +49590 +75199 +70322 +46014 +65836 +34450 +62795 +74067 +35805 +64074 +51546 +30504 +42732 +49919 +19091 +71821 +70134 +52378 +39203 +4183 +33990 +6404 +56543 +11054 +53912 +46680 +24597 +11605 +27733 +55054 +2743 +9871 +26867 +60988 +69540 +25329 +2169 +15880 +63512 +27254 +59101 +18692 +67398 +79779 +55554 +24320 +38821 +7297 +35753 +38766 +5918 +44213 +4568 +52377 +5086 +62979 +70262 +18439 +20925 +24234 +21586 +4736 +3103 +10913 +12063 +29853 +52202 +19117 +63391 +29974 +69833 +17335 +10661 +63999 +27665 +20133 +1931 +22857 +30235 +8776 +66005 +24075 +63228 +16612 +43062 +24417 +28869 +2646 +39625 +22670 +5760 +58230 +36846 +72511 +23404 +3060 +30804 +65993 +22186 +78146 +11991 +35970 +9117 +71150 +8307 +11771 +36013 +73930 +29997 +34519 +2104 +62716 +21863 +51885 +78162 +30395 +46449 +54134 +30457 +46776 +4569 +46852 +35006 +27289 +5287 +14209 +4165 +20493 +79455 +28055 +14176 +42700 +72437 +23949 +56590 +33975 +24918 +14855 +62626 +73730 +5641 +12737 +8844 +39285 +44696 +29055 +61958 +4435 +35473 +18451 +21013 +50517 +45926 +70257 +34897 +25029 +1010 +101 +21938 +78629 +75970 +55682 +22114 +51858 +7609 +7099 +64539 +69930 +63388 +51401 +11053 +68231 +42084 +6891 +73022 +5747 +65938 +50807 +56490 +58380 +67467 +42756 +63519 +34372 +28885 +75143 +52757 +41815 +76150 +10153 +23216 +29633 +40121 +4602 +15593 +34705 +31394 +8232 +17818 +47917 +19373 +10976 +77829 +40252 +59985 +40209 +65909 +25204 +24704 +51455 +72587 +10902 +35125 +2235 +61218 +67991 +11182 +7285 +27053 +16269 +65884 +9808 +32199 +57606 +44759 +20547 +21132 +73937 +60201 +5122 +32101 +57749 +4142 +18242 +71131 +78459 +53228 +37849 +37893 +39771 +41658 +12880 +70563 +74434 +23809 +45450 +49324 +34214 +54799 +5822 +468 +71050 +21143 +11784 +10118 +23117 +10721 +29299 +57862 +60455 +29766 +40713 +18466 +36123 +19554 +9951 +56359 +9000 +33689 +69234 +40693 +44415 +6771 +42471 +13883 +8296 +68817 +60300 +29370 +31640 +4321 +70812 +36609 +44935 +50252 +48766 +30189 +57025 +36979 +72128 +61119 +44902 +7872 +33358 +21869 +55134 +78561 +2153 +59009 +28933 +59372 +78601 +53719 +55390 +66224 +12445 +47497 +66717 +33329 +9454 +57369 +22742 +570 +31027 +63092 +50218 +30827 +42183 +72341 +61565 +65667 +7344 +24419 +29532 +7542 +40604 +70832 +43432 +8407 +79934 +65896 +67133 +2765 +60994 +31182 +22766 +51113 +73973 +41278 +17077 +54156 +39229 +60968 +32182 +65292 +31819 +27321 +7963 +15902 +66648 +45601 +35705 +65003 +20072 +44804 +77588 +79148 +72778 +21450 +7749 +53278 +58388 +80582 +52548 +77813 +12510 +13756 +77817 +7519 +71757 +45288 +12866 +36082 +9399 +67858 +44086 +61965 +47211 +74343 +51735 +9146 +45349 +61452 +36337 +58330 +42813 +77867 +59503 +44301 +55310 +3458 +53941 +50337 +28328 +61414 +66978 +8333 +7386 +71903 +51945 +2409 +68280 +75397 +50791 +76227 +2975 +72621 +78210 +51481 +6373 +62021 +39539 +2879 +38465 +12961 +58065 +29401 +17028 +52422 +43329 +56 +45324 +32100 +69124 +11014 +25837 +44282 +72845 +22174 +76655 +6070 +25170 +45667 +80572 +1135 +68313 +67469 +45809 +43397 +22741 +65645 +31401 +2566 +29649 +48887 +7303 +1271 +62974 +19411 +41256 +77584 +69407 +41235 +75192 +2228 +63649 +44484 +78802 +43591 +4232 +76695 +63110 +17629 +76771 +72285 +66080 +4143 +38921 +66788 +62644 +29035 +46246 +6873 +70335 +77390 +4715 +9287 +6257 +56392 +78607 +8462 +67667 +52952 +21084 +462 +53871 +8036 +40072 +13577 +16482 +5813 +13705 +51114 +12940 +69803 +59781 +10143 +11514 +32515 +4176 +75738 +32214 +15721 +70709 +25658 +1457 +47240 +29678 +22818 +61764 +34385 +22146 +22658 +38550 +246 +67008 +17322 +69220 +53793 +5473 +32141 +36169 +42258 +28417 +11874 +79993 +52292 +58505 +53935 +25664 +76168 +16347 +13588 +20604 +78203 +53415 +44012 +53628 +48215 +20535 +31439 +59068 +42831 +17706 +29211 +32183 +22821 +12300 +27869 +79738 +53678 +61311 +30311 +41570 +20644 +65392 +9219 +42626 +67755 +59393 +79361 +76630 +79187 +47318 +73682 +38549 +18347 +13262 +4236 +52547 +70658 +9116 +52657 +72999 +55486 +59179 +68325 +60195 +21209 +76543 +37566 +29571 +51263 +46884 +66950 +10447 +17275 +41135 +13083 +4692 +33518 +53924 +28156 +76788 +58782 +67292 +28218 +56680 +10378 +11611 +55959 +36885 +49350 +59082 +30623 +70995 +36383 +79836 +64294 +66430 +18261 +31830 +7708 +43616 +72691 +77836 +12487 +2259 +10308 +22301 +79695 +65869 +74700 +49749 +58634 +13667 +69922 +28437 +13825 +6971 +44078 +62191 +30576 +58351 +31522 +57404 +60334 +65614 +46902 +10985 +20809 +54599 +54351 +20328 +77529 +40424 +35504 +48811 +37101 +56598 +63893 +74161 +70489 +34367 +15379 +21167 +76518 +74097 +26733 +25264 +67417 +77347 +29051 +53396 +30802 +39612 +38709 +8963 +19486 +76520 +49202 +230 +35964 +32635 +69041 +74743 +22348 +15027 +71417 +35216 +71217 +1152 +23568 +29310 +72274 +24600 +33210 +20070 +37840 +27401 +78420 +4927 +5946 +30980 +46163 +21847 +43097 +13084 +40506 +35194 +61201 +7342 +78390 +12334 +14927 +58871 +36067 +25216 +46394 +72543 +30640 +71984 +66709 +66004 +7091 +37512 +21241 +68036 +16352 +31868 +68814 +23376 +2666 +33656 +49155 +50629 +9461 +16440 +2098 +25582 +5555 +60805 +29705 +70093 +35973 +42488 +49666 +76244 +45707 +42108 +71470 +60224 +12745 +10662 +4688 +38295 +62361 +72251 +56225 +7487 +37435 +3950 +75810 +71446 +56214 +62688 +17917 +44314 +80657 +13925 +5224 +79846 +13570 +13534 +30180 +21624 +43429 +78440 +39066 +20745 +65093 +79509 +46486 +47904 +65399 +37371 +80182 +62394 +46531 +27595 +5487 +26855 +1416 +46771 +79813 +13248 +44379 +15514 +13036 +72576 +48038 +52673 +7580 +64999 +32557 +79539 +35460 +34022 +39787 +50824 +7676 +38344 +4671 +41873 +28899 +64187 +60896 +75527 +5363 +57717 +64916 +44020 +58590 +68397 +50195 +8700 +24972 +63096 +41069 +69144 +4505 +32170 +72839 +60481 +67592 +20907 +18116 +67914 +20937 +23843 +14744 +61241 +63573 +43613 +67426 +71993 +2672 +51027 +2344 +44546 +69498 +45622 +58865 +34050 +54869 +10529 +33904 +71634 +18991 +45635 +46316 +64740 +33339 +66718 +54596 +22833 +59566 +64266 +653 +8008 +15323 +43825 +5349 +45005 +68963 +39586 +39106 +67892 +22068 +40890 +23953 +47162 +80767 +24297 +30696 +33449 +55192 +14093 +61502 +21832 +77790 +75480 +36512 +40858 +36830 +67161 +64733 +41175 +77475 +52624 +36486 +18543 +36351 +55794 +35665 +65358 +70518 +64132 +11768 +34369 +46867 +76826 +56035 +31253 +77236 +29224 +45084 +53191 +30118 +49250 +27283 +51922 +13006 +75587 +29911 +73743 +46845 +51748 +36414 +44721 +21493 +3046 +63473 +24564 +7352 +70278 +13280 +4800 +61334 +19669 +61992 +70702 +44735 +33167 +28661 +12788 +69645 +48842 +11913 +38710 +57009 +38158 +30543 +697 +62339 +15928 +67999 +4385 +58077 +21845 +70223 +2637 +7050 +39105 +69543 +22071 +50593 +62257 +10014 +40285 +49628 +49790 +11012 +2058 +22202 +34247 +44915 +11614 +70921 +68964 +76044 +72901 +57975 +69479 +53523 +27095 +11309 +24658 +30263 +49768 +46410 +35379 +7273 +31707 +15807 +28841 +63464 +41805 +57394 +20160 +55006 +79532 +5209 +75717 +47910 +29114 +36043 +45812 +4541 +7414 +4999 +75298 +19290 +70114 +71221 +13046 +27001 +78820 +27167 +52725 +56611 +29686 +17522 +11999 +49149 +51207 +50793 +79694 +63683 +14945 +10000 +18652 +78025 +76878 +63124 +2377 +67128 +41003 +56899 +16551 +64106 +46314 +21597 +64696 +19027 +24062 +67053 +3265 +52050 +50962 +12694 +48028 +75342 +59759 +16790 +67202 +17093 +18843 +64237 +37061 +44348 +16355 +48984 +10849 +13512 +2938 +54620 +4299 +31972 +26623 +59242 +76907 +69905 +65527 +80696 +48776 +63829 +52501 +3962 +28306 +9275 +75025 +21761 +44995 +22625 +17294 +41009 +34024 +39702 +26673 +66067 +48176 +61006 +16922 +58089 +48029 +33839 +42420 +55362 +57910 +73259 +78207 +76145 +39029 +64557 +58439 +7562 +44395 +53537 +30817 +31965 +29262 +75317 +69480 +57976 +64861 +2580 +32568 +51224 +39600 +954 +23784 +47291 +4152 +64741 +23651 +8401 +76032 +4590 +67178 +61813 +36840 +33079 +17699 +28167 +34215 +78063 +3325 +72428 +25659 +40078 +63344 +25268 +79781 +72446 +59396 +21896 +15210 +42035 +16937 +38523 +53878 +45965 +48406 +73245 +79711 +41345 +37336 +66791 +24050 +6074 +24870 +42855 +43901 +51834 +40536 +2093 +12912 +57950 +59250 +33027 +25753 +66868 +2814 +49873 +35715 +32319 +46800 +77039 +79364 +30783 +19529 +47713 +11159 +51089 +49627 +77763 +32191 +20561 +11448 +17319 +37582 +32950 +71466 +40038 +32032 +32469 +65344 +55334 +12202 +74670 +32438 +66072 +55169 +71040 +46990 +14335 +40155 +51702 +30732 +8787 +1120 +65388 +45002 +63446 +7535 +43058 +70997 +30586 +1949 +38959 +80577 +76368 +4188 +69678 +43185 +75404 +10736 +18728 +30493 +33326 +54220 +41599 +17595 +16483 +46969 +66443 +26879 +48319 +46523 +7991 +28459 +53835 +50446 +58682 +4403 +57203 +64532 +48612 +26015 +70203 +69612 +8352 +58879 +41103 +30149 +62890 +46906 +6144 +52284 +75082 +8398 +30926 +43865 +23271 +2667 +6383 +68648 +63860 +53922 +74877 +69199 +18856 +42323 +51097 +68724 +23515 +36350 +55395 +29268 +63857 +72481 +76107 +14965 +52498 +73119 +30021 +71287 +44705 +22642 +53298 +58563 +50365 +60825 +67923 +70407 +78512 +6109 +23175 +10950 +27837 +59969 +53689 +258 +18291 +49676 +40292 +28342 +25567 +79165 +10240 +8278 +27092 +8359 +34899 +43222 +32647 +56821 +73934 +48523 +35234 +69631 +34028 +29982 +22650 +22244 +7401 +50865 +79587 +72692 +45724 +74674 +73814 +73999 +38332 +26263 +18139 +35105 +67596 +58586 +7117 +58701 +74996 +67733 +58208 +24889 +59560 +8631 +53383 +75479 +19773 +53333 +49781 +78779 +16066 +20127 +56863 +75081 +78158 +57801 +7410 +73612 +54911 +18152 +67593 +54691 +13487 +75882 +23951 +49849 +57535 +13560 +45228 +264 +49525 +77086 +17225 +56220 +11174 +38597 +20161 +72704 +6489 +44509 +55996 +48459 +51698 +34003 +27469 +75784 +79819 +53621 +13953 +20529 +23842 +54487 +45619 +27459 +27921 +5326 +19768 +22809 +9134 +16507 +52809 +14118 +44783 +28001 +27853 +59 +34690 +2191 +5418 +3054 +73406 +49708 +36115 +5258 +14523 +73842 +67845 +71192 +6244 +43611 +29772 +26975 +77411 +60121 +50022 +53521 +37603 +72548 +42948 +9433 +73602 +41340 +35880 +77472 +79853 +49717 +33379 +11552 +79494 +50724 +74873 +77516 +74078 +64789 +65243 +30797 +39896 +37711 +14475 +63389 +53782 +59131 +12670 +33605 +65385 +56591 +16041 +21495 +67861 +12972 +21174 +53045 +63231 +67716 +8073 +19722 +78584 +7801 +2078 +11196 +55264 +72124 +64262 +74668 +38320 +15993 +6920 +55542 +27787 +7194 +57242 +14140 +29614 +37672 +3575 +40814 +36077 +21720 +9798 +53701 +14782 +79544 +165 +58013 +35482 +64418 +72201 +22444 +7993 +52642 +74514 +67187 +43485 +15472 +38925 +38798 +61705 +69610 +4561 +75751 +68573 +43962 +76138 +3055 +14029 +35580 +53354 +65322 +1872 +56263 +63161 +64728 +45919 +46809 +79658 +43148 +37697 +19379 +1624 +6822 +44390 +49166 +53434 +32638 +44784 +29373 +30323 +54457 +3322 +3385 +68921 +10100 +30465 +32850 +60693 +43183 +62916 +8504 +5118 +35784 +16285 +66063 +68365 +72483 +33425 +22147 +1741 +7405 +63483 +30637 +49712 +45297 +21558 +886 +75428 +14006 +47001 +56911 +12135 +56643 +2446 +7046 +9995 +43390 +30369 +1211 +24359 +68234 +37203 +30085 +49041 +66735 +2012 +75139 +13048 +12536 +7357 +54638 +21124 +35474 +51358 +51924 +4168 +64917 +60864 +50149 +40086 +50389 +22672 +33181 +28792 +5386 +73509 +79109 +37918 +46191 +70010 +33473 +27574 +62469 +7174 +34501 +71725 +29951 +18163 +68533 +12196 +15503 +64911 +31930 +61916 +10838 +62823 +34812 +51399 +19681 +47204 +63502 +13423 +13158 +23085 +3377 +22768 +55989 +53029 +39192 +69855 +55129 +47387 +25635 +55303 +18081 +60112 +68802 +31460 +3227 +71598 +56232 +47517 +30487 +75791 +53195 +44090 +21644 +79069 +41415 +30682 +74692 +29476 +38496 +3937 +29219 +21772 +39653 +69227 +28446 +59047 +26716 +60328 +23346 +12181 +7602 +5368 +32974 +17594 +58305 +67155 +62548 +9640 +63964 +6147 +78985 +37017 +46322 +24692 +51717 +5777 +42602 +61888 +65554 +29901 +63762 +10134 +48454 +4390 +3851 +49967 +80771 +39097 +45851 +12666 +52372 +56916 +60422 +37091 +55867 +43747 +60408 +55976 +68898 +18295 +41403 +3110 +31206 +31135 +80271 +24965 +31790 +70811 +53530 +36529 +4823 +44267 +66410 +60638 +5312 +9185 +73539 +78857 +4510 +74382 +43758 +65520 +67690 +31986 +53739 +74269 +16620 +6886 +31874 +31302 +54135 +49180 +38257 +13619 +76358 +70209 +51768 +5987 +38046 +7339 +71664 +37253 +46357 +17014 +65240 +35372 +43550 +4766 +63759 +50095 +67486 +32389 +268 +62647 +39581 +71784 +62970 +36868 +72233 +47814 +28447 +13670 +32645 +38794 +19949 +491 +30899 +65629 +75473 +8843 +30425 +6780 +24301 +67880 +49358 +58283 +60518 +40466 +71288 +63274 +35293 +24880 +63782 +52201 +78543 +65307 +10344 +13040 +20457 +33221 +57581 +42595 +16912 +37534 +24303 +1524 +15982 +18965 +22394 +16228 +41301 +57921 +68663 +28587 +42228 +9576 +191 +22136 +72889 +4363 +35497 +68269 +48581 +75762 +5929 +53925 +9505 +78990 +27487 +65145 +74026 +47300 +55565 +54350 +14482 +29418 +76309 +48025 +46210 +7310 +15648 +38904 +66856 +58067 +50721 +56953 +38607 +38787 +17947 +22293 +15424 +39667 +27966 +45092 +73675 +3387 +67981 +51549 +42022 +48421 +2759 +32763 +48040 +49844 +69014 +74940 +64326 +39471 +59986 +20091 +35074 +41357 +47714 +21904 +24603 +7740 +47556 +73845 +16090 +34452 +77563 +50505 +41516 +31284 +23326 +62289 +49670 +39749 +36381 +21689 +27816 +16906 +72726 +73681 +56702 +21704 +40975 +48165 +47049 +28225 +25147 +10228 +39325 +38466 +72509 +45400 +15008 +10595 +44010 +38458 +647 +25707 +62207 +71900 +1133 +75946 +69305 +10587 +69402 +19339 +741 +25060 +22618 +1642 +36232 +28401 +25200 +77672 +79129 +74807 +62847 +53725 +41319 +19559 +77662 +50823 +80418 +34566 +66526 +16743 +57989 +9690 +22792 +12873 +47815 +77922 +44152 +70259 +73100 +24881 +44641 +13554 +18095 +63215 +54609 +5220 +16133 +63565 +73660 +38648 +73236 +38082 +46064 +71819 +10539 +21815 +71498 +19034 +41814 +57265 +56331 +30307 +40742 +74756 +32171 +53030 +20157 +35792 +91 +52524 +49722 +13665 +19191 +56807 +61679 +26915 +56087 +7751 +11604 +52412 +10078 +71721 +26702 +59951 +43427 +30433 +10515 +19915 +15159 +55207 +2466 +6272 +56366 +29962 +26018 +9521 +78212 +70321 +54771 +13527 +41604 +53355 +63309 +67875 +22839 +14194 +27617 +8080 +13362 +52951 +54484 +70086 +46543 +29617 +63041 +37882 +466 +32864 +2799 +22598 +24453 +2274 +61197 +27927 +71011 +30909 +54990 +69535 +63623 +18784 +56125 +74535 +5854 +68485 +27846 +27924 +54965 +32727 +39905 +17009 +22899 +24544 +80016 +61616 +36626 +73822 +54934 +12710 +7626 +30339 +36622 +63598 +20227 +10051 +35352 +10944 +64841 +72850 +57587 +9701 +76004 +71284 +3317 +18402 +56065 +23366 +74732 +32419 +30392 +8018 +36032 +18912 +13801 +64032 +64311 +34063 +7201 +15940 +58507 +45917 +39673 +14050 +43247 +10506 +25493 +42468 +34376 +72858 +37937 +65423 +61619 +33411 +78397 +14786 +48132 +53951 +57280 +41976 +23296 +65311 +35724 +70827 +63488 +90 +56177 +6024 +75077 +37282 +6945 +3002 +27920 +58479 +35781 +65288 +53571 +45709 +39652 +74626 +53542 +41119 +6349 +17046 +41963 +69723 +58873 +25738 +44701 +29540 +79022 +66479 +75188 +7678 +20279 +58400 +60388 +35878 +15479 +77835 +868 +9220 +832 +41387 +52243 +27857 +50028 +42682 +66852 +72803 +75187 +68565 +38315 +66406 +27505 +43644 +69075 +45664 +23589 +33230 +43951 +70327 +22355 +76019 +33658 +41711 +5699 +75894 +58582 +10510 +48277 +69147 +24839 +13505 +1435 +29723 +15947 +37214 +34309 +43478 +80298 +35867 +33173 +58735 +55404 +79735 +20610 +74306 +26844 +52802 +26100 +44764 +60589 +8137 +61385 +62049 +16529 +76727 +77800 +23281 +19221 +25547 +53211 +63046 +11361 +50702 +53819 +12204 +80051 +4033 +6579 +31433 +44754 +25920 +52401 +60793 +12498 +16277 +74517 +71313 +41454 +8763 +53627 +52394 +58183 +49779 +29324 +6591 +72040 +12514 +69500 +64873 +7065 +29527 +33368 +53285 +37045 +51837 +8061 +53056 +30357 +34892 +65256 +51923 +53067 +18234 +6964 +49061 +51166 +61029 +42828 +46718 +80227 +37630 +22031 +7148 +79051 +57251 +13154 +69688 +27717 +19123 +24826 +54812 +36613 +22357 +11239 +77471 +32292 +58603 +44838 +14159 +56586 +30089 +26759 +78864 +21216 +54122 +44091 +12318 +7015 +21223 +33893 +19375 +48665 +48058 +9401 +2829 +23244 +22511 +80437 +48656 +39310 +7925 +30329 +38126 +38305 +47827 +23837 +23841 +75387 +12612 +34526 +55274 +66756 +14584 +9600 +53749 +35873 +46335 +44246 +34866 +59160 +77900 +14808 +62220 +26630 +17453 +36664 +17447 +16902 +59119 +65088 +4150 +64794 +74049 +40625 +41485 +69604 +24032 +18888 +3191 +40330 +9498 +16286 +16534 +1002 +61087 +39388 +78471 +23427 +2336 +70421 +4279 +65610 +38950 +40453 +5503 +14284 +33428 +54137 +5083 +43682 +79171 +66476 +33778 +80115 +63661 +54747 +12259 +20122 +36560 +56966 +22014 +65015 +66810 +41019 +38793 +71573 +24838 +66398 +38578 +28811 +56719 +60684 +1234 +4844 +5584 +13152 +77684 +79771 +9978 +68283 +77122 +77708 +32903 +20556 +22649 +60353 +65528 +37619 +10394 +14634 +16036 +68794 +61747 +66148 +51485 +48205 +8695 +45407 +37427 +41710 +76371 +35845 +61426 +54387 +62501 +73045 +40919 +44352 +44776 +47719 +75576 +61589 +14216 +6010 +78853 +79547 +40105 +72641 +70749 +2303 +32254 +80033 +66055 +31862 +72995 +64036 +15423 +28107 +67322 +42633 +19990 +40722 +46263 +80075 +59245 +54951 +54375 +75898 +12905 +39676 +18429 +61186 +45545 +72229 +36915 +73454 +27756 +35290 +64399 +60454 +6482 +72142 +42198 +73131 +66151 +15123 +57421 +40263 +42160 +6583 +21316 +61599 +7390 +52380 +51982 +15200 +73868 +2981 +4235 +51771 +38297 +43539 +60733 +6453 +38155 +26792 +31005 +16259 +37018 +27640 +45067 +49427 +45973 +78696 +9112 +62930 +38948 +10830 +20413 +56631 +68414 +26755 +73419 +33288 +74156 +34794 +43541 +17323 +78640 +71253 +66561 +80726 +70930 +53114 +64700 +48360 +61110 +14745 +55526 +20017 +12167 +33399 +22382 +65968 +33932 +34749 +13493 +10103 +16376 +28335 +50564 +57107 +22377 +72205 +78437 +56400 +47270 +47657 +48502 +77688 +25502 +38238 +42391 +40135 +26034 +18112 +80708 +15769 +79337 +4300 +5549 +36037 +3165 +50112 +77237 +12094 +50949 +25036 +35588 +45014 +24770 +46160 +19304 +46433 +10006 +62911 +46774 +15015 +38071 +71110 +44679 +70038 +48787 +19153 +33601 +73770 +67380 +47116 +30225 +27792 +40948 +417 +68671 +20098 +66757 +61512 +51304 +60844 +64703 +45683 +59011 +1399 +57269 +47037 +49547 +78679 +15357 +4479 +8422 +52295 +14488 +67393 +29886 +14014 +78826 +61310 +8482 +35314 +33199 +14733 +28722 +3329 +14839 +32656 +28266 +46685 +69573 +70260 +66848 +29948 +80558 +48262 +11549 +25598 +34069 +37577 +17925 +63056 +18891 +59687 +32375 +30548 +34079 +7269 +39143 +2932 +2229 +47098 +36473 +8291 +22513 +9099 +18457 +79575 +31562 +79182 +61926 +38689 +32460 +14231 +37980 +1866 +77083 +8923 +37313 +73549 +73715 +37856 +6102 +13050 +15946 +5285 +34638 +8781 +39303 +18809 +73709 +8272 +4521 +32113 +46365 +47279 +16616 +31172 +22019 +54509 +21645 +21443 +21151 +66959 +4494 +21788 +51585 +33304 +34872 +79438 +45055 +51919 +59145 +75926 +971 +50221 +79298 +6056 +40763 +21528 +27514 +59117 +51701 +69395 +70280 +1066 +55671 +63609 +6025 +5333 +74638 +54760 +76798 +77968 +77803 +9744 +9848 +35245 +11608 +48348 +3815 +63792 +24434 +51048 +11505 +47680 +23532 +43597 +16074 +4267 +22842 +13524 +66853 +1755 +25514 +78136 +78464 +66685 +70620 +54827 +53898 +56213 +28129 +65223 +2771 +39660 +76345 +50296 +38150 +26908 +16880 +39297 +51602 +52544 +34140 +20253 +60203 +28080 +17844 +22985 +54003 +37444 +52396 +64058 +20951 +39691 +66794 +51079 +48299 +12157 +19547 +59286 +395 +25799 +78062 +16603 +29542 +34637 +66645 +48191 +10833 +55127 +49929 +39462 +56541 +59649 +73214 +7924 +7843 +5370 +6124 +7820 +16957 +64063 +59380 +13872 +77533 +29885 +69511 +542 +23011 +2952 +8459 +3805 +56327 +11933 +74485 +55007 +22185 +65070 +39574 +45265 +48881 +57646 +68523 +35613 +43395 +37096 +5037 +49586 +36210 +59569 +18872 +70660 +21770 +10927 +18006 +18693 +17862 +10382 +29368 +58946 +33265 +60086 +44718 +34636 +8321 +4137 +2769 +20334 +53879 +25915 +9364 +34411 +52646 +40098 +26090 +13148 +8654 +32260 +4413 +64239 +28011 +198 +12520 +75485 +11169 +9457 +10942 +59279 +37200 +78292 +50193 +54924 +561 +18477 +10369 +79327 +21946 +56266 +73841 +66096 +31959 +40323 +10125 +48017 +79389 +38541 +326 +74690 +49305 +66200 +43917 +4419 +2993 +34938 +12294 +3638 +68879 +65405 +4826 +24527 +69843 +61562 +6527 +67341 +16238 +64125 +16884 +73286 +64489 +35559 +1601 +16730 +24694 +69039 +80381 +19299 +27589 +10571 +7797 +5311 +66733 +45164 +61974 +41703 +24363 +46007 +51107 +38183 +43771 +72244 +35632 +40244 +10694 +24204 +50532 +65844 +53903 +72920 +17720 +62816 +73605 +76005 +25858 +58840 +47210 +66850 +39364 +33474 +12025 +67902 +67014 +73396 +43664 +21308 +24036 +23491 +29877 +16437 +4404 +30852 +37865 +51105 +75354 +4281 +5145 +36035 +16237 +20586 +53031 +38023 +59116 +49348 +44690 +8514 +18401 +43826 +26892 +33069 +56007 +29240 +22231 +78641 +30532 +42529 +79272 +63194 +7179 +37237 +11324 +32038 +48392 +48549 +64546 +74006 +48110 +36377 +74169 +46767 +55545 +22468 +17263 +13599 +6258 +23736 +73417 +63841 +32267 +41429 +63956 +35980 +38638 +9696 +3610 +43467 +12511 +24457 +39082 +70494 +21545 +73541 +39639 +13186 +18150 +15074 +65408 +21026 +53764 +16745 +2442 +42886 +20712 +47909 +71686 +10492 +70107 +4905 +11021 +70651 +65592 +11694 +3313 +17549 +50153 +47911 +68405 +28379 +546 +60628 +25715 +53053 +70364 +36928 +67760 +28755 +12042 +64066 +76766 +66522 +54512 +36900 +71994 +5432 +41969 +61290 +57343 +34021 +50745 +32668 +38170 +62820 +1470 +11717 +11121 +59892 +4465 +15191 +11112 +4943 +31798 +45030 +38299 +36430 +9858 +74271 +8302 +12867 +44027 +79053 +32619 +75220 +45617 +31324 +77279 +12870 +26479 +66951 +62806 +31068 +3817 +28511 +74938 +25756 +15517 +12323 +41056 +43906 +43034 +50731 +61013 +66140 +62405 +30219 +35073 +19261 +40305 +74802 +38048 +17680 +13669 +69320 +13098 +11408 +71397 +49748 +9967 +32118 +34152 +44250 +66330 +26675 +62886 +64377 +43593 +16735 +35575 +13115 +37447 +17671 +33054 +72451 +51655 +35730 +74576 +49158 +2299 +24801 +61145 +77026 +71063 +24350 +12309 +37594 +18236 +5424 +44790 +77620 +11166 +80487 +22713 +300 +74637 +6418 +43619 +68136 +72907 +30907 +44319 +19077 +43340 +7359 +44502 +35625 +46139 +78639 +27494 +39795 +21299 +2273 +13092 +21118 +3916 +54196 +72836 +62981 +43018 +34523 +42711 +40638 +46354 +60303 +38940 +27964 +40829 +34488 +48704 +14863 +5811 +80234 +7824 +39637 +78291 +68743 +21451 +10647 +16765 +70674 +35615 +30366 +49416 +55596 +43898 +75553 +53545 +69088 +21692 +77352 +64169 +65281 +26726 +17012 +69462 +16484 +1536 +74750 +42055 +30871 +73323 +10649 +26023 +17946 +42116 +63200 +62711 +12977 +18976 +64875 +32998 +4284 +78746 +19118 +55065 \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..e4dd7ff76ca3bbfeb52f48863b4b97c49e324e19 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,21 @@ +# Use an official Python runtime as a parent image +FROM python:3.7 + +# Set the working directory to /app +WORKDIR /app + +# Copy the current directory contents into the container at /app +COPY . /app + +# Install any needed packages specified in requirements.txt +RUN pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu117 -U +RUN pip install django opencv-python scipy pandas shapely -U + +# Expose the port the app runs on +EXPOSE 8000 + +# Define environment variable +ENV NAME g2p_app + +# Run app.py when the container launches +CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"] diff --git a/Graph2plan b/Graph2plan new file mode 160000 index 0000000000000000000000000000000000000000..3c6af231f52c38afaf4a0025ceffbc2e5afa7ada --- /dev/null +++ b/Graph2plan @@ -0,0 +1 @@ +Subproject commit 3c6af231f52c38afaf4a0025ceffbc2e5afa7ada diff --git a/Interface/House/__init__.py b/Interface/House/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/Interface/House/__pycache__/__init__.cpython-311.pyc b/Interface/House/__pycache__/__init__.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..fa97cc6e5164a8a130e93e502a40362abe934362 Binary files /dev/null and b/Interface/House/__pycache__/__init__.cpython-311.pyc differ diff --git a/Interface/House/__pycache__/__init__.cpython-37.pyc b/Interface/House/__pycache__/__init__.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..fba50486dd3c3f209dac50e9969963c812e8234c Binary files /dev/null and b/Interface/House/__pycache__/__init__.cpython-37.pyc differ diff --git a/Interface/House/__pycache__/settings.cpython-311.pyc b/Interface/House/__pycache__/settings.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..cc3774ad044ac4099e157f7439bdb5894bd434b0 Binary files /dev/null and b/Interface/House/__pycache__/settings.cpython-311.pyc differ diff --git a/Interface/House/__pycache__/settings.cpython-37.pyc b/Interface/House/__pycache__/settings.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6c0cb605374f64edb45fae83a776b3039502a1d2 Binary files /dev/null and b/Interface/House/__pycache__/settings.cpython-37.pyc differ diff --git a/Interface/House/__pycache__/urls.cpython-311.pyc b/Interface/House/__pycache__/urls.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ef7c97662eb626bbd18e1dc0e605f7af37d963da Binary files /dev/null and b/Interface/House/__pycache__/urls.cpython-311.pyc differ diff --git a/Interface/House/__pycache__/urls.cpython-37.pyc b/Interface/House/__pycache__/urls.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9643c5082113c8bada760d16079d0f48726217e0 Binary files /dev/null and b/Interface/House/__pycache__/urls.cpython-37.pyc differ diff --git a/Interface/House/__pycache__/wsgi.cpython-37.pyc b/Interface/House/__pycache__/wsgi.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a7607d08566a6acc733e396590387c5303276c10 Binary files /dev/null and b/Interface/House/__pycache__/wsgi.cpython-37.pyc differ diff --git a/Interface/House/asgi.py b/Interface/House/asgi.py new file mode 100644 index 0000000000000000000000000000000000000000..968e1e108f4e19d6b25049ff38a432a3b5f0f782 --- /dev/null +++ b/Interface/House/asgi.py @@ -0,0 +1,16 @@ +""" +ASGI config for House project. + +It exposes the ASGI callable as a module-level variable named ``application``. + +For more information on this file, see +https://docs.djangoproject.com/en/3.0/howto/deployment/asgi/ +""" + +import os + +from django.core.asgi import get_asgi_application + +os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'House.settings') + +application = get_asgi_application() diff --git a/Interface/House/settings.py b/Interface/House/settings.py new file mode 100644 index 0000000000000000000000000000000000000000..3f626d2232e9f6ee93c8a36421473270ceff7d04 --- /dev/null +++ b/Interface/House/settings.py @@ -0,0 +1,127 @@ +""" +Django settings for House project. + +Generated by 'django-admin startproject' using Django 3.0.2. + +For more information on this file, see +https://docs.djangoproject.com/en/3.0/topics/settings/ + +For the full list of settings and their values, see +https://docs.djangoproject.com/en/3.0/ref/settings/ +""" + +import os + +# Build paths inside the project like this: os.path.join(BASE_DIR, ...) +BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) + + +# Quick-start development settings - unsuitable for production +# See https://docs.djangoproject.com/en/3.0/howto/deployment/checklist/ + +# SECURITY WARNING: keep the secret key used in production secret! +SECRET_KEY = 'y&ol628+upm0r&=8pilr@u_w_0ji!1afp!st*y#ympn3u@!3s%' + +# SECURITY WARNING: don't run with debug turned on in production! +DEBUG = True + +ALLOWED_HOSTS = [] + + +# Application definition + +INSTALLED_APPS = [ + 'django.contrib.admin', + 'django.contrib.auth', + 'django.contrib.contenttypes', + 'django.contrib.sessions', + 'django.contrib.messages', + 'django.contrib.staticfiles', +] + +MIDDLEWARE = [ + 'django.middleware.security.SecurityMiddleware', + 'django.contrib.sessions.middleware.SessionMiddleware', + 'django.middleware.common.CommonMiddleware', + 'django.middleware.csrf.CsrfViewMiddleware', + 'django.contrib.auth.middleware.AuthenticationMiddleware', + 'django.contrib.messages.middleware.MessageMiddleware', + 'django.middleware.clickjacking.XFrameOptionsMiddleware', +] + +ROOT_URLCONF = 'House.urls' + +TEMPLATES = [ + { + 'BACKEND': 'django.template.backends.django.DjangoTemplates', + 'DIRS': [os.path.join(BASE_DIR, 'templates')] + , + 'APP_DIRS': True, + 'OPTIONS': { + 'context_processors': [ + 'django.template.context_processors.debug', + 'django.template.context_processors.request', + 'django.contrib.auth.context_processors.auth', + 'django.contrib.messages.context_processors.messages', + ], + }, + }, +] + +WSGI_APPLICATION = 'House.wsgi.application' + + +# Database +# https://docs.djangoproject.com/en/3.0/ref/settings/#databases + +DATABASES = { + 'default': { + 'ENGINE': 'django.db.backends.sqlite3', + 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), + } +} + + +# Password validation +# https://docs.djangoproject.com/en/3.0/ref/settings/#auth-password-validators + +AUTH_PASSWORD_VALIDATORS = [ + { + 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', + }, +] + + +# Internationalization +# https://docs.djangoproject.com/en/3.0/topics/i18n/ + +LANGUAGE_CODE = 'en-us' + +TIME_ZONE = 'UTC' + +USE_I18N = True + +USE_L10N = True + +USE_TZ = True + + +# Static files (CSS, JavaScript, Images) +# https://docs.djangoproject.com/en/3.0/howto/static-files/ + +STATIC_URL = '/static/' +HERE = os.path.dirname(os.path.abspath(__file__)) +HERE = os.path.join(HERE, '../') +STATICFILES_DIRS = ( + os.path.join(HERE, 'static/'), +) +ALLOWED_HOSTS = ['*'] \ No newline at end of file diff --git a/Interface/House/urls.py b/Interface/House/urls.py new file mode 100644 index 0000000000000000000000000000000000000000..18fd1938bdd2b0b98710edb0ffc7335c522685fd --- /dev/null +++ b/Interface/House/urls.py @@ -0,0 +1,37 @@ +"""House URL Configuration + +The `urlpatterns` list routes URLs to views. For more information please see: + https://docs.djangoproject.com/en/3.0/topics/http/urls/ +Examples: +Function views + 1. Add an import: from my_app import views + 2. Add a URL to urlpatterns: path('', views.home, name='home') +Class-based views + 1. Add an import: from other_app.views import Home + 2. Add a URL to urlpatterns: path('', Home.as_view(), name='home') +Including another URLconf + 1. Import the include() function: from django.urls import include, path + 2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) +""" +from django.contrib import admin +from django.urls import path + +from Houseweb import views + +urlpatterns = [ + # path('admin/', admin.site.urls), + path('index/LoadTestBoundary', views.LoadTestBoundary), + path('index/NumSearch/', views.NumSearch), + path(r'index/LoadTrainHouse/', views.LoadTrainHouse), + path(r'index/TransGraph/', views.TransGraph), + path(r'index/TransGraph_net/', views.TransGraph_net), + path(r'index/Init/', views.Init), + path(r'index/AdjustGraph/', views.AdjustGraph), + path(r'index/GraphSearch/', views.GraphSearch), + path(r'index/RelBox/', views.RelBox), + path(r'index/Save_Editbox/', views.Save_Editbox), + + path('home', views.home), + + +] diff --git a/Interface/House/wsgi.py b/Interface/House/wsgi.py new file mode 100644 index 0000000000000000000000000000000000000000..882f00753d2c5d4c3dfd352fc5c8c11bf4ce7010 --- /dev/null +++ b/Interface/House/wsgi.py @@ -0,0 +1,16 @@ +""" +WSGI config for House project. + +It exposes the WSGI callable as a module-level variable named ``application``. + +For more information on this file, see +https://docs.djangoproject.com/en/3.0/howto/deployment/wsgi/ +""" + +import os + +from django.core.wsgi import get_wsgi_application + +os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'House.settings') + +application = get_wsgi_application() diff --git a/Interface/Houseweb/__init__.py b/Interface/Houseweb/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/Interface/Houseweb/__pycache__/__init__.cpython-311.pyc b/Interface/Houseweb/__pycache__/__init__.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4fbc96cda109cb59640df7f766c062eac7f69dd5 Binary files /dev/null and b/Interface/Houseweb/__pycache__/__init__.cpython-311.pyc differ diff --git a/Interface/Houseweb/__pycache__/__init__.cpython-37.pyc b/Interface/Houseweb/__pycache__/__init__.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d39714e4bc8207dd61e92696ffa0401c5fa201a4 Binary files /dev/null and b/Interface/Houseweb/__pycache__/__init__.cpython-37.pyc differ diff --git a/Interface/Houseweb/__pycache__/create.cpython-37.pyc b/Interface/Houseweb/__pycache__/create.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7a5fa617d5af6850f1394a58413650515b6cd32b Binary files /dev/null and b/Interface/Houseweb/__pycache__/create.cpython-37.pyc differ diff --git a/Interface/Houseweb/__pycache__/floorplan2.cpython-37.pyc b/Interface/Houseweb/__pycache__/floorplan2.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d6b705ed27aa9a60472169ec08865ab06d823466 Binary files /dev/null and b/Interface/Houseweb/__pycache__/floorplan2.cpython-37.pyc differ diff --git a/Interface/Houseweb/__pycache__/network.cpython-37.pyc b/Interface/Houseweb/__pycache__/network.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7ad8ac531fa21e474ca239d9a218bbcfd948a376 Binary files /dev/null and b/Interface/Houseweb/__pycache__/network.cpython-37.pyc differ diff --git a/Interface/Houseweb/__pycache__/utils.cpython-37.pyc b/Interface/Houseweb/__pycache__/utils.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..20273a78e10486d3bd1428bf036ad0d5d03180d6 Binary files /dev/null and b/Interface/Houseweb/__pycache__/utils.cpython-37.pyc differ diff --git a/Interface/Houseweb/__pycache__/utils1.cpython-37.pyc b/Interface/Houseweb/__pycache__/utils1.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..14907ee09d682fe3ef4b6ef43d85fe5426c5f0c8 Binary files /dev/null and b/Interface/Houseweb/__pycache__/utils1.cpython-37.pyc differ diff --git a/Interface/Houseweb/__pycache__/views.cpython-311.pyc b/Interface/Houseweb/__pycache__/views.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c6332a2ab4ac3f86032d57d8f7929fb09827efcb Binary files /dev/null and b/Interface/Houseweb/__pycache__/views.cpython-311.pyc differ diff --git a/Interface/Houseweb/__pycache__/views.cpython-37.pyc b/Interface/Houseweb/__pycache__/views.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7d44542b03bf1df874d22615cf3da7530638402c Binary files /dev/null and b/Interface/Houseweb/__pycache__/views.cpython-37.pyc differ diff --git a/Interface/Houseweb/admin.py b/Interface/Houseweb/admin.py new file mode 100644 index 0000000000000000000000000000000000000000..8c38f3f3dad51e4585f3984282c2a4bec5349c1e --- /dev/null +++ b/Interface/Houseweb/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/Interface/Houseweb/apps.py b/Interface/Houseweb/apps.py new file mode 100644 index 0000000000000000000000000000000000000000..81b6cc58b954534d40e3721afbe053803372a1ac --- /dev/null +++ b/Interface/Houseweb/apps.py @@ -0,0 +1,5 @@ +from django.apps import AppConfig + + +class HousewebConfig(AppConfig): + name = 'Houseweb' diff --git a/Interface/Houseweb/migrations/__init__.py b/Interface/Houseweb/migrations/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/Interface/Houseweb/models.py b/Interface/Houseweb/models.py new file mode 100644 index 0000000000000000000000000000000000000000..71a836239075aa6e6e4ecb700e9c42c95c022d91 --- /dev/null +++ b/Interface/Houseweb/models.py @@ -0,0 +1,3 @@ +from django.db import models + +# Create your models here. diff --git a/Interface/Houseweb/tests.py b/Interface/Houseweb/tests.py new file mode 100644 index 0000000000000000000000000000000000000000..7ce503c2dd97ba78597f6ff6e4393132753573f6 --- /dev/null +++ b/Interface/Houseweb/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/Interface/Houseweb/views.py b/Interface/Houseweb/views.py new file mode 100644 index 0000000000000000000000000000000000000000..f50cabfbcbfd6ba0a07167803dcc92d8bf5854ee --- /dev/null +++ b/Interface/Houseweb/views.py @@ -0,0 +1,757 @@ +from django.shortcuts import render +from django.http import HttpResponse, JsonResponse +import json +import model.test as mltest +import model.utils as mdul +from model.floorplan import * +import retrieval.retrieval as rt +import time +import pickle +import scipy.io as sio +import numpy as np +from model.decorate import * +import math +import pandas as pd +import matlab.engine + +global test_data, test_data_topk, testNameList, trainNameList +global train_data, trainNameList, trainTF, train_data_eNum, train_data_rNum +global engview, model +global tf_train, centroids, clusters + + +def home(request): + return render(request, "home.html", ) + + +def Init(request): + start = time.clock() + getTestData() + getTrainData() + loadMatlabEng() + loadModel() + loadRetrieval() + end = time.clock() + print('Init(model+test+train+engine+retrieval) time: %s Seconds' % (end - start)) + + return HttpResponse(None) + + +def loadMatlabEng(): + startengview = time.clock() + global engview + engview = matlab.engine.start_matlab() + engview.addpath(r'./align_fp/', nargout=0) + endengview = time.clock() + print(' matlab.engineview time: %s Seconds' % (endengview - startengview)) + + +def loadRetrieval(): + global tf_train, centroids, clusters + t1 = time.clock() + tf_train = np.load('./retrieval/tf_train.npy') + centroids = np.load('./retrieval/centroids_train.npy') + clusters = np.load('./retrieval/clusters_train.npy') + t2 = time.clock() + print('load tf/centroids/clusters', t2 - t1) + + +def getTestData(): + start = time.clock() + global test_data, testNameList, trainNameList + + test_data = pickle.load(open('./static/Data/data_test_converted.pkl', 'rb')) + test_data, testNameList, trainNameList = test_data['data'], list(test_data['testNameList']), list( + test_data['trainNameList']) + end = time.clock() + print('getTestData time: %s Seconds' % (end - start)) + + +def getTrainData(): + start = time.clock() + global train_data, trainNameList, trainTF, train_data_eNum, train_data_rNum + + train_data = pickle.load(open('./static/Data/data_train_converted.pkl', 'rb')) + train_data, trainNameList, trainTF = train_data['data'], list(train_data['nameList']), list(train_data['trainTF']) + + train_data_eNum = pickle.load(open('./static/Data/data_train_eNum.pkl', 'rb')) + train_data_eNum = train_data_eNum['eNum'] + train_data_rNum = np.load('./static/Data/rNum_train.npy') + + end = time.clock() + print('getTrainData time: %s Seconds' % (end - start)) + + +def loadModel(): + global model, train_data, trainNameList + start = time.clock() + model = mltest.load_model() + end = time.clock() + print('loadModel time: %s Seconds' % (end - start)) + start = time.clock() + test = train_data[trainNameList.index("75119")] + mltest.test(model, FloorPlan(test, train=True)) + end = time.clock() + print('test Model time: %s Seconds' % (end - start)) + + +def LoadTestBoundary(request): + start = time.clock() + testName = request.GET.get('testName').split(".")[0] + test_index = testNameList.index(testName) + data = test_data[test_index] + data_js = {} + data_js["door"] = str(data.boundary[0][0]) + "," + str(data.boundary[0][1]) + "," + str( + data.boundary[1][0]) + "," + str(data.boundary[1][1]) + ex = "" + for i in range(len(data.boundary)): + ex = ex + str(data.boundary[i][0]) + "," + str(data.boundary[i][1]) + " " + data_js['exterior'] = ex + end = time.clock() + print('LoadTestBoundary time: %s Seconds' % (end - start)) + return HttpResponse(json.dumps(data_js), content_type="application/json") + + +def get_filter_func(mask, acc, num): + filters = [ + None if not mask else ( + np.equal if acc[i] else np.greater_equal + ) + for i in range(len(mask)) + ] + + def filter_func(data): + for i in range(len(filters)): + if (filters[i] is not None) and (not filters[i](data[i], num[i])): return False + return True + + return filter_func + + +def filter_graph(graph_): + filters = graph_ + + def filter_graphfunc(data): + sub = data - filters + return ((sub >= 0).all()) + + return filter_graphfunc + + +def NumSearch(request): + start = time.clock() + data_new = json.loads(request.GET.get("userInfo")) + testName = data_new[0].split(".")[0] + test_index = testNameList.index(testName) + topkList = [] + topkList.clear() + data = test_data[test_index] + + + multi_clusters=False + test_data_topk = rt.retrieval(data, 1000,multi_clusters) + + if len(data_new) > 1: + roomactarr = data_new[1] + roomexaarr = data_new[2] + roomnumarr = [int(x) for x in data_new[3]] + + test_num = train_data_rNum[test_data_topk] + filter_func = get_filter_func(roomactarr, roomexaarr, roomnumarr) + indices = np.where(list(map(filter_func, test_num))) + indices = list(indices) + if len(indices[0]) < 20: + topk = len(indices[0]) + else: + topk = 20 + topkList.clear() + for i in range(topk): + topkList.append(str(trainNameList[int(test_data_topk[indices[0][i]])]) + ".png") + end = time.clock() + print('NumberSearch time: %s Seconds' % (end - start)) + return HttpResponse(json.dumps(topkList), content_type="application/json") + + +def FindTraindata(trainname): + start = time.clock() + train_index = trainNameList.index(trainname) + data = train_data[train_index] + data_js = {} + data_js["hsname"] = trainname + + data_js["door"] = str(data.boundary[0][0]) + "," + str(data.boundary[0][1]) + "," + str( + data.boundary[1][0]) + "," + str(data.boundary[1][1]) + print("testboundary", data_js["door"]) + ex = "" + for i in range(len(data.boundary)): + ex = ex + str(data.boundary[i][0]) + "," + str(data.boundary[i][1]) + " " + data_js['exterior'] = ex + + data_js["hsedge"] = [[int(u), int(v)] for u, v in data.edge[:, [0, 1]]] + + hsbox = [[[float(x1), float(y1), float(x2), float(y2)], [mdul.room_label[cate][1]]] for + x1, y1, x2, y2, cate in data.box[:]] + external = np.asarray(data.boundary) + xmin, xmax = np.min(external[:, 0]), np.max(external[:, 0]) + ymin, ymax = np.min(external[:, 1]), np.max(external[:, 1]) + + area_ = (ymax - ymin) * (xmax - xmin) + + data_js["rmsize"] = [ + [[20 * math.sqrt((float(x2) - float(x1)) * (float(y2) - float(y1)) / float(area_))], [mdul.room_label[cate][1]]] + for + x1, y1, x2, y2, cate in data.box[:]] + + + box_order = data.order + data_js["hsbox"] = [] + for i in range(len(box_order)): + data_js["hsbox"].append(hsbox[int(float(box_order[i])) - 1]) + + data_js["rmpos"] = [[int(cate), str(mdul.room_label[cate][1]), float((x1 + x2) / 2), float((y1 + y2) / 2)] for + x1, y1, x2, y2, cate in data.box[:]] + end = time.clock() + print('find train data time: %s Seconds' % (end - start)) + return data_js + + +def LoadTrainHouse(request): + trainname = request.GET.get("roomID").split(".")[0] + data_js = FindTraindata(trainname) + return HttpResponse(json.dumps(data_js), content_type="application/json") + + +''' + transfer the graph of the training data into the graph of the test data +''' + + +def TransGraph(request): + start = time.clock() + userInfo = request.GET.get("userInfo") + testname = userInfo.split(',')[0] + trainname = request.GET.get("roomID") + mlresult = mltest.get_userinfo(testname, trainname) + + fp_end = mlresult + + sio.savemat("./static/" + userInfo.split(',')[0].split('.')[0] + ".mat", {"data": fp_end.data}) + + data_js = {} + # fp_end hsedge + data_js["hsedge"] = (fp_end.get_triples(tensor=False)[:, [0, 2, 1]]).astype(np.float).tolist() + + # fp_rmsize + external = np.asarray(fp_end.data.boundary) + xmin, xmax = np.min(external[:, 0]), np.max(external[:, 0]) + ymin, ymax = np.min(external[:, 1]), np.max(external[:, 1]) + area_ = (ymax - ymin) * (xmax - xmin) + data_js["rmsize"] = [ + [[20 * math.sqrt((float(x2) - float(x1)) * (float(y2) - float(y1)) / float(area_))], [mdul.room_label[cate][1]]] + for + x1, y1, x2, y2, cate in fp_end.data.box[:]] + # fp_end rmpos + + rooms = fp_end.get_rooms(tensor=False) + + + center = [[(x1 + x2) / 2, (y1 + y2) / 2] for x1, y1, x2, y2 in fp_end.data.box[:, :4]] + + # boxes_pred + data_js["rmpos"] = [] + for k in range(len(center)): + node = float(rooms[k]), mdul.room_label[int(rooms[k])][1], center[k][0], center[k][1], float(k) + data_js["rmpos"].append(node) + + test_index = testNameList.index(testname.split(".")[0]) + data = test_data[test_index] + ex = "" + for i in range(len(data.boundary)): + ex = ex + str(data.boundary[i][0]) + "," + str(data.boundary[i][1]) + " " + data_js['exterior'] = ex + data_js["door"] = str(data.boundary[0][0]) + "," + str(data.boundary[0][1]) + "," + str( + data.boundary[1][0]) + "," + str(data.boundary[1][1]) + end = time.clock() + print('TransGraph time: %s Seconds' % (end - start)) + return HttpResponse(json.dumps(data_js), content_type="application/json") + + +def AdjustGraph(request): + start = time.clock() + # newNode index-typename-cx-cy + # oldNode index-typename-cx-cy + # newEdge u-v + NewGraph = json.loads(request.GET.get("NewGraph")) + testname = request.GET.get("userRoomID") + trainname = request.GET.get("adptRoomID") + s = time.clock() + mlresult = mltest.get_userinfo_adjust(testname, trainname, NewGraph) + e = time.clock() + print('get_userinfo_adjust: %s Seconds' % (e - s)) + fp_end = mlresult[0] + global boxes_pred + boxes_pred = mlresult[1] + + data_js = {} + data_js["hsedge"] = (fp_end.get_triples(tensor=False)[:, [0, 2, 1]]).astype(np.float).tolist() + + rooms = fp_end.get_rooms(tensor=False) + center = [[(x1 + x2) / 2, (y1 + y2) / 2] for x1, y1, x2, y2 in fp_end.data.box[:, :4]] + + box_order = mlresult[2] + ''' + handle the information of the room boxes + boxes_pred: the prediction from net + box_order: The order in which boxes are drawn + + ''' + room = [] + for o in range(len(box_order)): + room.append(float((rooms[int(float(box_order[o][0])) - 1]))) + boxes_end = [] + for i in range(len(box_order)): + tmp = [] + for j in range(4): + tmp.append(float(boxes_pred[int(float(box_order[i][0])) - 1][j])) + boxes_end.append(tmp) + + data_js['roomret'] = [] + for k in range(len(room)): + data = boxes_end[k], [mdul.room_label[int(room[k])][1]], box_order[k][0] - 1 + data_js['roomret'].append(data) + + # change the box size + global relbox + relbox = data_js['roomret'] + global reledge + reledge = data_js["hsedge"] + + test_index = testNameList.index(testname.split(".")[0]) + data = test_data[test_index] + ex = "" + for i in range(len(data.boundary)): + ex = ex + str(data.boundary[i][0]) + "," + str(data.boundary[i][1]) + " " + data_js['exterior'] = ex + data_js["door"] = str(data.boundary[0][0]) + "," + str(data.boundary[0][1]) + "," + str( + data.boundary[1][0]) + "," + str(data.boundary[1][1]) + + external = np.asarray(data.boundary) + xmin, xmax = np.min(external[:, 0]), np.max(external[:, 0]) + ymin, ymax = np.min(external[:, 1]), np.max(external[:, 1]) + area_ = (ymax - ymin) * (xmax - xmin) + data_js['rmsize'] = [] + for i in range(len(data_js['roomret'])): + rmsize = 20 * math.sqrt((float(data_js['roomret'][i][0][2]) - float(data_js['roomret'][i][0][0])) * ( + float(data_js['roomret'][i][0][3]) - float(data_js['roomret'][i][0][1])) / float(area_)), \ + data_js["roomret"][i][1][0] + data_js["rmsize"].append(rmsize) + + data_js["rmpos"] = [] + + newGraph = NewGraph[0] + for i in range(len(data_js['roomret'])): + for k in range(len(newGraph)): + if (data_js['roomret'][i][1][0] == newGraph[k][1]): + x_center = int((data_js['roomret'][i][0][0] + data_js['roomret'][i][0][2]) / 2) + y_center = int((data_js['roomret'][i][0][1] + data_js['roomret'][i][0][3]) / 2) + x_graph = newGraph[k][2] + y_graph = newGraph[k][3] + if ((int(x_graph - 30) < x_center < int(x_graph + 30))): + node = float(rooms[k]), newGraph[k][1], x_center, y_center, float( + newGraph[k][0]) + data_js["rmpos"].append(node) + newGraph.pop(k) + break + if ((int(y_graph - 30) < y_center < int(y_graph + 30))): + node = float(rooms[k]), newGraph[k][1], x_center, y_center, float( + newGraph[k][0]) + data_js["rmpos"].append(node) + newGraph.pop(k) + + break + + fp_end.data = add_dw_fp(fp_end.data) + data_js["indoor"] = [] + + boundary = data.boundary + + isNew = boundary[:, 3] + frontDoor = boundary[[0, 1]] + frontDoor = frontDoor[:, [0, 1]] + frontsum = frontDoor.sum(axis=1).tolist() + idx = frontsum.index(min(frontsum)) + wallThickness = 3 + if idx == 1: + frontDoor = frontDoor[[1, 0], :] + orient = boundary[0][2] + if orient == 0 or orient == 2: + frontDoor[0][0] = frontDoor[0][0] + wallThickness / 4 + frontDoor[1][0] = frontDoor[1][0] - wallThickness / 4 + if orient == 1 or orient == 3: + frontDoor[0][1] = frontDoor[0][1] + wallThickness / 4 + frontDoor[1][1] = frontDoor[1][1] - wallThickness / 4 + + + data_js["windows"] = [] + for indx, x, y, w, h, r in fp_end.data.windows: + if w != 0: + tmp = [x + 2, y - 2, w - 2, 4] + data_js["windows"].append(tmp) + if h != 0: + tmp = [x - 2, y, 4, h] + data_js["windows"].append(tmp) + data_js["windowsline"] = [] + for indx, x, y, w, h, r in fp_end.data.windows: + if w != 0: + tmp = [x + 2, y, w + x, y] + data_js["windowsline"].append(tmp) + if h != 0: + tmp = [x, y, x, h + y] + data_js["windowsline"].append(tmp) + + sio.savemat("./static/" + testname.split(',')[0].split('.')[0] + ".mat", {"data": fp_end.data}) + + end = time.clock() + print('AdjustGraph time: %s Seconds' % (end - start)) + return HttpResponse(json.dumps(data_js), content_type="application/json") + + +def RelBox(request): + id = request.GET.get("selectRect") + print(id) + global relbox + global reledge + rdirgroup=get_dir(id,relbox,reledge) + return HttpResponse(json.dumps(rdirgroup), content_type="application/json") + +def get_dir(id,relbox,reledge): + rel = [] + selectindex = int(id.split("_")[1]) + select = np.zeros(4).astype(int) + for i in range(len(relbox)): + a = math.ceil(relbox[i][0][0]), math.ceil(relbox[i][0][1]), math.ceil(relbox[i][0][2]), math.ceil( + relbox[i][0][3]), int(relbox[i][2]) + rel.append(a) + if (selectindex == int(relbox[i][2])): + # select:x1,x0,y0,y1.relbox:x0,y0,x1,y1 + select[0] = math.ceil(relbox[i][0][2]) + select[1] = math.ceil(relbox[i][0][0]) + select[2] = math.ceil(relbox[i][0][1]) + select[3] = math.ceil(relbox[i][0][3]) + rel = np.array(rel) + df = pd.DataFrame({'x0': rel[:, 0], 'y0': rel[:, 1], 'x1': rel[:, 2], 'y1': rel[:, 3], 'rindex': rel[:, 4]}) + group_label = [(0, 'x1', "right"), + (1, 'x0', "left"), + (2, 'y0', "top"), + (3, 'y1', "down")] + dfgroup = [] + for i in range(len(group_label)): + dfgroup.append(df.groupby(group_label[i][1], as_index=True).get_group(name=select[i])) + rdirgroup = [] + for i in range(len(dfgroup)): + dir = dfgroup[i] + rdir = [] + for k in range(len(dir)): + idx = (dir.loc[dir['rindex'] == (dir.iloc[[k]].values)[0][4]].index.values)[0] + rdir.append(relbox[idx][1][0].__str__() + "_" + (dir.iloc[[k]].values)[0][4].__str__()) + rdirgroup.append(rdir) + reledge = np.array(reledge) + data1 = reledge[np.where((reledge[:, [0]] == selectindex))[0]] + data2 = reledge[np.where((reledge[:, [1]] == selectindex))[0]] + reledge1 = np.vstack((data1, data2)) + return rdirgroup +def Save_Editbox(request): + global indxlist,boxes_pred + NewGraph = json.loads(request.GET.get("NewGraph")) + NewLay = json.loads(request.GET.get("NewLay")) + userRoomID = request.GET.get("userRoomID") + adptRoomID = request.GET.get("adptRoomID") + + NewLay=np.array(NewLay) + NewLay=NewLay[np.argsort(NewLay[:, 1])][:,2:] + NewLay=NewLay.astype(float).tolist() + + test_index = testNameList.index(userRoomID.split(".")[0]) + test_ = test_data[test_index] + + Boundary = test_.boundary + boundary=[[float(x),float(y),float(z),float(k)] for x,y,z,k in list(Boundary)] + test_fp =FloorPlan(test_) + + train_index = trainNameList.index(adptRoomID.split(".")[0]) + train_ =train_data[train_index] + train_fp =FloorPlan(train_,train=True) + fp_end = test_fp.adapt_graph(train_fp) + fp_end.adjust_graph() + newNode = NewGraph[0] + newEdge = NewGraph[1] + oldNode = NewGraph[2] + temp = [] + for newindx, newrmname, newx, newy,scalesize in newNode: + for type, oldrmname, oldx, oldy, oldindx in oldNode: + if (int(newindx) == oldindx): + tmp=int(newindx), (newx - oldx), ( newy- oldy),float(scalesize) + temp.append(tmp) + newbox=[] + if mltest.adjust==True: + oldbox = [] + for i in range(len(boxes_pred)): + indxtmp=[boxes_pred[i][0],boxes_pred[i][1],boxes_pred[i][2],boxes_pred[i][3],boxes_pred[i][0]] + oldbox.append(indxtmp) + if mltest.adjust==False: + indxlist=[] + oldbox=fp_end.data.box.tolist() + for i in range(len(oldbox)): + indxlist.append([oldbox[i][4]]) + indxlist=np.array(indxlist) + adjust=True + oldbox=fp_end.data.box.tolist() + X=0 + Y=0 + for i in range(len(oldbox)): + X= X+(oldbox[i][2]-oldbox[i][0]) + Y= Y+(oldbox[i][3]-oldbox[i][1]) + x_ave=(X/len(oldbox))/2 + y_ave=(Y/len(oldbox))/2 + + index_mapping = {} + # The room that already exists + # Move: Just by the distance + for newindx, tempx, tempy,scalesize in temp: + index_mapping[newindx] = len(newbox) + tmpbox=[] + scalesize = int(scalesize) + if scalesize<1: + scale = math.sqrt(scalesize) + scalex = (oldbox[newindx][2] - oldbox[newindx][0]) * (1 - scale) / 2 + scaley = (oldbox[newindx][3] - oldbox[newindx][1]) * (1 - scale) / 2 + tmpbox = [(oldbox[newindx][0] + tempx) + scalex, (oldbox[newindx][1] + tempy)+scaley, + (oldbox[newindx][2] + tempx) - scalex, (oldbox[newindx][3] + tempy) - scaley, oldbox[newindx][4]] + if scalesize == 1: + tmpbox = [(oldbox[newindx][0] + tempx) , (oldbox[newindx][1] + tempy) ,(oldbox[newindx][2] + tempx), (oldbox[newindx][3] + tempy), oldbox[newindx][4]] + + if scalesize>1: + scale=math.sqrt(scalesize) + scalex = (oldbox[newindx][2] - oldbox[newindx][0]) * ( scale-1) / 2 + scaley = (oldbox[newindx][3] - oldbox[newindx][1]) * (scale-1) / 2 + tmpbox = [(oldbox[newindx][0] + tempx) - scalex, (oldbox[newindx][1] + tempy) - scaley, + (oldbox[newindx][2] + tempx) + scalex, (oldbox[newindx][3] + tempy) + scaley, oldbox[newindx][4]] + + newbox.append(tmpbox) + + # The room just added + # Move: The room node with the average size of the existing room + for newindx, newrmname, newx, newy,scalesize in newNode: + if int(newindx)>(len(oldbox)-1): + scalesize=int(scalesize) + index_mapping[int(newindx)] = (len(newbox)) + tmpbox=[] + if scalesize < 1: + scale = math.sqrt(scalesize) + scalex = x_ave * (1 - scale) / 2 + scaley = y_ave* (1 - scale) / 2 + tmpbox = [(newx-x_ave) +scalex,(newy-y_ave) +scaley,(newx+x_ave)-scalex,(newy+y_ave)-scaley,vocab['object_name_to_idx'][newrmname]] + + if scalesize == 1: + tmpbox = [(newx - x_ave), (newy - y_ave), (newx + x_ave), (newy + y_ave),vocab['object_name_to_idx'][newrmname]] + if scalesize > 1: + scale = math.sqrt(scalesize) + scalex = x_ave * (scale - 1) / 2 + scaley = y_ave * (scale - 1) / 2 + tmpbox = [(newx-x_ave) - scalex, (newy-y_ave) - scaley,(newx+x_ave) + scalex, (newy+y_ave) + scaley,vocab['object_name_to_idx'][newrmname]] + # tmpboxin = [(newx-x_ave) ,(newy-y_ave) ,(newx+x_ave) ,(newy+y_ave) ,vocab['object_name_to_idx'][newrmname]] + # print(tmpboxin) + # print(tmpbox) + # print(scalesize) + newbox.append(tmpbox) + + fp_end.data.box=np.array(newbox) + + adjust_Edge=[] + for u, v in newEdge: + tmp=[index_mapping[int(u)],index_mapping[int(v)], 0] + adjust_Edge.append(tmp) + fp_end.data.edge=np.array(adjust_Edge) + rType = fp_end.get_rooms(tensor=False) + + rEdge = fp_end.get_triples(tensor=False)[:, [0, 2, 1]] + Edge = [[float(u), float(v), float(type2)] for u, v, type2 in rEdge] + Box=NewLay + boundary_mat = matlab.double(boundary) + rType_mat = matlab.double(rType.tolist()) + Edge_mat = matlab.double(Edge) + Box_mat=matlab.double(Box) + fp_end.data.boundary =np.array(boundary) + fp_end.data.rType =np.array(rType).astype(int) + fp_end.data.refineBox=np.array(Box) + fp_end.data.rEdge=np.array(Edge) + + box_refine = engview.align_fp(boundary_mat, Box_mat, rType_mat,Edge_mat ,18,False, nargout=3) + box_out=box_refine[0] + box_order=box_refine[1] + rBoundary=box_refine[2] + fp_end.data.newBox = np.array(box_out) + fp_end.data.order = np.array(box_order) + fp_end.data.rBoundary = [np.array(rb) for rb in rBoundary] + fp_end.data = add_dw_fp(fp_end.data) + sio.savemat("./static/" + userRoomID + ".mat", {"data": fp_end.data}) + flag=1 + return HttpResponse(json.dumps(flag), content_type="application/json") + + +def TransGraph_net(request): + userInfo = request.GET.get("userInfo") + testname = userInfo.split(',')[0] + trainname = request.GET.get("roomID") + mlresult = mltest.get_userinfo_net(testname, trainname) + + fp_end = mlresult[0] + boxes_pred = mlresult[1] + + data_js = {} + # fp_end hsedge + data_js["hsedge"] = (fp_end.get_triples(tensor=False)[:, [0, 2, 1]]).astype(np.float).tolist() + + # fp_end rmpos + rooms = fp_end.get_rooms(tensor=False) + room = rooms + center = [[(x1 + x2) / 2, (y1 + y2) / 2] for x1, y1, x2, y2 in fp_end.data.box[:, :4]] + + + + # boxes_pred + data_js["rmpos"] = [] + for k in range(len(center)): + node = float(room[k]), mdul.room_label[int(room[k])][1], center[k][0], center[k][1] + data_js["rmpos"].append(node) + boxes_end = boxes_pred.tolist() + data_js['roomret'] = [] + for k in range(len(room)): + data = boxes_end[k], [mdul.room_label[int(room[k])][1]] + data_js['roomret'].append(data) + + test_index = testNameList.index(testname.split(".")[0]) + data = test_data[test_index] + ex = "" + for i in range(len(data.boundary)): + ex = ex + str(data.boundary[i][0]) + "," + str(data.boundary[i][1]) + " " + data_js['exterior'] = ex + x0, x1 = np.min(data.boundary[:, 0]), np.max(data.boundary[:, 0]) + y0, y1 = np.min(data.boundary[:, 1]), np.max(data.boundary[:, 1]) + data_js['bbxarea'] = float((x1 - x0) * (y1 - y0)) + return HttpResponse(json.dumps(data_js), content_type="application/json") + + +def GraphSearch(request): + s=time.clock() + # Graph + Searchtype = ["BedRoom", "Bathroom", "Kitchen", "Balcony", "Storage"] + BedRoomlist = ["MasterRoom", "SecondRoom", "GuestRoom", "ChildRoom", "StudyRoom"] + NewGraph = json.loads(request.GET.get("NewGraph")) + + testname = request.GET.get("userRoomID") + newNode = NewGraph[0] + newEdge = NewGraph[1] + r_Num = np.zeros((1, 14)).tolist() + r_Mask = np.zeros((1, 14)).tolist() + r_Acc = np.zeros((1, 14)).tolist() + r_Num[0][0] = 1 + r_Mask[0][0] = 1 + r_Acc[0][0] = 1 + + for indx, rmname, x, y, scalesize in newNode: + r_Num[0][mdul.vocab['object_name_to_idx'][rmname]] = r_Num[0][mdul.vocab['object_name_to_idx'][rmname]] + 1 + r_Mask[0][mdul.vocab['object_name_to_idx'][rmname]] = 1 + if rmname in BedRoomlist: + r_Num[0][13] = r_Num[0][13] + 1 + r_Mask[0][13] = 1 + + test_index = testNameList.index(testname.split(".")[0]) + topkList = [] + topkList.clear() + data = test_data[test_index] + + Numrooms = json.loads(request.GET.get("Numrooms")) + + + roomactarr = Numrooms[0] + roomexaarr = Numrooms[1] + roomnumarr = [int(x) for x in Numrooms[2]] + test_data_topk=np.arange(0,74995) + + if np.sum(roomactarr) != 1 or np.sum(roomexaarr) != 1 or np.sum(roomnumarr) != 1: + test_num = train_data_rNum[test_data_topk] + # Number filter + + filter_func = get_filter_func(roomactarr, roomexaarr, roomnumarr) + indices = np.where(list(map(filter_func, test_num))) + # print("np.where(list(map(fil", test_num) + indices = list(indices) + test_data_topk = test_data_topk[indices[0]] + + test_num = train_data_eNum[test_data_topk] + # Graph filter + + edgematrix = np.zeros((5, 5)) + for indx1, indx2 in newEdge: + tmp1 = "" + tmp2 = "" + for indx, rmname, x, y, scalesize in newNode: + if indx1 == indx: + if rmname in BedRoomlist: + tmp1 = "BedRoom" + else: + tmp1 = rmname + for indx, rmname, x, y, scalesize in newNode: + if indx2 == indx: + if rmname in BedRoomlist: + tmp2 = "BedRoom" + else: + tmp2 = rmname + if tmp1 != "" and tmp2 != "": + edgematrix[Searchtype.index(tmp1)][Searchtype.index(tmp2)] = edgematrix[Searchtype.index(tmp1)][ + Searchtype.index(tmp2)] + 1 + edgematrix[Searchtype.index(tmp2)][Searchtype.index(tmp1)] = edgematrix[Searchtype.index(tmp2)][ + Searchtype.index(tmp1)] + 1 + edge = edgematrix.reshape((1, 25)) + filter_graphfunc = filter_graph(edge) + # rNum_list + eNumData = [] + + indices = np.where(list(map(filter_graphfunc, test_num))) + + indices = list(indices) + tf_trainsub=tf_train[test_data_topk[indices[0]]] + re_data = train_data[test_data_topk[indices[0]]] + test_data_tftopk=retrieve_bf(tf_trainsub, data, k=20) + re_data=re_data[test_data_tftopk] + if len(re_data) < 20: + topk = len(re_data) + else: + topk = 20 + topkList = [] + for i in range(topk): + topkList.append(str(re_data[i].name) + ".png") + + e=time.clock() + print('Graph Search time: %s Seconds' % (e - s)) + + print("topkList", topkList) + return HttpResponse(json.dumps(topkList), content_type="application/json") + + +def retrieve_bf(tf_trainsub, datum, k=20): + # compute tf for the data boundary + x, y = rt.compute_tf(datum.boundary) + y_sampled = rt.sample_tf(x, y, 1000) + dist = np.linalg.norm(y_sampled - tf_trainsub, axis=1) + if k > np.log2(len(tf_trainsub)): + index = np.argsort(dist)[:k] + else: + index = np.argpartition(dist, k)[:k] + index = index[np.argsort(dist[index])] + return index + + +if __name__ == "__main__": + pass \ No newline at end of file diff --git a/Interface/Img/data.mat.png b/Interface/Img/data.mat.png new file mode 100644 index 0000000000000000000000000000000000000000..f1850253c21f93e79c881e7dfd2d6cecb51963e0 Binary files /dev/null and b/Interface/Img/data.mat.png differ diff --git a/Interface/Img/data_test_converted.png b/Interface/Img/data_test_converted.png new file mode 100644 index 0000000000000000000000000000000000000000..e353f0429b080a6b2cd54d07bd609865a900a712 Binary files /dev/null and b/Interface/Img/data_test_converted.png differ diff --git a/Interface/Img/data_train_converted.png b/Interface/Img/data_train_converted.png new file mode 100644 index 0000000000000000000000000000000000000000..71996f79d42dd04b2a7a0838588910b90964fa2c Binary files /dev/null and b/Interface/Img/data_train_converted.png differ diff --git a/Interface/Img/interface.jpg b/Interface/Img/interface.jpg new file mode 100644 index 0000000000000000000000000000000000000000..75e2ada4fcbfdca7c8e1d6e1bb7e4931b75b4ef6 Binary files /dev/null and b/Interface/Img/interface.jpg differ diff --git a/Interface/Img/paper.png b/Interface/Img/paper.png new file mode 100644 index 0000000000000000000000000000000000000000..5c745ebf30d643c9ed7765fb682c6d2a6ba2b538 Binary files /dev/null and b/Interface/Img/paper.png differ diff --git a/Interface/align_fp/align_adjacent_room3.m b/Interface/align_fp/align_adjacent_room3.m new file mode 100644 index 0000000000000000000000000000000000000000..f2bbb1e11661da6daa704baf023dcdc2e792a3a4 --- /dev/null +++ b/Interface/align_fp/align_adjacent_room3.m @@ -0,0 +1,121 @@ +function [newBox, constraint] = align_adjacent_room3(box, tempBox, updated, type, threshold) +% position of box1 relative to box2 +% 0 left-above +% 1 left-below +% 2 left-of +% 3 above +% 4 inside +% 5 surrounding +% 6 below +% 7 right-of +% 8 right-above +% 9 right-below + + +newBox = box; +constraint = zeros(4, 2); +idx = 1; + +if type == 0 + alignV(true); + alignH(true); +elseif type == 1 + alignV(true); + alignH(false); +elseif type == 2 + align([2,1], [1,3], threshold); + align([2,2], [1,2], threshold/2); + align([2,4], [1,4], threshold/2); +elseif type == 3 + align([2,2], [1,4], threshold); + align([2,1], [1,1], threshold/2); + align([2,3], [1,3], threshold/2); +elseif type == 4 + align([2,1], [1,1], true); + align([2,2], [1,2], true); + align([2,3], [1,3], true); + align([2,4], [1,4], true); +elseif type == 5 + align([1,1], [2,1], true); + align([1,2], [2,2], true); + align([1,3], [2,3], true); + align([1,4], [2,4], true); +elseif type == 6 + align([2,4], [1,2], threshold); + align([2,1], [1,1], threshold/2); + align([2,3], [1,3], threshold/2); +elseif type == 7 + align([2,3], [1,1], threshold); + align([2,2], [1,2], threshold/2); + align([2,4], [1,4], threshold/2); +elseif type == 8 + alignV(false); + alignH(true); +elseif type == 9 + alignV(false); + alignH(false); +end + +constraint = constraint(1:idx-1, :); + +function alignV(isLeft) + if isLeft + idx1 = 1; + idx2 = 3; + else + idx1 = 3; + idx2 = 1; + end + + if abs(tempBox(2,idx1) - tempBox(1,idx2)) <= abs(tempBox(2,idx2) - tempBox(1,idx2)) + align([2,idx1], [1,idx2], threshold/2) + else + align([2,idx2], [1,idx2], threshold/2) + end +end + +function alignH(isAbove) + if isAbove + idx1 = 2; + idx2 = 4; + else + idx1 = 4; + idx2 = 2; + end + + if abs(tempBox(2,idx1) - tempBox(1,idx2)) <= abs(tempBox(2,idx2) - tempBox(1,idx2)) + align([2,idx1], [1,idx2], threshold/2) + else + align([2,idx2], [1,idx2], threshold/2) + end +end + +function align(idx1, idx2, threshold, attach) + if nargin < 4 + attach = false; + end + if abs(tempBox(idx1(1),idx1(2))- tempBox(idx2(1), idx2(2))) <= threshold + if updated(idx1(1), idx1(2)) && ~updated(idx2(1), idx2(2)) + newBox(idx2(1), idx2(2)) = newBox(idx1(1),idx1(2)); + elseif updated(idx2(1), idx2(2)) && ~updated(idx1(1), idx1(2)) + newBox(idx1(1), idx1(2)) = newBox(idx2(1),idx2(2)); + elseif ~updated(idx1(1), idx1(2)) && ~updated(idx2(1), idx2(2)) + if attach + newBox(idx2(1), idx2(2)) = newBox(idx1(1),idx1(2)); + else + y = (newBox(idx1(1),idx1(2)) + newBox(idx2(1), idx2(2)))/2; + newBox(idx1(1),idx1(2)) = y; + newBox(idx2(1), idx2(2)) = y; + end + end + + if idx1(1) == 1 + constraint(idx, :) = [idx1(2) idx2(2)]; + else + constraint(idx, :) = [idx2(2) idx1(2)]; + end + idx = idx + 1; + end +end + +end \ No newline at end of file diff --git a/Interface/align_fp/align_fp.m b/Interface/align_fp/align_fp.m new file mode 100644 index 0000000000000000000000000000000000000000..21d1ef3168ff08f688e40478cc1ce51bd0ed495b --- /dev/null +++ b/Interface/align_fp/align_fp.m @@ -0,0 +1,108 @@ +function [newBox, order, rBoundary] = align_fp(boundary, rBox, rType, rEdge, fp, threshold, drawResult) +% align the neighboring rooms first and then align with the boundary + +if nargin < 7 + drawResult =false; +end + +% pre-processing: +% move the edge relation w.r.t. living room to the end +livingIdx = find(rType==0); +idx = rEdge(:,1) == livingIdx-1 | rEdge(:,2) == livingIdx-1; +% a = rEdge(~idx, :); +% b = rEdge(idx, :); +% rEdge = [a; b]; +rEdge = rEdge(~idx, :); +entranceBox = get_entrance_space(boundary(1:2, 1:2), boundary(1,3), threshold); + +if drawResult + clf + subplot(2,2,1) + plot_fp(rBox, boundary, rType, entranceBox); + title('original'); +end + +%% option #1: use greedy method: align with boundary first and then neighbor +% 1. align with boundary after the neighbors have been aligned +[~, newBox, updated] = align_with_boundary(rBox, boundary, threshold, rType); + +if drawResult + subplot(2,2,2) + plot_fp(newBox, boundary, rType, entranceBox); + title('Align with boundary'); +end + + +% 2. for each adjacent pair of room, +[~, newBox, ~] = align_neighbor(newBox, rEdge, updated, threshold+6); +if drawResult + subplot(2,2,3) + plot_fp(newBox, boundary, rType, entranceBox); + title('Align with neighbors'); +end + +% 3. regularize fp, include crop using boundary, gap filling +[newBox, order] = regularize_fp(newBox, boundary, rType); + +% 4. generate the room polygons +[newBox, rBoundary] = get_room_boundary(newBox, boundary, order); + +if drawResult + subplot(2,2,4) + plot_fp(newBox(order,:), boundary, rType(order), entranceBox); + title('Regularize fp'); +end + +% %% option #2: use optimization to align neighbors, and then align the boundary +% % 1. get the constraint from the adjacent rooms, and optimize +% %[constraint1, ~, ~] = align_with_boundary(rBox, boundary, threshold, rNode); +% [constraint2, ~, ~] = align_neighbor(rBox, rEdge, [], threshold+2); +% newBox = optimize_fp(rBox, [], constraint2); +% if drawResult +% subplot(3,4,6) +% plot_fp(newBox, boundary, rNode, entranceBox); +% title('Optimize the neighboring'); +% end +% +% % 2. align with boundary after the neighbors have been aligned +% [constraint1, newBox2, ~] = align_with_boundary(newBox, boundary, threshold, rNode); +% if drawResult +% subplot(3,4,7) +% plot_fp(newBox2, boundary, rNode, entranceBox); +% title('Align with boundary w/o optimization'); +% end +% +% % 3. regularize fp, include crop using boundary, gap filling +% [newBox2, order] = regularize_fp(newBox2, boundary, rNode); +% if drawResult +% subplot(3,4,8) +% plot_fp(newBox2(order,:), boundary, rNode(order,:), entranceBox); +% title('Regularize fp'); +% end +% +% +% +% newBox = optimize_fp(newBox, constraint1, constraint2); +% if drawResult +% subplot(3,4,11) +% plot_fp(newBox, boundary, rNode, entranceBox); +% title('Align with boundary with optimization'); +% end +% +% % 3. regularize fp, include crop using boundary, gap filling +% [newBox, order] = regularize_fp(newBox, boundary, rNode); +% if drawResult +% subplot(3,4,12) +% plot_fp(newBox(order,:), boundary, rNode(order,:), entranceBox); +% title('Regularize fp'); +% if ~isempty(figName) +% saveas(gcf, figName); +% end +% end +% + + + +%% +end + diff --git a/Interface/align_fp/align_neighbor.m b/Interface/align_fp/align_neighbor.m new file mode 100644 index 0000000000000000000000000000000000000000..7fae9328b43615ae54c40e3179dfe0b0340ef795 --- /dev/null +++ b/Interface/align_fp/align_neighbor.m @@ -0,0 +1,53 @@ +function [constraint, box, updated] = align_neighbor(box, rEdge, updated, threshold) + +if isempty(updated) + updated = false(size(box)); +end + +tempBox = box; +constraint = zeros(size(rEdge, 1)*3, 2); +iBegin = 1; +checked = false(size(rEdge, 1), 1); +updatedCount = get_updated_count(updated, rEdge); +for i = 1:size(rEdge, 1) + I = find(~checked); + [~, t] = maxk(updatedCount(I), 1); + checked(I(t)) = true; + idx = rEdge(I(t),1:2)+1; + [b, c] = align_adjacent_room3(box(idx, :), tempBox(idx, :), updated(idx,:), rEdge(I(t),3), threshold); + for j = 1:length(idx) + + updated(idx(j), c(:,j)) = true; + + c(:, j) = (c(:,j)-1)*size(box,1) + double(idx(j)); + + if b(j, 1) == b(j, 3) + b(j, [1 3]) = box(idx(j), [1 3]); + updated(idx(j), c(:,j)) = false; + end + if b(j, 2) == b(j, 4) + b(j, [2 4]) = box(idx(j), [2 4]); + updated(idx(j), c(:,j)) = false; + end + + end + box(idx, :) = b; + + + cNum = size(c, 1); + + constraint(iBegin:iBegin+cNum-1, :) = c; + iBegin = iBegin+cNum; + + updatedCount = get_updated_count(updated, rEdge); +end +constraint = constraint(1:iBegin-1, :); + +function updatedCount = get_updated_count(updated, rEdge) + updatedCount = zeros(size(rEdge, 1), 1); + for k = 1:size(rEdge, 1) + index = rEdge(k,1:2)+1; + updatedCount(k) = sum(sum(updated(index,:))); + end +end +end \ No newline at end of file diff --git a/Interface/align_fp/align_with_boundary.m b/Interface/align_fp/align_with_boundary.m new file mode 100644 index 0000000000000000000000000000000000000000..fab88f12ddfe050f8959812f9b784c610e61d094 --- /dev/null +++ b/Interface/align_fp/align_with_boundary.m @@ -0,0 +1,29 @@ +function [constraint, box, updated] = align_with_boundary(box, boundary, threshold, rType) +tempBox = box; +updated = false(size(box)); +closedSeg = zeros(size(box)); +distSeg = zeros(size(box)); +for i = 1:length(box) + [closedSeg(i,:), distSeg(i,:)] = find_close_seg(box(i,:), boundary); +end + + +box(distSeg <= threshold) = closedSeg(distSeg <= threshold); +updated(distSeg <= threshold) = true; +idx = find(distSeg <= threshold); +constraint = [idx closedSeg(idx)]; + + +% check if any room box blocks the door +entranceBox = get_entrance_space(boundary(1:2, 1:2), boundary(1,3), threshold); +entrancePoly = polyshape(entranceBox([1 1 3 3]), entranceBox([2 4 4 2])); +for i = 1:length(box) + if rType(i) ~= 10 && rType(i) ~= 0 + roomPoly = polyshape(box(i, [1 1 3 3]), box(i, [2 4 4 2])); + if overlaps(entrancePoly, roomPoly) + box(i,:) = shrink_box(roomPoly, entrancePoly, boundary(1,3)); + updated(i, box(i,:)==tempBox(i,:)) = false; + updated(i, box(i,:)~=tempBox(i,:)) = true; + end + end +end diff --git a/Interface/align_fp/find_close_seg.m b/Interface/align_fp/find_close_seg.m new file mode 100644 index 0000000000000000000000000000000000000000..97132947933b8484c75d491958d8c62a040e5c7f --- /dev/null +++ b/Interface/align_fp/find_close_seg.m @@ -0,0 +1,74 @@ +function [closedSeg, distSeg, idx] = find_close_seg(box, boundary) + +% need to carefully select the closed wall seg for each box +% cannot introduce a hole inside the boundary + +isNew = boundary(:,4); +boundary = double(boundary(~isNew, :)); + +% get the ordered horizontal and vertical segments on the boundary +bSeg = [boundary(:, 1:2), boundary([2:end 1], 1:2), boundary(:,3)]; +vSeg = bSeg(mod(boundary(:,3), 2)==1, :); +vSeg(vSeg(:,5)==3, [2 4]) = vSeg(vSeg(:,5)==3, [4 2]); +[~, I] = sort(vSeg(:,1)); +vSeg = vSeg(I,:); + +hSeg = bSeg(mod(boundary(:,3), 2)==0, :); +hSeg(hSeg(:,5)==2, [1 3]) = hSeg(hSeg(:,5)==2, [3 1]); +[~, I] = sort(hSeg(:,2)); +hSeg = hSeg(I,:); + +closedSeg = ones(1,4)*256; +distSeg = ones(1,4)*256; +idx = zeros(1, 4); + +% check vertial seg +for i = 1:size(vSeg,1) + seg = vSeg(i, :); + vdist = 0; + if seg(4) <= box(2) + vdist = box(2) - seg(4); + elseif seg(2) >= box(4) + vdist = seg(2) - box(4); + end + + hdist = box([1 3]) - seg(1); + dist1 = norm(double([hdist(1), vdist])); + dist3 = norm(double([hdist(2), vdist])); + + if dist1 < distSeg(1) && dist1 <= dist3 && hdist(1) > 0 + distSeg(1) = dist1; + idx(1) = i; + closedSeg(1) = seg(1); + elseif dist3 < distSeg(3) && hdist(2) < 0 + distSeg(3) = dist3; + idx(3) = i; + closedSeg(3) = seg(3); + end +end + +% check horizontal seg +for i = 1:size(hSeg,1) + + seg = hSeg(i, :); + hdist = 0; + if seg(3) <= box(1) + hdist = box(1) - seg(3); + elseif seg(1) >= box(3) + hdist = seg(1) - box(3); + end + + vdist = box([2 4]) - seg(2); + dist2 = norm(double([vdist(1), hdist])); + dist4 = norm(double([vdist(2), hdist])); + + if dist2 <= dist4 && dist2 < distSeg(2) && vdist(1) > 0 + distSeg(2) = dist2; + idx(2) = i; + closedSeg(2) = seg(2); + elseif dist4 < distSeg(4) && vdist(2) < 0 + distSeg(4) = dist4; + idx(4) = i; + closedSeg(4) = seg(4); + end +end \ No newline at end of file diff --git a/Interface/align_fp/find_room_order.m b/Interface/align_fp/find_room_order.m new file mode 100644 index 0000000000000000000000000000000000000000..0524e2c2b75bcd2c1c88878a6e6f2eb41eeafa90 --- /dev/null +++ b/Interface/align_fp/find_room_order.m @@ -0,0 +1,29 @@ +function order = find_room_order(M) + +n = size(M,1); +G = digraph(M); +name = cell(n,1); +for i = 1:n + name{i} = num2str(i); +end +G.Nodes.Name = name; + +order = zeros(n, 1); +i = 1; +while i <= n + D = indegree(G); + c = find(D==0); + if isempty(c) + idx = find(D==1); + c = setdiff(idx, order); + order(i) = str2double(G.Nodes.Name{c(1)}); + G = rmnode(G, c(1)); + i = i+1; + else + for j = 1:length(c) + order(i+j-1) = str2double(G.Nodes.Name{c(j)}); + end + G = rmnode(G, c); + i = i + length(c); + end +end \ No newline at end of file diff --git a/Interface/align_fp/get_entrance_space.m b/Interface/align_fp/get_entrance_space.m new file mode 100644 index 0000000000000000000000000000000000000000..50540c2e83358873297873fa3c64cff581573eef --- /dev/null +++ b/Interface/align_fp/get_entrance_space.m @@ -0,0 +1,14 @@ + +function doorBox = get_entrance_space(doorSeg, doorOri, threshold) + +doorBox = [doorSeg(1,:) doorSeg(2,:)]; +if doorOri == 0 + doorBox(4) = doorBox(4) + threshold; +elseif doorOri == 1 + doorBox(1) = doorBox(1) - threshold; +elseif doorOri == 2 + doorBox(2) = doorBox(2) - threshold; +elseif doorOri == 3 + doorBox(3) = doorBox(3) + threshold; +end + \ No newline at end of file diff --git a/Interface/align_fp/get_room_boundary.m b/Interface/align_fp/get_room_boundary.m new file mode 100644 index 0000000000000000000000000000000000000000..cd29593ed4ca94585e1204f17fdcc4089c55929b --- /dev/null +++ b/Interface/align_fp/get_room_boundary.m @@ -0,0 +1,25 @@ +function [newBox, rBoundary] = get_room_boundary(box, boundary, order) + +isNew = boundary(:,4); +polyBoundary = polyshape(boundary(~isNew,1), boundary(~isNew,2)); + +poly = cell(size(box,1), 1); +for i = 1:size(box,1) + poly{i} = polyshape(box(i, [1 1 3 3]), box(i, [2 4 4 2])); +end + +newBox = box; +rBoundary = cell(size(box,1), 1); +for i = 1:size(box,1) + idx = order(i); + + rPoly = intersect(polyBoundary, poly{idx}); + for j = i+1:size(box,1) + rPoly = subtract(rPoly, poly{order(j)}); + end + rBoundary{idx} = rPoly.Vertices; + [xLimit, yLimit]= boundingbox(rPoly); + if ~isempty(xLimit) + newBox(idx,:) = [xLimit(1) yLimit(1) xLimit(2), yLimit(2)]; + end +end \ No newline at end of file diff --git a/Interface/align_fp/regularize_fp.m b/Interface/align_fp/regularize_fp.m new file mode 100644 index 0000000000000000000000000000000000000000..8668aa72597d09a53e191ceeb372df7da24d13c2 --- /dev/null +++ b/Interface/align_fp/regularize_fp.m @@ -0,0 +1,111 @@ +function [box, order] = regularize_fp(box, boundary, rType) + +% 1. use the boundary to crop each room box +isNew = boundary(:,4); +polyBoundary = polyshape(boundary(~isNew,1), boundary(~isNew,2)); +for i = 1:size(box, 1) + polyRoom = polyshape(box(i, [1 1 3 3]), box(i, [2 4 4 2])); + [xLimit, yLimit] = boundingbox(intersect(polyBoundary,polyRoom)); + if isempty(xLimit) + disp('One room outside the building!'); + else + box(i,:) = [xLimit(1) yLimit(1) xLimit(2), yLimit(2)]; + end +end + + +% 2. check if there is any overlapped region to determine the layer of boxes +orderM = false(size(box,1), size(box,1)); +for i = 1:size(box,1) + polyRoom1 = polyshape(box(i, [1 1 3 3]), box(i, [2 4 4 2])); + area1 = area(polyRoom1); + for j = i+1:size(box,1) + polyRoom2 = polyshape(box(j, [1 1 3 3]), box(j, [2 4 4 2])); + area2 = area(polyRoom2); + inter = intersect(polyRoom1, polyRoom2); + if inter.NumRegions >= 1 + if area1 <= area2 % may need to add the FP into consideration + orderM(i,j) = true; + else + orderM(j,i) = true; + end + end + end +end +order = 1:size(box,1); +if any(orderM(:)) + order = find_room_order(orderM); +end +order = order(end:-1:1); + +% 3. check if there are more than one uncovered regions inside the building +livingIdx = find(rType==0); +for i = 1:size(box, 1) + if i ~= livingIdx + if box(i,1)==box(i,3) || box(i,2)==box(i,4) + disp('Empty box!!!'); + else + polyRoom = polyshape(box(i, [1 1 3 3]), box(i, [2 4 4 2])); + polyBoundary = subtract(polyBoundary,polyRoom); + end + + end +end +livingPoly = polyshape(box(livingIdx, [1 1 3 3]), box(livingIdx, [2 4 4 2])); + +gap = polyBoundary; +if gap.NumRegions == 1 + [xLimit, yLimit] = boundingbox(gap); + box(livingIdx,:) = [xLimit(1) yLimit(1) xLimit(2), yLimit(2)]; +else + rIdx = find(isnan(gap.Vertices(:,1))); + rIdx = [rIdx; size(gap.Vertices,1)+1]; + + % for each region, check if it intersects with the living room, + % otherwise get the room label and find the room that should cover + % the region + + region = cell(length(rIdx), 1); + overlapArea = zeros(length(rIdx), 1); + closeRoomIdx = zeros(length(rIdx), 1); + idx = 1; + for k = 1:length(rIdx) + regionV = gap.Vertices(idx:rIdx(k)-1, :); + idx = rIdx(k) + 1; + region{k} = polyshape(regionV); + + if overlaps(region{k}, livingPoly) + iter = intersect(region{k}, livingPoly); + overlapArea(k) = area(iter); + end + + [x, y] = centroid(region{k}); + center = [x, y]; + + dist = 256; + bIdx = 0; + for i = 1:size(box, 1) + b = box(i, :); + bCenter = double([(b(:,1)+b(:,3))/2, (b(:,2)+b(:,4))/2]); + d = norm(bCenter-center); + if d line1.level: contactWall.dir=1 + else: contactWall.dir=3 + contactWall.rect = np.array([minw,minh,maxw-minw,maxh-minh]) + else: + minw = line1.level if not reverse else line2.level#min(line1.level,line2.level) + maxw = line1.level if not reverse else line2.level#max(line1.level,line2.level) + minh = max(line1.minLevel,line2.minLevel) + maxh = min(line1.maxLevel,line2.maxLevel) + if center1[0] > line1.level: contactWall.dir=0 + else: contactWall.dir=2 + contactWall.rect = np.array([minw,minh,maxw-minw,maxh-minh]) + contactWalls.append(contactWall) + return contactWalls + +def find_longest_wall(contactWalls,dtype=1): + contactLength = 0 + openWall = None + for i in range(len(contactWalls)): + maxLength = max(contactWalls[i].width,contactWalls[i].height) + if maxLength>contactLength: + contactLength = maxLength + openWall = contactWalls[i] + if contactLength!=0: + # @todo: adjust door + openWall = adjust_door(openWall,dtype) + entry = Entry() + entry.type = dtype + entry.entry = openWall + assert entry.entry.dir!=-1, "find longest wall with dir -1!" + return entry + return None + +def find_closest_wall(candidateDoors,frontDoorCenter,dtype=1,boundary_lines=[]): + dis = 1e8 + door = None + for i in range(len(candidateDoors)): + maxLength = max(candidateDoors[i].width,candidateDoors[i].height) + if maxLength<12:continue + + valid = True + line = candidateDoors[i].to_line() + for b_line in boundary_lines: + if line.is_contact(b_line): + valid = False + break + if not valid: continue + + center = candidateDoors[i].center + candidateDis = np.sum(np.power((center-frontDoorCenter),2)) + if dis>candidateDis: + dis = candidateDis + door = candidateDoors[i] + if door is not None: + door = adjust_door(door,dtype) + entry = Entry() + entry.type = dtype + entry.entry = door + assert entry.entry.dir!=-1, "find closest wall with dir -1!" + return entry + return None + +def adjust_door(door,dtype=1): + if door.dir in [1,3]: + if dtype==1: + door.rect[0] = door.rect[0]+door.rect[2]/8 + door.rect[2] = door.rect[2]*3/4 + else: + # door.rect[0] = door.center[0]-6 + door.rect[2] = min(2*6,door.rect[2]) + else: + if dtype==1: + door.rect[1] = door.rect[1]+door.rect[3]/8 + door.rect[3] = door.rect[3]*3/4 + else: + # door.rect[1] = door.center[1]-6 + door.rect[3] = min(2*6,door.rect[3]) + return door + +def add_interior_door(rooms,living_idx,house): + frontDoorCenter = house.boundary[:2].mean(0) + for i in range(len(rooms)): + if i==living_idx:continue + # 1. Balcony: find the longest door + # 2. Public Area: find the longest door + # 3. Others: + # 3.1 Contact with living room: find the cloest door with the front door + # 3.2 Others: find the longest wall + if rooms[i].label == 'Balcony': + contactWalls = [] + for j in range(len(rooms)): + if i!=j: + contactWalls.extend(find_contact_walls(rooms[i],rooms[j])) + + rooms[i].entry = find_longest_wall(contactWalls,dtype=1) + else: + contactWalls = find_contact_walls(rooms[i],rooms[living_idx]) + if len(contactWalls)>0: + if rooms[i].type == 'PublicArea': + rooms[i].entry = find_longest_wall(contactWalls,dtype=1) + else: + candidateDoors = [ + wall for wall in contactWalls + if (wall.width>wall.height and wall.width>2*6) or + (wall.height>wall.width and wall.height>2*6) + ] + if len(candidateDoors)==0: + rooms[i].entry = find_longest_wall(contactWalls,dtype=0) + else: + rooms[i].entry = find_closest_wall(contactWalls,frontDoorCenter,dtype=0,boundary_lines=house.lines) + else: + contactWalls = [] + for j in range(len(rooms)): + if i!=j: + contactWalls.extend(find_contact_walls(rooms[i],rooms[j])) + if len(contactWalls)>0: + rooms[i].entry = find_closest_wall(contactWalls,frontDoorCenter,dtype=1,boundary_lines=house.lines) + + return rooms + +def find_windows(contactWalls,wtypes=['mid'],keep_longest=False): + windows = [] + contactLength = 1e8 + for i in range(len(contactWalls)): + contactWall = contactWalls[i] + maxLength = max(contactWall.width,contactWall.height) + if ('large' in wtypes and maxLength>3*12): + contactWalls[i] = adjust_window(contactWalls[i],'large') + windows.append(contactWall) + elif 'mid' in wtypes and maxLength>3*9: + contactWalls[i] = adjust_window(contactWalls[i],'mid') + windows.append(contactWall) + elif 'small' in wtypes and maxLength>2*5: + contactWalls[i] = adjust_window(contactWalls[i],'small') + windows.append(contactWall) + elif 'balcony' in wtypes and maxLength>2*5: + contactWalls[i] = adjust_window(contactWalls[i],'balcony') + windows.append(contactWall) + return windows + +def find_window_by_length(contactWalls,wtypes=['mid'],ltype='max'): + window = None + contactLength = 0 if ltype=='max' else 1e8 + ufunc = np.greater if ltype=='max' else np.less + for i in range(len(contactWalls)): + contactWall = contactWalls[i] + maxLength = max(contactWall.width,contactWall.height) + if ufunc(maxLength,contactLength): + if 'large' in wtypes and maxLength>3*12: + contactWalls[i] = adjust_window(contactWalls[i],'large') + window = contactWalls[i] + contactLength = maxLength + elif 'mid' in wtypes and maxLength>3*9: + contactWalls[i] = adjust_window(contactWalls[i],'mid') + window = contactWalls[i] + contactLength = maxLength + elif 'small' in wtypes and maxLength>2*5: + contactWalls[i] = adjust_window(contactWalls[i],'small') + window = contactWalls[i] + contactLength = maxLength + return [window] if window is not None else [] + +def adjust_window(window,wtype='mid'): + hl = {'small':5,'mid':9,'large':12} + if window.dir in [1,3]: + if wtype=='balcony': + window.rect[0] = window.rect[0]+window.rect[2]/10 + window.rect[2] = window.rect[2]*4/5 + else: + length = hl[wtype] + window.rect[0] = window.center[0]-length + window.rect[2] = 2*length + else: + if wtype=='balcony': + window.rect[1] = window.rect[1]+window.rect[3]/10 + window.rect[3] = window.rect[3]*4/5 + else: + length = hl[wtype] + window.rect[1] = window.center[1]-length + window.rect[3] = 2*length + return window + +def add_window(rooms,house): + for i in range(len(rooms)): + # 1. Balcony: small(half=5) + # 2. Living Room: mid(half=9),large(half=12) + # 3. Bathroom: shortest wall, small + # 4. Others: longest wall, mid + contactWalls = find_contact_walls(rooms[i],house,reverse=True) + if rooms[i].label == 'Balcony': + rooms[i].windows.extend(find_windows(contactWalls,['balcony'])) + elif rooms[i].label == 'LivingRoom': + rooms[i].windows.extend(find_windows(contactWalls,['mid','large'])) + elif rooms[i].label == 'Bathroom': + rooms[i].windows.extend(find_window_by_length(contactWalls,['small'],'min')) + else: + rooms[i].windows.extend(find_window_by_length(contactWalls,['mid'],'max')) + return rooms + +def rooms_to_numpy(rooms): + doors = [] + windows = [] + for i in range(len(rooms)): + if rooms[i].entry is not None: + door = rooms[i].entry.entry + doors.append([i,door.rect[0],door.rect[1],door.rect[2],door.rect[3],door.dir]) + if len(rooms[i].windows) > 0: + ws = [[i,w.rect[0],w.rect[1],w.rect[2],w.rect[3],w.dir] for w in rooms[i].windows] + windows.extend(ws) + return np.array(doors),np.array(windows) + +def add_door_window(data): + boundary = data.boundary + living_idx = np.where(data.rType==0)[0][0] + rooms = Room.rooms_from_data(data) + house = Room.from_boundary(boundary[:,:2]) + house.lines = house.lines[1:] + + rooms = add_interior_door(rooms,living_idx,house) + rooms = add_window(rooms,house) + + return rooms_to_numpy(rooms) + +def add_dw_fp(data): + # data要有 boundary(网络输出经过matlab新返回的),newBox(网络输出经过matlab新返回的),rType,rBoundary(网络输出经过matlab新返回的) + doors,windows = add_door_window(data) + data.doors = doors + data.windows = windows + return data diff --git a/Interface/model/floorplan.py b/Interface/model/floorplan.py new file mode 100644 index 0000000000000000000000000000000000000000..8326d9da6e8d2314de4fe71fb39e515f9e35e8e7 --- /dev/null +++ b/Interface/model/floorplan.py @@ -0,0 +1,210 @@ +import torch +import scipy.io as sio +import numpy as np +import cv2 +import copy +from model.utils import * + + +class FloorPlan(): + + def __init__(self, data, train=False, rot=None): + self.data = copy.deepcopy(data) + self._get_rot() + if rot is not None: + if train: + boxes = self.data.box[:, :4][:, [1, 0, 3, 2]] + boxes = align_box(boxes, self.rot, rot)[:, [1, 0, 3, 2]] + self.data.box[:, :4] = boxes + points = self.data.boundary[:, :2][:, [1, 0]] + points = align_points(points, self.rot, rot)[:, [1, 0]] + self.data.boundary[:, :2] = points + self._get_rot() + + def _get_rot(self): + door_line = self.data.boundary[:2, :2] # [:,[1,0]] + c = door_line.mean(0) - np.array([127.5,127.5]) + theta = np.arctan2(c[1], c[0]) + np.pi # [-pi,pi] + self.rot = theta + + def get_input_boundary(self, tensor=True): + external = self.data.boundary[:, :2] + door = self.data.boundary[:2, :2] + + boundary = np.zeros((128, 128), dtype=float) + inside = np.zeros((128, 128), dtype=float) + front = np.zeros((128, 128), dtype=float) + + pts = np.concatenate([external, external[:1]]) // 2 + pts_door = door // 2 + + cv2.fillPoly(inside, pts.reshape(1, -1, 2), 1.0) + cv2.polylines(boundary, pts.reshape(1, -1, 2), True, 1.0, 3) + cv2.polylines(boundary, pts_door.reshape(1, -1, 2), True, 0.5, 3) + cv2.polylines(front, pts_door.reshape(1, -1, 2), True, 1.0, 3) + + input_image = np.stack([inside, boundary, front], -1) + if tensor: input_image = torch.tensor(input_image).permute((2, 0, 1)).float() + return input_image + + def get_inside_box(self, tensor=True): + external = self.data.boundary[:, :2] + + X, Y = np.linspace(0, 1, 256), np.linspace(0, 1, 256) + x0, x1 = np.min(external[:, 0]), np.max(external[:, 0]) + y0, y1 = np.min(external[:, 1]), np.max(external[:, 1]) + box = np.array([[X[x0], Y[y0], X[x1], Y[y1]]]) + if tensor: box = torch.tensor(box).float() + return box + + def get_rooms(self, tensor=True): + rooms = self.data.box[:, -1] + if tensor: rooms = torch.tensor(rooms).long() + return rooms + + def get_attributes(self, gsize=5, alevel=10, relative=True, tensor=True): + boxes = self.data.box[:, :4][:, [1, 0, 3, 2]] + external = self.data.boundary + + h, w = 256, 256 + if relative: + external = np.asarray(external) + x0, x1 = np.min(external[:, 0]), np.max(external[:, 0]) + y0, y1 = np.min(external[:, 1]), np.max(external[:, 1]) + h, w = y1 - y0, x1 - x0 + boxes = boxes - np.array([y0, x0, y0, x0], dtype=float) + boxes /= np.array([h, w, h, w]) + boxes[:, 2:] -= boxes[:, :2] # y1,x1->h,w + boxes[:, :2] += boxes[:, 2:] / 2 # y0,x0->yc,xc + + l = len(boxes) + gbins = np.linspace(0,1,gsize+1) # [1,gsize] + gbins[0],gbins[-1]=-np.inf,np.inf + abins = np.linspace(0,1,alevel+1) # [1,gsize] + abins[0],abins[-1]=-np.inf,np.inf + + attributes = np.zeros((l,gsize*gsize+alevel)) + # pos: xc*gsize+yc*gsize*gsize + attributes[range(l),(np.digitize(boxes[:,0],gbins)-1)*gsize+np.digitize(boxes[:,1],gbins)-1]=1 + # area:(w*h) + attributes[range(l),gsize*gsize+np.digitize(boxes[:,2:].prod(1),abins)-1]=1 + if tensor: attributes = torch.tensor(attributes).float() + return attributes + + def get_triples(self, random=False, tensor=True): + boxes = self.data.box[:, :4][:, [1, 0, 3, 2]] + + triples = [] + # add edge relation + for u, v, _ in self.data.edge: + uy0, ux0, uy1, ux1 = boxes[u] + vy0, vx0, vy1, vx1 = boxes[v] + uc = (uy0 + uy1) / 2, (ux0 + ux1) / 2 + vc = (vy0 + vy1) / 2, (vx0 + vx1) / 2 + + # surrounding/inside -> X four quadrants + if ux0 < vx0 and ux1 > vx1 and uy0 < vy0 and uy1 > vy1: + relation = 'surrounding' + elif ux0 >= vx0 and ux1 <= vx1 and uy0 >= vy0 and uy1 <= vy1: + relation = 'inside' + else: + relation = point_box_relation(uc, boxes[v]) + + triples.append([u, vocab['pred_name_to_idx'][relation], v]) + + triples = np.array(triples, dtype=int) + if tensor: triples = torch.tensor(triples).long() + return triples + + def vis_box(self): + h, w = 128, 128 + image = np.full((h, w, 4), 0, dtype=np.uint8) + + boxes = self.data.box[:, :4] // 2 + objs = self.data.box[:, -1] + + for i, obj in enumerate(objs): + if obj == 14: continue + color = colormap_255[obj] + box = boxes[i] + cv2.rectangle(image, (box[0], box[1]), (box[2], box[3]), (color[0], color[1], color[2], 255), 3) + + return image + + def get_test_data(self, tensor=True): + boundary = self.get_input_boundary(tensor=tensor) + inside_box = self.get_inside_box(tensor=tensor) + rooms = self.get_rooms(tensor=tensor) + attrs = self.get_attributes(tensor=tensor) + triples = self.get_triples(random=False, tensor=tensor) + return boundary, inside_box, rooms, attrs, triples + + def adapt_graph(self, fp_graph): + fp = FloorPlan(fp_graph.data, train=True, rot=self.rot) + g_external = fp.data.boundary[:, :2] + gx0, gx1 = np.min(g_external[:, 0]), np.max(g_external[:, 0]) + gy0, gy1 = np.min(g_external[:, 1]), np.max(g_external[:, 1]) + gw, gh = gx1 - gx0, gy1 - gy0 + + fp.data.boundary = self.data.boundary + b_external = self.data.boundary[:, :2] + bx0, bx1 = np.min(b_external[:, 0]), np.max(b_external[:, 0]) + by0, by1 = np.min(b_external[:, 1]), np.max(b_external[:, 1]) + bh, bw = by1 - by0, bx1 - bx0 + box_adapter = lambda box: (((box - np.array([gx0, gy0, gx0, gy0])) * np.array([bw, bh, bw, bh])) / np.array( + [gw, gh, gw, gh]) + np.array([bx0, by0, bx0, by0])).astype(int) + + fp.data.box[:, :4] = np.apply_along_axis(box_adapter, 1, fp.data.box[:, :4]) + return fp + + def adjust_graph(self): + external = self.data.boundary[:, :2] + bx0, bx1 = np.min(external[:, 0]), np.max(external[:, 0]) + by0, by1 = np.min(external[:, 1]), np.max(external[:, 1]) + hw_b = np.array([by1 - by0, bx1 - bx0]) + step = hw_b / 10 + + pts = np.concatenate([external, external[:1]]) + mask = np.zeros((256, 256), dtype=np.uint8) + cv2.fillPoly(mask, pts.reshape(1, -1, 2), 255) + # plt.imshow(mask) + # plt.show() + mask = cv2.resize(mask[by0:by1 + 1, bx0:bx1 + 1], (10, 10)) + # plt.imshow(mask) + # plt.show() + mask[mask > 0] = 255 + + outside_rooms = [] + for i in range(len(self.data.box)): + box = self.data.box[i][:4][[1, 0, 3, 2]] + center = (box[:2] + box[2:]) / 2 + center55 = ((center - np.array([by0, bx0])) * 10 / hw_b).astype(int) + + if not mask[center55[0], center55[1]]: + outside_rooms.append([i, center55]) + + candicate_coords55 = {} + for i, coords55 in outside_rooms: + row, col = coords55 + # left/right/up/down + candicate_coords55[i] = np.array([ + next((col-c for c in range(col,-1,-1) if mask[row,c]==255),255), + next((c-col for c in range(col+1,5) if mask[row,c]==255),255), + next((row-r for r in range(row,-1,-1) if mask[r,col]==255),255), + next((r-row for r in range(row+1,5) if mask[r,col]==255),255)]) + + signs = np.array([ + [0, -1, 0, -1], + [0, 1, 0, 1], + [-1, 0, -1, 0], + [1, 0, 1, 0] + ]) + + for i, coords55 in outside_rooms: + deltas = candicate_coords55[i] + idx = np.argmin(deltas) + self.data.box[i, :4] += (signs[idx] * deltas[idx] * np.tile(step, 2)).astype(int)[[1, 0, 3, 2]] + + +if __name__ == "__main__": + pass diff --git a/Interface/model/graph.py b/Interface/model/graph.py new file mode 100644 index 0000000000000000000000000000000000000000..83f48a48ebe50d04de6e12745bc334428f048240 --- /dev/null +++ b/Interface/model/graph.py @@ -0,0 +1,147 @@ +#!/usr/bin/python +# +# Copyright 2018 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import torch +import torch.nn as nn + +from model.layers import build_mlp + +""" +PyTorch modules for dealing with graphs. +""" + + +def _init_weights(module): + if hasattr(module, 'weight'): + if isinstance(module, nn.Linear): + nn.init.kaiming_normal_(module.weight) + + +class GraphTripleConv(nn.Module): + """ + A single layer of scene graph convolution. + """ + + def __init__(self, input_dim, attributes_dim=0, output_dim=None, hidden_dim=512, + pooling='avg', mlp_normalization='none'): + super(GraphTripleConv, self).__init__() + if output_dim is None: + output_dim = input_dim + self.input_dim = input_dim + self.output_dim = output_dim + self.hidden_dim = hidden_dim + + assert pooling in ['sum', 'avg'], 'Invalid pooling "%s"' % pooling + self.pooling = pooling + net1_layers = [3 * input_dim + 2 * attributes_dim, hidden_dim, 2 * hidden_dim + output_dim] + net1_layers = [l for l in net1_layers if l is not None] + self.net1 = build_mlp(net1_layers, batch_norm=mlp_normalization) + self.net1.apply(_init_weights) + + net2_layers = [hidden_dim, hidden_dim, output_dim] + self.net2 = build_mlp(net2_layers, batch_norm=mlp_normalization) + self.net2.apply(_init_weights) + + def forward(self, obj_vecs, pred_vecs, edges): + """ + Inputs: + - obj_vecs: FloatTensor of shape (O, D) giving vectors for all objects + - pred_vecs: FloatTensor of shape (T, D) giving vectors for all predicates + - edges: LongTensor of shape (T, 2) where edges[k] = [i, j] indicates the + presence of a triple [obj_vecs[i], pred_vecs[k], obj_vecs[j]] + + Outputs: + - new_obj_vecs: FloatTensor of shape (O, D) giving new vectors for objects + - new_pred_vecs: FloatTensor of shape (T, D) giving new vectors for predicates + """ + dtype, device = obj_vecs.dtype, obj_vecs.device + O, T = obj_vecs.size(0), pred_vecs.size(0) + Din, H, Dout = self.input_dim, self.hidden_dim, self.output_dim + + # Break apart indices for subjects and objects; these have shape (T,) + s_idx = edges[:, 0].contiguous() + o_idx = edges[:, 1].contiguous() + + # Get current vectors for subjects and objects; these have shape (T, Din) + cur_s_vecs = obj_vecs[s_idx] + cur_o_vecs = obj_vecs[o_idx] + + # Get current vectors for triples; shape is (T, 3 * Din) + # Pass through net1 to get new triple vecs; shape is (T, 2 * H + Dout) + cur_t_vecs = torch.cat([cur_s_vecs, pred_vecs, cur_o_vecs], dim=1) + new_t_vecs = self.net1(cur_t_vecs) + + # Break apart into new s, p, and o vecs; s and o vecs have shape (T, H) and + # p vecs have shape (T, Dout) + new_s_vecs = new_t_vecs[:, :H] + new_p_vecs = new_t_vecs[:, H:(H + Dout)] + new_o_vecs = new_t_vecs[:, (H + Dout):(2 * H + Dout)] + + # Allocate space for pooled object vectors of shape (O, H) + pooled_obj_vecs = torch.zeros(O, H, dtype=dtype, device=device) + + # Use scatter_add to sum vectors for objects that appear in multiple triples; + # we first need to expand the indices to have shape (T, D) + s_idx_exp = s_idx.view(-1, 1).expand_as(new_s_vecs) + o_idx_exp = o_idx.view(-1, 1).expand_as(new_o_vecs) + pooled_obj_vecs = pooled_obj_vecs.scatter_add(0, s_idx_exp, new_s_vecs) + pooled_obj_vecs = pooled_obj_vecs.scatter_add(0, o_idx_exp, new_o_vecs) + + if self.pooling == 'avg': + # Figure out how many times each object has appeared, again using + # some scatter_add trickery. + obj_counts = torch.zeros(O, dtype=dtype, device=device) + ones = torch.ones(T, dtype=dtype, device=device) + obj_counts = obj_counts.scatter_add(0, s_idx, ones) + obj_counts = obj_counts.scatter_add(0, o_idx, ones) + + # Divide the new object vectors by the number of times they + # appeared, but first clamp at 1 to avoid dividing by zero; + # objects that appear in no triples will have output vector 0 + # so this will not affect them. + obj_counts = obj_counts.clamp(min=1) + pooled_obj_vecs = pooled_obj_vecs / obj_counts.view(-1, 1) + + # Send pooled object vectors through net2 to get output object vectors, + # of shape (O, Dout) + new_obj_vecs = self.net2(pooled_obj_vecs) + + return new_obj_vecs, new_p_vecs + + +class GraphTripleConvNet(nn.Module): + """ A sequence of scene graph convolution layers """ + + def __init__(self, input_dim, num_layers=5, hidden_dim=512, pooling='avg', + mlp_normalization='none'): + super(GraphTripleConvNet, self).__init__() + + self.num_layers = num_layers + self.gconvs = nn.ModuleList() + gconv_kwargs = { + 'input_dim': input_dim, + 'hidden_dim': hidden_dim, + 'pooling': pooling, + 'mlp_normalization': mlp_normalization, + } + for _ in range(self.num_layers): + self.gconvs.append(GraphTripleConv(**gconv_kwargs)) + + def forward(self, obj_vecs, pred_vecs, edges): + for i in range(self.num_layers): + gconv = self.gconvs[i] + obj_vecs, pred_vecs = gconv(obj_vecs, pred_vecs, edges) + return obj_vecs, pred_vecs diff --git a/Interface/model/layers.py b/Interface/model/layers.py new file mode 100644 index 0000000000000000000000000000000000000000..1eb069cd7c847e345136828e7b9e6a85e377210e --- /dev/null +++ b/Interface/model/layers.py @@ -0,0 +1,335 @@ +#!/usr/bin/python +# +# Copyright 2018 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import functools + +import torch +import torch.nn as nn +from torch.nn.functional import interpolate + +class PPM(nn.Module): + def __init__(self, in_dim, reduction_dim, bins, BatchNorm): + super(PPM, self).__init__() + self.features = [] + for bin in bins: + self.features.append(nn.Sequential( + nn.AdaptiveAvgPool2d(bin), + nn.Conv2d(in_dim, reduction_dim, kernel_size=1, bias=False), + BatchNorm(reduction_dim), + #nn.ReLU(inplace=True) + nn.LeakyReLU(inplace=True) + )) + self.features = nn.ModuleList(self.features) + + def forward(self, x): + x_size = x.size() + out = [x] + for f in self.features: + out.append(interpolate(f(x), x_size[2:], mode='bilinear', align_corners=True)) + return torch.cat(out, 1) + +def get_normalization_2d(channels, normalization): + if normalization == 'instance': + return nn.InstanceNorm2d(channels) + elif normalization == 'batch': + return nn.BatchNorm2d(channels) + elif normalization == 'none': + return None + else: + raise ValueError('Unrecognized normalization type "%s"' % normalization) + + +def get_activation(name): + kwargs = {} + if name.lower().startswith('leakyrelu'): + if '-' in name: + slope = float(name.split('-')[1]) + kwargs = {'negative_slope': slope} + name = 'leakyrelu' + activations = { + 'relu': nn.ReLU, + 'leakyrelu': nn.LeakyReLU, + } + if name.lower() not in activations: + raise ValueError('Invalid activation "%s"' % name) + return activations[name.lower()](**kwargs) + + +def _init_conv(layer, method): + if not isinstance(layer, nn.Conv2d): + return + if method == 'default': + return + elif method == 'kaiming-normal': + nn.init.kaiming_normal(layer.weight) + elif method == 'kaiming-uniform': + nn.init.kaiming_uniform(layer.weight) + + +class Flatten(nn.Module): + def forward(self, x): + return x.view(x.size(0), -1) + + def __repr__(self): + return 'Flatten()' + + +class Unflatten(nn.Module): + def __init__(self, size): + super(Unflatten, self).__init__() + self.size = size + + def forward(self, x): + return x.view(*self.size) + + def __repr__(self): + size_str = ', '.join('%d' % d for d in self.size) + return 'Unflatten(%s)' % size_str + + +class GlobalAvgPool(nn.Module): + def forward(self, x): + N, C = x.size(0), x.size(1) + return x.view(N, C, -1).mean(dim=2) + + +class ResidualBlock(nn.Module): + def __init__(self, channels, normalization='batch', activation='relu', + padding='same', kernel_size=3, init='default'): + super(ResidualBlock, self).__init__() + + K = kernel_size + P = _get_padding(K, padding) + C = channels + self.padding = P + layers = [ + get_normalization_2d(C, normalization), + get_activation(activation), + nn.Conv2d(C, C, kernel_size=K, padding=P), + get_normalization_2d(C, normalization), + get_activation(activation), + nn.Conv2d(C, C, kernel_size=K, padding=P), + ] + layers = [layer for layer in layers if layer is not None] + for layer in layers: + _init_conv(layer, method=init) + self.net = nn.Sequential(*layers) + + def forward(self, x): + P = self.padding + shortcut = x + if P == 0: + shortcut = x[:, :, P:-P, P:-P] + y = self.net(x) + return shortcut + self.net(x) + + +def _get_padding(K, mode): + """ Helper method to compute padding size """ + if mode == 'valid': + return 0 + elif mode == 'same': + assert K % 2 == 1, 'Invalid kernel size %d for "same" padding' % K + return (K - 1) // 2 + + +def build_cnn(arch, normalization='batch', activation='leakyrelu', padding='same', + pooling='max', init='default'): + """ + Build a CNN from an architecture string, which is a list of layer + specification strings. The overall architecture can be given as a list or as + a comma-separated string. + + All convolutions *except for the first* are preceeded by normalization and + nonlinearity. + + All other layers support the following: + - IX: Indicates that the number of input channels to the network is X. + Can only be used at the first layer; if not present then we assume + 3 input channels. + - CK-X: KxK convolution with X output channels + - CK-X-S: KxK convolution with X output channels and stride S + - R: Residual block keeping the same number of channels + - UX: Nearest-neighbor upsampling with factor X + - PX: Spatial pooling with factor X + - FC-X-Y: Flatten followed by fully-connected layer + + Returns a tuple of: + - cnn: An nn.Sequential + - channels: Number of output channels + """ + if isinstance(arch, str): + arch = arch.split(',') + cur_C = 3 + if len(arch) > 0 and arch[0][0] == 'I': + cur_C = int(arch[0][1:]) + arch = arch[1:] + + first_conv = True + flat = False + layers = [] + for i, s in enumerate(arch): + if s[0] == 'C': + if not first_conv: + layers.append(get_normalization_2d(cur_C, normalization)) + layers.append(get_activation(activation)) + first_conv = False + vals = [int(i) for i in s[1:].split('-')] + if len(vals) == 2: + K, next_C = vals + stride = 1 + elif len(vals) == 3: + K, next_C, stride = vals + # K, next_C = (int(i) for i in s[1:].split('-')) + P = _get_padding(K, padding) + conv = nn.Conv2d(cur_C, next_C, kernel_size=K, padding=P, stride=stride) + layers.append(conv) + _init_conv(layers[-1], init) + cur_C = next_C + elif s[0] == 'R': + norm = 'none' if first_conv else normalization + res = ResidualBlock(cur_C, normalization=norm, activation=activation, + padding=padding, init=init) + layers.append(res) + first_conv = False + elif s[0] == 'U': + factor = int(s[1:]) + layers.append(Interpolate(scale_factor=factor, mode='nearest')) + elif s[0] == 'P': + factor = int(s[1:]) + if pooling == 'max': + pool = nn.MaxPool2d(kernel_size=factor, stride=factor) + elif pooling == 'avg': + pool = nn.AvgPool2d(kernel_size=factor, stride=factor) + layers.append(pool) + elif s[:2] == 'FC': + _, Din, Dout = s.split('-') + Din, Dout = int(Din), int(Dout) + if not flat: + layers.append(Flatten()) + flat = True + layers.append(nn.Linear(Din, Dout)) + if i + 1 < len(arch): + layers.append(get_activation(activation)) + cur_C = Dout + else: + raise ValueError('Invalid layer "%s"' % s) + layers = [layer for layer in layers if layer is not None] + # for layer in layers: + # print(layer) + return nn.Sequential(*layers), cur_C + + +def build_mlp(dim_list, activation='leakyrelu', batch_norm='none', + dropout=0, final_nonlinearity=True): + layers = [] + for i in range(len(dim_list) - 1): + dim_in, dim_out = dim_list[i], dim_list[i + 1] + layers.append(nn.Linear(dim_in, dim_out)) + final_layer = (i == len(dim_list) - 2) + if not final_layer or final_nonlinearity: + if batch_norm == 'batch': + layers.append(nn.BatchNorm1d(dim_out)) + if activation == 'relu': + layers.append(nn.ReLU()) + elif activation == 'leakyrelu': + layers.append(nn.LeakyReLU()) + if dropout > 0: + layers.append(nn.Dropout(p=dropout)) + return nn.Sequential(*layers) + + +class ResnetBlock(nn.Module): + def __init__(self, dim, padding_type, norm_layer, activation=nn.ReLU(True), use_dropout=False): + super(ResnetBlock, self).__init__() + self.conv_block = self.build_conv_block(dim, padding_type, norm_layer, activation, use_dropout) + + def build_conv_block(self, dim, padding_type, norm_layer, activation, use_dropout): + conv_block = [] + p = 0 + if padding_type == 'reflect': + conv_block += [nn.ReflectionPad2d(1)] + elif padding_type == 'replicate': + conv_block += [nn.ReplicationPad2d(1)] + elif padding_type == 'zero': + p = 1 + else: + raise NotImplementedError('padding [%s] is not implemented' % padding_type) + + conv_block += [nn.Conv2d(dim, dim, kernel_size=3, padding=p), + norm_layer(dim), + activation] + if use_dropout: + conv_block += [nn.Dropout(0.5)] + + p = 0 + if padding_type == 'reflect': + conv_block += [nn.ReflectionPad2d(1)] + elif padding_type == 'replicate': + conv_block += [nn.ReplicationPad2d(1)] + elif padding_type == 'zero': + p = 1 + else: + raise NotImplementedError('padding [%s] is not implemented' % padding_type) + conv_block += [nn.Conv2d(dim, dim, kernel_size=3, padding=p), + norm_layer(dim)] + + return nn.Sequential(*conv_block) + + def forward(self, x): + out = x + self.conv_block(x) + return out + + +class ConditionalBatchNorm2d(nn.Module): + def __init__(self, num_features, num_classes): + super(ConditionalBatchNorm2d).__init__() + self.num_features = num_features + self.bn = nn.BatchNorm2d(num_features, affine=False) + self.embed = nn.Embedding(num_classes, num_features * 2) + self.embed.weight.data[:, :num_features].normal_(1, 0.02) # Initialise scale at N(1, 0.02) + self.embed.weight.data[:, num_features:].zero_() # Initialise bias at 0 + + def forward(self, x, y): + out = self.bn(x) + gamma, beta = self.embed(y).chunk(2, 1) + out = gamma.view(-1, self.num_features, 1, 1) * out + beta.view(-1, self.num_features, 1, 1) + return out + + +def get_norm_layer(norm_type='instance'): + if norm_type == 'batch': + norm_layer = functools.partial(nn.BatchNorm2d, affine=True) + elif norm_type == 'instance': + norm_layer = functools.partial(nn.InstanceNorm2d, affine=False) + elif norm_type == 'conditional': + norm_layer = functools.partial(ConditionalBatchNorm2d) + else: + raise NotImplementedError('normalization layer [%s] is not found' % norm_type) + return norm_layer + + +class Interpolate(nn.Module): + def __init__(self, size=None, scale_factor=None, mode='nearest', align_corners=None): + super(Interpolate, self).__init__() + self.size = size + self.scale_factor = scale_factor + self.mode = mode + self.align_corners = align_corners + + def forward(self, x): + return interpolate(x, size=self.size, scale_factor=self.scale_factor, mode=self.mode, + align_corners=self.align_corners) diff --git a/Interface/model/layout.py b/Interface/model/layout.py new file mode 100644 index 0000000000000000000000000000000000000000..1e52414b588aa715f6e3e42a51058af6895e433a --- /dev/null +++ b/Interface/model/layout.py @@ -0,0 +1,314 @@ +#!/usr/bin/python +# +# Copyright 2018 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import torch +import torch.nn as nn +import torch.nn.functional as F + +import model.box_utils as box_utils + + +""" +Functions for computing image layouts from object vectors, bounding boxes, +and segmentation masks. These are used to compute course scene layouts which +are then fed as input to the cascaded refinement network. +""" + + +def boxes_to_layout(vecs, boxes, obj_to_img, H, W=None, pooling='sum'): + """ + Inputs: + - vecs: Tensor of shape (O, D) giving vectors + - boxes: Tensor of shape (O, 4) giving bounding boxes in the format + [x0, y0, x1, y1] in the [0, 1] coordinate space + - obj_to_img: LongTensor of shape (O,) mapping each element of vecs to + an image, where each element is in the range [0, N). If obj_to_img[i] = j + then vecs[i] belongs to image j. + - H, W: Size of the output + + Returns: + - out: Tensor of shape (N, D, H, W) + """ + O, D = vecs.size() + if W is None: + W = H + + grid = _boxes_to_grid(boxes, H, W) + + # If we don't add extra spatial dimensions here then out-of-bounds + # elements won't be automatically set to 0 + img_in = vecs.view(O, D, 1, 1).expand(O, D, 8, 8) + sampled = F.grid_sample(img_in, grid) # (O, D, H, W) + + # Explicitly masking makes everything quite a bit slower. + # If we rely on implicit masking the interpolated boxes end up + # blurred around the edges, but it should be fine. + # mask = ((X < 0) + (X > 1) + (Y < 0) + (Y > 1)).clamp(max=1) + # sampled[mask[:, None]] = 0 + + out = _pool_samples(sampled, obj_to_img, pooling=pooling) + + return out + + +def masks_to_layout(vecs, boxes, masks, obj_to_img, H, W=None, pooling='sum'): + """ + Inputs: + - vecs: Tensor of shape (O, D) giving vectors + - boxes: Tensor of shape (O, 4) giving bounding boxes in the format + [x0, y0, x1, y1] in the [0, 1] coordinate space + - masks: Tensor of shape (O, M, M) giving binary masks for each object + - obj_to_img: LongTensor of shape (O,) mapping objects to images + - H, W: Size of the output image. + + Returns: + - out: Tensor of shape (N, D, H, W) + """ + O, D = vecs.size() + M = masks.size(1) + assert masks.size() == (O, M, M) + if W is None: + W = H + grid = _boxes_to_grid(boxes, H, W) + img_in = vecs.view(O, D, 1, 1) * masks.float().view(O, 1, M, M) + sampled = F.grid_sample(img_in, grid) + out = _pool_samples(sampled, obj_to_img, pooling=pooling) + return out + + +def _boxes_to_grid(boxes, H, W): + """ + Input: + - boxes: FloatTensor of shape (O, 4) giving boxes in the [x0, y0, x1, y1] + format in the [0, 1] coordinate space + - H, W: Scalars giving size of output + + Returns: + - grid: FloatTensor of shape (O, H, W, 2) suitable for passing to grid_sample + """ + O = boxes.size(0) + boxes = box_utils.centers_to_extents(boxes) + boxes = boxes.view(O, 4, 1, 1) + + # w,h = boxes[:, 2], boxes[:, 3] + # # All these are (O, 1, 1) + # x0, y0 = boxes[:, 0]-w/2, boxes[:, 1]-h/2 + # x1, y1 = boxes[:, 0]+w/2, boxes[:, 1]+h/2 + + x0, y0 = boxes[:, 0], boxes[:, 1] + ww, hh = boxes[:, 2] - x0, boxes[:, 3] - y0 + # ww = x1 - x0 + # hh = y1 - y0 + + X = torch.linspace(0, 1, steps=W).view(1, 1, W).to(boxes) + Y = torch.linspace(0, 1, steps=H).view(1, H, 1).to(boxes) + X = (X - x0) / ww # (O, 1, W) + Y = (Y - y0) / hh # (O, H, 1) + + # Stack does not broadcast its arguments so we need to expand explicitly + X = X.expand(O, H, W) + Y = Y.expand(O, H, W) + grid = torch.stack([X, Y], dim=3) # (O, H, W, 2) + + # Right now grid is in [0, 1] space; transform to [-1, 1] + grid = grid.mul(2).sub(1) + + return grid + + +def _pool_samples(samples, obj_to_img, pooling='sum'): + """ + Input: + - samples: FloatTensor of shape (O, D, H, W) + - obj_to_img: LongTensor of shape (O,) with each element in the range + [0, N) mapping elements of samples to output images + + Output: + - pooled: FloatTensor of shape (N, D, H, W) + """ + dtype, device = samples.dtype, samples.device + O, D, H, W = samples.size() + N = obj_to_img.data.max().item() + 1 + + # Use scatter_add to sum the sampled outputs for each image + out = torch.zeros(N, D, H, W, dtype=dtype, device=device) + idx = obj_to_img.view(O, 1, 1, 1).expand(O, D, H, W) + #out = out.scatter_add(0, idx, samples) + + if pooling == 'avg': + # Divide each output mask by the number of objects; use scatter_add again + # to count the number of objects per image. + out = out.scatter_add(0, idx, samples) + ones = torch.ones(O, dtype=dtype, device=device) + obj_counts = torch.zeros(N, dtype=dtype, device=device) + obj_counts = obj_counts.scatter_add(0, obj_to_img, ones) + obj_counts = obj_counts.clamp(min=1) + out = out / obj_counts.view(N, 1, 1, 1) + elif pooling == 'max': + all_out = [] + obj_to_img_list = [i.item() for i in list(obj_to_img)] + for i in range(N): + start = obj_to_img_list.index(i) + end = len(obj_to_img_list) - obj_to_img_list[::-1].index(i) + all_out.append(torch.max(samples[start:end, :, :, :], dim=0)[0]) + out = torch.stack(all_out) + elif pooling == 'sum': + out = out.scatter_add(0, idx, samples) + #raise ValueError('Invalid pooling "%s"' % pooling) + + return out + +def masks_to_seg(boxes, masks, objs, obj_to_img, H, W=None, num_classes=15): + """ + Inputs: + - vecs: Tensor of shape (O, D) giving vectors + - boxes: Tensor of shape (O, 4) giving bounding boxes in the format + [x0, y0, x1, y1] in the [0, 1] coordinate space + - obj_to_img: LongTensor of shape (O,) mapping each element of vecs to + an image, where each element is in the range [0, N). If obj_to_img[i] = j + then vecs[i] belongs to image j. + - H, W: Size of the output + + Returns: + - out: Tensor of shape (N, D, H, W) + """ + dtype, device = boxes.dtype, boxes.device + O, D = boxes.size() + M = masks.size(1) + assert masks.size() == (O, M, M) + if W is None: + W = H + N = obj_to_img.data.max().item() + 1 + grid = _boxes_to_grid(boxes, H, W) + mask_sampled = F.grid_sample(masks.float().view(O, 1, M, M), grid) + seg = torch.zeros((N,num_classes,H,W)).to(device) + # obj_to_img_list = [i.item() for i in list(obj_to_img)] + for i in range(N): + obj_to_i = (obj_to_img==i).nonzero().view(-1) + # start = obj_to_img_list.index(i) + # end = len(obj_to_img_list) - obj_to_img_list[::-1].index(i) + # for j in range(start,end): + for j in obj_to_i: + obj = objs[j] + seg[i,obj]=seg[i,obj]+mask_sampled[j] + return seg + +def boxes_to_seg(boxes, objs, obj_to_img, H, W=None,num_classes=15): + """ + Inputs: + - vecs: Tensor of shape (O, D) giving vectors + - boxes: Tensor of shape (O, 4) giving bounding boxes in the format + [x0, y0, x1, y1] in the [0, 1] coordinate space + - obj_to_img: LongTensor of shape (O,) mapping each element of vecs to + an image, where each element is in the range [0, N). If obj_to_img[i] = j + then vecs[i] belongs to image j. + - H, W: Size of the output + + Returns: + - out: Tensor of shape (N, D, H, W) + """ + dtype, device = boxes.dtype, boxes.device + O, D = boxes.size() + if W is None: + W = H + N = obj_to_img.data.max().item() + 1 + + grid = _boxes_to_grid(boxes, H, W) + mask_sampled = F.grid_sample(torch.ones(O,1,8,8).to(boxes), grid) + + seg = torch.zeros((N,num_classes,H,W)).to(device) + obj_to_img_list = [i.item() for i in list(obj_to_img)] + for i in range(N): + start = obj_to_img_list.index(i) + end = len(obj_to_img_list) - obj_to_img_list[::-1].index(i) + for j in range(start,end): + #obj_to_i = (obj_to_img==i).nonzero().view(-1) + #for j in obj_to_i: + obj = objs[j] + seg[i,obj]=seg[i,obj]+mask_sampled[j] + return seg + +if __name__ == '__main__': + vecs = torch.FloatTensor([ + [1, 0, 0], [0, 1, 0], [0, 0, 1], + [1, 0, 0], [0, 1, 0], [0, 0, 1], + ]) + boxes = torch.FloatTensor([ + [0.25, 0.125, 0.5, 0.875], + [0, 0, 1, 0.25], + [0.6125, 0, 0.875, 1], + [0, 0.8, 1, 1.0], + [0.25, 0.125, 0.5, 0.875], + [0.6125, 0, 0.875, 1], + ]) + obj_to_img = torch.LongTensor([0, 0, 0, 1, 1, 1]) + # vecs = torch.FloatTensor([[[1]]]) + # boxes = torch.FloatTensor([[[0.25, 0.25, 0.75, 0.75]]]) + vecs, boxes = vecs.cuda(), boxes.cuda() + obj_to_img = obj_to_img.cuda() + out = boxes_to_layout(vecs, boxes, obj_to_img, 256, pooling='sum') + + from torchvision.utils import save_image + save_image(out.data, 'out.png') + + + masks = torch.FloatTensor([ + [ + [0, 0, 1, 0, 0], + [0, 1, 1, 1, 0], + [1, 1, 1, 1, 1], + [0, 1, 1, 1, 0], + [0, 0, 1, 0, 0], + ], + [ + [0, 0, 1, 0, 0], + [0, 1, 0, 1, 0], + [1, 0, 0, 0, 1], + [0, 1, 0, 1, 0], + [0, 0, 1, 0, 0], + ], + [ + [0, 0, 1, 0, 0], + [0, 1, 1, 1, 0], + [1, 1, 1, 1, 1], + [0, 1, 1, 1, 0], + [0, 0, 1, 0, 0], + ], + [ + [0, 0, 1, 0, 0], + [0, 1, 1, 1, 0], + [1, 1, 1, 1, 1], + [0, 1, 1, 1, 0], + [0, 0, 1, 0, 0], + ], + [ + [0, 0, 1, 0, 0], + [0, 1, 1, 1, 0], + [1, 1, 1, 1, 1], + [0, 1, 1, 1, 0], + [0, 0, 1, 0, 0], + ], + [ + [0, 0, 1, 0, 0], + [0, 1, 1, 1, 0], + [1, 1, 1, 1, 1], + [0, 1, 1, 1, 0], + [0, 0, 1, 0, 0], + ] + ]) + masks = masks.cuda() + out = masks_to_layout(vecs, boxes, masks, obj_to_img, 256) + save_image(out.data, 'out_masks.png') diff --git a/Interface/model/model.pth b/Interface/model/model.pth new file mode 100644 index 0000000000000000000000000000000000000000..aa8bed758b1541b1ef8335b829a54233c5ae5457 --- /dev/null +++ b/Interface/model/model.pth @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:08046c64b993d1c3382f5dbb37755095c372fff540f5c7502262b1abf7584140 +size 30613537 diff --git a/Interface/model/model.py b/Interface/model/model.py new file mode 100644 index 0000000000000000000000000000000000000000..4d861944a43d3dcc0bd91c49d7fc951482833e01 --- /dev/null +++ b/Interface/model/model.py @@ -0,0 +1,217 @@ +#!/usr/bin/python +# +# Copyright 2018 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licens8.0es/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import math +import torch +import torch.nn as nn +import torch.nn.functional as F +from torchvision.ops import RoIAlign + +import model.box_utils as box_utils +from model.graph import GraphTripleConv, GraphTripleConvNet +from model.layout import boxes_to_layout, masks_to_layout, boxes_to_seg, masks_to_seg +from model.layers import build_mlp,build_cnn +from model.utils import vocab + +class Model(nn.Module): + def __init__(self, + embedding_dim=128, + image_size=(128,128), + input_dim=3, + attribute_dim=35, + # graph_net + gconv_dim=128, + gconv_hidden_dim=512, + gconv_num_layers=5, + # inside_cnn + inside_cnn_arch="C3-32-2,C3-64-2,C3-128-2,C3-256-2", + # refinement_net + refinement_dims=(1024, 512, 256, 128, 64), + # box_refine + box_refine_arch = "I15,C3-64-2,C3-128-2,C3-256-2", + roi_output_size = (8,8), + roi_spatial_scale = 1.0/8.0, + roi_cat_feature = True, + # others + mlp_activation='leakyrelu', + mlp_normalization='none', + cnn_activation='leakyrelu', + cnn_normalization='batch' + ): + super(Model, self).__init__() + ''' embedding ''' + self.vocab = vocab + num_objs = len(vocab['object_idx_to_name']) + num_preds = len(vocab['pred_idx_to_name']) + num_doors = len(vocab['door_idx_to_name']) + self.obj_embeddings = nn.Embedding(num_objs, embedding_dim) + self.pred_embeddings = nn.Embedding(num_preds, embedding_dim) + self.image_size = image_size + self.feature_dim = embedding_dim+attribute_dim + + ''' graph_net ''' + self.gconv = GraphTripleConv( + embedding_dim, + attributes_dim=attribute_dim, + output_dim=gconv_dim, + hidden_dim=gconv_hidden_dim, + mlp_normalization=mlp_normalization + ) + self.gconv_net = GraphTripleConvNet( + gconv_dim, + num_layers=gconv_num_layers-1, + mlp_normalization=mlp_normalization + ) + + ''' inside_cnn ''' + inside_cnn,inside_feat_dim = build_cnn( + f'I{input_dim},{inside_cnn_arch}', + padding='valid' + ) + self.inside_cnn = nn.Sequential( + inside_cnn, + nn.AdaptiveAvgPool2d(1) + ) + inside_output_dim = inside_feat_dim + obj_vecs_dim = gconv_dim+inside_output_dim + + ''' box_net ''' + box_net_dim = 4 + box_net_layers = [obj_vecs_dim, gconv_hidden_dim, box_net_dim] + self.box_net = build_mlp( + box_net_layers, + activation=mlp_activation, + batch_norm=mlp_normalization + ) + + ''' relationship_net ''' + rel_aux_layers = [obj_vecs_dim, gconv_hidden_dim, num_doors] + self.rel_aux_net = build_mlp( + rel_aux_layers, + activation=mlp_activation, + batch_norm=mlp_normalization + ) + + ''' refinement_net ''' + if refinement_dims!=None: + self.refinement_net,_ = build_cnn(f"I{obj_vecs_dim},C3-128,C3-64,C3-{num_objs}") + else: + self.refinement_net = None + + ''' roi ''' + self.box_refine_backbone = None + self.roi_cat_feature = roi_cat_feature + if box_refine_arch!=None: + box_refine_cnn,box_feat_dim = build_cnn( + box_refine_arch, + padding='valid' + ) + self.box_refine_backbone = box_refine_cnn + self.roi_align = RoIAlign(roi_output_size,roi_spatial_scale,-1) #(256,8,8) + self.down_sample = nn.AdaptiveAvgPool2d(1) + box_refine_layers = [obj_vecs_dim+256 if self.roi_cat_feature else 256, 512, 4] + self.box_reg =build_mlp( + box_refine_layers, + activation=mlp_activation, + batch_norm=mlp_normalization + ) + + def forward( + self, + objs, + triples, + boundary, + obj_to_img=None, + attributes=None, + boxes_gt=None, + generate=False, + refine=False, + relative=False, + inside_box=None + ): + """ + Required Inputs: + - objs: LongTensor of shape (O,) giving categories for all objects + - triples: LongTensor of shape (T, 3) where triples[t] = [s, p, o] + means that there is a triple (objs[s], p, objs[o]) + + Optional Inputs: + - obj_to_img: LongTensor of shape (O,) where obj_to_img[o] = i + means that objects[o] is an object in image i. If not given then + all objects are assumed to belong to the same image. + - boxes_gt: FloatTensor of shape (O, 4) giving boxes to use for computing + the spatial layout; if not given then use predicted boxes. + """ + # input size + O, T = objs.size(0), triples.size(0) + s, p, o = triples.chunk(3, dim=1) # All have shape (T, 1) + s, p, o = [x.squeeze(1) for x in [s, p, o]] # Now have shape (T,) + edges = torch.stack([s, o], dim=1) # Shape is (T, 2) + B = boundary.size(0) + H, W = self.image_size + + if obj_to_img is None: + obj_to_img = torch.zeros(O, dtype=objs.dtype, device=objs.device) + + ''' embedding ''' + obj_vecs = self.obj_embeddings(objs) + pred_vecs = self.pred_embeddings(p) + + ''' attribute ''' + if attributes is not None: + obj_vecs = torch.cat([obj_vecs,attributes],1) + obj_vecs_orig = obj_vecs + + ''' gconv ''' + obj_vecs, pred_vecs = self.gconv(obj_vecs, pred_vecs, edges) + obj_vecs, pred_vecs = self.gconv_net(obj_vecs, pred_vecs, edges) + + ''' inside ''' + inside_vecs = self.inside_cnn(boundary).view(B,-1) + obj_vecs = torch.cat([obj_vecs,inside_vecs[obj_to_img]],dim=1) + + ''' box ''' + boxes_pred = self.box_net(obj_vecs) + if relative: boxes_pred = box_utils.box_rel2abs(boxes_pred,inside_box,obj_to_img) + + ''' relation ''' + # unused, for door position predition + # rel_scores = self.rel_aux_net(obj_vecs) + + ''' generate ''' + gene_layout = None + boxes_refine = None + layout_boxes = boxes_pred if boxes_gt is None else boxes_gt + if generate: + layout_features = boxes_to_layout(obj_vecs,layout_boxes,obj_to_img,H,W) + gene_layout = self.refinement_net(layout_features) + + ''' box refine ''' + if refine: + gene_feat = self.box_refine_backbone(gene_layout) + rois = torch.cat([ + obj_to_img.float().view(-1,1), + box_utils.centers_to_extents(layout_boxes)*H + ],-1) + roi_feat = self.down_sample(self.roi_align(gene_feat,rois)).flatten(1) + roi_feat = torch.cat([ + roi_feat, + obj_vecs + ],-1) + boxes_refine = self.box_reg(roi_feat) + if relative: boxes_refine = box_utils.box_rel2abs(boxes_refine,inside_box,obj_to_img) + + return boxes_pred, gene_layout, boxes_refine diff --git a/Interface/model/test.py b/Interface/model/test.py new file mode 100644 index 0000000000000000000000000000000000000000..d4646c0b047719a543f7eec6b3635d934dc1d115 --- /dev/null +++ b/Interface/model/test.py @@ -0,0 +1,255 @@ +from model.floorplan import * +from model.box_utils import * +from model.model import Model +import os +from model.utils import * + +import Houseweb.views as vw + +import numpy as np +import time +import math +import matlab.engine + + +global adjust,indxlist +adjust=False + +def get_data(fp): + batch = list(fp.get_test_data()) + batch[0] = batch[0].unsqueeze(0).cuda() + batch[1] = batch[1].cuda() + batch[2] = batch[2].cuda() + batch[3] = batch[3].cuda() + batch[4] = batch[4].cuda() + return batch + +def test(model,fp): + with torch.no_grad(): + batch = get_data(fp) + boundary,inside_box,rooms,attrs,triples = batch + model_out = model( + rooms, + triples, + boundary, + obj_to_img = None, + attributes = attrs, + boxes_gt= None, + generate = True, + refine = True, + relative = True, + inside_box=inside_box + ) + boxes_pred, gene_layout, boxes_refine= model_out + boxes_pred = boxes_pred.detach() + boxes_pred = centers_to_extents(boxes_pred) + boxes_refine = boxes_refine.detach() + boxes_refine = centers_to_extents(boxes_refine) + gene_layout = gene_layout*boundary[:,:1] + gene_preds = torch.argmax(gene_layout.softmax(1).detach(),dim=1) + return boxes_pred.squeeze().cpu().numpy(),gene_preds.squeeze().cpu().double().numpy(),boxes_refine.squeeze().cpu().numpy() + +def load_model(): + + model = Model() + model.cuda(0) + model.load_state_dict( + torch.load('./model/model.pth', map_location={'cuda:0': 'cuda:0'})) + model.eval() + return model + +def get_userinfo(userRoomID,adptRoomID): + start = time.clock() + global model + test_index = vw.testNameList.index(userRoomID.split(".")[0]) + test_data = vw.test_data[test_index] + + # boundary + Boundary = test_data.boundary + boundary=[[float(x),float(y),float(z),float(k)] for x,y,z,k in list(Boundary)] + + test_fp =FloorPlan(test_data) + + train_index = vw.trainNameList.index(adptRoomID.split(".")[0]) + train_data = vw.train_data[train_index] + train_fp =FloorPlan(train_data,train=True) + fp_end = test_fp.adapt_graph(train_fp) + fp_end.adjust_graph() + return fp_end + + +def get_userinfo_adjust(userRoomID,adptRoomID,NewGraph): + global adjust,indxlist + test_index = vw.testNameList.index(userRoomID.split(".")[0]) + test_data = vw.test_data[test_index] + # boundary + Boundary = test_data.boundary + boundary=[[float(x),float(y),float(z),float(k)] for x,y,z,k in list(Boundary)] + + test_fp =FloorPlan(test_data) + + train_index = vw.trainNameList.index(adptRoomID.split(".")[0]) + train_data = vw.train_data[train_index] + train_fp =FloorPlan(train_data,train=True) + fp_end = test_fp.adapt_graph(train_fp) + fp_end.adjust_graph() + + + newNode = NewGraph[0] + newEdge = NewGraph[1] + oldNode = NewGraph[2] + + temp = [] + for newindx, newrmname, newx, newy,scalesize in newNode: + for type, oldrmname, oldx, oldy, oldindx in oldNode: + if (int(newindx) == oldindx): + tmp=int(newindx), (newx - oldx), ( newy- oldy),float(scalesize) + temp.append(tmp) + newbox=[] + print(adjust) + if adjust==True: + oldbox = [] + for i in range(len(vw.boxes_pred)): + indxtmp=[vw.boxes_pred[i][0],vw.boxes_pred[i][1],vw.boxes_pred[i][2],vw.boxes_pred[i][3],vw.boxes_pred[i][0]] + oldbox.append(indxtmp) + if adjust==False: + indxlist=[] + oldbox=fp_end.data.box.tolist() + for i in range(len(oldbox)): + indxlist.append([oldbox[i][4]]) + indxlist=np.array(indxlist) + adjust=True + oldbox=fp_end.data.box.tolist() + + # print("oldbox",oldbox) + # print(oldbox,"oldbox") + X=0 + Y=0 + for i in range(len(oldbox)): + X= X+(oldbox[i][2]-oldbox[i][0]) + Y= Y+(oldbox[i][3]-oldbox[i][1]) + x_ave=(X/len(oldbox))/2 + y_ave=(Y/len(oldbox))/2 + + index_mapping = {} + # The room that already exists + # Move: Just by the distance + for newindx, tempx, tempy,scalesize in temp: + index_mapping[newindx] = len(newbox) + tmpbox=[] + scalesize = int(scalesize) + if scalesize<1: + scale = math.sqrt(scalesize) + scalex = (oldbox[newindx][2] - oldbox[newindx][0]) * (1 - scale) / 2 + scaley = (oldbox[newindx][3] - oldbox[newindx][1]) * (1 - scale) / 2 + tmpbox = [(oldbox[newindx][0] + tempx) + scalex, (oldbox[newindx][1] + tempy)+scaley, + (oldbox[newindx][2] + tempx) - scalex, (oldbox[newindx][3] + tempy) - scaley, oldbox[newindx][4]] + if scalesize == 1: + tmpbox = [(oldbox[newindx][0] + tempx) , (oldbox[newindx][1] + tempy) ,(oldbox[newindx][2] + tempx), (oldbox[newindx][3] + tempy), oldbox[newindx][4]] + + if scalesize>1: + scale=math.sqrt(scalesize) + scalex = (oldbox[newindx][2] - oldbox[newindx][0]) * ( scale-1) / 2 + scaley = (oldbox[newindx][3] - oldbox[newindx][1]) * (scale-1) / 2 + tmpbox = [(oldbox[newindx][0] + tempx) - scalex, (oldbox[newindx][1] + tempy) - scaley, + (oldbox[newindx][2] + tempx) + scalex, (oldbox[newindx][3] + tempy) + scaley, oldbox[newindx][4]] + + + newbox.append(tmpbox) + + # The room just added + # Move: The room node with the average size of the existing room + for newindx, newrmname, newx, newy,scalesize in newNode: + if int(newindx)>(len(oldbox)-1): + scalesize=int(scalesize) + index_mapping[int(newindx)] = (len(newbox)) + tmpbox=[] + if scalesize < 1: + scale = math.sqrt(scalesize) + scalex = x_ave * (1 - scale) / 2 + scaley = y_ave* (1 - scale) / 2 + tmpbox = [(newx-x_ave) +scalex,(newy-y_ave) +scaley,(newx+x_ave)-scalex,(newy+y_ave)-scaley,vocab['object_name_to_idx'][newrmname]] + + if scalesize == 1: + tmpbox = [(newx - x_ave), (newy - y_ave), (newx + x_ave), (newy + y_ave),vocab['object_name_to_idx'][newrmname]] + if scalesize > 1: + scale = math.sqrt(scalesize) + scalex = x_ave * (scale - 1) / 2 + scaley = y_ave * (scale - 1) / 2 + tmpbox = [(newx-x_ave) - scalex, (newy-y_ave) - scaley,(newx+x_ave) + scalex, (newy+y_ave) + scaley,vocab['object_name_to_idx'][newrmname]] + print(scalesize) + newbox.append(tmpbox) + + fp_end.data.box=np.array(newbox) + adjust_Edge=[] + for u, v in newEdge: + tmp=[index_mapping[int(u)],index_mapping[int(v)], 0] + adjust_Edge.append(tmp) + fp_end.data.edge=np.array(adjust_Edge) + rNode = fp_end.get_rooms(tensor=False) + + rEdge = fp_end.get_triples(tensor=False)[:, [0, 2, 1]] + Edge = [[float(u), float(v), float(type2)] for u, v, type2 in rEdge] + + s=time.clock() + boxes_pred, gene_layout, boxes_refeine = test(vw.model, fp_end) + + e=time.clock() + print(' model test time: %s Seconds' % (e - s)) + + boxes_pred = boxes_pred * 255 + + fp_end.data.gene = gene_layout + rBox = boxes_pred[:] + Box = [[float(x), float(y), float(z), float(k)] for x, y, z, k in rBox] + + boundary_mat = matlab.double(boundary) + rNode_mat = matlab.double(rNode.tolist()) + print("rNode.tolist()",rNode.tolist()) + Edge_mat = matlab.double(Edge) + + Box_mat=matlab.double(Box) + + fp_end.data.boundary =np.array(boundary) + fp_end.data.rType =np.array(rNode).astype(int) + fp_end.data.refineBox=np.array(Box) + fp_end.data.rEdge=np.array(Edge) + gene_mat=matlab.double(np.array(fp_end.data.gene).tolist()) + startcom= time.clock() + box_refine = vw.engview.align_fp(boundary_mat, Box_mat, rNode_mat,Edge_mat,matlab.double(fp_end.data.gene.astype(float).copy().tolist()) ,18,False, nargout=3) + endcom = time.clock() + print(' matlab.compute time: %s Seconds' % (endcom - startcom)) + box_out=box_refine[0] + box_order=box_refine[1] + + rBoundary=box_refine[2] + fp_end.data.newBox = np.array(box_out) + fp_end.data.order = np.array(box_order) + fp_end.data.rBoundary = [np.array(rb) for rb in rBoundary] + return fp_end,box_out,box_order, gene_layout, boxes_refeine + + +def get_userinfo_net(userRoomID,adptRoomID): + global model + test_index = vw.testNameList.index(userRoomID.split(".")[0]) + test_data = vw.test_data[test_index] + + # boundary + Boundary = test_data.boundary + boundary = [[float(x), float(y), float(z), float(k)] for x, y, z, k in list(Boundary)] + test_fp = FloorPlan(test_data) + + train_index = vw.trainNameList.index(adptRoomID.split(".")[0]) + train_data = vw.train_data[train_index] + train_fp = FloorPlan(train_data, train=True) + fp_end = test_fp.adapt_graph(train_fp) + fp_end.adjust_graph() + boxes_pred, gene_layout, boxes_refeine = test(model, fp_end) + boxes_pred=boxes_pred*255 + for i in range(len(boxes_pred)): + for j in range(len(boxes_pred[i])): + boxes_pred[i][j]=float(boxes_pred[i][j]) + return fp_end,boxes_pred, gene_layout, boxes_refeine + +if __name__ == "__main__": + pass diff --git a/Interface/model/utils.py b/Interface/model/utils.py new file mode 100644 index 0000000000000000000000000000000000000000..9256d96352c849a7cf8b1b20b9944b44854f0c8d --- /dev/null +++ b/Interface/model/utils.py @@ -0,0 +1,371 @@ +import numpy as np + +# index,name,type(private/public),floorTexture +room_label = [(0, 'LivingRoom', 1, "PublicArea",[220, 213, 205]), + (1, 'MasterRoom', 0, "Bedroom",[138, 113, 91]), + (2, 'Kitchen', 1, "FunctionArea",[244, 245, 247]), + (3, 'Bathroom', 0, "FunctionArea",[224, 225, 227]), + (4, 'DiningRoom', 1, "FunctionArea",[200, 193, 185]), + (5, 'ChildRoom', 0, "Bedroom",[198, 173, 151]), + (6, 'StudyRoom', 0, "Bedroom",[178, 153, 131]), + (7, 'SecondRoom', 0, "Bedroom",[158, 133, 111]), + (8, 'GuestRoom', 0, "Bedroom",[189, 172, 146]), + (9, 'Balcony', 1, "PublicArea",[244, 237, 224]), + (10, 'Entrance', 1, "PublicArea",[238, 235, 230]), + (11, 'Storage', 0, "PublicArea",[226, 220, 206]), + (12, 'Wall-in', 0, "PublicArea",[226, 220, 206]), + (13, 'External', 0, "External",[255, 255, 255]), + (14, 'ExteriorWall', 0, "ExteriorWall",[0, 0, 0]), + (15, 'FrontDoor', 0, "FrontDoor",[255,255,0]), + (16, 'InteriorWall', 0, "InteriorWall",[128,128,128]), + (17, 'InteriorDoor', 0, "InteriorDoor",[255,255,255])] + +# color palette for nyu40 labels +def create_color_palette(): + return [ + (0, 0, 0), + (174, 199, 232), # wall + (152, 223, 138), # floor + (31, 119, 180), # cabinet + (255, 187, 120), # bed + (188, 189, 34), # chair + (140, 86, 75), # sofa + (255, 152, 150), # table + (214, 39, 40), # door + (197, 176, 213), # window + (148, 103, 189), # bookshelf + (196, 156, 148), # picture + (23, 190, 207), # counter + (178, 76, 76), + (247, 182, 210), # desk + (66, 188, 102), + (219, 219, 141), # curtain + (140, 57, 197), + (202, 185, 52), + (51, 176, 203), + (200, 54, 131), + (92, 193, 61), + (78, 71, 183), + (172, 114, 82), + (255, 127, 14), # refrigerator + (91, 163, 138), + (153, 98, 156), + (140, 153, 101), + (158, 218, 229), # shower curtain + (100, 125, 154), + (178, 127, 135), + (120, 185, 128), + (146, 111, 194), + (44, 160, 44), # toilet + (112, 128, 144), # sink + (96, 207, 209), + (227, 119, 194), # bathtub + (213, 92, 176), + (94, 106, 211), + (82, 84, 163), # otherfurn + (100, 85, 144) + ] +color_palette = create_color_palette()[1:] + +semantics_cmap = { + 'living room': '#e6194b',#[230,25,75] + 'kitchen': '#3cb44b',#[60,180,75] + 'bedroom': '#ffe119',#[255,225,25] + 'bathroom': '#0082c8',#[0,130,200] + 'balcony': '#f58230',#[245,130,48] + 'corridor': '#911eb4',#[145,30,180] + 'dining room': '#46f0f0',#[70,240,240] + 'study': '#f032e6',#[240,50,230] + 'studio': '#d2f53c',#[210,245,60] + 'store room': '#fabebe',#[250,190,190] + 'garden': '#008080',#[0,128,128] + 'laundry room': '#e6beff',#[230,190,255] + 'office': '#aa6e28',#[170,110,40] + 'basement': '#fffac8',#[255,250,200] + 'garage': '#800000',#[128,0,0] + 'undefined': '#aaffc3',#[170,255,195] + 'door': '#808000',#[128,128,0] + 'window': '#ffd7b4',#[255,215,180] + 'outwall': '#000000',#[0,0,0] +} + +colormap_255 = [ + [230, 25, 75],#LivingRoom + [ 60, 180, 75],#MasterRoom + [170, 255, 195],#Kitchen + [ 0, 130, 200],#Bathroom + [245, 130, 48],#DiningRoom + [145, 30, 180],#ChildRoom + [ 70, 240, 240],#StudyRoom + [240, 50, 230],#SecondRoom + [210, 245, 60],#GuestRoom + [250, 190, 190],#Balcony + [ 0, 128, 128],#Entrance + [230, 190, 255],#Storage + [170, 110, 40],#Wall-in + [255, 255, 255],#External + [128, 0, 0],#ExteriorWall + [255, 225, 25],#FrontDoor + [128, 128, 128],#InteriorWall + [255, 255, 255],#InteriorDoor + #[255, 215, 180], + [ 0, 0, 128], + [128, 128, 0], + [255, 255, 255], + [ 0, 0, 0] +] + +cmaps = { + 'nyu40': color_palette, + 'semantics': semantics_cmap, + '255': colormap_255 +} + +category = [category for category in room_label if category[1] not in set(['External', + 'ExteriorWall', 'FrontDoor', 'InteriorWall', 'InteriorDoor'])] + +num_category = len(category) + +pixel2length = 18/256 + +def label2name(label=0): + if label < 0 or label > 17: + raise Exception("Invalid label!", label) + else: + return room_label[label][1] + + +def label2index(label=0): + if label < 0 or label > 17: + raise Exception("Invalid label!", label) + else: + return label + + +def index2label(index=0): + if index < 0 or index > 17: + raise Exception("Invalid index!", index) + else: + return index + + +def compute_centroid(mask): + sum_h = 0 + sum_w = 0 + count = 0 + shape_array = mask.shape + for h in range(shape_array[0]): + for w in range(shape_array[1]): + if mask[h, w] != 0: + sum_h += h + sum_w += w + count += 1 + return (sum_h//count, sum_w//count) + + +def log(file, msg='', is_print=True): + if is_print: + print(msg) + file.write(msg + '\n') + file.flush() + + +def collide2d(bbox1, bbox2, th=0): + return not( + (bbox1[0]-th > bbox2[2]) or + (bbox1[2]+th < bbox2[0]) or + (bbox1[1]-th > bbox2[3]) or + (bbox1[3]+th < bbox2[1]) + ) +# +# def rot90_2D(pts,k=1,cnt=np.array([127.5,127.5])): +# ang = k*np.pi/2 +# R = np.array([[np.cos(ang),np.sin(ang)],[-np.sin(ang),np.cos(ang)]]) +# return np.dot(pts-cnt,R)+cnt +# def fliplr_2D(pts,size=255): +# return np.stack([pts[:,0],size-pts[:,1]],1) +# +# def align_image(image,rot_old,rot_new=0): +# k = np.ceil((rot_old-rot_new+2*np.pi)%(2*np.pi)/(np.pi/4))//2 +# return np.rot90(image,k) +# +# def align_box(box,rot_old,rot_new=0): +# k = np.ceil((rot_old-rot_new+2*np.pi)%(2*np.pi)/(np.pi/4))//2 +# box = rot90_2D(box.reshape(-1,2),k).reshape(-1,4) +# return np.concatenate([np.minimum(box[:,:2],box[:,2:]),np.maximum(box[:,:2],box[:,2:])],-1)#.round().astype(int) +# +# def fliplr_box(box,size=255): +# box=fliplr_2D(box.reshape(-1,2),size=size).reshape(-1,4) +# return np.concatenate([np.minimum(box[:,:2],box[:,2:]),np.maximum(box[:,:2],box[:,2:])],-1)#.round().astype(int) + + +def rot90_2D(pts, k=1, cnt=np.array([127.5, 127.5])): + ang = k * np.pi / 2 + R = np.array([[np.cos(ang), np.sin(ang)], [-np.sin(ang), np.cos(ang)]]) + return np.dot(pts - cnt, R) + cnt + + +def fliplr_2D(pts, size=255): + return np.stack([pts[:, 0], size - pts[:, 1]], 1) + + +def align_image(image, rot_old, rot_new=0): + k = np.ceil((rot_old - rot_new + 2 * np.pi) % (2 * np.pi) / (np.pi / 4)) // 2 + return np.rot90(image, k) + + +def align_box(box, rot_old, rot_new=0): + k = np.ceil((rot_old - rot_new + 2 * np.pi) % (2 * np.pi) / (np.pi / 4)) // 2 + box = rot90_2D(box.reshape(-1, 2), k).reshape(-1, 4) + return np.concatenate([np.minimum(box[:, :2], box[:, 2:]), np.maximum(box[:, :2], box[:, 2:]) + 1], + -1).round().astype(int) + + +def align_points(points, rot_old, rot_new=0): + k = np.ceil((rot_old - rot_new + 2 * np.pi) % (2 * np.pi) / (np.pi / 4)) // 2 + points = rot90_2D(points, k) + return points.round().astype(int) + +def graph2labels(graph): + edges = graph.edges + return sorted([ + tuple(sorted((room_label[graph.nodes[u]['category']][1], + room_label[graph.nodes[v]['category']][1]))) + for u,v in edges + ]) + +def graph2labels_withtype(graph): + edges = graph.edges(data=True) + return sorted([ + ('acc' if d['type'] else 'adj', + *sorted( + (room_label[graph.nodes[u]['category']][1], + room_label[graph.nodes[v]['category']][1])) + ) + for u,v,d in edges + ]) + +def graph2functions(graph): + edges = graph.edges + return sorted([ + tuple(sorted((graph.nodes[u]['function'], + graph.nodes[v]['function']))) + for u,v in edges + ]) + +def graph2functions_withtype(graph): + edges = graph.edges(data=True) + return sorted([ + ('acc' if d['type'] else 'adj', + *sorted( + (graph.nodes[u]['function'], + graph.nodes[v]['function'])) + ) + for u,v,d in edges + ]) + +def counter2labels(counter): + return sorted({ + room_label[key][1]:value + for key,value in counter.items() + }.items()) + +def counter2functions(counter): + counter_new = { + room_label[key][1]:value + for key,value in counter.items() + } + counter_new['Bedroom']=0 + for key in counter: + if room_label[key][3]=='Bedroom': + counter_new['Bedroom']+=counter_new.pop(room_label[key][1]) + return sorted(counter_new.items()) + +def point_box_relation(u,vbox): + uy,ux = u + vy0, vx0, vy1, vx1 = vbox + + if (ux2: + b=b[:,:2] + b = np.concatenate((b,b[:1])) + nPoint = len(b)-1 + lineVec = b[1:]-b[:-1] + lineLength = np.linalg.norm(lineVec,axis=1) + + perimeter = lineLength.sum() + lineVec = lineVec/perimeter + lineLength = lineLength/perimeter + + angles = np.zeros(nPoint) + for i in range(nPoint): + z = np.cross(lineVec[i],lineVec[(i+1)%nPoint]) + sign = np.sign(z) + angles[i] = np.arccos(np.dot(lineVec[i],lineVec[(i+1)%nPoint]))*sign + + x = np.zeros(nPoint+1) + y = np.zeros(nPoint+1) + s = 0 + for i in range(1,nPoint+1): + x[i] = lineLength[i-1]+x[i-1] + y[i-1] = angles[i-1]+s + s = y[i-1] + y[-1] = s + return x,y + +def sample_tf(x,y,ndim=1000): + ''' + input: tf.x,tf.y, ndim + return: n-dim tf values + ''' + t = np.linspace(0,1,ndim) + return np.piecewise(t,[t>=xx for xx in x],y) + +class DataRetriever(): + def __init__(self,tf_train,centroids,clusters): + ''' + tf_train: tf of training data + centroids: tf cluster centroids of training data + clusters: data index for each cluster of training data + ''' + self.tf_train = tf_train + self.centroids = centroids + self.clusters = clusters + + def retrieve_bf(self,datum,k=20): + # compute tf for the data boundary + x,y = compute_tf(datum.boundary) + y_sampled = sample_tf(x,y,1000) + dist = np.linalg.norm(y_sampled-self.tf_train,axis=1) + if k>np.log2(len(self.tf_train)): + index = np.argsort(dist)[:k] + else: + index = np.argpartition(dist,k)[:k] + index = index[np.argsort(dist[index])] + return index + + def retrieve_cluster(self,datum,k=20,multi_clusters=False): + ''' + datum: test data + k: retrieval num + return: index for training data + ''' + # compute tf for the data boundary + x,y = compute_tf(datum.boundary) + y_sampled = sample_tf(x,y,1000) + # compute distance to cluster centers + dist = np.linalg.norm(y_sampled-self.centroids,axis=1) + + if multi_clusters: + # more candicates + c = int(np.max(np.clip(np.log2(k),1,5))) + cluster_idx = np.argsort(dist)[:c] + cluster = np.unique(self.clusters[cluster_idx].reshape(-1)) + else: + # only candicates + cluster_idx = np.argmin(dist) + cluster = self.clusters[cluster_idx] + + # compute distance to cluster samples + dist = np.linalg.norm(y_sampled-self.tf_train[cluster],axis=1) + index = cluster[np.argsort(dist)[:k]] + return index + +def retrieval(test_data,k,multi_clusters): + + retriever = DataRetriever(vw.tf_train,vw.centroids,vw.clusters) + datum = test_data + # vis_boundary(datum.boundary) + + t1 = time.clock() + index = retriever.retrieve_cluster(datum,k,multi_clusters) + t2 = time.clock() + print('cluster',t2-t1) + data_retrieval = vw.train_data[index] + # data_retrieval= trainNameList[index] + # vis_boundary(data_retrieval[0].boundary) + + # t1 = time() + # index = retriever.retrieve_bf(datum,k=10) + # t2 = time() + # print('bf',t2-t1) + # data_retrieval = train_data[index] + return index + +def vis_boundary(b): + import cv2 + import matplotlib.pyplot as plt + img = np.ones((256,256,3)) + img = cv2.line(img,tuple(b[0,:2]),tuple(b[1,:2]),(1.,1.,0.),thickness=2) + for i in range(1,len(b)-1): + img = cv2.line(img,tuple(b[i,:2]),tuple(b[i+1,:2]),(0.,0.,0.),thickness=2) + img = cv2.line(img,tuple(b[0,:2]),tuple(b[-1,:2]),(0.,0.,0.),thickness=2) + plt.imshow(img) + plt.show() + +if __name__ == "__main__": + import scipy.io as sio + import pickle + from time import time + import cv2 + import matplotlib.pyplot as plt + + def vis_boundary(b): + img = np.ones((256,256,3)) + img = cv2.line(img,tuple(b[0,:2]),tuple(b[1,:2]),(1.,1.,0.),thickness=2) + for i in range(1,len(b)-1): + img = cv2.line(img,tuple(b[i,:2]),tuple(b[i+1,:2]),(0.,0.,0.),thickness=2) + img = cv2.line(img,tuple(b[0,:2]),tuple(b[-1,:2]),(0.,0.,0.),thickness=2) + plt.imshow(img) + plt.show() + + #data_train = sio.loadmat('data_train70.mat',squeeze_me=True,struct_as_record=False)['data'] + #data_test = #sio.loadmat('data_test15.mat',squeeze_me=True,struct_as_record=False)['data'] + t1 = time() + train_data = pickle.load(open('data_train_converted.pkl','rb'))['data'] + t2 = time() + print('load train',t2-t1) + + t1 = time() + test_data = pickle.load(open('data_test_converted.pkl','rb')) + test_data, testNameList, trainNameList = test_data['data'], list(test_data['testNameList']), list( + test_data['trainNameList']) + t2 = time() + print('load test',t2-t1) + + t1 = time() + tf_train = np.load('tf_train.npy') + centroids = np.load('centroids_train.npy') + clusters = np.load('clusters_train.npy') + t2 = time() + print('load tf/centroids/clusters',t2-t1) + + retriever = DataRetriever(tf_train,centroids,clusters) + + datum = np.random.choice(test_data,1)[0] + vis_boundary(datum.boundary) + + t1 = time() + index = retriever.retrieve_cluster(datum,k=10,multi_clusters=False) + t2 = time() + print('cluster',t2-t1) + data_retrieval = train_data[index] + vis_boundary(data_retrieval[0].boundary) + + t1 = time() + index = retriever.retrieve_bf(datum,k=10) + t2 = time() + print('bf',t2-t1) + data_retrieval = train_data[index] + vis_boundary(data_retrieval[0].boundary) diff --git a/Interface/static/Btopenjs/bootstrap.min.css b/Interface/static/Btopenjs/bootstrap.min.css new file mode 100644 index 0000000000000000000000000000000000000000..812b2cb29a2f3f86be331a9c6bb94d494ffbb629 --- /dev/null +++ b/Interface/static/Btopenjs/bootstrap.min.css @@ -0,0 +1,10 @@ +/*! + * Bootstrap v3.3.4 (http://getbootstrap.com) + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ + +/*! + * Generated using the Bootstrap Customizer (http://getbootstrap.com/customize/?id=9ce37640c80569c9e07b) + * Config saved to config.json and https://gist.github.com/9ce37640c80569c9e07b + *//*! normalize.css v3.0.2 | MIT License | git.io/normalize */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:hover,a:focus{color:#23527c;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role="button"]{cursor:pointer}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:normal;line-height:1;color:#777}h1,.h1,h2,.h2,h3,.h3{margin-top:20px;margin-bottom:10px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10px;margin-bottom:10px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%}h1,.h1{font-size:36px}h2,.h2{font-size:30px}h3,.h3{font-size:24px}h4,.h4{font-size:18px}h5,.h5{font-size:14px}h6,.h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}small,.small{font-size:85%}mark,.mark{background-color:#fcf8e3;padding:.2em}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:hover{color:#286090}.text-success{color:#3c763d}a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#337ab7}a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none;margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-top:0;margin-bottom:20px}dt,dd{line-height:1.42857143}dt{font-weight:bold}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0;text-align:right}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}.container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.row{margin-left:-15px;margin-right:-15px}.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}.clearfix:before,.clearfix:after,.dl-horizontal dd:before,.dl-horizontal dd:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after{content:" ";display:table}.clearfix:after,.dl-horizontal dd:after,.container:after,.container-fluid:after,.row:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right !important}.pull-left{float:left !important}.hide{display:none !important}.show{display:block !important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none !important}.affix{position:fixed} \ No newline at end of file diff --git a/Interface/static/Btopenjs/font-awesome.min.css b/Interface/static/Btopenjs/font-awesome.min.css new file mode 100644 index 0000000000000000000000000000000000000000..abffda8ee09d0d10aa126c35f978ea0bacdb4648 --- /dev/null +++ b/Interface/static/Btopenjs/font-awesome.min.css @@ -0,0 +1,4 @@ +/*! + * Font Awesome 4.3.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */@font-face{font-family:'FontAwesome';src:url('font/fontawesome-webfont.eot?v=4.3.0');src:url('font/fontawesome-webfont.eot?#iefix&v=4.3.0') format('embedded-opentype'),url('font/fontawesome-webfont.woff2?v=4.3.0') format('woff2'),url('font/fontawesome-webfont.woff?v=4.3.0') format('woff'),url('font/fontawesome-webfont.ttf?v=4.3.0') format('truetype'),url('font/fontawesome-webfont.svg?v=4.3.0#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transform:translate(0, 0)}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-genderless:before,.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-hotel:before,.fa-bed:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"} \ No newline at end of file diff --git a/Interface/static/Btopenjs/gooey.min.css b/Interface/static/Btopenjs/gooey.min.css new file mode 100644 index 0000000000000000000000000000000000000000..98605944cdfe570cce5ab06d5e331559de6bbde7 --- /dev/null +++ b/Interface/static/Btopenjs/gooey.min.css @@ -0,0 +1,154 @@ +.navimenu { + position: relative; + min-width: 50px; + min-height: 50px; + box-sizing: border-box; + text-align: left; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + -webkit-transform-style: preserve-3d; + outline: transparent solid 5px; + transform-style: preserve-3d +} + +.navimenu .gooey-menu-item, .navimenu .open-button { + border-radius: 100%; + position: absolute; + color: #fff; + text-align: center; + font-size: .9em; + transform: translate3d(0, 0, 0); + -ms-transform: translate3d(0, 0, 0); + -moz-transform: translate3d(0, 0, 0); + -o-transform: translate3d(0, 0, 0); + -webkit-transform: translate3d(0, 0, 0); + transition: transform ease-out 200ms; + -ms-transition: transform ease-out 200ms; + -o-transition: transform ease-out 200ms; + -moz-transition: transform ease-out 200ms; + -webkit-transition: transform ease-out 200ms; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + -webkit-transform-style: preserve-3d; + outline: transparent solid 5px; + transform-style: preserve-3d +} + +.navimenu .menu-open { + display: none +} + +.navimenu .burger { + background: #fff; + display: block; + position: absolute; + top: 50%; + left: 50%; + margin-top: -1.5px; + transition: transform 200ms; + -ms-transition: transform 200ms; + -moz-transition: transform 200ms; + -webkit-transition: transform 200ms; + -o-transition: transform 200ms +} + +.navimenu .burger-1 { + transform: translate3d(0, -8px, 0); + -moz-transform: translate3d(0, -8px, 0); + -o-transform: translate3d(0, -8px, 0); + -webkit-transform: translate3d(0, -8px, 0); + -ms-transform: translate3d(0, -8px, 0) +} + +.navimenu .burger-2 { + transform: translate3d(0, 0, 0); + -ms-transform: translate3d(0, 0, 0); + -moz-transform: translate3d(0, 0, 0); + -o-transform: translate3d(0, 0, 0); + -webkit-transform: translate3d(0, 0, 0) +} + +.navimenu .burger-3 { + transform: translate3d(0, 8px, 0); + -ms-transform: translate3d(0, 8px, 0); + -moz-transform: translate3d(0, 8px, 0); + -o-transform: translate3d(0, 8px, 0); + -webkit-transform: translate3d(0, 8px, 0) +} + +.navimenu .menu-open:checked + .open-button .burger-1 { + transform: translate3d(0, 0, 0) rotate(45deg); + -ms-transform: translate3d(0, 0, 0) rotate(45deg); + -moz-transform: translate3d(0, 0, 0) rotate(45deg); + -o-transform: translate3d(0, 0, 0) rotate(45deg); + -webkit-transform: translate3d(0, 0, 0) rotate(45deg) +} + +.navimenu .menu-open:checked + .open-button .burger-2 { + transform: translate3d(0, 0, 0) scale(.1, 1); + -ms-transform: translate3d(0, 0, 0) scale(.1, 1); + -moz-transform: translate3d(0, 0, 0) scale(.1, 1); + -o-transform: translate3d(0, 0, 0) scale(.1, 1); + -webkit-transform: translate3d(0, 0, 0) scale(.1, 1) +} + +.navimenu .menu-open:checked + .open-button .burger-3 { + transform: translate3d(0, 0, 0) rotate(-45deg); + -ms-transform: translate3d(0, 0, 0) rotate(-45deg); + -moz-transform: translate3d(0, 0, 0) rotate(-45deg); + -webkit-transform: translate3d(0, 0, 0) rotate(-45deg); + -o-transform: translate3d(0, 0, 0) rotate(-45deg) +} + +.navimenu .gooey-menu-item:hover { + /*background-color: #4682b4;*/ + /*color: #00bcd4*/ +} + +.navimenu .gooey-menu-item { + transition-duration: 180ms; + -moz-transition-duration: 180ms; + -webkit-transition-duration: 180ms; + -o-transition-duration: 180ms +} + +.navimenu .open-button { + z-index: 2; + transition-timing-function: cubic-bezier(.175, .885, .32, 1.275); + -ms-transition-timing-function: cubic-bezier(.175, .885, .32, 1.275); + -moz-transition-timing-function: cubic-bezier(.175, .885, .32, 1.275); + -webkit-transition-timing-function: cubic-bezier(.175, .885, .32, 1.275); + -o-transition-timing-function: cubic-bezier(.175, .885, .32, 1.275); + transition-duration: 400ms; + -ms-transition-duration: 400ms; + -o-transition-duration: 400ms; + -moz-transition-duration: 400ms; + -webkit-transition-duration: 400ms; + transform: scale(1.1, 1.1) translate3d(0, 0, 0); + -ms-transform: scale(1.1, 1.1) translate3d(0, 0, 0); + -o-transform: scale(1.1, 1.1) translate3d(0, 0, 0); + -moz-transform: scale(1.1, 1.1) translate3d(0, 0, 0); + -webkit-transform: scale(1.1, 1.1) translate3d(0, 0, 0); + cursor: pointer +} + +.navimenu .open-button:hover { + transform: scale(1.2, 1.2) translate3d(0, 0, 0); + -ms-transform: scale(1.2, 1.2) translate3d(0, 0, 0); + -moz-transform: scale(1.2, 1.2) translate3d(0, 0, 0); + -o-transform: scale(1.2, 1.2) translate3d(0, 0, 0); + -webkit-transform: scale(1.2, 1.2) translate3d(0, 0, 0) +} + +.navimenu .menu-open:checked + .open-button { + transition: 200ms linear; + -ms-transition: 200ms linear; + -webkit-transition: 200ms linear; + -moz-transition: 200ms linear; + -o-transition: 200ms linear; + transform: scale(.9, .9) translate3d(0, 0, 0); + -ms-transform: scale(.9, .9) translate3d(0, 0, 0); + -o-transform: scale(.9, .9) translate3d(0, 0, 0); + -webkit-transform: scale(.9, .9) translate3d(0, 0, 0); + -moz-transform: scale(.9, .9) translate3d(0, 0, 0) +} diff --git a/Interface/static/Btopenjs/gooey.min.js b/Interface/static/Btopenjs/gooey.min.js new file mode 100644 index 0000000000000000000000000000000000000000..1afba994c6b27e9fc2cd89479a5a22673030912a --- /dev/null +++ b/Interface/static/Btopenjs/gooey.min.js @@ -0,0 +1,230 @@ +(function (g) { + g.gooeymenu = function (h, q) { + var k = g(h); + k.addClass("navimenu"); + var b = this, a = b.options = g.extend({}, g.gooeymenu.defaults, q); + b.els = {item: k.find(".gooey-menu-item"), checkbox: k.find(".menu-open"), button: k.find(".open-button")}; + b.methods = { + setup: function () { + var d = {small: 1.4, medium: 1.8, large: 2.1}, f = {small: 1.3, medium: 1.6, large: 2.1}, c; + for (c in d) a.margin === c ? a.margin = d[c] : null; + for (var e in f) a.bounceLength === e ? a.bounceLength = f[e] : null; + b.methods.responsiveStyles(); + // b.els.item.hover(function () { + // a.currentBg = + // // b.els.item.css("background-color"); + // g(this).css("background-color", a.hover) + // }, function () { + // g(this).css("background-color", a.currentBg) + // }); + !0 === a.bounce && b.methods.bounce() + }, setEvents: function () { + ["open", "close"].forEach(function (d, b) { + k.on(d, function () { + a[d] && a[d].apply(this, arguments) + }) + }) + }, bounce: function () { + if (!0 === a.bounce) { + var d = b.els.item.css("transition-timing-function"); + b.els.checkbox.on("change", function () { + g(this).is(":checked") ? b.els.item.css({ + "transition-timing-function": "cubic-bezier(0.8, 0.84, 0.44, " + + a.bounceLength + ")", + "-o-transition-timing-function": "cubic-bezier(0.8, 0.84, 0.44, " + a.bounceLength + ")", + "-moz-transition-timing-function": "cubic-bezier(0.8, 0.84, 0.44, " + a.bounceLength + ")", + "-webkit-transition-timing-function": "cubic-bezier(0.8, 0.84, 0.44, " + a.bounceLength + ")", + "-ms-transition-timing-function": "cubic-bezier(0.8, 0.84, 0.44, " + a.bounceLength + ")" + }) : b.els.item.css({ + "transition-timing-function": d, + "-moz-transition-timing-function": d, + "-o-transition-timing-function": d, + "-webkit-transition-timing-function": d + }) + }) + } + }, + circle: function () { + k.trigger("open"); + var d, f, c, e, m, h, n, r = b.els.item.length, l = a.transitionStep, q = Math.PI, t = 360 / r, + p = t = 360 / r; + f = a.circle.radius; + b.els.item.each(function () { + b.els.checkbox.is(":checked") ? (d = q * p / 180, c = Math.abs(Math.cos(d)), e = f * c, m = Math.sqrt(f * f - e * e), h = b.methods.periodCalc(p).x, n = b.methods.periodCalc(p).y, g(this).css({ + transform: "translate3d(" + h + e + "px," + n + m + "px,0)", + "-o-transform": "translate3d(" + h + e + "px," + n + m + "px,0)", + "-webkit-transform": "translate3d(" + h + e + "px," + n + m + "px,0)", + "-moz-transform": "translate3d(" + + h + e + "px," + n + m + "px,0)", + "-ms-transform": "translate3d(" + h + e + "px," + n + m + "px,0)", + "transition-duration": l + "ms", + "-o-transition-duration": l + "ms", + "-webkit-transition-duration": l + "ms", + "-moz-transition-duration": l + "ms" + }), p += t, l += a.transitionStep) : (b.els.item.css({ + transform: "translate3d(0, 0, 0)", + "-moz-transform": "translate3d(0, 0, 0)", + "-webkit-transform": "translate3d(0, 0, 0)", + "-ms-transform": "translate3d(0, 0, 0)", + "-o-transform": "translate3d(0, 0, 0)" + }), p = 360 / r, l = a.transitionStep, k.trigger("close")) + }) + }, periodCalc: function (a) { + return { + x: 90 > + a || 270 < a ? "" : "-", y: 180 < a ? "" : "-" + } + }, linear: function (d) { + k.trigger("open"); + var f = "horizontal" === a.style ? a.horizontal.menuItemPosition : a.vertical.menuItemPosition, + c = d[f].init, e = a.transitionStep; + b.els.item.each(function () { + b.els.checkbox.is(":checked") ? "horizontal" === a.style ? (g(this).css({ + transform: "translate3d(" + c + "px, 0, 0)", + "-ms-transform": "translate3d(" + c + "px, 0, 0)", + "-o-transform": "translate3d(" + c + "px, 0, 0)", + "-moz-transform": "translate3d(" + c + "px, 0, 0)", + "-webkit-transform": "translate3d(" + c + "px, 0, 0)", + "transition-duration": e + "ms", + "-o-transition-duration": e + "ms", + "-webkit-transition-duration": e + "ms", + "-moz-transition-duration": e + "ms" + }), c += d[f].init, e += a.transitionStep) : "vertical" === a.style && (g(this).css({ + "transition-duration": e + "ms", + "-moz-transition-duration": e + "ms", + "-o-transition-duration": e + "ms", + "-webkit-transition-duration": e + "ms" + }), "down" === a.vertical.direction ? g(this).css({ + transform: "translate3d(0, " + c + "px, 0)", + "-moz-transform": "translate3d(0, " + c + "px, 0)", + "-o-transform": "translate3d(0, " + c + + "px, 0)", + "-webkit-transform": "translate3d(0, " + c + "px, 0)", + "-ms-transform": "translate3d(0, " + c + "px, 0)" + }) : "up" === a.vertical.direction && g(this).css({ + transform: "translate3d(0,-" + c + "px, 0)", + "-moz-transform": "translate3d(0,-" + c + "px, 0)", + "-webkit-transform": "translate3d(0,-" + c + "px, 0)", + "-o-transform": "translate3d(0,-" + c + "px, 0)", + "-ms-transform": "translate3d(0,-" + c + "px, 0)" + }), c += d[f].init, e += a.transitionStep) : (b.els.item.css({ + transform: "translate3d(0, 0, 0)", + "-moz-transform": "translate3d(0, 0, 0)", + "-webkit-transform": "translate3d(0, 0, 0)", + "-ms-transform": "translate3d(0, 0, 0)", + "-o-transform": "translate3d(0, 0, 0)" + }), c = d[f].init, e = a.transitionStep, k.trigger("close")) + }) + }, translate: function () { + var d = {glue: {init: a.size}, spaced: {init: a.size * a.margin}}; + b.els.checkbox.on("change", function () { + b._callbacks[a.style](d) + }) + }, createOn: function (a, b, c, e) { + b = document.createElementNS("http://www.w3.org/2000/svg", b); + for (var g in c) c.hasOwnProperty(g) && b.setAttribute(g, c[g]); + e && b.appendChild(document.createTextNode(e)); + return a.appendChild(b) + }, responsiveStyles: function () { + var d = + 0 < window.innerWidth ? window.innerWidth : screen.width; + 320 <= d && 480 >= d ? (a.size /= 1.4, a.circle.radius /= 1.2) : 480 < d && 768 >= d ? a.size /= 1.2 : 780 < d && 1024 >= d && (a.circle.radius /= 1.2, a.size /= 1.1); + b.els.item.css({ + width: a.size + "px", + height: a.size + "px", + color: a.contentColor, + // "background-color": a.bgColor, + "line-height": a.size + "px" + }); + b.els.button.css({ + width: a.size + "px", + height: a.size + "px", + // "background-color": a.bgColor, + "line-height": a.size + "px" + }); + k.find(".burger").css({ + "font-size": ".8em", width: a.size / 2 + "px", height: "3px", left: a.size / + 4 + "px" + }) + } + }; + b._callbacks = {vertical: b.methods.linear, horizontal: b.methods.linear, circle: b.methods.circle}; + b.init = function () { + var a = document.createElementNS("http://www.w3.org/2000/svg", "svg"), f = g(".navimenu").index(k); + a.setAttribute("id", "gooeySVG" + f); + a.setAttribute("class", "gooeySVG"); + k.append(a); + a = document.getElementById("gooeySVG" + f); + b.methods.createOn(a, "defs", {id: "defs" + f}); + a = document.getElementById("defs" + f); + b.methods.createOn(a, "filter", {id: "goo-shadow" + f, overflow: "hidden"}); + var c = document.getElementById("goo-shadow" + + f); + b.methods.createOn(c, "feGaussianBlur", {"in": "SourceGraphic", result: "blur", stdDeviation: "10"}); + b.methods.createOn(c, "feColorMatrix", { + "in": "blur", + mode: "matrix", + values: "1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 18 -8", + result: "goo" + }); + b.methods.createOn(c, "feGaussianBlur", {"in": "goo", stdDeviation: "2", result: "shadow"}); + b.methods.createOn(c, "feColorMatrix", { + "in": "shadow", + mode: "matrix", + values: "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0", + result: "shadow" + }); + b.methods.createOn(c, "feOffset", { + "in": "shadow", dx: "1", + dy: "1", result: "shadow" + }); + b.methods.createOn(c, "feComposite", {in2: "shadow", "in": "goo", result: "goo"}); + b.methods.createOn(c, "feComposite", {in2: "goo", "in": "SourceGraphic", result: "mix"}); + b.methods.createOn(a, "filter", {id: "goo" + f}); + a = document.getElementById("goo" + f); + b.methods.createOn(a, "feGaussianBlur", {"in": "SourceGraphic", result: "blur", stdDeviation: "10"}); + b.methods.createOn(a, "feColorMatrix", { + "in": "blur", + mode: "matrix", + values: "1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 18 -7", + result: "goo" + }); + b.methods.createOn(a, + "feComposite", {in2: "goo", "in": "SourceGraphic", result: "mix"}); + k.css({ + "-webkit-filter": "url('#goo-shadow" + f + "')", + filter: "url('#goo-shadow" + f + "')", + "-ms-filter": "url('#goo-shadow" + f + "')", + "-o-filter": "url('#goo-shadow" + f + "')" + }); + b.methods.setEvents(); + b.methods.setup(); + b.methods.translate.apply(this, arguments) + }; + b.init() + }; + g.gooeymenu.defaults = { + style: "horizontal", + size: 70, + margin: "medium", + // bgColor: "steelblue", + contentColor: "white", + transitionStep: 100, + bounce: !1, + bounceLength: "medium", + hover: "white", + circle: {radius: 80}, + horizontal: {menuItemPosition: "glue"}, + vertical: {menuItemPosition: "spaced", direction: "up"}, + open: function () { + }, + close: function () { + } + }; + g.fn.gooeymenu = function (h) { + void 0 === h && (h = {}); + if (h && "object" === typeof h) return this.each(function () { + new g.gooeymenu(this, h) + }) + } +})(jQuery); diff --git a/Interface/static/Btopenjs/jquery-2.1.3.min.js b/Interface/static/Btopenjs/jquery-2.1.3.min.js new file mode 100644 index 0000000000000000000000000000000000000000..25714ed29ab6fcf0355da4b45ac602fac0154efb --- /dev/null +++ b/Interface/static/Btopenjs/jquery-2.1.3.min.js @@ -0,0 +1,4 @@ +/*! jQuery v2.1.3 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */ +!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l=a.document,m="2.1.3",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return n.each(this,a,b)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(n.isPlainObject(d)||(e=n.isArray(d)))?(e?(e=!1,f=c&&n.isArray(c)?c:[]):f=c&&n.isPlainObject(c)?c:{},g[b]=n.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){return!n.isArray(a)&&a-parseFloat(a)+1>=0},isPlainObject:function(a){return"object"!==n.type(a)||a.nodeType||n.isWindow(a)?!1:a.constructor&&!j.call(a.constructor.prototype,"isPrototypeOf")?!1:!0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(a){var b,c=eval;a=n.trim(a),a&&(1===a.indexOf("use strict")?(b=l.createElement("script"),b.text=a,l.head.appendChild(b).parentNode.removeChild(b)):c(a))},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=s(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:g.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;c>d;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=s(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(c=a[b],b=a,a=c),n.isFunction(a)?(e=d.call(arguments,2),f=function(){return a.apply(b||this,e.concat(d.call(arguments)))},f.guid=a.guid=a.guid||n.guid++,f):void 0},now:Date.now,support:k}),n.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function s(a){var b=a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=hb(),z=hb(),A=hb(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N=M.replace("w","w#"),O="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+N+"))|)"+L+"*\\]",P=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+O+")*)|.*)\\)|)",Q=new RegExp(L+"+","g"),R=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),S=new RegExp("^"+L+"*,"+L+"*"),T=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),U=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),V=new RegExp(P),W=new RegExp("^"+N+"$"),X={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+O),PSEUDO:new RegExp("^"+P),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ab=/[+~]/,bb=/'|\\/g,cb=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),db=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},eb=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(fb){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function gb(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],k=b.nodeType,"string"!=typeof a||!a||1!==k&&9!==k&&11!==k)return d;if(!e&&p){if(11!==k&&(f=_.exec(a)))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return H.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName)return H.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=1!==k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(bb,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+rb(o[l]);w=ab.test(a)&&pb(b.parentNode)||b,x=o.join(",")}if(x)try{return H.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function hb(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ib(a){return a[u]=!0,a}function jb(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function kb(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function lb(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function mb(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function nb(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function ob(a){return ib(function(b){return b=+b,ib(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function pb(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=gb.support={},f=gb.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=gb.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=g.documentElement,e=g.defaultView,e&&e!==e.top&&(e.addEventListener?e.addEventListener("unload",eb,!1):e.attachEvent&&e.attachEvent("onunload",eb)),p=!f(g),c.attributes=jb(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=jb(function(a){return a.appendChild(g.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(g.getElementsByClassName),c.getById=jb(function(a){return o.appendChild(a).id=u,!g.getElementsByName||!g.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(g.querySelectorAll))&&(jb(function(a){o.appendChild(a).innerHTML="",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),jb(function(a){var b=g.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&jb(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",P)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===g||a.ownerDocument===v&&t(v,a)?-1:b===g||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,h=[a],i=[b];if(!e||!f)return a===g?-1:b===g?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return lb(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?lb(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},g):n},gb.matches=function(a,b){return gb(a,null,null,b)},gb.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return gb(b,n,null,[a]).length>0},gb.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},gb.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},gb.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},gb.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=gb.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=gb.selectors={cacheLength:50,createPseudo:ib,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(cb,db),a[3]=(a[3]||a[4]||a[5]||"").replace(cb,db),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||gb.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&gb.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(cb,db).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=gb.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(Q," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||gb.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ib(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ib(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?ib(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ib(function(a){return function(b){return gb(a,b).length>0}}),contains:ib(function(a){return a=a.replace(cb,db),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ib(function(a){return W.test(a||"")||gb.error("unsupported lang: "+a),a=a.replace(cb,db).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:ob(function(){return[0]}),last:ob(function(a,b){return[b-1]}),eq:ob(function(a,b,c){return[0>c?c+b:c]}),even:ob(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:ob(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:ob(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:ob(function(a,b,c){for(var d=0>c?c+b:c;++db;b++)d+=a[b].value;return d}function sb(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function tb(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ub(a,b,c){for(var d=0,e=b.length;e>d;d++)gb(a,b[d],c);return c}function vb(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function wb(a,b,c,d,e,f){return d&&!d[u]&&(d=wb(d)),e&&!e[u]&&(e=wb(e,f)),ib(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ub(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:vb(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=vb(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=vb(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function xb(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=sb(function(a){return a===b},h,!0),l=sb(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[sb(tb(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return wb(i>1&&tb(m),i>1&&rb(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&xb(a.slice(i,e)),f>e&&xb(a=a.slice(e)),f>e&&rb(a))}m.push(c)}return tb(m)}function yb(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=F.call(i));s=vb(s)}H.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&gb.uniqueSort(i)}return k&&(w=v,j=t),r};return c?ib(f):f}return h=gb.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=xb(b[c]),f[u]?d.push(f):e.push(f);f=A(a,yb(e,d)),f.selector=a}return f},i=gb.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(cb,db),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(cb,db),ab.test(j[0].type)&&pb(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&rb(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,ab.test(a)&&pb(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=jb(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),jb(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||kb("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&jb(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||kb("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),jb(function(a){return null==a.getAttribute("disabled")})||kb(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),gb}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=n.expr.match.needsContext,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^.[^:#\[\.,]*$/;function x(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(w.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return g.call(b,a)>=0!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=this.length,d=[],e=this;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;c>b;b++)if(n.contains(e[b],this))return!0}));for(b=0;c>b;b++)n.find(a,e[b],d);return d=this.pushStack(c>1?n.unique(d):d),d.selector=this.selector?this.selector+" "+a:a,d},filter:function(a){return this.pushStack(x(this,a||[],!1))},not:function(a){return this.pushStack(x(this,a||[],!0))},is:function(a){return!!x(this,"string"==typeof a&&u.test(a)?n(a):a||[],!1).length}});var y,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=n.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||y).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:l,!0)),v.test(c[1])&&n.isPlainObject(b))for(c in b)n.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}return d=l.getElementById(c[2]),d&&d.parentNode&&(this.length=1,this[0]=d),this.context=l,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof y.ready?y.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};A.prototype=n.fn,y=n(l);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};n.extend({dir:function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),n.fn.extend({has:function(a){var b=n(a,this),c=b.length;return this.filter(function(){for(var a=0;c>a;a++)if(n.contains(this,b[a]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=u.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.unique(f):f)},index:function(a){return a?"string"==typeof a?g.call(n(a),this[0]):g.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.unique(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){while((a=a[b])&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return n.dir(a,"parentNode")},parentsUntil:function(a,b,c){return n.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return n.dir(a,"nextSibling")},prevAll:function(a){return n.dir(a,"previousSibling")},nextUntil:function(a,b,c){return n.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return n.dir(a,"previousSibling",c)},siblings:function(a){return n.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return n.sibling(a.firstChild)},contents:function(a){return a.contentDocument||n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(C[a]||n.unique(e),B.test(a)&&e.reverse()),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return n.each(a.match(E)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):n.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(b=a.memory&&l,c=!0,g=e||0,e=0,f=h.length,d=!0;h&&f>g;g++)if(h[g].apply(l[0],l[1])===!1&&a.stopOnFalse){b=!1;break}d=!1,h&&(i?i.length&&j(i.shift()):b?h=[]:k.disable())},k={add:function(){if(h){var c=h.length;!function g(b){n.each(b,function(b,c){var d=n.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&g(c)})}(arguments),d?f=h.length:b&&(e=c,j(b))}return this},remove:function(){return h&&n.each(arguments,function(a,b){var c;while((c=n.inArray(b,h,c))>-1)h.splice(c,1),d&&(f>=c&&f--,g>=c&&g--)}),this},has:function(a){return a?n.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],f=0,this},disable:function(){return h=i=b=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,b||k.disable(),this},locked:function(){return!i},fireWith:function(a,b){return!h||c&&!i||(b=b||[],b=[a,b.slice?b.slice():b],d?i.push(b):j(b)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!c}};return k},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&n.isFunction(a.promise)?e:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){(a===!0?--n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&--n.readyWait>0||(H.resolveWith(l,[n]),n.fn.triggerHandler&&(n(l).triggerHandler("ready"),n(l).off("ready"))))}});function I(){l.removeEventListener("DOMContentLoaded",I,!1),a.removeEventListener("load",I,!1),n.ready()}n.ready.promise=function(b){return H||(H=n.Deferred(),"complete"===l.readyState?setTimeout(n.ready):(l.addEventListener("DOMContentLoaded",I,!1),a.addEventListener("load",I,!1))),H.promise(b)},n.ready.promise();var J=n.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)n.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f};n.acceptData=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function K(){Object.defineProperty(this.cache={},0,{get:function(){return{}}}),this.expando=n.expando+K.uid++}K.uid=1,K.accepts=n.acceptData,K.prototype={key:function(a){if(!K.accepts(a))return 0;var b={},c=a[this.expando];if(!c){c=K.uid++;try{b[this.expando]={value:c},Object.defineProperties(a,b)}catch(d){b[this.expando]=c,n.extend(a,b)}}return this.cache[c]||(this.cache[c]={}),c},set:function(a,b,c){var d,e=this.key(a),f=this.cache[e];if("string"==typeof b)f[b]=c;else if(n.isEmptyObject(f))n.extend(this.cache[e],b);else for(d in b)f[d]=b[d];return f},get:function(a,b){var c=this.cache[this.key(a)];return void 0===b?c:c[b]},access:function(a,b,c){var d;return void 0===b||b&&"string"==typeof b&&void 0===c?(d=this.get(a,b),void 0!==d?d:this.get(a,n.camelCase(b))):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d,e,f=this.key(a),g=this.cache[f];if(void 0===b)this.cache[f]={};else{n.isArray(b)?d=b.concat(b.map(n.camelCase)):(e=n.camelCase(b),b in g?d=[b,e]:(d=e,d=d in g?[d]:d.match(E)||[])),c=d.length;while(c--)delete g[d[c]]}},hasData:function(a){return!n.isEmptyObject(this.cache[a[this.expando]]||{})},discard:function(a){a[this.expando]&&delete this.cache[a[this.expando]]}};var L=new K,M=new K,N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(O,"-$1").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}M.set(a,b,c)}else c=void 0;return c}n.extend({hasData:function(a){return M.hasData(a)||L.hasData(a)},data:function(a,b,c){return M.access(a,b,c) +},removeData:function(a,b){M.remove(a,b)},_data:function(a,b,c){return L.access(a,b,c)},_removeData:function(a,b){L.remove(a,b)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=M.get(f),1===f.nodeType&&!L.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d])));L.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){M.set(this,a)}):J(this,function(b){var c,d=n.camelCase(a);if(f&&void 0===b){if(c=M.get(f,a),void 0!==c)return c;if(c=M.get(f,d),void 0!==c)return c;if(c=P(f,d,void 0),void 0!==c)return c}else this.each(function(){var c=M.get(this,d);M.set(this,d,b),-1!==a.indexOf("-")&&void 0!==c&&M.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){M.remove(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=L.get(a,b),c&&(!d||n.isArray(c)?d=L.access(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return L.get(a,c)||L.access(a,c,{empty:n.Callbacks("once memory").add(function(){L.remove(a,[b+"queue",c])})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.lengthx",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var U="undefined";k.focusinBubbles="onfocusin"in a;var V=/^key/,W=/^(?:mouse|pointer|contextmenu)|click/,X=/^(?:focusinfocus|focusoutblur)$/,Y=/^([^.]*)(?:\.(.+)|)$/;function Z(){return!0}function $(){return!1}function _(){try{return l.activeElement}catch(a){}}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.get(a);if(r){c.handler&&(f=c,c=f.handler,e=f.selector),c.guid||(c.guid=n.guid++),(i=r.events)||(i=r.events={}),(g=r.handle)||(g=r.handle=function(b){return typeof n!==U&&n.event.triggered!==b.type?n.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(E)||[""],j=b.length;while(j--)h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o&&(l=n.event.special[o]||{},o=(e?l.delegateType:l.bindType)||o,l=n.event.special[o]||{},k=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},f),(m=i[o])||(m=i[o]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,p,g)!==!1||a.addEventListener&&a.addEventListener(o,g,!1)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),n.event.global[o]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.hasData(a)&&L.get(a);if(r&&(i=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=i[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&q!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete i[o])}else for(o in i)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(i)&&(delete r.handle,L.remove(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,m,o,p=[d||l],q=j.call(b,"type")?b.type:b,r=j.call(b,"namespace")?b.namespace.split("."):[];if(g=h=d=d||l,3!==d.nodeType&&8!==d.nodeType&&!X.test(q+n.event.triggered)&&(q.indexOf(".")>=0&&(r=q.split("."),q=r.shift(),r.sort()),k=q.indexOf(":")<0&&"on"+q,b=b[n.expando]?b:new n.Event(q,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=r.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+r.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:n.makeArray(c,[b]),o=n.event.special[q]||{},e||!o.trigger||o.trigger.apply(d,c)!==!1)){if(!e&&!o.noBubble&&!n.isWindow(d)){for(i=o.delegateType||q,X.test(i+q)||(g=g.parentNode);g;g=g.parentNode)p.push(g),h=g;h===(d.ownerDocument||l)&&p.push(h.defaultView||h.parentWindow||a)}f=0;while((g=p[f++])&&!b.isPropagationStopped())b.type=f>1?i:o.bindType||q,m=(L.get(g,"events")||{})[b.type]&&L.get(g,"handle"),m&&m.apply(g,c),m=k&&g[k],m&&m.apply&&n.acceptData(g)&&(b.result=m.apply(g,c),b.result===!1&&b.preventDefault());return b.type=q,e||b.isDefaultPrevented()||o._default&&o._default.apply(p.pop(),c)!==!1||!n.acceptData(d)||k&&n.isFunction(d[q])&&!n.isWindow(d)&&(h=d[k],h&&(d[k]=null),n.event.triggered=q,d[q](),n.event.triggered=void 0,h&&(d[k]=h)),b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(L.get(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(g.namespace))&&(a.handleObj=g,a.data=g.data,e=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==e&&(a.result=e)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!==this;i=i.parentNode||this)if(i.disabled!==!0||"click"!==a.type){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)>=0:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h]*)\/>/gi,bb=/<([\w:]+)/,cb=/<|&#?\w+;/,db=/<(?:script|style|link)/i,eb=/checked\s*(?:[^=]|=\s*.checked.)/i,fb=/^$|\/(?:java|ecma)script/i,gb=/^true\/(.*)/,hb=/^\s*\s*$/g,ib={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};ib.optgroup=ib.option,ib.tbody=ib.tfoot=ib.colgroup=ib.caption=ib.thead,ib.th=ib.td;function jb(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function kb(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function lb(a){var b=gb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function mb(a,b){for(var c=0,d=a.length;d>c;c++)L.set(a[c],"globalEval",!b||L.get(b[c],"globalEval"))}function nb(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(L.hasData(a)&&(f=L.access(a),g=L.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;d>c;c++)n.event.add(b,e,j[e][c])}M.hasData(a)&&(h=M.access(a),i=n.extend({},h),M.set(b,i))}}function ob(a,b){var c=a.getElementsByTagName?a.getElementsByTagName(b||"*"):a.querySelectorAll?a.querySelectorAll(b||"*"):[];return void 0===b||b&&n.nodeName(a,b)?n.merge([a],c):c}function pb(a,b){var c=b.nodeName.toLowerCase();"input"===c&&T.test(a.type)?b.checked=a.checked:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}n.extend({clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=n.contains(a.ownerDocument,a);if(!(k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(g=ob(h),f=ob(a),d=0,e=f.length;e>d;d++)pb(f[d],g[d]);if(b)if(c)for(f=f||ob(a),g=g||ob(h),d=0,e=f.length;e>d;d++)nb(f[d],g[d]);else nb(a,h);return g=ob(h,"script"),g.length>0&&mb(g,!i&&ob(a,"script")),h},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k=b.createDocumentFragment(),l=[],m=0,o=a.length;o>m;m++)if(e=a[m],e||0===e)if("object"===n.type(e))n.merge(l,e.nodeType?[e]:e);else if(cb.test(e)){f=f||k.appendChild(b.createElement("div")),g=(bb.exec(e)||["",""])[1].toLowerCase(),h=ib[g]||ib._default,f.innerHTML=h[1]+e.replace(ab,"<$1>")+h[2],j=h[0];while(j--)f=f.lastChild;n.merge(l,f.childNodes),f=k.firstChild,f.textContent=""}else l.push(b.createTextNode(e));k.textContent="",m=0;while(e=l[m++])if((!d||-1===n.inArray(e,d))&&(i=n.contains(e.ownerDocument,e),f=ob(k.appendChild(e),"script"),i&&mb(f),c)){j=0;while(e=f[j++])fb.test(e.type||"")&&c.push(e)}return k},cleanData:function(a){for(var b,c,d,e,f=n.event.special,g=0;void 0!==(c=a[g]);g++){if(n.acceptData(c)&&(e=c[L.expando],e&&(b=L.cache[e]))){if(b.events)for(d in b.events)f[d]?n.event.remove(c,d):n.removeEvent(c,d,b.handle);L.cache[e]&&delete L.cache[e]}delete M.cache[c[M.expando]]}}}),n.fn.extend({text:function(a){return J(this,function(a){return void 0===a?n.text(this):this.empty().each(function(){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&(this.textContent=a)})},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=jb(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=jb(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?n.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||n.cleanData(ob(c)),c.parentNode&&(b&&n.contains(c.ownerDocument,c)&&mb(ob(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(n.cleanData(ob(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return J(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!db.test(a)&&!ib[(bb.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(ab,"<$1>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(ob(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,n.cleanData(ob(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,m=this,o=l-1,p=a[0],q=n.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&eb.test(p))return this.each(function(c){var d=m.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(c=n.buildFragment(a,this[0].ownerDocument,!1,this),d=c.firstChild,1===c.childNodes.length&&(c=d),d)){for(f=n.map(ob(c,"script"),kb),g=f.length;l>j;j++)h=c,j!==o&&(h=n.clone(h,!0,!0),g&&n.merge(f,ob(h,"script"))),b.call(this[j],h,j);if(g)for(i=f[f.length-1].ownerDocument,n.map(f,lb),j=0;g>j;j++)h=f[j],fb.test(h.type||"")&&!L.access(h,"globalEval")&&n.contains(i,h)&&(h.src?n._evalUrl&&n._evalUrl(h.src):n.globalEval(h.textContent.replace(hb,"")))}return this}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=[],e=n(a),g=e.length-1,h=0;g>=h;h++)c=h===g?this:this.clone(!0),n(e[h])[b](c),f.apply(d,c.get());return this.pushStack(d)}});var qb,rb={};function sb(b,c){var d,e=n(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:n.css(e[0],"display");return e.detach(),f}function tb(a){var b=l,c=rb[a];return c||(c=sb(a,b),"none"!==c&&c||(qb=(qb||n("