In [5]:
import torch
import torch.nn as nn
from collections import OrderedDict
import shutil
import time
import gzip
import os
import json
import numpy as np
from dpp_nets.utils.io import make_embd, make_tensor_dataset, load_tensor_dataset
from dpp_nets.utils.io import data_iterator, load_embd
from torch.autograd import Variable
from torch.utils.data.dataloader import DataLoader
import time
from dpp_nets.my_torch.utilities import pad_tensor
root = '/Users/Max/data/beer_reviews'
data_file = 'reviews.aspect3.train.txt.gz'
embd_file = 'review+wiki.filtered.200.txt.gz'
save_path = os.path.join(root,'pytorch/aspect3_train.pt')
data_path = os.path.join(root, data_file)
embd_path = os.path.join(root, embd_file)
def read_rationales(path):
"""
This reads the json.annotations file.
Creates a list of dictionaries, which holds the 994 reviews for which
sentence-level annotations are available.
"""
data = []
fopen = gzip.open if path.endswith(".gz") else open
with fopen(path) as fin:
for line in fin:
item = json.loads(line)
data.append(item)
return data
In [ ]:
from collections import defaultdict
import torch
import torch.nn as nn
from dpp_nets.my_torch.linalg import custom_decomp
from dpp_nets.my_torch.DPP import DPP
from dpp_nets.my_torch.DPP import AllInOne
from dpp_nets.my_torch.utilities import compute_baseline
class DPP_Classifier(nn.Module):
def __init__(self, dtype):
super(DPP_Classifier, self).__init__()
# Float vs Double
self.dtype = dtype
# Network parameters
self.kernel_in = kernel_in = 400
self.kernel_h = kernel_h = 1000
self.kernel_out = kernel_out = 400
self.pred_in = pred_in = 200 # kernel_in / 2
self.pred_h = pred_h = 500
self.pred_h2 = pred_h2 = 200
self.pred_out = pred_out = 3
# 2-Hidden-Layer Networks
self.kernel_net = torch.nn.Sequential(nn.Linear(kernel_in, kernel_h), nn.ELU(),
nn.Linear(kernel_h, kernel_h), nn.ELU(),
nn.Linear(kernel_h, kernel_out))
# 3-Hidden-Layer-Networks
self.pred_net = torch.nn.Sequential(nn.Linear(pred_in, pred_h), nn.ReLU(),
nn.Linear(pred_h, pred_h), nn.ReLU(),
nn.Linear(pred_h, pred_h2), nn.ReLU(),
nn.Linear(pred_h2, pred_out), nn.Sigmoid())
self.kernel_net.type(self.dtype)
self.pred_net.type(self.dtype)
# Sampling Parameter
self.alpha_iter = 5
# Convenience
self.kernels = []
self.subsets = None
self.picks = None
self.preds = None
self.saved_subsets = None
self.saved_losses = None # not really necesary
self.saved_baselines = None # not really necessary
def forward(self, reviews):
"""
reviews: batch_size x max_set_size x embd_dim = 200
Output: batch_size x pred_out (the prediction)
Challenges: Need to resize tensor appropriately and
measure length etc.
"""
batch_size, max_set_size, embd_dim = reviews.size()
alpha_iter = self.alpha_iter
self.saved_subsets = actions = [[] for i in range(batch_size)]
picks = [[] for i in range(batch_size)]
# Create context
lengths = reviews.sum(2).abs().sign().sum(1)
context = (reviews.sum(1) / lengths.expand_as(reviews.sum(1))).expand_as(reviews)
mask = reviews.sum(2).abs().sign().expand_as(reviews).byte()
# Mask out zero words
reviews = reviews.masked_select(mask).view(-1, embd_dim)
context = context.masked_select(mask).view(-1, embd_dim)
# Compute batched_kernel
kernel_input = torch.cat([reviews, context], dim=1)
kernel_output = self.kernel_net(kernel_input)
# Extract the kernel for each review from batched_kernel
s = list(lengths.squeeze().cumsum(0).long().data - lengths.squeeze().long().data)
e = list(lengths.squeeze().cumsum(0).long().data)
for i, (s, e) in enumerate(zip(s, e)):
review = reviews[s:e] # original review, without zero words
kernel = kernel_output[s:e] # corresponding kernel
self.kernels.append(kernel.data)
#vals, vecs = custom_decomp()(kernel)
for j in range(alpha_iter):
subset = AllInOne()(kernel)
#subset = DPP()(vals, vecs)
actions[i].append(subset)
pick = subset.diag().mm(review).sum(0)
picks[i].append(pick)
# Predictions
picks = torch.stack([torch.stack(pick) for pick in picks]).view(-1, embd_dim)
preds = self.pred_net(picks).view(batch_size, alpha_iter, -1)
return preds
def register_rewards(preds, targets, criterion, net):
#targets = targets.unsqueeze(1).unsqueeze(1).expand_as(preds)
targets = targets.unsqueeze(1).expand_as(preds)
loss = criterion(preds, targets)
actions = net.saved_subsets
losses = ((preds - targets)**2).mean(2)
losses = [[i.data[0] for i in row] for row in losses]
net.saved_losses = losses # not really necessary
baselines = [compute_baseline(i) for i in losses]
net.saved_baselines = baselines # not really necessary
for actions, rewards in zip(actions, baselines):
for action, reward in zip(actions, rewards):
action.reinforce(reward)
return loss
In [ ]:
# Useful Support
class AverageMeter(object):
"""Computes and stores the average and current value"""
def __init__(self):
self.reset()
def reset(self):
self.val = 0
self.avg = 0
self.sum = 0
self.count = 0
def update(self, val, n=1):
self.val = val
self.sum += val * n
self.count += n
self.avg = self.sum / self.count
def save_checkpoint(state, is_best, filename='checkpoint.pth.tar'):
"""
This is good!
"""
torch.save(state, filename)
if is_best:
shutil.copyfile(filename, 'model_best.pth.tar')
def adjust_learning_rate(optimizer, epoch):
"""Sets the learning rate to the initial LR decayed by 10 every 30 epochs"""
lr = optimizer.state_dict()['param_groups'][0]['lr']
lr = lr * (0.1 ** (epoch // 5))
for param_group in optimizer.param_groups:
param_group['lr'] = lr
In [ ]:
def train(train_loader, embd, model, criterion, optimizer, epoch, dtype):
batch_time = AverageMeter()
data_time = AverageMeter()
losses = AverageMeter()
subset_size = AverageMeter()
target_dim = 3
end = time.time()
for i, (review, target) in enumerate(train_loader):
# measure data loading time
data_time.update(time.time() - end)
targets = Variable(target[:,:target_dim].type(dtype))
reviews = embd(Variable(review)).type(dtype)
# compute output
model.alpha_iter = 2
pred = model(reviews)
loss = register_rewards(pred, targets, criterion, model)
##measure accuracy and record loss ????????????????????????
# prec1, prec5 = accuracy(output.data, target, topk=(1, 5))
losses.update(loss.data[0], reviews.size(0))
for l in model.saved_subsets:
for s in l:
subset_size.update(s.data.sum())
# top1.update(prec1[0], input.size(0))
# top5.update(prec5[0], input.size(0))
# compute gradient and do SGD step
optimizer.zero_grad()
loss.backward()
optimizer.step()
# measure elapsed time
batch_time.update(time.time() - end)
end = time.time()
#if i % args.print_freq == 0:
if i % print_freq == 0:
print('Epoch: [{0}][{1}/{2}]\t'
'Time {batch_time.val:.3f} ({batch_time.avg:.3f})\t'
'Data {data_time.val:.3f} ({data_time.avg:.3f})\t'
'SSize {subset_size.val:.2f} ({subset_size.avg: .2f})'
'Loss {loss.val:.4f} ({loss.avg:.4f})\t'.format(
epoch, i, len(train_loader), batch_time=batch_time,
data_time=data_time, subset_size = subset_size, loss=losses))
def validate(val_loader, model, criterion):
batch_time = AverageMeter()
losses = AverageMeter()
t_prec = AverageMeter()
t_recall = AverageMeter()
t_tp = AverageMeter()
t_fp = AverageMeter()
t_fn = AverageMeter()
target_dim = 3
# switch to evaluate mode
# model.eval()
end = time.time()
for i, (review, target) in enumerate(val_loader):
target = target.sum(1).sign().type(dtype).squeeze().byte()
# targets = target[:,:target_dim,:].type(dtype)
reviews = embd(Variable(review, volatile=True)).type(dtype)
# compute output
model.alpha_iter = 1
preds = model(reviews)
subset = model.saved_subsets[0][0]
subset = pad_tensor(subset.data,0,0,412).byte()
# target = targets
# targets = target[:,:target_dim,:].type(dtype)
reviews = embd(Variable(review, volatile=True)).type(dtype)
# compute output
model.alpha_iter = 1
preds = model(reviews)
subset = model.saved_subsets[0][0]
subset = pad_tensor(subset.data,0,0,412).byte()
# target = target[:,:target_dim,:].squeeze()
retriev = subset.sum()
relev = target.sum()
tp = target.masked_select(subset).sum()
fp = (1 - target.masked_select(subset)).sum()
fn = (1 - subset.masked_select(target)).sum()
t_tp.update(tp)
t_fp.update(fp)
t_fn.update(fn)
if retriev:
prec = tp / retriev
t_prec.update(prec)
if relev:
recall = tp / relev
t_recall.update(recall)
# measure accuracy and record loss
#prec1, prec5 = accuracy(output.data, target, topk=(1, 5))
#losses.update(loss.data[0], input.size(0))
#top1.update(prec1[0], input.size(0))
#top5.update(prec5[0], input.size(0))
# measure elapsed time
batch_time.update(time.time() - end)
end = time.time()
if i % 100 == 0:
print('Test: [{0}/{1}]\t'
'Time {batch_time.val:.3f} ({batch_time.avg:.3f})\t'
'Precision {t_prec.val:.4f} ({t_prec.avg:.4f})\t'
'Recall {t_recall.val:.4f} ({t_recall.avg:.4f})\t'.format(
i, len(val_loader), batch_time=batch_time, t_prec=t_prec, t_recall=t_recall))
return t_prec.avg
In [ ]:
### MAIN PROGRAMME
global best_prec1
best_prec1 = 0
# set parameters
lr = 1e-1
momentum = 0.9
weight_decay = 0.
start_epoch = 0
epochs = 1
batch_size = 20
print_freq = 10
data = '/Users/Max/data/beer_reviews/pytorch'
dtype = torch.DoubleTensor
# create model
embd = load_embd('/Users/Max/data/beer_reviews/pytorch/embeddings.pt')
model = DPP_Classifier(torch.DoubleTensor)
# define loss function (criterion) and optimizer
criterion = nn.L1Loss()
optimizer = torch.optim.SGD(model.parameters(), lr,
momentum=momentum,
weight_decay=weight_decay)
# Data loading code
trainpath = os.path.join(data, 'aspect1_train.pt')
valpath = os.path.join(data, 'aspect1_heldout.pt')
ratpath = os.path.join(data, 'annotated.pt')
train_set = torch.load(trainpath)
val_set = torch.load(valpath)
rat_set = torch.load(ratpath)
rat_train_set = torch.load(os.path.join(data, 'annotated_common.pt'))
#train_loader = DataLoader(train_set, batch_size, shuffle=True)
#val_loader = DataLoader(val_set)
rat_train_loader = DataLoader(rat_train_set, batch_size, shuffle=True)
rat_loader = DataLoader(rat_set)
In [ ]:
epochs = 20
criterion = nn.L1Loss()
for epoch in range(start_epoch, epochs):
adjust_learning_rate(optimizer, epoch)
# train for one epoch
train(rat_train_loader, embd, model, criterion, optimizer, epoch, dtype)
# evaluate on validation set
prec1 = validate(rat_loader, model, criterion)
# remember best prec@1 and save checkpoint
is_best = prec1 > best_prec1
best_prec1 = max(prec1, best_prec1)
save_checkpoint({
'epoch': epoch + 1,
'state_dict': model.state_dict(),
'best_prec1': best_prec1,
'optimizer' : optimizer.state_dict(),
}, is_best)
In [ ]:
import random
#word_to_ix = make_embd(embd_path, only_index_dict=True)
#ix_to_word = {ix: word for word, ix in word_to_ix.items()}
rat_set, ix_to_word
def sample_words(rat_set, model, ix_to_word):
# Sample a review
ix = random.randint(0,len(rat_set))
# Make a prediction
x = rat_set.data_tensor[ix].unsqueeze(0)
review = embd(Variable(x, volatile=True)).type(dtype)
model.alpha_iter = 1
model(review)
# What words were selected
subset = model.saved_subsets[0][0]
subset = pad_tensor(subset.data,0,0,412).byte()
# Convert to words
all_words = [ix_to_word[ix -1] for ix in x.squeeze() if ix > 0]
filtered_words = [ix_to_word[ix -1] for ix in x.masked_select(subset)]
print(" ".join(all_words) )
print("DPP Selection: ", filtered_words)
ix = random.randint(0,len(rat_set))
rat_set.data_tensor[ix].unsqueeze(0)
In [ ]:
def sample_prediction(rat_set, model):
# Sample a review
ix = random.randint(0,len(rat_train_set))
# Make a prediction
x = rat_train_set.data_tensor[ix].unsqueeze(0)
target = rat_train_set.target_tensor[ix][:3]
review = embd(Variable(x, volatile=True)).type(dtype)
model.alpha_iter = 1
pred = model(review).data.squeeze()
print(pred, target)
return pred, target
In [ ]:
pred, target = sample_prediction(rat_set, model)
In [ ]:
criterion(Variable(pred), Variable(target))
In [ ]:
torch.save(model.pred_net.state_dict(), 'pred_dict25.pt')
In [ ]:
import torch
e = 0
for i in range(100):
v = torch.normal(torch.FloatTensor([1,2,3,4,5]))
e += v
e / 100
In [ ]:
non_lin = torch.sin
torch.sin(v)
In [ ]:
non_lin(v)
In [ ]:
non_lin
In [ ]:
batch_size = 2
set_size = 3
embd_dim = 4
words = torch.randn(batch_size, set_size, embd_dim)
In [ ]:
v = torch.normal(torch.FloatTensor([1,2,3,4,5])torch.cos(torch.sin(words).mean(1)).squeeze()
In [ ]:
v = torch.normal(torch.FloatTensor([1,2,3,4,5]))
torch.log(v)
In [ ]:
import numpy as np
batch_size = 100
n_clusters = 10
set_size = 40
embd_dim = pred_in = 50
dtype = dtype = torch.DoubleTensor
np.random.seed(0)
means = dtype(np.random.randint(-50,50,[n_clusters, int(pred_in)]).astype("float"))
def generate(batch_size):
"""sdf"
Arguments:
means: Probs best to make this an attribute of the class,
so that repeated training works with the same data distribution.
"""
# Generate index
index = torch.cat([torch.arange(0, float(n_clusters)).expand(batch_size, n_clusters).long(),
torch.multinomial(torch.ones(batch_size, n_clusters), set_size - n_clusters, replacement=True)]
,dim=1)
index = index.t()[torch.randperm(set_size)].t().contiguous()
# Generate words, context, target
words = dtype(torch.normal(means.index_select(0,index.view(index.numel()))).view(batch_size, set_size, embd_dim))
context = dtype(words.sum(1).expand_as(words))
target = torch.sin(torch.pow(words.abs(),2).mean(1)).squeeze()
return words, context, target
In [ ]:
words, context, target = generate(5)
print(target)
In [ ]:
(torch.std(target, dim=0) / torch.mean(target, dim=0)).mean()
In [ ]:
target
In [ ]:
v1 = torch.randn(2,2)
v2 = torch.randn(2,2)
v3 = torch.randn(2,2)
v4 = torch.randn(2,2)
v5 = torch.randn(2,2)
v6 = torch.randn(2,2)
In [ ]:
import torch.nn as nn
nn.MSELoss()
In [ ]:
In [ ]:
from dpp_nets.my_torch.simulator import SimKDPPDeepSet
import torch
network_params = {'set_size': 40, 'n_clusters': 10}
dtype = torch.DoubleTensor
sim = SimKDPPDeepSet(network_params, dtype)
In [ ]:
In [ ]:
In [ ]:
mod = torch.nn.Sequential(nn.Linear(10,20), nn.ReLU(), nn.Linear(20,10))
In [ ]:
for mod in mod.modules():
print(mod)
In [ ]:
A = Variable(torch.randn(10,20))
In [ ]:
mod(A)
In [ ]:
batch_size = 3
set_size = 4
embd_dim = 5
words = Variable(torch.randn(batch_size, set_size, embd_dim))
print(words)
subset = Variable(torch.ByteTensor([1,0,0,1]),requires_grad=True)
words[1].masked_select(Variable(subset.data.expand_as(words[1].t())).t()).view(-1,embd_dim)
In [ ]:
In [11]:
data_path
Out[11]:
'/Users/Max/data/beer_reviews/reviews.aspect3.train.txt.gz'
In [10]:
word_to_ix = make_embd(embd_path, only_index_dict=True)
In [74]:
old_dataset = make_tensor_dataset(data_path, word_to_ix)
In [76]:
old_dataset.data_tensor_tensor
Out[76]:
3.0000e+00 5.4000e+01 5.7364e+04 ... 0.0000e+00 0.0000e+00 0.0000e+00
3.0000e+00 2.7000e+01 4.3000e+01 ... 0.0000e+00 0.0000e+00 0.0000e+00
2.3000e+01 5.4800e+02 1.0875e+05 ... 0.0000e+00 0.0000e+00 0.0000e+00
... ⋱ ...
1.3660e+03 2.2170e+03 2.4590e+03 ... 0.0000e+00 0.0000e+00 0.0000e+00
1.6400e+02 1.6300e+02 7.3000e+01 ... 0.0000e+00 0.0000e+00 0.0000e+00
8.0000e+00 5.6900e+02 1.6600e+02 ... 0.0000e+00 0.0000e+00 0.0000e+00
[torch.LongTensor of size 70000x1012]
In [107]:
ix = 1324
print(torch.cat([old_dataset.data_tensor[ix, 200:220].unsqueeze(1), dataset.data_tensor[ix, 200:220].unsqueeze(1)],dim=1))
225 109
13 98
56 225
67 13
33 56
15 67
499 33
2 15
0 499
0 2
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
[torch.LongTensor of size 20x2]
In [105]:
# this is bad as maximum set_size might increase#
from torch.utils.data import TensorDataset
import re
reviews = []
targets = []
max_set_size = 0
for i, (review, target) in enumerate(data_iterator(data_path)):
review_ix = []
for word in review:
if word in word_to_ix:
ix = word_to_ix[word] + 1
review_ix.append(ix)
else:
candidates = re.split('[;|,-/."]',word)
for word in candidates:
if word in word_to_ix:
print(i)
ix = word_to_ix[word] + 1
review_ix.append(ix)
max_set_size = max(max_set_size, len(review_ix))
reviews.append(review_ix)
targets.append(target)
reviews_tensor = []
for review in reviews:
review = torch.LongTensor(review)
review = pad_tensor(review, 0, 0, max_set_size)
reviews_tensor.append(review)
reviews = torch.stack(reviews_tensor)
targets = torch.stack(targets)
dataset = TensorDataset(reviews, targets)
13
13
30
37
37
41
43
46
46
54
54
54
54
55
55
60
60
68
68
69
83
83
85
85
94
94
94
107
107
110
110
112
112
112
115
115
123
123
123
127
127
129
129
136
136
149
149
154
154
154
154
154
154
154
154
158
158
172
172
175
175
175
178
178
186
186
186
197
197
208
208
224
224
235
236
236
236
236
236
245
245
246
246
246
246
246
247
247
247
247
247
262
262
267
267
274
274
275
275
292
292
294
294
294
294
308
308
310
310
313
313
313
313
313
322
322
324
324
336
336
336
341
360
360
362
364
364
371
371
371
371
371
372
372
374
374
375
375
381
381
382
382
386
386
386
386
401
401
406
406
407
407
407
407
413
413
413
413
413
413
413
416
416
416
422
424
424
424
425
425
447
453
454
454
455
455
461
461
465
465
467
467
467
467
467
482
482
485
485
489
489
492
492
495
495
499
499
507
507
510
510
510
515
515
518
518
518
519
519
519
519
519
519
533
533
533
533
533
538
538
541
541
541
542
542
551
551
551
551
556
556
556
556
556
556
556
558
558
558
559
559
559
563
563
570
570
570
570
577
577
580
580
580
580
580
580
580
580
580
580
580
586
586
586
586
586
588
588
588
593
593
593
597
597
604
604
604
604
604
604
604
604
604
604
604
604
606
606
610
610
614
619
619
619
619
627
627
635
635
635
643
643
644
644
657
657
657
660
660
669
669
673
673
676
676
683
688
688
688
688
688
688
692
692
692
692
698
698
704
704
705
705
706
706
706
711
711
712
712
712
712
712
722
722
725
725
727
727
727
727
735
735
735
735
735
735
735
740
740
749
756
756
757
757
757
757
757
757
759
759
759
759
761
761
761
762
768
768
768
769
769
769
771
771
780
780
780
780
780
780
780
780
780
784
784
790
790
790
790
790
803
803
809
809
813
813
819
823
825
825
825
825
825
825
825
825
825
826
826
828
828
834
834
834
834
834
834
834
839
845
845
857
857
858
858
858
858
858
858
864
866
866
870
870
870
875
875
875
875
875
875
875
875
881
881
888
888
889
889
899
899
911
911
914
914
914
914
919
919
920
923
923
935
935
935
935
935
935
938
940
940
941
941
944
944
944
944
947
947
954
954
962
962
966
966
966
966
966
967
974
974
979
979
980
1004
1004
1008
1011
1011
1012
1012
1012
1012
1012
1012
1012
1012
1022
1022
1025
1025
1041
1041
1046
1046
1048
1048
1050
1050
1055
1055
1060
1060
1075
1075
1078
1087
1087
1087
1093
1093
1097
1097
1097
1097
1097
1097
1097
1097
1100
1100
1104
1104
1104
1104
1106
1106
1115
1119
1119
1125
1125
1126
1126
1130
1130
1147
1147
1148
1148
1148
1158
1158
1158
1158
1158
1169
1169
1175
1175
1177
1177
1178
1178
1185
1185
1186
1186
1190
1190
1190
1190
1190
1190
1190
1190
1190
1190
1196
1196
1198
1198
1198
1198
1198
1198
1199
1199
1199
1199
1205
1205
1205
1205
1205
1225
1225
1225
1225
1225
1229
1255
1255
1260
1260
1260
1263
1263
1263
1268
1268
1272
1272
1272
1272
1275
1275
1279
1279
1279
1280
1280
1280
1286
1286
1286
1286
1287
1291
1291
1291
1291
1291
1291
1291
1291
1291
1309
1309
1310
1310
1310
1319
1319
1324
1324
1325
1331
1331
1339
1339
1339
1341
1341
1347
1347
1351
1351
1354
1354
1366
1373
1373
1373
1389
1389
1393
1393
1395
1395
1395
1399
1400
1400
1400
1400
1414
1414
1414
1414
1416
1416
1417
1417
1418
1424
1426
1426
1437
1437
1437
1437
1437
1437
1437
1437
1437
1437
1437
1437
1437
1442
1442
1442
1444
1444
1446
1446
1446
1446
1446
1446
1446
1446
1446
1446
1446
1446
1446
1446
1451
1451
1455
1455
1455
1463
1463
1465
1465
1473
1473
1476
1476
1478
1478
1490
1490
1492
1492
1492
1505
1505
1531
1531
1533
1533
1533
1534
1534
1534
1538
1538
1539
1539
1546
1546
1546
1552
1552
1558
1558
1560
1560
1561
1561
1561
1563
1563
1564
1564
1564
1567
1567
1567
1574
1574
1574
1590
1590
1593
1593
1604
1604
1605
1613
1613
1613
1618
1618
1618
1632
1632
1632
1633
1633
1642
1642
1642
1642
1642
1642
1646
1646
1647
1648
1648
1648
1654
1654
1655
1655
1657
1657
1662
1662
1663
1663
1664
1664
1666
1666
1666
1667
1667
1682
1682
1682
1686
1686
1692
1692
1695
1695
1695
1695
1706
1706
1706
1706
1708
1708
1708
1708
1710
1710
1710
1710
1710
1713
1713
1713
1713
1713
1713
1713
1713
1715
1715
1721
1721
1721
1727
1727
1747
1747
1765
1765
1768
1768
1774
1774
1774
1774
1774
1774
1791
1791
1796
1796
1796
1796
1796
1806
1806
1808
1808
1808
1808
1808
1808
1821
1821
1821
1821
1821
1821
1821
1821
1828
1828
1837
1837
1838
1842
1842
1846
1846
1858
1858
1858
1858
1858
1858
1858
1858
1858
1858
1874
1874
1881
1881
1890
1890
1897
1897
1897
1910
1910
1931
1931
1933
1933
1933
1933
1933
1934
1934
1935
1935
1935
1935
1935
1936
1936
1936
1936
1958
1958
1979
1979
1987
1987
1990
1990
1990
1992
1992
1994
1994
1995
1997
1997
1997
2001
2001
2002
2002
2002
2002
2002
2002
2006
2006
2006
2013
2013
2015
2021
2021
2025
2025
2025
2025
2026
2026
2040
2040
2040
2040
2040
2040
2040
2040
2048
2048
2052
2052
2054
2054
2054
2055
2055
2066
2066
2066
2066
2066
2081
2081
2081
2087
2100
2100
2105
2105
2113
2113
2116
2116
2123
2123
2123
2130
2130
2130
2130
2134
2134
2134
2134
2134
2134
2134
2139
2139
2140
2140
2142
2142
2142
2145
2145
2150
2150
2152
2152
2158
2158
2158
2158
2160
2160
2161
2163
2163
2163
2163
2164
2164
2172
2172
2172
2172
2172
2172
2172
2172
2178
2178
2178
2181
2181
2182
2182
2182
2182
2186
2186
2186
2188
2188
2196
2196
2196
2196
2199
2199
2202
2202
2203
2203
2210
2210
2214
2214
2214
2214
2221
2221
2226
2228
2228
2228
2236
2236
2236
2236
2236
2239
2239
2244
2244
2250
2250
2252
2252
2269
2269
2269
2271
2271
2275
2275
2275
2275
2275
2275
2275
2275
2275
2275
2279
2279
2279
2288
2288
2288
2295
2295
2295
2295
2296
2303
2303
2312
2312
2312
2314
2314
2319
2319
2323
2323
2323
2331
2331
2333
2333
2333
2349
2349
2362
2362
2368
2368
2368
2368
2371
2372
2372
2391
2391
2391
2391
2391
2391
2391
2391
2407
2407
2410
2410
2410
2411
2424
2424
2428
2428
2429
2429
2443
2443
2448
2448
2449
2449
2451
2451
2456
2456
2456
2456
2456
2456
2456
2456
2456
2472
2472
2476
2476
2476
2476
2489
2489
2490
2490
2494
2494
2499
2499
2500
2500
2508
2508
2511
2524
2524
2529
2529
2531
2531
2533
2533
2535
2535
2535
2535
2537
2537
2538
2538
2538
2548
2548
2548
2548
2551
2551
2557
2557
2568
2568
2568
2568
2571
2572
2572
2575
2575
2575
2575
2575
2575
2575
2576
2582
2582
2582
2582
2585
2585
2585
2585
2606
2606
2616
2616
2616
2617
2617
2621
2621
2621
2632
2632
2632
2633
2633
2633
2633
2642
2642
2642
2645
2645
2649
2649
2649
2649
2651
2651
2651
2651
2652
2652
2666
2666
2666
2669
2669
2671
2671
2671
2672
2672
2674
2674
2677
2677
2677
2677
2686
2686
2695
2695
2700
2700
2711
2711
2711
2711
2718
2718
2718
2718
2718
2718
2718
2718
2718
2718
2718
2718
2718
2726
2726
2729
2729
2729
2729
2746
2746
2747
2755
2755
2762
2762
2762
2762
2762
2763
2763
2763
2763
2763
2763
2763
2766
2766
2766
2766
2771
2771
2775
2775
2775
2775
2775
2775
2775
2775
2775
2776
2776
2776
2776
2776
2776
2778
2780
2792
2792
2798
2798
2799
2813
2813
2813
2813
2819
2819
2819
2839
2852
2852
2852
2863
2863
2863
2868
2868
2872
2872
2873
2873
2873
2873
2873
2873
2873
2873
2879
2879
2884
2894
2894
2896
2899
2899
2907
2907
2911
2911
2915
2915
2916
2916
2918
2918
2924
2924
2927
2927
2929
2929
2934
2938
2938
2940
2940
2943
2943
2943
2953
2953
2965
2965
2965
2965
2966
2966
2978
2978
2978
2978
2983
2983
2983
2983
2983
2993
2993
2999
2999
2999
2999
2999
2999
2999
2999
3001
3001
3002
3002
3002
3002
3003
3003
3009
3009
3009
3009
3016
3016
3029
3032
3042
3042
3045
3045
3046
3046
3046
3046
3049
3056
3056
3056
3056
3056
3056
3058
3058
3062
3062
3062
3062
3063
3063
3063
3065
3065
3066
3066
3066
3066
3072
3072
3072
3072
3077
3077
3093
3093
3098
3098
3101
3101
3101
3102
3102
3102
3103
3103
3103
3103
3106
3106
3106
3106
3106
3106
3106
3106
3106
3107
3107
3128
3138
3138
3138
3159
3159
3162
3162
3165
3165
3166
3166
3166
3166
3172
3172
3172
3172
3176
3176
3181
3181
3181
3181
3184
3184
3195
3195
3198
3198
3207
3207
3209
3209
3209
3209
3209
3211
3211
3211
3211
3224
3224
3224
3227
3227
3235
3235
3243
3243
3243
3245
3245
3251
3251
3251
3251
3251
3255
3255
3263
3263
3264
3264
3265
3265
3283
3283
3290
3290
3299
3299
3299
3299
3307
3307
3307
3307
3309
3309
3310
3310
3310
3310
3318
3318
3318
3334
3334
3334
3334
3334
3358
3358
3360
3360
3360
3360
3371
3372
3372
3376
3376
3379
3379
3380
3380
3380
3380
3382
3382
3386
3386
3391
3391
3391
3396
3396
3396
3401
3401
3401
3401
3403
3403
3403
3422
3422
3428
3428
3446
3446
3446
3447
3447
3447
3447
3447
3447
3449
3449
3449
3449
3453
3453
3460
3460
3462
3462
3464
3464
3464
3471
3471
3475
3475
3478
3478
3478
3478
3487
3487
3500
3500
3500
3501
3501
3507
3507
3511
3511
3516
3516
3534
3534
3541
3541
3541
3548
3548
3548
3559
3559
3559
3560
3560
3561
3561
3561
3567
3567
3567
3567
3568
3568
3573
3573
3573
3573
3580
3580
3581
3586
3586
3586
3586
3592
3592
3592
3592
3592
3592
3595
3595
3599
3599
3599
3599
3600
3600
3606
3609
3613
3613
3613
3618
3618
3618
3620
3620
3620
3620
3625
3625
3627
3627
3632
3632
3632
3643
3643
3643
3648
3648
3653
3653
3653
3653
3658
3658
3661
3661
3674
3674
3674
3674
3677
3677
3695
3718
3718
3724
3724
3730
3730
3737
3737
3740
3740
3751
3751
3751
3751
3753
3753
3753
3753
3756
3756
3756
3756
3756
3757
3757
3757
3757
3759
3759
3760
3760
3763
3763
3765
3765
3765
3765
3779
3779
3786
3786
3789
3789
3789
3797
3797
3797
3806
3806
3806
3806
3815
3822
3822
3822
3823
3823
3828
3828
3832
3832
3835
3835
3843
3843
3850
3850
3850
3851
3851
3851
3851
3851
3851
3851
3851
3851
3856
3856
3857
3857
3861
3861
3862
3862
3867
3867
3885
3885
3895
3895
3898
3898
3898
3900
3900
3901
3901
3904
3904
3905
3905
3906
3906
3908
3908
3910
3910
3912
3912
3912
3912
3920
3920
3921
3921
3923
3923
3927
3927
3932
3938
3944
3944
3945
3945
3945
3945
3945
3960
3960
3960
3960
3960
3962
3962
3964
3964
3964
3964
3975
3975
3975
3975
3979
3979
3979
3979
3982
3982
3982
3982
3984
3984
3984
3984
3984
3987
3987
3994
3994
3994
4002
4002
4036
4036
4036
4036
4036
4036
4042
4042
4042
4047
4047
4047
4055
4056
4056
4056
4056
4056
4060
4060
4061
4061
4061
4061
4066
4066
4066
4087
4087
4087
4087
4087
4087
4087
4087
4087
4087
4087
4087
4087
4087
4087
4087
4087
4087
4087
4087
4089
4089
4095
4095
4095
4097
4097
4100
4100
4105
4105
4105
4105
4105
4105
4105
4105
4105
4106
4106
4111
4111
4111
4111
4111
4111
4115
4115
4120
4120
4123
4123
4123
4128
4131
4131
4132
4132
4133
4133
4135
4135
4135
4135
4135
4147
4147
4161
4161
4161
4162
4162
4171
4171
4171
4171
4171
4171
4175
4177
4177
4177
4177
4177
4177
4180
4180
4180
4180
4195
4195
4204
4204
4210
4210
4210
4224
4224
4224
4224
4224
4224
4224
4224
4224
4224
4236
4236
4240
4240
4243
4243
4246
4246
4246
4246
4246
4251
4251
4251
4251
4251
4251
4252
4252
4256
4256
4259
4259
4259
4259
4262
4262
4262
4262
4262
4263
4263
4263
4268
4268
4268
4268
4282
4282
4282
4282
4282
4286
4286
4288
4288
4298
4298
4301
4301
4303
4309
4309
4309
4309
4309
4312
4312
4320
4320
4320
4340
4355
4355
4355
4355
4357
4357
4361
4361
4361
4361
4362
4362
4365
4365
4370
4370
4370
4374
4374
4374
4378
4378
4381
4381
4384
4384
4384
4386
4386
4387
4387
4391
4391
4393
4393
4393
4401
4401
4402
4402
4402
4412
4419
4419
4438
4438
4438
4440
4440
4447
4447
4448
4448
4450
4455
4455
4455
4455
4455
4455
4458
4458
4466
4466
4466
4466
4467
4467
4467
4469
4469
4476
4476
4476
4483
4485
4485
4485
4491
4491
4497
4497
4497
4501
4501
4517
4520
4520
4520
4536
4536
4541
4541
4541
4543
4555
4555
4557
4557
4557
4570
4570
4580
4580
4580
4580
4580
4590
4590
4591
4591
4593
4593
4593
4595
4595
4595
4595
4600
4600
4608
4614
4614
4614
4614
4621
4621
4621
4621
4621
4630
4631
4631
4631
4642
4642
4648
4648
4648
4648
4648
4648
4648
4648
4648
4651
4653
4653
4654
4654
4656
4656
4658
4658
4658
4658
4675
4675
4675
4675
4676
4676
4676
4676
4682
4682
4687
4687
4690
4690
4690
4690
4706
4706
4706
4710
4711
4711
4711
4717
4717
4717
4717
4720
4720
4720
4720
4720
4720
4720
4721
4721
4731
4731
4733
4733
4747
4747
4751
4751
4751
4751
4754
4754
4755
4755
4756
4756
4757
4757
4757
4757
4766
4766
4777
4777
4777
4777
4777
4780
4782
4782
4797
4797
4799
4799
4799
4799
4799
4806
4806
4808
4808
4827
4827
4827
4827
4828
4836
4836
4836
4836
4836
4836
4836
4837
4837
4840
4840
4840
4840
4840
4848
4848
4851
4851
4851
4851
4851
4851
4858
4858
4858
4858
4860
4860
4860
4862
4862
4862
4869
4869
4869
4869
4869
4869
4872
4872
4872
4884
4884
4887
4887
4889
4889
4889
4889
4892
4892
4892
4896
4896
4896
4897
4897
4897
4897
4899
4899
4905
4905
4905
4905
4905
4905
4916
4916
4916
4916
4916
4916
4916
4916
4916
4916
4918
4918
4922
4922
4923
4923
4930
4930
4930
4930
4933
4933
4934
4934
4936
4937
4937
4938
4938
4948
4948
4953
4953
4954
4954
4956
4956
4956
4956
4956
4956
4963
4963
4963
4963
4967
4967
4976
4976
4980
4980
4980
4980
4980
4980
4980
4980
4980
4980
4980
4980
4980
4980
4983
4983
4991
4991
4993
4993
4997
4997
4997
4997
4997
5001
5001
5004
5014
5014
5014
5033
5033
5033
5040
5040
5042
5042
5043
5043
5045
5045
5045
5057
5057
5057
5057
5075
5075
5081
5081
5086
5086
5086
5086
5090
5090
5090
5090
5090
5090
5090
5090
5095
5095
5103
5111
5111
5111
5111
5111
5111
5111
5114
5117
5117
5119
5119
5119
5139
5139
5142
5142
5142
5142
5142
5142
5148
5148
5154
5154
5158
5158
5158
5158
5160
5160
5161
5161
5172
5172
5172
5172
5176
5179
5179
5182
5182
5192
5192
5192
5192
5199
5199
5199
5200
5200
5201
5201
5201
5201
5201
5201
5203
5203
5203
5203
5203
5203
5208
5208
5209
5209
5209
5209
5212
5212
5217
5217
5226
5226
5226
5230
5230
5230
5230
5237
5237
5245
5245
5250
5251
5251
5251
5255
5255
5262
5263
5263
5266
5266
5266
5266
5266
5266
5270
5273
5273
5275
5277
5277
5277
5277
5277
5277
5277
5279
5279
5286
5286
5289
5289
5292
5292
5296
5296
5309
5309
5309
5313
5313
5329
5329
5334
5334
5334
5334
5334
5334
5334
5334
5334
5334
5334
5334
5334
5334
5334
5334
5334
5334
5344
5344
5361
5361
5361
5366
5366
5366
5366
5366
5366
5366
5366
5369
5369
5370
5370
5372
5372
5372
5380
5380
5380
5380
5384
5384
5387
5402
5402
5409
5409
5435
5435
5441
5441
5441
5446
5446
5447
5447
5447
5447
5447
5447
5448
5448
5448
5448
5448
5448
5448
5448
5453
5453
5453
5453
5456
5456
5456
5461
5461
5461
5461
5461
5461
5476
5476
5476
5479
5479
5479
5482
5486
5486
5489
5489
5495
5495
5495
5519
5519
5530
5530
5530
5530
5530
5530
5530
5530
5530
5530
5561
5561
5565
5565
5566
5566
5573
5573
5580
5580
5580
5580
5580
5580
5580
5582
5582
5583
5583
5588
5588
5588
5588
5588
5588
5588
5588
5588
5596
5596
5608
5608
5608
5615
5615
5616
5619
5619
5619
5621
5621
5621
5624
5624
5624
5624
5624
5625
5625
5641
5641
5641
5641
5641
5657
5657
5665
5665
5665
5665
5665
5665
5665
5665
5676
5676
5676
5676
5691
5691
5692
5692
5696
5696
5697
5697
5699
5699
5699
5703
5703
5703
5703
5703
5703
5725
5725
5731
5731
5731
5733
5733
5735
5735
5740
5740
5740
5740
5749
5749
5761
5761
5770
5770
5772
5772
5776
5776
5776
5782
5782
5782
5782
5782
5782
5782
5783
5783
5798
5798
5799
5799
5801
5802
5802
5802
5802
5817
5817
5817
5817
5817
5817
5817
5817
5817
5817
5817
5817
5823
5826
5826
5836
5836
5836
5836
5836
5840
5840
5840
5840
5843
5843
5846
5846
5846
5846
5853
5855
5855
5855
5855
5861
5861
5861
5862
5862
5864
5864
5870
5870
5870
5870
5870
5871
5886
5886
5890
5890
5900
5904
5904
5907
5907
5907
5907
5907
5907
5907
5915
5915
5915
5927
5927
5929
5929
5929
5929
5929
5929
5939
5939
5940
5940
5940
5940
5948
5948
5948
5948
5948
5948
5949
5949
5952
5952
5952
5952
5952
5952
5958
5958
5966
5966
5966
5966
5968
5968
5974
5974
5980
5980
5997
6002
6002
6003
6003
6003
6003
6003
6006
6006
6010
6010
6028
6028
6028
6028
6028
6040
6040
6045
6045
6048
6048
6048
6048
6048
6051
6051
6054
6054
6057
6057
6057
6057
6058
6058
6073
6073
6073
6073
6073
6073
6073
6086
6086
6086
6086
6088
6088
6088
6090
6090
6090
6098
6099
6099
6099
6101
6101
6105
6105
6109
6109
6123
6123
6125
6125
6125
6125
6125
6125
6125
6125
6125
6125
6125
6125
6125
6125
6132
6132
6133
6133
6143
6143
6143
6143
6143
6148
6148
6148
6154
6154
6154
6154
6160
6160
6161
6161
6161
6163
6163
6163
6164
6164
6164
6169
6169
6171
6179
6179
6179
6179
6181
6181
6182
6182
6182
6182
6195
6195
6200
6200
6200
6200
6200
6203
6203
6207
6218
6218
6224
6224
6226
6226
6226
6226
6228
6228
6228
6233
6233
6233
6239
6239
6241
6241
6241
6241
6241
6241
6241
6241
6242
6242
6242
6245
6245
6246
6246
6246
6247
6254
6254
6255
6255
6255
6257
6257
6257
6262
6262
6264
6264
6264
6264
6264
6269
6270
6270
6271
6271
6273
6273
6273
6281
6281
6281
6281
6281
6281
6290
6290
6290
6290
6292
6292
6296
6298
6298
6298
6298
6303
6303
6303
6303
6305
6305
6318
6318
6318
6323
6323
6323
6331
6331
6331
6331
6341
6341
6346
6346
6346
6346
6356
6356
6360
6371
6371
6375
6375
6378
6378
6378
6382
6382
6385
6385
6385
6385
6399
6399
6399
6400
6400
6402
6402
6403
6403
6403
6407
6407
6407
6423
6423
6423
6423
6423
6425
6429
6429
6429
6429
6437
6437
6437
6437
6437
6437
6437
6439
6439
6441
6441
6445
6445
6450
6450
6455
6455
6457
6457
6457
6457
6464
6464
6464
6466
6466
6475
6475
6482
6482
6487
6487
6487
6487
6487
6487
6487
6487
6487
6490
6490
6513
6513
6519
6519
6519
6519
6519
6519
6519
6519
6519
6519
6522
6522
6522
6526
6526
6526
6526
6537
6537
6538
6538
6544
6544
6544
6545
6545
6547
6547
6547
6550
6550
6550
6550
6550
6550
6550
6550
6550
6550
6558
6558
6558
6561
6561
6564
6586
6586
6587
6588
6588
6588
6588
6588
6588
6591
6591
6594
6594
6600
6600
6601
6601
6606
6606
6606
6620
6623
6623
6650
6650
6652
6652
6652
6652
6658
6658
6666
6666
6684
6684
6685
6685
6686
6691
6691
6691
6692
6692
6694
6702
6702
6702
6702
6702
6702
6710
6710
6719
6719
6728
6728
6728
6728
6728
6729
6729
6730
6730
6739
6739
6742
6742
6742
6758
6758
6764
6764
6764
6770
6773
6773
6773
6780
6780
6783
6784
6784
6784
6784
6784
6784
6786
6786
6794
6794
6807
6807
6811
6811
6813
6813
6825
6825
6831
6831
6831
6831
6831
6831
6831
6831
6842
6842
6848
6848
6848
6848
6849
6849
6854
6854
6857
6871
6871
6871
6885
6885
6893
6894
6894
6901
6901
6901
6918
6922
6922
6922
6922
6924
6924
6929
6940
6940
6950
6950
6950
6950
6974
6974
6974
6974
6974
6974
6974
6977
6977
6979
6979
6991
6991
6993
6993
6993
6994
6994
6994
6994
6994
6994
6994
6994
7001
7001
7001
7001
7001
7001
7008
7011
7011
7017
7017
7017
7018
7018
7018
7018
7018
7018
7021
7021
7047
7047
7063
7063
7063
7069
7069
7072
7072
7073
7080
7080
7083
7083
7094
7094
7102
7102
7109
7109
7117
7117
7122
7122
7122
7122
7122
7122
7122
7140
7140
7142
7142
7144
7144
7152
7152
7152
7154
7154
7154
7154
7154
7154
7165
7165
7168
7168
7172
7172
7172
7172
7172
7172
7172
7173
7173
7176
7176
7176
7176
7177
7177
7177
7177
7177
7177
7177
7189
7189
7189
7191
7191
7199
7199
7201
7201
7202
7202
7205
7205
7205
7205
7205
7206
7206
7207
7207
7210
7210
7220
7220
7222
7222
7231
7231
7231
7232
7232
7244
7244
7254
7254
7256
7256
7256
7262
7262
7262
7262
7263
7263
7263
7264
7264
7264
7269
7269
7282
7282
7282
7282
7282
7282
7282
7282
7282
7282
7282
7282
7282
7282
7282
7286
7286
7296
7296
7296
7301
7301
7301
7301
7301
7301
7301
7301
7301
7301
7302
7302
7304
7304
7304
7314
7314
7321
7321
7322
7322
7323
7323
7326
7326
7355
7355
7356
7360
7360
7365
7365
7365
7365
7369
7369
7377
7377
7379
7379
7379
7383
7383
7383
7383
7383
7383
7383
7393
7393
7395
7395
7398
7399
7399
7399
7399
7399
7399
7400
7400
7409
7409
7417
7417
7418
7418
7432
7432
7432
7432
7432
7432
7432
7447
7447
7448
7448
7454
7454
7454
7454
7454
7454
7459
7459
7459
7459
7461
7461
7463
7463
7467
7467
7467
7467
7467
7467
7467
7467
7467
7477
7477
7479
7479
7480
7480
7487
7487
7487
7499
7499
7508
7508
7528
7528
7530
7530
7530
7530
7531
7531
7531
7531
7532
7532
7534
7538
7538
7543
7543
7553
7553
7553
7553
7556
7556
7562
7562
7562
7564
7564
7564
7565
7565
7575
7577
7577
7577
7580
7580
7580
7580
7603
7603
7603
7603
7603
7603
7622
7622
7629
7629
7644
7644
7648
7648
7658
7658
7658
7658
7658
7658
7659
7659
7659
7659
7659
7669
7669
7672
7672
7672
7676
7676
7682
7682
7689
7689
7689
7689
7689
7689
7689
7689
7694
7694
7694
7700
7700
7703
7703
7703
7703
7703
7703
7703
7703
7708
7708
7708
7708
7708
7708
7708
7708
7708
7714
7714
7718
7718
7722
7722
7731
7731
7742
7742
7750
7750
7762
7762
7762
7762
7762
7767
7767
7767
7767
7782
7782
7784
7784
7785
7785
7785
7785
7785
7785
7785
7785
7785
7785
7790
7790
7790
7790
7793
7807
7807
7811
7811
7813
7813
7816
7816
7816
7816
7816
7816
7822
7822
7837
7837
7837
7849
7849
7854
7854
7859
7859
7871
7871
7871
7871
7872
7872
7872
7872
7872
7880
7880
7884
7884
7891
7891
7893
7893
7897
7897
7897
7900
7900
7900
7900
7900
7900
7902
7902
7911
7911
7911
7911
7926
7926
7929
7929
7930
7930
7936
7936
7936
7936
7936
7936
7936
7936
7938
7938
7939
7949
7949
7952
7952
7952
7955
7955
7959
7959
7964
7964
7973
7973
7982
7987
7987
7988
7988
7993
7993
8004
8004
8004
8009
8009
8009
8012
8012
8018
8022
8022
8027
8027
8028
8032
8032
8041
8041
8041
8045
8045
8047
8047
8047
8047
8057
8057
8062
8062
8062
8062
8062
8073
8073
8073
8073
8077
8078
8078
8078
8078
8083
8083
8083
8086
8086
8088
8088
8088
8088
8093
8093
8093
8096
8096
8098
8098
8098
8098
8116
8116
8117
8117
8124
8124
8127
8127
8127
8129
8129
8129
8154
8154
8154
8154
8154
8154
8154
8155
8155
8155
8155
8173
8173
8173
8173
8176
8176
8180
8180
8180
8180
8181
8181
8181
8181
8183
8183
8184
8184
8191
8202
8202
8204
8204
8204
8204
8204
8210
8210
8215
8215
8229
8229
8230
8230
8230
8235
8235
8235
8235
8235
8246
8246
8255
8255
8255
8256
8256
8256
8257
8257
8267
8267
8267
8267
8268
8268
8282
8282
8296
8296
8317
8317
8319
8319
8331
8331
8331
8334
8336
8336
8336
8336
8342
8342
8344
8344
8349
8349
8349
8349
8352
8352
8352
8363
8376
8376
8377
8377
8385
8385
8393
8393
8404
8404
8404
8404
8407
8407
8407
8409
8409
8411
8411
8416
8416
8417
8417
8420
8420
8424
8424
8425
8425
8434
8434
8440
8440
8440
8442
8442
8442
8449
8449
8458
8460
8460
8460
8460
8465
8465
8474
8474
8474
8474
8476
8476
8476
8476
8476
8476
8487
8487
8487
8487
8488
8488
8493
8493
8493
8499
8499
8500
8500
8508
8508
8509
8509
8519
8519
8532
8541
8541
8546
8546
8546
8546
8546
8546
8546
8546
8559
8559
8560
8560
8560
8560
8562
8562
8567
8567
8567
8568
8568
8591
8591
8594
8594
8595
8595
8602
8602
8603
8603
8603
8603
8605
8605
8605
8611
8622
8622
8636
8650
8650
8661
8661
8661
8665
8665
8672
8672
8673
8673
8675
8675
8693
8693
8711
8711
8716
8716
8721
8721
8721
8721
8721
8721
8721
8721
8721
8721
8721
8721
8721
8721
8721
8722
8724
8724
8732
8732
8733
8733
8733
8733
8741
8747
8747
8748
8748
8757
8757
8757
8757
8757
8757
8760
8760
8760
8760
8760
8762
8762
8769
8769
8769
8773
8773
8773
8785
8785
8786
8786
8801
8803
8803
8806
8806
8806
8806
8806
8806
8809
8815
8815
8825
8825
8831
8831
8832
8836
8836
8841
8841
8853
8853
8870
8870
8870
8870
8872
8874
8879
8879
8880
8880
8885
8886
8886
8886
8886
8888
8888
8894
8894
8903
8903
8903
8903
8903
8904
8904
8904
8909
8909
8909
8909
8909
8909
8909
8931
8931
8931
8931
8931
8938
8938
8943
8943
8943
8950
8950
8950
8953
8953
8961
8961
8961
8961
8961
8961
8970
8970
8971
8971
8977
8977
8979
8979
8979
8979
8980
8980
8984
8984
8984
8984
8985
8985
8986
8986
8986
8986
8986
8986
8986
8988
8988
8988
8988
8988
8988
8988
8998
8998
9000
9013
9013
9013
9027
9027
9027
9027
9030
9030
9032
9032
9034
9034
9036
9036
9036
9042
9042
9049
9049
9049
9049
9055
9055
9055
9059
9059
9065
9065
9065
9065
9065
9065
9083
9083
9087
9087
9089
9089
9089
9089
9096
9096
9097
9097
9097
9098
9106
9106
9106
9106
9106
9106
9107
9107
9113
9113
9114
9114
9114
9114
9121
9121
9121
9131
9131
9132
9132
9136
9136
9144
9144
9146
9146
9146
9146
9146
9153
9153
9153
9154
9161
9161
9165
9165
9165
9166
9166
9166
9166
9186
9186
9186
9191
9191
9191
9194
9194
9196
9196
9202
9202
9202
9202
9204
9204
9204
9204
9207
9207
9207
9207
9207
9207
9207
9207
9207
9207
9207
9207
9207
9207
9207
9207
9207
9207
9207
9207
9207
9207
9207
9207
9207
9212
9212
9212
9212
9212
9212
9216
9216
9228
9228
9228
9231
9231
9244
9244
9244
9247
9247
9247
9247
9247
9253
9262
9262
9262
9262
9269
9269
9270
9270
9270
9270
9270
9274
9274
9277
9277
9284
9284
9284
9290
9290
9299
9299
9302
9302
9306
9311
9311
9311
9311
9311
9311
9311
9311
9311
9311
9311
9311
9311
9311
9311
9311
9311
9318
9318
9328
9328
9329
9329
9329
9330
9330
9330
9335
9335
9335
9342
9342
9343
9343
9343
9350
9350
9364
9373
9373
9375
9375
9385
9385
9385
9385
9385
9391
9391
9395
9395
9402
9402
9405
9405
9418
9418
9423
9423
9423
9426
9426
9441
9441
9441
9444
9444
9448
9448
9448
9473
9473
9473
9473
9476
9476
9476
9479
9479
9492
9492
9492
9501
9501
9507
9507
9511
9511
9511
9511
9511
9511
9511
9511
9511
9517
9517
9518
9523
9523
9528
9528
9529
9529
9530
9530
9536
9536
9539
9539
9540
9540
9540
9549
9557
9557
9564
9564
9567
9567
9567
9567
9567
9567
9567
9572
9572
9572
9572
9574
9574
9580
9580
9591
9591
9605
9605
9614
9614
9614
9618
9618
9627
9627
9627
9627
9627
9636
9636
9639
9639
9641
9641
9641
9642
9647
9647
9653
9653
9659
9659
9659
9662
9662
9662
9671
9671
9671
9679
9679
9679
9683
9683
9688
9688
9689
9689
9696
9696
9698
9698
9700
9703
9703
9703
9706
9706
9711
9711
9711
9713
9713
9730
9730
9743
9743
9744
9744
9747
9747
9748
9748
9753
9753
9774
9774
9774
9774
9779
9779
9779
9779
9779
9785
9785
9786
9786
9786
9786
9788
9788
9791
9791
9792
9792
9792
9792
9792
9795
9795
9797
9797
9804
9804
9811
9811
9815
9825
9830
9830
9833
9833
9836
9836
9836
9839
9839
9842
9842
9854
9854
9854
9854
9861
9861
9861
9862
9862
9873
9873
9875
9875
9879
9879
9889
9889
9889
9890
9890
9890
9904
9904
9904
9907
9907
9907
9907
9911
9911
9911
9924
9924
9925
9925
9927
9927
9927
9927
9927
9927
9939
9939
9952
9954
9954
9955
9955
9955
9955
9955
9955
9964
9964
9965
9965
9967
9967
9967
9967
9967
9967
9967
9967
9967
9967
9967
9967
9967
9972
9972
9975
9975
9976
9976
9976
9976
9977
9977
9992
9993
9993
9994
10002
10002
10004
10004
10004
10004
10008
10012
10012
10012
10012
10012
10012
10012
10012
10012
10012
10024
10024
10027
10027
10037
10037
10038
10038
10049
10049
10063
10063
10064
10064
10067
10067
10069
10069
10071
10071
10071
10071
10071
10071
10073
10073
10077
10077
10081
10081
10084
10084
10089
10089
10089
10089
10089
10089
10089
10089
10089
10092
10092
10092
10099
10099
10101
10101
10101
10101
10101
10108
10108
10118
10118
10121
10121
10125
10125
10158
10158
10159
10159
10162
10162
10163
10163
10163
10183
10183
10184
10184
10184
10184
10191
10191
10196
10197
10197
10197
10199
10199
10199
10199
10200
10200
10200
10200
10204
10204
10204
10204
10209
10209
10210
10210
10211
10211
10211
10211
10211
10211
10211
10211
10211
10211
10211
10211
10211
10211
10211
10211
10211
10211
10211
10211
10211
10211
10211
10211
10211
10211
10211
10211
10211
10214
10214
10214
10214
10214
10218
10218
10220
10220
10220
10220
10220
10230
10230
10230
10230
10230
10230
10230
10237
10237
10244
10244
10249
10249
10249
10251
10251
10253
10253
10254
10254
10256
10256
10259
10259
10272
10272
10272
10280
10280
10280
10285
10287
10287
10288
10288
10289
10289
10289
10289
10291
10291
10293
10293
10309
10309
10309
10309
10324
10336
10336
10342
10342
10342
10342
10342
10353
10353
10356
10356
10360
10360
10361
10361
10368
10368
10369
10369
10370
10370
10372
10372
10378
10378
10378
10392
10392
10392
10392
10402
10402
10405
10405
10423
10423
10424
10424
10424
10424
10433
10433
10440
10440
10443
10443
10444
10444
10444
10444
10448
10448
10448
10448
10451
10451
10454
10454
10458
10458
10462
10462
10462
10473
10473
10477
10477
10477
10477
10478
10478
10481
10481
10483
10483
10486
10486
10486
10490
10490
10496
10496
10496
10496
10497
10497
10499
10500
10503
10503
10517
10517
10517
10517
10518
10527
10527
10527
10527
10527
10527
10528
10530
10530
10532
10553
10553
10557
10557
10559
10559
10559
10559
10559
10559
10559
10559
10559
10573
10573
10573
10574
10574
10574
10574
10575
10575
10579
10579
10589
10589
10590
10590
10594
10594
10598
10598
10600
10600
10605
10605
10609
10609
10614
10614
10616
10616
10617
10622
10622
10628
10628
10634
10634
10641
10641
10641
10641
10660
10660
10660
10668
10671
10671
10671
10671
10671
10671
10676
10676
10685
10685
10692
10692
10692
10697
10697
10705
10705
10705
10706
10706
10711
10711
10714
10714
10727
10727
10728
10728
10745
10745
10749
10749
10749
10753
10753
10758
10758
10758
10758
10758
10760
10760
10761
10761
10762
10762
10763
10763
10772
10775
10775
10776
10776
10780
10780
10788
10788
10789
10789
10797
10797
10802
10802
10812
10812
10815
10815
10816
10816
10816
10816
10816
10816
10816
10817
10817
10817
10819
10819
10829
10829
10829
10829
10829
10829
10832
10832
10839
10839
10841
10841
10842
10850
10850
10850
10854
10854
10854
10859
10859
10863
10863
10867
10867
10867
10872
10872
10885
10885
10897
10897
10897
10903
10903
10903
10910
10910
10910
10915
10915
10926
10926
10926
10926
10928
10929
10929
10942
10942
10942
10943
10943
10946
10946
10947
10972
10972
10972
10976
10976
10989
10989
10989
10989
10989
10989
10989
10989
10989
10989
10989
10989
10989
10989
10989
10989
10989
10989
10989
10989
10989
10989
10989
10989
10989
10989
10989
10989
10989
10989
10989
10989
10989
10989
10989
10993
11004
11004
11009
11009
11009
11009
11011
11011
11015
11015
11020
11020
11028
11028
11028
11037
11037
11037
11037
11037
11037
11040
11040
11040
11040
11047
11047
11047
11047
11049
11049
11054
11054
11057
11057
11057
11057
11057
11057
11057
11057
11057
11057
11069
11069
11077
11077
11084
11084
11092
11092
11092
11097
11097
11097
11097
11097
11097
11098
11098
11098
11098
11110
11110
11110
11110
11110
11110
11110
11110
11110
11127
11127
11139
11139
11149
11149
11149
11149
11152
11152
11152
11152
11154
11154
11160
11160
11160
11160
11160
11160
11160
11160
11160
11160
11160
11160
11160
11160
11162
11162
11174
11174
11174
11174
11174
11174
11174
11174
11174
11174
11174
11174
11174
11174
11174
11174
11176
11176
11182
11182
11182
11182
11182
11192
11192
11193
11193
11196
11196
11196
11198
11198
11208
11208
11208
11208
11217
11217
11217
11218
11218
11224
11224
11224
11224
11225
11225
11229
11229
11237
11237
11241
11241
11246
11246
11249
11249
11249
11249
11252
11252
11252
11252
11252
11254
11254
11258
11258
11265
11265
11267
11267
11269
11269
11275
11275
11277
11277
11277
11277
11277
11277
11277
11277
11277
11277
11294
11294
11294
11294
11294
11294
11294
11295
11295
11295
11295
11295
11295
11295
11295
11295
11295
11295
11303
11303
11308
11308
11308
11314
11314
11314
11314
11314
11314
11315
11315
11315
11315
11315
11326
11326
11326
11326
11342
11342
11345
11345
11348
11348
11348
11348
11348
11348
11348
11348
11348
11348
11348
11353
11371
11371
11379
11379
11379
11379
11379
11379
11379
11379
11379
11379
11379
11379
11379
11379
11379
11386
11386
11388
11388
11394
11394
11395
11395
11407
11407
11410
11410
11411
11411
11418
11423
11424
11424
11424
11424
11424
11424
11424
11424
11424
11426
11426
11427
11427
11427
11427
11428
11428
11429
11429
11429
11429
11429
11429
11432
11432
11432
11432
11434
11440
11440
11449
11449
11449
11449
11449
11449
11449
11449
11458
11458
11461
11461
11478
11478
11478
11478
11486
11486
11487
11487
11487
11494
11494
11496
11496
11496
11496
11510
11510
11513
11513
11513
11519
11519
11519
11519
11519
11519
11519
11519
11519
11519
11529
11529
11529
11529
11529
11529
11529
11530
11530
11538
11538
11544
11544
11544
11544
11549
11549
11551
11551
11553
11553
11554
11554
11559
11559
11559
11559
11563
11563
11574
11576
11576
11576
11576
11584
11584
11584
11587
11587
11587
11587
11605
11605
11605
11606
11606
11621
11622
11622
11622
11622
11622
11622
11622
11622
11622
11622
11631
11631
11631
11633
11633
11636
11636
11642
11642
11642
11642
11642
11645
11645
11645
11645
11651
11651
11651
11651
11652
11652
11652
11655
11655
11665
11665
11665
11669
11669
11669
11669
11669
11669
11669
11671
11671
11672
11672
11672
11678
11678
11681
11681
11681
11681
11681
11681
11681
11681
11682
11682
11684
11685
11687
11687
11687
11690
11691
11691
11698
11698
11705
11705
11710
11722
11722
11723
11723
11731
11731
11731
11731
11731
11731
11731
11737
11737
11743
11743
11748
11751
11751
11751
11752
11758
11758
11760
11760
11760
11763
11763
11767
11767
11767
11767
11767
11767
11767
11767
11767
11769
11769
11782
11782
11791
11791
11796
11796
11798
11798
11799
11799
11799
11828
11828
11828
11828
11828
11829
11829
11833
11835
11835
11840
11840
11840
11847
11847
11847
11857
11857
11858
11858
11863
11863
11868
11868
11886
11886
11889
11889
11889
11894
11894
11894
11894
11894
11895
11895
11895
11911
11928
11928
11928
11928
11928
11928
11941
11941
11941
11941
11941
11941
11950
11950
11958
11959
11959
11959
11959
11959
11959
11960
11960
11960
11960
11960
11960
11960
11960
11961
11961
11961
11961
11963
11963
11966
11966
11972
11972
11972
11987
11987
11987
11987
11997
11997
11997
11997
12000
12000
12008
12008
12008
12008
12012
12012
12018
12018
12018
12018
12018
12026
12026
12036
12036
12039
12039
12045
12045
12045
12045
12047
12047
12049
12049
12061
12061
12061
12061
12061
12074
12074
12078
12078
12078
12081
12081
12082
12082
12086
12086
12086
12093
12093
12097
12097
12097
12097
12107
12107
12107
12107
12107
12109
12109
12109
12109
12109
12112
12112
12113
12113
12117
12117
12120
12120
12120
12120
12120
12120
12123
12123
12127
12127
12130
12130
12130
12130
12130
12137
12137
12143
12143
12143
12155
12155
12155
12158
12159
12159
12162
12162
12162
12164
12164
12165
12165
12165
12165
12174
12174
12175
12180
12191
12191
12191
12191
12191
12191
12191
12191
12191
12191
12195
12195
12201
12201
12201
12201
12203
12203
12208
12208
12208
12222
12222
12230
12230
12230
12234
12234
12237
12237
12239
12239
12243
12271
12271
12277
12283
12283
12283
12283
12285
12289
12289
12289
12291
12291
12291
12291
12295
12295
12313
12319
12320
12320
12324
12324
12324
12324
12329
12329
12329
12329
12335
12335
12335
12335
12347
12347
12347
12355
12355
12355
12355
12356
12356
12356
12357
12357
12359
12359
12362
12362
12365
12365
12366
12366
12366
12370
12370
12375
12375
12375
12375
12375
12379
12379
12384
12384
12384
12384
12384
12387
12387
12397
12397
12398
12398
12402
12402
12410
12410
12410
12424
12424
12424
12426
12426
12426
12426
12427
12427
12430
12430
12430
12434
12434
12437
12438
12438
12438
12438
12438
12438
12440
12440
12442
12442
12449
12449
12449
12455
12455
12471
12471
12471
12478
12478
12479
12479
12503
12503
12505
12505
12505
12519
12519
12520
12520
12522
12522
12530
12530
12534
12534
12543
12543
12546
12546
12546
12546
12547
12547
12551
12551
12551
12557
12557
12557
12572
12572
12574
12574
12582
12582
12582
12600
12600
12607
12607
12607
12607
12607
12612
12612
12612
12615
12615
12615
12615
12615
12615
12616
12616
12634
12634
12634
12682
12682
12685
12685
12692
12692
12692
12692
12692
12692
12696
12698
12698
12698
12698
12704
12704
12704
12704
12708
12708
12708
12710
12710
12710
12710
12719
12719
12719
12726
12727
12729
12729
12729
12731
12731
12731
12731
12733
12733
12736
12736
12736
12736
12736
12741
12741
12741
12745
12745
12745
12745
12745
12745
12753
12753
12758
12758
12764
12764
12767
12767
12770
12770
12782
12782
12782
12787
12787
12792
12792
12817
12817
12822
12822
12822
12822
12825
12825
12837
12837
12838
12838
12849
12849
12849
12852
12854
12854
12854
12854
12854
12855
12855
12856
12856
12860
12860
12860
12860
12860
12860
12860
12860
12860
12860
12862
12862
12871
12871
12871
12874
12874
12874
12874
12874
12874
12874
12895
12895
12911
12930
12930
12947
12947
12947
12947
12951
12951
12961
12961
12968
12968
12968
12969
12969
12969
12969
12969
12975
12975
12982
12982
12990
12990
12994
12994
12996
12997
12997
12997
13005
13005
13007
13007
13012
13012
13012
13019
13019
13022
13022
13046
13046
13046
13050
13052
13052
13054
13054
13054
13056
13056
13056
13056
13057
13057
13062
13062
13062
13084
13084
13094
13094
13094
13094
13095
13095
13095
13116
13119
13119
13125
13125
13129
13129
13130
13130
13137
13137
13137
13137
13140
13140
13141
13141
13143
13143
13143
13143
13160
13160
13161
13161
13161
13161
13163
13163
13172
13172
13173
13173
13178
13178
13178
13178
13179
13179
13181
13181
13181
13181
13181
13182
13182
13182
13183
13183
13201
13205
13205
13205
13205
13205
13205
13205
13205
13205
13205
13206
13206
13214
13214
13223
13223
13223
13223
13223
13223
13225
13225
13226
13226
13226
13226
13226
13226
13226
13227
13242
13265
13265
13283
13283
13283
13285
13285
13288
13288
13289
13289
13291
13291
13291
13291
13291
13295
13295
13297
13297
13299
13301
13301
13301
13309
13309
13313
13313
13318
13318
13325
13325
13325
13327
13327
13330
13330
13330
13330
13330
13330
13330
13330
13332
13332
13332
13333
13333
13333
13346
13346
13352
13352
13358
13358
13366
13366
13374
13374
13375
13375
13385
13386
13386
13386
13386
13388
13392
13392
13399
13399
13399
13399
13399
13399
13404
13407
13407
13407
13410
13410
13410
13410
13410
13410
13412
13412
13422
13422
13425
13425
13431
13431
13432
13432
13438
13438
13438
13438
13438
13438
13438
13438
13442
13442
13443
13443
13443
13443
13443
13443
13443
13447
13447
13449
13449
13454
13454
13456
13456
13457
13457
13457
13457
13461
13461
13461
13461
13461
13467
13467
13472
13472
13485
13485
13485
13485
13487
13487
13490
13490
13494
13494
13500
13502
13502
13504
13504
13510
13510
13517
13517
13524
13524
13524
13543
13543
13543
13545
13545
13545
13545
13548
13548
13548
13548
13549
13551
13551
13551
13551
13554
13554
13554
13560
13560
13565
13565
13571
13571
13571
13576
13576
13577
13577
13581
13581
13593
13593
13596
13596
13597
13597
13597
13619
13619
13622
13622
13625
13625
13634
13636
13636
13649
13649
13652
13652
13652
13652
13652
13652
13654
13654
13654
13655
13655
13658
13658
13660
13660
13662
13662
13674
13674
13681
13681
13681
13681
13681
13681
13682
13682
13684
13684
13688
13688
13688
13688
13688
13688
13689
13689
13698
13698
13698
13699
13699
13700
13700
13700
13700
13700
13701
13701
13702
13702
13702
13702
13702
13702
13702
13702
13703
13703
13708
13709
13709
13709
13709
13709
13711
13711
13713
13713
13713
13713
13740
13740
13740
13741
13741
13741
13746
13746
13753
13753
13761
13761
13762
13762
13762
13762
13770
13770
13775
13775
13786
13786
13786
13786
13789
13789
13800
13800
13805
13805
13806
13806
13831
13831
13838
13838
13841
13841
13842
13842
13844
13844
13844
13871
13871
13879
13879
13879
13879
13881
13881
13881
13883
13883
13894
13894
13896
13896
13905
13905
13905
13922
13922
13946
13946
13946
13947
13947
13952
13952
13952
13952
13952
13952
13952
13952
13952
13952
13952
13957
13957
13957
13957
13962
13962
13968
13968
13972
13972
13978
13978
13978
13978
13978
13978
13978
13978
13978
13978
13979
13979
13982
13982
13982
13984
13984
13985
13985
13985
13987
13987
14004
14004
14012
14012
14014
14014
14014
14014
14019
14019
14019
14019
14019
14019
14028
14028
14037
14037
14039
14039
14041
14041
14042
14042
14042
14042
14042
14042
14042
14042
14042
14050
14050
14060
14060
14060
14060
14060
14060
14064
14064
14065
14065
14067
14067
14067
14072
14072
14088
14088
14089
14089
14096
14102
14102
14102
14102
14102
14102
14102
14102
14102
14102
14102
14107
14119
14119
14128
14128
14129
14129
14131
14131
14131
14131
14133
14144
14144
14144
14144
14144
14144
14150
14150
14162
14162
14162
14162
14162
14162
14162
14162
14162
14170
14170
14178
14178
14179
14179
14179
14179
14180
14180
14180
14180
14180
14180
14185
14185
14185
14187
14187
14188
14188
14188
14188
14190
14190
14193
14206
14206
14206
14206
14206
14208
14208
14208
14208
14208
14208
14208
14208
14208
14208
14208
14208
14211
14218
14218
14218
14218
14219
14219
14223
14233
14233
14233
14233
14233
14233
14241
14241
14241
14242
14242
14250
14250
14250
14250
14261
14261
14265
14266
14266
14268
14268
14268
14268
14268
14273
14273
14284
14284
14286
14286
14286
14293
14293
14303
14303
14303
14303
14303
14306
14306
14310
14310
14312
14312
14316
14316
14316
14316
14316
14323
14323
14323
14327
14327
14327
14327
14327
14329
14329
14339
14339
14348
14348
14363
14363
14363
14363
14363
14363
14363
14366
14366
14367
14367
14367
14368
14369
14369
14369
14377
14377
14377
14377
14377
14397
14397
14399
14399
14404
14404
14404
14413
14415
14415
14416
14416
14422
14422
14422
14422
14434
14434
14437
14437
14437
14437
14437
14437
14437
14437
14437
14437
14437
14440
14440
14449
14458
14459
14459
14462
14462
14469
14469
14471
14471
14471
14471
14479
14479
14479
14479
14479
14485
14485
14501
14501
14504
14504
14504
14504
14504
14504
14507
14507
14508
14508
14509
14509
14520
14520
14522
14522
14524
14524
14524
14525
14525
14525
14525
14536
14536
14539
14539
14548
14548
14550
14550
14562
14562
14566
14566
14573
14573
14573
14573
14573
14573
14574
14574
14574
14581
14581
14581
14590
14590
14590
14590
14590
14590
14596
14596
14606
14606
14606
14606
14606
14606
14610
14610
14618
14618
14623
14623
14624
14624
14634
14634
14634
14634
14634
14634
14637
14637
14637
14637
14644
14644
14644
14644
14645
14645
14646
14646
14648
14648
14652
14652
14661
14661
14664
14664
14664
14678
14678
14679
14679
14679
14679
14679
14679
14679
14679
14679
14682
14682
14685
14685
14685
14685
14694
14694
14700
14700
14700
14702
14702
14702
14702
14702
14705
14705
14708
14708
14708
14715
14715
14722
14722
14722
14722
14723
14723
14723
14723
14729
14730
14730
14737
14737
14737
14750
14750
14750
14750
14750
14750
14750
14750
14750
14750
14750
14750
14750
14750
14750
14758
14758
14758
14758
14761
14761
14767
14767
14767
14767
14767
14767
14767
14767
14767
14767
14767
14781
14781
14787
14787
14798
14798
14808
14808
14814
14817
14817
14817
14817
14829
14829
14841
14841
14853
14853
14855
14855
14855
14857
14857
14857
14857
14857
14857
14857
14857
14857
14859
14859
14865
14865
14868
14868
14873
14873
14878
14878
14878
14878
14880
14880
14880
14880
14880
14887
14891
14891
14891
14905
14905
14905
14905
14905
14905
14905
14905
14905
14905
14905
14905
14905
14905
14911
14913
14913
14913
14913
14922
14922
14929
14929
14929
14932
14934
14934
14934
14937
14937
14950
14950
14955
14968
14968
14968
14968
14968
14968
14968
14968
14968
14968
14968
14969
14969
14976
14976
14976
14982
14982
14982
14982
14984
14984
14984
14987
14987
14992
14992
14992
15000
15000
15000
15000
15000
15000
15000
15000
15004
15004
15007
15007
15007
15007
15019
15019
15019
15022
15022
15022
15022
15027
15027
15027
15027
15030
15030
15030
15030
15037
15037
15037
15037
15037
15037
15068
15077
15077
15087
15087
15087
15087
15096
15096
15097
15097
15097
15098
15098
15110
15110
15110
15117
15117
15120
15120
15125
15125
15125
15125
15128
15128
15134
15134
15135
15135
15136
15136
15139
15139
15143
15143
15143
15146
15146
15156
15156
15162
15162
15165
15165
15168
15168
15172
15172
15172
15183
15183
15183
15200
15200
15200
15207
15207
15207
15207
15207
15207
15207
15207
15209
15209
15209
15209
15210
15210
15219
15219
15225
15225
15233
15233
15237
15237
15237
15237
15237
15237
15244
15244
15249
15249
15251
15251
15251
15252
15252
15266
15273
15273
15273
15276
15276
15276
15277
15277
15280
15280
15280
15280
15280
15280
15280
15280
15280
15285
15285
15285
15288
15288
15288
15288
15288
15304
15304
15307
15307
15307
15307
15310
15310
15312
15312
15312
15312
15316
15316
15316
15316
15316
15316
15316
15316
15320
15320
15320
15320
15323
15323
15339
15339
15343
15343
15345
15345
15353
15353
15353
15353
15354
15354
15355
15355
15359
15360
15360
15360
15362
15362
15372
15373
15373
15380
15380
15384
15384
15384
15384
15389
15389
15391
15391
15397
15397
15411
15411
15411
15411
15411
15411
15414
15414
15414
15414
15414
15414
15414
15414
15414
15420
15420
15428
15428
15429
15429
15435
15435
15435
15435
15435
15435
15435
15435
15435
15435
15435
15435
15435
15435
15435
15435
15435
15435
15435
15435
15435
15435
15435
15435
15435
15435
15435
15435
15435
15435
15439
15439
15439
15442
15449
15450
15450
15450
15450
15450
15450
15454
15454
15454
15473
15473
15482
15482
15490
15490
15492
15492
15494
15494
15496
15496
15498
15498
15498
15498
15500
15500
15506
15506
15506
15531
15531
15531
15531
15534
15534
15536
15536
15536
15536
15545
15545
15557
15557
15557
15557
15557
15557
15566
15566
15566
15569
15569
15569
15571
15571
15575
15580
15580
15581
15581
15584
15584
15584
15584
15584
15587
15587
15591
15592
15592
15592
15597
15597
15597
15597
15597
15617
15617
15617
15617
15617
15617
15617
15617
15618
15618
15628
15628
15628
15628
15628
15628
15628
15632
15632
15636
15636
15644
15644
15644
15644
15646
15646
15656
15656
15658
15663
15663
15669
15669
15697
15697
15721
15721
15721
15721
15721
15728
15728
15736
15736
15742
15742
15742
15754
15754
15754
15756
15756
15758
15758
15769
15769
15769
15788
15788
15795
15795
15811
15811
15819
15819
15819
15821
15821
15845
15845
15868
15868
15869
15869
15869
15869
15871
15871
15871
15871
15871
15871
15880
15880
15882
15882
15884
15884
15901
15902
15902
15902
15915
15915
15915
15915
15915
15915
15920
15920
15920
15934
15934
15945
15945
15958
15958
15972
15972
15972
15972
15972
15972
15974
15974
15974
15974
15974
15983
15983
15994
15994
15998
15998
16007
16007
16007
16007
16013
16025
16025
16031
16031
16057
16057
16061
16061
16065
16065
16065
16065
16069
16069
16069
16069
16069
16069
16075
16075
16083
16083
16091
16101
16101
16101
16101
16106
16106
16106
16117
16117
16118
16118
16129
16129
16129
16132
16132
16132
16132
16133
16133
16150
16150
16164
16164
16168
16168
16168
16168
16168
16178
16178
16185
16185
16185
16185
16185
16186
16196
16196
16200
16200
16200
16200
16205
16205
16205
16211
16220
16220
16220
16228
16228
16236
16236
16237
16237
16243
16243
16243
16256
16256
16259
16259
16267
16267
16267
16267
16267
16267
16272
16272
16272
16272
16279
16279
16279
16279
16283
16290
16292
16292
16292
16292
16293
16293
16293
16301
16307
16307
16307
16307
16314
16317
16317
16318
16318
16318
16318
16327
16327
16327
16332
16332
16339
16355
16355
16362
16362
16362
16362
16362
16362
16362
16362
16363
16363
16377
16377
16377
16377
16377
16378
16378
16378
16382
16382
16383
16383
16393
16393
16394
16394
16394
16398
16398
16398
16400
16400
16400
16404
16404
16414
16414
16414
16419
16423
16423
16424
16424
16442
16442
16445
16445
16445
16447
16447
16447
16447
16447
16447
16448
16448
16451
16451
16455
16457
16457
16468
16468
16468
16468
16469
16475
16475
16477
16477
16477
16477
16477
16477
16477
16477
16477
16477
16477
16479
16479
16482
16482
16483
16483
16485
16485
16485
16494
16494
16498
16498
16503
16503
16506
16510
16510
16529
16529
16529
16529
16548
16548
16551
16551
16551
16551
16551
16551
16551
16560
16560
16572
16572
16575
16575
16576
16576
16576
16578
16578
16584
16584
16585
16585
16585
16601
16601
16602
16603
16603
16603
16603
16611
16611
16611
16611
16611
16612
16612
16614
16614
16614
16614
16614
16630
16630
16633
16633
16633
16633
16634
16634
16634
16634
16640
16640
16642
16642
16642
16649
16649
16651
16651
16655
16655
16670
16670
16678
16678
16680
16680
16680
16680
16688
16688
16688
16693
16694
16694
16695
16695
16697
16697
16697
16697
16698
16698
16699
16699
16699
16701
16701
16701
16701
16701
16701
16703
16703
16715
16716
16727
16727
16735
16735
16739
16739
16745
16745
16745
16746
16746
16747
16747
16753
16753
16753
16758
16758
16758
16758
16763
16763
16764
16764
16778
16778
16783
16783
16784
16784
16785
16785
16785
16785
16785
16785
16785
16785
16785
16785
16793
16793
16799
16799
16799
16802
16802
16803
16803
16810
16812
16812
16813
16813
16813
16813
16813
16813
16814
16814
16820
16823
16823
16823
16823
16823
16823
16827
16827
16827
16837
16837
16844
16844
16844
16844
16844
16844
16848
16848
16867
16867
16867
16878
16878
16881
16881
16899
16899
16910
16912
16912
16912
16912
16912
16912
16912
16912
16924
16924
16945
16945
16947
16947
16953
16953
16953
16970
16970
16970
16988
16988
16992
16992
16994
16994
16999
17000
17000
17000
17006
17006
17006
17006
17015
17015
17016
17016
17016
17019
17019
17019
17019
17019
17019
17022
17022
17022
17024
17024
17030
17030
17030
17030
17033
17033
17045
17045
17047
17047
17071
17071
17085
17085
17085
17085
17098
17098
17098
17098
17098
17098
17123
17123
17123
17123
17123
17128
17128
17128
17128
17140
17140
17140
17140
17142
17142
17142
17142
17142
17142
17142
17142
17142
17142
17142
17142
17142
17142
17144
17144
17144
17167
17167
17193
17193
17201
17201
17201
17201
17201
17201
17201
17201
17201
17201
17201
17201
17205
17205
17205
17207
17207
17209
17209
17213
17213
17214
17214
17226
17226
17226
17226
17227
17227
17227
17231
17231
17236
17236
17240
17240
17240
17240
17243
17243
17245
17245
17251
17251
17251
17251
17251
17251
17255
17266
17266
17278
17278
17278
17278
17282
17282
17282
17282
17289
17289
17290
17290
17290
17292
17292
17292
17303
17303
17303
17303
17305
17305
17305
17305
17324
17324
17324
17327
17327
17327
17327
17327
17334
17334
17340
17341
17341
17341
17352
17352
17358
17358
17358
17358
17365
17365
17365
17371
17371
17371
17371
17371
17371
17372
17372
17381
17381
17393
17402
17402
17404
17404
17407
17407
17413
17413
17413
17423
17423
17423
17423
17430
17430
17435
17435
17436
17436
17436
17436
17446
17446
17446
17446
17447
17447
17449
17449
17449
17452
17452
17452
17452
17457
17457
17459
17459
17459
17460
17460
17462
17462
17462
17462
17462
17482
17482
17482
17482
17485
17492
17492
17493
17493
17493
17494
17494
17494
17494
17496
17496
17510
17510
17518
17518
17518
17518
17520
17520
17520
17527
17527
17533
17533
17533
17533
17533
17533
17533
17533
17533
17533
17533
17533
17538
17538
17538
17538
17538
17565
17565
17565
17565
17568
17568
17568
17568
17568
17568
17568
17576
17580
17580
17580
17581
17581
17588
17588
17588
17593
17593
17596
17596
17596
17609
17609
17612
17612
17612
17612
17612
17612
17615
17620
17620
17626
17626
17626
17638
17638
17645
17645
17645
17645
17656
17656
17660
17660
17660
17660
17660
17660
17660
17660
17660
17661
17661
17664
17664
17664
17664
17669
17669
17671
17671
17680
17680
17684
17684
17684
17684
17685
17685
17685
17685
17691
17691
17700
17700
17713
17713
17716
17716
17716
17719
17719
17723
17723
17723
17723
17734
17734
17734
17734
17738
17738
17738
17738
17753
17753
17761
17761
17761
17761
17762
17762
17762
17762
17766
17766
17768
17768
17769
17769
17769
17769
17769
17770
17770
17770
17786
17786
17787
17787
17793
17793
17793
17805
17805
17806
17806
17812
17812
17812
17812
17821
17821
17821
17821
17821
17822
17822
17827
17827
17830
17830
17830
17830
17830
17834
17834
17834
17834
17834
17834
17837
17837
17837
17837
17852
17852
17857
17857
17857
17857
17857
17863
17863
17863
17863
17863
17863
17863
17866
17866
17871
17871
17871
17871
17874
17874
17886
17886
17886
17886
17887
17887
17887
17895
17895
17897
17900
17900
17900
17900
17908
17908
17920
17920
17934
17934
17934
17934
17936
17936
17936
17936
17936
17936
17936
17936
17936
17936
17936
17941
17941
17941
17943
17943
17943
17948
17948
17952
17952
17953
17953
17954
17954
17954
17954
17956
17956
17956
17956
17958
17958
17958
17958
17968
17968
17968
17972
17972
17979
17984
17984
17985
17985
17985
17985
17985
17985
17991
17991
17992
17992
17992
17993
17993
17993
18002
18002
18006
18011
18011
18017
18017
18026
18031
18031
18031
18031
18031
18032
18032
18032
18032
18033
18033
18044
18044
18044
18044
18044
18052
18052
18052
18060
18060
18061
18061
18067
18072
18073
18073
18073
18073
18073
18075
18075
18084
18084
18091
18091
18095
18095
18095
18097
18097
18099
18099
18099
18102
18102
18102
18102
18104
18104
18105
18105
18105
18105
18115
18115
18115
18115
18121
18121
18129
18129
18132
18132
18133
18133
18133
18135
18135
18142
18143
18143
18148
18148
18155
18155
18155
18155
18159
18159
18159
18159
18159
18159
18159
18159
18159
18162
18162
18166
18166
18166
18166
18185
18185
18198
18198
18209
18209
18209
18209
18209
18221
18221
18221
18221
18221
18221
18226
18226
18232
18232
18232
18232
18232
18234
18234
18234
18234
18239
18239
18249
18249
18256
18256
18266
18266
18266
18266
18266
18267
18267
18269
18269
18271
18271
18287
18287
18289
18289
18289
18289
18292
18292
18294
18294
18297
18297
18303
18303
18311
18311
18312
18312
18313
18313
18313
18313
18313
18314
18314
18314
18314
18316
18316
18316
18320
18320
18329
18329
18342
18342
18342
18345
18345
18346
18346
18346
18346
18350
18350
18350
18350
18352
18352
18354
18354
18354
18354
18357
18357
18357
18362
18362
18362
18362
18362
18362
18371
18371
18376
18376
18376
18376
18376
18376
18385
18385
18386
18386
18386
18414
18414
18414
18414
18414
18414
18414
18414
18414
18418
18418
18420
18420
18420
18420
18420
18424
18424
18427
18427
18427
18431
18431
18431
18435
18435
18436
18436
18441
18441
18441
18441
18441
18442
18444
18446
18446
18446
18446
18446
18446
18448
18448
18448
18448
18448
18453
18453
18456
18456
18461
18461
18461
18461
18461
18461
18466
18466
18466
18468
18468
18481
18483
18483
18497
18508
18508
18508
18508
18508
18508
18513
18513
18517
18517
18517
18517
18517
18517
18517
18517
18519
18519
18520
18520
18520
18520
18537
18537
18537
18537
18559
18559
18564
18564
18564
18564
18564
18564
18564
18564
18564
18569
18569
18569
18569
18569
18575
18575
18575
18575
18575
18575
18575
18575
18576
18576
18578
18578
18578
18579
18579
18579
18579
18579
18581
18586
18586
18601
18601
18601
18601
18607
18607
18610
18610
18615
18615
18615
18615
18617
18617
18617
18625
18625
18634
18634
18637
18637
18638
18638
18642
18642
18658
18658
18660
18670
18670
18671
18671
18671
18671
18671
18671
18671
18671
18675
18675
18687
18687
18694
18694
18695
18695
18695
18704
18704
18707
18707
18707
18707
18716
18716
18717
18717
18717
18717
18717
18723
18723
18733
18733
18733
18740
18740
18746
18758
18758
18758
18758
18761
18761
18761
18764
18764
18764
18766
18766
18768
18768
18770
18770
18770
18772
18772
18772
18773
18773
18776
18776
18779
18779
18779
18779
18779
18779
18779
18788
18788
18789
18789
18789
18789
18791
18791
18805
18805
18805
18810
18810
18810
18810
18810
18810
18810
18820
18820
18821
18821
18824
18824
18824
18828
18828
18828
18829
18829
18829
18829
18833
18833
18840
18840
18842
18842
18842
18842
18847
18847
18851
18851
18859
18859
18859
18859
18859
18865
18865
18865
18865
18865
18865
18873
18873
18885
18885
18886
18886
18889
18889
18890
18890
18892
18892
18899
18899
18903
18909
18909
18919
18919
18919
18919
18919
18919
18919
18932
18932
18936
18936
18942
18942
18942
18942
18942
18942
18942
18942
18942
18942
18950
18950
18950
18958
18958
18958
18958
18958
18958
18959
18959
18963
18963
18963
18963
18963
18963
18963
18963
18963
18963
18976
18976
18976
18978
18978
18979
18979
18981
18981
18982
18982
18982
18982
18982
18988
18988
18994
18994
18994
18994
18994
18996
18996
18996
18996
18996
18996
18996
19000
19000
19000
19000
19000
19000
19000
19002
19002
19002
19007
19007
19007
19007
19011
19011
19011
19013
19013
19013
19013
19013
19013
19019
19019
19020
19020
19027
19027
19027
19027
19027
19027
19027
19033
19033
19042
19042
19044
19044
19044
19045
19045
19045
19045
19050
19050
19052
19052
19052
19052
19052
19052
19052
19054
19054
19056
19056
19056
19056
19056
19056
19056
19060
19060
19060
19068
19068
19068
19068
19068
19068
19072
19072
19073
19073
19073
19073
19079
19079
19079
19088
19088
19088
19092
19092
19092
19092
19093
19093
19094
19094
19106
19106
19114
19114
19115
19115
19116
19116
19124
19124
19124
19124
19130
19130
19130
19130
19134
19134
19134
19134
19134
19134
19135
19139
19139
19140
19140
19163
19163
19163
19163
19163
19163
19163
19163
19174
19174
19181
19181
19184
19184
19188
19188
19188
19188
19188
19192
19200
19200
19202
19202
19202
19202
19206
19206
19210
19210
19211
19211
19211
19211
19211
19224
19224
19224
19224
19224
19224
19224
19224
19224
19224
19224
19224
19228
19228
19231
19231
19231
19245
19245
19257
19257
19263
19263
19263
19264
19264
19264
19264
19267
19267
19275
19275
19278
19278
19278
19278
19278
19278
19278
19278
19278
19285
19285
19285
19285
19285
19285
19285
19285
19287
19287
19287
19287
19316
19316
19320
19320
19321
19321
19321
19321
19321
19334
19345
19345
19360
19360
19367
19367
19367
19367
19367
19367
19375
19375
19383
19383
19391
19393
19393
19393
19407
19407
19411
19411
19412
19412
19413
19413
19413
19413
19413
19415
19415
19415
19415
19415
19415
19415
19423
19423
19434
19434
19441
19441
19441
19460
19460
19465
19465
19470
19470
19470
19470
19480
19480
19481
19481
19488
19488
19499
19499
19515
19515
19515
19515
19515
19516
19516
19518
19518
19518
19518
19519
19519
19520
19520
19520
19520
19520
19520
19522
19522
19522
19522
19522
19522
19522
19531
19531
19531
19531
19533
19533
19534
19536
19536
19542
19542
19548
19548
19555
19555
19555
19562
19562
19563
19563
19563
19563
19563
19563
19563
19563
19565
19565
19565
19565
19565
19565
19565
19565
19573
19573
19575
19575
19587
19587
19589
19589
19597
19597
19602
19602
19618
19618
19621
19621
19621
19622
19622
19622
19622
19629
19629
19629
19633
19633
19639
19639
19639
19646
19646
19648
19648
19648
19648
19648
19648
19648
19648
19648
19650
19650
19650
19661
19661
19668
19668
19669
19669
19680
19680
19681
19681
19684
19684
19691
19691
19696
19700
19700
19704
19704
19708
19708
19708
19708
19708
19708
19713
19713
19713
19713
19713
19713
19715
19715
19721
19721
19725
19725
19744
19744
19747
19747
19749
19749
19749
19752
19752
19755
19755
19755
19761
19761
19762
19762
19762
19762
19772
19772
19772
19772
19777
19777
19777
19777
19783
19783
19784
19784
19794
19794
19795
19795
19798
19798
19798
19798
19798
19807
19807
19807
19807
19812
19812
19812
19818
19818
19824
19824
19824
19824
19828
19828
19849
19849
19870
19870
19870
19870
19875
19875
19875
19875
19877
19877
19883
19883
19883
19890
19891
19891
19892
19895
19895
19895
19895
19895
19901
19901
19901
19901
19901
19922
19922
19922
19925
19925
19925
19925
19925
19925
19929
19929
19929
19929
19929
19931
19933
19933
19934
19934
19938
19938
19941
19941
19941
19947
19947
19951
19951
19952
19952
19960
19960
19960
19968
19968
19968
19968
19968
19986
19986
19988
19988
19988
19990
19990
20001
20001
20004
20004
20004
20013
20016
20016
20017
20017
20021
20021
20026
20028
20028
20028
20033
20033
20035
20035
20036
20036
20037
20038
20038
20041
20041
20041
20041
20041
20047
20047
20047
20047
20051
20051
20051
20051
20051
20051
20051
20051
20051
20051
20054
20054
20059
20059
20059
20079
20079
20080
20080
20081
20081
20081
20086
20086
20087
20087
20089
20089
20089
20097
20097
20097
20099
20099
20100
20100
20100
20116
20116
20116
20116
20124
20124
20131
20131
20132
20132
20145
20145
20155
20155
20175
20184
20184
20186
20186
20202
20202
20203
20227
20227
20227
20247
20247
20247
20252
20252
20261
20261
20264
20264
20276
20276
20279
20279
20279
20279
20285
20285
20286
20286
20286
20286
20286
20286
20286
20286
20286
20287
20287
20294
20294
20295
20295
20296
20296
20302
20302
20303
20303
20313
20313
20313
20326
20326
20331
20331
20351
20351
20356
20356
20371
20371
20373
20373
20373
20373
20373
20373
20373
20374
20374
20374
20374
20377
20377
20383
20383
20398
20398
20400
20403
20403
20405
20405
20405
20405
20414
20414
20415
20415
20422
20428
20428
20429
20429
20429
20429
20429
20429
20431
20431
20432
20432
20436
20436
20436
20436
20445
20445
20449
20449
20449
20449
20449
20449
20449
20449
20449
20452
20452
20453
20453
20459
20459
20459
20460
20460
20460
20460
20460
20460
20464
20464
20464
20464
20464
20465
20465
20465
20468
20468
20468
20472
20472
20472
20472
20472
20473
20473
20473
20473
20473
20473
20473
20473
20473
20473
20476
20476
20485
20485
20485
20485
20511
20511
20515
20515
20515
20528
20528
20535
20535
20535
20535
20548
20548
20548
20548
20548
20549
20549
20549
20549
20549
20549
20549
20549
20549
20549
20549
20549
20567
20567
20567
20572
20572
20572
20572
20572
20572
20572
20572
20572
20572
20573
20573
20595
20598
20598
20604
20604
20606
20606
20610
20611
20611
20614
20616
20616
20620
20620
20620
20626
20626
20627
20627
20630
20630
20637
20637
20639
20639
20647
20647
20647
20651
20651
20659
20659
20664
20670
20670
20670
20670
20671
20671
20671
20671
20671
20672
20672
20672
20672
20697
20697
20700
20700
20700
20701
20701
20701
20701
20701
20701
20710
20710
20710
20710
20710
20710
20710
20710
20717
20717
20717
20722
20722
20732
20732
20735
20735
20756
20756
20762
20762
20790
20790
20794
20794
20796
20796
20796
20796
20814
20816
20816
20816
20816
20816
20820
20821
20821
20824
20824
20828
20828
20834
20834
20836
20836
20840
20840
20845
20845
20846
20846
20846
20871
20871
20871
20875
20875
20891
20891
20891
20891
20895
20895
20898
20898
20900
20900
20900
20900
20911
20911
20911
20911
20911
20918
20918
20918
20920
20920
20925
20925
20925
20927
20937
20937
20940
20940
20940
20940
20940
20940
20942
20942
20950
20950
20958
20964
20964
20965
20965
20979
20979
20979
20987
20987
20988
20989
20989
20990
20990
20999
20999
20999
20999
20999
20999
20999
20999
20999
20999
20999
20999
20999
20999
20999
20999
20999
21010
21010
21015
21015
21017
21017
21022
21022
21022
21022
21022
21023
21037
21037
21037
21037
21038
21038
21044
21044
21044
21045
21045
21051
21051
21100
21100
21104
21104
21126
21126
21129
21129
21129
21129
21129
21129
21129
21129
21129
21136
21136
21136
21142
21142
21145
21145
21145
21146
21146
21155
21155
21158
21158
21159
21159
21162
21162
21166
21166
21169
21169
21169
21169
21169
21171
21171
21172
21172
21176
21176
21177
21180
21180
21187
21187
21199
21199
21199
21199
21207
21207
21207
21211
21211
21213
21213
21213
21224
21224
21230
21230
21242
21242
21249
21249
21250
21250
21253
21253
21274
21274
21276
21276
21278
21278
21282
21282
21283
21283
21283
21283
21283
21283
21283
21283
21283
21283
21286
21286
21286
21286
21286
21286
21286
21286
21286
21286
21286
21298
21298
21300
21300
21303
21303
21303
21303
21303
21303
21312
21312
21316
21316
21319
21319
21319
21319
21319
21319
21319
21319
21349
21349
21349
21349
21349
21349
21350
21350
21358
21361
21361
21372
21372
21378
21378
21391
21391
21391
21397
21397
21413
21413
21414
21414
21421
21421
21421
21463
21463
21465
21465
21471
21471
21471
21489
21489
21493
21493
21493
21493
21496
21496
21497
21497
21501
21501
21501
21501
21505
21505
21505
21505
21509
21509
21512
21512
21525
21525
21525
21528
21528
21530
21530
21547
21547
21547
21548
21548
21549
21549
21551
21551
21556
21556
21560
21561
21561
21565
21565
21566
21566
21566
21570
21570
21575
21575
21583
21583
21585
21585
21585
21597
21597
21597
21597
21599
21599
21603
21603
21604
21606
21606
21623
21623
21623
21644
21644
21644
21644
21644
21644
21644
21644
21644
21644
21651
21651
21664
21664
21668
21668
21668
21668
21669
21669
21672
21672
21683
21683
21686
21686
21686
21696
21696
21712
21718
21718
21718
21718
21718
21722
21722
21724
21724
21724
21724
21727
21727
21732
21732
21752
21752
21752
21763
21763
21763
21766
21766
21766
21766
21772
21772
21778
21778
21783
21783
21796
21796
21805
21805
21806
21814
21814
21820
21820
21828
21828
21834
21834
21834
21834
21834
21834
21838
21838
21843
21843
21843
21843
21843
21843
21843
21843
21847
21847
21849
21849
21857
21857
21863
21863
21869
21869
21869
21870
21870
21884
21884
21884
21884
21884
21888
21888
21893
21893
21893
21893
21893
21893
21893
21893
21894
21894
21894
21894
21902
21902
21905
21905
21905
21905
21905
21905
21908
21908
21908
21918
21918
21933
21933
21935
21935
21935
21945
21945
21949
21949
21963
21963
21963
21984
21984
21988
21988
21988
22000
22000
22000
22004
22004
22008
22008
22010
22010
22010
22015
22015
22015
22015
22021
22021
22021
22028
22028
22034
22034
22034
22035
22035
22041
22041
22041
22041
22046
22046
22046
22065
22065
22071
22071
22073
22073
22073
22074
22074
22086
22086
22087
22087
22087
22087
22087
22087
22087
22087
22087
22087
22087
22087
22087
22104
22104
22105
22106
22106
22108
22108
22108
22108
22110
22110
22110
22110
22110
22110
22110
22110
22110
22110
22110
22110
22110
22110
22111
22111
22111
22111
22114
22114
22116
22116
22116
22116
22120
22120
22125
22125
22134
22134
22137
22137
22137
22159
22159
22159
22159
22160
22160
22163
22163
22165
22165
22166
22166
22181
22181
22182
22182
22184
22184
22184
22191
22191
22191
22192
22192
22192
22193
22193
22211
22211
22215
22215
22218
22218
22221
22221
22225
22225
22229
22229
22229
22229
22238
22238
22238
22239
22239
22257
22257
22258
22258
22258
22258
22258
22258
22258
22258
22263
22263
22265
22270
22270
22270
22270
22270
22270
22270
22270
22270
22270
22275
22275
22275
22275
22276
22276
22280
22280
22280
22291
22291
22296
22296
22296
22296
22303
22303
22303
22305
22305
22316
22316
22319
22319
22319
22321
22321
22321
22321
22321
22321
22322
22322
22322
22322
22322
22322
22322
22322
22322
22329
22329
22329
22329
22329
22353
22353
22353
22353
22353
22353
22353
22353
22355
22355
22355
22355
22357
22357
22369
22369
22369
22374
22374
22374
22374
22375
22375
22375
22375
22375
22375
22380
22380
22383
22383
22383
22385
22385
22389
22389
22389
22389
22389
22389
22392
22392
22395
22395
22396
22396
22403
22403
22421
22421
22421
22421
22421
22421
22421
22421
22424
22424
22424
22424
22429
22429
22431
22431
22431
22433
22433
22435
22435
22440
22440
22442
22442
22442
22444
22444
22444
22446
22446
22456
22456
22463
22463
22477
22477
22477
22477
22477
22477
22492
22492
22506
22506
22509
22509
22511
22511
22512
22512
22515
22515
22522
22523
22523
22523
22523
22523
22539
22539
22553
22553
22553
22556
22556
22557
22557
22557
22560
22560
22560
22561
22561
22574
22574
22574
22574
22574
22574
22577
22577
22579
22579
22579
22579
22579
22579
22586
22586
22589
22589
22592
22592
22592
22592
22592
22592
22592
22595
22595
22598
22598
22601
22601
22601
22601
22607
22607
22607
22607
22607
22607
22611
22611
22611
22611
22611
22611
22622
22622
22622
22622
22622
22624
22624
22624
22624
22624
22624
22632
22632
22632
22632
22632
22632
22632
22652
22653
22653
22657
22657
22657
22657
22683
22683
22683
22683
22683
22683
22683
22683
22685
22685
22696
22696
22699
22699
22699
22703
22703
22706
22706
22709
22709
22716
22716
22723
22723
22725
22727
22727
22738
22738
22738
22738
22738
22738
22738
22740
22740
22740
22740
22754
22754
22756
22756
22761
22761
22762
22762
22762
22762
22763
22763
22763
22763
22763
22763
22763
22763
22763
22763
22763
22763
22766
22766
22769
22769
22781
22781
22782
22782
22782
22782
22784
22784
22784
22784
22789
22789
22800
22800
22800
22800
22800
22800
22802
22805
22805
22805
22821
22821
22821
22821
22825
22825
22836
22836
22837
22837
22837
22837
22837
22840
22840
22843
22843
22843
22854
22854
22854
22854
22856
22856
22872
22872
22874
22874
22874
22883
22883
22884
22884
22890
22890
22894
22894
22896
22896
22897
22897
22902
22902
22913
22913
22913
22913
22917
22917
22917
22917
22920
22920
22921
22921
22923
22923
22923
22923
22925
22925
22948
22948
22960
22960
22974
22974
22974
22974
22974
22974
22974
22974
22974
22974
22974
22974
22974
22974
22984
22984
22984
22985
22985
22985
22985
22989
22989
22989
22990
22990
22992
22992
22997
22997
22997
22998
22998
23001
23001
23001
23008
23008
23008
23023
23027
23027
23027
23027
23027
23027
23027
23027
23027
23032
23032
23035
23035
23035
23035
23035
23035
23039
23039
23047
23047
23047
23047
23049
23049
23055
23055
23055
23059
23059
23066
23066
23075
23075
23078
23078
23078
23078
23079
23079
23079
23079
23082
23082
23082
23082
23082
23085
23085
23085
23085
23085
23085
23085
23085
23088
23088
23093
23093
23093
23102
23102
23105
23105
23105
23105
23108
23108
23108
23109
23109
23113
23113
23113
23113
23113
23130
23130
23136
23136
23138
23138
23138
23153
23153
23153
23153
23156
23156
23157
23161
23161
23166
23166
23171
23171
23178
23178
23197
23197
23197
23197
23197
23200
23200
23200
23200
23200
23200
23200
23200
23200
23200
23201
23201
23202
23202
23212
23212
23217
23217
23217
23217
23217
23217
23228
23228
23236
23236
23237
23237
23237
23253
23253
23253
23265
23265
23265
23265
23265
23265
23265
23265
23265
23266
23266
23277
23277
23277
23277
23277
23277
23284
23284
23285
23285
23288
23288
23294
23294
23316
23316
23322
23322
23331
23331
23334
23334
23336
23337
23337
23337
23337
23337
23343
23343
23343
23343
23343
23343
23349
23349
23349
23349
23353
23353
23363
23363
23372
23372
23377
23377
23377
23377
23381
23381
23381
23386
23386
23386
23386
23387
23387
23387
23387
23395
23395
23395
23401
23401
23406
23406
23422
23422
23425
23425
23425
23425
23425
23425
23432
23432
23432
23436
23436
23445
23445
23445
23471
23471
23474
23474
23475
23475
23489
23489
23490
23490
23493
23493
23494
23494
23494
23494
23496
23496
23501
23501
23504
23507
23507
23513
23513
23523
23523
23528
23528
23528
23536
23536
23543
23543
23543
23543
23547
23547
23547
23547
23547
23551
23551
23551
23551
23563
23563
23570
23570
23576
23576
23577
23577
23577
23579
23579
23593
23593
23593
23594
23594
23594
23594
23600
23600
23613
23613
23615
23615
23616
23616
23619
23619
23642
23642
23642
23646
23646
23656
23656
23656
23656
23656
23656
23656
23656
23657
23657
23657
23657
23657
23657
23657
23657
23657
23664
23664
23667
23667
23667
23677
23677
23677
23677
23677
23677
23678
23678
23678
23685
23685
23686
23686
23689
23689
23690
23690
23691
23691
23694
23694
23695
23695
23696
23696
23709
23709
23715
23715
23715
23715
23721
23721
23724
23724
23725
23725
23725
23728
23728
23728
23728
23728
23731
23731
23737
23737
23739
23739
23741
23741
23744
23744
23744
23744
23747
23747
23747
23751
23751
23753
23753
23763
23763
23774
23774
23775
23775
23775
23791
23791
23793
23793
23801
23801
23801
23801
23801
23803
23803
23805
23805
23805
23805
23805
23805
23814
23814
23829
23829
23829
23832
23832
23843
23843
23857
23857
23857
23857
23857
23858
23858
23863
23863
23863
23863
23863
23863
23863
23863
23863
23863
23867
23867
23868
23868
23871
23871
23892
23892
23896
23896
23897
23897
23897
23898
23898
23908
23909
23909
23913
23913
23913
23913
23913
23913
23914
23914
23914
23914
23923
23923
23945
23945
23945
23950
23954
23954
23954
23954
23954
23954
23964
23964
23973
23973
23979
23994
23994
23994
23998
23998
24000
24000
24002
24003
24003
24003
24003
24003
24003
24004
24004
24009
24009
24011
24011
24019
24019
24022
24022
24024
24024
24033
24033
24036
24036
24038
24038
24058
24058
24071
24071
24081
24081
24085
24085
24092
24104
24104
24104
24105
24105
24107
24107
24107
24107
24107
24113
24113
24132
24132
24132
24132
24132
24136
24136
24137
24137
24143
24152
24152
24158
24158
24166
24166
24169
24169
24174
24174
24174
24177
24177
24184
24184
24185
24185
24189
24189
24189
24189
24198
24198
24198
24198
24198
24199
24199
24201
24202
24202
24202
24202
24202
24202
24202
24202
24202
24205
24205
24205
24207
24207
24207
24207
24211
24211
24211
24211
24222
24222
24222
24223
24223
24230
24230
24230
24230
24230
24230
24230
24234
24239
24239
24242
24242
24242
24242
24243
24246
24246
24246
24246
24246
24246
24246
24246
24249
24249
24251
24251
24252
24252
24252
24252
24261
24261
24261
24261
24261
24261
24261
24261
24267
24267
24267
24267
24278
24278
24278
24278
24281
24281
24285
24285
24291
24291
24291
24291
24291
24301
24301
24306
24306
24312
24312
24317
24317
24318
24318
24323
24323
24323
24333
24333
24350
24355
24355
24358
24368
24368
24368
24392
24392
24402
24402
24405
24405
24405
24407
24407
24412
24412
24413
24413
24415
24415
24421
24421
24434
24437
24437
24437
24437
24440
24440
24447
24447
24447
24447
24447
24451
24451
24455
24469
24469
24470
24470
24470
24470
24470
24470
24470
24472
24472
24472
24480
24480
24480
24480
24480
24480
24481
24481
24495
24495
24495
24495
24495
24495
24496
24496
24497
24497
24500
24500
24501
24501
24501
24501
24501
24501
24501
24505
24505
24505
24505
24514
24514
24524
24524
24524
24528
24528
24529
24529
24533
24533
24547
24547
24547
24547
24569
24569
24569
24569
24578
24585
24585
24586
24586
24587
24587
24589
24589
24590
24590
24590
24590
24590
24595
24595
24597
24597
24597
24603
24603
24608
24608
24615
24615
24617
24617
24631
24631
24632
24632
24648
24648
24648
24648
24655
24655
24655
24655
24667
24670
24670
24684
24684
24687
24687
24687
24687
24687
24687
24688
24694
24694
24695
24695
24706
24706
24710
24710
24717
24724
24724
24724
24724
24724
24724
24730
24730
24730
24730
24731
24731
24738
24738
24742
24742
24743
24743
24751
24751
24751
24756
24756
24757
24757
24758
24758
24764
24764
24765
24765
24771
24771
24794
24794
24795
24795
24797
24797
24802
24802
24806
24806
24806
24806
24807
24815
24815
24816
24816
24824
24824
24832
24832
24832
24832
24834
24834
24834
24835
24835
24835
24843
24843
24846
24859
24859
24859
24859
24865
24865
24868
24868
24881
24881
24881
24881
24881
24881
24881
24881
24881
24881
24881
24881
24881
24881
24881
24881
24881
24881
24881
24881
24881
24885
24885
24887
24887
24887
24887
24895
24895
24895
24895
24895
24897
24897
24897
24897
24904
24904
24904
24904
24904
24913
24913
24914
24914
24914
24914
24914
24914
24932
24932
24933
24933
24933
24933
24935
24935
24937
24937
24938
24938
24939
24939
24939
24944
24944
24944
24944
24944
24944
24944
24944
24944
24944
24945
24945
24948
24948
24948
24948
24950
24950
24958
24958
24958
24966
24966
24969
24969
24972
24972
24972
24972
24972
24972
24976
24976
24986
24986
24986
24986
24986
24986
24988
24988
24991
24991
24991
24991
24991
24991
24992
24995
24995
25001
25001
25001
25001
25010
25010
25010
25010
25010
25010
25010
25010
25010
25010
25010
25010
25010
25010
25021
25021
25035
25035
25041
25041
25052
25052
25055
25055
25062
25062
25069
25069
25069
25077
25077
25077
25083
25083
25094
25103
25103
25104
25104
25104
25112
25112
25113
25113
25115
25117
25117
25117
25120
25120
25126
25126
25127
25127
25128
25128
25132
25132
25132
25132
25132
25136
25157
25157
25157
25157
25157
25157
25157
25157
25157
25165
25165
25165
25165
25167
25167
25167
25167
25167
25173
25173
25174
25174
25175
25175
25180
25180
25186
25186
25186
25186
25186
25186
25186
25188
25188
25190
25190
25216
25216
25216
25216
25216
25216
25221
25221
25221
25221
25221
25231
25231
25231
25231
25232
25232
25233
25239
25239
25251
25251
25251
25251
25251
25252
25252
25252
25252
25256
25256
25256
25274
25276
25276
25276
25276
25277
25277
25283
25283
25283
25283
25292
25292
25300
25303
25306
25306
25306
25306
25313
25313
25318
25318
25326
25326
25338
25338
25339
25339
25341
25341
25341
25341
25341
25343
25343
25347
25347
25353
25353
25361
25361
25361
25361
25361
25361
25369
25369
25390
25390
25390
25392
25392
25392
25395
25396
25396
25397
25397
25406
25406
25406
25414
25414
25414
25415
25415
25416
25416
25426
25426
25426
25444
25444
25447
25447
25447
25452
25452
25452
25467
25467
25468
25468
25478
25478
25478
25478
25478
25478
25490
25490
25490
25490
25490
25490
25490
25490
25494
25494
25501
25501
25501
25513
25513
25513
25513
25513
25513
25513
25513
25515
25515
25515
25528
25528
25528
25528
25535
25535
25535
25540
25540
25540
25542
25542
25544
25544
25544
25544
25563
25564
25564
25564
25577
25577
25580
25580
25587
25587
25594
25594
25596
25596
25602
25602
25602
25602
25602
25613
25613
25614
25614
25614
25614
25614
25614
25616
25616
25616
25616
25623
25623
25623
25625
25625
25625
25636
25636
25636
25638
25638
25638
25642
25642
25652
25652
25665
25665
25665
25665
25668
25668
25670
25670
25671
25671
25678
25678
25679
25679
25680
25680
25683
25687
25687
25701
25701
25702
25702
25711
25711
25717
25717
25718
25720
25720
25721
25721
25728
25728
25734
25734
25752
25752
25763
25763
25770
25770
25770
25770
25780
25782
25782
25786
25786
25786
25786
25786
25786
25792
25792
25794
25794
25801
25801
25803
25803
25803
25805
25813
25813
25814
25814
25816
25816
25817
25817
25817
25817
25817
25817
25817
25817
25817
25817
25820
25820
25823
25823
25825
25825
25841
25841
25841
25841
25841
25841
25845
25845
25853
25853
25859
25859
25867
25867
25873
25873
25875
25875
25882
25882
25882
25882
25882
25882
25882
25893
25893
25893
25893
25893
25893
25893
25893
25893
25899
25900
25900
25904
25904
25904
25904
25904
25945
25945
25945
25945
25953
25953
25953
25953
25957
25957
25957
25957
25960
25960
25965
25965
25965
25965
25965
25965
25971
25971
25981
25997
25997
26002
26002
26002
26002
26013
26013
26014
26014
26014
26014
26014
26015
26015
26015
26015
26026
26026
26033
26033
26033
26038
26038
26040
26040
26040
26040
26040
26040
26040
26057
26057
26058
26058
26060
26063
26063
26063
26063
26066
26066
26067
26067
26081
26081
26081
26092
26092
26093
26093
26093
26098
26098
26098
26098
26101
26101
26102
26102
26117
26117
26121
26121
26121
26121
26121
26121
26122
26122
26125
26125
26133
26133
26133
26136
26136
26136
26136
26136
26137
26137
26141
26141
26148
26148
26151
26151
26151
26155
26155
26155
26155
26155
26155
26155
26155
26155
26155
26155
26155
26166
26166
26166
26175
26175
26176
26176
26179
26179
26181
26181
26195
26195
26195
26195
26197
26197
26197
26204
26204
26204
26204
26204
26204
26210
26210
26216
26216
26218
26218
26219
26219
26219
26219
26219
26219
26230
26230
26234
26234
26234
26234
26243
26243
26243
26243
26246
26246
26247
26247
26250
26250
26250
26250
26251
26251
26256
26256
26259
26259
26271
26271
26273
26273
26273
26273
26295
26295
26295
26295
26313
26313
26313
26313
26313
26314
26314
26314
26314
26320
26320
26320
26320
26326
26326
26328
26328
26328
26329
26329
26329
26329
26331
26331
26331
26331
26331
26331
26331
26331
26345
26345
26359
26359
26359
26359
26364
26364
26364
26364
26364
26364
26364
26368
26368
26377
26377
26383
26383
26383
26391
26391
26395
26395
26397
26397
26397
26399
26399
26399
26399
26399
26399
26399
26414
26414
26414
26414
26430
26430
26434
26434
26434
26434
26437
26437
26437
26437
26438
26438
26461
26461
26461
26461
26461
26461
26465
26465
26465
26473
26473
26475
26475
26475
26495
26495
26496
26496
26496
26497
26497
26497
26497
26498
26498
26498
26498
26498
26499
26499
26499
26499
26503
26503
26509
26509
26509
26511
26511
26516
26516
26516
26516
26516
26516
26516
26521
26521
26521
26526
26526
26526
26532
26532
26542
26542
26542
26542
26545
26545
26559
26559
26562
26562
26563
26563
26564
26575
26575
26577
26577
26577
26577
26577
26589
26589
26589
26591
26591
26591
26591
26593
26593
26593
26593
26593
26593
26593
26593
26593
26593
26595
26595
26604
26604
26604
26604
26604
26608
26608
26608
26611
26611
26611
26611
26617
26617
26619
26621
26621
26628
26628
26633
26633
26637
26637
26637
26658
26660
26660
26660
26664
26664
26667
26667
26667
26667
26667
26677
26686
26686
26686
26686
26686
26686
26686
26691
26691
26693
26693
26693
26693
26693
26693
26693
26693
26693
26693
26693
26693
26693
26693
26693
26694
26694
26694
26698
26698
26698
26698
26698
26698
26698
26703
26703
26710
26719
26719
26722
26722
26723
26723
26723
26723
26739
26739
26739
26740
26740
26740
26743
26743
26743
26747
26747
26747
26750
26754
26754
26756
26756
26770
26770
26770
26770
26773
26773
26779
26779
26779
26779
26783
26783
26783
26789
26789
26794
26794
26798
26798
26802
26802
26803
26803
26803
26805
26805
26813
26816
26816
26817
26817
26817
26819
26821
26821
26829
26829
26835
26835
26835
26837
26837
26837
26837
26837
26843
26848
26848
26848
26855
26855
26857
26857
26871
26871
26871
26871
26871
26871
26871
26871
26871
26874
26874
26883
26883
26883
26885
26885
26888
26888
26888
26888
26888
26888
26893
26893
26897
26897
26897
26898
26898
26911
26911
26920
26920
26920
26920
26920
26920
26920
26920
26920
26920
26920
26920
26920
26920
26922
26922
26923
26923
26926
26926
26928
26928
26928
26928
26931
26931
26933
26933
26936
26936
26938
26938
26938
26938
26938
26938
26938
26938
26938
26938
26938
26938
26939
26939
26960
26960
26972
26972
26978
26978
26980
26980
26989
26989
26989
26989
26990
26998
26998
27000
27000
27001
27001
27003
27003
27012
27012
27012
27015
27017
27017
27017
27017
27026
27026
27042
27050
27050
27054
27054
27055
27055
27056
27056
27057
27057
27059
27059
27076
27076
27076
27076
27079
27079
27082
27082
27106
27106
27106
27106
27106
27106
27106
27108
27108
27111
27111
27113
27113
27123
27123
27125
27125
27130
27130
27132
27133
27133
27133
27134
27134
27134
27134
27142
27142
27142
27142
27142
27142
27142
27142
27142
27146
27146
27146
27146
27146
27146
27146
27146
27149
27149
27149
27156
27156
27156
27156
27180
27180
27180
27180
27194
27194
27203
27203
27240
27240
27242
27242
27244
27244
27246
27256
27256
27256
27261
27261
27268
27268
27273
27273
27273
27273
27278
27278
27281
27281
27281
27287
27287
27287
27289
27289
27289
27291
27291
27291
27291
27293
27293
27293
27293
27296
27296
27306
27306
27308
27308
27308
27308
27313
27313
27322
27322
27324
27324
27326
27326
27329
27329
27329
27334
27334
27334
27334
27339
27339
27340
27340
27341
27341
27348
27348
27353
27353
27356
27356
27364
27364
27388
27388
27390
27390
27396
27396
27396
27401
27401
27408
27408
27409
27409
27420
27421
27421
27421
27421
27421
27421
27421
27424
27424
27427
27427
27427
27427
27432
27432
27432
27440
27440
27442
27442
27446
27446
27453
27453
27465
27465
27467
27467
27467
27467
27470
27470
27479
27479
27486
27486
27486
27486
27486
27494
27494
27494
27498
27498
27500
27500
27501
27501
27501
27501
27501
27501
27515
27515
27518
27518
27518
27518
27523
27523
27523
27523
27524
27524
27527
27527
27530
27531
27531
27531
27539
27542
27542
27545
27545
27546
27546
27546
27546
27565
27565
27576
27576
27576
27582
27582
27582
27582
27582
27582
27582
27586
27586
27586
27586
27586
27586
27595
27603
27603
27603
27603
27608
27608
27610
27610
27620
27621
27621
27630
27630
27630
27632
27632
27634
27634
27636
27642
27642
27642
27642
27642
27642
27647
27647
27654
27654
27658
27658
27663
27663
27688
27688
27688
27688
27698
27698
27698
27704
27706
27706
27706
27706
27706
27706
27709
27709
27710
27710
27710
27715
27715
27719
27719
27720
27720
27728
27728
27728
27728
27728
27728
27728
27731
27731
27738
27738
27743
27743
27743
27743
27743
27743
27743
27743
27743
27743
27743
27747
27747
27752
27752
27753
27753
27757
27757
27764
27764
27764
27770
27770
27770
27770
27772
27772
27785
27785
27785
27786
27786
27793
27793
27794
27794
27800
27800
27801
27801
27801
27801
27804
27804
27812
27812
27818
27818
27818
27818
27827
27828
27828
27828
27828
27830
27830
27830
27830
27833
27833
27833
27841
27841
27849
27849
27850
27850
27856
27856
27857
27857
27859
27860
27860
27864
27864
27866
27866
27866
27868
27868
27872
27872
27872
27872
27875
27875
27875
27875
27875
27885
27885
27885
27885
27899
27899
27907
27907
27909
27909
27912
27912
27913
27913
27913
27913
27916
27916
27916
27916
27916
27920
27920
27921
27921
27921
27921
27921
27921
27926
27926
27952
27952
27958
27958
27965
27965
27965
27965
27965
27965
27972
27977
27977
27979
27979
27979
27979
27979
27980
27980
27980
27982
27982
27982
27982
27991
27991
27997
28008
28008
28008
28008
28011
28011
28016
28016
28016
28016
28016
28023
28023
28023
28023
28023
28026
28026
28038
28038
28040
28043
28043
28043
28043
28052
28052
28052
28055
28055
28055
28055
28055
28057
28057
28072
28072
28072
28072
28073
28073
28073
28073
28076
28076
28084
28084
28085
28085
28087
28087
28087
28088
28088
28089
28089
28089
28097
28097
28098
28098
28108
28108
28110
28110
28113
28113
28113
28121
28121
28123
28123
28124
28124
28124
28124
28124
28124
28125
28125
28125
28132
28132
28132
28132
28138
28138
28141
28141
28151
28151
28153
28153
28154
28154
28154
28154
28154
28154
28154
28162
28162
28162
28162
28162
28162
28166
28169
28169
28171
28171
28187
28187
28187
28187
28190
28190
28194
28194
28194
28194
28198
28198
28205
28205
28209
28209
28210
28210
28211
28211
28211
28215
28215
28215
28220
28220
28220
28220
28233
28233
28236
28255
28255
28268
28268
28271
28271
28271
28271
28285
28285
28288
28288
28288
28288
28290
28290
28297
28297
28301
28301
28303
28303
28305
28305
28309
28309
28309
28314
28314
28314
28326
28326
28357
28357
28357
28357
28357
28357
28357
28358
28358
28362
28362
28362
28362
28372
28375
28375
28380
28390
28390
28394
28394
28395
28395
28395
28395
28395
28408
28408
28408
28408
28416
28416
28416
28416
28421
28421
28426
28426
28429
28429
28429
28429
28429
28429
28429
28436
28436
28438
28439
28447
28447
28454
28454
28455
28455
28456
28456
28470
28470
28470
28470
28470
28470
28472
28472
28473
28473
28475
28475
28489
28489
28489
28491
28491
28491
28491
28497
28497
28500
28500
28507
28507
28512
28512
28512
28512
28515
28515
28521
28521
28521
28521
28521
28523
28523
28538
28538
28538
28538
28544
28544
28544
28560
28560
28560
28560
28563
28563
28563
28563
28569
28570
28571
28571
28581
28581
28586
28586
28587
28589
28589
28589
28593
28593
28606
28606
28606
28615
28615
28615
28615
28615
28615
28615
28615
28615
28615
28615
28624
28631
28631
28633
28633
28633
28633
28633
28633
28633
28633
28633
28636
28636
28652
28652
28653
28653
28656
28656
28656
28656
28656
28656
28670
28670
28670
28678
28678
28678
28678
28678
28683
28683
28683
28683
28683
28683
28683
28683
28683
28683
28683
28683
28702
28702
28702
28702
28702
28710
28710
28743
28743
28743
28745
28745
28754
28754
28759
28759
28760
28760
28760
28761
28761
28764
28764
28764
28764
28764
28785
28785
28785
28785
28785
28788
28788
28797
28797
28799
28799
28825
28825
28825
28828
28828
28837
28837
28844
28844
28844
28844
28844
28844
28844
28844
28848
28848
28850
28850
28852
28852
28852
28862
28862
28862
28865
28865
28879
28880
28880
28880
28880
28880
28883
28883
28883
28883
28883
28883
28884
28884
28884
28892
28892
28896
28896
28896
28896
28899
28899
28908
28908
28914
28914
28915
28915
28915
28915
28915
28922
28922
28922
28931
28931
28936
28936
28936
28936
28936
28936
28936
28936
28949
28949
28949
28949
28950
28950
28950
28950
28951
28951
28953
28953
28965
28965
28977
28977
28985
28985
28990
28990
28990
28990
28992
28992
28992
28992
28997
28997
29000
29000
29000
29000
29011
29011
29020
29020
29020
29026
29026
29038
29038
29038
29048
29048
29053
29053
29058
29058
29058
29058
29058
29058
29058
29065
29065
29072
29072
29073
29073
29081
29081
29088
29088
29090
29099
29099
29099
29099
29107
29107
29108
29108
29119
29119
29121
29123
29123
29123
29128
29130
29130
29153
29153
29153
29153
29153
29157
29157
29160
29160
29164
29164
29168
29168
29168
29168
29170
29170
29170
29172
29172
29172
29174
29174
29176
29176
29178
29178
29183
29183
29183
29187
29187
29188
29188
29188
29188
29195
29195
29195
29195
29197
29197
29197
29197
29198
29198
29198
29198
29198
29199
29199
29199
29199
29205
29205
29208
29208
29221
29221
29221
29221
29221
29222
29222
29222
29222
29223
29223
29223
29231
29231
29231
29231
29238
29238
29238
29238
29238
29238
29238
29238
29252
29252
29257
29257
29267
29267
29267
29267
29267
29267
29267
29276
29276
29287
29287
29303
29303
29314
29314
29314
29314
29314
29317
29321
29321
29325
29325
29325
29327
29327
29329
29329
29329
29341
29341
29341
29341
29343
29343
29345
29345
29360
29360
29360
29361
29361
29366
29366
29379
29379
29379
29379
29379
29379
29382
29382
29385
29385
29393
29393
29393
29398
29398
29400
29400
29406
29406
29406
29412
29412
29412
29420
29420
29425
29425
29428
29428
29429
29429
29436
29436
29436
29445
29445
29445
29445
29447
29447
29447
29450
29450
29450
29450
29456
29456
29460
29460
29461
29461
29462
29462
29469
29469
29469
29469
29470
29470
29473
29473
29473
29473
29473
29473
29473
29473
29473
29473
29473
29473
29473
29473
29473
29473
29473
29473
29473
29473
29473
29473
29473
29473
29473
29473
29473
29473
29473
29473
29473
29473
29487
29487
29496
29496
29496
29496
29500
29500
29501
29501
29505
29505
29510
29522
29522
29522
29524
29526
29527
29527
29528
29528
29529
29529
29529
29536
29536
29546
29548
29548
29550
29550
29550
29550
29550
29550
29557
29557
29557
29557
29557
29557
29558
29558
29560
29560
29565
29565
29572
29572
29574
29574
29576
29576
29576
29576
29582
29582
29582
29582
29586
29586
29594
29594
29594
29594
29606
29606
29606
29607
29607
29612
29612
29622
29622
29627
29627
29628
29628
29634
29634
29634
29634
29634
29640
29640
29640
29657
29657
29657
29659
29659
29659
29659
29660
29660
29663
29663
29670
29670
29670
29681
29681
29690
29690
29690
29692
29692
29696
29696
29696
29696
29699
29699
29710
29710
29711
29711
29719
29719
29719
29719
29727
29727
29731
29731
29731
29731
29731
29731
29732
29732
29732
29735
29735
29746
29746
29746
29751
29755
29755
29755
29764
29764
29769
29769
29772
29772
29772
29777
29777
29777
29783
29783
29795
29795
29795
29795
29795
29795
29795
29795
29797
29797
29797
29803
29807
29807
29807
29808
29808
29811
29811
29811
29820
29820
29843
29843
29843
29843
29846
29846
29849
29872
29872
29872
29874
29874
29876
29876
29876
29876
29884
29884
29884
29887
29887
29887
29887
29892
29892
29892
29892
29893
29893
29893
29893
29893
29893
29893
29893
29896
29896
29896
29896
29928
29928
29932
29932
29935
29935
29935
29935
29935
29935
29935
29935
29935
29935
29945
29945
29946
29946
29946
29946
29946
29966
29966
29976
29976
29976
29980
29982
29982
29983
29983
29983
29983
29983
29983
29983
29983
29986
29986
29995
29995
29995
30004
30004
30013
30013
30033
30033
30035
30035
30035
30035
30035
30035
30035
30035
30035
30035
30043
30043
30045
30045
30045
30047
30047
30049
30049
30051
30051
30066
30066
30069
30069
30070
30070
30079
30079
30079
30079
30079
30079
30079
30079
30079
30079
30079
30079
30079
30079
30082
30082
30085
30085
30085
30085
30088
30088
30088
30088
30088
30088
30095
30095
30096
30096
30096
30096
30100
30104
30104
30104
30104
30104
30104
30106
30106
30109
30109
30120
30120
30127
30127
30134
30136
30136
30138
30138
30138
30143
30143
30147
30147
30147
30156
30156
30156
30163
30163
30168
30168
30168
30168
30172
30172
30174
30174
30174
30184
30184
30185
30185
30188
30188
30188
30192
30192
30192
30192
30192
30192
30194
30194
30194
30196
30196
30196
30206
30206
30206
30216
30216
30216
30216
30219
30219
30225
30225
30225
30231
30231
30237
30237
30237
30242
30242
30248
30254
30254
30259
30259
30264
30264
30264
30264
30271
30271
30275
30275
30275
30275
30275
30275
30283
30283
30285
30285
30287
30287
30297
30297
30300
30300
30305
30305
30309
30309
30317
30317
30317
30317
30328
30328
30328
30340
30340
30353
30353
30355
30355
30355
30355
30355
30355
30355
30355
30363
30366
30366
30366
30371
30371
30371
30371
30374
30374
30381
30381
30381
30386
30386
30395
30395
30400
30400
30402
30402
30403
30403
30404
30404
30413
30413
30414
30414
30416
30416
30436
30436
30445
30445
30445
30445
30445
30445
30445
30445
30445
30445
30445
30445
30445
30445
30447
30447
30451
30451
30460
30460
30466
30466
30469
30469
30469
30469
30469
30487
30487
30492
30492
30496
30496
30496
30501
30501
30503
30503
30503
30503
30506
30506
30506
30506
30506
30506
30506
30507
30507
30511
30511
30511
30522
30522
30522
30522
30523
30523
30527
30527
30531
30531
30531
30533
30533
30534
30534
30536
30536
30536
30536
30536
30536
30538
30538
30538
30538
30538
30543
30543
30549
30549
30554
30554
30556
30556
30559
30559
30565
30565
30565
30576
30585
30585
30585
30585
30587
30587
30591
30594
30594
30594
30595
30595
30595
30596
30596
30596
30597
30597
30600
30600
30600
30601
30601
30615
30616
30616
30616
30619
30619
30620
30620
30626
30626
30626
30626
30636
30636
30645
30645
30645
30654
30654
30654
30654
30654
30654
30654
30654
30655
30655
30659
30659
30659
30659
30660
30660
30675
30675
30675
30675
30679
30679
30679
30681
30681
30681
30685
30685
30685
30685
30693
30693
30693
30698
30698
30699
30699
30699
30699
30699
30699
30699
30699
30703
30703
30703
30703
30707
30707
30707
30707
30719
30719
30729
30736
30740
30740
30742
30742
30750
30750
30753
30753
30753
30753
30753
30761
30761
30761
30761
30761
30761
30761
30761
30761
30761
30761
30761
30762
30762
30766
30766
30766
30766
30776
30776
30784
30784
30792
30792
30795
30795
30797
30797
30799
30799
30799
30801
30801
30801
30812
30812
30812
30812
30817
30817
30817
30819
30819
30820
30820
30820
30821
30821
30821
30821
30829
30829
30836
30836
30845
30845
30849
30849
30849
30850
30850
30851
30851
30851
30859
30859
30862
30862
30863
30863
30864
30864
30869
30869
30869
30869
30869
30869
30869
30869
30870
30870
30870
30875
30875
30875
30875
30884
30884
30897
30897
30897
30897
30897
30898
30898
30899
30899
30901
30902
30902
30902
30909
30909
30912
30912
30913
30913
30913
30918
30918
30918
30938
30938
30938
30942
30942
30942
30942
30942
30942
30942
30942
30948
30948
30957
30957
30958
30958
30958
30958
30960
30960
30960
30960
30960
30960
30966
30966
30967
30967
30971
30971
30980
30980
30991
30991
30994
30994
30994
30994
30994
30996
30996
30999
30999
30999
30999
31010
31010
31028
31028
31038
31038
31042
31042
31042
31045
31047
31047
31057
31057
31058
31058
31071
31071
31071
31071
31071
31071
31072
31072
31072
31072
31072
31080
31080
31088
31088
31088
31088
31088
31088
31114
31114
31126
31134
31134
31147
31147
31148
31148
31155
31155
31162
31162
31165
31165
31166
31166
31166
31166
31166
31166
31169
31169
31169
31174
31174
31179
31179
31179
31179
31179
31180
31180
31182
31182
31188
31189
31189
31189
31189
31191
31191
31192
31192
31193
31193
31194
31194
31197
31197
31205
31205
31206
31206
31206
31208
31208
31209
31235
31235
31236
31236
31242
31242
31242
31249
31249
31249
31256
31256
31256
31262
31262
31262
31262
31262
31262
31265
31265
31265
31265
31265
31265
31268
31268
31270
31270
31273
31273
31283
31283
31285
31285
31285
31285
31294
31295
31301
31301
31311
31311
31311
31311
31311
31311
31311
31311
31313
31313
31322
31322
31323
31323
31324
31324
31325
31325
31325
31344
31344
31345
31345
31345
31345
31345
31356
31356
31356
31356
31358
31358
31361
31361
31361
31361
31361
31373
31373
31373
31373
31377
31377
31387
31387
31387
31387
31391
31391
31403
31403
31403
31403
31405
31405
31412
31412
31420
31420
31420
31424
31429
31429
31437
31437
31437
31437
31437
31437
31437
31441
31441
31441
31441
31441
31441
31441
31442
31445
31463
31463
31465
31477
31477
31482
31482
31485
31485
31493
31493
31494
31494
31506
31506
31514
31514
31514
31517
31517
31518
31518
31534
31534
31537
31537
31539
31539
31539
31551
31551
31551
31559
31559
31559
31562
31562
31564
31564
31565
31566
31566
31566
31566
31566
31572
31572
31581
31581
31587
31587
31593
31593
31600
31600
31611
31611
31616
31616
31616
31618
31618
31633
31633
31634
31634
31638
31638
31638
31648
31648
31649
31649
31649
31649
31663
31663
31663
31663
31664
31672
31672
31672
31672
31672
31672
31672
31672
31672
31672
31672
31672
31672
31672
31672
31676
31676
31677
31677
31685
31685
31685
31685
31685
31685
31698
31698
31699
31699
31702
31702
31706
31706
31708
31708
31711
31711
31712
31712
31714
31714
31719
31719
31719
31727
31727
31734
31734
31739
31739
31739
31739
31741
31741
31745
31745
31745
31745
31748
31748
31748
31748
31748
31750
31750
31752
31752
31752
31752
31766
31766
31775
31775
31783
31783
31783
31783
31783
31783
31786
31786
31803
31803
31805
31805
31805
31811
31816
31816
31822
31822
31826
31826
31826
31829
31829
31832
31832
31835
31835
31835
31841
31841
31842
31842
31852
31852
31854
31854
31860
31860
31875
31875
31877
31877
31893
31893
31893
31894
31894
31894
31898
31898
31898
31898
31903
31903
31903
31903
31904
31904
31922
31922
31929
31932
31932
31943
31943
31943
31943
31943
31943
31945
31945
31951
31951
31955
31955
31955
31955
31955
31955
31955
31955
31959
31959
31973
31973
31973
31973
31978
31978
31978
31978
31978
31978
31984
31984
31985
31985
31985
31993
31993
31996
31996
31996
31996
31998
31998
31999
31999
32021
32021
32021
32025
32025
32026
32026
32026
32026
32026
32026
32031
32031
32031
32043
32043
32052
32052
32055
32055
32055
32055
32057
32057
32061
32061
32061
32062
32062
32062
32063
32063
32069
32069
32069
32069
32069
32069
32069
32071
32071
32076
32084
32084
32085
32085
32087
32087
32097
32097
32097
32098
32098
32105
32105
32105
32105
32105
32112
32112
32112
32112
32112
32120
32124
32124
32124
32125
32125
32133
32133
32137
32137
32137
32137
32137
32137
32137
32137
32137
32137
32137
32138
32138
32138
32138
32138
32142
32142
32147
32147
32147
32147
32147
32147
32147
32147
32152
32152
32153
32153
32155
32155
32155
32155
32155
32160
32160
32169
32169
32169
32170
32170
32170
32170
32170
32173
32173
32173
32173
32173
32175
32175
32179
32179
32181
32181
32182
32182
32184
32184
32192
32192
32193
32193
32197
32197
32197
32197
32201
32201
32201
32201
32201
32201
32205
32205
32205
32205
32205
32205
32205
32211
32211
32214
32214
32218
32218
32218
32218
32225
32225
32225
32225
32225
32225
32225
32225
32225
32225
32225
32225
32226
32226
32235
32235
32235
32238
32241
32241
32241
32242
32242
32252
32252
32257
32257
32267
32267
32275
32275
32285
32285
32288
32288
32293
32293
32296
32296
32296
32296
32296
32296
32311
32311
32311
32311
32311
32311
32318
32318
32321
32321
32324
32324
32324
32324
32324
32325
32325
32329
32329
32337
32349
32350
32350
32350
32355
32355
32355
32378
32378
32381
32382
32382
32382
32382
32383
32383
32387
32387
32387
32387
32390
32390
32390
32393
32394
32394
32394
32394
32394
32394
32397
32397
32400
32400
32401
32401
32409
32409
32413
32414
32414
32414
32414
32426
32426
32426
32428
32428
32428
32428
32440
32440
32443
32443
32445
32445
32445
32449
32449
32453
32453
32453
32456
32456
32460
32469
32469
32469
32470
32470
32471
32471
32480
32480
32483
32483
32483
32488
32488
32488
32494
32494
32499
32499
32502
32502
32506
32506
32508
32508
32508
32511
32511
32519
32519
32531
32531
32532
32532
32532
32532
32533
32533
32536
32536
32539
32539
32540
32540
32543
32543
32549
32549
32549
32549
32549
32551
32551
32558
32563
32563
32563
32563
32564
32564
32589
32589
32589
32595
32595
32595
32599
32599
32608
32608
32611
32618
32618
32618
32618
32618
32618
32637
32637
32637
32637
32638
32638
32641
32641
32645
32645
32645
32645
32645
32648
32648
32648
32648
32648
32648
32648
32659
32659
32662
32662
32662
32662
32663
32663
32663
32663
32666
32666
32671
32671
32671
32671
32672
32672
32672
32672
32672
32672
32672
32672
32678
32682
32682
32682
32682
32697
32697
32697
32700
32700
32708
32708
32708
32714
32714
32725
32732
32732
32735
32735
32738
32738
32744
32744
32745
32745
32755
32755
32760
32760
32762
32763
32763
32763
32763
32768
32785
32785
32791
32791
32791
32791
32791
32793
32793
32793
32793
32797
32800
32800
32805
32806
32806
32806
32806
32806
32810
32810
32815
32815
32815
32815
32815
32815
32815
32831
32831
32833
32833
32837
32837
32840
32840
32840
32840
32843
32843
32843
32843
32848
32848
32848
32866
32866
32867
32867
32894
32894
32896
32896
32896
32896
32896
32896
32896
32896
32896
32896
32896
32899
32899
32899
32899
32902
32902
32907
32907
32910
32910
32911
32911
32925
32925
32927
32927
32929
32929
32931
32931
32934
32934
32934
32934
32934
32934
32934
32934
32938
32938
32938
32941
32941
32948
32948
32948
32948
32971
32971
32971
32971
32980
32980
32984
32984
32992
32992
33002
33002
33002
33003
33003
33006
33006
33006
33014
33014
33023
33031
33031
33037
33037
33041
33041
33043
33043
33047
33047
33047
33047
33047
33047
33057
33057
33060
33060
33074
33074
33076
33076
33077
33077
33077
33077
33091
33091
33091
33091
33091
33091
33091
33091
33091
33094
33094
33095
33100
33100
33100
33100
33103
33103
33103
33115
33115
33116
33116
33116
33116
33127
33127
33127
33140
33140
33140
33140
33140
33147
33147
33156
33156
33169
33169
33169
33169
33169
33174
33174
33174
33174
33188
33188
33190
33190
33190
33190
33197
33197
33199
33208
33209
33209
33210
33210
33211
33211
33211
33211
33220
33220
33224
33224
33233
33233
33236
33236
33239
33239
33240
33240
33244
33244
33245
33245
33248
33248
33251
33251
33251
33251
33251
33251
33254
33254
33254
33255
33255
33255
33258
33258
33258
33271
33271
33279
33279
33279
33297
33297
33300
33300
33300
33300
33309
33309
33321
33321
33322
33324
33324
33325
33325
33325
33330
33330
33334
33334
33335
33335
33339
33339
33341
33341
33341
33349
33349
33351
33351
33352
33352
33355
33355
33356
33356
33356
33364
33364
33366
33366
33366
33366
33366
33379
33379
33379
33388
33388
33388
33389
33389
33398
33403
33403
33404
33405
33405
33405
33409
33409
33409
33409
33410
33410
33410
33415
33415
33421
33421
33421
33428
33428
33431
33431
33435
33435
33436
33436
33436
33436
33436
33437
33437
33438
33438
33442
33442
33449
33449
33457
33457
33466
33466
33471
33471
33471
33475
33475
33482
33482
33487
33487
33487
33493
33493
33507
33507
33507
33514
33514
33515
33515
33515
33515
33515
33515
33521
33521
33521
33521
33521
33521
33523
33523
33523
33526
33528
33533
33533
33533
33540
33540
33546
33546
33546
33548
33548
33549
33549
33550
33550
33555
33555
33559
33559
33560
33560
33560
33560
33560
33566
33566
33571
33571
33574
33574
33574
33596
33596
33596
33605
33605
33605
33605
33609
33609
33614
33614
33614
33615
33615
33618
33618
33621
33621
33623
33623
33634
33634
33643
33643
33645
33645
33645
33645
33645
33645
33645
33645
33655
33655
33665
33665
33666
33675
33676
33676
33680
33680
33680
33683
33683
33685
33685
33687
33687
33693
33693
33693
33693
33697
33697
33710
33710
33710
33725
33725
33725
33736
33736
33737
33737
33737
33759
33759
33759
33761
33761
33772
33772
33774
33774
33774
33774
33775
33775
33779
33779
33779
33779
33779
33791
33791
33794
33794
33797
33797
33798
33798
33803
33803
33805
33805
33827
33827
33827
33829
33829
33835
33835
33835
33835
33835
33838
33838
33845
33845
33845
33864
33864
33868
33868
33868
33868
33870
33870
33871
33871
33874
33874
33876
33876
33884
33884
33884
33884
33884
33894
33894
33900
33900
33902
33902
33909
33909
33909
33909
33914
33914
33927
33927
33927
33931
33931
33932
33932
33932
33932
33934
33934
33940
33940
33940
33940
33940
33940
33940
33940
33941
33957
33957
33958
33958
33968
33968
33978
33978
33982
33982
33982
33982
33982
33983
33983
33986
33986
33988
33991
33991
33991
33996
33996
34002
34002
34017
34017
34019
34019
34019
34019
34028
34028
34029
34029
34042
34042
34045
34045
34050
34050
34058
34058
34060
34060
34070
34070
34070
34070
34070
34070
34081
34082
34086
34086
34090
34090
34103
34103
34104
34104
34104
34110
34110
34116
34116
34120
34120
34122
34122
34129
34129
34130
34130
34133
34133
34139
34139
34143
34143
34143
34143
34144
34144
34148
34148
34148
34148
34149
34149
34149
34158
34158
34158
34158
34158
34158
34158
34158
34163
34163
34163
34163
34167
34167
34171
34171
34174
34174
34177
34177
34177
34179
34179
34179
34179
34179
34196
34196
34198
34198
34203
34203
34203
34203
34206
34206
34207
34207
34207
34207
34207
34207
34209
34209
34211
34211
34211
34213
34213
34213
34213
34219
34219
34219
34226
34226
34226
34226
34239
34239
34245
34245
34246
34251
34251
34252
34252
34252
34252
34253
34253
34264
34264
34267
34272
34272
34272
34272
34283
34283
34283
34286
34286
34291
34291
34304
34304
34307
34307
34307
34307
34307
34307
34307
34331
34331
34332
34332
34332
34340
34340
34340
34342
34342
34342
34343
34343
34360
34360
34360
34360
34372
34372
34372
34374
34374
34374
34374
34378
34378
34384
34384
34390
34390
34390
34390
34390
34396
34396
34396
34400
34400
34400
34400
34400
34400
34401
34401
34403
34403
34409
34409
34409
34409
34412
34412
34413
34413
34421
34421
34424
34424
34432
34432
34432
34433
34433
34433
34440
34440
34448
34448
34460
34460
34460
34460
34462
34462
34462
34462
34462
34462
34462
34462
34462
34462
34462
34462
34462
34462
34472
34472
34474
34474
34474
34492
34492
34492
34514
34514
34514
34514
34514
34514
34518
34518
34520
34520
34520
34522
34522
34522
34525
34525
34525
34526
34526
34542
34542
34542
34542
34546
34546
34550
34550
34556
34556
34567
34580
34580
34584
34584
34587
34590
34590
34602
34602
34602
34602
34605
34605
34610
34610
34610
34613
34613
34614
34614
34618
34618
34621
34621
34621
34621
34621
34622
34622
34622
34622
34624
34624
34624
34628
34628
34634
34634
34635
34635
34639
34639
34642
34642
34642
34642
34642
34642
34642
34642
34642
34642
34642
34642
34642
34642
34655
34655
34655
34655
34655
34655
34655
34655
34655
34658
34660
34671
34671
34671
34672
34672
34675
34677
34677
34686
34686
34686
34686
34686
34686
34686
34690
34690
34691
34691
34691
34697
34697
34697
34697
34697
34697
34697
34702
34702
34702
34710
34710
34710
34715
34715
34724
34724
34724
34724
34746
34746
34752
34752
34752
34753
34753
34753
34753
34753
34753
34753
34753
34753
34753
34756
34756
34757
34757
34757
34759
34759
34760
34760
34781
34781
34785
34785
34791
34791
34794
34794
34794
34794
34794
34794
34794
34794
34794
34802
34802
34810
34810
34814
34814
34814
34821
34821
34821
34841
34841
34850
34850
34866
34866
34870
34870
34879
34879
34881
34881
34882
34882
34883
34883
34887
34887
34895
34895
34896
34896
34896
34902
34902
34902
34902
34903
34907
34907
34907
34907
34922
34928
34928
34929
34929
34929
34930
34930
34934
34934
34935
34935
34938
34938
34938
34950
34950
34960
34960
34962
34962
34962
34969
34969
34970
34970
34977
34977
34983
34983
34985
34985
34987
34987
34989
34989
34991
34991
34991
35009
35009
35011
35021
35021
35021
35021
35029
35029
35034
35034
35035
35035
35044
35044
35047
35047
35050
35050
35058
35058
35058
35061
35061
35062
35062
35062
35062
35064
35064
35064
35067
35067
35067
35068
35068
35068
35074
35074
35076
35076
35091
35091
35091
35095
35098
35098
35098
35098
35105
35105
35113
35113
35113
35113
35113
35113
35120
35120
35130
35130
35146
35146
35150
35150
35151
35151
35161
35161
35163
35163
35165
35165
35182
35186
35186
35188
35188
35192
35192
35192
35192
35192
35209
35209
35210
35210
35210
35210
35219
35219
35222
35222
35227
35227
35227
35227
35227
35234
35236
35236
35245
35245
35250
35250
35252
35252
35259
35263
35263
35263
35265
35265
35272
35272
35272
35272
35272
35279
35287
35287
35287
35289
35289
35295
35295
35295
35295
35301
35301
35301
35301
35301
35301
35301
35301
35301
35301
35301
35301
35301
35301
35301
35301
35305
35305
35322
35322
35322
35322
35327
35327
35328
35328
35333
35333
35335
35335
35337
35337
35342
35342
35344
35344
35344
35358
35358
35362
35362
35384
35384
35384
35384
35387
35387
35391
35396
35396
35396
35399
35399
35412
35412
35412
35412
35412
35412
35412
35423
35423
35425
35425
35425
35425
35425
35425
35425
35425
35425
35425
35425
35425
35436
35436
35448
35448
35448
35448
35449
35449
35451
35451
35451
35452
35452
35452
35452
35452
35452
35452
35452
35452
35452
35452
35452
35452
35452
35452
35452
35452
35452
35452
35452
35452
35454
35454
35457
35457
35460
35460
35469
35469
35472
35472
35472
35475
35475
35478
35478
35479
35492
35492
35492
35492
35492
35504
35504
35504
35504
35508
35508
35513
35513
35514
35514
35514
35514
35514
35517
35524
35524
35526
35526
35533
35533
35538
35538
35543
35549
35549
35550
35550
35552
35552
35552
35553
35564
35568
35568
35568
35569
35569
35569
35571
35571
35575
35575
35577
35577
35580
35580
35581
35581
35581
35581
35587
35587
35587
35589
35589
35595
35595
35595
35595
35595
35595
35604
35604
35604
35604
35611
35611
35615
35615
35628
35628
35628
35628
35628
35628
35628
35628
35638
35638
35643
35643
35643
35644
35644
35644
35644
35652
35652
35656
35656
35660
35660
35667
35667
35667
35667
35668
35668
35670
35670
35670
35670
35672
35672
35674
35674
35676
35676
35678
35678
35679
35679
35690
35690
35690
35690
35690
35690
35690
35695
35695
35697
35697
35699
35699
35712
35712
35713
35713
35713
35713
35718
35718
35720
35720
35732
35732
35738
35738
35741
35741
35741
35741
35741
35741
35741
35741
35742
35743
35743
35743
35750
35750
35754
35754
35754
35754
35761
35761
35763
35763
35764
35764
35767
35767
35777
35777
35779
35779
35787
35787
35788
35788
35795
35795
35795
35801
35801
35802
35802
35808
35808
35808
35808
35811
35811
35814
35814
35819
35819
35819
35819
35820
35820
35827
35827
35830
35830
35832
35832
35832
35832
35833
35833
35833
35833
35833
35833
35833
35833
35845
35845
35849
35849
35850
35850
35850
35850
35850
35856
35856
35856
35856
35859
35859
35863
35863
35867
35867
35875
35875
35877
35877
35884
35884
35884
35884
35884
35884
35890
35890
35890
35890
35890
35891
35891
35891
35891
35891
35891
35891
35891
35904
35904
35906
35906
35906
35933
35933
35935
35935
35938
35938
35938
35938
35938
35944
35944
35951
35951
35963
35963
35963
35963
35971
35971
35971
35971
35974
35974
35974
35974
35979
35979
35984
35984
35985
35985
35991
35991
35991
36012
36012
36016
36016
36020
36020
36021
36021
36028
36028
36029
36031
36031
36032
36032
36046
36048
36048
36048
36053
36053
36054
36054
36054
36060
36060
36060
36069
36069
36071
36078
36078
36083
36083
36083
36083
36084
36085
36085
36092
36092
36094
36094
36094
36094
36096
36096
36102
36102
36102
36103
36103
36111
36111
36112
36112
36119
36119
36120
36120
36120
36120
36120
36120
36120
36123
36123
36123
36123
36131
36131
36134
36134
36137
36137
36137
36137
36137
36137
36139
36139
36139
36139
36144
36144
36144
36146
36146
36154
36154
36168
36168
36174
36174
36174
36185
36185
36193
36193
36193
36206
36206
36206
36209
36209
36213
36213
36218
36218
36221
36221
36225
36225
36237
36237
36241
36241
36242
36242
36244
36244
36244
36244
36258
36258
36261
36261
36261
36261
36261
36261
36261
36261
36267
36267
36280
36280
36281
36281
36281
36281
36281
36281
36281
36281
36305
36305
36305
36311
36311
36314
36314
36338
36338
36338
36338
36338
36338
36338
36340
36340
36355
36355
36359
36359
36363
36363
36363
36363
36369
36369
36371
36371
36371
36371
36371
36371
36372
36372
36372
36373
36373
36374
36374
36374
36377
36385
36385
36386
36386
36391
36391
36391
36391
36393
36393
36399
36400
36400
36408
36408
36411
36411
36411
36415
36415
36420
36420
36421
36423
36423
36425
36425
36425
36425
36425
36425
36425
36425
36425
36425
36425
36425
36425
36425
36425
36425
36425
36425
36425
36426
36426
36429
36429
36429
36435
36435
36435
36435
36435
36437
36437
36438
36438
36438
36438
36438
36441
36441
36444
36444
36449
36449
36449
36455
36455
36457
36457
36457
36465
36465
36466
36466
36470
36472
36472
36473
36473
36474
36474
36483
36483
36483
36483
36489
36489
36495
36495
36495
36495
36496
36496
36503
36503
36511
36511
36511
36511
36512
36512
36512
36512
36515
36515
36543
36543
36545
36551
36551
36551
36560
36560
36564
36564
36569
36569
36569
36570
36571
36571
36585
36585
36588
36588
36588
36588
36588
36588
36593
36600
36600
36603
36603
36603
36603
36604
36604
36604
36604
36613
36613
36613
36613
36613
36613
36613
36615
36615
36618
36618
36618
36619
36619
36620
36620
36627
36627
36627
36632
36632
36646
36647
36647
36652
36663
36663
36667
36667
36667
36667
36667
36667
36670
36670
36670
36670
36670
36678
36682
36682
36695
36695
36695
36697
36697
36699
36699
36699
36699
36699
36699
36699
36699
36699
36705
36705
36714
36714
36714
36715
36715
36715
36717
36717
36717
36731
36731
36735
36735
36735
36735
36735
36735
36736
36736
36737
36737
36752
36752
36756
36756
36756
36756
36761
36761
36768
36768
36768
36768
36768
36768
36768
36771
36775
36775
36781
36781
36799
36805
36805
36805
36805
36805
36805
36805
36806
36813
36813
36817
36817
36820
36820
36822
36822
36828
36828
36828
36828
36830
36830
36830
36841
36841
36841
36841
36841
36843
36843
36843
36844
36845
36845
36845
36845
36858
36858
36866
36866
36866
36866
36874
36874
36874
36874
36874
36874
36881
36881
36883
36883
36883
36883
36883
36894
36894
36894
36894
36896
36896
36896
36896
36898
36898
36899
36899
36905
36905
36911
36911
36912
36920
36920
36920
36930
36930
36932
36932
36932
36932
36932
36932
36945
36945
36946
36946
36946
36946
36946
36953
36953
36953
36953
36956
36956
36959
36959
36959
36959
36963
36963
36969
36969
36969
36969
36969
36969
36970
36970
36973
36973
36978
36978
36983
36983
36987
36987
36997
36997
37014
37014
37023
37023
37048
37048
37059
37059
37065
37065
37065
37066
37066
37071
37071
37071
37071
37071
37071
37071
37077
37077
37081
37082
37082
37082
37086
37086
37087
37087
37107
37107
37107
37117
37117
37118
37124
37124
37124
37124
37126
37126
37126
37135
37135
37137
37137
37137
37143
37143
37161
37161
37165
37165
37165
37165
37165
37165
37169
37169
37169
37169
37171
37171
37179
37179
37179
37179
37179
37179
37179
37179
37185
37185
37198
37198
37202
37202
37204
37204
37223
37223
37227
37227
37227
37236
37236
37248
37248
37249
37259
37259
37259
37259
37260
37261
37261
37261
37261
37274
37274
37274
37274
37274
37274
37274
37280
37280
37283
37283
37291
37291
37292
37292
37292
37292
37294
37294
37294
37298
37298
37298
37298
37298
37298
37299
37299
37299
37299
37303
37303
37303
37306
37306
37309
37309
37309
37312
37312
37312
37317
37317
37317
37317
37317
37317
37320
37320
37327
37327
37327
37327
37327
37327
37327
37327
37328
37328
37331
37331
37333
37333
37345
37345
37351
37351
37351
37358
37358
37378
37378
37378
37390
37390
37392
37407
37418
37418
37419
37419
37419
37419
37419
37419
37419
37419
37433
37433
37433
37433
37433
37433
37434
37434
37437
37455
37455
37455
37461
37461
37465
37467
37467
37467
37468
37468
37471
37471
37473
37473
37473
37473
37473
37475
37475
37492
37492
37494
37494
37494
37494
37496
37496
37511
37511
37514
37514
37514
37514
37514
37515
37515
37516
37516
37516
37520
37520
37520
37520
37523
37523
37523
37523
37523
37523
37524
37524
37553
37553
37553
37553
37553
37555
37555
37558
37558
37560
37560
37560
37560
37560
37560
37560
37560
37560
37560
37572
37572
37576
37576
37578
37578
37578
37578
37578
37578
37578
37586
37586
37592
37592
37598
37598
37600
37600
37600
37601
37601
37609
37617
37617
37617
37617
37617
37617
37617
37621
37621
37621
37621
37621
37621
37621
37625
37625
37626
37626
37641
37641
37648
37648
37648
37648
37648
37648
37650
37650
37661
37661
37661
37661
37663
37663
37671
37671
37688
37688
37699
37699
37704
37704
37705
37705
37705
37722
37722
37722
37724
37724
37724
37724
37735
37735
37735
37738
37738
37739
37739
37739
37741
37741
37741
37741
37742
37742
37743
37743
37743
37744
37744
37745
37745
37746
37746
37752
37752
37752
37752
37752
37754
37754
37759
37759
37759
37759
37762
37762
37772
37772
37777
37777
37777
37777
37777
37777
37790
37790
37796
37796
37796
37796
37797
37797
37799
37799
37807
37807
37811
37811
37814
37814
37817
37817
37817
37817
37817
37817
37817
37821
37821
37826
37826
37841
37846
37846
37846
37846
37846
37846
37847
37847
37850
37850
37857
37857
37857
37858
37858
37858
37858
37858
37858
37858
37858
37858
37858
37858
37863
37863
37863
37863
37882
37882
37882
37882
37883
37883
37886
37886
37886
37886
37892
37892
37892
37900
37900
37904
37904
37904
37904
37905
37905
37908
37908
37908
37908
37908
37908
37908
37908
37910
37910
37910
37910
37911
37911
37914
37914
37920
37920
37923
37923
37923
37923
37926
37926
37926
37928
37928
37933
37933
37936
37936
37936
37942
37942
37946
37946
37946
37946
37946
37946
37949
37949
37949
37949
37949
37949
37953
37953
37953
37953
37954
37954
37954
37975
37975
37979
37979
37988
37988
38002
38002
38005
38022
38030
38030
38035
38035
38043
38043
38046
38046
38046
38046
38046
38046
38046
38046
38046
38046
38056
38056
38056
38056
38061
38061
38061
38061
38061
38061
38062
38062
38067
38067
38067
38067
38085
38085
38095
38095
38098
38098
38126
38126
38126
38126
38126
38126
38126
38151
38151
38166
38166
38169
38169
38174
38174
38175
38175
38177
38177
38177
38179
38179
38190
38190
38209
38209
38210
38210
38215
38215
38215
38215
38218
38218
38221
38221
38222
38222
38222
38222
38222
38228
38228
38241
38241
38243
38247
38247
38247
38247
38247
38247
38254
38254
38265
38265
38265
38265
38306
38306
38309
38309
38310
38310
38310
38310
38310
38314
38314
38332
38332
38335
38339
38339
38341
38341
38356
38356
38356
38356
38356
38356
38382
38382
38390
38390
38390
38390
38390
38390
38390
38390
38390
38390
38392
38392
38399
38399
38399
38401
38401
38413
38416
38416
38423
38423
38423
38423
38429
38429
38432
38432
38434
38434
38450
38454
38454
38454
38454
38454
38454
38455
38455
38455
38455
38457
38457
38458
38458
38466
38466
38466
38467
38467
38467
38467
38470
38470
38470
38475
38475
38485
38485
38488
38488
38488
38508
38508
38508
38508
38510
38510
38523
38523
38571
38571
38571
38572
38572
38581
38581
38589
38589
38600
38600
38600
38600
38600
38600
38600
38600
38600
38600
38600
38617
38617
38623
38623
38638
38638
38642
38642
38642
38677
38677
38678
38678
38684
38684
38710
38710
38710
38717
38717
38725
38725
38725
38725
38733
38733
38738
38745
38745
38745
38751
38751
38756
38756
38756
38756
38756
38756
38761
38761
38761
38761
38762
38762
38763
38763
38771
38771
38781
38781
38784
38784
38784
38784
38787
38787
38787
38790
38790
38790
38807
38807
38809
38809
38812
38812
38815
38815
38815
38815
38815
38815
38815
38815
38815
38815
38815
38815
38815
38816
38816
38824
38824
38830
38830
38830
38830
38830
38838
38838
38838
38838
38843
38843
38843
38843
38856
38856
38866
38866
38867
38867
38873
38873
38873
38873
38875
38875
38875
38875
38875
38875
38875
38875
38875
38875
38875
38875
38875
38875
38875
38875
38875
38875
38877
38877
38880
38880
38883
38883
38883
38883
38886
38886
38890
38890
38892
38893
38893
38893
38893
38893
38893
38894
38894
38907
38907
38908
38908
38914
38914
38935
38938
38938
38940
38941
38941
38948
38948
38949
38949
38958
38958
38958
38958
38958
38958
38958
38963
38963
38963
38963
38963
38963
38971
38971
38978
38978
38978
38985
38985
38987
38987
38988
38988
38988
38988
38988
38988
38988
38988
38988
38988
38988
38989
38989
38991
38992
38992
38999
38999
39004
39004
39004
39004
39004
39006
39010
39010
39013
39013
39017
39017
39017
39017
39022
39022
39022
39022
39029
39029
39029
39029
39029
39036
39036
39036
39042
39042
39042
39042
39042
39043
39043
39058
39058
39058
39062
39062
39064
39064
39065
39076
39076
39090
39090
39090
39090
39090
39090
39100
39100
39100
39100
39109
39109
39115
39115
39118
39118
39118
39118
39118
39118
39120
39120
39120
39121
39121
39128
39135
39135
39135
39135
39135
39139
39139
39148
39148
39149
39149
39149
39151
39151
39152
39152
39166
39175
39175
39175
39175
39178
39178
39178
39178
39178
39178
39182
39182
39183
39183
39186
39186
39193
39193
39193
39193
39193
39202
39202
39210
39210
39217
39219
39219
39227
39227
39227
39227
39227
39227
39232
39232
39235
39235
39236
39236
39239
39239
39239
39251
39251
39263
39263
39264
39264
39264
39264
39293
39293
39293
39300
39316
39316
39317
39317
39319
39319
39337
39337
39352
39356
39356
39361
39361
39361
39363
39363
39364
39364
39372
39372
39377
39377
39378
39378
39380
39380
39383
39383
39389
39389
39389
39397
39397
39412
39412
39412
39412
39416
39416
39421
39421
39428
39428
39428
39428
39428
39441
39441
39446
39450
39450
39451
39451
39452
39452
39454
39454
39462
39462
39465
39465
39472
39472
39474
39474
39474
39477
39477
39477
39477
39495
39495
39495
39495
39516
39516
39516
39519
39519
39520
39520
39521
39521
39521
39521
39521
39536
39536
39536
39539
39539
39545
39545
39545
39545
39551
39551
39554
39554
39557
39557
39575
39575
39575
39575
39575
39575
39575
39575
39583
39583
39588
39588
39588
39590
39590
39590
39590
39590
39590
39590
39590
39591
39591
39595
39595
39601
39601
39602
39602
39604
39604
39613
39613
39620
39620
39623
39623
39643
39643
39643
39645
39645
39650
39650
39650
39650
39650
39654
39654
39664
39664
39671
39678
39678
39692
39692
39707
39707
39707
39715
39715
39715
39716
39716
39716
39722
39722
39722
39722
39722
39722
39723
39723
39723
39723
39731
39731
39732
39732
39732
39737
39738
39738
39740
39740
39746
39746
39748
39748
39753
39753
39764
39764
39765
39765
39768
39768
39770
39770
39774
39774
39780
39780
39782
39787
39787
39787
39788
39788
39788
39788
39789
39789
39789
39789
39794
39794
39795
39795
39798
39809
39809
39814
39814
39820
39820
39830
39830
39830
39830
39832
39832
39832
39832
39832
39832
39841
39846
39852
39852
39852
39852
39852
39854
39854
39856
39856
39856
39856
39856
39856
39856
39856
39856
39856
39856
39859
39859
39859
39859
39859
39859
39860
39860
39860
39862
39862
39865
39865
39865
39873
39873
39873
39879
39879
39897
39897
39897
39901
39911
39911
39911
39919
39919
39921
39921
39923
39923
39930
39930
39943
39943
39943
39943
39948
39948
39948
39948
39951
39951
39951
39951
39951
39952
39952
39955
39955
39955
39955
39955
39955
39961
39961
39961
39961
39961
39970
39970
39978
39978
39978
39978
39978
39978
39978
39979
39979
39980
39980
39982
39982
39985
39985
39992
39992
39994
39995
40000
40000
40008
40008
40008
40008
40008
40008
40011
40011
40015
40015
40016
40016
40017
40017
40017
40017
40017
40025
40025
40025
40027
40027
40027
40027
40027
40027
40031
40031
40048
40048
40052
40052
40053
40053
40059
40059
40062
40062
40062
40062
40062
40062
40062
40062
40062
40066
40066
40076
40076
40079
40079
40079
40079
40079
40087
40087
40087
40097
40097
40097
40097
40099
40099
40107
40107
40107
40107
40107
40107
40108
40108
40115
40115
40115
40115
40117
40117
40121
40121
40135
40135
40150
40150
40150
40154
40154
40154
40161
40161
40166
40166
40166
40171
40171
40182
40182
40183
40183
40183
40191
40191
40191
40194
40194
40204
40204
40204
40211
40211
40212
40212
40212
40215
40215
40218
40218
40218
40218
40218
40218
40221
40221
40224
40224
40226
40226
40231
40231
40236
40236
40236
40246
40246
40246
40261
40261
40281
40281
40285
40285
40285
40285
40286
40286
40301
40301
40303
40303
40303
40303
40303
40303
40303
40313
40313
40313
40313
40313
40313
40313
40324
40324
40329
40329
40329
40330
40330
40330
40331
40331
40337
40345
40345
40351
40351
40351
40371
40371
40374
40374
40377
40377
40378
40378
40380
40380
40383
40383
40383
40386
40390
40390
40390
40390
40392
40392
40395
40395
40399
40399
40415
40415
40415
40415
40415
40415
40416
40416
40418
40418
40418
40418
40423
40423
40424
40424
40427
40427
40428
40428
40428
40429
40429
40432
40432
40432
40437
40437
40437
40437
40442
40442
40442
40449
40449
40449
40452
40452
40456
40456
40466
40466
40466
40466
40466
40471
40472
40472
40472
40472
40480
40480
40481
40481
40484
40484
40484
40484
40484
40499
40499
40499
40502
40505
40505
40507
40507
40510
40510
40515
40515
40524
40524
40524
40524
40524
40524
40524
40524
40525
40525
40525
40534
40534
40535
40535
40535
40546
40550
40551
40551
40551
40552
40552
40565
40565
40565
40565
40569
40569
40570
40570
40585
40585
40585
40585
40585
40585
40585
40585
40586
40586
40586
40586
40586
40586
40586
40586
40588
40588
40588
40588
40591
40591
40594
40596
40596
40598
40598
40598
40598
40601
40601
40610
40610
40618
40618
40623
40623
40629
40629
40629
40629
40631
40631
40635
40635
40635
40637
40637
40651
40651
40661
40661
40667
40667
40677
40677
40677
40688
40688
40691
40691
40692
40692
40692
40692
40692
40692
40692
40698
40701
40701
40726
40726
40726
40726
40726
40738
40738
40738
40741
40741
40744
40744
40749
40749
40749
40754
40754
40754
40754
40755
40755
40755
40755
40758
40758
40766
40766
40766
40766
40772
40772
40793
40793
40793
40793
40793
40794
40794
40794
40794
40795
40799
40799
40799
40802
40802
40804
40812
40817
40817
40825
40825
40841
40852
40874
40874
40880
40880
40889
40889
40892
40892
40897
40897
40904
40904
40905
40905
40905
40905
40906
40906
40906
40915
40915
40923
40923
40923
40938
40938
40938
40938
40938
40941
40941
40944
40944
40944
40945
40945
40945
40946
40946
40961
40961
40961
40961
40965
40965
40968
40968
40978
40978
40979
40979
40980
40980
40981
40981
40981
40981
40981
40981
40987
40987
40988
40988
40989
40989
40989
40989
40993
40995
40995
40997
40997
40997
41008
41008
41008
41008
41020
41020
41020
41020
41024
41024
41024
41027
41027
41027
41031
41031
41043
41043
41043
41043
41043
41043
41046
41046
41046
41046
41046
41046
41046
41046
41046
41046
41046
41046
41046
41046
41048
41048
41048
41055
41055
41056
41056
41063
41065
41065
41067
41067
41071
41071
41071
41071
41071
41078
41078
41092
41092
41105
41105
41109
41109
41123
41123
41127
41127
41130
41130
41130
41130
41143
41143
41143
41146
41146
41147
41147
41147
41147
41153
41156
41156
41160
41160
41160
41160
41160
41160
41160
41168
41169
41169
41173
41173
41178
41178
41178
41184
41184
41185
41185
41185
41185
41185
41185
41187
41187
41197
41197
41205
41205
41205
41205
41206
41207
41207
41215
41215
41215
41215
41218
41218
41218
41219
41219
41228
41228
41228
41228
41229
41229
41229
41229
41236
41236
41237
41237
41255
41255
41258
41258
41266
41266
41270
41270
41271
41271
41280
41280
41283
41283
41283
41288
41288
41290
41291
41291
41291
41291
41291
41292
41292
41296
41296
41302
41302
41306
41308
41308
41308
41324
41324
41326
41326
41331
41331
41331
41335
41335
41338
41338
41338
41338
41342
41342
41348
41348
41351
41351
41352
41352
41352
41352
41352
41352
41352
41352
41352
41356
41356
41357
41357
41362
41362
41363
41363
41364
41364
41366
41366
41366
41366
41366
41367
41367
41368
41368
41368
41374
41374
41374
41374
41374
41374
41374
41375
41375
41381
41382
41382
41383
41383
41383
41383
41388
41388
41392
41392
41393
41393
41393
41393
41393
41393
41395
41395
41395
41395
41396
41396
41397
41397
41397
41398
41398
41398
41398
41399
41405
41409
41409
41422
41422
41431
41431
41431
41433
41433
41433
41433
41443
41443
41443
41443
41443
41449
41449
41449
41449
41450
41450
41450
41450
41451
41457
41457
41462
41462
41462
41462
41462
41464
41464
41464
41465
41465
41480
41480
41480
41482
41482
41484
41484
41489
41489
41492
41492
41492
41493
41493
41493
41493
41503
41503
41503
41519
41519
41521
41521
41536
41536
41539
41539
41539
41539
41543
41543
41547
41547
41547
41553
41553
41554
41554
41561
41561
41561
41564
41564
41566
41566
41569
41569
41571
41571
41572
41572
41579
41579
41579
41579
41585
41585
41587
41587
41589
41590
41590
41594
41594
41594
41596
41596
41596
41596
41596
41596
41602
41602
41609
41609
41609
41611
41611
41614
41614
41614
41621
41621
41624
41624
41631
41631
41636
41636
41636
41636
41636
41640
41640
41640
41640
41640
41642
41642
41652
41652
41652
41663
41663
41666
41666
41666
41668
41668
41673
41673
41673
41674
41674
41681
41681
41683
41683
41685
41685
41685
41685
41685
41685
41705
41705
41711
41711
41713
41713
41713
41713
41713
41713
41713
41713
41714
41714
41714
41714
41714
41714
41715
41715
41718
41719
41719
41724
41724
41727
41727
41727
41727
41732
41732
41737
41739
41739
41747
41747
41747
41747
41747
41747
41747
41747
41748
41748
41752
41752
41752
41754
41754
41755
41755
41758
41758
41758
41758
41758
41758
41758
41758
41758
41763
41763
41780
41780
41788
41788
41788
41788
41789
41789
41789
41789
41790
41790
41790
41790
41795
41795
41797
41797
41799
41799
41799
41800
41800
41803
41803
41814
41814
41814
41814
41814
41814
41819
41819
41820
41829
41829
41829
41829
41841
41841
41841
41841
41841
41841
41841
41841
41850
41850
41850
41853
41853
41853
41857
41858
41858
41858
41865
41865
41865
41865
41869
41869
41869
41869
41873
41873
41877
41877
41877
41877
41877
41883
41883
41883
41886
41886
41886
41904
41904
41906
41906
41911
41911
41912
41912
41920
41920
41928
41928
41934
41934
41934
41934
41934
41934
41934
41935
41935
41935
41936
41936
41937
41937
41938
41938
41941
41941
41947
41950
41950
41950
41952
41952
41952
41956
41956
41956
41957
41957
41957
41960
41960
41963
41963
41963
41963
41964
41964
41969
41969
41969
41969
41969
41969
41969
41969
41969
41969
41971
41971
41971
41971
41971
41971
41977
41977
41977
41979
41979
41979
41979
41986
41986
41992
41992
41992
41992
41992
41992
41992
41992
41992
41992
41999
41999
42002
42002
42002
42003
42003
42003
42003
42003
42003
42022
42022
42025
42025
42027
42027
42028
42028
42028
42029
42033
42033
42034
42034
42036
42036
42036
42040
42040
42058
42058
42060
42060
42080
42088
42088
42088
42094
42094
42094
42094
42094
42094
42094
42094
42094
42094
42094
42094
42094
42094
42094
42094
42094
42094
42094
42094
42094
42094
42094
42094
42099
42099
42099
42104
42104
42111
42111
42113
42113
42122
42122
42135
42135
42135
42135
42135
42135
42141
42141
42143
42143
42144
42144
42144
42144
42148
42149
42149
42149
42149
42149
42149
42149
42152
42152
42152
42152
42153
42153
42162
42162
42164
42165
42165
42166
42166
42173
42173
42173
42173
42176
42176
42177
42177
42177
42185
42185
42185
42191
42191
42195
42195
42196
42196
42196
42206
42206
42210
42210
42212
42213
42213
42228
42228
42228
42236
42236
42236
42236
42243
42243
42243
42255
42255
42255
42255
42259
42259
42259
42259
42259
42259
42259
42259
42259
42266
42266
42270
42270
42270
42270
42270
42270
42270
42270
42270
42270
42273
42273
42273
42273
42273
42273
42273
42273
42279
42279
42279
42279
42281
42281
42281
42281
42281
42281
42281
42281
42285
42285
42298
42298
42301
42301
42303
42310
42310
42310
42314
42314
42314
42314
42337
42337
42350
42353
42353
42357
42357
42357
42360
42360
42360
42360
42362
42362
42381
42381
42381
42381
42391
42391
42391
42391
42391
42393
42393
42395
42395
42404
42404
42406
42406
42406
42409
42409
42409
42409
42417
42417
42422
42422
42424
42424
42433
42433
42433
42435
42435
42435
42435
42439
42439
42439
42447
42457
42457
42457
42457
42457
42457
42460
42460
42465
42465
42465
42467
42467
42482
42482
42483
42486
42486
42489
42489
42489
42506
42506
42507
42507
42507
42507
42526
42526
42527
42527
42537
42537
42538
42538
42543
42543
42544
42562
42562
42564
42567
42567
42576
42576
42577
42577
42577
42577
42580
42580
42580
42586
42586
42613
42613
42613
42613
42613
42613
42613
42613
42613
42613
42613
42620
42620
42627
42627
42630
42630
42631
42631
42638
42638
42639
42639
42640
42640
42645
42645
42652
42652
42653
42653
42654
42654
42656
42656
42656
42661
42661
42661
42661
42661
42661
42661
42662
42662
42662
42662
42672
42672
42672
42672
42672
42672
42672
42672
42672
42672
42672
42672
42672
42672
42676
42676
42676
42687
42687
42690
42690
42690
42691
42691
42691
42701
42701
42701
42703
42703
42703
42703
42703
42706
42706
42724
42724
42731
42731
42769
42769
42769
42774
42774
42781
42781
42786
42786
42786
42786
42790
42790
42792
42792
42796
42796
42796
42796
42796
42796
42803
42803
42803
42803
42814
42814
42814
42814
42814
42814
42814
42823
42825
42825
42825
42825
42825
42825
42825
42826
42826
42836
42836
42837
42837
42839
42839
42839
42839
42844
42844
42847
42847
42847
42847
42854
42862
42862
42864
42864
42865
42865
42871
42871
42871
42874
42874
42881
42881
42889
42889
42893
42899
42899
42904
42904
42905
42905
42905
42914
42914
42914
42916
42916
42922
42922
42932
42932
42934
42934
42935
42935
42940
42940
42947
42947
42947
42947
42947
42947
42947
42947
42947
42947
42952
42952
42952
42953
42953
42954
42954
42955
42955
42958
42958
42963
42963
42978
42978
42978
42978
42978
42984
42984
42984
42984
42984
42984
42988
42988
43001
43001
43003
43018
43018
43018
43019
43019
43030
43030
43030
43032
43032
43032
43032
43032
43040
43040
43042
43042
43046
43060
43060
43060
43062
43062
43064
43064
43065
43065
43065
43065
43070
43070
43070
43070
43070
43070
43070
43070
43074
43074
43074
43074
43077
43077
43083
43083
43083
43083
43083
43083
43083
43083
43089
43089
43097
43097
43101
43101
43101
43101
43101
43101
43104
43104
43110
43110
43115
43115
43115
43115
43116
43119
43119
43120
43120
43127
43127
43127
43127
43127
43133
43133
43143
43143
43143
43143
43143
43145
43145
43145
43145
43145
43145
43145
43145
43145
43145
43145
43145
43145
43153
43153
43158
43158
43158
43158
43159
43159
43164
43164
43164
43164
43164
43171
43171
43171
43178
43178
43178
43178
43178
43178
43182
43182
43186
43186
43186
43186
43186
43186
43195
43195
43199
43199
43206
43206
43206
43206
43206
43206
43209
43209
43209
43209
43209
43209
43209
43209
43209
43209
43214
43214
43214
43214
43214
43221
43221
43221
43221
43228
43228
43232
43237
43237
43237
43237
43246
43246
43246
43250
43250
43257
43257
43259
43259
43263
43263
43266
43266
43267
43267
43267
43267
43267
43267
43267
43267
43267
43268
43268
43268
43269
43269
43269
43269
43269
43269
43282
43282
43282
43293
43293
43296
43297
43297
43297
43300
43300
43300
43300
43304
43304
43307
43307
43308
43308
43312
43312
43314
43314
43316
43316
43320
43320
43320
43320
43320
43320
43320
43320
43325
43325
43328
43328
43331
43335
43335
43340
43340
43343
43343
43343
43343
43343
43343
43343
43346
43346
43346
43346
43347
43347
43347
43347
43352
43352
43352
43352
43355
43355
43365
43365
43365
43378
43378
43378
43378
43378
43383
43383
43389
43389
43389
43389
43390
43390
43390
43391
43391
43392
43392
43393
43393
43393
43405
43405
43419
43419
43419
43419
43419
43419
43419
43439
43439
43443
43443
43451
43451
43453
43453
43459
43459
43459
43472
43472
43478
43478
43482
43482
43485
43485
43486
43486
43486
43488
43488
43497
43497
43503
43503
43503
43503
43508
43508
43514
43514
43521
43521
43522
43522
43529
43529
43533
43533
43533
43533
43533
43534
43534
43535
43535
43535
43535
43535
43537
43537
43537
43538
43538
43538
43538
43540
43540
43542
43542
43542
43544
43544
43544
43544
43544
43544
43545
43545
43555
43555
43556
43556
43557
43557
43557
43557
43557
43562
43562
43562
43562
43562
43562
43562
43568
43568
43568
43569
43569
43575
43575
43575
43575
43575
43575
43575
43581
43581
43597
43597
43597
43597
43600
43600
43602
43602
43603
43603
43603
43603
43603
43604
43604
43604
43606
43606
43606
43611
43611
43613
43613
43613
43613
43613
43624
43624
43629
43649
43649
43649
43649
43650
43650
43664
43664
43679
43679
43681
43681
43688
43688
43700
43700
43700
43700
43705
43705
43712
43712
43712
43712
43712
43712
43716
43716
43716
43720
43720
43720
43720
43722
43722
43723
43723
43723
43729
43729
43747
43747
43747
43747
43749
43749
43749
43753
43753
43753
43753
43755
43755
43755
43755
43755
43755
43756
43756
43761
43761
43763
43763
43763
43763
43763
43766
43766
43767
43767
43770
43770
43770
43770
43774
43774
43786
43789
43789
43793
43797
43800
43800
43809
43809
43809
43809
43818
43818
43821
43821
43826
43826
43828
43828
43841
43841
43841
43841
43841
43841
43845
43845
43845
43848
43848
43856
43856
43862
43862
43862
43862
43877
43877
43878
43878
43878
43878
43880
43880
43880
43880
43880
43880
43880
43880
43880
43880
43880
43880
43880
43880
43880
43880
43886
43886
43889
43889
43897
43897
43897
43906
43906
43916
43916
43916
43916
43918
43918
43918
43919
43919
43919
43928
43928
43934
43934
43937
43937
43937
43937
43939
43939
43940
43940
43941
43941
43948
43948
43954
43954
43954
43957
43957
43984
43986
43986
43986
43989
43989
43991
43991
43991
43991
43991
43991
43991
43991
43994
43994
43998
43998
43999
43999
43999
43999
43999
44007
44007
44010
44010
44010
44010
44010
44012
44012
44023
44023
44023
44023
44024
44024
44024
44024
44024
44024
44039
44039
44047
44047
44047
44047
44058
44058
44058
44062
44062
44074
44074
44080
44080
44084
44084
44085
44085
44093
44093
44093
44093
44095
44095
44100
44100
44100
44104
44104
44104
44104
44119
44119
44119
44119
44119
44122
44122
44125
44125
44125
44125
44125
44125
44125
44125
44138
44138
44139
44139
44139
44140
44140
44140
44141
44141
44144
44144
44150
44150
44157
44157
44157
44157
44159
44159
44166
44166
44166
44166
44166
44166
44166
44166
44173
44173
44183
44183
44183
44183
44183
44187
44187
44187
44187
44187
44190
44190
44190
44190
44190
44194
44194
44198
44198
44208
44208
44219
44219
44226
44226
44226
44226
44226
44226
44234
44234
44235
44235
44236
44236
44245
44245
44247
44247
44257
44257
44260
44260
44261
44261
44261
44263
44263
44277
44279
44279
44284
44292
44292
44295
44295
44295
44295
44305
44305
44321
44324
44324
44329
44329
44332
44332
44333
44333
44333
44333
44333
44333
44339
44339
44360
44360
44361
44361
44361
44374
44374
44374
44374
44379
44379
44384
44384
44391
44391
44393
44393
44393
44398
44398
44399
44399
44406
44410
44410
44412
44412
44415
44415
44415
44415
44415
44415
44415
44415
44415
44415
44415
44415
44415
44415
44415
44415
44417
44417
44420
44420
44423
44423
44426
44426
44426
44426
44430
44430
44430
44430
44430
44430
44430
44430
44430
44430
44430
44430
44432
44439
44439
44449
44449
44451
44451
44456
44456
44471
44473
44473
44496
44496
44496
44496
44496
44496
44498
44500
44500
44500
44500
44500
44500
44500
44503
44503
44503
44503
44503
44503
44503
44503
44507
44507
44507
44507
44508
44508
44509
44509
44516
44516
44517
44517
44517
44517
44522
44522
44525
44525
44529
44529
44534
44534
44537
44537
44545
44545
44545
44548
44548
44548
44557
44557
44559
44559
44573
44573
44584
44584
44586
44586
44588
44588
44588
44588
44588
44588
44588
44588
44588
44588
44588
44590
44590
44591
44591
44591
44591
44592
44592
44592
44594
44594
44595
44595
44595
44597
44597
44597
44597
44611
44611
44612
44617
44620
44620
44622
44622
44622
44622
44622
44622
44622
44622
44629
44629
44629
44629
44643
44643
44659
44659
44659
44666
44666
44672
44672
44672
44677
44677
44691
44691
44691
44691
44691
44691
44701
44701
44707
44709
44709
44715
44715
44725
44725
44725
44733
44733
44739
44739
44739
44739
44739
44739
44752
44752
44754
44754
44755
44755
44756
44756
44766
44766
44768
44768
44769
44769
44769
44770
44770
44779
44779
44779
44779
44779
44792
44792
44792
44792
44797
44797
44797
44798
44798
44804
44804
44804
44807
44807
44809
44809
44809
44809
44812
44812
44812
44812
44818
44818
44822
44822
44822
44828
44828
44828
44835
44835
44838
44838
44842
44842
44842
44842
44842
44842
44846
44850
44850
44861
44866
44867
44867
44872
44872
44872
44872
44877
44877
44879
44879
44890
44890
44890
44908
44910
44910
44916
44916
44916
44919
44924
44924
44925
44925
44925
44935
44935
44937
44937
44941
44946
44946
44946
44953
44955
44955
44955
44955
44960
44960
44962
44962
44965
44965
44966
44966
44967
44967
44967
44967
44967
44967
44967
44967
44967
44973
44973
44973
44973
44973
44973
44975
44975
44975
44975
44992
44992
44992
44993
44993
44996
44996
44996
44998
44998
44998
44998
44999
44999
45001
45001
45013
45013
45013
45013
45013
45021
45021
45031
45031
45036
45036
45039
45039
45043
45043
45043
45052
45052
45052
45052
45052
45052
45052
45054
45054
45054
45058
45058
45061
45061
45071
45071
45073
45073
45074
45074
45074
45074
45083
45086
45086
45086
45102
45102
45102
45102
45103
45103
45104
45104
45112
45112
45118
45118
45118
45118
45118
45118
45118
45122
45122
45122
45122
45122
45122
45127
45127
45127
45132
45132
45152
45159
45159
45163
45167
45172
45172
45181
45181
45181
45181
45183
45183
45183
45186
45189
45189
45189
45189
45189
45189
45189
45189
45190
45190
45204
45204
45204
45207
45220
45220
45222
45222
45223
45223
45226
45226
45226
45228
45228
45228
45228
45232
45232
45232
45232
45235
45235
45235
45235
45235
45242
45242
45242
45242
45242
45242
45243
45243
45243
45247
45247
45247
45247
45249
45249
45274
45274
45274
45275
45275
45275
45275
45275
45275
45275
45275
45275
45294
45294
45296
45296
45301
45301
45308
45308
45333
45333
45333
45333
45333
45341
45341
45349
45349
45350
45350
45350
45357
45357
45357
45361
45361
45364
45364
45378
45378
45385
45385
45385
45385
45385
45385
45385
45385
45388
45388
45389
45389
45389
45390
45390
45391
45391
45399
45399
45399
45415
45415
45419
45419
45419
45419
45419
45420
45420
45421
45421
45421
45425
45425
45426
45427
45427
45427
45427
45428
45428
45430
45430
45430
45430
45438
45438
45438
45443
45444
45444
45448
45448
45448
45454
45454
45455
45455
45463
45464
45464
45464
45464
45464
45472
45472
45472
45472
45478
45478
45486
45486
45498
45498
45499
45499
45499
45499
45499
45503
45503
45503
45503
45511
45511
45512
45512
45522
45522
45522
45522
45522
45525
45525
45525
45525
45525
45528
45528
45528
45534
45534
45534
45536
45536
45538
45538
45538
45538
45539
45539
45551
45551
45552
45552
45554
45554
45554
45554
45554
45563
45563
45566
45566
45569
45569
45569
45569
45569
45570
45570
45571
45571
45572
45572
45574
45574
45586
45586
45587
45587
45587
45589
45589
45592
45592
45596
45596
45601
45601
45604
45606
45606
45621
45621
45621
45621
45621
45621
45623
45623
45642
45642
45642
45642
45649
45649
45655
45655
45655
45655
45656
45658
45658
45659
45659
45659
45659
45663
45663
45669
45676
45676
45681
45681
45685
45685
45690
45690
45698
45698
45701
45701
45701
45701
45701
45716
45718
45719
45719
45735
45735
45737
45737
45738
45738
45739
45739
45739
45739
45740
45740
45744
45744
45750
45750
45763
45763
45766
45766
45766
45766
45772
45772
45775
45787
45787
45787
45787
45787
45787
45788
45788
45788
45788
45789
45789
45796
45796
45796
45800
45806
45806
45806
45806
45806
45806
45806
45806
45806
45811
45811
45811
45811
45811
45811
45811
45815
45815
45816
45816
45835
45835
45835
45835
45836
45848
45848
45860
45860
45872
45872
45875
45875
45875
45875
45875
45880
45880
45880
45880
45880
45880
45886
45886
45886
45886
45886
45886
45886
45886
45886
45886
45886
45886
45891
45900
45900
45900
45900
45904
45904
45908
45908
45908
45908
45908
45908
45916
45916
45916
45916
45917
45917
45917
45917
45922
45922
45922
45937
45937
45945
45945
45949
45966
45966
45978
45978
45982
45982
45983
45983
45995
45995
45999
46002
46002
46016
46016
46016
46016
46017
46017
46017
46026
46026
46031
46031
46031
46034
46034
46038
46038
46042
46042
46049
46049
46052
46052
46053
46053
46053
46056
46056
46056
46060
46060
46060
46069
46069
46069
46069
46069
46069
46069
46069
46078
46078
46080
46080
46080
46080
46080
46080
46080
46080
46090
46090
46093
46093
46096
46096
46096
46096
46096
46096
46096
46096
46104
46104
46104
46104
46105
46105
46107
46107
46107
46118
46118
46122
46122
46124
46126
46126
46126
46126
46126
46130
46130
46135
46135
46135
46135
46140
46140
46140
46140
46140
46140
46140
46140
46149
46149
46149
46149
46152
46152
46152
46152
46152
46186
46188
46188
46188
46188
46188
46190
46190
46197
46197
46197
46197
46197
46197
46197
46197
46197
46198
46198
46199
46199
46206
46206
46234
46234
46234
46234
46257
46257
46270
46270
46270
46271
46271
46271
46272
46272
46273
46273
46279
46279
46282
46282
46282
46282
46282
46282
46282
46282
46282
46282
46282
46282
46282
46282
46282
46282
46282
46282
46282
46282
46282
46282
46282
46283
46283
46283
46285
46285
46289
46289
46291
46291
46293
46293
46293
46293
46293
46293
46293
46293
46293
46293
46293
46316
46316
46320
46324
46324
46324
46324
46324
46324
46326
46326
46326
46326
46326
46341
46341
46363
46363
46363
46363
46363
46367
46367
46370
46370
46386
46386
46386
46387
46387
46400
46400
46400
46400
46402
46402
46402
46402
46402
46402
46402
46402
46403
46403
46403
46403
46405
46405
46405
46407
46407
46420
46420
46424
46424
46431
46431
46433
46433
46439
46439
46439
46439
46440
46440
46440
46440
46444
46444
46462
46462
46462
46462
46462
46462
46462
46462
46462
46462
46465
46465
46466
46466
46474
46474
46490
46490
46495
46495
46495
46501
46501
46501
46501
46501
46501
46501
46501
46501
46501
46501
46505
46505
46505
46519
46519
46519
46522
46522
46524
46524
46532
46532
46534
46534
46550
46550
46553
46553
46556
46556
46564
46564
46564
46567
46567
46572
46572
46572
46575
46575
46580
46580
46580
46584
46584
46584
46587
46587
46587
46587
46605
46605
46609
46609
46609
46609
46609
46609
46627
46627
46635
46647
46647
46647
46647
46650
46650
46652
46652
46652
46652
46652
46652
46652
46652
46652
46652
46661
46661
46661
46661
46661
46662
46662
46669
46669
46669
46677
46677
46677
46678
46678
46680
46680
46687
46687
46697
46697
46697
46700
46700
46700
46700
46700
46705
46705
46714
46714
46714
46714
46716
46716
46722
46722
46724
46724
46727
46727
46727
46727
46731
46731
46731
46734
46734
46734
46735
46735
46736
46736
46738
46738
46745
46745
46745
46745
46745
46745
46745
46754
46754
46768
46768
46772
46772
46772
46772
46772
46777
46777
46777
46778
46778
46778
46779
46779
46779
46779
46786
46786
46790
46790
46790
46790
46790
46790
46790
46790
46790
46790
46790
46790
46790
46790
46792
46792
46792
46795
46795
46795
46799
46799
46799
46799
46799
46799
46801
46801
46801
46801
46804
46804
46807
46807
46818
46818
46818
46818
46818
46821
46821
46821
46825
46825
46825
46825
46830
46830
46849
46854
46854
46867
46867
46867
46878
46878
46879
46879
46879
46884
46884
46887
46887
46887
46887
46889
46889
46891
46891
46892
46892
46892
46894
46894
46895
46895
46900
46900
46900
46900
46900
46900
46900
46900
46908
46908
46908
46908
46910
46910
46911
46911
46918
46918
46919
46919
46919
46922
46922
46922
46924
46924
46925
46925
46935
46935
46946
46946
46956
46956
46960
46960
46965
46978
46978
46978
46978
46984
46995
46995
46999
47000
47000
47003
47003
47004
47004
47004
47007
47007
47007
47007
47007
47007
47013
47013
47014
47014
47018
47018
47020
47020
47020
47020
47039
47039
47048
47048
47061
47061
47062
47062
47062
47068
47068
47068
47068
47070
47070
47070
47070
47071
47071
47073
47073
47075
47075
47085
47085
47085
47085
47085
47085
47086
47086
47086
47086
47086
47086
47093
47093
47096
47096
47096
47102
47104
47104
47108
47108
47108
47108
47108
47108
47108
47119
47119
47122
47122
47126
47126
47154
47154
47154
47154
47155
47163
47173
47173
47177
47177
47182
47182
47195
47195
47208
47208
47209
47209
47209
47212
47212
47219
47219
47227
47227
47233
47233
47234
47234
47234
47234
47234
47234
47234
47234
47239
47239
47244
47244
47246
47246
47248
47248
47248
47248
47254
47254
47254
47255
47256
47256
47256
47256
47266
47266
47275
47275
47289
47289
47297
47297
47302
47302
47302
47302
47302
47304
47304
47318
47318
47318
47325
47325
47328
47328
47343
47343
47343
47349
47349
47361
47361
47361
47361
47372
47372
47376
47376
47392
47392
47393
47393
47393
47393
47411
47411
47411
47411
47428
47428
47431
47431
47431
47434
47434
47443
47443
47444
47444
47453
47453
47453
47453
47453
47464
47464
47464
47464
47464
47464
47465
47465
47465
47467
47467
47467
47471
47471
47473
47473
47488
47488
47491
47491
47491
47495
47495
47500
47500
47502
47502
47502
47502
47503
47503
47506
47506
47529
47529
47540
47540
47540
47546
47546
47548
47548
47554
47554
47555
47555
47565
47565
47574
47574
47575
47575
47586
47586
47586
47588
47588
47591
47591
47595
47595
47595
47595
47599
47599
47613
47613
47613
47620
47620
47622
47622
47622
47622
47622
47622
47625
47625
47634
47634
47635
47635
47649
47649
47661
47661
47666
47666
47666
47666
47666
47666
47674
47674
47689
47689
47703
47703
47711
47711
47712
47716
47716
47720
47720
47720
47720
47721
47721
47723
47723
47728
47728
47728
47728
47728
47733
47733
47733
47733
47733
47733
47733
47733
47733
47736
47736
47736
47740
47742
47742
47742
47744
47744
47744
47744
47744
47744
47744
47744
47744
47744
47756
47756
47756
47756
47756
47756
47761
47761
47764
47764
47764
47764
47765
47765
47765
47768
47768
47768
47772
47775
47775
47779
47779
47787
47787
47787
47787
47793
47793
47799
47799
47802
47802
47804
47804
47804
47805
47805
47810
47810
47822
47822
47822
47822
47830
47830
47830
47830
47830
47830
47830
47830
47831
47831
47831
47831
47831
47831
47831
47835
47835
47837
47837
47837
47838
47838
47842
47842
47844
47844
47844
47844
47850
47850
47850
47850
47850
47850
47850
47851
47851
47853
47853
47853
47853
47853
47862
47862
47868
47868
47868
47868
47869
47869
47872
47872
47872
47872
47872
47872
47872
47872
47872
47874
47874
47874
47895
47895
47895
47898
47898
47902
47915
47915
47916
47916
47927
47927
47928
47931
47931
47931
47931
47931
47931
47936
47936
47945
47945
47945
47946
47946
47946
47946
47946
47946
47956
47956
47959
47965
47965
47965
47965
47965
47965
47965
47965
47969
47969
47969
47969
47969
47976
47976
47986
47986
47986
47987
47987
47989
47989
47989
47990
47990
47996
47996
47998
48005
48005
48006
48006
48011
48011
48022
48022
48028
48028
48028
48028
48038
48038
48051
48054
48054
48063
48063
48065
48066
48066
48066
48066
48074
48074
48074
48074
48074
48083
48083
48087
48087
48091
48091
48108
48108
48108
48110
48110
48110
48110
48110
48110
48110
48110
48110
48110
48112
48112
48120
48120
48129
48129
48129
48131
48131
48138
48138
48150
48150
48164
48164
48166
48166
48174
48174
48174
48174
48174
48178
48178
48182
48182
48186
48186
48186
48202
48202
48202
48202
48202
48202
48202
48202
48202
48202
48206
48206
48207
48211
48211
48211
48211
48216
48216
48223
48223
48223
48223
48223
48223
48228
48228
48235
48235
48238
48238
48241
48241
48242
48246
48246
48255
48255
48255
48257
48257
48257
48257
48257
48257
48261
48261
48273
48273
48274
48274
48274
48274
48283
48283
48293
48293
48304
48304
48304
48304
48304
48304
48308
48308
48309
48309
48309
48309
48309
48322
48323
48323
48330
48330
48337
48337
48342
48342
48348
48348
48348
48349
48349
48351
48351
48354
48354
48354
48360
48360
48360
48360
48360
48360
48364
48364
48368
48368
48368
48372
48372
48390
48390
48390
48391
48392
48392
48392
48400
48400
48400
48402
48402
48405
48405
48406
48406
48407
48407
48408
48408
48415
48415
48427
48427
48427
48433
48433
48434
48434
48435
48435
48435
48435
48448
48448
48448
48448
48448
48464
48464
48464
48464
48468
48468
48476
48476
48476
48476
48483
48483
48483
48483
48489
48492
48492
48515
48515
48515
48516
48517
48517
48525
48525
48529
48529
48529
48533
48533
48541
48541
48553
48553
48555
48555
48557
48557
48564
48564
48575
48575
48584
48584
48584
48584
48592
48592
48592
48592
48592
48592
48594
48594
48595
48595
48602
48602
48602
48603
48603
48605
48605
48625
48625
48625
48625
48625
48625
48625
48625
48629
48629
48629
48632
48632
48632
48635
48635
48635
48635
48642
48642
48642
48655
48655
48667
48667
48669
48669
48673
48676
48676
48680
48680
48681
48681
48684
48684
48684
48684
48684
48684
48684
48695
48695
48695
48695
48695
48695
48695
48695
48695
48703
48703
48707
48707
48708
48708
48719
48719
48719
48722
48722
48723
48723
48723
48723
48723
48723
48723
48723
48723
48723
48724
48724
48726
48726
48726
48726
48729
48729
48734
48734
48740
48740
48740
48740
48745
48745
48745
48747
48747
48748
48748
48749
48749
48766
48766
48766
48766
48766
48769
48769
48769
48769
48769
48775
48775
48779
48779
48805
48805
48805
48805
48807
48822
48822
48841
48841
48841
48841
48841
48842
48842
48847
48847
48851
48851
48870
48870
48874
48874
48874
48874
48878
48878
48878
48885
48885
48885
48886
48886
48888
48888
48888
48888
48888
48891
48891
48891
48898
48898
48898
48899
48899
48899
48905
48905
48905
48921
48921
48921
48921
48921
48922
48922
48923
48923
48923
48923
48923
48923
48923
48923
48923
48923
48923
48923
48924
48924
48926
48926
48943
48943
48946
48946
48946
48946
48946
48946
48947
48947
48957
48957
48970
48970
48972
48972
48975
48975
48989
48989
49000
49000
49000
49000
49000
49000
49002
49002
49002
49005
49005
49007
49007
49007
49012
49012
49012
49012
49012
49025
49025
49026
49026
49028
49028
49028
49028
49032
49032
49032
49042
49042
49044
49044
49047
49047
49047
49047
49047
49051
49051
49051
49051
49052
49052
49052
49052
49052
49052
49060
49060
49060
49072
49072
49082
49082
49082
49082
49082
49082
49098
49098
49111
49111
49111
49113
49113
49113
49119
49119
49119
49119
49119
49119
49119
49119
49121
49121
49124
49124
49129
49129
49149
49149
49155
49155
49157
49157
49160
49160
49172
49172
49172
49172
49172
49172
49172
49200
49200
49206
49206
49211
49211
49214
49214
49226
49226
49226
49226
49226
49226
49227
49227
49229
49229
49231
49231
49232
49232
49233
49233
49236
49243
49243
49243
49270
49280
49280
49292
49292
49292
49292
49292
49292
49292
49293
49293
49294
49294
49295
49295
49306
49306
49306
49307
49307
49311
49311
49311
49311
49314
49318
49318
49330
49330
49333
49333
49339
49339
49339
49374
49374
49374
49376
49376
49376
49376
49377
49377
49380
49380
49380
49401
49401
49401
49403
49403
49403
49403
49407
49407
49407
49409
49409
49419
49419
49420
49420
49420
49455
49455
49458
49458
49460
49460
49474
49474
49474
49474
49474
49474
49474
49474
49483
49483
49487
49487
49487
49487
49489
49494
49494
49498
49498
49498
49499
49499
49499
49499
49506
49506
49506
49506
49506
49506
49506
49506
49509
49509
49513
49513
49513
49513
49513
49513
49524
49524
49525
49525
49528
49528
49531
49533
49533
49536
49536
49555
49555
49557
49557
49560
49560
49572
49572
49573
49573
49573
49573
49573
49574
49574
49575
49575
49584
49584
49592
49592
49595
49595
49597
49597
49604
49604
49608
49608
49617
49617
49617
49617
49617
49617
49641
49641
49641
49641
49646
49648
49655
49655
49659
49659
49660
49660
49674
49674
49679
49679
49680
49680
49683
49683
49688
49688
49688
49688
49688
49688
49688
49688
49690
49690
49694
49697
49697
49701
49701
49713
49713
49713
49713
49713
49713
49714
49714
49717
49717
49717
49717
49718
49718
49718
49718
49718
49718
49718
49719
49719
49729
49729
49732
49732
49732
49734
49734
49734
49735
49735
49735
49735
49739
49739
49741
49741
49743
49743
49743
49743
49744
49744
49748
49748
49754
49754
49759
49759
49760
49763
49763
49766
49766
49773
49773
49773
49780
49780
49782
49784
49784
49795
49795
49797
49799
49799
49799
49799
49801
49801
49805
49805
49806
49806
49810
49810
49810
49811
49811
49811
49820
49820
49820
49823
49823
49823
49823
49826
49826
49826
49826
49833
49833
49835
49835
49842
49845
49845
49846
49846
49860
49860
49860
49860
49871
49871
49871
49871
49871
49871
49872
49872
49872
49878
49878
49881
49881
49884
49884
49899
49899
49899
49907
49907
49908
49908
49908
49908
49908
49908
49916
49916
49916
49916
49918
49918
49920
49922
49922
49925
49925
49925
49927
49927
49927
49935
49935
49935
49935
49935
49935
49935
49935
49936
49936
49941
49941
49945
49945
49950
49950
49950
49950
49965
49965
49971
49971
49971
49975
49975
49975
49975
49975
49979
49979
49982
49982
49982
49982
49982
49982
49982
49988
49988
49989
49989
50005
50005
50007
50007
50008
50008
50010
50010
50018
50018
50018
50018
50020
50020
50020
50020
50021
50021
50025
50025
50025
50025
50027
50027
50029
50029
50029
50036
50036
50039
50039
50044
50044
50048
50048
50048
50051
50051
50051
50051
50066
50066
50072
50072
50072
50072
50080
50080
50080
50080
50080
50080
50080
50087
50087
50089
50089
50089
50089
50090
50090
50090
50090
50094
50094
50094
50094
50094
50094
50094
50094
50096
50096
50096
50101
50101
50112
50112
50112
50114
50114
50122
50122
50122
50125
50125
50126
50126
50135
50135
50135
50135
50140
50140
50140
50140
50142
50142
50157
50157
50157
50158
50158
50158
50158
50158
50162
50162
50162
50176
50176
50176
50179
50179
50179
50183
50183
50195
50195
50200
50200
50201
50201
50206
50213
50213
50213
50213
50226
50226
50235
50235
50235
50235
50245
50245
50249
50249
50249
50262
50262
50263
50263
50263
50263
50263
50263
50263
50263
50263
50263
50263
50266
50266
50275
50275
50282
50282
50283
50283
50285
50285
50288
50290
50290
50294
50301
50301
50307
50309
50309
50310
50310
50310
50310
50315
50321
50321
50321
50321
50344
50344
50356
50356
50364
50365
50365
50365
50367
50367
50367
50367
50367
50372
50372
50383
50383
50389
50389
50394
50394
50401
50409
50409
50409
50418
50418
50418
50418
50419
50419
50419
50419
50424
50424
50424
50424
50424
50426
50426
50443
50443
50444
50444
50448
50448
50448
50452
50452
50454
50454
50454
50454
50454
50454
50454
50454
50460
50460
50465
50465
50465
50468
50468
50470
50470
50488
50488
50498
50500
50500
50500
50500
50503
50503
50507
50507
50510
50510
50510
50513
50513
50513
50513
50513
50513
50521
50521
50524
50524
50525
50525
50527
50527
50527
50527
50535
50535
50538
50538
50543
50543
50543
50543
50547
50547
50560
50560
50560
50560
50567
50567
50572
50572
50573
50573
50590
50590
50594
50594
50607
50607
50610
50610
50617
50617
50618
50618
50624
50624
50630
50630
50630
50636
50636
50638
50638
50644
50644
50647
50647
50648
50648
50655
50655
50663
50663
50664
50664
50664
50672
50676
50676
50678
50678
50678
50678
50678
50680
50680
50691
50691
50691
50691
50693
50693
50697
50697
50697
50704
50704
50720
50720
50721
50721
50727
50727
50727
50727
50727
50730
50730
50730
50730
50730
50736
50736
50738
50738
50744
50744
50747
50747
50756
50756
50756
50758
50758
50758
50759
50759
50759
50759
50759
50759
50759
50759
50759
50759
50759
50762
50762
50762
50762
50768
50768
50772
50772
50773
50773
50783
50783
50787
50787
50795
50801
50801
50801
50801
50801
50801
50807
50807
50807
50810
50810
50817
50817
50820
50828
50828
50842
50842
50842
50844
50844
50845
50845
50845
50849
50849
50855
50855
50855
50857
50857
50857
50857
50857
50857
50857
50857
50865
50865
50874
50874
50893
50893
50893
50895
50895
50895
50895
50903
50903
50905
50905
50907
50907
50912
50912
50918
50927
50927
50935
50935
50935
50936
50936
50938
50938
50946
50946
50950
50958
50958
50959
50959
50976
50976
50981
50984
50986
50993
50993
50999
50999
50999
51002
51002
51003
51003
51005
51005
51005
51008
51008
51009
51009
51009
51013
51013
51014
51014
51018
51020
51020
51020
51020
51020
51022
51022
51037
51037
51040
51042
51042
51050
51050
51053
51053
51053
51055
51055
51058
51058
51058
51058
51058
51059
51060
51060
51067
51067
51067
51067
51069
51069
51071
51071
51071
51071
51071
51071
51076
51080
51080
51081
51081
51084
51084
51084
51089
51090
51090
51090
51092
51092
51092
51092
51096
51103
51103
51114
51114
51115
51115
51117
51117
51119
51119
51121
51121
51121
51121
51121
51121
51130
51130
51130
51136
51136
51148
51148
51148
51150
51150
51162
51162
51162
51162
51169
51169
51169
51174
51174
51176
51176
51176
51176
51178
51178
51179
51179
51184
51184
51185
51185
51191
51191
51193
51193
51194
51194
51194
51194
51205
51205
51205
51205
51206
51206
51206
51206
51206
51206
51211
51218
51218
51218
51218
51218
51223
51223
51228
51228
51229
51229
51229
51229
51229
51244
51244
51263
51263
51271
51271
51272
51272
51273
51273
51274
51274
51274
51274
51275
51275
51275
51277
51277
51278
51278
51278
51278
51278
51278
51281
51281
51281
51282
51282
51282
51284
51284
51287
51292
51292
51293
51293
51302
51302
51303
51303
51303
51303
51318
51318
51336
51336
51357
51357
51357
51357
51359
51359
51359
51359
51360
51360
51360
51371
51371
51371
51371
51371
51371
51371
51371
51387
51387
51387
51387
51387
51387
51387
51387
51387
51387
51387
51387
51392
51392
51405
51405
51405
51405
51406
51406
51411
51411
51411
51411
51411
51411
51420
51420
51423
51423
51427
51427
51430
51430
51442
51442
51442
51454
51466
51466
51467
51467
51467
51467
51484
51484
51484
51484
51484
51491
51491
51491
51491
51493
51493
51495
51495
51499
51499
51503
51503
51504
51504
51504
51504
51518
51518
51518
51522
51522
51522
51524
51524
51528
51528
51529
51529
51529
51536
51536
51540
51542
51542
51545
51545
51550
51550
51550
51550
51551
51551
51551
51551
51557
51557
51557
51557
51557
51560
51564
51564
51564
51568
51568
51568
51568
51568
51569
51569
51572
51572
51572
51572
51572
51572
51572
51572
51572
51575
51575
51581
51581
51582
51582
51596
51596
51596
51599
51599
51612
51612
51612
51612
51612
51612
51612
51612
51618
51618
51618
51620
51620
51622
51622
51624
51624
51624
51625
51625
51634
51634
51648
51648
51660
51660
51661
51661
51663
51663
51671
51671
51674
51674
51674
51676
51676
51676
51676
51676
51682
51682
51682
51682
51682
51685
51685
51691
51691
51694
51694
51694
51694
51700
51700
51718
51718
51718
51718
51718
51725
51725
51725
51725
51730
51730
51730
51731
51731
51736
51736
51746
51746
51746
51746
51746
51750
51750
51750
51750
51763
51763
51765
51765
51787
51787
51787
51787
51787
51791
51807
51807
51817
51817
51823
51823
51823
51828
51828
51829
51829
51833
51833
51838
51838
51838
51843
51843
51852
51865
51865
51865
51883
51883
51883
51887
51887
51887
51888
51888
51888
51888
51889
51889
51896
51896
51896
51896
51900
51900
51900
51909
51913
51919
51919
51919
51919
51919
51924
51924
51930
51930
51934
51934
51938
51938
51948
51948
51959
51959
51964
51964
51964
51975
51975
51980
51980
51983
51983
51996
51996
51997
51997
52015
52015
52034
52034
52043
52043
52044
52044
52044
52044
52044
52051
52051
52065
52065
52070
52070
52070
52074
52074
52074
52078
52081
52083
52083
52083
52104
52104
52109
52109
52124
52124
52124
52124
52124
52124
52128
52128
52128
52128
52128
52128
52143
52143
52143
52160
52160
52160
52173
52173
52173
52173
52173
52174
52174
52182
52192
52192
52205
52205
52209
52213
52213
52227
52227
52270
52270
52272
52272
52285
52285
52287
52287
52288
52288
52290
52290
52291
52291
52291
52301
52301
52302
52302
52307
52307
52311
52311
52311
52311
52311
52311
52311
52312
52312
52312
52312
52312
52312
52312
52313
52313
52313
52313
52314
52314
52319
52319
52321
52333
52333
52334
52334
52338
52338
52344
52344
52344
52344
52344
52349
52349
52374
52374
52379
52379
52382
52382
52388
52388
52388
52390
52390
52390
52390
52392
52392
52392
52392
52396
52396
52396
52397
52397
52399
52399
52400
52400
52401
52401
52401
52401
52401
52401
52401
52401
52401
52402
52402
52407
52407
52410
52410
52410
52410
52410
52410
52410
52410
52410
52410
52410
52410
52411
52411
52414
52414
52420
52420
52420
52420
52420
52420
52425
52431
52431
52449
52449
52453
52453
52458
52458
52460
52460
52461
52461
52461
52461
52462
52462
52469
52469
52469
52469
52470
52470
52470
52485
52485
52486
52486
52496
52496
52499
52499
52502
52502
52504
52504
52504
52504
52504
52504
52504
52504
52506
52506
52507
52507
52507
52508
52508
52508
52508
52508
52508
52508
52512
52512
52512
52520
52520
52520
52523
52523
52523
52525
52525
52533
52533
52542
52542
52542
52543
52543
52543
52543
52559
52559
52559
52560
52560
52561
52561
52580
52580
52580
52587
52587
52600
52600
52601
52601
52609
52609
52610
52610
52610
52610
52610
52610
52620
52620
52621
52621
52625
52625
52647
52647
52647
52650
52650
52651
52651
52651
52651
52667
52667
52667
52667
52667
52667
52671
52671
52679
52679
52681
52681
52685
52685
52685
52685
52685
52685
52685
52690
52690
52690
52690
52691
52691
52691
52691
52695
52695
52708
52708
52708
52708
52708
52708
52708
52708
52708
52708
52708
52708
52713
52713
52713
52713
52713
52713
52720
52720
52728
52728
52744
52744
52744
52744
52744
52744
52744
52744
52744
52744
52744
52744
52744
52744
52744
52744
52744
52749
52749
52749
52749
52749
52752
52752
52767
52767
52770
52770
52788
52788
52788
52792
52792
52800
52800
52803
52806
52806
52806
52811
52811
52820
52820
52820
52820
52823
52823
52823
52823
52824
52824
52834
52834
52836
52836
52847
52847
52852
52852
52852
52855
52855
52858
52858
52858
52867
52867
52867
52870
52870
52870
52873
52873
52878
52878
52878
52879
52879
52884
52884
52884
52884
52884
52884
52884
52887
52887
52887
52893
52893
52898
52898
52898
52898
52898
52903
52903
52904
52904
52912
52912
52912
52916
52916
52916
52921
52921
52927
52927
52927
52927
52934
52946
52946
52957
52957
52957
52957
52957
52965
52965
52965
52965
52965
52971
52971
52971
52974
52974
52975
52975
52975
52975
52975
52976
52976
52981
52986
52986
52986
52986
52986
52986
52989
52989
52994
52994
52997
52997
52999
52999
53002
53002
53006
53006
53009
53009
53009
53011
53011
53013
53013
53014
53014
53016
53016
53016
53016
53018
53028
53028
53033
53033
53041
53041
53041
53053
53053
53053
53053
53053
53053
53053
53056
53056
53056
53059
53059
53059
53059
53059
53059
53059
53059
53061
53061
53061
53061
53064
53064
53064
53064
53074
53074
53074
53074
53074
53074
53081
53081
53083
53083
53085
53085
53086
53086
53086
53086
53086
53086
53088
53088
53093
53093
53093
53105
53105
53107
53107
53107
53107
53107
53107
53113
53113
53113
53113
53115
53115
53115
53125
53125
53125
53127
53127
53127
53127
53127
53133
53133
53140
53140
53144
53144
53151
53151
53151
53152
53152
53154
53154
53155
53155
53159
53159
53159
53159
53159
53160
53160
53160
53160
53162
53162
53168
53168
53169
53169
53171
53171
53172
53172
53172
53172
53172
53172
53181
53181
53185
53185
53185
53185
53185
53185
53185
53185
53185
53197
53197
53198
53198
53205
53205
53211
53211
53211
53222
53222
53229
53230
53230
53236
53237
53237
53243
53243
53250
53253
53253
53261
53261
53263
53265
53265
53274
53274
53278
53278
53281
53281
53281
53287
53287
53287
53289
53289
53289
53291
53291
53294
53294
53294
53307
53307
53312
53312
53315
53315
53326
53332
53332
53336
53336
53337
53337
53338
53338
53338
53347
53347
53348
53348
53348
53348
53354
53354
53354
53354
53354
53370
53370
53371
53371
53376
53376
53376
53384
53385
53385
53405
53405
53407
53407
53408
53408
53417
53417
53417
53417
53417
53417
53417
53417
53417
53417
53418
53418
53418
53418
53418
53424
53428
53428
53442
53442
53442
53442
53456
53456
53456
53456
53465
53479
53479
53483
53483
53496
53496
53496
53497
53497
53497
53497
53497
53497
53497
53497
53498
53498
53498
53498
53500
53500
53500
53500
53500
53502
53502
53502
53502
53502
53505
53511
53511
53511
53526
53526
53526
53526
53526
53540
53542
53542
53542
53542
53542
53542
53543
53543
53543
53543
53543
53543
53543
53550
53550
53553
53553
53558
53558
53576
53576
53584
53584
53584
53585
53585
53585
53585
53585
53585
53585
53598
53598
53600
53604
53604
53606
53606
53616
53616
53618
53618
53619
53619
53624
53624
53624
53630
53630
53630
53630
53631
53631
53633
53633
53633
53633
53637
53637
53637
53637
53637
53637
53637
53637
53637
53637
53637
53637
53637
53637
53637
53637
53637
53637
53637
53637
53637
53637
53637
53637
53637
53637
53640
53640
53640
53640
53640
53640
53640
53649
53649
53649
53649
53666
53666
53667
53673
53673
53673
53673
53678
53678
53678
53678
53678
53678
53678
53678
53678
53695
53695
53695
53697
53697
53700
53700
53701
53701
53702
53702
53707
53707
53712
53712
53717
53717
53717
53717
53717
53731
53731
53731
53731
53731
53732
53732
53743
53743
53743
53743
53757
53757
53757
53757
53757
53768
53768
53768
53769
53769
53769
53769
53769
53769
53769
53790
53790
53792
53792
53794
53794
53794
53802
53802
53803
53807
53807
53807
53807
53807
53814
53814
53814
53814
53821
53821
53824
53824
53824
53824
53824
53824
53824
53824
53824
53824
53832
53832
53832
53834
53834
53836
53836
53837
53837
53837
53840
53840
53840
53841
53841
53844
53849
53849
53849
53849
53849
53852
53852
53860
53860
53860
53860
53869
53869
53871
53871
53871
53873
53873
53875
53875
53875
53875
53888
53888
53888
53908
53908
53914
53914
53914
53916
53916
53923
53923
53923
53923
53935
53935
53935
53937
53937
53944
53944
53944
53944
53944
53944
53944
53947
53947
53947
53947
53949
53949
53951
53951
53951
53951
53951
53951
53951
53952
53952
53955
53955
53958
53959
53959
53959
53959
53959
53960
53960
53960
53960
53960
53960
53964
53964
53970
53970
53970
53970
53970
53975
53975
53975
53975
53980
53980
53986
53986
53988
53988
53989
53989
53989
53989
53999
53999
54000
54000
54001
54004
54004
54011
54011
54019
54019
54019
54019
54019
54019
54021
54021
54025
54025
54038
54038
54050
54050
54054
54054
54054
54054
54066
54066
54066
54066
54067
54067
54068
54068
54069
54069
54069
54086
54086
54096
54096
54096
54099
54099
54099
54099
54099
54099
54101
54101
54103
54103
54103
54103
54103
54103
54103
54103
54103
54103
54111
54111
54114
54114
54121
54121
54130
54130
54137
54137
54168
54168
54168
54168
54178
54178
54178
54184
54184
54187
54187
54187
54188
54188
54188
54188
54188
54195
54195
54195
54195
54196
54203
54208
54208
54209
54209
54217
54233
54233
54233
54233
54238
54238
54241
54241
54246
54246
54246
54246
54246
54246
54251
54251
54252
54252
54254
54254
54254
54254
54254
54254
54263
54263
54263
54263
54263
54269
54269
54269
54269
54269
54269
54269
54269
54274
54274
54276
54276
54276
54276
54282
54282
54288
54288
54297
54297
54299
54299
54304
54304
54307
54307
54307
54307
54323
54323
54336
54336
54337
54337
54340
54340
54348
54348
54361
54361
54366
54366
54371
54371
54374
54374
54374
54375
54375
54380
54380
54393
54393
54399
54399
54399
54401
54401
54402
54402
54403
54423
54436
54436
54437
54437
54437
54437
54437
54444
54444
54444
54444
54444
54444
54444
54444
54444
54444
54445
54445
54450
54450
54466
54466
54466
54466
54468
54471
54471
54479
54479
54479
54483
54483
54483
54483
54485
54485
54488
54488
54488
54489
54489
54489
54489
54490
54491
54491
54491
54494
54494
54494
54494
54494
54494
54494
54502
54502
54502
54502
54502
54502
54502
54502
54505
54505
54505
54505
54505
54505
54505
54506
54506
54506
54506
54507
54507
54516
54516
54520
54520
54527
54527
54528
54528
54529
54529
54531
54531
54533
54533
54533
54537
54537
54537
54537
54538
54543
54543
54550
54550
54552
54552
54552
54562
54562
54562
54573
54573
54573
54573
54573
54583
54583
54594
54594
54594
54594
54594
54600
54600
54600
54600
54602
54602
54605
54605
54606
54606
54607
54607
54617
54617
54618
54618
54623
54623
54648
54648
54656
54656
54656
54657
54657
54661
54661
54661
54661
54661
54661
54661
54661
54661
54661
54662
54664
54664
54680
54680
54680
54684
54688
54688
54691
54691
54702
54702
54703
54703
54705
54705
54709
54709
54711
54711
54721
54727
54727
54728
54728
54728
54728
54729
54729
54729
54729
54732
54732
54732
54732
54738
54738
54741
54741
54741
54741
54741
54741
54741
54741
54741
54741
54741
54745
54745
54758
54758
54758
54758
54762
54762
54769
54769
54769
54775
54775
54775
54777
54777
54777
54777
54777
54777
54777
54779
54779
54780
54780
54781
54781
54781
54788
54788
54789
54789
54791
54791
54791
54797
54797
54798
54798
54798
54798
54798
54798
54798
54801
54801
54801
54820
54820
54821
54821
54821
54838
54838
54839
54839
54840
54840
54846
54846
54849
54849
54849
54850
54850
54852
54852
54854
54854
54861
54861
54868
54868
54868
54881
54881
54888
54888
54888
54888
54888
54896
54896
54898
54898
54906
54906
54906
54915
54915
54921
54921
54924
54924
54924
54924
54927
54927
54927
54927
54929
54929
54936
54936
54938
54938
54944
54944
54950
54950
54956
54956
54956
54956
54974
54974
54981
54988
54988
54991
54999
54999
54999
54999
54999
54999
54999
54999
54999
54999
54999
54999
54999
55006
55006
55007
55007
55007
55015
55019
55019
55026
55026
55026
55040
55042
55042
55042
55042
55042
55042
55042
55042
55042
55042
55042
55042
55042
55042
55049
55049
55049
55063
55063
55063
55063
55066
55066
55066
55070
55070
55070
55070
55076
55076
55080
55102
55102
55111
55111
55120
55120
55123
55123
55124
55124
55124
55124
55129
55129
55129
55129
55129
55140
55140
55143
55143
55144
55144
55144
55144
55144
55144
55162
55162
55175
55175
55175
55175
55175
55175
55175
55175
55175
55179
55179
55179
55184
55184
55190
55190
55199
55199
55204
55204
55204
55204
55206
55206
55206
55206
55206
55206
55209
55209
55209
55209
55213
55213
55213
55213
55219
55219
55219
55222
55222
55222
55238
55238
55238
55238
55243
55246
55248
55248
55248
55248
55249
55249
55252
55252
55268
55268
55270
55270
55270
55272
55272
55282
55282
55283
55283
55285
55285
55285
55288
55288
55288
55288
55288
55288
55296
55296
55305
55305
55306
55306
55308
55308
55308
55308
55308
55308
55308
55308
55308
55308
55308
55308
55310
55310
55312
55312
55312
55312
55312
55312
55313
55313
55313
55313
55313
55313
55313
55313
55323
55323
55326
55326
55335
55335
55337
55341
55341
55341
55341
55341
55341
55350
55353
55353
55354
55354
55354
55354
55354
55354
55355
55355
55357
55357
55357
55357
55357
55358
55358
55358
55368
55368
55368
55383
55383
55383
55389
55389
55389
55389
55389
55389
55389
55389
55393
55393
55393
55393
55393
55394
55394
55394
55395
55395
55395
55395
55397
55397
55397
55397
55397
55397
55401
55401
55402
55402
55405
55405
55407
55407
55407
55407
55407
55407
55410
55410
55410
55415
55415
55418
55418
55418
55426
55428
55428
55428
55428
55428
55442
55442
55442
55442
55462
55462
55462
55463
55463
55466
55466
55470
55470
55470
55470
55470
55472
55472
55475
55475
55480
55480
55483
55483
55494
55494
55494
55494
55494
55496
55496
55496
55496
55515
55515
55519
55519
55524
55524
55524
55531
55531
55531
55543
55543
55548
55548
55548
55552
55552
55552
55552
55552
55552
55552
55558
55558
55559
55559
55564
55564
55566
55566
55575
55575
55583
55583
55583
55583
55583
55583
55585
55585
55590
55590
55591
55591
55603
55603
55603
55612
55612
55612
55612
55612
55612
55618
55618
55618
55619
55619
55619
55624
55624
55624
55624
55626
55626
55626
55626
55637
55637
55637
55637
55637
55638
55638
55638
55640
55640
55640
55640
55640
55640
55641
55641
55649
55649
55649
55649
55653
55653
55653
55654
55654
55661
55666
55666
55677
55677
55683
55683
55689
55689
55699
55699
55709
55709
55709
55709
55709
55709
55709
55709
55709
55709
55715
55715
55719
55719
55719
55726
55726
55737
55737
55737
55737
55737
55737
55745
55745
55757
55769
55769
55795
55795
55795
55795
55807
55810
55810
55811
55811
55811
55811
55813
55813
55813
55813
55813
55813
55821
55821
55821
55834
55834
55835
55835
55835
55843
55843
55844
55844
55853
55853
55855
55855
55863
55863
55865
55865
55865
55869
55869
55876
55876
55879
55879
55881
55881
55881
55882
55882
55882
55888
55888
55889
55889
55906
55906
55906
55906
55928
55928
55931
55931
55931
55936
55936
55938
55938
55939
55939
55939
55947
55951
55951
55951
55951
55951
55952
55952
55952
55952
55958
55958
55967
55967
55976
55976
55976
55976
55976
55979
55979
55984
55984
56003
56003
56007
56007
56008
56008
56015
56015
56017
56017
56017
56024
56024
56028
56028
56032
56032
56032
56032
56032
56032
56034
56034
56034
56034
56034
56034
56036
56036
56040
56040
56048
56048
56058
56060
56060
56060
56071
56071
56071
56072
56072
56076
56076
56099
56099
56099
56099
56099
56099
56105
56105
56105
56105
56111
56111
56111
56111
56111
56112
56112
56112
56118
56118
56129
56129
56141
56141
56149
56149
56159
56159
56165
56174
56174
56179
56179
56180
56180
56180
56180
56180
56180
56180
56180
56180
56180
56180
56180
56180
56180
56180
56180
56180
56180
56180
56180
56180
56181
56181
56187
56187
56189
56189
56189
56189
56189
56189
56194
56194
56196
56196
56196
56196
56196
56196
56205
56205
56214
56214
56215
56215
56215
56215
56233
56233
56236
56236
56236
56236
56236
56242
56249
56249
56249
56250
56250
56250
56250
56250
56250
56250
56256
56256
56256
56256
56256
56256
56256
56256
56260
56260
56265
56265
56268
56268
56272
56281
56281
56292
56292
56293
56293
56293
56293
56294
56294
56302
56302
56308
56308
56312
56312
56312
56312
56313
56313
56313
56313
56331
56338
56338
56338
56338
56338
56338
56349
56349
56358
56358
56369
56369
56378
56378
56378
56378
56379
56388
56388
56396
56396
56397
56397
56397
56397
56397
56397
56398
56398
56398
56398
56398
56403
56403
56408
56408
56412
56412
56413
56420
56420
56423
56423
56423
56423
56423
56428
56428
56429
56429
56436
56436
56442
56442
56443
56443
56450
56450
56454
56454
56458
56465
56465
56466
56466
56467
56476
56476
56480
56480
56481
56481
56481
56487
56487
56488
56488
56488
56488
56488
56488
56493
56493
56493
56493
56493
56493
56493
56493
56494
56494
56502
56502
56502
56502
56502
56502
56502
56502
56502
56502
56502
56502
56502
56502
56502
56502
56506
56506
56506
56506
56507
56507
56507
56507
56511
56511
56513
56515
56515
56515
56515
56520
56523
56523
56533
56533
56569
56569
56569
56569
56569
56570
56570
56572
56572
56577
56577
56577
56577
56577
56578
56585
56585
56596
56596
56600
56600
56600
56600
56605
56605
56605
56605
56609
56609
56609
56609
56619
56619
56629
56629
56629
56629
56652
56654
56654
56667
56668
56668
56677
56677
56683
56683
56685
56685
56690
56690
56690
56696
56696
56700
56700
56704
56708
56713
56713
56713
56713
56713
56715
56715
56715
56715
56715
56715
56715
56718
56718
56718
56720
56720
56720
56723
56723
56723
56723
56727
56727
56737
56738
56738
56738
56738
56740
56740
56740
56740
56740
56740
56749
56749
56752
56755
56760
56760
56768
56768
56768
56776
56776
56778
56778
56778
56778
56818
56818
56818
56818
56818
56818
56818
56820
56820
56822
56822
56822
56822
56822
56822
56822
56824
56824
56825
56825
56829
56829
56832
56832
56832
56832
56839
56839
56855
56855
56855
56855
56855
56855
56855
56855
56858
56858
56858
56858
56858
56858
56858
56858
56858
56858
56860
56860
56862
56862
56862
56869
56869
56875
56875
56876
56876
56880
56880
56882
56882
56883
56883
56884
56884
56898
56898
56900
56903
56903
56905
56905
56908
56908
56908
56908
56910
56910
56920
56920
56923
56923
56929
56929
56932
56932
56937
56937
56937
56939
56939
56942
56942
56942
56942
56947
56954
56954
56960
56960
56965
56965
56977
56977
56980
56980
56980
56980
56980
56981
56981
56981
56981
56981
56981
56981
56982
56982
56983
56983
56986
56986
56990
56990
56994
56994
56996
56996
56996
56996
56999
56999
57005
57005
57007
57007
57015
57015
57018
57021
57021
57021
57021
57022
57022
57040
57040
57040
57040
57040
57040
57043
57043
57046
57046
57046
57046
57058
57058
57058
57058
57058
57058
57058
57058
57058
57058
57060
57060
57062
57062
57062
57062
57063
57063
57069
57069
57069
57069
57069
57069
57071
57072
57072
57072
57073
57073
57084
57084
57084
57093
57093
57095
57095
57095
57099
57101
57101
57105
57105
57106
57106
57115
57115
57115
57120
57120
57125
57125
57126
57126
57126
57126
57127
57127
57145
57145
57146
57146
57146
57146
57146
57155
57155
57155
57155
57155
57156
57156
57156
57158
57158
57174
57174
57174
57174
57174
57174
57176
57182
57182
57182
57182
57182
57182
57182
57182
57184
57184
57188
57188
57188
57190
57190
57193
57193
57201
57201
57213
57213
57213
57213
57219
57219
57219
57225
57225
57225
57225
57225
57225
57225
57225
57225
57225
57231
57231
57240
57240
57244
57244
57244
57244
57255
57255
57255
57255
57255
57255
57255
57255
57259
57259
57262
57262
57262
57262
57276
57277
57277
57277
57279
57279
57286
57286
57286
57289
57289
57292
57292
57292
57292
57292
57292
57292
57304
57304
57304
57304
57304
57326
57326
57327
57327
57328
57328
57328
57328
57328
57328
57328
57328
57328
57328
57328
57328
57328
57328
57328
57329
57329
57339
57339
57339
57339
57339
57351
57351
57351
57351
57357
57357
57364
57364
57366
57369
57369
57375
57375
57388
57388
57388
57408
57408
57408
57408
57414
57414
57421
57421
57421
57423
57423
57424
57424
57424
57428
57428
57447
57447
57447
57462
57462
57467
57467
57467
57467
57474
57474
57475
57475
57475
57475
57475
57475
57478
57478
57478
57480
57480
57484
57484
57485
57487
57487
57497
57497
57505
57505
57510
57514
57514
57515
57515
57527
57527
57527
57527
57527
57533
57533
57533
57533
57543
57546
57546
57550
57550
57550
57550
57551
57551
57552
57559
57562
57562
57568
57568
57569
57569
57569
57569
57569
57569
57571
57589
57589
57591
57591
57604
57604
57605
57605
57605
57605
57605
57605
57605
57605
57605
57605
57606
57606
57608
57608
57613
57613
57613
57613
57619
57619
57625
57625
57637
57637
57643
57643
57650
57650
57652
57652
57652
57652
57652
57652
57652
57652
57653
57653
57654
57654
57658
57658
57661
57661
57680
57680
57680
57680
57680
57680
57681
57681
57681
57683
57683
57687
57687
57688
57688
57691
57691
57694
57694
57694
57694
57694
57704
57704
57705
57705
57705
57707
57707
57707
57707
57709
57709
57730
57730
57730
57730
57730
57732
57732
57732
57739
57739
57743
57743
57753
57753
57753
57753
57755
57755
57756
57756
57759
57759
57759
57759
57759
57759
57760
57760
57765
57765
57770
57770
57770
57770
57770
57776
57776
57776
57776
57776
57776
57782
57782
57782
57782
57787
57787
57787
57787
57787
57787
57787
57787
57787
57787
57787
57787
57787
57787
57787
57787
57787
57793
57793
57794
57794
57797
57797
57799
57799
57815
57815
57823
57823
57824
57824
57824
57824
57826
57831
57831
57838
57838
57839
57839
57839
57840
57840
57842
57842
57842
57842
57842
57842
57842
57842
57842
57842
57842
57842
57842
57845
57845
57847
57847
57847
57847
57847
57847
57847
57847
57871
57871
57871
57871
57874
57874
57874
57874
57874
57874
57894
57901
57901
57901
57905
57905
57905
57905
57905
57905
57905
57905
57912
57912
57912
57912
57912
57912
57912
57912
57912
57913
57913
57915
57915
57915
57922
57922
57922
57922
57922
57922
57922
57922
57922
57922
57922
57922
57922
57922
57922
57922
57922
57922
57922
57924
57924
57930
57930
57930
57936
57936
57936
57936
57936
57940
57940
57944
57944
57945
57945
57947
57947
57958
57958
57958
57958
57964
57964
57964
57964
57970
57970
57973
57973
57976
57976
57976
57976
57977
57977
57981
57981
57994
57994
57999
57999
58002
58002
58003
58003
58003
58005
58005
58005
58005
58008
58008
58013
58013
58018
58018
58027
58027
58034
58034
58045
58045
58048
58048
58055
58055
58061
58061
58064
58064
58071
58071
58090
58090
58090
58090
58096
58096
58102
58102
58107
58107
58114
58114
58114
58115
58115
58115
58115
58115
58115
58117
58117
58117
58119
58119
58124
58124
58141
58141
58144
58144
58144
58144
58152
58152
58152
58152
58152
58152
58156
58156
58159
58159
58159
58169
58169
58169
58169
58169
58176
58176
58176
58176
58176
58187
58187
58188
58188
58189
58189
58190
58190
58190
58190
58191
58194
58194
58196
58196
58196
58196
58196
58202
58202
58206
58206
58206
58206
58209
58209
58209
58209
58209
58209
58216
58216
58218
58218
58223
58223
58232
58232
58232
58232
58237
58237
58240
58240
58242
58242
58242
58242
58245
58245
58251
58251
58251
58255
58255
58255
58255
58257
58257
58259
58259
58260
58260
58266
58266
58270
58270
58279
58279
58294
58294
58298
58298
58298
58298
58302
58302
58307
58307
58313
58313
58313
58316
58316
58316
58316
58316
58316
58319
58319
58323
58323
58337
58337
58337
58337
58338
58338
58338
58355
58355
58359
58359
58363
58366
58366
58366
58366
58373
58373
58376
58376
58379
58379
58379
58393
58393
58393
58393
58399
58399
58405
58405
58414
58414
58421
58421
58422
58422
58422
58422
58422
58422
58427
58433
58435
58435
58443
58443
58443
58443
58447
58447
58447
58447
58447
58447
58452
58455
58455
58455
58462
58471
58471
58471
58471
58471
58475
58475
58478
58478
58479
58479
58482
58482
58489
58489
58505
58505
58511
58511
58512
58512
58514
58514
58519
58519
58519
58519
58520
58520
58522
58522
58523
58523
58527
58527
58527
58532
58532
58532
58532
58532
58532
58538
58538
58538
58551
58551
58553
58553
58567
58567
58579
58579
58579
58579
58580
58580
58580
58580
58580
58580
58580
58590
58590
58599
58599
58601
58601
58604
58604
58605
58605
58608
58608
58608
58608
58608
58608
58624
58624
58624
58624
58624
58624
58624
58624
58625
58625
58627
58627
58631
58631
58648
58650
58650
58659
58659
58659
58659
58659
58667
58667
58671
58671
58674
58674
58674
58674
58674
58674
58679
58679
58695
58695
58700
58700
58708
58708
58711
58711
58735
58735
58744
58744
58755
58755
58757
58757
58757
58757
58757
58757
58757
58760
58760
58760
58760
58762
58762
58762
58769
58769
58769
58769
58769
58772
58772
58776
58776
58778
58778
58779
58779
58779
58784
58784
58784
58784
58792
58792
58799
58799
58805
58805
58819
58819
58839
58839
58839
58841
58841
58841
58841
58841
58841
58851
58851
58853
58853
58853
58855
58855
58855
58861
58861
58864
58864
58864
58864
58864
58867
58867
58870
58870
58872
58872
58872
58877
58877
58879
58879
58881
58886
58886
58889
58889
58889
58889
58889
58889
58891
58891
58891
58891
58891
58893
58893
58893
58901
58901
58901
58902
58902
58903
58903
58906
58906
58919
58919
58920
58920
58931
58931
58932
58932
58932
58932
58942
58942
58942
58942
58944
58944
58946
58946
58954
58954
58954
58954
58954
58954
58954
58954
58956
58956
58958
58958
58958
58958
58959
58959
58959
58974
58974
58980
58980
58983
58983
58983
58987
58987
58987
58987
59002
59002
59002
59003
59003
59003
59007
59007
59010
59010
59011
59011
59011
59011
59011
59011
59012
59012
59012
59022
59024
59030
59030
59044
59044
59051
59051
59051
59054
59063
59063
59066
59066
59073
59073
59073
59073
59077
59077
59082
59082
59087
59087
59088
59088
59091
59091
59091
59091
59094
59094
59094
59094
59094
59096
59096
59097
59097
59097
59097
59103
59103
59103
59103
59107
59107
59107
59107
59110
59110
59110
59117
59117
59130
59130
59131
59131
59134
59134
59134
59134
59154
59154
59156
59156
59156
59158
59158
59158
59158
59158
59158
59162
59162
59163
59163
59163
59163
59167
59167
59182
59182
59182
59182
59185
59185
59191
59196
59196
59196
59199
59199
59209
59209
59210
59210
59237
59237
59242
59242
59247
59247
59248
59248
59251
59251
59266
59266
59266
59266
59266
59266
59266
59266
59266
59268
59268
59272
59272
59272
59273
59273
59274
59274
59275
59275
59281
59281
59301
59301
59306
59306
59306
59307
59307
59309
59309
59309
59316
59316
59316
59316
59316
59316
59321
59321
59326
59326
59331
59331
59331
59331
59331
59331
59331
59331
59331
59331
59334
59334
59334
59334
59334
59334
59334
59334
59339
59339
59339
59339
59339
59339
59339
59345
59345
59345
59347
59347
59350
59350
59350
59350
59369
59369
59382
59382
59382
59386
59386
59388
59388
59390
59390
59390
59390
59398
59398
59400
59400
59400
59406
59406
59406
59406
59406
59406
59406
59417
59417
59417
59417
59435
59435
59446
59446
59450
59450
59450
59451
59460
59460
59471
59471
59481
59481
59492
59492
59494
59494
59494
59503
59503
59530
59534
59534
59534
59534
59535
59535
59535
59535
59537
59537
59543
59543
59549
59549
59552
59552
59552
59552
59552
59552
59552
59555
59555
59558
59558
59558
59558
59558
59558
59559
59559
59559
59559
59561
59561
59564
59564
59568
59568
59568
59568
59568
59568
59568
59568
59569
59569
59569
59574
59574
59591
59591
59594
59594
59594
59594
59595
59595
59602
59607
59607
59610
59610
59610
59612
59612
59612
59614
59614
59614
59614
59614
59614
59619
59619
59630
59630
59630
59630
59630
59639
59639
59642
59642
59642
59653
59653
59661
59661
59665
59665
59677
59677
59678
59678
59680
59680
59680
59680
59684
59685
59685
59687
59687
59687
59687
59687
59687
59687
59687
59687
59687
59687
59687
59687
59687
59692
59692
59699
59699
59699
59699
59699
59706
59706
59706
59707
59707
59713
59713
59724
59724
59724
59726
59726
59726
59726
59726
59726
59745
59745
59754
59754
59759
59759
59759
59759
59760
59760
59760
59760
59762
59762
59771
59771
59771
59780
59780
59782
59782
59786
59786
59786
59786
59786
59786
59786
59786
59788
59788
59794
59794
59794
59794
59794
59794
59794
59794
59796
59796
59796
59807
59807
59811
59811
59821
59821
59824
59824
59824
59824
59855
59863
59863
59871
59871
59880
59880
59880
59880
59881
59881
59881
59881
59895
59895
59902
59902
59927
59927
59932
59932
59932
59934
59934
59934
59934
59934
59934
59935
59935
59935
59941
59941
59941
59941
59941
59941
59944
59944
59953
59953
59956
59956
59971
59971
59971
59971
59973
59973
59974
59974
59976
59976
59981
59981
59982
59982
59982
59982
59982
59982
59982
60008
60008
60008
60012
60012
60020
60030
60030
60041
60041
60044
60044
60044
60044
60044
60044
60044
60044
60049
60049
60056
60056
60056
60056
60056
60056
60056
60056
60056
60056
60056
60056
60056
60056
60057
60057
60057
60057
60057
60057
60060
60060
60060
60060
60063
60063
60063
60063
60063
60069
60069
60077
60077
60088
60088
60095
60096
60096
60096
60096
60096
60096
60096
60104
60104
60104
60104
60106
60106
60106
60106
60116
60116
60116
60116
60116
60120
60120
60120
60128
60128
60128
60128
60129
60129
60129
60129
60129
60132
60132
60134
60134
60145
60145
60157
60157
60157
60160
60160
60160
60160
60185
60185
60185
60190
60190
60192
60192
60197
60197
60200
60200
60200
60200
60200
60200
60200
60200
60200
60209
60209
60209
60211
60211
60214
60214
60225
60225
60225
60228
60228
60236
60236
60236
60236
60241
60241
60259
60259
60259
60259
60259
60259
60259
60259
60259
60259
60259
60263
60263
60263
60263
60263
60263
60263
60263
60263
60263
60263
60263
60270
60270
60270
60270
60273
60273
60273
60274
60274
60274
60275
60275
60282
60282
60282
60282
60282
60282
60284
60284
60284
60284
60284
60287
60287
60287
60289
60289
60290
60290
60295
60295
60296
60300
60300
60300
60300
60300
60300
60300
60300
60300
60300
60300
60300
60300
60300
60300
60305
60305
60308
60308
60320
60320
60332
60332
60332
60332
60334
60334
60343
60343
60343
60377
60377
60380
60380
60385
60385
60393
60393
60401
60401
60401
60401
60401
60401
60414
60414
60414
60417
60417
60417
60417
60417
60417
60419
60419
60419
60419
60419
60422
60422
60424
60424
60436
60436
60439
60439
60439
60439
60442
60442
60445
60445
60447
60447
60451
60451
60453
60453
60453
60453
60453
60454
60454
60454
60454
60454
60454
60475
60475
60478
60478
60479
60485
60485
60495
60495
60508
60508
60508
60508
60508
60508
60517
60517
60518
60518
60518
60518
60523
60523
60523
60527
60527
60527
60527
60527
60527
60533
60533
60533
60544
60544
60549
60549
60558
60558
60562
60562
60562
60562
60562
60562
60563
60563
60563
60563
60564
60564
60564
60567
60567
60567
60567
60568
60568
60568
60569
60569
60576
60576
60576
60576
60589
60589
60592
60592
60604
60604
60604
60610
60610
60620
60620
60620
60620
60620
60620
60620
60626
60636
60636
60644
60644
60647
60647
60657
60657
60659
60659
60663
60663
60663
60668
60668
60673
60673
60674
60674
60674
60674
60680
60681
60681
60681
60681
60681
60689
60689
60693
60693
60700
60700
60710
60710
60710
60710
60713
60713
60713
60713
60720
60720
60727
60727
60735
60735
60744
60744
60749
60749
60749
60753
60753
60753
60760
60760
60760
60760
60768
60768
60768
60768
60768
60768
60768
60768
60769
60769
60772
60772
60778
60778
60778
60778
60797
60797
60802
60802
60808
60808
60808
60813
60813
60813
60813
60815
60815
60824
60824
60829
60829
60829
60829
60838
60838
60841
60841
60841
60841
60841
60841
60843
60843
60845
60845
60845
60845
60845
60845
60845
60845
60845
60855
60855
60855
60855
60855
60855
60857
60857
60864
60864
60865
60865
60870
60870
60872
60872
60885
60885
60886
60886
60886
60886
60886
60886
60886
60891
60891
60894
60894
60895
60895
60895
60895
60902
60902
60902
60910
60910
60910
60910
60916
60916
60916
60916
60928
60928
60946
60946
60957
60957
60957
60960
60962
60962
60962
60962
60962
60962
60962
60962
60962
60962
60962
60962
60962
60970
60970
60970
60983
60983
60983
60983
60983
60983
60983
60993
60996
60996
60998
60998
60998
60998
60998
60998
60998
60998
60998
60998
60998
60998
60998
61002
61002
61002
61002
61002
61002
61002
61005
61005
61024
61024
61024
61024
61024
61024
61031
61031
61039
61039
61042
61042
61042
61049
61049
61067
61067
61079
61079
61079
61082
61082
61088
61088
61090
61090
61090
61090
61092
61096
61096
61099
61099
61101
61101
61105
61105
61105
61105
61105
61113
61113
61120
61120
61120
61123
61123
61123
61123
61125
61125
61125
61128
61135
61135
61145
61148
61148
61148
61148
61148
61148
61160
61160
61160
61160
61160
61162
61162
61165
61165
61166
61166
61166
61166
61166
61167
61167
61167
61168
61168
61171
61171
61174
61174
61174
61174
61194
61194
61194
61194
61202
61202
61202
61202
61217
61217
61217
61217
61217
61217
61217
61248
61248
61258
61258
61258
61258
61258
61258
61258
61258
61258
61261
61261
61263
61263
61263
61263
61263
61275
61275
61291
61291
61296
61296
61301
61301
61312
61312
61324
61324
61325
61325
61327
61331
61331
61331
61331
61331
61331
61332
61332
61332
61332
61336
61336
61339
61339
61339
61340
61340
61341
61341
61366
61366
61368
61368
61368
61368
61374
61374
61376
61376
61376
61376
61376
61376
61376
61376
61379
61379
61381
61381
61386
61388
61388
61403
61428
61428
61428
61428
61429
61429
61430
61430
61435
61435
61435
61436
61436
61440
61440
61440
61440
61444
61444
61446
61446
61446
61446
61446
61446
61446
61446
61448
61448
61457
61457
61464
61464
61464
61464
61470
61470
61470
61471
61484
61484
61486
61486
61499
61499
61499
61499
61499
61499
61505
61505
61505
61526
61526
61526
61526
61526
61526
61526
61526
61542
61542
61546
61546
61547
61547
61548
61548
61549
61549
61560
61560
61568
61568
61574
61574
61582
61583
61583
61583
61583
61583
61583
61587
61587
61589
61589
61590
61590
61591
61591
61591
61598
61598
61598
61598
61599
61599
61604
61604
61604
61604
61605
61608
61608
61611
61611
61611
61611
61612
61612
61612
61612
61612
61612
61621
61621
61621
61621
61621
61628
61628
61632
61632
61632
61632
61632
61632
61632
61632
61632
61632
61632
61632
61632
61632
61636
61636
61636
61637
61637
61637
61641
61643
61643
61647
61647
61648
61648
61657
61657
61658
61658
61661
61661
61665
61665
61667
61667
61667
61667
61672
61672
61672
61672
61676
61676
61679
61679
61679
61679
61680
61680
61689
61689
61692
61692
61698
61698
61701
61701
61703
61703
61712
61712
61719
61719
61719
61719
61719
61719
61719
61719
61736
61736
61736
61736
61736
61736
61736
61736
61736
61736
61736
61736
61736
61736
61736
61736
61738
61754
61754
61758
61758
61759
61759
61762
61762
61765
61765
61768
61768
61771
61771
61776
61776
61791
61791
61793
61793
61801
61801
61801
61804
61808
61808
61808
61813
61813
61824
61824
61842
61842
61842
61842
61842
61842
61843
61843
61850
61850
61850
61866
61866
61866
61867
61873
61885
61885
61885
61885
61888
61888
61890
61890
61890
61893
61893
61898
61898
61902
61902
61907
61907
61911
61911
61912
61912
61912
61912
61913
61913
61913
61921
61921
61924
61924
61927
61927
61927
61927
61927
61927
61927
61927
61927
61927
61934
61934
61935
61935
61936
61936
61941
61944
61944
61944
61952
61952
61952
61952
61955
61955
61956
61956
61966
61966
61967
61967
61971
61971
61983
61998
61998
61998
62004
62004
62004
62007
62007
62008
62008
62008
62016
62016
62016
62019
62019
62019
62024
62024
62026
62026
62029
62029
62032
62032
62032
62032
62032
62032
62032
62032
62032
62032
62032
62048
62048
62049
62049
62049
62049
62050
62050
62052
62052
62052
62073
62073
62073
62073
62074
62085
62085
62086
62087
62087
62092
62092
62094
62094
62096
62096
62099
62119
62119
62122
62122
62128
62128
62131
62131
62131
62132
62132
62133
62133
62140
62140
62151
62151
62157
62157
62161
62161
62166
62166
62166
62166
62172
62172
62173
62173
62179
62179
62201
62201
62201
62203
62203
62203
62203
62204
62204
62207
62207
62228
62228
62228
62229
62229
62230
62236
62236
62237
62237
62237
62237
62237
62237
62237
62237
62237
62237
62237
62237
62237
62237
62237
62237
62237
62237
62241
62241
62241
62241
62246
62246
62246
62255
62255
62255
62258
62258
62273
62273
62274
62274
62276
62276
62282
62282
62283
62283
62285
62285
62286
62286
62299
62299
62307
62307
62307
62307
62307
62307
62307
62313
62313
62313
62313
62326
62326
62330
62330
62334
62334
62334
62334
62334
62334
62335
62335
62335
62335
62335
62335
62336
62336
62346
62346
62347
62347
62347
62347
62347
62356
62356
62357
62385
62385
62392
62392
62392
62392
62411
62411
62411
62411
62411
62420
62420
62420
62420
62421
62421
62424
62424
62432
62432
62433
62433
62435
62435
62438
62438
62444
62444
62444
62447
62447
62460
62460
62462
62462
62475
62475
62481
62481
62482
62482
62485
62485
62489
62515
62515
62520
62524
62524
62524
62546
62546
62564
62564
62564
62569
62569
62569
62571
62571
62571
62571
62594
62594
62595
62595
62595
62598
62598
62601
62601
62609
62609
62610
62610
62610
62618
62618
62618
62618
62618
62618
62618
62622
62622
62623
62623
62638
62638
62644
62645
62645
62651
62653
62653
62653
62653
62654
62654
62654
62657
62657
62658
62658
62663
62663
62675
62675
62676
62676
62680
62680
62680
62680
62685
62685
62689
62689
62689
62691
62691
62691
62691
62691
62691
62697
62697
62701
62701
62701
62703
62703
62709
62709
62709
62709
62715
62715
62729
62729
62729
62729
62732
62732
62732
62733
62733
62733
62733
62733
62733
62733
62733
62734
62734
62734
62734
62734
62738
62738
62750
62750
62754
62754
62754
62756
62758
62758
62765
62765
62765
62767
62767
62768
62768
62770
62770
62772
62772
62774
62774
62777
62777
62780
62780
62780
62780
62782
62782
62782
62782
62791
62791
62795
62795
62815
62815
62827
62827
62832
62832
62832
62836
62836
62836
62838
62838
62838
62840
62840
62845
62845
62845
62845
62847
62847
62850
62850
62850
62853
62853
62855
62855
62855
62856
62856
62859
62859
62865
62865
62865
62870
62870
62870
62878
62878
62884
62884
62885
62885
62898
62898
62898
62900
62900
62900
62900
62905
62905
62912
62912
62912
62912
62914
62914
62914
62920
62920
62922
62922
62923
62923
62929
62929
62929
62929
62930
62930
62930
62935
62935
62939
62939
62939
62939
62939
62939
62939
62944
62944
62945
62945
62973
62975
62975
62978
62978
62978
62978
62979
62979
62985
62985
62987
62987
62987
62987
62987
62987
62987
62988
62988
62993
62993
62997
63009
63009
63014
63014
63017
63026
63026
63032
63032
63034
63034
63034
63035
63035
63039
63039
63039
63040
63040
63040
63047
63047
63048
63048
63048
63062
63062
63062
63062
63062
63062
63062
63073
63073
63088
63088
63096
63096
63096
63097
63097
63099
63107
63107
63107
63107
63107
63111
63111
63111
63111
63111
63113
63113
63120
63120
63120
63120
63124
63124
63124
63127
63127
63127
63127
63127
63127
63127
63127
63128
63128
63128
63136
63136
63136
63136
63136
63136
63136
63136
63138
63138
63139
63139
63143
63143
63143
63143
63150
63150
63150
63154
63154
63166
63166
63166
63174
63178
63178
63178
63178
63186
63186
63197
63197
63217
63217
63217
63217
63217
63217
63227
63227
63227
63234
63234
63234
63234
63242
63242
63242
63249
63249
63250
63250
63250
63250
63250
63256
63256
63256
63256
63256
63256
63256
63256
63256
63256
63256
63256
63256
63256
63256
63262
63262
63262
63262
63262
63262
63263
63263
63263
63263
63263
63263
63265
63265
63270
63270
63271
63271
63271
63271
63272
63272
63276
63276
63277
63277
63277
63277
63283
63283
63288
63288
63299
63299
63299
63304
63304
63305
63305
63305
63305
63308
63308
63308
63308
63315
63315
63315
63319
63319
63319
63322
63322
63324
63324
63334
63334
63334
63334
63336
63336
63336
63339
63339
63350
63350
63356
63356
63359
63359
63368
63368
63373
63373
63379
63379
63383
63383
63389
63389
63391
63397
63397
63416
63416
63421
63421
63421
63421
63422
63422
63422
63422
63435
63435
63435
63435
63451
63451
63453
63453
63460
63460
63460
63460
63460
63469
63469
63469
63469
63478
63478
63478
63478
63489
63489
63490
63490
63498
63498
63503
63503
63503
63505
63505
63505
63512
63523
63523
63540
63540
63540
63552
63552
63559
63559
63560
63560
63567
63567
63570
63570
63570
63571
63575
63575
63575
63575
63576
63576
63576
63576
63581
63581
63584
63584
63584
63584
63584
63584
63584
63584
63584
63584
63584
63584
63587
63587
63587
63588
63588
63588
63588
63588
63588
63588
63588
63589
63589
63594
63594
63594
63605
63605
63605
63605
63605
63610
63610
63615
63615
63620
63620
63622
63622
63622
63622
63625
63626
63626
63636
63636
63637
63637
63645
63645
63645
63648
63648
63648
63648
63650
63650
63650
63650
63653
63653
63653
63653
63658
63658
63658
63663
63663
63675
63675
63678
63678
63682
63682
63682
63693
63693
63693
63695
63695
63695
63697
63697
63705
63705
63705
63705
63705
63705
63705
63716
63716
63720
63720
63734
63734
63735
63735
63735
63735
63735
63739
63739
63757
63757
63757
63757
63757
63761
63761
63761
63761
63761
63761
63761
63761
63776
63776
63778
63778
63779
63779
63779
63779
63779
63779
63779
63782
63782
63782
63782
63782
63782
63782
63782
63782
63782
63782
63782
63782
63782
63784
63790
63790
63790
63790
63790
63793
63793
63804
63804
63806
63806
63807
63807
63807
63807
63807
63807
63807
63810
63810
63819
63819
63819
63819
63819
63822
63822
63834
63834
63834
63841
63841
63842
63842
63842
63842
63842
63855
63859
63859
63859
63859
63859
63868
63868
63870
63870
63870
63875
63875
63875
63875
63878
63878
63880
63880
63880
63880
63880
63880
63880
63889
63889
63889
63889
63900
63900
63902
63902
63913
63913
63919
63919
63919
63922
63922
63922
63924
63924
63927
63927
63928
63928
63933
63933
63933
63933
63936
63936
63939
63939
63948
63948
63948
63948
63948
63948
63949
63949
63949
63949
63963
63963
63963
63963
63966
63966
63975
63978
63980
63980
63980
63987
63987
64014
64014
64014
64014
64014
64014
64023
64023
64037
64037
64058
64058
64064
64064
64064
64065
64065
64065
64065
64067
64067
64067
64070
64070
64072
64072
64072
64072
64072
64072
64074
64074
64082
64082
64082
64082
64082
64082
64082
64102
64116
64122
64122
64123
64123
64123
64123
64135
64135
64135
64135
64147
64147
64148
64148
64148
64149
64149
64161
64161
64167
64167
64167
64167
64167
64167
64174
64174
64174
64174
64174
64177
64177
64185
64185
64191
64191
64193
64193
64193
64193
64193
64200
64200
64214
64214
64219
64219
64227
64227
64229
64229
64230
64230
64232
64232
64232
64232
64241
64241
64245
64245
64245
64246
64246
64246
64246
64256
64256
64262
64262
64264
64264
64278
64278
64278
64278
64278
64279
64279
64279
64295
64295
64295
64295
64295
64316
64316
64316
64326
64326
64327
64327
64327
64328
64328
64331
64331
64332
64332
64332
64332
64332
64332
64332
64334
64334
64344
64344
64344
64344
64346
64346
64346
64347
64347
64347
64347
64347
64347
64347
64347
64347
64347
64347
64347
64353
64353
64361
64361
64361
64361
64375
64375
64380
64380
64383
64383
64383
64383
64383
64383
64383
64383
64383
64390
64390
64393
64393
64393
64393
64393
64393
64395
64395
64397
64397
64401
64401
64401
64401
64401
64401
64401
64401
64401
64401
64401
64401
64403
64403
64403
64409
64409
64410
64410
64410
64414
64414
64414
64414
64414
64414
64414
64414
64414
64414
64418
64419
64419
64420
64420
64420
64429
64429
64438
64438
64438
64448
64448
64448
64448
64448
64448
64448
64448
64448
64451
64451
64452
64452
64453
64453
64453
64453
64453
64453
64454
64455
64455
64455
64458
64458
64460
64460
64460
64460
64473
64473
64473
64477
64477
64480
64480
64480
64493
64493
64493
64499
64501
64501
64510
64510
64510
64510
64516
64516
64516
64516
64516
64516
64521
64521
64521
64521
64535
64535
64547
64547
64547
64547
64555
64555
64555
64555
64555
64555
64557
64557
64560
64560
64561
64561
64561
64570
64570
64570
64570
64575
64575
64591
64591
64592
64592
64592
64592
64592
64598
64603
64603
64603
64603
64603
64603
64605
64605
64605
64605
64640
64644
64644
64651
64651
64657
64657
64657
64657
64663
64679
64679
64679
64687
64688
64688
64689
64695
64695
64699
64699
64699
64707
64707
64708
64708
64715
64715
64717
64723
64723
64723
64723
64725
64725
64725
64727
64727
64740
64748
64748
64751
64751
64752
64752
64753
64753
64753
64753
64758
64758
64758
64759
64759
64776
64776
64776
64789
64789
64791
64791
64792
64792
64792
64792
64792
64792
64793
64793
64796
64796
64796
64805
64805
64806
64806
64806
64806
64807
64807
64810
64810
64811
64811
64811
64811
64811
64819
64819
64819
64819
64821
64821
64821
64822
64822
64830
64830
64836
64836
64837
64837
64840
64840
64844
64844
64844
64853
64853
64853
64856
64856
64865
64865
64865
64865
64873
64873
64879
64879
64879
64879
64884
64884
64888
64888
64917
64917
64917
64917
64917
64923
64923
64928
64928
64928
64928
64931
64931
64931
64931
64936
64936
64936
64939
64939
64943
64943
64943
64943
64943
64943
64943
64943
64945
64945
64946
64946
64946
64947
64947
64947
64947
64954
64954
64957
64957
64957
64957
64957
64957
64964
64964
64965
64965
64965
64965
64965
64969
64969
64982
64982
64983
64983
64992
64992
65003
65003
65004
65004
65004
65005
65005
65008
65008
65010
65010
65015
65015
65015
65017
65017
65022
65022
65022
65022
65030
65030
65052
65052
65052
65052
65052
65052
65061
65061
65069
65069
65069
65070
65070
65074
65088
65088
65089
65089
65100
65100
65102
65103
65103
65103
65119
65119
65119
65119
65128
65128
65130
65130
65153
65153
65153
65153
65153
65153
65156
65156
65163
65163
65163
65163
65164
65164
65164
65167
65167
65181
65181
65204
65204
65204
65208
65208
65219
65219
65219
65246
65246
65246
65246
65248
65260
65265
65265
65283
65284
65284
65285
65285
65285
65286
65286
65286
65286
65302
65302
65302
65302
65306
65306
65310
65310
65321
65321
65324
65324
65324
65327
65327
65327
65329
65329
65333
65333
65336
65336
65344
65344
65344
65345
65345
65348
65348
65348
65348
65348
65350
65350
65350
65352
65352
65352
65359
65359
65370
65377
65377
65380
65380
65381
65384
65384
65392
65392
65392
65392
65396
65396
65396
65396
65400
65400
65407
65407
65410
65410
65411
65411
65415
65415
65424
65424
65424
65424
65427
65427
65438
65438
65438
65438
65438
65439
65439
65439
65456
65456
65456
65460
65460
65483
65483
65487
65487
65496
65496
65498
65498
65500
65500
65500
65506
65506
65513
65513
65517
65517
65539
65539
65540
65540
65540
65540
65540
65540
65544
65544
65546
65546
65548
65548
65548
65548
65549
65549
65549
65549
65553
65553
65553
65553
65553
65554
65554
65567
65567
65570
65570
65570
65570
65570
65570
65570
65571
65571
65571
65574
65574
65574
65574
65574
65574
65578
65578
65582
65582
65585
65585
65585
65589
65589
65589
65589
65596
65596
65596
65607
65607
65616
65616
65616
65616
65616
65620
65621
65621
65621
65631
65631
65635
65635
65635
65635
65635
65635
65635
65635
65635
65635
65641
65641
65642
65642
65642
65642
65648
65648
65651
65651
65651
65692
65692
65693
65693
65693
65698
65698
65698
65698
65698
65698
65714
65714
65725
65725
65728
65728
65731
65731
65731
65731
65732
65736
65736
65737
65737
65737
65737
65738
65738
65743
65743
65743
65743
65743
65755
65755
65757
65757
65757
65757
65758
65758
65763
65763
65763
65764
65764
65765
65765
65765
65765
65774
65774
65774
65774
65774
65774
65781
65781
65791
65791
65794
65794
65796
65796
65798
65798
65798
65798
65798
65798
65806
65806
65806
65812
65812
65818
65818
65818
65822
65822
65822
65822
65822
65822
65827
65827
65827
65828
65828
65832
65832
65832
65838
65838
65838
65838
65838
65838
65838
65846
65846
65847
65847
65847
65850
65850
65850
65850
65852
65852
65857
65857
65857
65860
65870
65870
65877
65877
65904
65904
65904
65905
65905
65905
65910
65910
65916
65916
65916
65916
65918
65918
65921
65921
65925
65925
65932
65932
65935
65935
65939
65939
65940
65940
65942
65942
65942
65943
65943
65943
65943
65954
65954
65954
65957
65957
65957
65963
65963
65963
65963
65978
65978
65980
65980
65992
65992
65996
65996
66002
66002
66002
66002
66007
66007
66016
66016
66019
66019
66025
66025
66025
66025
66035
66035
66035
66036
66036
66042
66046
66046
66054
66054
66055
66055
66055
66057
66057
66067
66067
66069
66069
66073
66073
66075
66075
66075
66075
66081
66081
66082
66082
66088
66088
66091
66091
66091
66096
66096
66104
66107
66107
66110
66110
66110
66113
66113
66113
66113
66115
66115
66116
66116
66120
66120
66129
66129
66130
66130
66136
66136
66137
66137
66137
66151
66151
66153
66153
66153
66154
66154
66160
66160
66160
66160
66160
66160
66160
66160
66160
66160
66167
66167
66170
66170
66170
66170
66174
66174
66176
66176
66180
66180
66180
66180
66180
66180
66199
66199
66203
66205
66211
66211
66211
66211
66211
66212
66212
66212
66212
66212
66217
66217
66219
66219
66223
66223
66230
66230
66230
66233
66233
66233
66237
66237
66237
66237
66237
66237
66238
66238
66238
66240
66240
66240
66240
66240
66240
66243
66243
66243
66243
66243
66243
66243
66243
66243
66243
66245
66245
66259
66259
66262
66262
66263
66263
66263
66263
66263
66270
66270
66274
66274
66278
66278
66279
66279
66293
66293
66294
66294
66302
66302
66307
66307
66314
66314
66314
66314
66314
66314
66314
66315
66315
66318
66318
66319
66319
66319
66320
66320
66330
66330
66330
66332
66332
66335
66335
66337
66337
66337
66337
66338
66338
66340
66340
66342
66342
66342
66344
66344
66347
66347
66364
66364
66364
66369
66369
66370
66370
66370
66370
66396
66396
66398
66398
66402
66402
66402
66407
66407
66408
66408
66416
66416
66417
66417
66417
66417
66417
66417
66421
66421
66428
66428
66433
66433
66433
66439
66439
66450
66450
66450
66450
66453
66453
66453
66454
66454
66466
66466
66466
66480
66480
66483
66483
66484
66484
66490
66490
66493
66493
66493
66493
66493
66493
66500
66500
66502
66502
66512
66512
66516
66516
66519
66519
66522
66522
66531
66531
66531
66534
66534
66534
66536
66536
66536
66537
66537
66537
66537
66538
66538
66539
66539
66543
66543
66555
66555
66555
66555
66555
66561
66561
66562
66562
66566
66566
66566
66566
66566
66566
66566
66568
66568
66568
66570
66574
66574
66574
66582
66582
66585
66585
66595
66595
66616
66616
66618
66618
66627
66627
66631
66631
66631
66634
66634
66636
66636
66636
66636
66636
66637
66637
66642
66642
66643
66644
66644
66644
66648
66648
66648
66648
66655
66655
66656
66656
66658
66658
66659
66659
66659
66659
66667
66676
66676
66681
66681
66681
66687
66687
66687
66687
66687
66687
66687
66687
66694
66694
66694
66694
66694
66702
66702
66702
66702
66705
66705
66706
66706
66714
66714
66718
66718
66722
66722
66722
66722
66726
66726
66726
66726
66726
66726
66727
66727
66727
66731
66731
66733
66733
66737
66737
66746
66746
66746
66750
66750
66751
66751
66760
66760
66770
66770
66771
66771
66778
66778
66778
66782
66782
66785
66785
66792
66792
66793
66793
66797
66797
66797
66799
66799
66799
66799
66807
66807
66807
66812
66812
66812
66813
66813
66817
66817
66820
66820
66820
66823
66823
66823
66825
66825
66829
66829
66829
66833
66833
66850
66850
66850
66850
66850
66850
66854
66854
66858
66858
66858
66859
66859
66880
66880
66888
66888
66888
66894
66894
66894
66894
66894
66894
66894
66902
66902
66906
66906
66906
66915
66915
66916
66916
66919
66919
66919
66921
66922
66922
66923
66923
66926
66926
66926
66926
66931
66931
66932
66935
66935
66935
66935
66935
66939
66941
66941
66949
66949
66950
66950
66961
66961
66961
66961
66961
66970
66970
66971
66971
66971
66971
66975
66975
66978
66978
66979
66980
66980
66991
66992
66992
66996
66996
66996
66997
67002
67002
67005
67005
67007
67007
67046
67046
67046
67046
67046
67071
67081
67081
67081
67081
67094
67094
67103
67103
67108
67108
67108
67108
67111
67111
67111
67111
67111
67117
67117
67120
67120
67138
67138
67156
67156
67157
67157
67157
67157
67158
67158
67159
67159
67161
67161
67161
67161
67177
67179
67179
67182
67182
67182
67182
67183
67183
67185
67185
67190
67190
67190
67190
67190
67199
67199
67199
67199
67199
67199
67199
67201
67201
67201
67201
67201
67201
67201
67201
67201
67204
67204
67204
67219
67219
67219
67219
67221
67224
67224
67236
67236
67236
67254
67254
67258
67258
67258
67263
67263
67263
67263
67264
67264
67264
67264
67268
67268
67271
67271
67288
67288
67288
67288
67288
67315
67315
67316
67316
67316
67316
67316
67321
67321
67326
67326
67326
67326
67331
67331
67338
67338
67339
67339
67339
67344
67344
67346
67346
67356
67356
67360
67375
67375
67375
67378
67378
67379
67379
67379
67379
67385
67385
67405
67405
67406
67406
67406
67406
67419
67419
67420
67420
67420
67420
67422
67422
67422
67426
67426
67435
67435
67438
67438
67438
67438
67438
67438
67438
67438
67438
67438
67438
67438
67441
67448
67452
67452
67452
67452
67452
67452
67456
67456
67459
67459
67459
67459
67459
67459
67459
67459
67459
67459
67460
67460
67460
67460
67461
67461
67461
67464
67464
67464
67480
67480
67499
67499
67500
67500
67500
67500
67500
67500
67500
67501
67501
67501
67502
67502
67502
67502
67502
67502
67502
67502
67503
67503
67507
67507
67508
67508
67508
67508
67519
67519
67519
67519
67522
67522
67524
67524
67529
67529
67529
67529
67529
67535
67535
67536
67536
67538
67538
67538
67538
67539
67539
67539
67546
67546
67546
67546
67546
67547
67547
67547
67547
67547
67547
67548
67548
67555
67555
67555
67555
67555
67556
67556
67556
67557
67557
67562
67562
67565
67565
67566
67566
67582
67582
67582
67592
67592
67592
67594
67594
67601
67601
67604
67604
67610
67610
67617
67617
67617
67617
67618
67618
67619
67619
67627
67628
67628
67629
67629
67629
67631
67631
67631
67631
67631
67631
67631
67631
67631
67631
67631
67631
67631
67641
67641
67654
67654
67654
67660
67660
67660
67660
67676
67676
67676
67676
67676
67678
67678
67678
67678
67693
67703
67703
67706
67706
67706
67706
67706
67706
67706
67709
67709
67715
67715
67727
67727
67732
67732
67732
67732
67732
67732
67732
67732
67732
67737
67737
67737
67739
67739
67739
67739
67751
67751
67751
67751
67751
67751
67759
67759
67772
67772
67783
67783
67784
67784
67784
67784
67789
67789
67789
67789
67789
67798
67798
67804
67804
67804
67804
67804
67804
67806
67806
67806
67806
67806
67806
67806
67806
67806
67806
67806
67806
67819
67819
67828
67828
67828
67828
67828
67828
67831
67831
67831
67831
67831
67831
67831
67850
67850
67850
67850
67850
67850
67850
67850
67850
67852
67852
67854
67854
67854
67854
67854
67854
67854
67854
67854
67854
67854
67854
67854
67854
67854
67854
67856
67856
67856
67856
67856
67856
67856
67862
67862
67866
67866
67872
67872
67874
67874
67876
67876
67876
67880
67880
67880
67883
67883
67883
67883
67883
67896
67896
67896
67896
67896
67896
67907
67907
67908
67908
67910
67910
67911
67911
67911
67929
67929
67934
67934
67939
67939
67941
67947
67947
67958
67958
67959
67959
67959
67977
67981
67981
67981
67989
67989
67989
67989
67989
67989
67989
67989
67993
67993
67993
67993
67994
67994
67994
67995
67995
67995
67995
67995
67998
67998
68001
68001
68003
68003
68011
68011
68012
68012
68012
68012
68012
68012
68014
68014
68015
68015
68016
68016
68016
68024
68024
68026
68026
68027
68027
68032
68032
68037
68037
68039
68039
68046
68046
68046
68046
68046
68047
68057
68057
68057
68057
68058
68058
68062
68062
68069
68069
68071
68071
68075
68075
68075
68076
68076
68078
68078
68080
68080
68080
68082
68082
68094
68094
68100
68103
68110
68110
68110
68124
68124
68128
68128
68128
68128
68128
68128
68128
68128
68128
68128
68128
68128
68128
68128
68132
68132
68133
68133
68140
68140
68149
68156
68156
68169
68169
68169
68169
68170
68170
68171
68171
68175
68175
68180
68180
68180
68180
68180
68180
68180
68180
68189
68189
68193
68193
68194
68194
68194
68194
68198
68198
68198
68198
68198
68198
68198
68198
68205
68205
68207
68207
68208
68208
68208
68208
68208
68208
68213
68213
68220
68220
68229
68229
68229
68229
68232
68232
68232
68232
68232
68232
68233
68233
68234
68234
68234
68234
68237
68237
68237
68248
68253
68253
68255
68255
68256
68256
68256
68258
68258
68258
68258
68258
68258
68258
68272
68272
68272
68273
68273
68280
68280
68286
68286
68286
68286
68286
68289
68289
68289
68293
68293
68293
68293
68293
68293
68293
68293
68295
68295
68337
68337
68337
68337
68346
68354
68360
68360
68364
68364
68382
68382
68382
68409
68415
68415
68415
68423
68423
68423
68423
68423
68423
68432
68432
68442
68442
68442
68442
68451
68451
68451
68451
68462
68462
68462
68462
68469
68469
68469
68469
68470
68470
68470
68476
68476
68476
68476
68479
68479
68479
68479
68479
68479
68479
68479
68479
68483
68483
68486
68486
68487
68487
68488
68506
68506
68528
68528
68532
68532
68532
68542
68542
68548
68548
68548
68548
68552
68552
68552
68552
68561
68561
68561
68564
68568
68568
68572
68572
68572
68572
68578
68578
68578
68578
68579
68579
68579
68579
68579
68580
68580
68584
68584
68584
68584
68584
68584
68587
68587
68587
68587
68587
68590
68612
68612
68613
68613
68624
68624
68624
68624
68629
68629
68635
68635
68635
68635
68636
68636
68636
68641
68641
68647
68647
68647
68656
68656
68656
68667
68667
68667
68667
68667
68667
68675
68675
68678
68678
68684
68684
68684
68684
68684
68684
68685
68685
68688
68688
68688
68688
68688
68688
68688
68688
68697
68697
68698
68698
68698
68698
68698
68698
68708
68708
68723
68723
68723
68723
68723
68725
68725
68725
68725
68725
68725
68732
68732
68732
68732
68732
68735
68735
68735
68735
68736
68736
68736
68736
68736
68739
68739
68739
68740
68740
68740
68748
68748
68749
68749
68749
68750
68750
68750
68750
68759
68759
68760
68760
68760
68760
68768
68768
68768
68768
68768
68784
68784
68793
68793
68793
68793
68799
68799
68799
68799
68808
68808
68808
68809
68809
68809
68809
68809
68809
68811
68811
68812
68813
68813
68813
68813
68815
68815
68820
68820
68820
68820
68831
68831
68838
68838
68850
68850
68850
68850
68850
68857
68857
68865
68865
68867
68867
68867
68867
68867
68867
68867
68867
68874
68874
68874
68874
68874
68874
68874
68880
68880
68880
68880
68880
68880
68888
68888
68920
68920
68920
68930
68930
68930
68930
68930
68930
68930
68930
68930
68930
68934
68934
68934
68934
68934
68934
68934
68934
68939
68939
68942
68942
68943
68943
68946
68946
68949
68949
68958
68958
68961
68961
68961
68963
68963
68974
68974
68976
68976
68985
68985
68985
68986
68986
69012
69012
69022
69022
69023
69023
69024
69024
69028
69028
69030
69030
69041
69041
69041
69049
69049
69056
69056
69056
69056
69056
69056
69056
69056
69056
69056
69056
69056
69057
69057
69058
69058
69070
69070
69072
69073
69073
69086
69086
69087
69095
69103
69103
69115
69115
69116
69116
69126
69126
69127
69139
69139
69139
69140
69140
69151
69151
69151
69151
69164
69164
69169
69169
69173
69173
69173
69173
69173
69173
69180
69180
69180
69201
69201
69207
69207
69211
69211
69223
69223
69223
69223
69224
69224
69228
69228
69237
69237
69237
69242
69242
69263
69263
69263
69263
69263
69263
69263
69263
69263
69263
69263
69263
69263
69263
69265
69265
69265
69265
69265
69267
69267
69267
69267
69268
69268
69303
69303
69303
69303
69303
69303
69305
69305
69311
69311
69312
69312
69331
69331
69331
69331
69339
69339
69354
69367
69367
69369
69369
69369
69371
69371
69375
69375
69375
69375
69378
69378
69378
69378
69380
69380
69392
69392
69392
69392
69398
69398
69404
69404
69408
69408
69412
69412
69413
69413
69413
69413
69414
69414
69414
69437
69437
69437
69437
69442
69442
69442
69442
69443
69443
69443
69443
69443
69443
69443
69443
69443
69443
69443
69443
69444
69444
69445
69445
69445
69445
69447
69447
69448
69448
69448
69459
69459
69492
69498
69498
69504
69504
69504
69504
69506
69506
69506
69506
69506
69506
69506
69506
69506
69506
69507
69507
69511
69511
69517
69538
69538
69542
69542
69542
69549
69551
69556
69556
69556
69556
69557
69557
69557
69557
69562
69562
69566
69566
69579
69579
69581
69581
69581
69582
69582
69593
69593
69593
69593
69593
69593
69593
69593
69593
69593
69608
69608
69610
69610
69610
69619
69619
69619
69619
69621
69621
69621
69621
69621
69621
69632
69632
69632
69636
69636
69636
69639
69639
69639
69649
69649
69649
69649
69649
69659
69659
69664
69664
69664
69664
69664
69664
69666
69666
69669
69669
69669
69669
69669
69669
69669
69669
69669
69669
69680
69680
69683
69683
69696
69696
69696
69696
69710
69710
69720
69720
69727
69727
69731
69731
69749
69749
69749
69749
69749
69749
69749
69757
69757
69757
69757
69757
69757
69757
69757
69767
69774
69774
69774
69774
69774
69774
69800
69800
69802
69802
69802
69802
69802
69802
69805
69805
69807
69807
69818
69818
69825
69825
69831
69834
69834
69842
69842
69844
69844
69857
69857
69861
69861
69867
69867
69867
69868
69872
69872
69873
69873
69873
69876
69876
69876
69884
69884
69884
69884
69887
69887
69893
69893
69912
69912
69912
69912
69921
69921
69930
69932
69932
69932
69932
69932
69932
69932
69932
69934
69934
69934
69938
69938
69938
69956
69956
69959
69959
69959
69959
69959
69959
69964
69964
69964
69985
69986
69986
69987
69987
69987
69987
69993
69993
69995
69995
69997
69997
69997
69997
69997
69997
69998
69998
In [123]:
word = 2
dim = 3
embd.weight[:,dim]
Out[123]:
Variable containing:
0.0000
0.0955
-0.0327
⋮
-0.0173
-0.0467
0.0217
[torch.FloatTensor of size 147760]
In [75]:
dataset.data_tensor
Out[75]:
3.0000e+00 5.4000e+01 5.7364e+04 ... 0.0000e+00 0.0000e+00 0.0000e+00
3.0000e+00 2.7000e+01 4.3000e+01 ... 0.0000e+00 0.0000e+00 0.0000e+00
2.3000e+01 5.4800e+02 1.0875e+05 ... 0.0000e+00 0.0000e+00 0.0000e+00
... ⋱ ...
1.3660e+03 2.2170e+03 2.4590e+03 ... 0.0000e+00 0.0000e+00 0.0000e+00
1.6400e+02 1.6300e+02 7.3000e+01 ... 0.0000e+00 0.0000e+00 0.0000e+00
8.0000e+00 5.6900e+02 1.6600e+02 ... 0.0000e+00 0.0000e+00 0.0000e+00
[torch.LongTensor of size 70000x1014]
In [1]:
def data_iterator(data_path):
with gzip.open(data_path, 'rt') as f:
for line in f:
target, sep, words = line.partition("\t")
words, target = words.split(), target.split()
if len(words):
target = torch.Tensor([float(v) for v in target])
yield words, target
In [3]:
def make_tensor_dataset(data_path, word_to_ix, max_set_size=0, save_path=None):
if not max_set_size:
for (review, target) in data_iterator(data_path):
review = [(word in word_to_ix) for word in review]
max_set_size = max(sum(review),max_set_size)
reviews, targets = [], []
for (review, target) in data_iterator(data_path):
review = [word_to_ix[word] + 1 for word in review if word in word_to_ix]
review = torch.LongTensor(review)
review = pad_tensor(review, 0, 0, max_set_size)
reviews.append(review)
targets.append(target)
reviews = torch.stack(reviews)
targets = torch.stack(targets)
dataset = TensorDataset(reviews, targets)
if save_path:
torch.save(dataset, save_path)
else:
return dataset
In [ ]:
root = '/Users/Max/data/beer_reviews'
data_file = 'reviews.aspect3.train.txt.gz'
embd_file = 'review+wiki.filtered.200.txt.gz'
save_path = os.path.join(root,'pytorch/aspect3_train.pt')
data_path = os.path.join(root, data_file)
embd_path = os.path.join(root, embd_file)
embd_path =
In [160]:
import torch
import torch.nn as nn
batch_size = 20
input_dim = 12
hidden_dim = 18
output_dim = 2
layer1 = nn.Linear(input_dim, hidden_dim)
batch_norm = nn.BatchNorm1d(hidden_dim)
layer2 = nn.Linear(hidden_dim, output_dim)
model = nn.Sequential(layer1, batch_norm, layer2)
In [206]:
layer1.train()
x = Variable(torch.randn(batch_size, input_dim))
#model2 = nn.Sequential(layer1, layer2)
#y1 = model(x)
#y2 = model2(x)
y = layer2(batch_norm(layer1(x)))
batch_norm(layer1(x))
Out[206]:
Variable containing:
Columns 0 to 9
1.3708 0.7502 0.0854 0.4266 0.0059 -0.1973 -0.7639 1.1644 -0.0341 0.4740
-2.1605 -0.4336 -0.0277 0.0453 -0.0324 0.2395 0.7752 -0.8815 -0.3543 0.0030
0.0925 -0.2283 0.0528 0.1211 0.0424 -0.0172 0.3966 -0.0855 -0.1579 -0.7209
1.5900 0.3261 -0.0083 -0.0961 0.0140 -0.3643 -0.7462 -0.1769 0.0418 -0.5172
1.0453 -0.6380 0.0516 -1.0351 0.0140 0.1042 0.1187 0.1786 0.0123 0.3371
-0.6965 0.5642 0.0196 0.7898 -0.0998 0.2735 0.3917 -0.5570 0.6402 0.7307
-0.1948 -0.3369 0.0310 -0.0530 0.0530 0.0680 0.0928 -0.6833 -0.4211 -0.6430
0.0567 0.6595 0.0190 -0.5103 -0.0512 0.1156 1.5776 0.5863 0.5003 -0.1485
-0.5632 0.0859 -0.0170 0.0738 -0.0524 -0.0546 -0.0976 -0.2792 0.2557 0.0196
0.8496 0.6132 -0.0932 0.0716 -0.0030 -0.1303 -0.3261 -0.4732 0.2063 0.0446
0.5098 0.0896 -0.0007 0.0563 -0.0718 -0.3349 -0.4187 0.3595 0.0789 -0.1252
0.6247 -0.1313 0.0327 -0.5086 0.0768 -0.2185 0.8786 1.5757 0.0865 -0.7573
0.4809 -0.3735 0.2100 -0.1403 0.0099 0.0204 -0.6580 0.0749 -0.1049 0.5140
-0.8219 0.0379 -0.1442 0.4321 0.0286 0.4850 0.1181 0.7593 -0.0393 0.2072
0.3075 -0.3719 0.0307 0.4914 -0.0017 0.3898 0.1642 -0.2032 -0.1082 -0.1983
-1.3176 0.0393 -0.0863 -0.3727 0.0290 0.1533 0.0677 -0.0086 0.1038 0.4343
-1.7190 0.1884 -0.1362 0.4838 0.0034 -0.0473 -0.2041 -0.2901 0.2897 -0.0307
0.2579 -0.8078 -0.0316 -0.2068 0.0526 0.0346 -0.0256 0.8078 -0.4733 0.1306
0.2444 0.1439 -0.0412 0.1064 0.0007 -0.2785 -0.9089 -1.3537 -0.2037 0.0170
0.0433 -0.1768 0.0536 -0.1752 -0.0182 -0.2411 -0.4321 -0.5143 -0.3186 0.2288
Columns 10 to 17
-0.8878 -1.2889 -0.0631 -0.8319 0.2964 -0.4162 0.7122 0.1537
0.0180 0.5707 0.1630 0.4177 -0.2165 2.2398 -0.6341 -0.0389
0.7259 0.1838 -0.1087 -0.2717 0.3461 -0.7050 0.1080 0.0323
0.1764 -0.1059 -0.2723 -0.4512 0.4409 -1.5727 1.3228 0.0069
0.3173 0.2923 0.0393 0.8371 -0.6081 0.5499 -1.0652 -0.0576
-0.1768 -0.2841 0.2145 1.1334 -0.2324 0.2733 -0.7594 -0.0043
0.6501 0.4862 -0.1047 -0.4299 0.1823 0.4335 0.3833 0.0033
-0.6962 0.1220 0.2057 0.7546 -0.9799 0.1582 0.1597 -0.0950
-0.3806 0.4902 -0.1220 -0.3064 -0.1467 -0.6896 0.4806 -0.0286
0.3374 -1.0077 0.3520 0.3792 0.2926 -0.1976 -0.1675 0.0007
-0.1853 -0.1868 -0.2438 -0.0382 0.2658 -1.1327 0.3039 0.0474
-0.3571 0.1858 -0.1336 -1.0981 -0.1728 -2.0902 0.8446 0.0016
0.3139 -0.0933 -0.1915 -0.0149 0.5271 0.2286 -1.0670 0.0990
0.3429 -0.0013 0.2320 0.7481 -0.4858 0.9982 -1.0078 -0.0660
0.9053 0.4039 -0.1386 0.6127 -0.4394 0.1606 -0.3639 0.0142
-0.4390 0.3879 0.2321 0.1778 -0.1387 1.0964 -0.5027 -0.1201
-0.5312 0.6193 -0.0295 -0.7819 0.2519 -0.9717 0.8376 -0.0798
0.1749 -0.2208 0.0248 -0.0329 -0.1742 0.5701 -0.6477 0.0428
-0.1377 -0.2122 -0.0231 -0.6732 0.5091 0.2038 1.1216 0.0241
-0.1705 -0.3411 -0.0324 -0.1301 0.4823 0.8634 -0.0591 0.0639
[torch.FloatTensor of size 20x18]
In [18]:
import argparse
import os
import shutil
import torch
import torch.nn as nn
from torch.autograd import Variable
from torch.utils.data.dataloader import DataLoader
from dpp_nets.utils.io import make_embd, make_tensor_dataset
from dpp_nets.layers.layers import KernelVar, ReinforceSampler, PredNet, ReinforceTrainer
parser = argparse.ArgumentParser(description='REINFORCE VIMCO Trainer')
parser.add_argument('-a', '--aspect', type=str, choices=['aspect1', 'aspect2', 'aspect3', 'all'],
help='what is the target?', required=True)
parser.add_argument('-b', '--batch-size', default=50, type=int,
metavar='N', help='mini-batch size (default: 50)')
parser.add_argument('--epochs', default=30, type=int, metavar='N',
help='number of total epochs to run')
parser.add_argument('--lr_k', '--learning_rate_k', default=1e-3, type=float,
metavar='LRk', help='initial learning rate for kernel net')
parser.add_argument('--lr_p', '--learning_rate_p', default=1e-4, type=float,
metavar='LRp', help='initial learning rate for pred net')
parser.add_argument('--reg', type=float, required=True,
metavar='reg', help='regularization constant')
parser.add_argument('--reg_mean', type=float, required=True,
metavar='reg_mean', help='regularization_mean')
parser.add_argument('--alpha_iter', type=int, required=True,
metavar='alpha_iter', help='How many subsets to sample from DPP? At least 2!')
# Pre-training
parser.add_argument('--pretrain_kernel', type=str, default="",
metavar='pretrain_kernel', help='Give name of pretrain_kernel')
parser.add_argument('--pretrain_pred', type=str, default="",
metavar='pretrain_pred', help='Give name of pretrain_pred')
# Train locally or remotely?
parser.add_argument('--remote', type=int,
help='training locally or on cluster?', required=True)
# Burnt in Paths..
parser.add_argument('--data_path_local', type=str, default='/Users/Max/data/beer_reviews',
help='where is the data folder locally?')
parser.add_argument('--data_path_remote', type=str, default='/cluster/home/paulusm/data/beer_reviews',
help='where is the data folder remotely?')
parser.add_argument('--ckp_path_local', type=str, default='/Users/Max/checkpoints/beer_reviews',
help='where is the checkpoints folder locally?')
parser.add_argument('--ckp_path_remote', type=str, default='/cluster/home/paulusm/checkpoints/beer_reviews',
help='where is the data folder remotely?')
parser.add_argument('--pretrain_path_local', type=str, default='/Users/Max/checkpoints/beer_reviews',
help='where is the pre_trained model? locally')
parser.add_argument('--pretrain_path_remote', type=str, default='/cluster/home/paulusm/pretrain/beer_reviews',
help='where is the data folder? remotely')
def train(loader, trainer, optimizer):
trainer.train()
for t, (review, target) in enumerate(loader):
review = Variable(review)
if args.aspect == 'all':
target = Variable(target[:,:3]).type(dtype)
else:
target = Variable(target[:,int(args.aspect[-1])]).type(dtype)
loss = trainer(review, target)
optimizer.zero_grad()
loss.backward()
optimizer.step()
print('Weight mean is: ', trainer.kernel_net.layer1.weight.mean())
print('Weight max is: ', trainer.kernel_net.layer1.weight.max())
print('Weight min is: ', trainer.kernel_net.layer1.weight.min())
print('Grad max is: ', trainer.kernel_net.layer1.weight.grad.max())
print('Grad min is: ', trainer.kernel_net.layer1.weight.grad.min())
print("trained one batch")
def validate(loader, trainer):
"""
Note, we keep the sampling as before.
i.e what ever alpha_iter is, we take it.
"""
trainer.eval()
total_loss = 0.0
total_pred_loss = 0.0
total_reg_loss = 0.0
for i, (review, target) in enumerate(loader, 1):
review = Variable(review, volatile=True)
if args.aspect == 'all':
target = Variable(target[:,:3], volatile=True).type(dtype)
else:
target = Variable(target[:,int(args.aspect[-1])], volatile=True).type(dtype)
trainer(review, target)
loss = trainer.loss.data[0]
pred_loss = trainer.pred_loss.data[0]
reg_loss = trainer.reg_loss.data[0]
delta = loss - total_loss
total_loss += (delta / i)
delta = pred_loss - total_pred_loss
total_pred_loss += (delta / i)
delta = reg_loss - total_reg_loss
total_reg_loss += (delta / i)
# print("validated one batch")
return total_loss, total_pred_loss, total_reg_loss
def adjust_learning_rate(optimizer, epoch):
"""Sets the learning rate to the initial LR multiplied by factor 0.1 for every 10 epochs"""
if not ((epoch + 1) % 10):
factor = 0.1
for param_group in optimizer.param_groups:
param_group['lr'] = param_group['lr'] * factor
def log(epoch, loss, pred_loss, reg_loss):
string = str.join(" | ", ['Epoch: %d' % (epoch), 'V Loss: %.5f' % (loss),
'V Pred Loss: %.5f' % (pred_loss), 'V Reg Loss: %.5f' % (reg_loss)])
if args.remote:
destination = os.path.join(args.ckp_path_remote, args.aspect + 'reg' + str(args.reg) + 'reg_mean' + str(args.reg_mean) +
'alpha_iter' + str(args.alpha_iter) + str(args.pretrain_kernel) + str(args.pretrain_pred) + 'reinforce_log.txt')
else:
destination = os.path.join(args.ckp_path_local, args.aspect + 'reg' + str(args.reg) + 'reg_mean' + str(args.reg_mean) +
'alpha_iter' + str(args.alpha_iter) + str(args.pretrain_kernel) + str(args.pretrain_pred) + 'reinforce_log.txt')
with open(destination, 'a') as log:
log.write(string + '\n')
def save_checkpoint(state, is_best, filename='reinforce_checkpoint.pth.tar'):
"""
State is a dictionary that cotains valuable information to be saved.
"""
if args.remote:
destination = os.path.join(args.ckp_path_remote, args.aspect + 'reg' + str(args.reg) + 'reg_mean' + str(args.reg_mean) +
'alpha_iter' + str(args.alpha_iter) + str(args.pretrain_kernel) + str(args.pretrain_pred) + str(args.filename))
else:
destination = os.path.join(args.ckp_path_local, args.aspect + 'reg' + str(args.reg) + 'reg_mean' + str(args.reg_mean) +
'alpha_iter' + str(args.alpha_iter) + str(args.pretrain_kernel) + str(args.pretrain_pred) + str(args.filename))
torch.save(state, destination)
if is_best:
if args.remote:
best_destination = os.path.join(args.ckp_path_remote, args.aspect + 'reg' + str(args.reg) + 'reg_mean' + str(args.reg_mean) +
'alpha_iter' + str(args.alpha_iter) + str(args.pretrain_kernel) + str(args.pretrain_pred) + 'reinforce_best.pth.tar')
else:
best_destination = os.path.join(args.ckp_path_local, args.aspect + 'reg' + str(args.reg) + 'reg_mean' + str(args.reg_mean) +
'alpha_iter' + str(args.alpha_iter) + str(args.pretrain_kernel) + str(args.pretrain_pred) + 'reinforce_best.pth.tar')
shutil.copyfile(destination, best_destination)
In [19]:
global args, lowest_loss, dtype
args = parser.parse_args("-a aspect3 --remote 0 --reg 0.1 --reg_mean 10 --alpha_iter 4 --lr_k 1e-4".split())
lowest_loss = 100 # arbitrary high number as upper bound for loss
dtype = torch.DoubleTensor
### Load data
if args.remote:
# print('training remotely')
train_path = os.path.join(args.data_path_remote, str.join(".",['reviews', args.aspect, 'train.txt.gz']))
val_path = os.path.join(args.data_path_remote, str.join(".",['reviews', args.aspect, 'heldout.txt.gz']))
embd_path = os.path.join(args.data_path_remote, 'review+wiki.filtered.200.txt.gz')
else:
# print('training locally')
train_path = os.path.join(args.data_path_local, str.join(".",['reviews', args.aspect, 'train.txt.gz']))
val_path = os.path.join(args.data_path_local, str.join(".",['reviews', args.aspect, 'heldout.txt.gz']))
embd_path = os.path.join(args.data_path_local, 'review+wiki.filtered.200.txt.gz')
embd, word_to_ix = make_embd(embd_path)
train_set = make_tensor_dataset(train_path, word_to_ix)
val_set = make_tensor_dataset(val_path, word_to_ix)
print("loaded data")
torch.manual_seed(0)
train_loader = DataLoader(train_set, args.batch_size, shuffle=True)
val_loader = DataLoader(val_set, args.batch_size)
print("loader defined")
### Build model
# Network parameters
embd_dim = embd.weight.size(1)
kernel_dim = 200
hidden_dim = 500
enc_dim = 200
if args.aspect == 'all':
target_dim = 3
else:
target_dim = 1
# Model
torch.manual_seed(1)
# Add pre-training here...
kernel_net = KernelVar(embd_dim, hidden_dim, kernel_dim)
sampler = ReinforceSampler(args.alpha_iter)
pred_net = PredNet(embd_dim, hidden_dim, enc_dim, target_dim)
if args.pretrain_kernel:
if args.remote:
state_dict = torch.load(args.pretrain_path_remote + args.pretrain_kernel)
else:
state_dict = torch.load(args.pretrain_path_local + args.pretrain_kernel)
kernel_net.load_state_dict(state_dict)
if args.pretrain_pred:
if args.remote:
state_dict = torch.load(args.pretrain_path_remote + args.pretrain_pred)
else:
state_dict = torch.load(args.pretrain_path_local + args.pretrain_pred)
pred_net.load_state_dict(state_dict)
# continue with trainer
trainer = ReinforceTrainer(embd, kernel_net, sampler, pred_net)
trainer.reg = args.reg
trainer.reg_mean = args.reg_mean
trainer.activation = nn.Sigmoid()
trainer.type(dtype)
print("created trainer")
params = [{'params': trainer.kernel_net.parameters(), 'lr': args.lr_k},
{'params': trainer.pred_net.parameters(), 'lr': args.lr_p}]
optimizer = torch.optim.Adam(params)
print('set-up optimizer')
### Loop
l = []
torch.manual_seed(0)
print("started loop")
for epoch in range(args.epochs):
adjust_learning_rate(optimizer, epoch)
trainer.train()
for t, (review, target) in enumerate(train_loader):
review = Variable(review)
if args.aspect == 'all':
target = Variable(target[:,:3]).type(dtype)
else:
target = Variable(target[:,int(args.aspect[-1])]).type(dtype)
loss = trainer(review, target)
optimizer.zero_grad()
loss.backward()
optimizer.step()
print('Weight mean is: ', trainer.kernel_net.layer1.weight.mean())
print('Weight max is: ', trainer.kernel_net.layer1.weight.max())
print('Weight min is: ', trainer.kernel_net.layer1.weight.min())
print('Grad max is: ', trainer.kernel_net.layer1.weight.grad.max())
print('Grad min is: ', trainer.kernel_net.layer1.weight.grad.min())
print("trained one batch")
loss, pred_loss, reg_loss = validate(val_loader, trainer)
log(epoch, loss, pred_loss, reg_loss)
print("logged")
is_best = pred_loss < lowest_loss
lowest_loss = min(pred_loss, lowest_loss)
save = {'epoch:': epoch + 1,
'model': 'Marginal Trainer',
'state_dict': trainer.state_dict(),
'lowest_loss': lowest_loss,
'optimizer': optimizer.state_dict()}
save_checkpoint(save, is_best)
print("saved a checkpoint")
print('*'*20, 'SUCCESS','*'*20)
loaded data
loader defined
created trainer
set-up optimizer
started loop
1
torch.Size([200, 1])
Zero Subset was produced. Re-sample
Weight mean is: Variable containing:
1.00000e-05 *
-8.7600
[torch.DoubleTensor of size 1]
Weight max is: Variable containing:
1.00000e-02 *
5.0096
[torch.DoubleTensor of size 1]
Weight min is: Variable containing:
1.00000e-02 *
-5.0100
[torch.DoubleTensor of size 1]
Grad max is: Variable containing:
1.00000e-02 *
5.2791
[torch.DoubleTensor of size 1]
Grad min is: Variable containing:
1.00000e-02 *
-4.9328
[torch.DoubleTensor of size 1]
trained one batch
1
torch.Size([200, 1])
Zero Subset was produced. Re-sample
Weight mean is: Variable containing:
1.00000e-05 *
-8.7408
[torch.DoubleTensor of size 1]
Weight max is: Variable containing:
1.00000e-02 *
5.0190
[torch.DoubleTensor of size 1]
Weight min is: Variable containing:
1.00000e-02 *
-5.0198
[torch.DoubleTensor of size 1]
Grad max is: Variable containing:
1.00000e-02 *
7.6660
[torch.DoubleTensor of size 1]
Grad min is: Variable containing:
1.00000e-02 *
-7.2060
[torch.DoubleTensor of size 1]
trained one batch
1
torch.Size([200, 1])
Zero Subset was produced. Re-sample
Weight mean is: Variable containing:
1.00000e-05 *
-8.7182
[torch.DoubleTensor of size 1]
Weight max is: Variable containing:
1.00000e-02 *
5.0289
[torch.DoubleTensor of size 1]
Weight min is: Variable containing:
1.00000e-02 *
-5.0296
[torch.DoubleTensor of size 1]
Grad max is: Variable containing:
1.00000e-02 *
9.9986
[torch.DoubleTensor of size 1]
Grad min is: Variable containing:
1.00000e-02 *
-9.3063
[torch.DoubleTensor of size 1]
trained one batch
1
torch.Size([200, 1])
Zero Subset was produced. Re-sample
Zero Subset was produced. Re-sample
Weight mean is: Variable containing:
1.00000e-05 *
-8.6944
[torch.DoubleTensor of size 1]
Weight max is: Variable containing:
1.00000e-02 *
5.0388
[torch.DoubleTensor of size 1]
Weight min is: Variable containing:
1.00000e-02 *
-5.0394
[torch.DoubleTensor of size 1]
Grad max is: Variable containing:
1.00000e-02 *
9.2098
[torch.DoubleTensor of size 1]
Grad min is: Variable containing:
-0.1015
[torch.DoubleTensor of size 1]
trained one batch
1
torch.Size([200, 1])
Weight mean is: Variable containing:
1.00000e-05 *
-8.6792
[torch.DoubleTensor of size 1]
Weight max is: Variable containing:
1.00000e-02 *
5.0487
[torch.DoubleTensor of size 1]
Weight min is: Variable containing:
1.00000e-02 *
-5.0494
[torch.DoubleTensor of size 1]
Grad max is: Variable containing:
1.00000e-02 *
9.2073
[torch.DoubleTensor of size 1]
Grad min is: Variable containing:
-0.1003
[torch.DoubleTensor of size 1]
trained one batch
1
torch.Size([200, 1])
Weight mean is: Variable containing:
1.00000e-05 *
-8.6623
[torch.DoubleTensor of size 1]
Weight max is: Variable containing:
1.00000e-02 *
5.0588
[torch.DoubleTensor of size 1]
Weight min is: Variable containing:
1.00000e-02 *
-5.0593
[torch.DoubleTensor of size 1]
Grad max is: Variable containing:
1.00000e-02 *
8.3028
[torch.DoubleTensor of size 1]
Grad min is: Variable containing:
1.00000e-02 *
-7.2037
[torch.DoubleTensor of size 1]
trained one batch
1
torch.Size([200, 1])
Zero Subset was produced. Re-sample
Zero Subset was produced. Re-sample
Zero Subset was produced. Re-sample
Weight mean is: Variable containing:
1.00000e-05 *
-8.6487
[torch.DoubleTensor of size 1]
Weight max is: Variable containing:
1.00000e-02 *
5.0688
[torch.DoubleTensor of size 1]
Weight min is: Variable containing:
1.00000e-02 *
-5.0688
[torch.DoubleTensor of size 1]
Grad max is: Variable containing:
1.00000e-02 *
7.1916
[torch.DoubleTensor of size 1]
Grad min is: Variable containing:
1.00000e-02 *
-8.5014
[torch.DoubleTensor of size 1]
trained one batch
1
torch.Size([200, 1])
Zero Subset was produced. Re-sample
Weight mean is: Variable containing:
1.00000e-05 *
-8.6377
[torch.DoubleTensor of size 1]
Weight max is: Variable containing:
1.00000e-02 *
5.0778
[torch.DoubleTensor of size 1]
Weight min is: Variable containing:
1.00000e-02 *
-5.0787
[torch.DoubleTensor of size 1]
Grad max is: Variable containing:
1.00000e-02 *
6.8469
[torch.DoubleTensor of size 1]
Grad min is: Variable containing:
1.00000e-02 *
-6.2047
[torch.DoubleTensor of size 1]
trained one batch
1
torch.Size([200, 1])
Zero Subset was produced. Re-sample
Weight mean is: Variable containing:
1.00000e-05 *
-8.6281
[torch.DoubleTensor of size 1]
Weight max is: Variable containing:
1.00000e-02 *
5.0868
[torch.DoubleTensor of size 1]
Weight min is: Variable containing:
1.00000e-02 *
-5.0883
[torch.DoubleTensor of size 1]
Grad max is: Variable containing:
1.00000e-02 *
8.5257
[torch.DoubleTensor of size 1]
Grad min is: Variable containing:
1.00000e-02 *
-8.8298
[torch.DoubleTensor of size 1]
trained one batch
1
torch.Size([200, 1])
Weight mean is: Variable containing:
1.00000e-05 *
-8.6214
[torch.DoubleTensor of size 1]
Weight max is: Variable containing:
1.00000e-02 *
5.0964
[torch.DoubleTensor of size 1]
Weight min is: Variable containing:
1.00000e-02 *
-5.0981
[torch.DoubleTensor of size 1]
Grad max is: Variable containing:
1.00000e-02 *
8.2128
[torch.DoubleTensor of size 1]
Grad min is: Variable containing:
1.00000e-02 *
-7.3762
[torch.DoubleTensor of size 1]
trained one batch
1
torch.Size([200, 1])
Weight mean is: Variable containing:
1.00000e-05 *
-8.6168
[torch.DoubleTensor of size 1]
Weight max is: Variable containing:
1.00000e-02 *
5.1065
[torch.DoubleTensor of size 1]
Weight min is: Variable containing:
1.00000e-02 *
-5.1072
[torch.DoubleTensor of size 1]
Grad max is: Variable containing:
1.00000e-02 *
7.3087
[torch.DoubleTensor of size 1]
Grad min is: Variable containing:
1.00000e-02 *
-7.6304
[torch.DoubleTensor of size 1]
trained one batch
1
torch.Size([200, 1])
Weight mean is: Variable containing:
1.00000e-05 *
-8.6175
[torch.DoubleTensor of size 1]
Weight max is: Variable containing:
1.00000e-02 *
5.1155
[torch.DoubleTensor of size 1]
Weight min is: Variable containing:
1.00000e-02 *
-5.1154
[torch.DoubleTensor of size 1]
Grad max is: Variable containing:
1.00000e-02 *
6.4287
[torch.DoubleTensor of size 1]
Grad min is: Variable containing:
1.00000e-02 *
-5.9047
[torch.DoubleTensor of size 1]
trained one batch
1
torch.Size([200, 1])
Weight mean is: Variable containing:
nan
[torch.DoubleTensor of size 1]
---------------------------------------------------------------------------
RuntimeError Traceback (most recent call last)
<ipython-input-19-8c9d93a83dbc> in <module>()
83 adjust_learning_rate(optimizer, epoch)
84
---> 85 train(train_loader, trainer, optimizer)
86 loss, pred_loss, reg_loss = validate(val_loader, trainer)
87
<ipython-input-18-98b3e6573e54> in train(loader, trainer, optimizer)
76 optimizer.step()
77 print('Weight mean is: ', trainer.kernel_net.layer1.weight.mean())
---> 78 print('Weight max is: ', trainer.kernel_net.layer1.weight.max())
79 print('Weight min is: ', trainer.kernel_net.layer1.weight.min())
80 print('Grad max is: ', trainer.kernel_net.layer1.weight.grad.max())
/Users/Max/Coding/anaconda2/envs/torch/lib/python3.6/site-packages/torch/autograd/variable.py in max(self, dim)
446 if isinstance(dim, Variable):
447 return Cmax()(self, dim)
--> 448 return Max(dim)(self)
449
450 def min(self, dim=None):
/Users/Max/Coding/anaconda2/envs/torch/lib/python3.6/site-packages/torch/autograd/_functions/reduce.py in forward(self, input)
124 if self.dim is None and self.has_all_reduce:
125 value = fn(*self.additional_args)
--> 126 self.indices = tuple(input.eq(value).nonzero()[0])
127 return input.new((value,))
128 else:
RuntimeError: dimension 0 out of range of 0D tensor at /Users/soumith/miniconda2/conda-bld/pytorch_1493757319118/work/torch/lib/TH/generic/THTensor.c:24
In [25]:
trainer.kernel_net.layer1.weight.min()
---------------------------------------------------------------------------
RuntimeError Traceback (most recent call last)
<ipython-input-25-33abc841ff65> in <module>()
----> 1 trainer.kernel_net.layer1.weight.min()
/Users/Max/Coding/anaconda2/envs/torch/lib/python3.6/site-packages/torch/autograd/variable.py in min(self, dim)
451 if isinstance(dim, Variable):
452 return Cmin()(self, dim)
--> 453 return Min(dim)(self)
454
455 def mode(self, dim):
/Users/Max/Coding/anaconda2/envs/torch/lib/python3.6/site-packages/torch/autograd/_functions/reduce.py in forward(self, input)
124 if self.dim is None and self.has_all_reduce:
125 value = fn(*self.additional_args)
--> 126 self.indices = tuple(input.eq(value).nonzero()[0])
127 return input.new((value,))
128 else:
RuntimeError: dimension 0 out of range of 0D tensor at /Users/soumith/miniconda2/conda-bld/pytorch_1493757319118/work/torch/lib/TH/generic/THTensor.c:24
In [17]:
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-17-998c0c3ed835> in <module>()
----> 1 embd, word_to_ix = make_embd(path)
NameError: name 'path' is not defined
In [ ]:
Content source: mbp28/dpp_nets
Similar notebooks: