Repository: JianWenJun/MLDemo Branch: master Commit: 641b85464442 Files: 75 Total size: 1.7 MB Directory structure: gitextract_sl_11rs9/ ├── Financial_NLP/ │ └── final_demo/ │ ├── README.md │ ├── __init__.py │ ├── data_prepare.py │ ├── extract_feature.py │ ├── main.py │ ├── train_model.py │ └── util.py ├── ML/ │ ├── DecisionTree/ │ │ ├── Boosting.py │ │ ├── RandomForest.py │ │ ├── decision_tree.py │ │ ├── titanic_data_analy.ipynb │ │ ├── tree_main.py │ │ └── xgboost_demo.py │ ├── LogisticRegression_MEM/ │ │ └── LR_MEM_demo.py │ ├── Perce_SVM/ │ │ ├── SVM.py │ │ └── perceptron.py │ ├── REDAME.md │ ├── TensorDemo/ │ │ ├── NN_tf.py │ │ └── README.md │ └── data/ │ └── adult/ │ ├── adult_deal_value.data │ └── adult_deal_value.test ├── NLP/ │ ├── AutoTitle_F/ │ │ ├── configs/ │ │ │ ├── make_vocab.yaml │ │ │ ├── predict.yaml │ │ │ ├── process.yaml │ │ │ └── train_model.yaml │ │ ├── data/ │ │ │ ├── __init__.py │ │ │ ├── batcher.py │ │ │ ├── data.py │ │ │ └── data_processed.py │ │ ├── models/ │ │ │ ├── __init__.py │ │ │ ├── adaptive.py │ │ │ ├── loss.py │ │ │ ├── lr_scheduler.py │ │ │ ├── optims.py │ │ │ └── seq2seq.py │ │ ├── pycocoevalcap/ │ │ │ ├── README.md │ │ │ ├── __init__.py │ │ │ ├── bleu/ │ │ │ │ ├── LICENSE │ │ │ │ ├── __init__.py │ │ │ │ ├── bleu.py │ │ │ │ └── bleu_scorer.py │ │ │ ├── cider/ │ │ │ │ ├── __init__.py │ │ │ │ ├── cider.py │ │ │ │ └── cider_scorer.py │ │ │ ├── license.txt │ │ │ ├── meteor/ │ │ │ │ ├── __init__.py │ │ │ │ ├── meteor-1.5.jar │ │ │ │ ├── meteor.py │ │ │ │ └── tests/ │ │ │ │ └── test_meteor.py │ │ │ ├── rouge/ │ │ │ │ ├── __init__.py │ │ │ │ └── rouge.py │ │ │ └── test_eval.py │ │ ├── submit.py │ │ └── train.py │ ├── GAN&NLP.md │ ├── Multi_Label/ │ │ └── ShengCe/ │ │ ├── generate_submit.py │ │ ├── train_model.py │ │ └── util.py │ ├── Seq2Seq/ │ │ ├── __init__.py │ │ ├── data_util.py │ │ ├── main.py │ │ ├── seq2seq_attn.py │ │ ├── seq2seq_model.py │ │ └── text_summarizer.py │ ├── Text_CNN/ │ │ ├── process_data.py │ │ ├── text_cnn_main.py │ │ └── text_cnn_model.py │ └── daguan/ │ ├── README.md │ ├── data_analy.py │ ├── lr_scheduler.py │ ├── main.py │ ├── model.py │ ├── optims.py │ └── predict.py └── README.md ================================================ FILE CONTENTS ================================================ ================================================ FILE: Financial_NLP/final_demo/README.md ================================================ #### 1.项目结构 ##### 1.1代码文件说明 >**./final_demo/util.py**:1.管理整个项目的文件存放路径 2.存储和读取各种方法抽取的特征,并组合成DataFrame输出。 **./final_demo/data_prepare.py**:1.文本的清理工作 2.词向量训练工作
**./final_demo/extract_feature.py**:1.各种方法进行特征抽取,并进行保存
**./final_demo/train_model.py**:1.深度模型的构建工作
**./final_demo/main.py**:1.最后整个项目的运行,读取各个方法抽取的特征并使用分类模型进行分类预测
##### 1.2代码运行期间生成文件的目录说明(根目录为./atec/data) >1./atec/data :根目录,存放该项目下的相关文件夹,和比赛最初的.csv文件(原始数据文件)
>2../atec/data/aux :存放最后提交测试平台的重压文件,包括分词字典,词向量矩阵,停用词,拼写纠错,疑问词。
>3./atec/data/feature :特征存放文件,存放各个方法进行抽取后的特征,一个抽取方法包括3个文件,特征值文件和特征列名文件。
4./atec/data/preprocessed: 原始数据文本预处理文件目录
5../atec/data/tmp: 存放用于提取特征的深度模型
6../atec/data/trained: 存放最后需要提交测试平台的模型文件
#### 2.项目使用步骤 >1.整个项目的初始化工作(设置整个项目的根目录,决定是否需要创建(第一次为create_dir为True,之后为False))
2.文本的预处理工作
3.特征抽取
4.整个项目的运行(构建最终的分类模型,交叉验证的方式)
```python #最终的运行方式 python util.py python data_prepare.py python extract_feature.py python main.py ``` #### 3赛题思路 [蚂蚁金融NLP竞赛——文本语义相似度赛题总结](https://jianwenjun.xyz/2018/07/13/%E8%9A%82%E8%9A%81%E9%87%91%E8%9E%8DNLP%E7%AB%9E%E8%B5%9B%E2%80%94%E2%80%94%E6%96%87%E6%9C%AC%E8%AF%AD%E4%B9%89%E7%9B%B8%E4%BC%BC%E5%BA%A6%E8%B5%9B%E9%A2%98%E6%80%BB%E7%BB%93/) ================================================ FILE: Financial_NLP/final_demo/__init__.py ================================================ #!/usr/bin/python # -*- coding: utf-8 -*- # @Time : 2018/6/15 下午8:52 # @Author : ComeOnJian # @File : __init__.py.py ================================================ FILE: Financial_NLP/final_demo/data_prepare.py ================================================ #!/usr/bin/python # -*- coding: utf-8 -*- # @Time : 2018/6/15 下午10:50 # @Author : ComeOnJian # @File : data_prepare.py import jieba from util import * import json import re from collections import defaultdict from gensim.models import word2vec from gensim.models import KeyedVectors from keras.preprocessing import sequence from keras.preprocessing.text import Tokenizer # file paths train_data_all = 'atec_nlp_sim_train_all.csv' train_all = 'atec_nlp_sim_train_0.6.csv' test_all = 'atec_nlp_sim_test_0.4.csv' #6550个为1的label stop_words_path = 'stop_words.txt' dict_path = 'dict_all.txt' spelling_corrections_path = 'spelling_corrections.json' w2v_model_path = 'train_corpus.model' w2v_vocab_path = 'train_corpus_vocab.txt' # data #param embedding_size = 300 max_sentence_length = 20 max_word_length = 25 # os.path.join(project.aux_dir,'fasttext','') max_vovab_size = 100000 #################### 文本的清理工作 #################### def preprocessing(data_df,fname): """ :param data_df:需要处理的数据集 :param fname: :return: """ # 加载停用词 stopwords = load_stopwordslist(project.aux_dir + stop_words_path) # 加载拼写错误替换词 spelling_corrections = load_spelling_corrections(project.aux_dir + spelling_corrections_path) re_object = re.compile(r'\*+') #去除句子中的脱敏数字***,替换成一 vocabs = defaultdict(int)# 记录词汇表词频 for index, row in data_df.iterrows(): # 每1000个打印一下句子的词向量 if index != 0 and index % 2000 == 0: print("{:,} {}-sentence embedding.".format(index,fname)) # 分别遍历每行的两个句子,并进行分词处理 for col_name in ["s1", "s2"]: # 替换掉脱敏的数字 re_str = re_object.subn(u"十一",unicode(row[col_name],'utf-8')) # 纠正一些词 spell_corr_str = transform_other_word(re_str[0],spelling_corrections) # 分词 seg_str = seg_sentence(spell_corr_str, stopwords) for word in seg_str.split(" "): vocabs[word] = vocabs[word] + 1 data_df.at[index, col_name] = seg_str data_df.to_csv(project.preprocessed_data_dir + '{}.csv'.format(fname), sep='\t', header=None,index=None,encoding='utf-8') project.save(project.preprocessed_data_dir + '{}.pickle'.format(fname),vocabs) del data_df def seg_sentence(sentence,stop_words): """ 对句子进行分词 :param sentence:句子,String """ sentence_seged = jieba.cut(sentence.strip()) out_str = "" for word in sentence_seged: if word not in stop_words: if word != " ": out_str += word out_str += " " return out_str def load_stopwordslist(filepath): """ 加载停用词 :param filepath:停用词文件路径 :return: """ with io.open(filepath,"r",encoding="utf-8") as file: stop_words = [line.strip() for line in file] return stop_words def load_spelling_corrections(filepath): with io.open(filepath,"r",encoding="utf-8") as file: spelling_corrections = json.load(file) return spelling_corrections def load_doubt_words(filpath): """ 加载疑问词 :param filpath: :return: """ with io.open(filpath,'r',encoding="utf-8") as file: doubt_words = [line.strip() for line in file] return doubt_words def transform_other_word(str_text,reg_dict): for token_str,replac_str in reg_dict.items(): str_text = str_text.replace(token_str, replac_str) return str_text def strip_why(rawq): rawq = re.sub('为什么|为何|为啥|为么|为撒|咋个|为什|怎么回事|是什么原因|什么原因', '', rawq) if re.match(r'怎么.*(不|没|了|只|会|又|要|老|总|才|是)',rawq): rawq = re.sub('怎么', '', rawq) return rawq def strip_how(rawq): rawq = re.sub('怎么办|咋办', '', rawq) return rawq #################### 文本的Embeding工作 #################### def process_save_embedding_wv(nfile,type = 1,isStore_ids = False): """ :param type: 词向量的选择:1,知乎,2,训练集 3 知乎+训练集 :return: """ w2v_path = project.aux_dir + 'sgns.zhihu.bigram' if type == 2: w2v_path = project.aux_dir + 'train_all_data.bigram' # vocabs_path = project.preprocessed_data_dir + 'data_all_seg.pickle' tokenizer = Tokenizer( num_words=max_vovab_size, split=' ', lower=False, char_level=False, filters='' ) # 加载所有的词汇表训练集和测试集 pre_deal_train_df = pd.read_csv(project.preprocessed_data_dir + 'train_0.6_seg.csv', names=["index", "s1", "s2", "label"], header=None,encoding='utf-8', sep='\t') pre_deal_test_df = pd.read_csv(project.preprocessed_data_dir + 'test_0.4_seg.csv', names=["index", "s1", "s2", "label"], header=None,encoding='utf-8', sep='\t', ) texts = [] texts_s1_test = pre_deal_test_df['s1'].tolist() texts_s2_test = pre_deal_test_df['s2'].tolist() texts_s1_train = pre_deal_train_df['s1'].tolist() texts_s2_train = pre_deal_train_df['s2'].tolist() texts.extend(texts_s1_test) texts.extend(texts_s2_test) texts.extend(texts_s1_train) texts.extend(texts_s2_train) # print pre_deal_train_df.isnull().any() # print pre_deal_test_df.isnull().any() # 生成token词典 # tests = [u'中 国', u'矿业 大学', u'不错哦'] tokenizer.fit_on_texts(texts) # 生成各个词对应的index列表 s1_train_ids = tokenizer.texts_to_sequences(texts_s1_train) s2_train_ids = tokenizer.texts_to_sequences(texts_s2_train) s1_test_ids = tokenizer.texts_to_sequences(texts_s1_test) s2_test_ids = tokenizer.texts_to_sequences(texts_s2_test) num_words_dict = tokenizer.word_index # 训练集的词汇表的词向量矩阵,行数为最大值+1,形式为:index->vec embedding_matrix = 1 * np.random.randn(len(num_words_dict) + 1, embedding_size) embedding_matrix[0] = np.random.randn(embedding_size) # 加载预训练的词向量w2v print 'load w2v_model...' w2v_model = KeyedVectors.load_word2vec_format(w2v_path, binary=False) print 'finish w2v_model...' if type == 3: w2v_path2 = project.aux_dir + 'train_all_data.bigram' w2v_model2 = KeyedVectors.load_word2vec_format(w2v_path2, binary=False) count = 0 for word,index in num_words_dict.items(): if word in w2v_model.vocab: embedding_matrix[index] = w2v_model.word_vec(word) count = count +1 else: if type == 3: if word in w2v_model2.vocab: embedding_matrix[index] = w2v_model2.word_vec(word) count = count + 1 print('total {}, word in model have {}'.format(len(num_words_dict),count)) project.save(project.aux_dir + nfile,embedding_matrix) if isStore_ids: s1_train_ids_pad = sequence.pad_sequences(s1_train_ids,maxlen=max_sentence_length) s2_train_ids_pad = sequence.pad_sequences(s2_train_ids,maxlen=max_sentence_length) s1_test_ids_pad = sequence.pad_sequences(s1_test_ids,maxlen=max_sentence_length) s2_test_ids_pad = sequence.pad_sequences(s2_test_ids,maxlen=max_sentence_length) project.save(project.preprocessed_data_dir + 's1_train_ids_pad.pickle',s1_train_ids_pad) project.save(project.preprocessed_data_dir + 's2_train_ids_pad.pickle',s2_train_ids_pad) project.save(project.preprocessed_data_dir + 's1_test_ids_pad.pickle',s1_test_ids_pad) project.save(project.preprocessed_data_dir + 's2_test_ids_pad.pickle',s2_test_ids_pad) print('finish') def process_save_char_embedding_wv(isStore_ids = False): data_local_df = pd.read_csv(project.data_dir + train_all, sep='\t', header=None,names=["index", "s1", "s2", "label"]) data_test_df = pd.read_csv(project.data_dir + test_all, sep='\t', header=None, names=["index", "s1", "s2", "label"]) w2v_char_path = project.aux_dir + 'train_char_all__data.bigram' w2v_char_model = KeyedVectors.load_word2vec_format(w2v_char_path, binary=False) # 加载拼写错误替换词 spelling_corrections = load_spelling_corrections(project.aux_dir + spelling_corrections_path) re_object = re.compile(r'\*+') # 去除句子中的脱敏数字***,替换成一 char_vocabs = project.load(project.preprocessed_data_dir + 'train_all_char_vocabs.pickle') data_df_list = [data_local_df,data_test_df] embedding_word_matrix = 1 * np.random.randn((len(char_vocabs) + 1), embedding_size) embedding_word_matrix[0] = np.random.randn(embedding_size) for word,index in char_vocabs.items(): if word in w2v_char_model.vocab: embedding_word_matrix[index] = w2v_char_model.word_vec(word) if index % 100 == 0: print 'char {}'.format(index) project.save(project.aux_dir + 'train_all_char_embedding_matrix.pickle',embedding_word_matrix) for data_df in data_df_list: for index, row in data_df.iterrows(): # 每1000个打印一下句子的词向量 if index != 0 and index % 5000 == 0: print("{:,}sentence word embedding.".format(index)) # 分别遍历每行的两个句子,并进行分词处理 for col_name in ["s1", "s2"]: # 替换掉脱敏的数字 re_str = re_object.subn(u"十一",unicode(row[col_name],'utf-8')) # 纠正一些词 spell_corr_str = transform_other_word(re_str[0],spelling_corrections) spell_corr_str = list(spell_corr_str) indexs = [] for char in spell_corr_str: if char in char_vocabs: indexs.append(char_vocabs[char]) else: if not char.strip()==u"": indexs.append(0) data_df.at[index, col_name] = indexs if isStore_ids: s1_train_ids_pad = sequence.pad_sequences(data_local_df['s1'],maxlen=max_word_length) s2_train_ids_pad = sequence.pad_sequences(data_local_df['s2'],maxlen=max_word_length) s1_test_ids_pad = sequence.pad_sequences(data_test_df['s1'],maxlen=max_word_length) s2_test_ids_pad = sequence.pad_sequences(data_test_df['s2'],maxlen=max_word_length) project.save(project.preprocessed_data_dir + 's1_train_char_ids_pad.pickle',s1_train_ids_pad) project.save(project.preprocessed_data_dir + 's2_train_char_ids_pad.pickle',s2_train_ids_pad) project.save(project.preprocessed_data_dir + 's1_test_char_ids_pad.pickle',s1_test_ids_pad) project.save(project.preprocessed_data_dir + 's2_test_char_ids_pad.pickle',s2_test_ids_pad) print('finish') #################### 使用训练集train_all做 pre_train word embedding #################### def pre_train_w2v(binary = False): """ 利用已经训练集训练词向量 :param nfile_corpus:已经分好词的文本路径,如"train_segment.corpus" :param binary:将词向量表是否存储为二进制文件 :return: """ # 加载所有的词汇表训练集和测试集 pre_deal_train_df = pd.read_csv(project.preprocessed_data_dir + 'train_0.6_seg.csv', names=["index", "s1", "s2", "label"], header=None, encoding='utf-8', sep='\t') pre_deal_test_df = pd.read_csv(project.preprocessed_data_dir + 'test_0.4_seg.csv', names=["index", "s1", "s2", "label"], header=None, encoding='utf-8', sep='\t', ) texts = [] texts_s1_test = [line.strip().split(" ") for line in pre_deal_test_df['s1'].tolist()] texts_s2_test = [line.strip().split(" ") for line in pre_deal_test_df['s2'].tolist()] texts_s1_train = [line.strip().split(" ") for line in pre_deal_train_df['s1'].tolist()] texts_s2_train = [line.strip().split(" ") for line in pre_deal_train_df['s2'].tolist()] texts.extend(texts_s1_test) texts.extend(texts_s2_test) texts.extend(texts_s1_train) texts.extend(texts_s2_train) model = word2vec.Word2Vec(sentences=texts,size=300,window=2,min_count=3,workers=2) model.wv.save_word2vec_format(fname=project.aux_dir + "train_all_data.bigram",binary=binary,fvocab=None) def pre_train_char_w2v(binary = False): data_local_df = pd.read_csv(project.data_dir + train_all, sep='\t', header=None,names=["index", "s1", "s2", "label"]) data_test_df = pd.read_csv(project.data_dir + test_all, sep='\t', header=None, names=["index", "s1", "s2", "label"]) # 加载停用词 stopwords = load_stopwordslist(project.aux_dir + stop_words_path) # 加载拼写错误替换词 spelling_corrections = load_spelling_corrections(project.aux_dir + spelling_corrections_path) re_object = re.compile(r'\*+') # 去除句子中的脱敏数字***,替换成一 data_df_list = [data_local_df,data_test_df] texts = [] char_vocabs = {} char_index = 1 for data_df in data_df_list: for index, row in data_df.iterrows(): if index != 0 and index % 5000 == 0: print("{:,} sentence word embedding.".format(index)) # 分别遍历每行的两个句子,并进行分词处理 for col_name in ["s1", "s2"]: # 替换掉脱敏的数字 re_str = re_object.subn(u"十一", unicode(row[col_name], 'utf-8')) # 纠正一些词 spell_corr_str = transform_other_word(re_str[0], spelling_corrections) spell_corr_str = list(spell_corr_str) for char in spell_corr_str: if char not in char_vocabs and char not in stopwords and not char.strip()==u"": char_vocabs[char] = char_index char_index = char_index + 1 texts.extend(spell_corr_str) model = word2vec.Word2Vec(sentences=texts,size=300,window=3,workers=2) model.wv.save_word2vec_format(fname=project.aux_dir + "train_char_all__data.bigram",binary=binary,fvocab=None) project.save(project.preprocessed_data_dir + 'train_all_char_vocabs.pickle', char_vocabs) if __name__ == '__main__': # step 1 # 预处理文本 jieba.load_userdict(project.aux_dir + dict_path) data_local_df = pd.read_csv(project.data_dir + train_all, sep='\t', header=None,names=["index", "s1", "s2", "label"]) data_test_df = pd.read_csv(project.data_dir + test_all, sep='\t', header=None, names=["index", "s1", "s2", "label"]) data_all_df = pd.read_csv(project.data_dir + train_data_all, sep='\t', header=None, names=["index", "s1", "s2", "label"]) pre_train_char_w2v() # preprocessing(data_local_df,'train_0.6_seg') preprocessing(data_test_df,'test_0.4_seg') preprocessing(data_all_df,'data_all_seg') # 保存label project.save(project.features_dir + 'y_0.4_test.pickle', data_test_df['label'].tolist()) project.save(project.features_dir + 'y_0.6_train.pickle', data_local_df['label'].tolist()) project.save(project.features_dir + 'y_train.pickle', data_all_df['label'].tolist()) # step 2 pre_train_w2v() # step 3 process_save_embedding_wv('train_all_w2v_embedding_matrix.pickle',type=2,isStore_ids=True) # process_save_embedding_wv('zhihu_w2v_embedding_matrix.pickle',type=2,isStore_ids=False) # process_save_embedding_wv('zhihu_w2v_embedding_matrix.pickle',type=3,isStore_ids=False) # step 4 char wordembedding process_save_char_embedding_wv(isStore_ids=True) ================================================ FILE: Financial_NLP/final_demo/extract_feature.py ================================================ #!/usr/bin/python # -*- coding: utf-8 -*- # @Time : 2018/6/15 下午8:12 # @Author : ComeOnJian # @File : extract_feature.py ## import pandas as pd from train_model import * from data_prepare import * from sklearn.model_selection import StratifiedKFold from keras.callbacks import EarlyStopping,ModelCheckpoint from keras.utils import to_categorical from keras.models import load_model import gc def before_extract_feature_load_data(train_file,test_file): train_data = pd.read_csv(train_file,sep='\t', header=None, names=["index", "s1", "s2", "label"]) test_data = pd.read_csv(test_file, sep='\t', header=None, names=["index", "s1", "s2", "label"]) return train_data,test_data def after_extract_feature_save_data(feature_train,feature_test,col_names,feature_name): project.save_features(feature_train, feature_test, col_names, feature_name) #################### 深度学习特征提取 #################### def extract_feature_siamese_lstm_manDist(): # 前期参数设置 embedding_matrix_file_path = 'train_all_w2v_embedding_matrix.pickle' feature_name = 'dl_siamese_lstm_manDist' RANOD_SEED = 42 np.random.seed(RANOD_SEED) nepoch = 40 num_folds = 5 batch_size = 512 # 加载Embeding矩阵 embedding_matrix = project.load(project.aux_dir + embedding_matrix_file_path) #加载输入数据 X_train_s1 = project.load(project.preprocessed_data_dir + 's1_train_ids_pad.pickle') X_train_s2 = project.load(project.preprocessed_data_dir + 's2_train_ids_pad.pickle') X_test_s1 = project.load(project.preprocessed_data_dir + 's1_test_ids_pad.pickle') X_test_s2 = project.load(project.preprocessed_data_dir + 's2_test_ids_pad.pickle') #y_0.6_train.pickle 存储的为list y_train = np.array(project.load(project.features_dir + 'y_0.6_train.pickle')) y_val = np.array(project.load(project.features_dir + 'y_0.4_test.pickle')) #定义model param model_param = { 'lstm_units':50, 'lstm_dropout_rate':0., 'lstm_re_dropout_rate':0., 'desen_dropout_rate':0.75, 'num_dense':128 } # model_checkpoint_path = project.temp_dir + 'fold-checkpoint-'+feature_name + '.h5' kfold = StratifiedKFold( n_splits=num_folds, shuffle=True, random_state=RANOD_SEED ) # 存放最后预测结果 y_train_oofp = np.zeros((len(y_train),2),dtype='float64') y_test_oofp = np.zeros((len(X_test_s1),2),dtype='float64') train_y = to_categorical(y_train, 2) val_y = to_categorical(y_val,2) for fold_num, (ix_train, ix_val) in enumerate(kfold.split(X_train_s1,y_train)): # 选出需要添加的样本 train_true_mask = y_train[ix_train] == 1 X_train_true_s1 = X_train_s1[ix_train][train_true_mask] X_train_true_s2 = X_train_s2[ix_train][train_true_mask] y_train_true = train_y[ix_train][train_true_mask] # 进行添加 X_add_train_fold_s1 = np.vstack([X_train_s1[ix_train],X_train_true_s2]) X_add_train_fold_s2 = np.vstack([X_train_s2[ix_train],X_train_true_s1]) y_add_train_fold = np.concatenate([train_y[ix_train],y_train_true]) val_true_mask = y_train[ix_val]==1 X_val_true_s1 = X_train_s1[ix_val][val_true_mask] X_val_true_s2 = X_train_s2[ix_val][val_true_mask] y_val_true = train_y[ix_val][val_true_mask] # 进行添加 X_add_val_fold_s1 = np.vstack([X_train_s1[ix_val], X_val_true_s2]) X_add_val_fold_s2 = np.vstack([X_train_s2[ix_val], X_val_true_s1]) y_add_val_fold = np.concatenate([train_y[ix_val], y_val_true]) print 'start train fold {} of {} ......'.format((fold_num + 1), 5) # 创建模型 model = create_siamese_lstm_ManDistance_model(embedding_matrix, model_param) # 训练模型 model_checkpoint_path = project.trained_model_dir + 'dl_siamese_lstm_manDist_model{}.h5'.format(fold_num) model.fit(x=[X_add_train_fold_s1,X_add_train_fold_s2],y=y_add_train_fold, validation_data=([X_add_val_fold_s1,X_add_val_fold_s2],y_add_val_fold), batch_size=batch_size, epochs=nepoch, verbose=1, class_weight={0: 1, 1: 2}, callbacks=[ EarlyStopping( monitor='val_loss', min_delta=0.005, patience=5, verbose=1, mode='auto' ), ModelCheckpoint( model_checkpoint_path, monitor='val_loss', save_best_only=True, save_weights_only=False, verbose=1 )] ) model.load_weights(model_checkpoint_path) y_train_oofp[ix_val] = predict(model,X_train_s1[ix_val],X_train_s2[ix_val]) K.clear_session() del X_add_train_fold_s1 del X_add_train_fold_s2 del X_add_val_fold_s1 del X_add_val_fold_s2 del y_add_train_fold del y_add_val_fold gc.collect() # save feature model_path = project.trained_model_dir + 'dl_siamese_lstm_manDist_model0.h5' model0 = load_model(model_path, custom_objects={'ManDist': ManDist, 'fbeta_score': fbeta_score, 'precision': precision, 'recall': recall}) y_test_oofp = predict(model0,X_test_s1,X_test_s2) col_names = ['{}_{}'.format(feature_name,index) for index in range(2)] after_extract_feature_save_data(y_train_oofp,y_test_oofp,col_names,feature_name) def extract_feature_siamese_lstm_attention(): # 前期参数设置 embedding_matrix_file_path = 'train_all_w2v_embedding_matrix.pickle' feature_name = 'dl_siamese_lstm_attention' RANOD_SEED = 42 np.random.seed(RANOD_SEED) nepoch = 50 num_folds = 5 batch_size = 512 # 加载Embeding矩阵 embedding_matrix = project.load(project.aux_dir + embedding_matrix_file_path) #加载输入数据 X_train_s1 = project.load(project.preprocessed_data_dir + 's1_train_ids_pad.pickle') X_train_s2 = project.load(project.preprocessed_data_dir + 's2_train_ids_pad.pickle') X_test_s1 = project.load(project.preprocessed_data_dir + 's1_test_ids_pad.pickle') X_test_s2 = project.load(project.preprocessed_data_dir + 's2_test_ids_pad.pickle') #y_0.6_train.pickle 存储的为list y_train = np.array(project.load(project.features_dir + 'y_0.6_train.pickle')) y_val = np.array(project.load(project.features_dir + 'y_0.4_test.pickle')) #定义model param model_param = { 'lstm_units':50, 'lstm_dropout_rate':0., 'lstm_re_dropout_rate':0., 'desen_dropout_rate':0.75, 'num_dense':128 } model_checkpoint_path = project.temp_dir + 'fold-checkpoint-'+feature_name + '.h5' kfold = StratifiedKFold( n_splits=num_folds, shuffle=True, random_state=RANOD_SEED ) # 存放最后预测结果 # y_train_oofp = np.zeros_like(y_train,dtype='float64') y_train_oofp = np.zeros((len(y_train),1),dtype='float64') y_test_oofp = np.zeros((len(X_test_s1),1),dtype='float64') for fold_num, (ix_train, ix_val) in enumerate(kfold.split(X_train_s1,y_train)): # 选出需要添加的样本 train_true_mask = y_train[ix_train] == 1 X_train_true_s1 = X_train_s1[ix_train][train_true_mask] X_train_true_s2 = X_train_s2[ix_train][train_true_mask] y_train_true = y_train[ix_train][train_true_mask] # 进行添加 X_add_train_fold_s1 = np.vstack([X_train_s1[ix_train],X_train_true_s2]) X_add_train_fold_s2 = np.vstack([X_train_s2[ix_train],X_train_true_s1]) y_add_train_fold = np.concatenate([y_train[ix_train],y_train_true]) val_true_mask = y_train[ix_val]==1 X_val_true_s1 = X_train_s1[ix_val][val_true_mask] X_val_true_s2 = X_train_s2[ix_val][val_true_mask] y_val_true = y_train[ix_val][val_true_mask] # 进行添加 X_add_val_fold_s1 = np.vstack([X_train_s1[ix_val], X_val_true_s2]) X_add_val_fold_s2 = np.vstack([X_train_s2[ix_val], X_val_true_s1]) y_add_val_fold = np.concatenate([y_train[ix_val], y_val_true]) print 'start train fold {} of {} ......'.format((fold_num + 1), 5) # 创建模型 model = create_siamese_lstm_attention_model(embedding_matrix, model_param) # 训练模型 model_checkpoint_path = project.trained_model_dir + 'dl_siamese_lstm_attention_model{}.h5'.format(fold_num) model.fit(x=[X_add_train_fold_s1,X_add_train_fold_s2],y=y_add_train_fold, validation_data=([X_add_val_fold_s1,X_add_val_fold_s2],y_add_val_fold), batch_size=batch_size, epochs=nepoch, verbose=1, class_weight={0: 1, 1: 2}, callbacks=[ EarlyStopping( monitor='val_loss', min_delta=0.005, patience=5, verbose=1, mode='auto' ), ModelCheckpoint( model_checkpoint_path, monitor='val_loss', save_best_only=True, save_weights_only=False, verbose=1 )] ) model.load_weights(model_checkpoint_path) y_train_oofp[ix_val] = predict(model,X_train_s1[ix_val],X_train_s2[ix_val]) K.clear_session() del X_add_train_fold_s1 del X_add_train_fold_s2 del X_add_val_fold_s1 del X_add_val_fold_s2 del y_add_train_fold del y_add_val_fold gc.collect() model_path = project.trained_model_dir + 'dl_siamese_lstm_attention_model0.h5' model0 = load_model(model_path, custom_objects={'AttentionLayer1': AttentionLayer1, 'fbeta_score': fbeta_score, 'precision': precision, 'recall': recall}) y_test_oofp = predict(model0, X_test_s1, X_test_s2) col_names = ['{}_{}'.format(feature_name,index) for index in range(1)] after_extract_feature_save_data(y_train_oofp,y_test_oofp,col_names,feature_name) def extract_feature_siamese_lstm_dssm(): # 前期参数设置 embedding_matrix_file_path = 'train_all_w2v_embedding_matrix.pickle' embedding_char_matrix_file_path = 'train_all_char_embedding_matrix.pickle' feature_name = 'dl_siamese_lstm_dssm' RANOD_SEED = 42 np.random.seed(RANOD_SEED) nepoch = 30 num_folds = 5 batch_size = 512 # 加载Embeding矩阵 embedding_matrix = project.load(project.aux_dir + embedding_matrix_file_path) char_embedding_matrix = project.load(project.aux_dir + embedding_char_matrix_file_path) # 加载输入数据 X_train_s1 = project.load(project.preprocessed_data_dir + 's1_train_ids_pad.pickle') X_train_s2 = project.load(project.preprocessed_data_dir + 's2_train_ids_pad.pickle') print X_train_s2.shape X_test_s1 = project.load(project.preprocessed_data_dir + 's1_test_ids_pad.pickle') X_test_s2 = project.load(project.preprocessed_data_dir + 's2_test_ids_pad.pickle') X_char_train_s1 = project.load(project.preprocessed_data_dir + 's1_train_char_ids_pad.pickle') X_char_train_s2 = project.load(project.preprocessed_data_dir + 's2_train_char_ids_pad.pickle') X_char_test_s1 = project.load(project.preprocessed_data_dir + 's1_test_char_ids_pad.pickle') X_char_test_s2 = project.load(project.preprocessed_data_dir + 's2_test_char_ids_pad.pickle') # y_0.6_train.pickle 存储的为list y_train = np.array(project.load(project.features_dir + 'y_0.6_train.pickle')) y_val = np.array(project.load(project.features_dir + 'y_0.4_test.pickle')) # train_y = to_categorical(y_train, 2) # val_y = to_categorical(y_val,2) # 定义model param model_param = { 'lstm_units': 50, 'lstm_dropout_rate': 0., 'lstm_re_dropout_rate': 0., 'desen_dropout_rate': 0.75, 'num_dense': 128 } kfold = StratifiedKFold( n_splits=num_folds, shuffle=True, random_state=RANOD_SEED ) # 存放最后预测结果 # y_train_oofp = np.zeros_like(y_train,dtype='float64') y_train_oofp = np.zeros((len(y_train), 1), dtype='float64') y_test_oofp = np.zeros((len(X_test_s1), 1), dtype='float64') for fold_num, (ix_train, ix_val) in enumerate(kfold.split(X_train_s1, y_train)): # 选出需要添加的样本 train_true_mask = y_train[ix_train] == 1 X_train_true_s1 = X_train_s1[ix_train][train_true_mask] X_train_true_s2 = X_train_s2[ix_train][train_true_mask] y_train_true = y_train[ix_train][train_true_mask] # 进行添加 X_add_train_fold_s1 = np.vstack([X_train_s1[ix_train], X_train_true_s2]) X_add_train_fold_s2 = np.vstack([X_train_s2[ix_train], X_train_true_s1]) y_add_train_fold = np.concatenate([y_train[ix_train], y_train_true]) X_train_true_s1_char = X_char_train_s1[ix_train][train_true_mask] X_train_true_s2_char = X_char_train_s2[ix_train][train_true_mask] # 进行添加 X_add_train_fold_s1_char = np.vstack([X_char_train_s1[ix_train], X_train_true_s2_char]) X_add_train_fold_s2_char = np.vstack([X_char_train_s2[ix_train], X_train_true_s1_char]) # 验证部分 val_true_mask = y_train[ix_val] == 1 X_val_true_s1 = X_train_s1[ix_val][val_true_mask] X_val_true_s2 = X_train_s2[ix_val][val_true_mask] y_val_true = y_train[ix_val][val_true_mask] # 进行添加 X_add_val_fold_s1 = np.vstack([X_train_s1[ix_val], X_val_true_s2]) X_add_val_fold_s2 = np.vstack([X_train_s2[ix_val], X_val_true_s1]) y_add_val_fold = np.concatenate([y_train[ix_val], y_val_true]) X_val_true_s1_char = X_char_train_s1[ix_val][val_true_mask] X_val_true_s2_char = X_char_train_s2[ix_val][val_true_mask] X_add_val_fold_s1_char = np.vstack([X_char_train_s1[ix_val], X_val_true_s2_char]) X_add_val_fold_s2_char = np.vstack([X_char_train_s2[ix_val], X_val_true_s1_char]) print 'start train fold {} of {} ......'.format((fold_num + 1), 5) # 创建模型 model = create_siamese_lstm_dssm_mdoel(embedding_matrix,char_embedding_matrix, model_param) # 训练模型 model_checkpoint_path = project.trained_model_dir + 'dl_siamese_lstm_dssm_model{}.h5'.format(fold_num) model.fit(x=[X_add_train_fold_s1, X_add_train_fold_s2,X_add_train_fold_s1_char,X_add_train_fold_s2_char], y=y_add_train_fold, validation_data=([X_add_val_fold_s1, X_add_val_fold_s2,X_add_val_fold_s1_char,X_add_val_fold_s2_char], y_add_val_fold), batch_size=batch_size, epochs=nepoch, class_weight={0:1,1:2}, verbose=1, callbacks=[ EarlyStopping( monitor='val_loss', min_delta=0.001, patience=3, verbose=1, mode='auto' ), ModelCheckpoint( model_checkpoint_path, monitor='val_loss', save_best_only=True, save_weights_only=False, verbose=1 )] ) model.load_weights(model_checkpoint_path) y_train_oofp[ix_val] = predict1(model, X_train_s1[ix_val], X_train_s2[ix_val],X_char_train_s1[ix_val],X_char_train_s2[ix_val]) K.clear_session() del X_add_train_fold_s1 del X_add_train_fold_s2 del X_add_val_fold_s1 del X_add_val_fold_s2 del y_add_train_fold del y_add_val_fold gc.collect() model_path = project.trained_model_dir + 'dl_siamese_lstm_dssm_model0.h5' model0 = load_model(model_path, custom_objects={'AttentionLayer': AttentionLayer,'ManDist': ManDist,'ConsDist':ConsDist, 'fbeta_score': fbeta_score, 'precision': precision, 'recall': recall}) y_test_oofp = predict1(model0, X_test_s1, X_test_s2,X_char_test_s1,X_char_test_s2) col_names = ['{}_{}'.format(feature_name, index) for index in range(1)] after_extract_feature_save_data(y_train_oofp, y_test_oofp, col_names, feature_name) def extract_feature_siamese_lstm_manDist_char(): feature_name = 'dl_siamese_lstm_manDist_char' embedding_char_matrix_file_path = 'train_all_char_embedding_matrix.pickle' nb_filter = 300 filter_width = [4, 3] y_train_oofp = np.zeros((len(y_train), 1), dtype='float64') y_test_oofp = np.zeros((len(X_test_s1), 1), dtype='float64') kfold = StratifiedKFold( n_splits=5, shuffle=True, random_state=44 ) for fold_num, (ix_train, ix_val) in enumerate(kfold.split(X_train_s1,y_train)): # 选出需要添加的样本 train_true_mask = y_train[ix_train] == 1 X_train_true_s1 = X_train_s1[ix_train][train_true_mask] X_train_true_s2 = X_train_s2[ix_train][train_true_mask] y_train_true = y_train[ix_train][train_true_mask] # 进行添加 X_add_train_fold_s1 = np.vstack([X_train_s1[ix_train],X_train_true_s2]) X_add_train_fold_s2 = np.vstack([X_train_s2[ix_train],X_train_true_s1]) y_add_train_fold = np.concatenate([y_train[ix_train],y_train_true]) val_true_mask = y_train[ix_val]==1 X_val_true_s1 = X_train_s1[ix_val][val_true_mask] X_val_true_s2 = X_train_s2[ix_val][val_true_mask] y_val_true = y_train[ix_val][val_true_mask] # 进行添加 X_add_val_fold_s1 = np.vstack([X_train_s1[ix_val], X_val_true_s2]) X_add_val_fold_s2 = np.vstack([X_train_s2[ix_val], X_val_true_s1]) y_add_val_fold = np.concatenate([y_train[ix_val], y_val_true]) print 'start train fold {} of {} ......'.format((fold_num + 1), 5) # 创建模型 model = create_abcnn_model(embedding_matrix,nb_filter,filter_width) # 训练模型 model_checkpoint_path = project.trained_model_dir + 'dl_abcnn_model{}.h5'.format(fold_num) model.fit(x=[X_add_train_fold_s1,X_add_train_fold_s2],y=y_add_train_fold, validation_data=([X_add_val_fold_s1,X_add_val_fold_s2],y_add_val_fold), batch_size=512, epochs=30, verbose=1, class_weight={0: 1, 1: 2}, callbacks=[ EarlyStopping( monitor='val_loss', min_delta=0.005, patience=5, verbose=1, mode='auto' ), ModelCheckpoint( model_checkpoint_path, monitor='val_loss', save_best_only=True, save_weights_only=False, verbose=1 )] ) model.load_weights(model_checkpoint_path) y_train_oofp[ix_val] = predict(model,X_train_s1[ix_val],X_train_s2[ix_val]) K.clear_session() del X_add_train_fold_s1 del X_add_train_fold_s2 del X_add_val_fold_s1 del X_add_val_fold_s2 del y_add_train_fold del y_add_val_fold gc.collect() model_path = project.trained_model_dir + 'dl_abcnn_model0.h5' model0 = load_model(model_path, custom_objects={'fbeta_score': fbeta_score, 'precision': precision, 'recall': recall}) y_test_oofp = predict(model0, X_test_s1, X_test_s2) col_names = ['{}_{}'.format(feature_name,index) for index in range(1)] after_extract_feature_save_data(y_train_oofp,y_test_oofp,col_names,feature_name) #################### NLP特征提取 #################### def extract_sentece_length_diff(): """ 长度差特征 """ # step1 定义抽取特征的方式名 feature_name = 'nlp_sentece_length_diff' # step2 载入数据 train_data ,test_data = before_extract_feature_load_data(train_file=project.preprocessed_data_dir + 'train_0.6_seg.csv', test_file=project.preprocessed_data_dir + 'test_0.4_seg.csv') feature_train = np.zeros((train_data.shape[0],1),dtype='float64') feature_test = np.zeros((test_data.shape[0],1),dtype='float64') # 计算两个句子的长度差 def get_length_diff(s1, s2): return 1 - abs(len(s1) - len(s2)) / float(max(len(s1), len(s2))) for index,row in train_data.iterrows(): s1 = row['s1'].strip().split(' ') s2 = row['s2'].strip().split(' ') diff = get_length_diff(s1,s2) feature_train[index] = round(diff,5) for index, row in test_data.iterrows(): s1 = row['s1'].strip().split(' ') s2 = row['s2'].strip().split(' ') diff = get_length_diff(s1, s2) feature_test[index] = round(diff,5) # step 3 保存特征:参数有:训练集的特征,测试集的特征,抽取特征的方法的多列特征的列名,抽取特征的方式名 col_names = [feature_name] after_extract_feature_save_data(feature_train, feature_test, col_names, feature_name) def extract_edit_distance(): # step1 定义抽取特征的方式名 feature_name = 'nlp_edit_distance' # step2 载入数据 train_data, test_data = before_extract_feature_load_data( train_file=project.data_dir + 'atec_nlp_sim_train_0.6.csv', test_file=project.data_dir + 'atec_nlp_sim_test_0.4.csv') feature_train = np.zeros((train_data.shape[0], 1), dtype='float64') feature_test = np.zeros((test_data.shape[0], 1), dtype='float64') # 计算编辑距离 def get_edit_distance(rawq1, rawq2): m, n = len(rawq1) + 1, len(rawq2) + 1 matrix = [[0] * n for i in range(m)] matrix[0][0] = 0 for i in range(1, m): matrix[i][0] = matrix[i - 1][0] + 1 for j in range(1, n): matrix[0][j] = matrix[0][j - 1] + 1 cost = 0 for i in range(1, m): for j in range(1, n): if rawq1[i - 1] == rawq2[j - 1]: cost = 0 else: cost = 1 matrix[i][j] = min(matrix[i - 1][j] + 1, matrix[i][j - 1] + 1, matrix[i - 1][j - 1] + cost) return 1 - matrix[m - 1][n - 1] / float(max(len(rawq1), len(rawq2))) for index,row in train_data.iterrows(): s1 = row['s1'].strip() s2 = row['s2'].strip() edit_distance = get_edit_distance(s1,s2) feature_train[index] = round(edit_distance,5) for index, row in test_data.iterrows(): s1 = row['s1'].strip() s2 = row['s2'].strip() edit_distance = get_edit_distance(s1, s2) feature_test[index] = round(edit_distance,5) # step 3 保存特征:参数有:训练集的特征,测试集的特征,抽取特征的方法的多列特征的列名,抽取特征的方式名 col_names = [feature_name] after_extract_feature_save_data(feature_train,feature_test,col_names,feature_name) def extract_ngram(max_ngram = 3): ''' 提取ngram特征 :return: ''' # step1 定义抽取特征的方式名 feature_name = 'nlp_ngram' # step2 载入数据 train_data, test_data = before_extract_feature_load_data( train_file=project.preprocessed_data_dir + 'train_0.6_seg.csv', test_file=project.preprocessed_data_dir + 'test_0.4_seg.csv') feature_train = np.zeros((train_data.shape[0], max_ngram), dtype='float64') feature_test = np.zeros((test_data.shape[0], max_ngram), dtype='float64') # 定义n_gram的方法 def get_ngram(rawq, ngram_value): result = [] for i in range(len(rawq)): if i + ngram_value < len(rawq) + 1: result.append(rawq[i:i + ngram_value]) return result def get_ngram_sim(q1_ngram, q2_ngram): q1_dict = {} q2_dict = {} for token in q1_ngram: if token not in q1_dict: q1_dict[token] = 1 else: q1_dict[token] = q1_dict[token] + 1 q1_count = np.sum([value for key, value in q1_dict.items()]) for token in q2_ngram: if token not in q2_dict: q2_dict[token] = 1 else: q2_dict[token] = q2_dict[token] + 1 q2_count = np.sum([value for key, value in q2_dict.items()]) # ngram1有但是ngram2没有 q1_count_only = np.sum([value for key, value in q1_dict.items() if key not in q2_dict]) # ngram2有但是ngram1没有 q2_count_only = np.sum([value for key, value in q2_dict.items() if key not in q1_dict]) # ngram1和ngram2都有的话,计算value的差值 q1_q2_count = np.sum([abs(value - q2_dict[key]) for key, value in q1_dict.items() if key in q2_dict]) # ngram1和ngram2的总值 all_count = q1_count + q2_count # print(q1_dict) # print(q2_dict) # print(q1_count_only) # print(q2_count_only) # print(q1_q2_count) # print(all_count) return (1 - float(q1_count_only + q2_count_only + q1_q2_count) / (float(all_count) + 0.00000001)) for ngram_value in range(max_ngram): for index, row in train_data.iterrows(): s1 = row['s1'].strip() s2 = row['s2'].strip() ngram1 = get_ngram(s1, ngram_value + 1) ngram2 = get_ngram(s2, ngram_value + 1) ngram_sim = get_ngram_sim(ngram1, ngram2) feature_train[index,ngram_value] = round(ngram_sim,5) for index, row in test_data.iterrows(): s1 = row['s1'].strip() s2 = row['s2'].strip() ngram1 = get_ngram(s1, ngram_value + 1) ngram2 = get_ngram(s2, ngram_value + 1) ngram_sim = get_ngram_sim(ngram1, ngram2) ngram_sim = get_ngram_sim(ngram1, ngram2) feature_test[index, ngram_value] = round(ngram_sim, 5) # step 3 保存特征:参数有:训练集的特征,测试集的特征,抽取特征的方法的多列特征的列名,抽取特征的方式名 col_names = [('{}_{}'.format(feature_name,ngram_value))for ngram_value in range(max_ngram)] after_extract_feature_save_data(feature_train,feature_test,col_names,feature_name) def extract_sentence_diff_same(): ''' 两个句子的相同和不同的词特征 ''' # step1 定义抽取特征的方式名 feature_name = 'nlp_sentece_diff_some' col_num = 6 # step2 载入数据 train_data, test_data = before_extract_feature_load_data( train_file=project.preprocessed_data_dir + 'train_0.6_seg.csv', test_file=project.preprocessed_data_dir + 'test_0.4_seg.csv') feature_train = np.zeros((train_data.shape[0],col_num),dtype='float64') feature_test = np.zeros((test_data.shape[0],col_num),dtype='float64') #统计两个句子的相同和不同 def get_word_diff(q1, q2): set1 = set(q1.split(" ")) set2 = set(q2.split(" ")) same_word_len = len(set1 & set2) unique_word1_len = len(set1 - set2) unique_word2_len = len(set2 - set1) word1_len = len(set1) word2_len = len(set2) avg_len = (word1_len + word2_len) / 2.0 max_len = max(word1_len, word2_len) min_len = min(word1_len, word2_len) jaccard_sim = same_word_len / float(len(set1 | set2)) return same_word_len / float(max_len), same_word_len / float(min_len), same_word_len / float(avg_len), \ unique_word1_len / float(word1_len), unique_word2_len /float(word2_len), jaccard_sim for index,row in train_data.iterrows(): s1 = row['s1'].strip() s2 = row['s2'].strip() features = tuple() features = get_word_diff(s1,s2) for col_index,feature in enumerate(features): feature_train[index,col_index] = round(feature,5) for index, row in test_data.iterrows(): s1 = row['s1'].strip() s2 = row['s2'].strip() features = tuple() features = get_word_diff(s1, s2) for col_index,feature in enumerate(features): feature_test[index,col_index] = round(feature,5) # step 3 保存特征:参数有:训练集的特征,测试集的特征,抽取特征的方法的多列特征的列名,抽取特征的方式名 col_names = [('{}_{}'.format(feature_name,col_index))for col_index in range(col_num)] after_extract_feature_save_data(feature_train,feature_test,col_names,feature_name) def extract_doubt_sim(): ''' 抽取疑问词相同的比例 ''' # step1 定义抽取特征的方式名 feature_name = 'nlp_doubt_sim' # step2 载入数据 train_data, test_data = before_extract_feature_load_data( train_file=project.preprocessed_data_dir + 'train_0.6_seg.csv', test_file=project.preprocessed_data_dir + 'test_0.4_seg.csv') feature_train = np.zeros((train_data.shape[0], 1), dtype='float64') feature_test = np.zeros((test_data.shape[0],1),dtype='float64') doubt_words = load_doubt_words(project.aux_dir + 'doubt_words.txt') # 获取疑问词相同的比例 def get_doubt_sim(q1, q2, doubt_words): q1_doubt_words = set(q1.split(" ")) & set(doubt_words) q2_doubt_words = set(q2.split(" ")) & set(doubt_words) return len(q1_doubt_words & q2_doubt_words) / float(len(q1_doubt_words | q2_doubt_words) + 1) for index,row in train_data.iterrows(): # 因为doubt_words词表加载出来的是Unicode,所以需要将s1,s2解码成Unicode s1 = row['s1'].strip().decode('utf-8') s2 = row['s2'].strip().decode('utf-8') doubt_sim = get_doubt_sim(s1,s2,doubt_words) feature_train[index] = round(doubt_sim,5) for index, row in test_data.iterrows(): s1 = row['s1'].strip().decode('utf-8') s2 = row['s2'].strip().decode('utf-8') doubt_sim = get_doubt_sim(s1, s2, doubt_words) feature_test[index] = round(doubt_sim,5) col_names = [feature_name] after_extract_feature_save_data(feature_train,feature_test,col_names,feature_name) def extract_sentence_exist_topic(): """ 抽取两个句子中是否同时存在蚂蚁花呗或者蚂蚁借呗的特征,同时包含花呗为1,同时包含借呗为1,否则为0 :return: """ # step1 定义抽取特征的方式名 feature_name = 'nlp_sentece_exist_topic' # step2 载入数据 train_data, test_data = before_extract_feature_load_data( train_file=project.data_dir + 'atec_nlp_sim_train_0.6.csv', test_file=project.data_dir + 'atec_nlp_sim_test_0.4.csv') feature_train = np.zeros((train_data.shape[0], 2), dtype='float64') feature_test = np.zeros((test_data.shape[0], 2), dtype='float64') def get_exist_same_topic(rawq1,rawq2): hua_flag = 0. jie_flag = 0. if '花呗' in rawq1 and '花呗' in rawq2: hua_flag = 1. if '借呗' in rawq1 and '借呗' in rawq2: jie_flag = 1. return hua_flag,jie_flag for index,row in train_data.iterrows(): s1 = row['s1'].strip() s2 = row['s2'].strip() hua_flag, jie_flag = get_exist_same_topic(s1,s2) feature_train[index,0] = hua_flag feature_train[index,1] = jie_flag for index, row in test_data.iterrows(): s1 = row['s1'].strip() s2 = row['s2'].strip() hua_flag, jie_flag = get_exist_same_topic(s1, s2) feature_test[index, 0] = hua_flag feature_test[index, 1] = jie_flag col_names = ['nlp_sentece_exist_topic_hua_flag','nlp_sentece_exist_topic_jie_flag'] after_extract_feature_save_data(feature_train,feature_test,col_names,feature_name) def extract_word_embedding_sim(w2v_model_path = 'train_all_data.bigram'): ''' 提取句子的词向量组合的相似度 w2v_model_path为词向量文件 :return: ''' # step1 定义抽取特征的方式名 feature_name = 'nlp_word_embedding_sim' # step2 载入数据 train_data ,test_data = before_extract_feature_load_data(train_file=project.preprocessed_data_dir + 'train_0.6_seg.csv', test_file=project.preprocessed_data_dir + 'test_0.4_seg.csv') feature_train = np.zeros((train_data.shape[0], 1), dtype='float64') feature_test = np.zeros((test_data.shape[0], 1), dtype='float64') train_all_w2v_model = KeyedVectors.load_word2vec_format(project.aux_dir + w2v_model_path, binary=False) # 得到句子的词向量组合(tfidf) def get_sen_vec(q, train_all_w2v_model, tfidf_dict, tfidf_flag=True): sen_vec = 0 for word in q.split(' '): if word in train_all_w2v_model.vocab: word_vec = train_all_w2v_model.word_vec(word) word_tfidf = tfidf_dict.get(word, None) if tfidf_flag == True: sen_vec += word_vec * word_tfidf else: sen_vec += word_vec sen_vec = sen_vec / np.sqrt(np.sum(np.power(sen_vec, 2)) + 0.000001) return sen_vec def get_sentece_embedding_sim(q1, q2, train_all_w2v_model, tfidf_dict, tfidf_flag=True): # 得到两个问句的词向量组合 q1_sec = get_sen_vec(q1, train_all_w2v_model, tfidf_dict, tfidf_flag) q2_sec = get_sen_vec(q2, train_all_w2v_model, tfidf_dict, tfidf_flag) # 曼哈顿距离 # manhattan_distance = np.sum(np.abs(np.subtract(q1_sec, q2_sec))) # 欧式距离 # enclidean_distance = np.sqrt(np.sum(np.power((q1_sec - q2_sec),2))) # 余弦相似度 molecular = np.sum(np.multiply(q1_sec, q2_sec)) denominator = np.sqrt(np.sum(np.power(q1_sec, 2))) * np.sqrt(np.sum(np.power(q2_sec, 2))) cos_sim = molecular / (denominator + 0.000001) # 闵可夫斯基距离 # minkowski_distance = np.power(np.sum(np.power(np.abs(np.subtract(q1_sec, q2_sec)), 3)), 0.333333) # return manhattan_distance, enclidean_distance, cos_sim, minkowski_distance return cos_sim for index,row in train_data.iterrows(): s1 = row['s1'].strip().decode('utf-8') s2 = row['s2'].strip().decode('utf-8') sentece_embedding_sim = get_sentece_embedding_sim(s1,s2,train_all_w2v_model,{},False) feature_train[index] = round(sentece_embedding_sim,5) for index, row in test_data.iterrows(): s1 = row['s1'].strip().decode('utf-8') s2 = row['s2'].strip().decode('utf-8') sentece_embedding_sim = get_sentece_embedding_sim(s1, s2, train_all_w2v_model,{}, False) feature_test[index] = round(sentece_embedding_sim,5) col_names = [feature_name] after_extract_feature_save_data(feature_train,feature_test,col_names,feature_name) if __name__ == '__main__': # 提取深度学习特征 # extract_feature_siamese_lstm_manDist() # extract_feature_siamese_lstm_attention() extract_feature_siamese_lstm_dssm() # extract_feature_abcnn() # 提取NLP特征 extract_sentece_length_diff() extract_edit_distance() extract_ngram() extract_sentence_diff_same() extract_doubt_sim() extract_sentence_exist_topic() extract_word_embedding_sim() # model_path = project.trained_model_dir + 'dl_siamese_lstm_dssm_model0.h5' # atten1 = AttentionLayer(20) # atten2 = AttentionLayer(25) # # model0 = load_model(model_path, # custom_objects={'AttentionLayer':AttentionLayer,'fbeta_score': fbeta_score, # 'precision': precision, # 'recall': recall}) pass ================================================ FILE: Financial_NLP/final_demo/main.py ================================================ #!/usr/bin/python # -*- coding: utf-8 -*- # @Time : 2018/6/15 下午10:49 # @Author : ComeOnJian # @File : main.py from data_prepare import * from sklearn.model_selection import StratifiedKFold from sklearn.metrics import accuracy_score from sklearn.metrics import f1_score from train_model import * def star_process(X_train,y_train,X_test,y_test): # Step2 分类模型 num_folds = 5 # Step3 定义交叉验证,及模型gbm参数 rand_seed = 456 kfold = StratifiedKFold( n_splits=5, shuffle=True, random_state=rand_seed ) lgb_param = { 'objective':'binary', 'metric':'binary_logloss', 'boosting':'gbdt', 'device':'cpu', 'feature_fraction': 1, #抽取所有特征的0.75个进行训练 'num_leaves':16, 'learning_rate':0.01, 'verbose':1, 'bagging_seed':rand_seed, 'feature_fraction_seed':rand_seed } y_test_pred = np.zeros((len(X_test),5)) for fold_num,(ix_train,ix_val) in enumerate(kfold.split(X=X_train,y=y_train)): # 准备数据 X_fold_train = X_train[ix_train] X_fold_val = X_train[ix_val] y_fold_train = y_train[ix_train] y_fold_val = y_train[ix_val] print 'train fold {} of {} ......'.format((fold_num + 1), 5) # 定义模型 lgb_data_train = lgb.Dataset(X_fold_train,y_fold_train) lgb_data_val = lgb.Dataset(X_fold_val,y_fold_val) evals_res = {} model = lgb.train( params=lgb_param, train_set= lgb_data_train, valid_sets=[lgb_data_train,lgb_data_val], # 训练集和测试集都需要验证 valid_names = ['train','val'], evals_result= evals_res, num_boost_round=2500, early_stopping_rounds=10, verbose_eval=False, ) fold_train_score = evals_res['train'][lgb_param['metric']] fold_val_score = evals_res['val'][lgb_param['metric']] print 'fold {}: {} rounds ,train loss {:.6f}, val loss {:.6f}'.format( (fold_num+1), len(fold_train_score), fold_train_score[-1], fold_val_score[-1] ) y_test_pred[:,fold_num] = model.predict(X_test).reshape(-1) # print model.feature_importance() # model.save_model(project.trained_model_dir + 'lgb_{}.model'.format(fold_num)) print y_test_pred.shape, '0' y_test_p = np.mean(y_test_pred,axis=1) # np.save('y_test_pre','pre.npy') print y_test_pred.shape ,'1' print y_test_p.shape ,'2' for index,pre in enumerate(y_test_p): if pre >=0.5: y_test_p[index] = 1 else: y_test_p[index] = 0 print y_test.shape,'3' print accuracy_score(y_test,y_test_p) print f1_score(y_test,y_test_p) if __name__ == '__main__': # step1 选出的特征 feature_names_list = [ 'dl_siamese_lstm_manDist', 'dl_siamese_lstm_dssm', 'dl_siamese_lstm_attention', 'nlp_sentece_length_diff', 'nlp_edit_distance', 'nlp_ngram', 'nlp_sentece_diff_some', 'nlp_doubt_sim', 'nlp_sentece_exist_topic', 'nlp_word_embedding_sim' ] # 加载数据 df_train,df_test,feature_index_ix = project.load_feature_lists(feature_names_list) # 查看抽取的特征情况 feature_view_df = pd.DataFrame(feature_index_ix, columns=['feature_name', 'start_index', 'end_index']) print feature_view_df print df_train.head(20) print df_train.tail(20) y_train = np.array(project.load(project.features_dir + 'y_0.6_train.pickle')) y_test = pd.read_csv(project.data_dir + 'atec_nlp_sim_test_0.4.csv', sep='\t', header=None, names=["index", "s1", "s2", "label"])['label'].values.reshape((-1)) X_test = df_test.values X_train = df_train.values # star_process(X_train,y_train,X_test,y_test) # # # lr = LogisticRegression(class_weight={0:1,1:4}) # lr.fit(X_train,y_train) # y_p = lr.predict(X_test) # print y_p[0:20] # for index, pre in enumerate(y_p): # if pre >= 0.5: # y_p[index] = 1 # else: # y_p[index] = 0 # # print accuracy_score(y_test, y_p) # print f1_score(y_test, y_p) # # clf = RandomForestClassifier(n_estimators=25, # max_depth=4, # # class_weight={ # 0: 1, # 1: 4 # } # ) # clf.fit(X_train, y_train) # y_p1 = clf.predict(X_test) # print accuracy_score(y_test, y_p1) # print f1_score(y_test, y_p1) # # # gb = GaussianNB() # gb.fit(X_train, y_train) # y_p2 = gb.predict(X_test) # print accuracy_score(y_test, y_p2) # print f1_score(y_test, y_p2) # # dt = DecisionTreeClassifier(class_weight={ # 0: 1, # 1: 4 # },max_depth=4) # dt.fit(X_train, y_train) # y_p3 = dt.predict(X_test) # print accuracy_score(y_test, y_p3) # print f1_score(y_test, y_p3) # stacking 第一层模型训练 # lgb_cls = LGBClassifier() # lgb_oofp_train, lgb_oofp_val = lgb_cls.get_model_out(X_train,y_train,X_test) # print lgb_oofp_val[0:25] gnb_cls = GussianNBClassifier() gnb_oop_train,gnb_oofp_val = gnb_cls.get_model_out(X_train,y_train,X_test) print gnb_oofp_val[0:25] rf_cls = RFClassifer() rf_oop_train, rf_oofp_val = rf_cls.get_model_out(X_train, y_train, X_test) print rf_oofp_val[0:25] lg_cls = LogisicClassifier() lg_oop_train, lg_oofp_val = lg_cls.get_model_out(X_train, y_train, X_test) print lg_oofp_val[0:25] dt_cls = DecisionClassifier() dt_oop_train, dt_oofp_val = dt_cls.get_model_out(X_train, y_train, X_test) print dt_oofp_val[0:25] # 构造输入 input_train = [gnb_oop_train,rf_oop_train,lg_oop_train,dt_oop_train] input_test = [gnb_oofp_val,rf_oofp_val,lg_oofp_val,dt_oofp_val] stacked_train = np.concatenate([data.reshape(-1,1) for data in input_train],axis=1) stacked_test = np.concatenate([data.reshape(-1,1) for data in input_test],axis=1) # stacking 第二层模型训练 second_model = DecisionTreeClassifier(max_depth=3,class_weight={0: 1, 1: 4}) second_model.fit(stacked_train,y_train) y_test_p = second_model.predict(stacked_test) for index,pre in enumerate(y_test_p): if pre >=0.5: y_test_p[index] = 1 else: y_test_p[index] = 0 print accuracy_score(y_test,y_test_p) print f1_score(y_test,y_test_p) ================================================ FILE: Financial_NLP/final_demo/train_model.py ================================================ #!/usr/bin/python # -*- coding: utf-8 -*- # @Time : 2018/6/16 上午9:34 # @Author : ComeOnJian # @File : train_model.py from keras.models import Sequential,Model from keras.layers.convolutional import Conv2D from keras.layers.pooling import MaxPooling2D from keras.layers import Embedding,LSTM,Layer,initializers,regularizers,constraints,Input,\ Dropout,concatenate,BatchNormalization,Dense,Bidirectional,\ Concatenate,Multiply,Maximum,Subtract,Lambda,dot,Flatten,Reshape from keras import backend as K from sklearn.model_selection import KFold import numpy as np #################### 模型的一些辅助类 #################### class AttentionLayer(Layer): def __init__(self,step_dim,W_regularizer=None, b_regularizer=None, W_constraint=None, b_constraint=None, bias=True, **kwargs): self.supports_masking = True self.init = initializers.get('glorot_uniform') self.W_regularizer = regularizers.get(W_regularizer) self.b_regularizer = regularizers.get(b_regularizer) self.W_constraint = constraints.get(W_constraint) self.b_constraint = constraints.get(b_constraint) self.bias = bias self.step_dim = step_dim self.features_dim = 0 super(AttentionLayer,self).__init__(**kwargs) #设置self.supports_masking = True后需要复写该方法 def compute_mask(self, inputs, mask=None): return None #参数设置,必须实现 def build(self, input_shape): assert len(input_shape) == 3 self.W = self.add_weight((input_shape[-1],), initializer=self.init, name='{}_W'.format(self.name), regularizer=self.W_regularizer, constraint=self.W_constraint) self.features_dim = input_shape[-1] if self.bias: self.b = self.add_weight((input_shape[1],), initializer='zero', name='{}_b'.format(self.name), regularizer=self.b_regularizer, constraint=self.b_constraint) else: self.b = None self.built = True # input (None,sentence_length,embedding_size) def call(self, x, mask = None): # 计算输出 features_dim = self.features_dim step_dim = self.step_dim eij = K.reshape(K.dot(K.reshape(x, (-1, features_dim)), K.reshape(self.W, (features_dim, 1))), (-1, step_dim)) if self.bias: eij += self.b eij = K.tanh(eij) a = K.exp(eij) # apply mask after the exp. will be re-normalized next if mask is not None: # Cast the mask to floatX to avoid float64 upcasting in theano a *= K.cast(mask, K.floatx()) # in some cases especially in the early stages of training the sum may be almost zero a /= K.cast(K.sum(a, axis=1, keepdims=True) + K.epsilon(), K.floatx()) a = K.expand_dims(a) weighted_input = x * a # print weigthted_input.shape return K.sum(weighted_input, axis=1) def compute_output_shape(self, input_shape): return input_shape[0], self.features_dim def get_config(self): config = {'step_dim': self.step_dim} base_config = super(AttentionLayer, self).get_config() return dict(list(base_config.items()) + list(config.items())) class ManDist(Layer): """ 自定义定义曼哈顿距离计算层,继承Layer层,必须实现三个父类方法 build,call,comput_output_shape """ def __init__(self, **kwargs): self.res = None # 表示相似度 # self.match_vector = None super(ManDist, self).__init__(**kwargs) def build(self, input_shape): """Creates the layer weights. # Arguments input_shape: Keras tensor (future input to layer) or list/tuple of Keras tensors to reference for weight shape computations. """ super(ManDist, self).build(input_shape) def call(self, inputs, **kwargs): """This is where the layer's logic lives. # Arguments inputs: Input tensor, or list/tuple of input tensors. **kwargs: Additional keyword arguments. # Returns A tensor or list/tuple of tensors. """ # 计算曼哈顿距离,因为输入计算曼哈顿距离的有两个Input层分别为inputs[0]和inputs[1] # lstm model self.res = K.exp(- K.sum(K.abs(inputs[0]-inputs[1]),axis = 1,keepdims = True)) return self.res # encode_s1 = inputs[0] # encode_s2 = inputs[1] # sentence_differerce = encode_s1 - encode_s2 # sentece_product = encode_s1 * encode_s2 # # self.match_vector = K.concatenate([encode_s1,sentence_differerce,sentece_product,encode_s2],1) # # return self.match_vector def compute_output_shape(self, input_shape): """Computes the output shape of the layer. Assumes that the layer will be built to match that input shape provided. # Arguments input_shape: Shape tuple (tuple of integers) or list of shape tuples (one per output tensor of the layer). Shape tuples can include None for free dimensions, instead of an integer. # Returns An input shape tuple. """ return K.int_shape(self.res) class ConsDist(Layer): """ 自定义定义曼哈顿距离计算层,继承Layer层,必须实现三个父类方法 build,call,comput_output_shape """ def __init__(self, **kwargs): self.res = None # 表示相似度 # self.match_vector = None super(ConsDist, self).__init__(**kwargs) def build(self, input_shape): """Creates the layer weights. # Arguments input_shape: Keras tensor (future input to layer) or list/tuple of Keras tensors to reference for weight shape computations. """ super(ConsDist, self).build(input_shape) def call(self, inputs, **kwargs): """This is where the layer's logic lives. # Arguments inputs: Input tensor, or list/tuple of input tensors. **kwargs: Additional keyword arguments. # Returns A tensor or list/tuple of tensors. """ # 计算曼哈顿距离,因为输入计算曼哈顿距离的有两个Input层分别为inputs[0]和inputs[1] # lstm model self.res = K.sum(inputs[0] * inputs[1],axis=1,keepdims=True)/(K.sum(inputs[0]**2,axis=1,keepdims=True) * K.sum(inputs[1]**2,axis=1,keepdims=True)) return self.res def compute_output_shape(self, input_shape): """Computes the output shape of the layer. Assumes that the layer will be built to match that input shape provided. # Arguments input_shape: Shape tuple (tuple of integers) or list of shape tuples (one per output tensor of the layer). Shape tuples can include None for free dimensions, instead of an integer. # Returns An input shape tuple. """ return K.int_shape(self.res) class AttentionLayer1(Layer): def __init__(self, **kwargs): # self.res = None # 表示相似度 self.match_vector = None super(AttentionLayer1, self).__init__(**kwargs) def build(self, input_shape): """Creates the layer weights. # Arguments input_shape: Keras tensor (future input to layer) or list/tuple of Keras tensors to reference for weight shape computations. """ super(AttentionLayer1, self).build(input_shape) def call(self, inputs, **kwargs): """This is where the layer's logic lives. # Arguments inputs: Input tensor, or list/tuple of input tensors. **kwargs: Additional keyword arguments. # Returns A tensor or list/tuple of tensors. """ encode_s1 = inputs[0] encode_s2 = inputs[1] sentence_differerce = encode_s1 - encode_s2 sentece_product = encode_s1 * encode_s2 self.match_vector = K.concatenate([encode_s1,sentence_differerce,sentece_product,encode_s2],1) # return self.match_vector def compute_output_shape(self, input_shape): """Computes the output shape of the layer. Assumes that the layer will be built to match that input shape provided. # Arguments input_shape: Shape tuple (tuple of integers) or list of shape tuples (one per output tensor of the layer). Shape tuples can include None for free dimensions, instead of an integer. # Returns An input shape tuple. """ return K.int_shape(self.match_vector) def precision(y_true, y_pred): """Precision metric. Only computes a batch-wise average of precision. Computes the precision, a metric for multi-label classification of how many selected items are relevant. """ #y_t = K.cast(K.argmax(y_true,axis=1),dtype='float32') #y_p = K.cast(K.argmax(y_pred,axis=1),dtype='float32') y_t = y_true y_p = y_pred true_positives = K.sum(K.round(K.clip(y_t * y_p, 0, 1))) predicted_positives = K.sum(K.round(K.clip(y_p, 0, 1))) precision = true_positives / (predicted_positives + K.epsilon()) return precision def recall(y_true, y_pred): """Recall metric. Only computes a batch-wise average of recall. Computes the recall, a metric for multi-label classification of how many relevant items are selected. """ #y_t = K.cast(K.argmax(y_true,axis=1),dtype='float32') #y_p = K.cast(K.argmax(y_pred,axis=1),dtype='float32') y_t = y_true y_p = y_pred true_positives = K.sum(K.round(K.clip(y_t * y_p, 0, 1))) possible_positives = K.sum(K.round(K.clip(y_t, 0, 1))) recall = true_positives / (possible_positives + K.epsilon()) return recall def fbeta_score(y_t, y_p, beta=1): """Computes the F score. The F score is the weighted harmonic mean of precision and recall. Here it is only computed as a batch-wise average, not globally. This is useful for multi-label classification, where input samples can be classified as sets of labels. By only using accuracy (precision) a model would achieve a perfect score by simply assigning every class to every input. In order to avoid this, a metric should penalize incorrect class assignments as well (recall). The F-beta score (ranged from 0.0 to 1.0) computes this, as a weighted mean of the proportion of correct class assignments vs. the proportion of incorrect class assignments. With beta = 1, this is equivalent to a F-measure. With beta < 1, assigning correct classes becomes more important, and with beta > 1 the metric is instead weighted towards penalizing incorrect class assignments. """ if beta < 0: raise ValueError('The lowest choosable beta is zero (only precision).') # If there are no true positives, fix the F score at 0 like sklearn. if K.sum(K.round(K.clip(y_t, 0, 1))) == 0: return 0 p = precision(y_t, y_p) r = recall(y_t, y_p) bb = beta ** 2 fbeta_score = (1 + bb) * (p * r) / (bb * p + r + K.epsilon()) return fbeta_score def contrastive_loss(y_true,y_pred): """ 定义孪生网络的代价函数,对比代价函数,每个样本的误差为L=(1 - y) * d + y * max((margin - d),0) 其中margin为相似度的阈值默认为1 http://yann.lecun.com/exdb/publis/pdf/hadsell-chopra-lecun-06.pdf :param y_true:1表示两个样本相似,0表示不匹配,y :param y_pred:表示相似度d,范围是(0,1) :return: """ margin = 0.8 # return K.mean(y_true * K.square(y_pred) + # (1 - y_true) * K.square(K.maximum(margin - y_pred, 0))) return K.mean((1-y_true) * y_pred + y_true * K.maximum((margin - y_pred),0)) def create_siamese_lstm_attention_model(embedding_matrix,model_param,embedding_size = 300,max_sentence_length = 20): # step 1 定义孪生网络的公共层 X = Sequential() embedding_layer = Embedding( input_dim=len(embedding_matrix,), output_dim=embedding_size, weights=[embedding_matrix], trainable=True, input_length=max_sentence_length ) # 一般来说return_sequences为true时,需要使用attention lstm_layer = LSTM( units=model_param['lstm_units'] ,return_sequences=False ) # attention_layer = AttentionLayer() X.add(embedding_layer) X.add(lstm_layer) # X.add(attention_layer) #share_model为孪生网络的共同拥有的层 share_model = X # step 2 模型是多输入的结构,定义两个句子的输入 left_input = Input(shape=(max_sentence_length,), dtype='int32') right_input = Input(shape=(max_sentence_length,), dtype='int32') # Step3定义两个输入合并后的模型层 s1_net = share_model(left_input) s2_net = share_model(right_input) # Dropout 防止过拟合连接层 # merge_model = concatenate([s1_net,s2_net]) # merge_model = Dropout(model_param['desen_dropout_rate'])(merge_model) # merge_model = BatchNormalization()(merge_model) # matching_layer = AttentionLayer1()([s1_net,s2_net]) # merge_model = Dropout(model_param['desen_dropout_rate'])(man_layer) # merge_model = BatchNormalization()(merge_model) # # Dense层 # activation = 'relu' merge_model = Dense(model_param['num_dense'])(matching_layer) merge_model = Dropout(model_param['desen_dropout_rate'])(merge_model) merge_model = BatchNormalization()(merge_model) # Step4 定义输出层 output_layer = Dense(1,activation='sigmoid')(merge_model) model = Model( inputs=[left_input, right_input], outputs=[output_layer], name="simaese_lstm_attention" ) model.compile( #categorical_crossentropy,contrastive_loss,binary_crossentropy loss='binary_crossentropy', optimizer='adam', metrics=["accuracy",fbeta_score,precision,recall] ) return model def create_siamese_lstm_ManDistance_model(embedding_matrix,model_param,embedding_size = 300,max_sentence_length = 20): # step 1 定义孪生网络的公共层 X = Sequential() embedding_layer = Embedding( input_dim=len(embedding_matrix,), output_dim=embedding_size, weights=[embedding_matrix], trainable=True, input_length=max_sentence_length ) # 一般来说return_sequences为true时,需要使用attention lstm_layer = LSTM( units=model_param['lstm_units'], dropout=model_param['lstm_dropout_rate'], recurrent_dropout=model_param['lstm_re_dropout_rate'] ,return_sequences=False ) # attention_layer = AttentionLayer() X.add(embedding_layer) X.add(lstm_layer) # X.add(attention_layer) #share_model为孪生网络的共同拥有的层 share_model = X # step 2 模型是多输入的结构,定义两个句子的输入 left_input = Input(shape=(max_sentence_length,), dtype='int32') right_input = Input(shape=(max_sentence_length,), dtype='int32') # Step3定义两个输入合并后的模型层 s1_net = share_model(left_input) s2_net = share_model(right_input) # Step4 定义输出层 man_layer = ManDist()([s1_net,s2_net]) out_put_layer = Dense(2, activation='softmax')(man_layer) # out_put_layer = Dense(1,activation='sigmoid')(man_layer) model = Model( inputs=[left_input, right_input], outputs=[out_put_layer], name="simaese_lstm_manDist" ) model.compile( # contrastive_loss binary_crossentropy categorical_crossentropy loss= 'categorical_crossentropy', optimizer='adam', metrics=["accuracy",fbeta_score,precision,recall] ) # model.predict() return model def create_siamese_lstm_dssm_mdoel(embedding_matrix,embedding_word_matrix,model_param,embedding_size = 300,max_sentence_length = 20,max_word_length=25): # 第一部分 # step 1 定义复杂模型的输入 num_conv2d_layers = 1 filters_2d = [6, 12] kernel_size_2d = [[3, 3], [3, 3]] mpool_size_2d = [[2, 2], [2, 2]] left_input = Input(shape=(max_sentence_length,), dtype='int32') right_input = Input(shape=(max_sentence_length,), dtype='int32') # 定义需要使用的网络层 embedding_layer1 = Embedding( input_dim=len(embedding_matrix, ), output_dim=embedding_size, weights=[embedding_matrix], trainable=True, input_length=max_sentence_length ) att_layer1 = AttentionLayer(20) bi_lstm_layer =Bidirectional(LSTM(model_param['lstm_units'])) lstm_layer1 = LSTM(model_param['lstm_units'], return_sequences=True) lstm_layer2 = LSTM(model_param['lstm_units']) # 组合模型结构,两个输入添加Embeding层 s1 = embedding_layer1(left_input) s2 = embedding_layer1(right_input) # 在Embeding层上添加双向LSTM层 s1_bi = bi_lstm_layer(s1) s2_bi = bi_lstm_layer(s2) # 另在Embeding层上添加双层LSTM层 s1_lstm_lstm = lstm_layer2(lstm_layer1(s1)) s2_lstm_lstm = lstm_layer2(lstm_layer1(s2)) s1_lstm = lstm_layer1(s1) s2_lstm = lstm_layer1(s2) # cnn_input_layer = dot([s1_lstm,s2_lstm],axes=-1) cnn_input_layer_dot = Reshape((20,20,-1))(cnn_input_layer) layer_conv1 = Conv2D(filters=8,kernel_size=3,padding='same',activation='relu')(cnn_input_layer_dot) z = MaxPooling2D(pool_size=(2,2))(layer_conv1) for i in range(num_conv2d_layers): z = Conv2D(filters=filters_2d[i], kernel_size=kernel_size_2d[i], padding='same', activation='relu')(z) z = MaxPooling2D(pool_size=(mpool_size_2d[i][0], mpool_size_2d[i][1]))(z) pool1_flat = Flatten()(z) # # print pool1_flat pool1_flat_drop = Dropout(rate=0.1)(pool1_flat) ccn1 = Dense(32, activation='relu')(pool1_flat_drop) ccn2 = Dense(16, activation='relu')(ccn1) # 另在Embeding层上添加attention层 s1_att = att_layer1(s1) s2_att = att_layer1(s2) # 组合在Embeding层上添加attention层和在Embeding层上添加双向LSTM层 s1_last = Concatenate(axis=1)([s1_att,s1_bi]) s2_last = Concatenate(axis=1)([s2_att,s2_bi]) cos_layer = ConsDist()([s1_last,s2_last]) man_layer = ManDist()([s1_last,s2_last]) # 第二部分 left_w_input = Input(shape=(max_word_length,), dtype='int32') right_w_input = Input(shape=(max_word_length,), dtype='int32') # 定义需要使用的网络层 embedding_layer2 = Embedding( input_dim=len(embedding_word_matrix, ), output_dim=embedding_size, weights=[embedding_word_matrix], trainable=True, input_length=max_word_length ) lstm_word_bi_layer = Bidirectional(LSTM(6)) att_layer2 = AttentionLayer(25) s1_words = embedding_layer2(left_w_input) s2_words = embedding_layer2(right_w_input) # s1_word_lstm = lstm_layer1(s1_words) # s2_word_lstm = lstm_layer1(s2_words) # # cnn_input_layer1 = dot([s1_word_lstm, s2_word_lstm], axes=-1) # cnn_input_layer_dot1 = Reshape((25, 25, -1))(cnn_input_layer1) # layer_conv11 = Conv2D(filters=8, kernel_size=3, padding='same', activation='relu')(cnn_input_layer_dot1) # z1 = MaxPooling2D(pool_size=(2, 2))(layer_conv11) # # for i in range(num_conv2d_layers): # z1 = Conv2D(filters=filters_2d[i], kernel_size=kernel_size_2d[i], padding='same', activation='relu')(z1) # z1 = MaxPooling2D(pool_size=(mpool_size_2d[i][0], mpool_size_2d[i][1]))(z1) # # pool1_flat1 = Flatten()(z1) # # print pool1_flat # pool1_flat_drop1 = Dropout(rate=0.1)(pool1_flat1) # mlp11 = Dense(32, activation='relu')(pool1_flat_drop1) # mlp21 = Dense(16, activation='relu')(mlp11) s1_words_bi = lstm_word_bi_layer(s1_words) s2_words_bi = lstm_word_bi_layer(s2_words) s1_words_att = att_layer2(s1_words) s2_words_att = att_layer2(s2_words) s1_words_last = Concatenate(axis=1)([s1_words_att,s1_words_bi]) s2_words_last = Concatenate(axis=1)([s2_words_att,s2_words_bi]) cos_layer1 = ConsDist()([s1_words_last,s2_words_last]) man_layer1 = ManDist()([s1_words_last,s2_words_last]) # 第三部分,前两部分模型组合 s1_s2_mul = Multiply()([s1_last,s2_last]) s1_s2_sub = Lambda(lambda x: K.abs(x))(Subtract()([s1_last,s2_last])) s1_s2_maxium = Maximum()([Multiply()([s1_last,s1_last]),Multiply()([s2_last,s2_last])]) s1_s2_sub1 = Lambda(lambda x: K.abs(x))(Subtract()([s1_lstm_lstm,s2_lstm_lstm])) s1_words_s2_words_mul = Multiply()([s1_words_last,s2_words_last]) s1_words_s2_words_sub = Lambda(lambda x: K.abs(x))(Subtract()([s1_words_last,s2_words_last])) s1_words_s2_words_maxium = Maximum()([Multiply()([s1_words_last,s1_words_last]),Multiply()([s2_words_last,s2_words_last])]) last_list_layer = Concatenate(axis=1)([s1_s2_mul,s1_s2_sub,s1_s2_sub1,s1_s2_maxium,s1_words_s2_words_mul,s1_words_s2_words_sub,s1_words_s2_words_maxium]) last_list_layer = Dropout(0.05)(last_list_layer) # Dense 层 dense_layer1 = Dense(32,activation='relu')(last_list_layer) dense_layer2 = Dense(48,activation='sigmoid')(last_list_layer) output_layer = Concatenate(axis=1)([dense_layer1,dense_layer2,cos_layer,man_layer,cos_layer1,man_layer1,ccn2]) # Step4 定义输出层 output_layer = Dense(1, activation='sigmoid')(output_layer) model = Model( inputs=[left_input,right_input,left_w_input,right_w_input], outputs=[output_layer], name="simaese_lstm_attention" ) model.compile( # categorical_crossentropy,contrastive_loss,binary_crossentropy loss='binary_crossentropy', optimizer='adam', metrics=["accuracy", fbeta_score, precision, recall] ) return model def predict(model,X_s1,X_s2): # y1 = model.predict([X_s1,X_s2]).reshape(-1) # y2 = model.predict([X_s1,X_s2]).reshape(-1) y1 = model.predict([X_s1,X_s2]) y2 = model.predict([X_s1,X_s2]) print y1.shape res = (y1 + y2)/2 # print res[0:15] return res def predict1(model,X_s1,X_s2,X_s1_char,X_s2_char): # y1 = model.predict([X_s1,X_s2]).reshape(-1) # y2 = model.predict([X_s1,X_s2]).reshape(-1) y1 = model.predict([X_s1,X_s2,X_s1_char,X_s2_char]) y2 = model.predict([X_s1,X_s2,X_s1_char,X_s2_char]) res = (y1 + y2)/2 # print res[0:15] return res #################### Stacking 模型的融合 #################### from sklearn.naive_bayes import GaussianNB # import lightgbm as lgb from sklearn.tree import DecisionTreeClassifier from sklearn.ensemble import RandomForestClassifier from sklearn.linear_model import LogisticRegression class StackingBaseClassifier(object): def train(self, x_train, y_train, x_val=None, y_val=None): """ 主要用于Stacking的基础模型的训练 :param x_train: :param y_train: :param x_val: :param y_val: :return:model和auc """ pass def predict(self, model, x_test): pass def get_model_out(self, x_train, y_train, x_test, n_fold=5): """ 交叉验证预测出基础模型的输出 :param x_train: :param y_train: :param x_test: :param n_fold: :return: """ n_train = x_train.shape[0] n_test = x_test.shape[0] train_oofp = np.zeros((n_train,)) # 存储每个fold的预测结果 test_oofp = np.zeros((n_test, n_fold)) # 存储对测试集预测结果 kfold = KFold(n_splits=n_fold, random_state=44, shuffle=True) for index, (ix_train, ix_val) in enumerate(kfold.split(x_train)): print '{} fold of {} start train and predict...'.format(index, n_fold) X_fold_train = x_train[ix_train] y_fold_train = y_train[ix_train] X_fold_val = x_train[ix_val] y_fold_val = y_train[ix_val] model = self.train(X_fold_train, y_fold_train, X_fold_val, y_fold_val) train_oofp[ix_val] = self.predict(model, X_fold_val) test_oofp[:, index] = self.predict(model, x_test) test_oofp_mean = np.mean(test_oofp, axis=1) return train_oofp, test_oofp_mean class GussianNBClassifier(StackingBaseClassifier): def __init__(self): # 参数设置 pass def train(self, x_train, y_train, x_val, y_val): print 'use GaussianNB train model...' gnb = GaussianNB() gnb.fit(x_train, y_train) return gnb #, gnb.score(x_val, y_val) def predict(self, model, x_test): print 'use GaussianNB model test... ' return model.predict(x_test) # class LGBClassifier(StackingBaseClassifier): # def __init__(self): # self.lgb_param = { # 'objective': 'binary', # 'metric': {'auc', 'binary_logloss'}, # 'boosting': 'gbdt', # 'device': 'cpu', # 'feature_fraction': 0.8, # 抽取所有特征的0.75个进行训练 # 'num_leaves': 16, # 'learning_rate': 0.01, # 'verbose': 1, # 'bagging_seed': 456, # 'feature_fraction_seed': 456 # } # # def train(self, x_train, y_train, x_val, y_val): # print 'use LGB train model...' # lgb_data_train = lgb.Dataset(x_train, y_train) # lgb_data_val = lgb.Dataset(x_val, y_val) # evals_res = {} # # model = lgb.train( # params=self.lgb_param, # train_set=lgb_data_train, # valid_sets=[lgb_data_train, lgb_data_val], # 训练集和测试集都需要验证 # valid_names=['train', 'val'], # evals_result=evals_res, # num_boost_round=2500, # early_stopping_rounds=10, # verbose_eval=False # ) # return model # # def predict(self, model, x_test): # print 'use LGB model test... ' # return model.predict(x_test) class RFClassifer(StackingBaseClassifier): def train(self, x_train, y_train, x_val, y_val): print 'use RandomForest train model...' clf = RandomForestClassifier(n_estimators=25, max_depth=4, class_weight={ 0: 1, 1: 4 } ) clf.fit(x_train, y_train) return clf #, 0. def predict(self, model, x_test): print 'use RandomForest test...' return model.predict(x_test) class LogisicClassifier(StackingBaseClassifier): def train(self, x_train, y_train, x_val=None, y_val=None): print 'use LogisticRegression train model...' lr = LogisticRegression(class_weight={0: 1, 1: 4}) lr.fit(x_train, y_train) return lr def predict(self, model, x_test): print 'use LogisticRegression test...' return model.predict(x_test) class DecisionClassifier(StackingBaseClassifier): def train(self, x_train, y_train, x_val=None, y_val=None): print 'use DecisionClassifier train model...' dt = DecisionTreeClassifier(class_weight={0: 1, 1: 4},max_depth=5) dt.fit(x_train, y_train) return dt def predict(self, model, x_test): print 'use DecisionClassifier test...' return model.predict(x_test) ================================================ FILE: Financial_NLP/final_demo/util.py ================================================ #!/usr/bin/python # -*- coding: utf-8 -*- # @Time : 2018/6/15 下午8:54 # @Author : ComeOnJian # @File : project.py # 参考https://github.com/YuriyGuts/pygoose/blob/master/pygoose """ 整个项目的结构 """ import os import io import numpy as np import pandas as pd import pickle class Project: def __init__(self,root_dir): self._root_dir = root_dir self._init_all_paths() def _init_all_paths(self): self._data_dir = os.path.join(self._root_dir, 'data')#存放训练数据和测试数据 # self._notebooks_dir = os.path.join(self._root_dir, 'notebooks') self._aux_data_dir = os.path.join(self._data_dir, 'external') #存放外部数据源 self._preprocessed_data_dir = os.path.join(self._data_dir, 'preprocessed') ##存放预处理好的数据 self._features_dir = os.path.join(self._data_dir, 'features') #存放抽取的特征数据 # self._submissions_dir = os.path.join(self._data_dir, 'submissions') #存放最终提交的文件 self._trained_model_dir = os.path.join(self._data_dir, 'trained') #存放训练的模型文件 self._temp_dir = os.path.join(self._data_dir, 'tmp') #存放临时文件 # 设置成只读属性 @property def root_dir(self): return self._root_dir + os.path.sep @property def data_dir(self): return self._data_dir + os.path.sep @property def aux_dir(self): return self._aux_data_dir + os.path.sep @property def preprocessed_data_dir(self): return self._preprocessed_data_dir + os.path.sep @property def features_dir(self): return self._features_dir + os.path.sep @property def trained_model_dir(self): return self._trained_model_dir + os.path.sep @property def temp_dir(self): return self._temp_dir + os.path.sep # print os.getcwd() # 获取当前工作目录路径 # print os.path.abspath('.') # 获取当前工作目录路径 # print os.path.abspath('test.txt') # 获取当前目录文件下的工作目录路径 # print os.path.abspath('..') # 获取当前工作的父目录 !注意是父目录路径 # print os.path.abspath(os.curdir) # 获取当前工作目录路径 @staticmethod def init(root_dir,create_dir = True): """ :param root_dir:项目根目录 :param create_dir:是否需要重新创建项目存放的资料目录 :return:放回项目操作的对象 """ project = Project(root_dir) if create_dir: paths_to_create = [ project.data_dir, project.aux_dir, project.features_dir, project.preprocessed_data_dir, project.trained_model_dir, project.temp_dir ] for path in paths_to_create: if os.path.exists(path): continue else: os.makedirs(path) return project """ 说明: 某中方法提取特征后,产生多列的数据如下,分别存放两个文件中feature.name(列名)和feature.pickle(根据该抽取方法获得的样本数据) 列名: f_1 f_2 f_3 f_4 f_5 f_6 f_7 f_8 f_9 f_10 样本1: 0.1 0.4 8 2 4 2 3 0.1 0.4 0.33 样本2: 0.1 0.4 8 2 4 2 3 0.1 0.4 0.33 """ def load_feature_lists(self,feature_lists): """ 根据特征名的列表,从运用各个方法抽取的特征文件中提出数据组合成DataFrame :param feature_lists:特征名组成的列表,可以将feature看成是抽取特征的方式 :return:特征数据组成的DataFrame """ column_names = [] feature_ranges = [] running_feature_count = 0 # 从存放特征列名的文件中加载出列名,并记录各个特征对应的起始列的index for feature_name in feature_lists: feature_col_name_list = self._load_feature_col_name(self.features_dir + 'X_train_{}.names'.format(feature_name)) column_names.extend(feature_col_name_list) start_index = running_feature_count end_index = running_feature_count + len(feature_col_name_list) - 1 running_feature_count = running_feature_count + len(feature_col_name_list) feature_ranges.append([feature_name,start_index,end_index]) # 从存放多个列文件中将数据的特征组合起来 X_train = np.hstack([self._load_feature_data(self.features_dir + 'X_train_{}.pickle'.format(feature_name)) for feature_name in feature_lists ]) X_test = np.hstack([self._load_feature_data(self.features_dir + 'X_test_{}.pickle'.format(feature_name)) for feature_name in feature_lists ]) train_df = pd.DataFrame(X_train,columns=column_names) test_df = pd.DataFrame(X_test,columns=column_names) return train_df,test_df,feature_ranges def save_features(self,train_fea,test_fea,fea_names,feature_name): """ 使用某种方式使用本方法来保存特征 :param train_fea:某种方法抽取的特征的多列数据来源于训练数据 :param test_fea:某种方法抽取的特征的多列数据来源于测试数据 :param fea_names:某种方法抽取的特征的形成的多列的数据对应的列名,list类型 :param feature_name:抽取的方法名 """ self.save_feature_names(fea_names,feature_name) self.save_feature_col_list(train_fea,'train',feature_name) self.save_feature_col_list(test_fea,'test',feature_name) def save_feature_names(self,fea_names,feature_name): # 保存列名 self._save_feature_col_name(fea_names,self.features_dir + 'X_train_{}.names'.format(feature_name)) def save_feature_col_list(self,fea_data,type,feature_name): # 保存各列对应的数据 self._save_feature_data(fea_data,self.features_dir + 'X_{}_{}.pickle'.format(type,feature_name)) def _load_feature_col_name(self,nfile): with io.open(nfile,'r',encoding="utf-8") as file: return [line.rstrip('\n') for line in file.readlines()] def _load_feature_data(self,nfile): with open(nfile,'rb') as file: return pickle.load(file) def _save_feature_data(self,data,nfile): with open(nfile,'wb') as file: pickle.dump(data,file) def _save_feature_col_name(self,col_names,nfile): with open(nfile,'w') as file: file.write('\n'.join(col_names)) def save(self,nfile,object): with open(nfile, 'wb') as file: pickle.dump(object, file) def load(self,nfile): with open(nfile, 'rb') as file: return pickle.load(file) # 初始化整个项目的基础类 project = Project.init('/Users/jian/PythonPrMl/Financial_NLP/atec',create_dir=False) ================================================ FILE: ML/DecisionTree/Boosting.py ================================================ #!/usr/bin/python # -*- coding: utf-8 -*- # @Time : 2018/4/12 下午5:27 # @Author : ComeOnJian # @File : Boosting.py from sklearn.metrics import accuracy_score from sklearn.tree import DecisionTreeClassifier import math import numpy as np import time class ThresholdClass(): """ 构造一个阈值分类器 x= -1 ,val = 0 Adult是二分类问题,当阈值分类器输出val为1表示预测为正例,当阈值分类器输出val为0表示预测为负例 """ def __init__(self,train_x,train_y,w): """ 初始化阈值分类器 :param features: 特征集 :param labels:标签集 :param w: 样本对应的权重 """ self.X = train_x self.y = train_y self.sample_num = train_x.shape[0] #每个样本对应的参数 self.w = w #初始化 feature取值的阈值范围 self.values = self._get_V_list(self.X) self.best_V = -1 def train(self): """ 计算使得分类误差率最小的阈值 :return: 返回误差率 """ best_error_rate = 1.1 error_rate = 0.0 for V in self.values: #计算每个阈值对应的误差率 for feature_v_index in range(self.sample_num): val = 0 if self.X[feature_v_index] < V: val = 1 # error 出现的情况 if val != self.y[feature_v_index]: error_rate = error_rate + self.w[feature_v_index] * 1 if error_rate != 0.0 and error_rate < best_error_rate: best_error_rate = error_rate self.best_V = V #没有error的情况 if best_error_rate == 1.1: self.best_V = V return best_error_rate def predict(self,feature_value): """ :param feature_value:单个维度的值 :return:预测值 """ if feature_value < self.best_V: return 1 else: return 0 def _get_V_list(self,X): """ :param X:特征对应的取值 :return:该特征对应的阈值可取值列表 """ values_set = set(X) values = [] for iter,value in enumerate(values_set): if iter==0: continue else: values.append(value-0.5) return values """ 如果特征有n维,我们针对每一维特征求一个分类器,选取这些分类器中分类误差率最低的分类器作为本轮的分类器,将其特征index与分类器一起存入G(x)中。 """ class AdaBoostBasic(): def __init__(self,M = 10): # 由M个弱分类器叠加 self.M = M pass def _init_parameters_(self,train_x,train_y): self.X = train_x self.y = train_y # 特征数 self.feature_num = train_x.shape[1] self.sample_num = train_x.shape[0] # 分类器Gm(x)的系数列表 self.alpha = [] # 列表item 为(维度即特征index,维度对应的分类器) self.classifier = [] # 数据集样本的权值分布,类型为列表 self.w = [1.0/self.sample_num] * self.sample_num def train(self,train_x,train_y): self._init_parameters_(train_x,train_y) #计算M个弱分类器 for iter in range(self.M): print('start %d ThresholdClass ...'%(iter)) #对于多维度的分类,需要计算特定的维度的最好的分类器即误差率最小 # 分别对应的误差率,特征index,分类器对象 best_ThresholdClass = (1,None,None) #从多维度的数据中找出维度对应的误差最小的特征及对应的分类器 for feature_index in range(self.feature_num): #取feature对应的列,作为单维特征 feature_X = self.X[:,feature_index] thresholdClass = ThresholdClass(feature_X,self.y,self.w) error_rate = thresholdClass.train() if error_rate < best_ThresholdClass[0]: best_ThresholdClass = (error_rate,feature_index,thresholdClass) error_rate_iter = best_ThresholdClass[0] print('No %d ThresholdClass error rate is : %f , feature index is :%d' % (iter,best_ThresholdClass[0],best_ThresholdClass[1])) #记录下第iter轮的分类器 self.classifier.append(best_ThresholdClass) # 记录下参数alpha alpha_iter = 100 if error_rate_iter == 1.1: #没有分错的情况 self.alpha.append(alpha_iter) else: alpha_iter = self._get_alpha(error_rate_iter) self.alpha.append(alpha_iter) #更新训练集记录的权值分布 Zm = self._get_Z_m(alpha_iter,best_ThresholdClass[1],best_ThresholdClass[2]) self._updata_w(alpha_iter,best_ThresholdClass[1],best_ThresholdClass[2],Zm) def predict(self,sample): predict = 0 for index in range(self.M): alpha_m = self.alpha[index] # 系数 classfiler_m = self.classifier[index] # 分类器参数 feature_index_m = classfiler_m[1] #分类器对应的Feature index thresholfclass_m = classfiler_m[2] feature_value = sample[feature_index_m] Gm = thresholfclass_m.predict(feature_value) predict = predict + alpha_m * Gm predict = self._sigmoid(predict) if predict >= 0.5: return 1 else: return 0 def _sigmoid(self,x): return 1.0/(1 + math.exp(-x)) def _get_alpha(self,error_rate_iter): alpha = 0.5 * math.log((1-error_rate_iter)/error_rate_iter) return alpha #规范因子 def _get_Z_m(self,alpha,feature_index,classifler): """ :param alpha:第m个弱分类前的系数 :param feature_index 分类的特征的index :param classifler:第m个弱分类 :return:Zm """ Zm = 0.0 for index in range(self.sample_num): temp = - alpha * self.y[index,:][0] * classifler.predict(self.X[index,feature_index]) Zm = Zm + self.w[index] * math.exp(temp) return Zm def _updata_w(self,alpha,feature_index,classifler,Zm): """更新w值""" for index in range(self.sample_num): temp = - alpha * self.y[index, :][0] * classifler.predict(self.X[index, feature_index]) self.w[index] = self.w[index] / Zm * math.exp(temp) class AdaBoostTree(): """ 以CART为基类-弱分类器的提升方法 """ def __init__(self): pass class AdaBoostGDBT(): pass train_file = '../data/adult/adult_deal_value.data' test_file = '../data/adult/adult_deal_value.test' if __name__ == '__main__': flods = [train_file, test_file] print('load data...') from ML.DecisionTree import decision_tree as dt train_x, train_y, test_x, test_y = dt.load_data(flods) print('finish data load...') start_time = time.time() adboost = AdaBoostBasic(M = 30) adboost.train(train_x,train_y) end_time = time.time() train_time = end_time - start_time print('total train time is :%.3f'%train_time) pred_y = [] for sample in test_x: pred_yi = adboost.predict(sample) pred_y.append(pred_yi) # pred_y = [0]* (test_y.shape[0]) print("accuracy is : ",accuracy_score(y_true=test_y,y_pred=pred_y)) ================================================ FILE: ML/DecisionTree/RandomForest.py ================================================ #!/usr/bin/python # -*- coding: utf-8 -*- # @Time : 2018/4/5 上午10:55 # @Author : ComeOnJian # @File : RandomForst.py from sklearn.tree import DecisionTreeRegressor from sklearn.tree import DecisionTreeClassifier # from sklearn.ensemble import RandomForestClassifier import numpy as np import pandas as pd import random """ 随机示例对于回归问题此处采用的是平均法,对于分类问题采用的是投票法 """ from enum import Enum class TypeClass(Enum): DecisionTreeClassifier_type = 1 DecisionTreeRegressor_type = 2 def randomforst(D,N,M,K,type_class): """ :param D: 数据集D,格式为[Feature,label],类型为np.ndarray :param N: 一次随机选取出的样本数 :param M: M个基分类器 :param k: 所有特征中选取K个属性 :return: """ D_df = pd.DataFrame(D) D_df.as_matrix() trees = [] for count in M: # 随机采样N个样本 D_df_i = D_df.sample(N) # 随机选取K个特征 #包含label所以需要减1 feature_length = D_df.shape[0] - 1 feature_list = range(feature_length) choice_features = random.sample(feature_list,K) #最终的Di数据集 D_df_i_data = D_df_i[choice_features] if isinstance(type_class,TypeClass): if type_class == TypeClass.DecisionTreeClassifier_type: cart_t = DecisionTreeClassifier(criterion='gini') else: cart_t = DecisionTreeRegressor(criterion='mse') y = D_df_i_data[-1].as_matrix() X = D_df_i_data.drop([-1], axis=1).as_matrix() tree = cart_t.fit(X, y) trees.append(tree) else: raise Exception('input param error') return trees def randomforst_predict(trees,test_x, type_class): if isinstance(type_class, TypeClass): results = [] for tree in trees: result = tree.predict(test_x) results.append(result) results_np = np.array(results) if type_class == TypeClass.DecisionTreeClassifier_type: return get_max_count_array(results_np) else: return np.mean(results_np) else: raise Exception('input param error') def get_max_count_array(arr): count = np.bincount(arr) max_value = np.argmax(count) return max_value ================================================ FILE: ML/DecisionTree/decision_tree.py ================================================ #!/usr/bin/python # -*- coding: utf-8 -*- # @Time : 2018/3/23 下午3:43 # @Author : ComeOnJian # @File : decision_tree.py import pandas as pd import numpy as np from sklearn.utils import shuffle import pickle from tqdm import tqdm import copy # ######################### 数据集操作 ################ ##dataframe中的值数值化,包括一些简单的连续值离散化处理 def adult_label(x): """ 转换样本的类别 :param s: key """ label = {'>50K': 1,'<=50K' : 0,'>50K.': 1,'<=50K.' : 0} return label[x] def adult_age(x): key = '17-35' x = int(x) if x>=36 and x<=53: key = '36-53' elif x>=54 and x<=71: key = '54-71' elif x>=72 and x<=90: key = '72-90' age = {'17-35': 0, '36-53': 1, '54-71': 2, '72-90': 3} return age[key] def adult_workclass(x): workclass = {'Private': 0, 'Self-emp-not-inc': 1, 'Self-emp-inc': 2, 'Federal-gov': 3, 'Local-gov': 4, 'State-gov': 5, 'Without-pay': 6} return workclass[x] def adult_education(x): education = {'Bachelors': 0, 'Some-college': 1, '11th': 2, 'HS-grad': 3, 'Prof-school': 4, 'Assoc-acdm': 5, 'Assoc-voc': 6, '9th': 7, '7th-8th': 8, '12th': 9, 'Masters': 10, '1st-4th': 11, '10th': 12, 'Doctorate': 13, '5th-6th': 14, 'Preschool': 15} return education[x] def adult_education_num(x): key = '1-4' x = int(x) if x>=5 and x<=8: key = '5-8' elif x>=9 and x<=12: key = '9-12' elif x>=13 and x<=16: key = '13-16' education_num = {'1-4': 0, '5-8': 1, '9-12': 2, '13-16': 3} return education_num[key] def adult_marital_status(x): marital_status = {'Married-civ-spouse': 0, 'Divorced': 1, 'Never-married': 2, 'Separated': 3, 'Widowed': 4, 'Married-spouse-absent': 5, 'Married-AF-spouse': 6} return marital_status[x] def adult_occupation(x): occupation = {'Tech-support': 0, 'Craft-repair': 1, 'Other-service': 2, 'Sales': 3, 'Exec-managerial': 4, 'Prof-specialty': 5, 'Handlers-cleaners': 6, 'Machine-op-inspct': 7, 'Adm-clerical': 8, 'Farming-fishing': 9, 'Transport-moving': 10, 'Priv-house-serv': 11, 'Protective-serv': 12, 'Armed-Forces': 13} return occupation[x] def adult_relationship(x): relationship = {'Wife': 0, 'Own-child': 1, 'Husband': 2, 'Not-in-family': 3, 'Other-relative' :4, 'Unmarried': 5} return relationship[x] def adult_race(x): race = {'White': 0, 'Asian-Pac-Islander': 1, 'Amer-Indian-Eskimo': 2, 'Other': 3,'Black': 4} return race[x] def adult_sex(x): sex = {'Female': 0, 'Male': 1} return sex[x] def adult_capital_gain_loss(x): capital_gain_loss = {'=0': 0, '>0': 1} key = '=0' x = int(x) if x>=0: key = '>0' return capital_gain_loss[key] def adult_hours_per_week(x): hours_per_week = {'=40': 0, '>40': 1, '<40': 2} key = '=40' x = int(x) if x > 40: key = '>40' elif x < 40: key = '<40' return hours_per_week[key] def adult_native_country(x): key = 'USA' native_country = {'USA': 0, 'not USA': 1} if x != 'United-States ': key = 'not USA' return native_country[key] def transToValues(file_name,save_name,remove_unKnowValue=True,remove_duplicates=True): converters = {0: adult_age,1: adult_workclass,3: adult_education,4: adult_education_num,5: adult_marital_status, 6: adult_occupation,7: adult_relationship,8: adult_race,9: adult_sex,10: adult_capital_gain_loss, 11: adult_capital_gain_loss,12: adult_hours_per_week,13: adult_native_country,14: adult_label} adult_df = pd.read_table(file_name, header=None ,sep=',',converters=converters, names=['age', 'workclass', 'fnlwgt', 'education', 'education-num', 'marital-status', 'occupation','relationship', 'race', 'sex', 'capital-gain', 'capital-loss', 'hours-per-week', 'native-country','label'],engine='python') if remove_duplicates: # 移除df中重复的值 adult_df.drop_duplicates(inplace=True) print('delete duplicates shape train-test =================') print(adult_df.shape) if remove_unKnowValue: # 移除df中缺失的值 adult_df.replace(['?'], np.NaN, inplace=True) adult_df.dropna(inplace=True) print('delete unKnowValues shape train-test =================') print(adult_df.shape) adult_df.drop('fnlwgt',axis=1,inplace=True) adult_df.to_csv(save_name,header=False,index=False) if __name__ == '__main__': train_file = '../data/adult/adult.data' test_file = '../data/adult/adult.test' train_deal_file = '../data/adult/adult_deal.data' test_deal_file = '../data/adult/adult_deal.test' #deal with duplicates and unKnowValue transToValues(train_file,train_deal_file) transToValues(test_file,test_deal_file) # trans to value transToValues(train_deal_file,'../data/adult/adult_deal_value.data',remove_duplicates=False,remove_unKnowValue=False) transToValues(test_deal_file,'../data/adult/adult_deal_value.test',remove_duplicates=False,remove_unKnowValue=False) def load_data(flods): adult_train_df = pd.read_table(flods[0], header=None ,sep=',', names=['age', 'workclass', 'education', 'education-num', 'marital-status', 'occupation','relationship', 'race', 'sex', 'capital-gain', 'capital-loss', 'hours-per-week', 'native-country','label'],engine='python',dtype=int) adult_test_df = pd.read_table(flods[1], header=None, sep=',', names=['age', 'workclass', 'education', 'education-num', 'marital-status', 'occupation', 'relationship', 'race', 'sex', 'capital-gain', 'capital-loss', 'hours-per-week', 'native-country', 'label'], engine='python',dtype=int) # 打乱data中样本的顺序 # adult_train_df = shuffle(adult_train_df) adult_train_df = adult_train_df.sample(frac=1).reset_index(drop=True) # adult_test_df = shuffle(adult_test_df) adult_test_df = adult_test_df.sample(frac=1).reset_index(drop=True) print('init shape train-test =================') print(adult_train_df.shape) print(adult_test_df.shape) # 离散分段处理 # D = np.array(adult_train_df['label']).reshape(adult_train_df.shape[0], 1) # age_did = devide_feature_value(adult_train_df['age'],D) train_data_x = np.array(adult_train_df.iloc[:,0:13]) train_data_y = np.array(adult_train_df.iloc[:,13:]) test_data_x = np.array(adult_test_df.iloc[:, 0:13]) test_data_y = np.array(adult_test_df.iloc[:, 13:]) return train_data_x,train_data_y,test_data_x,test_data_y ## 连续值离散处理 def devide_feature_value(series,D): sets = set(series) mid_value = [] a = float(sets.pop()) #取相邻点的中值 for par in sets: a = (a + par) / 2.0 mid_value.append(a) a = float(par) max_divide = mid_value[0] max_ent = 0.0 ent_d = calc_ent(D) #查找最好的分裂点 for mid in mid_value: Q1 = D[series < mid] Q2 = D[series >= mid] D_length = float(D.shape[0]) Q1_length = Q1.shape[0] Q2_length = D_length - Q1_length #条件熵 H_Q_D = Q1_length / D_length * calc_ent(Q1) + Q2_length / D_length * calc_ent(Q2) H = ent_d - H_Q_D if(H > max_ent): max_ent = H max_divide = mid return max_divide # ######################### 数学计算 ################ def calc_ent(D): """ 计算数据集D的信息熵(经验熵),输入的labels :param x:数据集D,labels :return:ent """ ent = 0.0 x_value_list = set([D[i][0] for i in range(D.shape[0])]) #Ck 数据集中的类别数 for x_value in x_value_list: p = float(D[D == x_value].shape[0]) / D.shape[0] logp = np.log2(p) ent -= p*logp return ent def calc_condition_ent(A,D): """ 计算条件熵 H(D|A),x是特征项,y是D数据集labels :param x: A,某个特征项目 :param y: D,数据集labels :return:条件熵 """ ent = 0.0 x_value_list = set([A[i] for i in range(A.shape[0])]) #X 特征能取得值 for x_value in x_value_list: sub_y = D[A == x_value] #Di ent_di = calc_ent(sub_y) ent += (float(sub_y.shape[0])/D.shape[0]) * ent_di return ent def calc_ent_gain(A,D): """ :param A:某个特征项目 :param D:数据集,labels :return:计算信息增益 """ ent_d = calc_ent(D) ent_condition_d_a = calc_condition_ent(A,D) return (ent_d - ent_condition_d_a) def calc_ent_gain_rate(A,D): """ 计算信息增益比 :param A: :param D:labels :return:信息增益比 """ ent = 0.0 ent_gain = calc_ent_gain(A,D) x_values_list = set([A[i] for i in range(A.shape[0])]) for x_value in x_values_list: sub_y = D[A == x_value]# Di p = float(sub_y.shape[0])/D.shape[0] #Di/D logp = np.log2(p) ent -= p * logp return ent_gain/ent def calc_gini(D): """ 计算样本集D的基尼系数 :param D: labels :return: """ gini = 0.0 x_value_list = set([D[i][0] for i in range(D.shape[0])]) for x_value in x_value_list: Ck_count = D[D == x_value].shape[0] D_count = D.shape[0] p = float(Ck_count)/D_count gini += np.square(p) gini = 1 - gini return gini def calc_condition_gini(A,D,a): """ 在特征A的条件下,集合D的基尼系数 :param A:特征A :param D:labels :param a:特征A的确却的值a :return: """ D1 = D[A == a] # D2 = D - D1 无此种形式 # 取差集 mask = A != a D2 = D[mask] p1 = float(D1.shape[0])/D.shape[0] p2 = float(D2.shape[0])/D.shape[0] gini1 = calc_gini(D1) gini2 = calc_gini(D2) gini = p1 * gini1 + p2 * gini2 return gini # ######################### 模型分类效果评价 ################ def eval(y_true,y_predict): from sklearn.metrics import average_precision_score from sklearn.metrics import matthews_corrcoef from sklearn.metrics import classification_report import matplotlib.pyplot as plt from sklearn.metrics import roc_curve, auc from sklearn.metrics import precision_score, recall_score, f1_score print('average_precision_score: %f' % (average_precision_score(y_true=y_true, y_score=y_predict))) print('MMC: %f' % (matthews_corrcoef(y_true=y_true, y_pred=y_predict))) print(classification_report(y_true=y_true, y_pred=y_predict)) # Calculate precision score print(precision_score(y_true, y_predict, average='macro')) print(precision_score(y_true, y_predict, average='micro')) print(precision_score(y_true, y_predict, average=None)) # Calculate recall score print(recall_score(y_true, y_predict, average='macro')) print(recall_score(y_true, y_predict, average='micro')) print(recall_score(y_true, y_predict, average=None)) # Calculate f1 score print(f1_score(y_true, y_predict, average='macro')) print(f1_score(y_true, y_predict, average='micro')) print(f1_score(y_true, y_predict, average=None)) fpr, tpr, thresholds = roc_curve(y_true, y_predict) roc_auc = auc(fpr, tpr) # 画图,只需要plt.plot(fpr,tpr),变量roc_auc只是记录auc的值,通过auc()函数能计算出来 plt.plot(fpr, tpr, lw=1, label='ROC(area = %0.2f)' % (roc_auc)) plt.xlabel("FPR (False Positive Rate)") plt.ylabel("TPR (True Positive Rate)") plt.title("Receiver Operating Characteristic, ROC(AUC = %0.2f)" % (roc_auc)) plt.show() # ######################### TreeNode ################ class TreeNode(): """ 树节点类 """ def __init__(self): #叶子结点需要的属性 self.type = -1 # 结点的类型label-类标记 #非叶子结点需要的属性 self.next_nodes = [] # 该结点指向的下一层结点 self.feature_index = -1 #该结点对应的特征编号 # self.feature_value = 0 #该结点划分的特征取值 self.select_value = 0 #特征选择(信息增益、信息增益比、gini)值 def add_next_node(self,node): if type(node) == TreeNode: self.next_nodes.append(node) else: raise Exception('node not belong to TreeNode type') def add_attr_and_value(self,attr_name,attr_value): """ 动态给节点添加属性,因为结点分为叶子结点,正常结点 :param attr_name:属性名 :param attr_value:属性值 """ setattr(self,attr_name,attr_value) # ######################### Decision Tree ################ class DecisionTree(): def __init__(self,mode): self._tree = TreeNode() #指向根结点的指针 if mode == 'ID3' or mode == 'C4.5': self._mode = mode else: raise Exception('mode should is C4.5 or ID3 or CARTClassification or CARTRegression') def train(self,train_x,train_y,epsoion): """ 构建树 :param train_x: :param train_y: :return:该树 ———— 模型 """ feature_list = [index for index in range(train_x.shape[1])] self._create_tree(train_x,train_y,feature_list,epsoion,self._tree) # print (22) def predict(self,test_x): if (len(self._tree.next_nodes) == 0): raise Exception('no train model') # classfiy one sample def _classfiy(node,sample): feature_index = node.feature_index #叶子结点 if feature_index == -1: return node.type # sample_feature_v = sample[feature_index] next_node = None for sub_node in node.next_nodes: if hasattr(sub_node,'feature_value'): if sub_node.feature_value == sample_feature_v: next_node = sub_node break; if next_node == None: return node.type else: return _classfiy(next_node,sample) predict_labels = [] for sample in tqdm(test_x): label = _classfiy(self._tree.next_nodes[0],list(sample)) predict_labels.append(label) return predict_labels def _create_tree(self,X,y,feature_list,epsoion,start_node,Vi=-1): """ :param X: 数据集X :param y: label集合 :param feature_list: 特征的id list :param epsoion:阈值 :param start_node:决策树的启始结点 :param Vi: feature value :return: 指向决策树的根结点的指针 """ # 结点 node = TreeNode() #若所有实例都属于一个类别 C = set(y[:,0]) #分类的类别集合 if(len(C) == 1 ): node.type = tuple(C)[0] #该Ck作为该结点的类标记 start_node.add_next_node(node) return # 特征集合A为空,将D中实例数最大的类Ck作为该结点的类标记 if(len(feature_list) == 0): max_value = self._get_max_count_array(y[:,0]) node.type = max_value start_node.add_next_node(node) return # select feature if self._mode == 'ID3' or self._mode == 'C4.5': select_func = calc_ent_gain if self._mode == 'C4.5': select_func = calc_ent_gain_rate ent_gain_max, ent_max_feature_index = self._select_feature(X,y,feature_list,select_func) # 最大信息增益小于设定的某个阈值 if ent_gain_max < epsoion: type_value = self._get_max_count_array(y[:, 0]) node.type = type_value start_node.add_next_node(node) return else: node.feature_index = ent_max_feature_index node.select_value = ent_gain_max type_value = self._get_max_count_array(y[:,0]) node.type = type_value if (Vi != -1): node.add_attr_and_value("feature_value", Vi) start_node.add_next_node(node) # 获取选取的特征的所有可能值 Ag_v = set(X[:,ent_max_feature_index]) # A - Ag feature_list.remove(ent_max_feature_index) # Di for v in Ag_v: # Di 为 Xi , yi mask = X[:,ent_max_feature_index] == v Xi = X[mask] yi = y[mask] feature_list_new = copy.deepcopy(feature_list) self._create_tree(Xi, yi, feature_list_new, epsoion, node, Vi=v) return else: pass pass def _select_feature(self,X,y,feature_list,select_func): ent_gain_max = 0.0 ent_max_feature_index = 0 for feature in feature_list: A = X[:,feature] D = y ent_gain = select_func(A,D) if(ent_gain > ent_gain_max): ent_gain_max = ent_gain ent_max_feature_index = feature return ent_gain_max,ent_max_feature_index def _get_max_count_array(self,arr): count = np.bincount(arr) max_value = np.argmax(count) return max_value ================================================ FILE: ML/DecisionTree/titanic_data_analy.ipynb ================================================ { "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\nRangeIndex: 891 entries, 0 to 890\nData columns (total 12 columns):\nPassengerId 891 non-null int64\nSurvived 891 non-null int64\nPclass 891 non-null int64\nName 891 non-null object\nSex 891 non-null object\nAge 714 non-null float64\nSibSp 891 non-null int64\nParch 891 non-null int64\nTicket 891 non-null object\nFare 891 non-null float64\nCabin 204 non-null object\nEmbarked 889 non-null object\ndtypes: float64(2), int64(5), object(5)\nmemory usage: 83.6+ KB\nNone\n" ] } ], "source": [ "import numpy as np\n", "import pandas as pd\n", "train = pd.read_csv(\"ML/data/Titanic/train.csv\")\n", "test = pd.read_csv(\"ML/data/Titanic/test.csv\")\n", "full_data = [train,test]\n", "print(train.info())" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1 216\n2 184\n3 491\nName: Pclass, dtype: int64\n Pclass Survived\n0 1 0.629630\n1 2 0.472826\n2 3 0.242363\n" ] } ], "source": [ "\n", "print (train['Pclass'].value_counts(sort=False).sort_index())\n", "print train[['Pclass','Survived']].groupby('Pclass',as_index=False).mean()" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "female 314\nmale 577\nName: Sex, dtype: int64\n Sex Survived\n0 female 0.742038\n1 male 0.188908\n" ] } ], "source": [ "\n", "print (train['Sex'].value_counts(sort=False).sort_index())\n", "print train[['Sex','Survived']].groupby('Sex',as_index=False).mean()" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/Users/jian/anaconda2/lib/python2.7/site-packages/ipykernel_launcher.py:8: SettingWithCopyWarning: \nA value is trying to be set on a copy of a slice from a DataFrame\n\nSee the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n \n" ] } ], "source": [ "for dataset in full_data:\n", " age_avg = dataset['Age'].mean()\n", " age_std = dataset['Age'].std()\n", " \n", " age_null_count = dataset['Age'].isnull().sum()\n", " age_default_list = np.random.randint(low=age_avg-age_std,high=age_avg+age_std,size=age_null_count,)\n", " \n", " dataset['Age'][np.isnan(dataset['Age'])] = age_default_list\n", " dataset['Age'] = dataset['Age'].astype(int)\n", "\n" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " CategoricalAge Survived\n0 (-0.08, 16.0] 0.540541\n1 (16.0, 32.0] 0.362187\n2 (32.0, 48.0] 0.352490\n3 (48.0, 64.0] 0.434783\n4 (64.0, 80.0] 0.090909\n" ] } ], "source": [ "train['CategoricalAge'] = pd.cut(train['Age'], 5)\n", "print (train[['CategoricalAge', 'Survived']].groupby(['CategoricalAge'], as_index=False).mean())\n" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0 608\n1 209\n2 28\n3 16\n4 18\n5 5\n8 7\nName: SibSp, dtype: int64\n SibSp Survived\n0 0 0.345395\n1 1 0.535885\n2 2 0.464286\n3 3 0.250000\n4 4 0.166667\n5 5 0.000000\n6 8 0.000000\n" ] } ], "source": [ "\n", "print (train['SibSp'].value_counts(sort=False).sort_index())\n", "print train[['SibSp','Survived']].groupby('SibSp',as_index=False).mean()" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0 678\n1 118\n2 80\n3 5\n4 4\n5 5\n6 1\nName: Parch, dtype: int64\n Parch Survived\n0 0 0.343658\n1 1 0.550847\n2 2 0.500000\n3 3 0.600000\n4 4 0.000000\n5 5 0.200000\n6 6 0.000000\n" ] } ], "source": [ "\n", "print (train['Parch'].value_counts(sort=False).sort_index())\n", "print train[['Parch','Survived']].groupby('Parch',as_index=False).mean()" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " FamilySize Survived\n0 1 0.303538\n1 2 0.552795\n2 3 0.578431\n3 4 0.724138\n4 5 0.200000\n5 6 0.136364\n6 7 0.333333\n7 8 0.000000\n8 11 0.000000\n" ] } ], "source": [ "for dataset in full_data:\n", " dataset['FamilySize'] = dataset['SibSp'] + dataset['Parch'] + 1\n", "print (train[['FamilySize', 'Survived']].groupby(['FamilySize'], as_index=False).mean())" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " CategoricalFare Survived\n0 (-0.001, 7.775] 0.205128\n1 (7.775, 8.662] 0.190789\n2 (8.662, 14.454] 0.366906\n3 (14.454, 26.0] 0.436242\n4 (26.0, 52.369] 0.417808\n5 (52.369, 512.329] 0.697987\n" ] } ], "source": [ "for dataset in full_data:\n", " dataset['Fare'] = dataset['Fare'].fillna(train['Fare'].median())\n", "train['CategoricalFare'] = pd.qcut(train['Fare'],6)\n", "print (train[['CategoricalFare', 'Survived']].groupby(['CategoricalFare'], as_index=False).mean())" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "C 168\nQ 77\nS 644\nName: Embarked, dtype: int64\n" ] } ], "source": [ "\n", "print (train['Embarked'].value_counts(sort=False).sort_index())" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "C 168\nQ 77\nS 646\nName: Embarked, dtype: int64\n" ] } ], "source": [ "for data in full_data:\n", " data['Embarked'] = data['Embarked'].fillna('S')\n", "print (train['Embarked'].value_counts(sort=False).sort_index())" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " Embarked Survived\n0 C 0.553571\n1 Q 0.389610\n2 S 0.339009\n" ] } ], "source": [ "print (train[['Embarked', 'Survived']].groupby(['Embarked'], as_index=False).mean())" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Sex female male\nTitleName \nCapt 0 1\nCol 0 2\nCountess 1 0\nDon 0 1\nDr 1 6\nJonkheer 0 1\nLady 1 0\nMajor 0 2\nMaster 0 40\nMiss 182 0\nMlle 2 0\nMme 1 0\nMr 0 517\nMrs 125 0\nMs 1 0\nRev 0 6\nSir 0 1\n" ] } ], "source": [ "\n", "import re\n", "def get_title_name(name):\n", " title_s = re.search(' ([A-Za-z]+)\\.', name)\n", " if title_s:\n", " return title_s.group(1)\n", " return \"\"\n", "for dataset in full_data:\n", " dataset['TitleName'] = dataset['Name'].apply(get_title_name)\n", "print(pd.crosstab(train['TitleName'],train['Sex']))" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " TitleName Survived\n0 Master 0.575000\n1 Miss 0.702703\n2 Mr 0.156673\n3 Mrs 0.793651\n4 Other 0.347826\n" ] } ], "source": [ "train['TitleName'] = train['TitleName'].replace('Mme', 'Mrs')\n", "train['TitleName'] = train['TitleName'].replace('Mlle', 'Miss')\n", "train['TitleName'] = train['TitleName'].replace('Ms', 'Miss')\n", "train['TitleName'] = train['TitleName'].replace(['Lady', 'Countess','Capt', 'Col',\\\n", " 'Don', 'Dr', 'Major', 'Rev', 'Sir', 'Jonkheer', 'Dona'], 'Other')\n", "print (train[['TitleName', 'Survived']].groupby(['TitleName'], as_index=False).mean())" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " IsAlone Survived\n0 0 0.505650\n1 1 0.303538\n" ] } ], "source": [ "train['IsAlone'] = 0\n", "train.loc[train['FamilySize']==1,'IsAlone'] = 1\n", "print (train[['IsAlone', 'Survived']].groupby(['IsAlone'], as_index=False).mean())" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 2", "language": "python", "name": "python2" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.6" } }, "nbformat": 4, "nbformat_minor": 0 } ================================================ FILE: ML/DecisionTree/tree_main.py ================================================ #!/usr/bin/python # -*- coding: utf-8 -*- # @Time : 2018/3/23 下午8:47 # @Author : ComeOnJian # @File : tree_main.py from ML.DecisionTree import decision_tree as dt import time import numpy as np from sklearn.metrics import accuracy_score from sklearn.tree import DecisionTreeClassifier train_file = '../data/adult/adult_deal_value.data' test_file = '../data/adult/adult_deal_value.test' if __name__ == '__main__': flods = [train_file,test_file] print('load data...') train_x, train_y, test_x, test_y = dt.load_data(flods) # print(type(train_x[:,0][0])) print('finish data load...') my_decision_tree = dt.DecisionTree(mode='ID3') my_decision_tree.train(train_x,train_y,0.01) predict_y = my_decision_tree.predict(test_x) print('my tree accuracy: %f' % (accuracy_score(y_true=test_y, y_pred=predict_y))) decisiont_tr = DecisionTreeClassifier(criterion='entropy',max_depth=8,min_samples_split=9) decisiont_tr.fit(train_x,train_y) p_y = decisiont_tr.predict(test_x) print('sklearn tree accuracy: %f' % (accuracy_score(y_true=test_y, y_pred=p_y))) print(decisiont_tr.feature_importances_) ================================================ FILE: ML/DecisionTree/xgboost_demo.py ================================================ #!/usr/bin/python # -*- coding: utf-8 -*- # @Time : 2018/4/28 下午7:24 # @Author : ComeOnJian # @File : xgboost.py import pandas as pd import numpy as np import re from sklearn.preprocessing import OneHotEncoder from sklearn.preprocessing import LabelBinarizer from sklearn.ensemble import RandomForestRegressor from sklearn.model_selection import GridSearchCV from sklearn import metrics import xgboost as xgb from xgboost.sklearn import XGBClassifier import matplotlib.pylab as plt train_file = '../data/Titanic/train.csv' test_file = '../data/Titanic/test.csv' test_result_file = '../data/Titanic/gender_submission.csv' def data_feature_engineering(full_data,age_default_avg=True,one_hot=True): """ :param full_data:全部数据集包括train,test :param age_default_avg:age默认填充方式,是否使用平均值进行填充 :param one_hot: Embarked字符处理是否是one_hot编码还是映射处理 :return: 处理好的数据集 """ for dataset in full_data: # Pclass、Parch、SibSp不需要处理 # sex 0,1 dataset['Sex'] = dataset['Sex'].map(Passenger_sex).astype(int) # FamilySize dataset['FamilySize'] = dataset['SibSp'] + dataset['Parch'] + 1 # IsAlone dataset['IsAlone'] = 0 isAlone_mask = dataset['FamilySize'] == 1 dataset.loc[isAlone_mask, 'IsAlone'] = 1 # Fare 离散化处理,6个阶段 fare_median = dataset['Fare'].median() dataset['CategoricalFare'] = dataset['Fare'].fillna(fare_median) dataset['CategoricalFare'] = pd.qcut(dataset['CategoricalFare'],6,labels=[0,1,2,3,4,5]) # Embarked映射处理,one-hot编码,极少部分缺失值处理 dataset['Embarked'] = dataset['Embarked'].fillna('S') dataset['Embarked'] = dataset['Embarked'].astype(str) if one_hot: # 因为OneHotEncoder只能编码数值型,所以此处使用LabelBinarizer进行独热编码 Embarked_arr = LabelBinarizer().fit_transform(dataset['Embarked']) dataset['Embarked_0'] = Embarked_arr[:, 0] dataset['Embarked_1'] = Embarked_arr[:, 1] dataset['Embarked_2'] = Embarked_arr[:, 2] dataset.drop('Embarked',axis=1,inplace=True) else: # 字符串映射处理 dataset['Embarked'] = dataset['Embarked'].map(Passenger_Embarked).astype(int) # Name选取称呼Title_name dataset['TitleName'] = dataset['Name'].apply(get_title_name) dataset['TitleName'] = dataset['TitleName'].replace('Mme', 'Mrs') dataset['TitleName'] = dataset['TitleName'].replace('Mlle', 'Miss') dataset['TitleName'] = dataset['TitleName'].replace('Ms', 'Miss') dataset['TitleName'] = dataset['TitleName'].replace(['Lady', 'Countess', 'Capt', 'Col', \ 'Don', 'Dr', 'Major', 'Rev', 'Sir', 'Jonkheer', 'Dona'], 'Other') dataset['TitleName'] = dataset['TitleName'].map(Passenger_TitleName).astype(int) # age —— 缺失值,分段处理 if age_default_avg: # 缺失值使用avg处理 age_avg = dataset['Age'].mean() age_std = dataset['Age'].std() age_null_count = dataset['Age'].isnull().sum() age_default_list = np.random.randint(low=age_avg - age_std, high=age_avg + age_std, size=age_null_count) dataset.loc[np.isnan(dataset['Age']), 'Age'] = age_default_list dataset['Age'] = dataset['Age'].astype(int) else: # 将age作为label,预测缺失的age # 特征为 TitleName,Sex,pclass,SibSP,Parch,IsAlone,CategoricalFare,FamileSize,Embarked feature_list = ['TitleName', 'Sex', 'Pclass', 'SibSp', 'Parch', 'IsAlone','CategoricalFare', 'FamilySize', 'Embarked','Age'] if one_hot: feature_list.append('Embarked_0') feature_list.append('Embarked_1') feature_list.append('Embarked_2') feature_list.remove('Embarked') Age_data = dataset.loc[:,feature_list] un_Age_mask = np.isnan(Age_data['Age']) Age_train = Age_data[~un_Age_mask] #要训练的Age # print(Age_train.shape) feature_list.remove('Age') rf0 = RandomForestRegressor(n_estimators=60,oob_score=True,min_samples_split=10,min_samples_leaf=2, max_depth=7,random_state=10) rf0.fit(Age_train[feature_list],Age_train['Age']) def set_default_age(age): if np.isnan(age['Age']): # print(age['PassengerId']) # print age.loc[feature_list] data_x = np.array(age.loc[feature_list]).reshape(1,-1) # print data_x age_v = round(rf0.predict(data_x)) # print('pred:',age_v) # age['Age'] = age_v return age_v # print age return age['Age'] dataset['Age'] = dataset.apply(set_default_age, axis=1) # print(dataset.tail()) # # data_age_no_full = dataset[dataset['Age'].] # pd.cut与pd.qcut的区别,前者是根据取值范围来均匀划分, # 后者是根据取值范围的各个取值的频率来换分,划分后的某个区间的频率数相同 # print(dataset.tail()) dataset['CategoricalAge'] = pd.cut(dataset['Age'], 5,labels=[0,1,2,3,4]) return full_data def data_feature_select(full_data): """ :param full_data:全部数据集 :return: """ for data_set in full_data: drop_list = ['PassengerId','Name','Age','Fare','Ticket','Cabin'] data_set.drop(drop_list,axis=1,inplace=True) train_y = np.array(full_data[0]['Survived']) train = full_data[0].drop('Survived',axis=1,inplace=False) # print(train.head()) train_X = np.array(train) test_X = np.array(full_data[1]) return train_X,train_y,test_X def Passenger_sex(x): sex = {'female': 0, 'male': 1} return sex[x] def Passenger_Embarked(x): Embarked = {'S': 0, 'C': 1 , 'Q': 2} return Embarked[x] def Passenger_TitleName(x): TitleName = {'Mr': 0, 'Miss': 1, 'Mrs': 2,'Master': 3, 'Other': 4} return TitleName[x] def get_title_name(name): title_s = re.search(' ([A-Za-z]+)\.', name) if title_s: return title_s.group(1) return "" def modelfit(alg,dtrain_x,dtrain_y,useTrainCV=True,cv_flods=5,early_stopping_rounds=50): """ :param alg: 初始模型 :param dtrain_x:训练数据X :param dtrain_y:训练数据y(label) :param useTrainCV: 是否使用cv函数来确定最佳n_estimators :param cv_flods:交叉验证的cv数 :param early_stopping_rounds:在该数迭代次数之前,eval_metric都没有提升的话则停止 """ if useTrainCV: xgb_param = alg.get_xgb_params() xgtrain = xgb.DMatrix(dtrain_x,dtrain_y) cv_result = xgb.cv(xgb_param,xgtrain,num_boost_round = alg.get_params()['n_estimators'], nfold = cv_flods,metrics = 'auc',early_stopping_rounds=early_stopping_rounds) # print(cv_result) alg.set_params(n_estimators=cv_result.shape[0]) # train data alg.fit(train_X,train_y,eval_metric='auc') #predict train data train_y_pre = alg.predict(train_X) print ("\nModel Report") print ("Accuracy : %.4g" % metrics.accuracy_score(train_y, train_y_pre)) feat_imp = pd.Series(alg.get_booster().get_fscore()).sort_values(ascending=False) feat_imp.plot(kind = 'bar',title='Feature Importance') plt.ylabel('Feature Importance Score') plt.show() return alg def xgboost_change_param(train_X,train_y): # Xgboost 调参 # step1 确定学习速率和迭代次数n_estimators,即集分类器的数量 xgb1 = XGBClassifier(learning_rate=0.1, booster='gbtree', n_estimators=300, max_depth=4, min_child_weight=1, gamma=0, subsample=0.8, colsample_bytree=0.8, objective='binary:logistic', nthread=2, scale_pos_weight=1, seed=10 ) #最佳 n_estimators = 59 ,learning_rate=0.1 modelfit(xgb1,train_X,train_y,early_stopping_rounds=45) # setp2 调试的参数是min_child_weight以及max_depth param_test1 = { 'max_depth': range(3,8,1), 'min_child_weight':range(1,6,2) } gsearch1 = GridSearchCV(estimator=XGBClassifier(learning_rate=0.1,n_estimators=59, max_depth=4,min_child_weight=1,gamma=0, subsample=0.8,colsample_bytree=0.8, objective='binary:logistic',nthread=2, scale_pos_weight=1,seed=10 ), param_grid=param_test1, scoring='roc_auc',n_jobs=1,cv=5) gsearch1.fit(train_X,train_y) print gsearch1.best_params_,gsearch1.best_score_ # 最佳 max_depth = 7 ,min_child_weight=3 # modelfit(gsearch1.best_estimator_) 最佳模型为:gsearch1.best_estimator_ # step3 gamma参数调优 param_test2 = { 'gamma': [i/10.0 for i in range(0,5)] } gsearch2 = GridSearchCV(estimator=XGBClassifier(learning_rate=0.1,n_estimators=59, max_depth=7,min_child_weight=3,gamma=0, subsample=0.8,colsample_bytree=0.8, objective='binary:logistic',nthread=2, scale_pos_weight=1,seed=10), param_grid=param_test2, scoring='roc_auc', cv=5 ) gsearch2.fit(train_X, train_y) print gsearch2.best_params_, gsearch2.best_score_ # 最佳 gamma=0.3 # modelfit(gsearch2.best_estimator_) #step4 调整subsample 和 colsample_bytree 参数 param_test3 = { 'subsample': [i / 10.0 for i in range(6, 10)], 'colsample_bytree': [i / 10.0 for i in range(6, 10)] } gsearch3 = GridSearchCV(estimator=XGBClassifier(learning_rate=0.1,n_estimators=59, max_depth=7,min_child_weight=3,gamma=0.3, subsample=0.8,colsample_bytree=0.8, objective='binary:logistic',nthread=2, scale_pos_weight=1,seed=10), param_grid=param_test3, scoring='roc_auc', cv=5 ) gsearch3.fit(train_X, train_y) print gsearch3.best_params_, gsearch3.best_score_ # 最佳'subsample': 0.8, 'colsample_bytree': 0.6 # step5 正则化参数调优 if __name__ == '__main__': train = pd.read_csv(train_file) test = pd.read_csv(test_file) test_y = pd.read_csv(test_result_file) full_data = [train,test] # train.apply(axis=0) full_data = data_feature_engineering(full_data,age_default_avg=True,one_hot=False) train_X, train_y, test_X = data_feature_select(full_data) # XGBoost调参 # xgboost_change_param(train_X,train_y) xgb1 = XGBClassifier(learning_rate=0.1,n_estimators=59, max_depth=7,min_child_weight=3, gamma=0.3,subsample=0.8, colsample_bytree=0.6,objective='binary:logistic', nthread=2,scale_pos_weight=1,seed=10) xgb1.fit(train_X,train_y) y_test_pre = xgb1.predict(test_X) y_test_true = np.array(test_y['Survived']) print ("the xgboost model Accuracy : %.4g" % metrics.accuracy_score(y_pred=y_test_pre, y_true=y_test_true)) ================================================ FILE: ML/LogisticRegression_MEM/LR_MEM_demo.py ================================================ #!/usr/bin/python # -*- coding: utf-8 -*- # @Time : 2018/5/16 上午11:44 # @Author : ComeOnJian # @File : LR_MEM_demo.py import numpy as np import pandas as pd import random import re import copy from collections import defaultdict from sklearn import metrics from sklearn.preprocessing import LabelBinarizer train_file = '../data/Titanic/train.csv' test_file = '../data/Titanic/test.csv' test_result_file = '../data/Titanic/gender_submission.csv' def data_feature_engineering(full_data,age_default_avg=True,one_hot=True): """ :param full_data:全部数据集包括train,test :param age_default_avg:age默认填充方式,是否使用平均值进行填充 :param one_hot: Embarked字符处理是否是one_hot编码还是映射处理 :return: 处理好的数据集 """ for dataset in full_data: # Pclass、Parch、SibSp不需要处理 # sex 0,1 dataset['Sex'] = dataset['Sex'].map(Passenger_sex).astype(int) # FamilySize dataset['FamilySize'] = dataset['SibSp'] + dataset['Parch'] + 1 # IsAlone dataset['IsAlone'] = 0 isAlone_mask = dataset['FamilySize'] == 1 dataset.loc[isAlone_mask, 'IsAlone'] = 1 # Fare 离散化处理,6个阶段 fare_median = dataset['Fare'].median() dataset['CategoricalFare'] = dataset['Fare'].fillna(fare_median) dataset['CategoricalFare'] = pd.qcut(dataset['CategoricalFare'],6,labels=[0,1,2,3,4,5]) # Embarked映射处理,one-hot编码,极少部分缺失值处理 dataset['Embarked'] = dataset['Embarked'].fillna('S') dataset['Embarked'] = dataset['Embarked'].astype(str) if one_hot: # 因为OneHotEncoder只能编码数值型,所以此处使用LabelBinarizer进行独热编码 Embarked_arr = LabelBinarizer().fit_transform(dataset['Embarked']) dataset['Embarked_0'] = Embarked_arr[:, 0] dataset['Embarked_1'] = Embarked_arr[:, 1] dataset['Embarked_2'] = Embarked_arr[:, 2] dataset.drop('Embarked',axis=1,inplace=True) else: # 字符串映射处理 dataset['Embarked'] = dataset['Embarked'].map(Passenger_Embarked).astype(int) # Name选取称呼Title_name dataset['TitleName'] = dataset['Name'].apply(get_title_name) dataset['TitleName'] = dataset['TitleName'].replace('Mme', 'Mrs') dataset['TitleName'] = dataset['TitleName'].replace('Mlle', 'Miss') dataset['TitleName'] = dataset['TitleName'].replace('Ms', 'Miss') dataset['TitleName'] = dataset['TitleName'].replace(['Lady', 'Countess', 'Capt', 'Col', \ 'Don', 'Dr', 'Major', 'Rev', 'Sir', 'Jonkheer', 'Dona'], 'Other') dataset['TitleName'] = dataset['TitleName'].map(Passenger_TitleName).astype(int) # age —— 缺失值,分段处理 if age_default_avg: # 缺失值使用avg处理 age_avg = dataset['Age'].mean() age_std = dataset['Age'].std() age_null_count = dataset['Age'].isnull().sum() age_default_list = np.random.randint(low=age_avg - age_std, high=age_avg + age_std, size=age_null_count) dataset.loc[np.isnan(dataset['Age']), 'Age'] = age_default_list dataset['Age'] = dataset['Age'].astype(int) else: # 将age作为label,预测缺失的age # 特征为 TitleName,Sex,pclass,SibSP,Parch,IsAlone,CategoricalFare,FamileSize,Embarked feature_list = ['TitleName', 'Sex', 'Pclass', 'SibSp', 'Parch', 'IsAlone','CategoricalFare', 'FamilySize', 'Embarked','Age'] if one_hot: feature_list.append('Embarked_0') feature_list.append('Embarked_1') feature_list.append('Embarked_2') feature_list.remove('Embarked') Age_data = dataset.loc[:,feature_list] un_Age_mask = np.isnan(Age_data['Age']) Age_train = Age_data[~un_Age_mask] #要训练的Age # print(Age_train.shape) feature_list.remove('Age') rf0 = RandomForestRegressor(n_estimators=60,oob_score=True,min_samples_split=10,min_samples_leaf=2, max_depth=7,random_state=10) rf0.fit(Age_train[feature_list],Age_train['Age']) def set_default_age(age): if np.isnan(age['Age']): # print(age['PassengerId']) # print age.loc[feature_list] data_x = np.array(age.loc[feature_list]).reshape(1,-1) # print data_x age_v = round(rf0.predict(data_x)) # print('pred:',age_v) # age['Age'] = age_v return age_v # print age return age['Age'] dataset['Age'] = dataset.apply(set_default_age, axis=1) # print(dataset.tail()) # # data_age_no_full = dataset[dataset['Age'].] # pd.cut与pd.qcut的区别,前者是根据取值范围来均匀划分, # 后者是根据取值范围的各个取值的频率来换分,划分后的某个区间的频率数相同 # print(dataset.tail()) dataset['CategoricalAge'] = pd.cut(dataset['Age'], 5,labels=[0,1,2,3,4]) return full_data def data_feature_select(full_data): """ :param full_data:全部数据集 :return: """ for data_set in full_data: drop_list = ['PassengerId','Name','Age','Fare','Ticket','Cabin'] data_set.drop(drop_list,axis=1,inplace=True) train_y = np.array(full_data[0]['Survived']) train = full_data[0].drop('Survived',axis=1,inplace=False) # print(train.head()) train_X = np.array(train) test_X = np.array(full_data[1]) return train_X,train_y,test_X def Passenger_sex(x): sex = {'female': 0, 'male': 1} return sex[x] def Passenger_Embarked(x): Embarked = {'S': 0, 'C': 1 , 'Q': 2} return Embarked[x] def Passenger_TitleName(x): TitleName = {'Mr': 0, 'Miss': 1, 'Mrs': 2,'Master': 3, 'Other': 4} return TitleName[x] def get_title_name(name): title_s = re.search(' ([A-Za-z]+)\.', name) if title_s: return title_s.group(1) return "" class LR: def __init__(self,iterNum = 2000,learn_late = 0.005): self.maxIter = iterNum self.learn_late = learn_late def train(self,train_X,train_y): feature_size = train_X.shape[1] sample_size = train_X.shape[0] # 将w,b 融合了 self.w = np.zeros(feature_size + 1) correct_num = 0 #梯度下降算法 for iter in range(self.maxIter): # 随机选取一个样本 sample_index = random.randint(0,sample_size-1) sample_select = train_X[sample_index].tolist() sample_select.append(1.0) sample_y = train_y[sample_index] if sample_y == self.predict(sample_select): # 连续预测对一定的数量 correct_num = correct_num + 1 if correct_num > self.maxIter: break continue correct_num = 0 temp = np.exp(sum(self.w * sample_select)) for index in range(feature_size): self.w[index] = self.w[index] - self.learn_late * \ (- sample_y * sample_select[index] + float(temp * sample_select[index])/float(1 + temp)) def predict(self,sample): # 《统计学习方法》公式6.3、6.4 tmp = sum(self.w * sample) y_0 = 1 / float(1+np.exp(tmp)) y_1 = np.exp(tmp) / float(1+np.exp(tmp)) if y_0 > y_1: return 0 else: return 1 class MEM: # 算法模型为:《统计学习方法》公式6.28&6.29 def __init__(self,iterNum = 2000,epsion = 0.01): self.epsion = epsion # 精度阈值 self.maxIter = iterNum def train(self,train_X,train_y): # 使用《统计学习方法》P92算法6.2——BFGS,求解参数 self.feature_size = train_X.shape[1] self.sample_num = train_X.shape[0] self.samples = train_X self.labels = train_y # 统计数据集中的特征函数个数 self._cal_feature_func() self._f2id() self.n = len(self.P_x_y) # n为特征函数的个数 # 计算每个特征函数关于经验分布p(x,y)的期望,并保持于EPxy字典中 self._cal_EPxy() self.w = np.zeros(self.n) #wi为拉格函数中的乘子 self.g = np.zeros(self.n) #对应g(w),《统计学习方法》P92,最上面g(w)的公式 self.B = np.eye(self.n) #正定对称矩阵 for iter in range(self.maxIter): # 算法6.2——(2) self._cal_Gw() if self._cal_g_l2() < self.epsion: break # 算法6.2——(3) p_k = - (self.B ** -1) * np.reshape(self.g,(self.n,1)) # np.linalg.solve() # 算法6.2——(4) r_k = self._liear_search(p_k) # 算法6.2——(5) old_g = copy.deepcopy(self.g) old_w = copy.deepcopy(self.w) self.w = self.w + r_k * p_k # 算法6.2——(6) self._cal_Gw() if self._cal_g_l2() < self.epsion: break y_k = self.g - old_g fai_k = self.w - old_w y_k = np.reshape(y_k,(self.n,1)) fai_k = np.reshape(fai_k,(self.n,1)) temp1 = np.dot(y_k,y_k.T) / float((np.dot(y_k.T,fai_k).reshape(1)[0])) temp2 = np.dot(np.dot(np.dot(self.B,fai_k),fai_k.T),self.B) / float(np.dot(np.dot(fai_k.T,self.B),fai_k).reshape(1)[0]) self.B =self.B + temp1 - temp2 def change_sample_feature_name(self,samples): new_samples = [] for sample in samples: new_sample = [] for feature_index,feature_v in enumerate(sample): new_feature_v = 'x' + str(feature_index) + '_' + str(feature_v) new_sample.append(new_feature_v) new_samples.append(np.array(new_sample)) return np.array(new_samples) def _cal_Pxy_Px(self): # 从数据集中计算特征函数,f(x,y),有该样本就为1,没有则为0,x为样本X的某一个特征的取值 self.P_x_y = defaultdict(int) # 其中P_x_y的键的个数则为特征函数的个数。 self.P_x = defaultdict(int) for index in range(self.sample_num): # 取出样本值 sample = self.samples[index] label = self.labels[index] for feature_index in range(self.feature_size): x = sample[feature_index] y = label self.P_x_y[(x,y)] = self.P_x_y[(x,y)] + 1 self.P_x[x] = self.P_x[x] + 1 def _cal_EPxy(self): #计算特征函数f关于经验分布的P(x,y)的期望值 self.EPxy = defaultdict(int) # 记录每个特征函数关于经验分布的P(x,y)的期望值 #遍历特征函数,求出期望值 for index in range(self.n): (x,y) = self.id2f[index] self.EPxy[index] = float(self.P_x_y[(x,y)]) / float(self.sample_num) def _f2id(self): #将index与特征函数对应起来 self.id2f = {} self.f2id = {} for index,(x,y) in enumerate(self.P_x_y): self.id2f[index] = (x,y) self.f2id[(x,y)] = index def _cal_Pw(self,X,y): #《统计学习方法》公式6.28,计算Pw(y|x),此处y只取0或1 res = 0. for feature_v in X: if self.f2id.has_key((feature_v,y)): index = self.f2id[(feature_v,y)] res = res + (self.w[index] * 1) if y == 0: y = 1 else: y = 0 res_y = 0. for feature_v in X: if self.f2id.has_key((feature_v,y)): index = self.f2id[(feature_v,y)] res_y = res_y + (self.w[index] * 1) return float(res) / float(res + res_y) def _cal_Gw(self): # 计算f(w)对w_i的偏导数,《统计学习方法》P92,最上面g(w)的公式 for index in range(self.n): res = 0. (x,y) = self.id2f[index] feature_index = int(x[1]) # 累加 for sample_index in range(self.sample_num): sample = self.samples[index] label = self.labels[index] if label != y: continue if sample[feature_index] != x: continue p_w = self._cal_Pw(sample, y) num = 0 for feature_v in sample: num = self.P_x[feature_v] + num #《统计学习方法》P82,计算P(X=x)公式 p_x = float(num) / float(self.sample_num) res = res + p_w * p_x * 1 # 1为f_i特征函数的值 self.g[index] = res - self.EPxy[index] def _cal_g_l2(self): res = sum(self.g * self.g) ** 0.5 return res def _liear_search(self,p_k): # 一维搜索,求r_k,使得f(w_k + r_k * p_k)极小 # new_w = self.w + r_k * p_k # r_k = argmin f(w_k + r_k * p_k) pass # def _cal_fw(self): # # 《统计学习方法》P91,f(w)计算公式 # res # for index in range(self.n): # (x,y) = self.id2f(index) if __name__ == '__main__': train = pd.read_csv(train_file) test = pd.read_csv(test_file) test_y = pd.read_csv(test_result_file) full_data = [train, test] # train.apply(axis=0) full_data = data_feature_engineering(full_data, age_default_avg=True, one_hot=False) train_X, train_y, test_X = data_feature_select(full_data) # lr = LR(iterNum=2000,learn_late=0.001) # # lr.train(train_X, train_y) # # results = [] # for test_sample in test_X: # sample = list(test_sample) # sample.append(1.0) # result = lr.predict(sample) # results.append(result) # # y_test_true = np.array(test_y['Survived']) # print("the LR model Accuracy : %.4g" % metrics.accuracy_score(y_pred=results, y_true=y_test_true)) mem = MEM() # 对于包含多特征属性的样本需要重新给每个属性值定义,用于区分f(x,y)中的x print(train_X[0:5]) print('==============') print (mem.change_sample_feature_name(train_X[0:5])) # mem.train(train_X,train_y) ================================================ FILE: ML/Perce_SVM/SVM.py ================================================ #!/usr/bin/python # -*- coding: utf-8 -*- # @Time : 2018/5/10 下午5:14 # @Author : ComeOnJian # @File : SVM.py # 参考 SVM https://blog.csdn.net/sinat_33829806/article/details/78388025 import math import numpy as np import random import copy import re from sklearn import metrics import pandas as pd from sklearn.preprocessing import LabelBinarizer from sklearn import svm train_file = '../data/Titanic/train.csv' test_file = '../data/Titanic/test.csv' test_result_file = '../data/Titanic/gender_submission.csv' def data_feature_engineering(full_data,age_default_avg=True,one_hot=True): """ :param full_data:全部数据集包括train,test :param age_default_avg:age默认填充方式,是否使用平均值进行填充 :param one_hot: Embarked字符处理是否是one_hot编码还是映射处理 :return: 处理好的数据集 """ for dataset in full_data: # Pclass、Parch、SibSp不需要处理 # sex 0,1 dataset['Sex'] = dataset['Sex'].map(Passenger_sex).astype(int) # FamilySize dataset['FamilySize'] = dataset['SibSp'] + dataset['Parch'] + 1 # IsAlone dataset['IsAlone'] = 0 isAlone_mask = dataset['FamilySize'] == 1 dataset.loc[isAlone_mask, 'IsAlone'] = 1 # Fare 离散化处理,6个阶段 fare_median = dataset['Fare'].median() dataset['CategoricalFare'] = dataset['Fare'].fillna(fare_median) dataset['CategoricalFare'] = pd.qcut(dataset['CategoricalFare'],6,labels=[0,1,2,3,4,5]) # Embarked映射处理,one-hot编码,极少部分缺失值处理 dataset['Embarked'] = dataset['Embarked'].fillna('S') dataset['Embarked'] = dataset['Embarked'].astype(str) if one_hot: # 因为OneHotEncoder只能编码数值型,所以此处使用LabelBinarizer进行独热编码 Embarked_arr = LabelBinarizer().fit_transform(dataset['Embarked']) dataset['Embarked_0'] = Embarked_arr[:, 0] dataset['Embarked_1'] = Embarked_arr[:, 1] dataset['Embarked_2'] = Embarked_arr[:, 2] dataset.drop('Embarked',axis=1,inplace=True) else: # 字符串映射处理 dataset['Embarked'] = dataset['Embarked'].map(Passenger_Embarked).astype(int) # Name选取称呼Title_name dataset['TitleName'] = dataset['Name'].apply(get_title_name) dataset['TitleName'] = dataset['TitleName'].replace('Mme', 'Mrs') dataset['TitleName'] = dataset['TitleName'].replace('Mlle', 'Miss') dataset['TitleName'] = dataset['TitleName'].replace('Ms', 'Miss') dataset['TitleName'] = dataset['TitleName'].replace(['Lady', 'Countess', 'Capt', 'Col', \ 'Don', 'Dr', 'Major', 'Rev', 'Sir', 'Jonkheer', 'Dona'], 'Other') dataset['TitleName'] = dataset['TitleName'].map(Passenger_TitleName).astype(int) # age —— 缺失值,分段处理 if age_default_avg: # 缺失值使用avg处理 age_avg = dataset['Age'].mean() age_std = dataset['Age'].std() age_null_count = dataset['Age'].isnull().sum() age_default_list = np.random.randint(low=age_avg - age_std, high=age_avg + age_std, size=age_null_count) dataset.loc[np.isnan(dataset['Age']), 'Age'] = age_default_list dataset['Age'] = dataset['Age'].astype(int) else: # 将age作为label,预测缺失的age # 特征为 TitleName,Sex,pclass,SibSP,Parch,IsAlone,CategoricalFare,FamileSize,Embarked feature_list = ['TitleName', 'Sex', 'Pclass', 'SibSp', 'Parch', 'IsAlone','CategoricalFare', 'FamilySize', 'Embarked','Age'] if one_hot: feature_list.append('Embarked_0') feature_list.append('Embarked_1') feature_list.append('Embarked_2') feature_list.remove('Embarked') Age_data = dataset.loc[:,feature_list] un_Age_mask = np.isnan(Age_data['Age']) Age_train = Age_data[~un_Age_mask] #要训练的Age # print(Age_train.shape) feature_list.remove('Age') rf0 = RandomForestRegressor(n_estimators=60,oob_score=True,min_samples_split=10,min_samples_leaf=2, max_depth=7,random_state=10) rf0.fit(Age_train[feature_list],Age_train['Age']) def set_default_age(age): if np.isnan(age['Age']): # print(age['PassengerId']) # print age.loc[feature_list] data_x = np.array(age.loc[feature_list]).reshape(1,-1) # print data_x age_v = round(rf0.predict(data_x)) # print('pred:',age_v) # age['Age'] = age_v return age_v # print age return age['Age'] dataset['Age'] = dataset.apply(set_default_age, axis=1) # print(dataset.tail()) # # data_age_no_full = dataset[dataset['Age'].] # pd.cut与pd.qcut的区别,前者是根据取值范围来均匀划分, # 后者是根据取值范围的各个取值的频率来换分,划分后的某个区间的频率数相同 # print(dataset.tail()) dataset['CategoricalAge'] = pd.cut(dataset['Age'], 5,labels=[0,1,2,3,4]) return full_data def data_feature_select(full_data): """ :param full_data:全部数据集 :return: """ for data_set in full_data: drop_list = ['PassengerId','Name','Age','Fare','Ticket','Cabin'] data_set.drop(drop_list,axis=1,inplace=True) train_y = np.array(full_data[0]['Survived']) train = full_data[0].drop('Survived',axis=1,inplace=False) # print(train.head()) train_X = np.array(train) test_X = np.array(full_data[1]) return train_X,train_y,test_X def Passenger_sex(x): sex = {'female': 0, 'male': 1} return sex[x] def Passenger_Embarked(x): Embarked = {'S': 0, 'C': 1 , 'Q': 2} return Embarked[x] def Passenger_TitleName(x): TitleName = {'Mr': 0, 'Miss': 1, 'Mrs': 2,'Master': 3, 'Other': 4} return TitleName[x] def Passenger_Survived(x): Survived = {0: -1, 1: 1} return Survived[x] def get_title_name(name): title_s = re.search(' ([A-Za-z]+)\.', name) if title_s: return title_s.group(1) return "" class SVM(): def __init__(self,kernal,maxIter,C,epsilon,sigma = 0.001): """ :param kernal:核函数 :param maxIter:最大迭代次数 :param C:松弛变量前的惩罚系数 :param epseion: """ self.kernal = kernal self.C = C self.maxIter = maxIter self.epsilon = epsilon self.sigma = sigma #高斯核函数的sigma值 def train(self,train_X,train_y): self.sample_num = train_X.shape[0] self.feature_num = train_X.shape[1] self.labels =train_y self.samples = train_X # 算法的模型为 《统计学习方法》——公式7.104,主要包括a,b,核函数 self.a = np.zeros(self.sample_num)#[0 for a_i in range(self.sample_num)] self.b = 0 self.eCache = np.zeros(shape=(self.sample_num,2))# 存储差值 self._smo() # self._update() def predict(self,test_x): # 《统计学习方法》——公式7.104,计算预测值 pre_v = 0 for index in range(self.sample_num): pre_v = pre_v + self.a[index] * self.labels[index] * self._kernel(test_x,self.samples[index]) pre_v = pre_v + self.b return np.sign(pre_v) def _smo(self): pre_a = copy.deepcopy(self.a) # 复制,pre_a是old的a数组 for iter in range(self.maxIter): flag = 1 for index in range(self.sample_num): diff = 0 # self._update() E_i = self._calE(self.samples[index],self.labels[index]) j,E_j = self._chooseJ(index,E_i) # 计算L H (L,H) = self._calLH(pre_a,j,index) # 《统计学习方法》——公式7.107,n = K11 + K22 - 2 * K12 n = self._kernel(self.samples[index],self.samples[index]) \ + self._kernel(self.samples[j],self.samples[j])\ - 2 * self._kernel(self.samples[index],self.samples[j]) if (n == 0): continue # 《统计学习方法》——公式7.106,计算未剪切的a_j极值 self.a[j] = pre_a[j] + float(self.labels[j] * (E_i - E_j))/n # 《统计学习方法》——公式7.108,计算剪切的a_j极值 if self.a[j] > H: self.a[j] = H elif self.a[j] < L: self.a[j] = L # 《统计学习方法》——公式7.109,更新a[i] self.a[index] = pre_a[index] + self.labels[index] * self.labels[j] * (pre_a[j] - self.a[j]) # 更新b,《统计学习方法》——公式7.114到7.116,更新a[i] b1 = self.b - E_i \ - self.labels[index] * self._kernel(self.samples[index],self.samples[index]) * (self.a[index] - pre_a[index]) \ - self.labels[j] * self._kernel(self.samples[j],self.samples[index]) * (self.a[j] - pre_a[j]) b2 = self.b - E_j \ - self.labels[index] * self._kernel(self.samples[index], self.samples[j]) * ( self.a[index] - pre_a[index]) \ - self.labels[j] * self._kernel(self.samples[j], self.samples[j]) * (self.a[j] - pre_a[j]) if (0 < self.a[index]< self.C): self.b = b1 elif (0 < self.a[j]< self.C): self.b = b2 else: self.b = (b1 + b2)/2.0 # 更新E_i,E_j统计学习方法》——公式7.117, self.eCache[j] = [1,self._calE(self.samples[j],self.labels[j])] self.eCache[index] = [1,self._calE(self.samples[index],self.labels[index])] diff = sum([abs(pre_a[m] - self.a[m]) for m in range(len(self.a))]) if diff < self.epsilon: # 满足精度条件 flag = 0 pre_a = copy.deepcopy(self.a) if flag == 0: break def _calE(self,sample,y): # 计算E_i,输入X_i与真实值之间的误差,《统计学习方法》——公式7.105 pre_v = self.predict(sample) return pre_v - y def _calLH(self,a,j,i): #《统计学习方法》——p126页 if(self.labels[j] != self.labels[i]): return (max(0,a[j]-a[i]),min(self.C,self.C+a[j]-a[i])) else: return (max(0, a[j] + a[i] - self.C), min(self.C, a[j] + a[i])) def _kernel(self,X_i,X_j): """ :param X_i: :param X_j: :return: 核函数K(X_i,X_j)计算结果 """ result = 0. # 高斯内核 if self.kernal == 'Gauss': temp = -sum((X_i - X_j)**2)/(2 * self.sigma**2) result = math.exp(temp) # 线性内核 elif self.kernal == 'line': result = sum(X_i * X_j) return result def _chooseJ(self,i,E_i): # 选择变量 self.eCache[i] = [1,E_i] choose_list = [] # 查找之前计算的可选择的的E_i for cache_index in range(len(self.eCache)): if self.eCache[cache_index][0] != 0 and cache_index != i: choose_list.append(cache_index) if len(choose_list)>1: E_k =0 delta_E = 0 max_E = 0 j = 0 # 要选择的J E_j = 0# 及其对应的E for choose_index in choose_list: E_k = self._calE(self.samples[choose_index],self.labels[choose_index]) delta_E = abs(E_k-E_i) if delta_E > max_E: max_E = delta_E j = choose_index E_j = E_k return j,E_j # 初始状态,没有已经计算好的E else: j = self._randJ(i) E_j = self._calE(self.samples[j],self.labels[j]) return j , E_j def _randJ(self,i): j = i while(j == i): j = random.randint(0,self.sample_num-1) return j if __name__ == '__main__': train = pd.read_csv(train_file) test = pd.read_csv(test_file) test_y = pd.read_csv(test_result_file) train['Survived'] = train['Survived'].map(Passenger_Survived).astype(int) full_data = [train, test] full_data = data_feature_engineering(full_data, age_default_avg=True, one_hot=False) train_X, train_y, test_X = data_feature_select(full_data) svm1 = SVM('line',1000,0.05,0.001) svm1.train(train_X, train_y) results = [] for test_sample in test_X: y = svm1.predict(test_sample) results.append(y) y_test_true = np.array(test_y['Survived']) print("the svm model Accuracy : %.4g" % metrics.accuracy_score(y_pred=results, y_true=y_test_true)) # svm_s = svm.SVC(C=1,kernel='linear') # svm_s.fit(train_X, train_y) # pre_y = svm_s.predict(test_X) # y_test_true = np.array(test_y['Survived']) # print("the svm model Accuracy : %.4g" % metrics.accuracy_score(y_pred=pre_y, y_true=y_test_true)) ================================================ FILE: ML/Perce_SVM/perceptron.py ================================================ #!/usr/bin/python # -*- coding: utf-8 -*- # @Time : 2018/5/6 下午3:55 # @Author : ComeOnJian # @File : perceptron.py import numpy as np import pandas as pd import random import re from sklearn import metrics ################特征工程部分############### train_file = '../data/Titanic/train.csv' test_file = '../data/Titanic/test.csv' test_result_file = '../data/Titanic/gender_submission.csv' def data_feature_engineering(full_data,age_default_avg=True,one_hot=True): """ :param full_data:全部数据集包括train,test :param age_default_avg:age默认填充方式,是否使用平均值进行填充 :param one_hot: Embarked字符处理是否是one_hot编码还是映射处理 :return: 处理好的数据集 """ for dataset in full_data: # Pclass、Parch、SibSp不需要处理 # sex 0,1 dataset['Sex'] = dataset['Sex'].map(Passenger_sex).astype(int) # FamilySize dataset['FamilySize'] = dataset['SibSp'] + dataset['Parch'] + 1 # IsAlone dataset['IsAlone'] = 0 isAlone_mask = dataset['FamilySize'] == 1 dataset.loc[isAlone_mask, 'IsAlone'] = 1 # Fare 离散化处理,6个阶段 fare_median = dataset['Fare'].median() dataset['CategoricalFare'] = dataset['Fare'].fillna(fare_median) dataset['CategoricalFare'] = pd.qcut(dataset['CategoricalFare'],6,labels=[0,1,2,3,4,5]) # Embarked映射处理,one-hot编码,极少部分缺失值处理 dataset['Embarked'] = dataset['Embarked'].fillna('S') dataset['Embarked'] = dataset['Embarked'].astype(str) if one_hot: # 因为OneHotEncoder只能编码数值型,所以此处使用LabelBinarizer进行独热编码 Embarked_arr = LabelBinarizer().fit_transform(dataset['Embarked']) dataset['Embarked_0'] = Embarked_arr[:, 0] dataset['Embarked_1'] = Embarked_arr[:, 1] dataset['Embarked_2'] = Embarked_arr[:, 2] dataset.drop('Embarked',axis=1,inplace=True) else: # 字符串映射处理 dataset['Embarked'] = dataset['Embarked'].map(Passenger_Embarked).astype(int) # Name选取称呼Title_name dataset['TitleName'] = dataset['Name'].apply(get_title_name) dataset['TitleName'] = dataset['TitleName'].replace('Mme', 'Mrs') dataset['TitleName'] = dataset['TitleName'].replace('Mlle', 'Miss') dataset['TitleName'] = dataset['TitleName'].replace('Ms', 'Miss') dataset['TitleName'] = dataset['TitleName'].replace(['Lady', 'Countess', 'Capt', 'Col', \ 'Don', 'Dr', 'Major', 'Rev', 'Sir', 'Jonkheer', 'Dona'], 'Other') dataset['TitleName'] = dataset['TitleName'].map(Passenger_TitleName).astype(int) # age —— 缺失值,分段处理 if age_default_avg: # 缺失值使用avg处理 age_avg = dataset['Age'].mean() age_std = dataset['Age'].std() age_null_count = dataset['Age'].isnull().sum() age_default_list = np.random.randint(low=age_avg - age_std, high=age_avg + age_std, size=age_null_count) dataset.loc[np.isnan(dataset['Age']), 'Age'] = age_default_list dataset['Age'] = dataset['Age'].astype(int) else: # 将age作为label,预测缺失的age # 特征为 TitleName,Sex,pclass,SibSP,Parch,IsAlone,CategoricalFare,FamileSize,Embarked feature_list = ['TitleName', 'Sex', 'Pclass', 'SibSp', 'Parch', 'IsAlone','CategoricalFare', 'FamilySize', 'Embarked','Age'] if one_hot: feature_list.append('Embarked_0') feature_list.append('Embarked_1') feature_list.append('Embarked_2') feature_list.remove('Embarked') Age_data = dataset.loc[:,feature_list] un_Age_mask = np.isnan(Age_data['Age']) Age_train = Age_data[~un_Age_mask] #要训练的Age # print(Age_train.shape) feature_list.remove('Age') rf0 = RandomForestRegressor(n_estimators=60,oob_score=True,min_samples_split=10,min_samples_leaf=2, max_depth=7,random_state=10) rf0.fit(Age_train[feature_list],Age_train['Age']) def set_default_age(age): if np.isnan(age['Age']): # print(age['PassengerId']) # print age.loc[feature_list] data_x = np.array(age.loc[feature_list]).reshape(1,-1) # print data_x age_v = round(rf0.predict(data_x)) # print('pred:',age_v) # age['Age'] = age_v return age_v # print age return age['Age'] dataset['Age'] = dataset.apply(set_default_age, axis=1) # print(dataset.tail()) # # data_age_no_full = dataset[dataset['Age'].] # pd.cut与pd.qcut的区别,前者是根据取值范围来均匀划分, # 后者是根据取值范围的各个取值的频率来换分,划分后的某个区间的频率数相同 # print(dataset.tail()) dataset['CategoricalAge'] = pd.cut(dataset['Age'], 5,labels=[0,1,2,3,4]) return full_data def data_feature_select(full_data): """ :param full_data:全部数据集 :return: """ for data_set in full_data: drop_list = ['PassengerId','Name','Age','Fare','Ticket','Cabin'] data_set.drop(drop_list,axis=1,inplace=True) train_y = np.array(full_data[0]['Survived']) train = full_data[0].drop('Survived',axis=1,inplace=False) # print(train.head()) train_X = np.array(train) test_X = np.array(full_data[1]) return train_X,train_y,test_X def Passenger_sex(x): sex = {'female': 0, 'male': 1} return sex[x] def Passenger_Embarked(x): Embarked = {'S': 0, 'C': 1 , 'Q': 2} return Embarked[x] def Passenger_TitleName(x): TitleName = {'Mr': 0, 'Miss': 1, 'Mrs': 2,'Master': 3, 'Other': 4} return TitleName[x] def get_title_name(name): title_s = re.search(' ([A-Za-z]+)\.', name) if title_s: return title_s.group(1) return "" class Perceptron: def __init__(self,alpha = 0.01,updata_count_total = 3000,nochange_count_limit = 600): """ :param alpha:梯度下降的学习参数 :param updata_count: 梯度下降的参数更新限制次数 :param nochange_count_limit:随机选择的样本连续分类正确的数 """ self.alpha = alpha self.updata_count_total = updata_count_total self.nochange_count_limit = nochange_count_limit def train(self,train_X,train_y): feature_size = train_X.shape[1] sample_size = train_X.shape[0] # 初始化w,b参数 self.w = np.zeros((feature_size,1)) self.b = 0 update_count = 0 correct_count = 0 while True: if correct_count > self.nochange_count_limit: break # 随机选取一个误分类点 sample_select_index = random.randint(0,sample_size-1) sample = train_X[[sample_select_index]] sample_y = train_y[sample_select_index] # 将labe分类为0,1转换为-1,1,其中0对应-1,1对应着1 y_i = -1 if sample_y == 1: y_i = 1 # 计算该样本的distance距离yi(xi*w)+b distance = - (np.dot(sample,self.w)[0][0] + self.b) * y_i if distance >= 0: # 挑选出误分类点,更新w,b correct_count = 0; sample = np.reshape(sample,(feature_size,1)) add_w = self.alpha * y_i * sample self.w = self.w + add_w self.b += (self.alpha * y_i) update_count += 1 if update_count > self.updata_count_total: break; else: correct_count = correct_count + 1 def predict(self,sample_x): result = np.dot(sample_x,self.w) + self.b return int(result > 0) if __name__ == '__main__': train = pd.read_csv(train_file) test = pd.read_csv(test_file) test_y = pd.read_csv(test_result_file) full_data = [train, test] # train.apply(axis=0) full_data = data_feature_engineering(full_data, age_default_avg=True, one_hot=False) train_X, train_y, test_X = data_feature_select(full_data) perce = Perceptron(alpha=0.01,updata_count_total = 3000) perce.train(train_X,train_y) results = [] for test_sample in test_X: result = perce.predict(test_sample) results.append(result) y_test_true = np.array(test_y['Survived']) print ("the Perceptron model Accuracy : %.4g" % metrics.accuracy_score(y_pred=results, y_true=y_test_true)) ================================================ FILE: ML/REDAME.md ================================================ ML文件夹说明 ================================================ FILE: ML/TensorDemo/NN_tf.py ================================================ #!/usr/bin/python # -*- coding: utf-8 -*- # @Time : 2018/2/28 下午4:22 # @Author : ComeOnJian # @File : NN_tf.py import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data # step 1 NN的参数设置 in_unit = 784 h1_unit = 300 learningrate = 0.05 # 梯度下降法学习率 dropout_keep_prob = 0.75 # dropout时保留神经元的比例,神经网络不为0的参数变为原理的1/dropout_keep_prob倍 batch_size = 100 # 梯度下降法选取的batch的size max_iter = 3000 # 迭代次数 sava_dir = '../data/' # 存放数据结果 log_dir = '../log/' # 日志目录 def variable_summeries(var): """ :param var: Tensor, Attach a lot of summaries to a Tensor (for TensorBoard visualization). """ with tf.name_scope('summeries'): mean = tf.reduce_mean(var) tf.summary.scalar('mean',mean) #记录参数的均值 with tf.name_scope('stddev'): stddev = tf.sqrt(tf.reduce_mean(tf.square(var - mean))) tf.summary.scalar('stddev',stddev) tf.summary.scalar('max',tf.reduce_max(var)) tf.summary.scalar('min',tf.reduce_min(var)) # 用直方图记录参数的分布 tf.summary.histogram('histogram',var) def weight_variable(shape): """ 将每一层的神经网络的对应的权重参数w,初始化并封装到function中 """ inita_w = tf.truncated_normal(shape,stddev=0.1) return tf.Variable(inita_w,dtype=tf.float32) def bias_variable(shape): """ 将每一层的神经网络的对应的偏置项b,初始化并封装到function中 """ inita_b = tf.constant(0.1,shape=shape) return tf.Variable(inita_b) def nn_layer(input_tensor,input_dim,output_dim,layer_name,act=tf.nn.relu): """ 建立神经网络层(一层) :param input_tensor:特征数据 :param input_dim:输入数据的维度大小 :param output_dim:该层神经元的个数 :param layer_name:命名空间 :param act:神经元对应的激活函数 """ #设置命名空间 with tf.name_scope(layer_name): #初始化权重,并记录权重变化 with tf.name_scope('weights'): weight = weight_variable([input_dim,output_dim]) variable_summeries(weight)# 记录权重变化 with tf.name_scope('bias'): bias = bias_variable([output_dim]) variable_summeries(bias) with tf.name_scope('linear_compute'): preact = tf.matmul(input_tensor,weight)+bias tf.summary.histogram('linear',preact) activeation = act(preact,name = 'activation') tf.summary.histogram('activation',activeation) return activeation # def set_computer_Graph(): # # """ # 设计tf的计算图,并返回 # :return: # """ # tf.reset_default_graph() # train_graph = tf.Graph() # # with train_graph.as_default(): # # # step 3.1 设置算法模型中的输入,使用占位符,占用输入的数据(什么情况下使用占位符,什么情况下设置tf变量) # # train_x = tf.placeholder(dtype=tf.float32,shape=[None,in_unit],name = 'train_x') # train_y = tf.placeholder(dtype=tf.float32,shape=[None,10],name = 'train_y') # # # step 3.2构造神经网络 # # # 创建第一层隐藏层 # hidden_layer1 = nn_layer(train_x,input_dim=in_unit,output_dim=h1_unit,layer_name='hider_layer1',act=tf.nn.relu) # # #在第一层隐藏层上创建一层 dropout层 —— 随机关闭一些hidden_layer1的神经元 # with tf.name_scope('dropout'): # dropout_prob = tf.placeholder(dtype=tf.float32, name='dropout_prob') # tf.summary.scalar('dropout_keep_probability',dropout_prob) # hidden_layer1_dropout = tf.nn.dropout(hidden_layer1,dropout_prob) # # #创建输出层,包括10个类别,输出层的输入是hidden_layer1_dropout,输出是[1,10] # y = nn_layer(hidden_layer1_dropout,h1_unit,10,layer_name='out_layer',act=tf.identity) # # # step 3.3 创建损失函数 # # with tf.name_scope('loss'): # cross_entropy_diff = tf.nn.softmax_cross_entropy_with_logits(labels=train_y,logits=y) # # with tf.name_scope('total'): # cross_entropy = tf.reduce_mean(cross_entropy_diff) # tf.summary.scalar('loss',cross_entropy) # # # step 3.4 选择优化器训练并计算准确率 # optimizer = tf.train.AdamOptimizer(learning_rate=learningrate) # train_op = optimizer.minimize(cross_entropy) # # with tf.name_scope('accuracy'): # with tf.name_scope('correct_prediction'): # correct_prediction = tf.equal(tf.argmax(y,1),tf.argmax(train_y,1)) # with tf.name_scope('accuracy'): # accuracy = tf.reduce_mean(tf.cast(correct_prediction,tf.float32)) # tf.summary.scalar('accuracy',accuracy) # return train_graph,train_op,accuracy # if __name__ == '__main__': # step 2 加载数据 mnist = input_data.read_data_sets('./MNIST_data/',one_hot=True) #step 3设置tf 计算图 tf.reset_default_graph() train_graph = tf.Graph() with train_graph.as_default(): # step 3.1 设置算法模型中的输入,使用占位符,占用输入的数据(什么情况下使用占位符,什么情况下设置tf变量) train_x = tf.placeholder(dtype=tf.float32,shape=[None,in_unit],name = 'train_x') train_y = tf.placeholder(dtype=tf.float32,shape=[None,10],name = 'train_y') # step 3.2构造神经网络 # 创建第一层隐藏层 hidden_layer1 = nn_layer(train_x,input_dim=in_unit,output_dim=h1_unit,layer_name='hider_layer1',act=tf.nn.relu) #在第一层隐藏层上创建一层 dropout层 —— 随机关闭一些hidden_layer1的神经元 with tf.name_scope('dropout'): dropout_prob = tf.placeholder(dtype=tf.float32, name='dropout_prob') tf.summary.scalar('dropout_keep_probability',dropout_prob) hidden_layer1_dropout = tf.nn.dropout(hidden_layer1,dropout_prob) #创建输出层,包括10个类别,输出层的输入是hidden_layer1_dropout,输出是[1,10] y = nn_layer(hidden_layer1_dropout,h1_unit,10,layer_name='out_layer',act=tf.identity) # step 3.3 创建损失函数 with tf.name_scope('loss'): cross_entropy_diff = tf.nn.softmax_cross_entropy_with_logits(labels=train_y, logits=y) with tf.name_scope('total'): cross_entropy = tf.reduce_mean(cross_entropy_diff) tf.summary.scalar('loss', cross_entropy) # step 3.4 选择优化器训练并计算准确率 optimizer = tf.train.AdamOptimizer(learning_rate=learningrate) train_op = optimizer.minimize(cross_entropy) with tf.name_scope('accuracy'): with tf.name_scope('correct_prediction'): correct_prediction = tf.equal(tf.argmax(y, 1), tf.argmax(train_y, 1)) with tf.name_scope('accuracy'): accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32)) tf.summary.scalar('accuracy', accuracy) session = tf.InteractiveSession(graph=train_graph) # step 4 合并summary并初始化所有变量 merged = tf.summary.merge_all() train_writer = tf.summary.FileWriter(log_dir+'/train',graph=train_graph) test_writer = tf.summary.FileWriter(log_dir+'/test',graph=train_graph) tf.global_variables_initializer().run() # Step 5 训练模型并记录到TensorBoard for iter in range(max_iter): trainx_batch_x,train_batch_y = mnist.train.next_batch(batch_size) #迭代10次记录一下accuracy if iter % 10 == 0: summmary,acc,loss = session.run([merged,accuracy,cross_entropy],feed_dict={train_x:trainx_batch_x,train_y:train_batch_y,dropout_prob:1.0}) test_writer.add_summary(summmary,iter)#写入日志 print('loss at step %s: %s'%(iter,loss)) print('Accuracy at step %s: %s'%(iter,acc)) else: if iter % 100 == 0: #记录tensor运行节点的信息 run_options = tf.RunOptions(trace_level=tf.RunOptions.FULL_TRACE) run_metadata = tf.RunMetadata() #将配置信息和记录运行信息的proto传入运行的过程,从而记录运行时每一个节点的时间、空间开销信息 summmary,_ = session.run([merged,train_op], feed_dict={train_x:trainx_batch_x,train_y:train_batch_y,dropout_prob:dropout_keep_prob}, options=run_options, run_metadata=run_metadata) #将节点运行时的信息写入日志文件 train_writer.add_run_metadata(run_metadata,'step %d' % iter) train_writer.add_summary(summmary,iter) pass else: summmary,_ = session.run([merged,train_op],feed_dict={train_x:trainx_batch_x,train_y:train_batch_y,dropout_prob:dropout_keep_prob}) train_writer.add_summary(summmary,iter) train_writer.close() test_writer.close() session.close() ================================================ FILE: ML/TensorDemo/README.md ================================================ #### TensorDemo文件说明 ##### [TensorFlow实现多层感知机及可视化训练过程中的数据记录](http://blog.csdn.net/u014732537/article/details/79412672) NN_ty.py ================================================ FILE: ML/data/adult/adult_deal_value.data ================================================ 1,5,0,3,2,8,3,0,1,1,1,0,1,0 1,1,0,3,0,4,2,0,1,1,1,2,1,0 1,0,3,2,1,6,3,0,1,1,1,0,1,0 1,0,2,1,0,6,2,4,1,1,1,0,1,0 0,0,0,3,0,5,0,4,0,1,1,0,1,0 1,0,10,3,0,4,0,0,0,1,1,0,1,0 1,0,7,1,5,2,3,4,0,1,1,2,1,0 1,1,3,2,0,4,2,0,1,1,1,1,1,1 0,0,10,3,2,5,3,0,0,1,1,1,1,1 1,0,0,3,0,4,2,0,1,1,1,0,1,1 1,0,1,2,0,4,2,4,1,1,1,1,1,1 0,5,0,3,0,5,2,1,1,1,1,0,1,1 0,0,0,3,2,8,1,0,0,1,1,2,1,0 0,0,5,2,2,3,3,4,1,1,1,1,1,0 0,0,8,0,0,10,2,2,1,1,1,1,1,0 0,1,3,2,2,9,1,0,1,1,1,2,1,0 0,0,3,2,2,7,5,0,1,1,1,0,1,0 1,0,2,1,0,3,2,0,1,1,1,1,1,0 1,1,10,3,1,4,5,0,0,1,1,1,1,1 1,0,13,3,0,5,2,0,1,1,1,1,1,1 2,0,3,2,3,2,5,4,0,1,1,2,1,0 0,3,7,1,0,9,2,4,1,1,1,0,1,0 1,0,2,1,0,10,2,0,1,1,1,0,1,0 2,0,3,2,1,0,5,0,0,1,1,0,1,0 2,4,0,3,0,0,2,0,1,1,1,0,1,1 0,0,3,2,2,1,1,0,1,1,1,0,1,0 1,0,3,2,1,4,3,0,1,1,1,1,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 0,4,5,2,2,12,3,0,1,1,1,1,1,0 0,0,1,2,2,3,1,4,1,1,1,1,1,0 1,0,0,3,1,4,1,0,1,1,1,0,1,0 0,3,1,2,0,8,1,0,1,1,1,0,1,0 0,5,1,2,0,2,2,4,1,1,1,2,1,0 1,0,2,1,2,7,5,0,1,1,1,0,1,0 0,0,1,2,2,7,1,0,1,1,1,0,1,0 0,0,3,2,6,8,0,0,0,1,1,2,1,0 1,1,5,2,0,5,2,0,1,1,1,0,1,0 0,0,7,1,0,7,2,0,1,1,1,1,1,0 1,1,0,3,0,5,2,0,1,1,1,0,1,0 0,0,0,3,0,0,2,0,1,1,1,1,1,0 1,0,3,2,3,8,5,0,0,1,1,0,1,0 0,0,3,2,2,6,3,0,1,1,1,2,1,0 2,3,0,3,0,5,2,4,1,1,1,0,1,1 1,0,3,2,0,7,2,0,1,1,1,2,1,0 1,0,10,3,1,4,5,0,0,1,1,0,1,0 1,5,6,2,0,1,2,0,1,1,1,0,1,0 0,0,6,2,2,5,3,0,1,1,1,1,1,0 0,0,1,2,0,4,0,3,0,1,1,0,1,0 1,0,4,3,0,5,0,0,0,1,1,1,1,1 1,3,0,3,1,4,3,0,1,1,1,1,1,1 1,2,3,2,1,4,3,0,1,1,1,1,1,0 1,0,1,2,0,0,2,0,1,1,1,0,1,1 1,0,14,0,0,7,2,0,1,1,1,0,1,0 0,0,6,2,0,2,2,0,1,1,1,0,1,0 1,0,3,2,0,8,2,0,1,1,1,1,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,0,3,0,3,2,0,1,1,1,0,1,0 1,0,3,2,0,10,2,0,1,1,1,0,1,0 1,0,13,3,0,5,2,0,1,1,1,1,1,1 0,0,1,2,1,0,3,0,1,1,1,1,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,1,8,3,0,0,1,1,0,1,0 1,0,3,2,0,8,0,0,0,1,1,0,1,1 1,2,1,2,0,4,2,0,1,1,1,1,1,1 0,0,1,2,2,5,1,0,1,1,1,2,1,0 0,0,0,3,3,3,1,4,0,1,1,0,1,0 0,1,0,3,0,3,2,0,1,1,1,1,1,1 0,0,1,2,2,7,3,0,1,1,1,0,1,0 3,0,1,2,0,5,4,0,1,1,1,2,1,0 0,0,3,2,2,2,1,0,1,1,1,0,1,0 1,0,5,2,0,8,2,0,1,1,1,0,1,0 0,0,2,1,2,2,1,0,0,1,1,2,1,0 0,4,8,0,0,9,2,0,1,1,1,0,1,0 0,0,3,2,2,3,3,0,1,1,1,2,1,0 1,0,0,3,0,2,2,0,1,1,1,0,1,0 1,0,3,2,0,2,0,0,0,1,1,0,1,0 2,0,3,2,0,3,2,0,1,1,1,1,1,0 1,0,3,2,1,1,3,0,0,1,1,0,1,1 1,0,3,2,1,3,1,0,0,1,1,2,1,0 1,4,3,2,0,12,2,0,1,1,1,0,1,1 0,0,10,3,0,5,2,0,1,1,1,1,1,0 0,0,7,1,2,3,3,0,1,1,1,0,1,0 1,3,13,3,2,5,3,0,0,1,1,1,1,1 2,0,6,2,0,5,2,0,1,1,1,0,1,0 1,0,1,2,1,1,5,0,0,1,1,0,1,0 0,0,1,2,1,7,5,4,0,1,1,2,1,0 0,4,0,3,0,12,2,0,1,1,1,0,1,1 0,4,1,2,2,6,3,0,1,1,1,1,1,0 1,1,13,3,0,5,2,0,1,1,1,1,1,1 1,0,1,2,0,3,2,0,1,1,1,1,1,1 1,0,5,2,1,4,5,0,0,1,1,0,1,0 0,3,3,2,2,2,1,4,1,1,1,0,1,0 3,0,10,3,0,4,2,0,1,1,1,0,1,1 1,0,0,3,0,4,2,0,1,1,1,1,1,1 1,1,10,3,2,5,3,0,0,1,1,1,1,0 0,0,1,2,2,0,1,0,0,1,1,0,1,0 0,0,3,2,2,1,3,0,1,1,1,0,1,0 0,2,3,2,0,1,2,0,1,1,1,0,1,1 0,0,2,1,2,6,1,0,1,1,1,0,1,0 0,4,3,2,2,8,3,0,0,1,1,0,1,0 1,0,3,2,0,6,2,0,1,1,1,0,1,0 0,0,0,3,2,3,4,0,1,1,1,0,1,0 1,0,4,3,0,5,2,0,1,1,1,0,1,1 2,1,3,2,0,2,2,0,1,1,1,1,1,1 0,0,1,2,0,3,0,0,0,1,1,2,1,0 1,0,3,2,2,7,1,0,0,1,1,0,1,0 1,0,7,1,0,6,2,0,1,1,1,1,1,0 2,2,1,2,0,3,2,0,1,1,1,1,1,0 1,4,6,2,0,1,2,4,1,1,1,0,1,1 2,0,1,2,0,3,2,0,1,1,1,1,1,0 0,0,3,2,2,1,3,0,1,1,1,1,1,0 0,0,1,2,2,2,1,0,0,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,0 0,0,0,3,2,4,1,4,1,1,1,0,1,0 0,5,0,3,0,5,2,0,1,1,1,1,1,1 0,0,1,2,2,2,1,4,1,1,1,2,1,0 1,0,0,3,0,4,0,0,0,1,1,0,1,1 0,0,1,2,2,8,1,0,0,1,1,2,1,0 0,0,5,2,0,8,2,0,1,1,1,0,1,1 1,0,1,2,1,1,3,0,1,1,1,0,1,0 0,0,5,2,2,3,3,0,0,1,1,1,1,0 0,0,3,2,2,2,3,0,0,1,1,0,1,0 1,1,3,2,0,1,2,0,1,1,1,2,1,0 1,0,0,3,0,3,2,0,1,1,1,1,1,0 1,0,5,2,1,0,3,4,0,1,1,2,1,0 1,3,10,3,0,5,2,0,1,1,1,0,1,1 1,1,3,2,0,1,2,0,1,1,1,1,1,0 0,0,6,2,0,8,0,0,0,1,1,2,1,0 0,0,1,2,2,3,1,0,1,1,1,2,1,0 1,0,1,2,0,1,2,1,1,1,1,0,1,1 2,2,3,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,2,3,1,0,0,1,1,0,1,0 0,0,1,2,2,2,1,0,1,1,1,2,1,0 1,0,6,2,2,5,3,0,0,1,1,0,1,1 2,0,1,2,2,0,4,0,1,1,1,0,1,0 0,0,3,2,2,10,5,4,0,1,1,2,1,0 0,0,1,2,0,2,2,0,1,1,1,2,1,0 1,0,3,2,4,2,5,0,0,1,1,2,1,0 2,0,2,1,0,1,2,0,1,1,1,0,1,0 1,4,1,2,1,8,5,0,0,1,1,2,1,0 0,0,3,2,2,8,3,0,0,1,1,0,1,0 0,0,0,3,2,4,4,1,0,1,1,0,1,0 0,0,3,2,2,1,1,0,1,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,0 0,0,0,3,2,6,3,0,1,1,1,0,1,0 2,1,1,2,3,3,5,4,1,1,1,2,1,0 0,0,3,2,1,1,3,0,1,1,1,1,1,0 1,0,0,3,3,2,4,4,1,1,1,1,1,0 0,0,3,2,2,2,5,0,0,1,1,0,1,0 1,2,10,3,1,4,5,1,0,1,1,0,1,0 0,0,3,2,2,4,3,1,0,1,1,0,1,0 1,1,10,3,0,3,2,0,1,1,1,0,1,1 1,0,1,2,1,2,5,0,0,1,1,0,1,0 1,3,5,2,2,4,3,0,1,1,1,1,1,0 1,5,10,3,4,12,5,0,1,1,1,0,1,0 0,0,2,1,2,6,1,0,1,1,1,2,1,0 2,4,6,2,4,5,3,0,0,1,1,2,1,0 0,0,3,2,2,2,3,0,1,1,1,0,1,0 0,5,3,2,0,12,2,0,1,1,1,0,1,0 1,0,1,2,0,3,2,0,1,1,1,0,1,1 0,0,0,3,2,1,3,0,1,1,1,1,1,0 0,5,0,3,0,5,2,0,1,1,1,0,1,1 0,0,3,2,5,3,5,0,0,1,1,2,1,0 0,0,3,2,2,1,1,4,1,1,1,0,1,0 0,0,3,2,2,6,3,4,1,1,1,0,1,0 0,0,3,2,2,2,1,0,1,1,1,2,1,0 0,0,0,3,0,5,2,0,1,1,1,1,1,0 1,4,1,2,0,4,2,4,1,1,1,2,1,1 1,0,1,2,1,8,3,0,0,1,1,0,1,0 0,0,1,2,2,1,3,4,1,1,1,1,1,0 1,0,8,0,0,7,2,0,1,1,1,0,1,1 1,3,1,2,0,8,2,0,1,1,1,1,1,1 0,0,3,2,0,8,2,4,1,1,1,0,1,0 1,1,0,3,1,4,3,0,0,1,1,0,1,0 0,0,10,3,0,5,0,0,0,1,1,1,1,0 2,5,13,3,0,5,2,0,1,1,1,2,1,1 1,0,1,2,1,7,3,4,0,1,1,2,1,0 0,0,1,2,0,7,2,0,1,1,1,0,1,0 1,4,0,3,0,1,2,4,1,1,1,0,1,0 1,0,1,2,0,0,2,0,1,1,1,1,1,0 1,3,0,3,0,0,2,0,1,1,1,2,1,0 0,0,14,0,0,10,4,0,1,1,1,0,1,0 1,0,1,2,1,1,3,0,1,1,1,0,1,0 1,3,10,3,2,4,3,0,0,1,1,1,1,1 0,0,10,3,0,5,4,0,1,1,1,0,1,1 0,1,3,2,2,3,3,0,1,1,1,0,1,0 0,0,10,3,2,5,3,0,0,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 1,4,1,2,2,5,3,0,0,1,1,0,1,0 1,5,3,2,1,8,5,0,0,1,1,2,1,0 0,0,2,1,2,3,1,0,0,1,1,0,1,0 1,0,0,3,0,2,2,4,1,1,1,2,1,1 0,0,3,2,1,1,3,0,1,1,1,1,1,0 2,2,3,2,0,3,0,0,0,1,1,2,1,1 0,0,2,1,2,3,1,0,0,1,1,2,1,0 1,4,3,2,0,10,2,4,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 0,0,1,2,2,3,3,2,0,1,1,0,1,0 2,0,3,2,0,1,2,1,1,1,1,0,1,0 2,2,8,0,0,7,2,0,1,1,1,0,1,1 1,0,0,3,2,4,3,4,1,1,1,1,1,1 1,0,5,2,1,3,3,0,0,1,1,0,1,0 1,0,0,3,0,3,2,0,1,1,1,1,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,0 0,0,12,1,2,1,3,0,1,1,1,0,1,0 0,0,1,2,0,6,2,0,1,1,1,0,1,0 3,0,3,2,2,2,3,4,1,1,1,0,1,0 2,0,3,2,0,8,2,4,1,1,1,2,1,0 1,4,15,0,2,7,3,0,0,1,1,2,1,0 0,0,3,2,2,3,1,0,0,1,1,0,1,0 2,1,3,2,0,9,2,0,1,1,1,1,1,0 3,0,6,2,4,8,3,0,0,1,1,2,1,0 2,0,3,2,1,8,3,0,0,1,1,0,1,0 0,0,2,1,3,10,3,4,1,1,1,0,1,0 1,0,3,2,1,3,5,4,0,1,1,2,1,0 0,0,1,2,2,8,3,0,1,1,1,1,1,0 0,0,1,2,1,1,4,3,0,1,1,0,1,0 0,0,4,3,2,5,3,0,1,1,1,1,1,1 2,5,3,2,0,2,2,0,1,1,1,0,1,0 1,5,1,2,2,8,3,0,0,1,1,2,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 1,4,10,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,2,10,1,0,1,1,1,0,1,0 1,0,0,3,0,5,2,0,1,1,1,0,1,1 1,1,3,2,0,2,0,0,0,1,1,2,1,0 0,5,5,2,0,12,2,0,1,1,1,1,1,0 1,0,1,2,1,1,3,0,1,1,1,0,1,0 2,0,3,2,0,8,2,0,1,1,1,1,1,1 0,0,3,2,2,2,3,0,0,1,1,2,1,0 1,0,5,2,0,0,2,0,1,1,1,1,1,1 1,0,4,3,0,5,0,0,0,1,1,0,1,1 1,0,0,3,0,8,0,4,0,1,1,0,1,0 2,4,12,1,4,2,5,4,0,1,1,2,1,0 0,4,1,2,2,8,1,0,1,1,1,0,1,0 2,0,1,2,2,10,3,0,1,1,1,2,1,0 1,1,3,2,0,9,2,1,1,1,1,0,1,1 0,0,3,2,2,2,1,0,0,1,1,0,1,0 0,0,3,2,3,2,3,0,0,1,1,2,1,0 1,0,6,2,4,4,3,0,0,1,1,1,1,0 1,0,8,0,1,1,3,0,1,1,1,0,1,0 1,0,0,3,1,5,1,0,0,1,1,0,1,0 1,0,3,2,0,3,2,0,1,1,1,1,1,0 0,0,2,1,2,2,1,0,1,1,1,2,1,0 2,0,1,2,0,3,2,0,1,1,1,0,1,0 0,0,2,1,0,1,2,0,1,1,1,0,1,0 1,2,1,2,0,4,2,1,1,1,1,1,1,1 2,0,3,2,0,4,2,0,1,1,1,0,1,1 0,0,0,3,2,5,3,0,0,1,1,1,1,0 0,0,3,2,0,1,0,0,0,1,1,0,1,1 2,0,3,2,0,4,2,0,1,1,1,0,1,1 0,0,7,1,2,2,1,0,1,1,1,2,1,0 1,1,10,3,0,9,2,0,1,1,1,1,1,0 0,4,10,3,2,5,1,0,1,1,1,2,1,0 0,0,3,2,1,5,1,0,0,1,1,0,1,0 1,0,3,2,0,6,2,4,1,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,1 0,0,1,2,2,4,3,0,0,1,1,0,1,0 0,0,1,2,2,0,1,0,0,1,1,0,1,0 0,0,1,2,0,7,0,0,0,1,1,1,1,1 0,0,0,3,2,5,3,0,0,1,1,2,1,0 1,4,1,2,0,1,2,0,1,1,1,0,1,1 0,0,5,2,1,3,5,4,0,1,1,1,1,0 2,0,0,3,1,5,3,0,0,1,1,1,1,0 0,0,3,2,2,6,1,0,1,1,1,0,1,0 2,3,10,3,0,3,2,0,1,1,1,0,1,1 1,0,4,3,0,5,2,0,1,1,1,1,1,1 1,0,1,2,1,2,3,0,1,1,1,1,1,0 0,0,0,3,2,4,3,0,0,1,1,0,1,0 1,0,8,0,0,1,2,0,1,1,1,0,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,0 0,0,3,2,1,5,3,0,0,1,1,0,1,0 0,4,0,3,2,12,3,0,1,1,1,1,1,0 0,0,1,2,2,3,1,0,1,1,1,1,1,0 0,0,0,3,2,0,5,4,0,1,1,0,1,0 2,0,3,2,0,10,2,0,1,1,1,2,1,0 1,2,0,3,1,3,3,0,0,1,1,1,1,0 0,0,3,2,2,1,1,0,1,1,1,0,1,0 1,0,3,2,1,3,3,0,1,1,1,1,1,0 1,0,0,3,0,8,2,0,1,1,1,0,1,1 0,0,1,2,2,2,3,1,0,1,1,2,1,0 0,0,3,2,0,10,2,0,1,1,1,1,1,1 2,0,3,2,0,3,2,0,1,1,1,0,1,1 0,0,1,2,0,8,0,1,0,1,1,0,1,0 1,0,3,2,1,8,3,0,0,1,1,0,1,0 0,0,5,2,2,0,3,0,1,1,1,1,1,0 1,0,5,2,2,5,3,0,0,1,1,2,1,0 0,0,5,2,0,8,2,0,1,1,1,0,1,1 1,2,1,2,0,9,2,0,1,1,1,1,1,1 0,0,0,3,2,3,3,0,1,1,1,0,1,0 0,0,10,3,0,4,2,1,1,1,1,2,1,1 1,1,0,3,1,5,3,4,0,1,1,0,1,1 0,0,1,2,2,3,1,0,1,1,1,2,1,0 0,0,1,2,2,7,3,0,1,1,1,0,1,0 3,1,1,2,0,3,2,0,1,1,1,0,1,0 0,0,14,0,0,7,4,0,0,1,1,0,1,0 0,0,1,2,2,0,3,0,0,1,1,0,1,0 2,0,3,2,4,2,3,0,0,1,1,2,1,0 1,1,3,2,0,4,2,0,1,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,1,1,0 0,0,3,2,1,10,3,0,1,1,1,1,1,0 0,0,2,1,2,4,3,0,0,1,1,0,1,0 3,1,10,3,0,1,2,0,1,1,1,2,1,0 2,1,3,2,0,9,2,0,1,1,1,1,1,0 1,0,1,2,0,5,0,0,0,1,1,1,1,1 2,1,3,2,0,6,2,0,1,1,1,0,1,0 2,0,3,2,2,10,3,0,1,1,1,1,1,0 1,0,1,2,2,1,3,4,1,1,1,1,1,0 0,0,0,3,2,8,3,0,1,1,1,0,1,0 1,0,6,2,2,2,3,0,1,1,1,0,1,0 2,4,12,1,0,8,2,0,1,1,1,0,1,0 1,0,3,2,0,10,2,0,1,1,1,0,1,0 0,0,14,0,2,2,4,0,1,1,1,1,1,0 0,0,3,2,2,1,4,0,1,1,1,0,1,0 1,0,10,3,2,5,3,0,1,1,1,1,1,0 0,0,3,2,2,3,5,4,1,1,1,2,1,0 1,0,3,2,0,2,2,4,1,1,1,0,1,0 0,0,5,2,2,3,3,0,1,1,1,0,1,0 1,0,6,2,0,1,2,0,1,1,1,0,1,1 1,5,3,2,0,12,2,0,1,1,1,0,1,1 0,0,3,2,2,9,3,0,1,1,1,2,1,0 0,5,1,2,2,12,1,4,0,1,1,0,1,0 1,1,0,3,2,3,3,0,1,1,1,1,1,0 2,0,5,2,5,2,3,0,1,1,1,2,1,0 0,0,0,3,2,5,1,0,1,1,1,2,1,0 0,0,0,3,0,4,2,0,1,1,1,0,1,1 0,0,3,2,0,2,2,0,1,1,1,0,1,0 0,0,0,3,0,4,2,0,1,1,1,0,1,1 1,4,2,1,0,10,2,0,1,1,1,2,1,0 1,3,3,2,0,8,2,0,1,1,1,0,1,1 2,0,2,1,4,2,5,3,1,1,1,0,1,0 1,0,6,2,0,0,2,0,1,1,1,0,1,1 1,0,3,2,0,8,0,0,0,1,1,2,1,0 0,1,7,1,0,1,2,0,1,1,1,0,1,0 1,0,12,1,0,2,0,0,0,1,1,2,1,0 2,0,10,3,0,5,2,0,1,1,1,0,1,1 1,0,0,3,0,10,2,0,1,1,1,1,1,0 1,0,0,3,1,4,3,0,1,1,1,1,1,1 0,0,3,2,5,3,3,0,1,1,1,1,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 2,1,1,2,0,3,2,0,1,1,1,1,1,0 0,0,5,2,2,3,3,0,0,1,1,2,1,0 2,0,0,3,1,4,3,0,0,1,1,1,1,1 1,0,3,2,1,3,5,0,0,1,1,0,1,0 0,3,1,2,2,8,5,0,0,1,1,2,1,0 0,0,2,1,2,2,1,0,1,1,1,2,1,0 1,5,6,2,0,7,2,0,1,1,1,2,1,1 1,0,3,2,0,7,2,4,1,1,1,0,1,0 1,0,3,2,2,1,3,4,1,1,1,0,1,0 0,4,1,2,2,8,1,0,0,1,1,2,1,0 0,0,3,2,0,1,0,0,0,1,1,0,1,0 0,0,1,2,2,3,3,0,1,1,1,0,1,0 1,1,10,3,1,4,3,0,1,1,1,2,1,0 1,0,3,2,0,3,2,0,1,1,1,1,1,0 2,0,3,2,1,10,3,0,1,1,1,0,1,0 1,0,14,0,1,1,3,0,0,1,1,1,1,0 0,0,1,2,0,1,2,0,1,1,1,0,1,0 1,0,1,2,1,3,3,0,0,1,1,0,1,0 1,4,1,2,0,10,0,0,0,1,1,0,1,0 0,0,3,2,2,2,3,0,0,1,1,2,1,0 0,0,3,2,3,7,3,0,1,1,1,0,1,0 1,0,1,2,0,8,0,0,0,1,1,2,1,1 0,0,1,2,2,8,1,0,0,1,1,2,1,0 0,0,3,2,2,2,4,0,0,1,1,0,1,0 0,0,3,2,0,2,0,0,0,1,1,0,1,1 0,0,0,3,2,1,3,0,1,1,1,1,1,0 1,1,5,2,3,1,3,0,1,1,1,0,1,0 0,0,3,2,2,2,3,0,0,1,1,2,1,0 1,0,1,2,0,0,2,0,1,1,1,0,1,0 1,0,1,2,1,6,5,0,0,1,1,0,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,1 1,2,0,3,0,4,2,0,1,1,1,1,1,1 0,0,1,2,2,6,1,0,1,1,1,0,1,0 0,0,1,2,2,2,3,0,0,1,1,0,1,0 1,5,0,3,0,12,2,0,1,1,1,0,1,1 0,0,6,2,1,0,3,0,0,1,1,1,1,0 0,0,8,0,0,6,2,3,1,1,1,0,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,0,8,2,0,1,1,1,0,1,0 1,1,3,2,0,1,2,0,1,1,1,2,1,0 0,0,1,2,0,4,2,0,1,1,1,1,1,0 1,4,1,2,1,2,3,4,0,1,1,2,1,0 0,0,3,2,2,6,5,4,0,1,1,0,1,0 0,0,1,2,1,4,5,0,0,1,1,0,1,0 1,0,13,3,0,4,2,0,1,1,1,1,1,1 0,5,1,2,0,7,2,0,1,1,1,0,1,0 0,0,9,1,1,1,3,0,1,1,1,1,1,1 1,0,11,0,0,7,2,0,1,1,1,0,1,0 0,0,2,1,2,2,1,0,0,1,1,2,1,0 0,4,2,1,3,7,3,4,1,1,1,0,1,0 0,5,3,2,1,10,5,0,0,1,1,0,1,0 0,0,1,2,0,3,2,0,1,1,1,2,1,0 0,0,2,1,2,6,1,0,1,1,1,2,1,0 0,5,0,3,0,4,0,0,0,1,1,0,1,1 0,0,3,2,1,9,3,0,1,1,1,0,1,0 0,0,12,1,2,1,5,0,0,1,1,2,1,0 0,0,3,2,0,10,2,0,1,1,1,1,1,0 1,3,10,3,2,5,3,0,1,1,1,0,1,0 0,0,3,2,2,6,3,0,1,1,1,1,1,0 2,2,3,2,0,4,2,0,1,1,1,0,1,1 1,4,10,3,0,5,2,0,1,1,1,0,1,0 1,1,0,3,5,5,3,0,0,1,1,0,1,0 0,0,5,2,0,2,0,0,0,1,1,2,1,1 0,0,1,2,2,1,1,1,1,1,1,0,1,0 0,0,10,3,0,5,2,0,1,1,1,1,1,1 0,4,3,2,2,9,3,4,1,1,1,1,1,0 0,4,1,2,2,12,3,0,0,1,1,0,1,0 0,0,1,2,0,8,2,0,1,1,1,0,1,0 1,4,1,2,0,8,0,0,0,1,1,0,1,0 0,0,0,3,2,5,3,0,1,1,1,0,1,0 1,0,3,2,1,8,3,0,0,1,1,2,1,0 0,3,3,2,2,13,1,0,1,1,1,0,1,0 1,0,1,2,0,5,2,0,1,1,1,0,1,1 0,0,7,1,2,1,4,0,1,1,1,0,1,0 0,0,1,2,2,3,3,0,1,1,1,2,1,0 1,0,3,2,4,4,5,4,0,1,1,0,1,0 1,0,3,2,0,1,2,2,1,1,1,0,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,3,2,2,7,1,4,0,1,1,0,1,0 1,2,1,2,0,1,2,0,1,1,1,1,1,1 2,0,3,2,0,1,2,0,1,1,1,0,1,1 1,1,3,2,0,3,0,0,0,1,1,0,1,1 1,0,6,2,0,7,2,1,1,1,1,0,1,1 0,0,3,2,0,4,0,0,0,1,1,0,1,0 1,0,1,2,0,10,2,4,1,1,1,1,1,0 0,0,3,2,0,10,2,0,1,1,1,1,1,0 1,0,5,2,2,9,1,0,1,1,1,0,1,0 2,4,3,2,0,10,2,4,1,1,1,0,1,0 0,0,0,3,0,5,2,0,1,1,1,1,1,0 1,0,11,0,5,1,5,0,1,1,1,0,1,0 0,0,0,3,2,0,3,0,0,1,1,2,1,0 1,0,3,2,0,8,0,0,0,1,1,1,1,0 1,0,3,2,1,10,5,0,1,1,1,0,1,0 1,0,1,2,0,10,2,0,1,1,1,0,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,1 0,0,0,3,0,0,0,0,0,1,1,2,1,1 2,0,1,2,2,5,5,0,1,1,1,0,1,1 0,0,3,2,2,1,3,0,1,1,1,0,1,0 0,0,3,2,2,10,3,0,1,1,1,1,1,0 2,0,6,2,1,2,3,0,0,1,1,2,1,0 1,0,0,3,2,1,3,0,0,1,1,0,1,0 0,0,7,1,2,2,3,0,1,1,1,2,1,0 0,0,1,2,2,6,1,0,1,1,1,2,1,0 0,0,12,1,2,2,3,0,1,1,1,0,1,0 0,0,3,2,2,2,5,0,0,1,1,2,1,0 0,0,5,2,0,1,2,0,1,1,1,1,1,0 1,1,1,2,0,1,2,0,1,1,1,2,1,0 0,5,0,3,2,5,3,0,1,1,1,2,1,0 1,0,3,2,5,1,5,0,0,1,1,0,1,0 0,0,1,2,5,8,1,4,0,1,1,2,1,0 2,4,3,2,0,10,2,0,1,1,1,1,1,0 1,4,0,3,1,5,5,0,0,1,1,0,1,0 1,0,0,3,0,3,2,0,1,1,1,1,1,1 1,0,3,2,2,2,3,0,0,1,1,2,1,0 1,3,3,2,1,8,3,0,1,1,1,0,1,0 0,0,5,2,2,4,3,0,0,1,1,1,1,0 0,0,3,2,1,5,5,0,0,1,1,2,1,0 0,0,0,3,2,1,1,0,1,1,1,2,1,0 1,0,3,2,1,8,5,0,0,1,1,2,1,0 0,0,1,2,2,7,1,0,1,1,1,0,1,0 0,0,14,0,2,2,1,0,1,1,1,0,1,0 0,0,1,2,2,5,3,0,0,1,1,2,1,0 0,4,3,2,2,9,3,0,1,1,1,0,1,0 2,4,3,2,0,10,2,0,1,1,1,0,1,0 1,0,1,2,0,8,2,0,1,1,1,0,1,0 2,0,1,2,1,2,5,0,0,1,1,1,1,0 0,0,0,3,2,3,3,0,0,1,1,0,1,0 0,0,0,3,2,4,3,4,1,1,1,0,1,0 0,0,1,2,2,12,1,0,1,1,1,2,1,0 1,0,1,2,0,4,2,0,1,1,1,0,1,0 1,4,3,2,3,8,5,4,0,1,1,0,1,0 1,0,3,2,1,2,5,0,0,1,1,0,1,0 1,0,6,2,5,6,5,0,1,1,1,1,1,0 0,0,6,2,2,1,3,0,1,1,1,1,1,0 0,0,1,2,0,5,2,0,1,1,1,1,1,1 0,0,3,2,1,1,3,0,1,1,1,1,1,0 0,0,1,2,2,8,3,2,0,1,1,2,1,0 0,0,0,3,0,5,2,0,1,1,1,1,1,1 1,2,0,3,0,4,2,0,1,1,1,1,1,1 1,0,3,2,0,4,2,0,1,1,1,1,1,1 0,4,1,2,1,6,3,4,1,1,1,1,1,0 1,4,1,2,0,0,2,0,1,1,1,1,1,1 1,0,1,2,1,7,5,0,1,1,1,1,1,1 0,0,1,2,0,3,0,0,0,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,0,1,1 3,0,1,2,1,8,3,0,0,1,1,2,1,0 1,1,3,2,0,1,2,0,1,1,1,1,1,0 1,1,10,3,0,5,2,0,1,1,1,0,1,0 1,0,2,1,1,7,5,3,0,1,1,1,1,0 0,0,3,2,2,7,3,0,1,1,1,0,1,0 1,0,3,2,0,2,2,4,1,1,1,0,1,0 1,0,5,2,0,4,0,0,0,1,1,1,1,1 2,0,4,3,0,5,2,0,1,1,1,1,1,1 1,4,9,1,0,0,2,0,1,1,1,1,1,0 2,0,11,0,4,11,3,4,0,1,1,2,1,0 0,0,6,2,3,1,3,0,1,1,1,0,1,0 0,2,0,3,2,9,3,0,0,1,1,1,1,0 1,0,1,2,0,10,2,0,1,1,1,0,1,0 0,0,13,3,2,5,1,0,1,1,1,0,1,0 0,0,1,2,2,6,5,0,0,1,1,0,1,0 0,0,3,2,2,10,3,0,1,1,1,0,1,0 0,0,1,2,0,3,2,0,1,1,1,1,1,0 0,0,3,2,2,6,3,0,0,1,1,1,1,0 2,0,12,1,0,2,0,0,0,1,1,2,1,0 0,4,1,2,0,12,2,0,1,1,1,0,1,0 0,0,3,2,2,6,1,0,1,1,1,2,1,0 0,0,1,2,2,1,5,0,1,1,1,0,1,0 1,1,1,2,1,4,3,0,1,1,1,1,1,0 1,1,3,2,3,2,5,0,0,1,1,0,1,0 3,0,2,1,4,8,5,0,0,1,1,0,1,0 0,0,3,2,0,7,0,4,0,1,1,0,1,0 0,3,6,2,1,1,5,4,0,1,1,0,1,1 2,0,2,1,2,7,3,0,0,1,1,0,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,3,2,0,0,0,0,0,1,1,2,1,0 0,0,2,1,0,2,2,0,1,1,1,0,1,0 0,0,0,3,2,10,3,0,1,1,1,1,1,0 2,0,0,3,0,3,2,0,1,1,1,2,1,1 1,0,1,2,0,5,2,0,1,1,1,1,1,1 0,0,3,2,2,6,5,4,0,1,1,0,1,0 1,1,0,3,0,5,2,0,1,1,1,1,1,1 0,0,3,2,2,6,1,2,1,1,1,1,1,0 1,2,10,3,0,4,2,0,1,1,1,1,1,0 1,0,8,0,3,2,5,0,0,1,1,0,1,0 0,1,3,2,3,1,3,0,1,1,1,2,1,0 1,0,10,3,1,4,5,0,1,1,1,1,1,0 0,0,3,2,2,1,1,0,1,1,1,0,1,0 1,0,3,2,0,5,2,0,1,1,1,0,1,0 0,0,2,1,2,3,1,0,1,1,1,2,1,0 1,0,6,2,0,1,2,0,1,1,1,0,1,1 0,0,13,3,2,5,3,0,0,1,1,1,1,0 0,0,0,3,0,4,0,0,1,1,1,0,1,1 1,1,5,2,1,3,5,0,0,1,1,2,1,0 2,4,0,3,2,5,3,0,0,1,1,0,1,0 0,1,1,2,0,1,2,0,1,1,1,1,1,0 2,0,3,2,0,3,2,0,1,1,1,0,1,1 2,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 0,1,0,3,2,0,3,0,1,1,1,0,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 0,0,1,2,2,8,3,0,1,1,1,1,1,0 0,0,2,1,2,2,1,0,1,1,1,0,1,0 1,0,12,1,0,1,2,0,1,1,1,1,1,1 2,2,0,3,1,5,3,0,1,1,1,1,1,0 2,0,8,0,2,10,3,0,1,1,1,1,1,1 0,0,0,3,0,5,2,0,1,1,1,0,1,1 0,0,0,3,2,8,1,0,0,1,1,0,1,0 0,0,3,2,2,3,1,0,1,1,1,0,1,0 1,1,4,3,0,5,2,0,1,1,1,1,1,1 0,0,1,2,2,0,3,0,1,1,1,0,1,0 1,0,0,3,2,5,3,0,0,1,1,1,1,0 0,0,0,3,2,0,3,0,1,1,1,0,1,0 0,0,1,2,2,8,1,0,1,1,1,2,1,0 2,0,8,0,1,2,3,0,0,1,1,0,1,0 1,4,7,1,0,2,2,0,1,1,1,0,1,0 0,1,5,2,2,9,3,0,1,1,1,0,1,0 1,0,3,2,2,8,5,4,0,1,1,2,1,0 1,0,10,3,0,1,2,0,1,1,1,0,1,1 0,0,3,2,2,1,3,2,1,1,1,0,1,0 1,4,3,2,3,4,3,4,1,1,1,0,1,0 0,0,12,1,2,2,1,0,0,1,1,2,1,0 1,0,10,3,1,5,3,0,0,1,1,1,1,0 0,0,3,2,2,1,3,0,1,1,1,0,1,0 0,0,3,2,0,6,2,0,1,1,1,1,1,0 0,4,0,3,2,5,1,0,1,1,1,0,1,0 0,0,0,3,2,2,1,0,0,1,1,2,1,0 1,0,3,2,2,6,1,0,1,1,1,1,1,0 0,0,3,2,0,10,2,4,1,1,1,1,1,0 1,1,3,2,0,4,2,0,1,1,1,2,1,0 1,2,0,3,0,3,2,0,1,1,1,1,1,0 1,0,4,3,0,5,2,0,1,1,1,1,1,1 0,0,0,3,2,3,1,0,0,1,1,2,1,0 1,0,2,1,4,2,3,4,0,1,1,2,1,0 2,0,7,1,4,11,5,4,0,1,1,2,1,0 0,0,6,2,0,10,2,0,1,1,1,1,1,0 1,0,7,1,5,6,5,0,1,1,1,0,1,0 0,0,3,2,2,9,1,4,1,1,1,1,1,0 0,0,3,2,0,3,2,0,1,1,1,1,1,1 1,1,3,2,0,3,2,0,1,1,1,1,1,0 0,0,1,2,0,4,2,0,1,1,1,0,1,1 1,0,0,3,0,3,2,0,1,1,1,2,1,1 1,1,1,2,2,2,5,4,0,1,1,0,1,0 1,4,12,1,3,2,5,4,0,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,1,1,1 0,0,0,3,0,8,0,4,0,1,1,0,1,1 2,1,3,2,0,1,2,0,1,1,1,1,1,0 0,0,3,2,2,2,1,0,0,1,1,2,1,0 0,0,0,3,2,6,3,0,1,1,1,0,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,1 1,2,14,0,0,10,2,0,1,1,1,1,1,0 1,1,13,3,0,5,2,0,1,1,1,1,1,1 0,0,3,2,1,1,3,0,1,1,1,1,1,0 2,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,2,6,1,0,1,1,1,0,1,0 1,0,1,2,0,3,2,0,1,1,1,1,1,1 0,0,1,2,0,1,2,0,1,1,1,1,1,0 1,2,13,3,3,5,3,0,1,1,1,0,1,1 0,4,3,2,1,8,5,0,0,1,1,0,1,0 2,0,3,2,0,1,2,0,1,1,1,2,1,0 0,5,0,3,0,0,2,0,1,1,1,0,1,1 0,0,1,2,2,2,1,0,1,1,1,2,1,0 0,0,3,2,2,4,4,0,1,1,1,1,1,0 0,0,13,3,0,5,2,1,1,1,1,0,1,1 1,5,1,2,3,4,3,0,0,1,1,1,1,0 0,0,3,2,2,7,1,0,0,1,1,2,1,0 0,5,1,2,2,8,5,1,0,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,1,1,0 1,0,8,0,0,1,2,0,1,1,1,2,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,1 1,1,9,1,0,6,2,4,1,1,1,0,1,1 0,0,10,3,2,3,3,0,1,1,1,1,1,0 0,0,1,2,2,5,3,0,1,1,1,0,1,0 1,4,10,3,2,5,3,0,1,1,1,2,1,0 0,0,1,2,2,3,3,0,0,1,1,2,1,0 1,0,5,2,1,5,5,0,0,1,1,0,1,1 0,5,1,2,0,10,2,0,1,1,1,0,1,0 1,0,3,2,0,1,2,4,1,1,1,0,1,1 0,0,7,1,2,7,3,0,1,1,1,0,1,0 1,3,1,2,1,4,3,0,1,1,1,0,1,0 0,1,2,1,2,9,1,0,1,1,1,2,1,0 0,0,0,3,0,4,2,0,1,1,1,0,1,1 1,2,3,2,0,3,2,0,1,1,1,1,1,1 0,0,3,2,2,3,1,0,0,1,1,0,1,0 0,0,9,1,2,2,1,0,1,1,1,2,1,0 0,0,1,2,0,8,2,0,1,1,1,0,1,0 0,0,3,2,2,1,3,0,1,1,1,1,1,0 2,1,3,2,4,4,3,0,1,1,1,1,1,0 0,4,3,2,2,12,1,0,1,1,1,1,1,0 1,0,6,2,0,1,2,0,1,1,1,0,1,1 0,1,3,2,0,1,2,0,1,1,1,0,1,1 0,4,1,2,3,4,5,4,1,1,1,0,1,0 0,5,2,1,2,8,1,0,0,1,1,2,1,0 0,0,3,2,1,4,3,0,0,1,1,0,1,0 1,4,0,3,0,5,0,0,0,1,1,1,1,0 1,0,10,3,2,4,3,0,1,1,1,2,1,0 0,0,3,2,2,2,4,0,1,1,1,2,1,0 2,4,1,2,0,9,2,0,1,1,1,0,1,0 0,0,1,2,2,7,1,4,0,1,1,1,1,0 1,0,1,2,0,5,2,0,1,1,1,1,1,0 0,0,1,2,2,5,1,0,1,1,1,2,1,0 0,5,0,3,2,0,3,0,0,1,1,2,1,0 0,0,10,3,2,5,3,0,1,1,1,1,1,1 0,0,10,3,0,0,2,0,1,1,1,0,1,1 0,0,0,3,2,5,1,0,0,1,1,0,1,0 0,0,3,2,2,3,1,0,0,1,1,2,1,0 1,4,0,3,2,5,3,0,1,1,1,1,1,0 0,0,0,3,4,3,5,0,0,1,1,0,1,0 0,0,1,2,2,6,1,0,1,1,1,2,1,0 0,1,1,2,0,1,2,0,1,1,1,0,1,0 1,0,13,3,1,5,5,0,0,1,1,1,1,1 1,0,0,3,1,4,1,0,0,1,1,1,1,1 1,0,9,1,0,2,2,4,1,1,1,0,1,0 1,0,1,2,2,3,3,4,1,1,1,0,1,0 2,0,3,2,0,1,2,0,1,1,1,2,1,0 0,0,2,1,2,2,4,0,1,1,1,2,1,0 0,0,0,3,0,5,2,0,1,1,1,0,1,0 1,0,1,2,1,8,5,4,0,1,1,0,1,0 1,0,6,2,0,0,2,0,1,1,1,0,1,0 1,4,0,3,1,8,5,0,0,1,1,2,1,0 0,0,3,2,3,2,5,4,0,1,1,0,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 0,5,3,2,2,0,1,0,0,1,1,0,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,2,2,3,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,0 0,0,0,3,2,5,3,0,1,1,1,0,1,0 1,4,3,2,0,4,2,0,1,1,1,1,1,1 1,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,3,2,0,3,0,0,0,1,1,0,1,0 0,0,1,2,2,2,3,0,0,1,1,2,1,0 0,0,3,2,0,2,2,0,1,1,1,0,1,0 0,0,1,2,2,2,3,0,0,1,1,2,1,0 2,0,1,2,1,8,3,1,0,1,1,0,1,0 0,0,6,2,0,8,2,0,1,1,1,1,1,0 0,0,6,2,2,2,1,0,0,1,1,2,1,0 0,0,1,2,0,1,2,0,1,1,1,0,1,0 1,0,1,2,2,3,3,4,0,1,1,2,1,0 1,5,0,3,0,5,2,0,1,1,1,1,1,0 2,0,3,2,4,2,5,4,0,1,1,2,1,0 1,0,0,3,0,0,2,0,1,1,1,0,1,1 0,0,1,2,2,2,4,0,0,1,1,2,1,0 2,1,3,2,0,10,2,0,1,1,1,1,1,0 1,0,10,3,2,4,3,0,0,1,1,1,1,1 0,0,6,2,2,0,1,0,1,1,1,0,1,0 0,0,9,1,2,6,1,0,1,1,1,2,1,0 1,4,0,3,0,5,0,0,0,1,1,0,1,1 2,0,3,2,0,10,2,0,1,1,1,0,1,1 0,0,1,2,2,8,1,4,0,1,1,0,1,0 0,0,2,1,2,1,1,4,1,1,1,0,1,0 1,5,0,3,0,5,2,0,1,1,1,2,1,0 0,5,0,3,0,4,2,0,1,1,1,0,1,1 0,0,0,3,2,5,5,0,1,1,1,2,1,0 2,1,12,1,0,1,2,0,1,1,1,0,1,0 0,0,3,2,2,10,5,0,1,1,1,1,1,0 1,0,3,2,2,6,3,0,1,1,1,0,1,0 0,0,6,2,2,1,1,0,1,1,1,2,1,0 2,0,3,2,0,10,2,0,1,1,1,0,1,1 0,4,0,3,2,5,3,0,0,1,1,1,1,0 1,3,3,2,0,8,0,0,0,1,1,0,1,1 1,0,3,2,2,9,3,4,1,1,1,0,1,0 1,0,3,2,2,2,3,0,0,1,1,2,1,0 2,4,3,2,0,8,0,0,0,1,1,2,1,1 0,4,3,2,1,12,5,0,1,1,1,0,1,0 1,2,13,3,0,4,2,0,1,1,1,1,1,1 1,0,0,3,2,3,3,0,1,1,1,1,1,1 0,0,12,1,3,2,5,0,0,1,1,1,1,0 0,5,1,2,5,2,4,0,1,1,1,0,1,0 0,0,1,2,0,3,0,0,0,1,1,2,1,0 1,1,0,3,1,3,3,0,0,1,1,1,1,0 0,0,3,2,2,7,3,0,1,1,1,0,1,0 0,0,1,2,2,9,3,0,0,1,1,2,1,0 1,0,14,0,3,9,3,0,1,1,1,2,1,0 0,0,3,2,1,1,5,0,1,1,1,1,1,0 1,0,6,2,0,0,0,0,0,1,1,2,1,1 2,0,3,2,2,3,3,0,1,1,1,2,1,0 0,4,6,2,1,0,3,0,1,1,1,1,1,0 1,0,1,2,1,8,5,0,0,1,1,0,1,0 1,0,0,3,0,3,2,0,1,1,1,1,1,1 2,0,1,2,2,0,3,0,1,1,1,0,1,0 0,0,6,2,2,7,3,0,0,1,1,1,1,0 1,0,6,2,0,4,2,0,1,1,1,1,1,1 1,1,1,2,0,4,2,0,1,1,1,1,1,0 1,0,0,3,2,3,3,3,0,1,1,1,1,1 1,0,1,2,1,8,3,4,0,1,1,2,1,0 2,1,3,2,0,9,2,0,1,1,1,1,1,0 0,0,9,1,2,7,1,0,1,1,1,2,1,0 1,0,6,2,0,0,2,0,1,1,1,1,1,1 1,2,0,3,0,0,2,0,1,1,1,0,1,0 0,0,3,2,2,3,3,0,0,1,1,0,1,0 2,0,3,2,0,10,2,0,1,1,1,1,1,1 0,0,1,2,2,2,4,4,1,1,1,2,1,0 2,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,3,2,2,7,3,4,1,1,1,0,1,0 1,0,10,3,2,0,3,0,1,1,1,2,1,1 1,0,0,3,0,4,2,0,1,1,1,0,1,1 1,0,5,2,1,1,3,0,1,1,1,0,1,0 0,0,3,2,2,2,1,4,1,1,1,2,1,0 2,1,2,1,2,9,5,0,1,1,1,2,1,0 0,0,3,2,1,8,5,0,0,1,1,2,1,0 0,0,2,1,2,3,1,0,0,1,1,2,1,0 0,0,3,2,0,1,2,0,1,1,1,1,1,1 0,0,0,3,0,5,2,0,1,1,1,1,1,1 2,0,0,3,0,5,2,0,1,1,1,0,1,1 0,0,3,2,2,10,1,0,1,1,1,2,1,0 0,0,3,2,3,2,1,0,0,1,1,2,1,0 1,0,1,2,1,4,3,0,1,1,1,1,1,0 0,0,1,2,2,8,1,0,1,1,1,0,1,0 0,0,12,1,2,9,1,0,1,1,1,2,1,0 1,1,3,2,0,2,0,0,0,1,1,1,1,0 1,0,6,2,2,5,3,0,0,1,1,1,1,0 2,0,1,2,0,1,2,0,1,1,1,1,1,1 2,0,3,2,0,10,2,0,1,1,1,1,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,1 1,0,6,2,2,8,5,0,1,1,1,0,1,0 0,0,10,3,2,5,3,0,0,1,1,1,1,0 0,0,6,2,2,0,1,0,1,1,1,0,1,0 0,0,3,2,4,8,3,0,0,1,1,0,1,0 0,0,3,2,0,4,2,0,1,1,1,1,1,0 2,0,3,2,4,10,5,0,1,1,1,1,1,1 2,0,3,2,4,2,3,0,0,1,1,0,1,0 1,0,3,2,3,7,5,0,0,1,1,2,1,0 1,0,1,2,2,8,3,0,1,1,1,2,1,0 0,2,0,3,2,3,1,0,1,1,1,0,1,0 1,0,1,2,0,8,0,0,0,1,1,0,1,1 0,0,1,2,2,6,1,0,1,1,1,0,1,0 3,1,3,2,0,4,2,0,1,1,1,0,1,0 2,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,3,2,1,8,3,0,1,1,1,0,1,0 1,0,0,3,1,5,3,0,0,1,1,1,1,1 0,0,0,3,2,4,3,0,1,1,1,1,1,0 2,0,3,2,4,9,3,0,1,1,1,2,1,0 0,0,2,1,2,3,1,0,1,1,1,2,1,0 0,0,1,2,0,1,2,0,1,1,1,1,1,0 1,0,1,2,0,5,2,0,1,1,1,0,1,1 2,4,0,3,4,5,3,0,0,1,1,1,1,0 2,0,3,2,0,1,2,0,1,1,1,0,1,1 1,0,1,2,1,5,3,0,1,1,1,0,1,0 1,4,3,2,1,2,3,0,0,1,1,1,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,0,3,0,1,2,0,1,1,1,0,1,0 0,0,3,2,2,1,1,0,1,1,1,2,1,0 2,0,10,3,4,5,3,0,0,1,1,0,1,1 0,0,6,2,1,8,3,0,0,1,1,1,1,0 1,1,3,2,0,3,2,0,1,1,1,1,1,0 0,0,0,3,2,5,3,0,0,1,1,0,1,0 1,5,13,3,1,5,1,0,1,1,1,1,1,1 0,0,3,2,2,10,1,0,1,1,1,0,1,0 0,4,3,2,2,8,1,0,0,1,1,0,1,0 2,0,3,2,0,2,2,0,1,1,1,0,1,1 0,0,0,3,2,5,1,0,0,1,1,0,1,0 1,0,0,3,2,4,3,0,0,1,1,1,1,1 0,0,2,1,2,8,1,0,0,1,1,2,1,0 1,0,3,2,0,9,2,0,1,1,1,0,1,0 1,0,2,1,0,4,2,0,1,1,1,1,1,0 0,2,1,2,0,4,2,0,1,1,1,1,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,1,2,2,3,3,0,0,1,1,2,1,0 0,0,12,1,2,6,3,0,1,1,1,0,1,0 0,0,2,1,2,3,1,0,1,1,1,2,1,0 1,0,1,2,0,9,2,0,1,1,1,1,1,1 0,1,0,3,3,5,1,0,1,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,0,1,1 0,0,1,2,2,10,1,0,1,1,1,1,1,0 2,1,10,3,0,3,2,0,1,1,1,0,1,1 1,1,0,3,0,3,2,1,1,1,1,0,1,1 2,0,14,0,1,2,5,4,1,1,1,2,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,2,6,5,4,0,1,1,2,1,0 1,0,6,2,1,8,5,0,0,1,1,0,1,0 1,0,3,2,0,10,2,0,1,1,1,0,1,1 0,0,3,2,2,8,3,0,0,1,1,2,1,0 1,0,7,1,1,7,3,0,0,1,1,0,1,0 0,0,0,3,0,8,4,0,1,1,1,0,1,1 0,0,3,2,0,1,2,0,1,1,1,1,1,0 1,0,0,3,0,3,2,0,1,1,1,1,1,1 0,0,1,2,0,1,0,0,0,1,1,1,1,0 0,0,0,3,2,4,1,0,1,1,1,2,1,0 2,1,3,2,0,3,2,4,1,1,1,0,1,0 0,0,6,2,1,0,3,0,0,1,1,1,1,0 0,1,0,3,2,4,3,0,1,1,1,0,1,0 0,0,6,2,0,8,0,1,0,1,1,0,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,1 1,1,4,3,0,9,2,0,1,1,1,1,1,1 1,0,10,3,0,5,2,0,1,1,1,0,1,0 1,0,1,2,1,3,1,0,1,1,1,1,1,0 0,0,0,3,2,4,1,0,0,1,1,1,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,0,0,2,0,1,1,1,0,1,0 2,4,8,0,0,2,2,0,1,1,1,1,1,0 1,1,7,1,0,1,2,0,1,1,1,2,1,0 0,0,3,2,2,6,1,0,0,1,1,0,1,0 0,0,3,2,2,3,3,0,1,1,1,1,1,0 1,0,3,2,1,7,3,0,0,1,1,2,1,0 1,0,1,2,1,7,3,0,1,1,1,1,1,0 0,0,0,3,2,5,1,4,1,1,1,2,1,0 1,1,3,2,1,6,1,0,1,1,1,2,1,0 1,0,1,2,0,0,2,0,1,1,1,0,1,0 0,0,3,2,2,3,3,0,1,1,1,2,1,0 1,0,1,2,1,1,3,0,1,1,1,1,1,0 1,1,12,1,0,9,2,0,1,1,1,1,1,0 0,0,1,2,2,1,3,0,1,1,1,0,1,0 0,0,3,2,2,3,1,4,1,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,10,3,0,5,0,1,0,1,1,1,1,0 2,2,3,2,0,4,2,1,1,1,1,0,1,1 3,1,3,2,0,4,2,0,1,1,1,2,1,0 0,0,1,2,2,2,1,0,1,1,1,2,1,0 0,0,1,2,2,3,3,0,1,1,1,2,1,0 0,0,1,2,2,10,5,0,1,1,1,0,1,0 1,0,14,0,0,7,0,0,0,1,1,2,1,0 1,0,1,2,0,8,0,4,0,1,1,0,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,1 0,0,1,2,2,3,3,0,0,1,1,1,1,0 0,0,11,0,5,11,3,0,0,1,1,0,1,0 1,0,3,2,1,7,3,0,1,1,1,1,1,0 1,4,15,0,0,2,2,0,1,1,1,0,1,0 0,0,3,2,0,8,0,0,0,1,1,0,1,0 1,0,2,1,0,7,2,0,1,1,1,1,1,1 1,0,3,2,0,1,2,0,1,1,1,1,1,1 1,0,10,3,2,5,3,0,0,1,1,2,1,0 1,0,4,3,0,5,2,0,1,1,1,0,1,1 0,0,3,2,0,1,2,0,1,1,1,2,1,0 0,0,0,3,2,3,3,0,1,1,1,0,1,1 0,0,5,2,1,2,5,2,0,1,1,0,1,0 0,0,3,2,0,7,2,4,1,1,1,0,1,0 1,2,3,2,0,4,2,0,1,1,1,0,1,1 0,0,3,2,2,2,3,0,0,1,1,1,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 2,4,1,2,1,4,5,4,0,1,1,2,1,0 1,0,1,2,1,8,5,0,0,1,1,0,1,0 1,2,0,3,0,4,0,0,0,1,1,1,1,1 1,0,1,2,1,1,5,0,1,1,1,2,1,0 1,1,1,2,1,9,5,0,1,1,1,0,1,0 1,5,3,2,0,5,0,0,0,1,1,0,1,1 1,0,10,3,0,4,2,0,1,1,1,1,1,1 1,0,8,0,4,2,5,4,0,1,1,0,1,0 0,0,3,2,2,2,1,0,0,1,1,2,1,0 1,0,1,2,0,4,2,0,1,1,1,0,1,0 1,2,1,2,0,3,2,0,1,1,1,1,1,1 0,4,12,1,1,10,3,0,1,1,1,0,1,0 0,1,0,3,0,4,2,0,1,1,1,0,1,1 1,0,5,2,0,4,2,0,1,1,1,0,1,1 0,0,1,2,0,5,2,0,1,1,1,1,1,0 0,0,3,2,1,7,3,0,0,1,1,2,1,0 0,0,0,3,0,1,2,0,1,1,1,1,1,0 1,0,12,1,1,4,5,0,0,1,1,0,1,0 0,0,3,2,0,10,2,0,1,1,1,0,1,0 0,0,3,2,2,2,1,0,0,1,1,2,1,0 0,2,1,2,0,3,2,0,1,1,1,1,1,1 2,1,3,2,0,1,2,0,1,1,1,2,1,0 1,0,0,3,0,4,2,1,1,1,1,0,1,1 0,0,3,2,0,1,2,0,1,1,1,2,1,1 0,0,0,3,2,0,3,0,0,1,1,2,1,0 2,0,0,3,4,4,3,0,1,1,1,0,1,1 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,3,2,2,10,5,0,1,1,1,1,1,0 0,0,1,2,2,3,3,0,0,1,1,0,1,0 0,0,1,2,2,4,3,0,0,1,1,0,1,0 1,5,10,3,0,5,2,0,1,1,1,2,1,1 3,0,3,2,4,2,3,4,0,1,1,0,1,0 0,0,3,2,1,6,1,0,1,1,1,0,1,0 1,0,3,2,2,8,3,0,0,1,1,1,1,0 0,0,5,2,2,8,3,0,0,1,1,0,1,0 2,1,3,2,2,9,5,0,1,1,1,1,1,0 1,4,3,2,4,12,3,0,1,1,1,0,1,1 2,0,6,2,1,2,3,0,0,1,1,2,1,0 1,0,3,2,2,1,1,4,0,1,1,2,1,0 1,0,3,2,1,8,5,0,0,1,1,0,1,0 1,0,3,2,1,1,5,0,1,1,1,0,1,0 1,0,1,2,4,5,3,0,0,1,1,0,1,0 1,0,0,3,2,3,3,0,1,1,1,0,1,0 1,0,6,2,0,7,2,0,1,1,1,0,1,0 1,1,3,2,0,1,2,0,1,1,1,2,1,0 1,0,3,2,0,8,2,0,1,1,1,1,1,1 0,0,3,2,2,4,3,0,1,1,1,1,1,0 2,0,3,2,0,4,2,0,1,1,1,1,1,1 1,0,10,3,1,5,3,0,1,1,1,1,1,0 1,3,0,3,1,4,5,0,1,1,1,1,1,1 1,0,1,2,0,7,2,0,1,1,1,0,1,0 1,2,0,3,0,4,2,0,1,1,1,1,1,1 0,0,1,2,2,2,1,0,1,1,1,0,1,0 1,0,13,3,0,5,2,0,1,1,1,1,1,1 1,5,3,2,0,5,0,0,0,1,1,0,1,1 0,4,0,3,2,5,1,0,0,1,1,1,1,0 0,0,3,2,2,2,1,0,1,1,1,2,1,0 2,0,0,3,0,8,2,0,1,1,1,0,1,0 2,0,3,2,3,7,3,4,1,1,1,0,1,0 1,2,3,2,0,4,2,0,1,1,1,0,1,1 2,1,3,2,0,1,2,0,1,1,1,1,1,1 0,0,1,2,0,3,2,0,1,1,1,1,1,0 1,0,3,2,1,7,3,0,0,1,1,0,1,0 0,0,6,2,2,10,1,0,1,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,1 1,0,1,2,0,5,2,0,1,1,1,1,1,1 1,0,10,3,0,5,2,0,1,1,1,2,1,0 1,0,8,0,0,6,2,0,1,1,1,0,1,0 0,0,6,2,0,0,0,0,0,1,1,0,1,1 1,0,3,2,4,2,5,0,0,1,1,2,1,0 0,0,3,2,1,1,3,0,1,1,1,0,1,0 1,0,1,2,2,1,3,0,1,1,1,1,1,0 1,4,10,3,0,5,2,0,1,1,1,2,1,1 1,0,3,2,3,3,3,0,0,1,1,2,1,0 0,0,1,2,0,2,2,0,1,1,1,0,1,0 0,0,3,2,2,7,5,4,0,1,1,0,1,0 2,0,3,2,0,2,2,0,1,1,1,1,1,0 1,0,3,2,0,4,2,0,1,1,1,1,1,1 1,0,12,1,0,8,0,0,0,1,1,0,1,0 1,2,10,3,5,3,3,1,1,1,1,1,1,0 0,0,6,2,2,8,3,0,0,1,1,0,1,0 0,5,5,2,2,2,1,0,1,1,1,2,1,0 0,0,1,2,2,3,3,0,1,1,1,0,1,0 0,0,3,2,2,2,3,4,0,1,1,0,1,0 1,0,3,2,2,2,3,0,1,1,1,1,1,0 0,0,3,2,1,11,5,4,0,1,1,2,1,0 3,0,3,2,2,2,3,0,0,1,1,0,1,0 0,0,1,2,2,7,1,4,0,1,1,0,1,0 1,0,1,2,1,8,3,0,0,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,1,2,2,0,3,0,0,1,1,2,1,0 0,0,4,3,1,5,5,0,1,1,1,1,1,0 0,0,1,2,0,2,2,0,1,1,1,0,1,0 0,0,1,2,2,3,3,0,0,1,1,1,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,1 2,0,3,2,0,7,2,0,1,1,1,0,1,0 1,1,0,3,0,3,2,0,1,1,1,0,1,1 0,0,0,3,0,8,2,0,1,1,1,0,1,1 1,1,1,2,0,3,2,0,1,1,1,1,1,1 1,0,1,2,1,1,3,0,1,1,1,0,1,0 0,0,0,3,0,3,2,0,1,1,1,0,1,0 0,1,9,1,0,10,2,0,1,1,1,1,1,0 1,0,6,2,1,1,3,0,0,1,1,0,1,0 1,4,10,3,0,5,2,0,1,1,1,0,1,1 1,0,3,2,0,1,2,0,1,1,1,1,1,1 1,1,3,2,0,4,2,0,1,1,1,2,1,0 2,0,3,2,0,7,2,0,1,1,1,0,1,0 2,0,3,2,0,2,2,0,1,1,1,2,1,0 0,0,5,2,3,2,5,0,0,1,1,0,1,0 1,0,1,2,0,3,2,0,1,1,1,1,1,1 1,0,1,2,2,2,1,0,1,1,1,0,1,0 0,0,4,3,0,5,2,0,1,1,1,1,1,1 1,0,9,1,0,10,2,0,1,1,1,0,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,0 1,0,5,2,1,0,3,0,0,1,1,1,1,0 0,4,0,3,2,5,1,0,0,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 1,0,3,2,0,1,2,0,1,1,1,1,1,1 1,5,13,3,0,5,0,0,0,1,1,1,1,1 0,0,2,1,2,8,1,0,1,1,1,2,1,0 0,1,1,2,2,1,1,0,1,1,1,2,1,0 0,0,0,3,2,3,3,4,0,1,1,0,1,0 0,0,0,3,2,3,1,1,1,1,1,1,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,5,6,2,0,5,0,0,0,1,1,0,1,1 1,0,0,3,3,5,5,0,0,1,1,0,1,0 0,4,3,2,1,4,3,0,0,1,1,2,1,0 2,1,3,2,0,9,2,0,1,1,1,1,1,0 1,4,1,2,0,12,2,0,1,1,1,0,1,1 0,0,1,2,0,8,2,0,1,1,1,0,1,0 0,0,6,2,0,10,2,0,1,1,1,0,1,0 0,0,3,2,0,12,2,0,1,1,1,0,1,0 0,0,0,3,2,4,3,0,1,1,1,2,1,0 1,0,1,2,0,4,2,0,1,1,1,1,1,1 1,0,3,2,1,1,1,0,1,1,1,2,1,0 1,3,5,2,0,5,2,0,1,1,1,0,1,1 1,1,0,3,2,3,3,0,1,1,1,1,1,1 0,0,13,3,5,5,3,1,1,1,1,1,1,0 0,0,3,2,1,1,3,0,1,1,1,0,1,0 0,0,1,2,2,8,1,0,1,1,1,0,1,0 0,1,0,3,2,5,1,1,1,1,1,2,1,0 2,0,12,1,0,7,2,0,1,1,1,0,1,0 0,2,3,2,0,3,0,0,0,1,1,2,1,1 1,0,1,2,1,5,5,0,0,1,1,0,1,0 1,2,0,3,0,7,2,0,1,1,1,1,1,1 1,2,7,1,0,4,2,0,1,1,1,0,1,0 1,0,0,3,0,4,2,4,1,1,1,1,1,0 0,1,5,2,0,5,0,0,0,1,1,2,1,1 0,4,3,2,1,8,5,0,0,1,1,2,1,0 0,0,0,3,2,5,3,0,1,1,1,1,1,0 0,0,3,2,2,6,1,0,1,1,1,2,1,0 1,0,0,3,0,1,2,0,1,1,1,0,1,1 1,0,6,2,0,10,2,0,1,1,1,1,1,0 0,2,10,3,0,3,2,0,1,1,1,1,1,1 0,0,0,3,0,3,0,0,0,1,1,1,1,1 1,5,0,3,2,8,3,0,1,1,1,2,1,0 2,0,3,2,0,3,0,0,0,1,1,0,1,0 0,0,3,2,1,6,1,0,0,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,0 2,4,0,3,0,5,0,0,0,1,1,0,1,1 1,0,0,3,0,5,2,1,1,1,1,0,1,0 0,0,1,2,0,0,2,0,1,1,1,0,1,0 1,3,3,2,1,0,3,0,0,1,1,0,1,0 0,5,1,2,0,4,2,0,1,1,1,2,1,0 1,0,0,3,0,0,2,0,1,1,1,0,1,0 1,0,1,2,1,2,5,4,0,1,1,2,1,0 0,0,6,2,2,8,1,0,0,1,1,0,1,0 0,0,3,2,0,10,2,0,1,1,1,1,1,1 2,3,3,2,4,6,3,4,1,1,1,0,1,0 1,1,1,2,1,2,5,0,1,1,1,1,1,0 0,0,0,3,0,5,2,0,1,1,1,1,1,0 0,0,1,2,2,7,3,4,0,1,1,0,1,0 0,0,3,2,2,2,5,0,0,1,1,0,1,0 1,0,6,2,2,8,1,0,0,1,1,2,1,0 0,0,1,2,0,4,2,0,1,1,1,1,1,1 1,1,10,3,0,4,2,0,1,1,1,1,1,1 0,3,3,2,0,8,2,4,1,1,1,1,1,1 0,0,3,2,0,1,2,0,1,1,1,1,1,0 1,0,11,0,0,1,2,0,1,1,1,2,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 0,0,1,2,2,3,3,0,1,1,1,1,1,0 2,3,3,2,4,3,5,0,0,1,1,0,1,0 1,0,0,3,2,2,3,0,1,1,1,2,1,0 2,1,1,2,0,3,2,0,1,1,1,1,1,0 0,0,10,3,0,5,2,0,1,1,1,1,1,1 0,2,1,2,2,4,3,0,0,1,1,1,1,0 1,0,3,2,0,7,2,0,1,1,1,1,1,0 2,2,3,2,0,4,2,0,1,1,1,2,1,1 1,2,3,2,0,4,2,0,1,1,1,0,1,1 0,0,3,2,2,2,1,0,1,1,1,2,1,0 1,0,1,2,1,8,5,0,0,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,0 1,5,3,2,0,12,2,0,1,1,1,0,1,0 0,0,1,2,0,9,2,0,1,1,1,1,1,0 1,0,3,2,0,4,2,0,1,1,1,1,1,1 0,5,10,3,0,5,0,0,0,1,1,1,1,1 0,0,3,2,2,6,1,0,1,1,1,2,1,0 1,0,6,2,0,1,2,0,1,1,1,0,1,0 1,0,3,2,4,10,5,0,1,1,1,0,1,0 0,0,0,3,0,3,2,0,1,1,1,1,1,1 2,0,5,2,0,0,2,0,1,1,1,0,1,1 1,0,0,3,0,5,0,0,0,1,1,0,1,1 0,0,3,2,1,8,3,4,0,1,1,0,1,0 2,0,0,3,0,8,2,0,1,1,1,2,1,1 3,1,4,3,0,5,2,0,1,1,1,0,1,0 1,0,3,2,1,10,3,0,1,1,1,0,1,0 1,0,3,2,1,8,3,0,0,1,1,1,1,0 1,0,2,1,1,2,3,4,0,1,1,0,1,0 0,0,10,3,0,9,3,0,1,1,1,1,1,1 0,0,6,2,2,2,3,0,1,1,1,2,1,0 1,0,3,2,0,2,2,0,1,1,1,0,1,0 0,0,6,2,2,8,1,0,0,1,1,2,1,0 1,5,3,2,0,5,2,0,1,1,1,1,1,1 1,0,3,2,2,8,5,0,0,1,1,0,1,0 0,4,2,1,2,2,3,1,1,1,1,1,1,0 1,0,0,3,1,4,3,0,0,1,1,1,1,1 1,0,0,3,0,5,2,0,1,1,1,0,1,0 0,0,3,2,0,8,2,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 2,3,1,2,2,4,1,4,0,1,1,0,1,0 2,0,3,2,0,1,2,0,1,1,1,2,1,0 0,5,0,3,2,8,3,0,0,1,1,1,1,0 0,4,0,3,2,5,1,0,1,1,1,2,1,0 1,0,6,2,1,2,3,0,1,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,1 1,0,3,2,0,10,2,0,1,1,1,1,1,0 0,0,0,3,0,0,2,0,1,1,1,0,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 1,4,0,3,1,5,3,4,0,1,1,0,1,0 1,4,5,2,0,5,2,0,1,1,1,1,1,0 2,0,10,3,0,5,2,0,1,1,1,1,1,0 0,0,3,2,2,7,1,0,0,1,1,0,1,0 1,3,3,2,0,8,2,4,1,1,1,1,1,1 0,4,0,3,0,5,2,0,1,1,1,1,1,1 1,0,0,3,1,1,3,0,1,1,1,2,1,0 1,0,0,3,2,2,3,0,1,1,1,0,1,1 0,0,1,2,0,1,2,4,1,1,1,0,1,0 2,2,10,3,0,3,2,0,1,1,1,0,1,1 2,4,3,2,0,12,2,0,1,1,1,0,1,0 1,0,0,3,0,3,2,0,1,1,1,1,1,1 1,0,3,2,0,7,2,0,1,1,1,1,1,0 1,2,1,2,0,3,2,0,1,1,1,1,1,1 1,0,1,2,3,8,1,0,1,1,1,1,1,0 0,0,1,2,1,1,5,0,0,1,1,2,1,0 2,0,13,3,0,5,2,0,1,1,1,1,1,1 0,0,1,2,2,2,1,0,1,1,1,2,1,0 1,1,1,2,0,1,2,2,1,1,1,0,1,1 0,0,0,3,1,4,3,0,1,1,1,1,1,0 1,0,4,3,0,5,2,0,1,1,1,0,1,1 1,1,3,2,0,1,2,0,1,1,1,0,1,1 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,0 2,0,3,2,4,8,1,0,0,1,1,0,1,0 0,0,3,2,2,8,3,0,0,1,1,0,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,1 1,1,1,2,0,9,2,0,1,1,1,1,1,0 1,0,3,2,1,8,5,0,0,1,1,0,1,0 3,1,4,3,0,5,2,0,1,1,1,2,1,0 1,0,0,3,0,5,2,0,1,1,1,0,1,1 1,3,3,2,1,8,5,0,0,1,1,0,1,0 0,0,0,3,2,8,3,0,0,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,0 0,0,2,1,3,2,3,4,0,1,1,1,1,0 0,0,1,2,2,3,3,0,0,1,1,2,1,0 0,0,3,2,2,3,3,0,0,1,1,2,1,0 1,1,3,2,0,3,4,0,0,1,1,0,1,0 0,0,3,2,2,2,1,0,0,1,1,2,1,0 1,0,1,2,2,8,1,0,0,1,1,0,1,0 0,0,10,3,2,5,3,0,1,1,1,1,1,1 2,0,3,2,3,8,3,0,0,1,1,2,1,0 1,5,3,2,4,4,3,0,0,1,1,0,1,0 2,1,3,2,0,4,2,0,1,1,1,1,1,1 1,4,1,2,2,2,3,0,1,1,1,2,1,0 2,0,1,2,4,2,3,0,0,1,1,2,1,0 2,2,4,3,0,5,2,0,1,1,1,1,1,1 1,0,3,2,1,8,3,0,1,1,1,0,1,0 0,0,3,2,0,8,0,0,0,1,1,0,1,0 0,0,3,2,2,6,1,0,0,1,1,0,1,0 1,2,10,3,0,4,2,0,1,1,1,1,1,1 1,1,1,2,0,4,2,0,1,1,1,1,1,0 1,3,3,2,1,8,3,0,0,1,1,1,1,0 0,1,1,2,2,10,3,0,1,1,1,0,1,0 0,0,3,2,0,1,2,1,1,1,1,0,1,0 1,0,0,3,2,8,3,0,0,1,1,1,1,0 2,0,3,2,0,3,2,0,1,1,1,1,1,1 1,3,0,3,0,5,2,0,1,1,1,0,1,1 1,5,1,2,3,8,3,0,1,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,1 3,0,3,2,4,2,3,0,0,1,1,2,1,0 0,2,1,2,2,1,1,0,1,1,1,2,1,0 0,0,3,2,2,3,3,0,0,1,1,1,1,0 1,0,0,3,0,5,2,0,1,1,1,0,1,1 1,1,1,2,0,1,2,0,1,1,1,2,1,0 1,0,1,2,0,8,2,0,1,1,1,2,1,0 1,4,0,3,1,12,3,0,1,1,1,0,1,0 1,0,0,3,2,4,5,4,0,1,1,1,1,0 0,0,1,2,0,2,2,0,1,1,1,0,1,0 0,0,5,2,2,2,3,0,0,1,1,1,1,0 0,0,3,2,2,0,3,4,0,1,1,0,1,0 0,0,1,2,2,2,5,0,0,1,1,0,1,0 1,4,0,3,0,8,2,0,1,1,1,0,1,1 1,0,0,3,0,3,2,0,1,1,1,0,1,1 2,0,0,3,0,12,2,0,1,1,1,2,1,1 1,0,3,2,0,10,2,0,1,1,1,2,1,0 1,0,3,2,0,3,2,0,1,1,1,0,1,0 1,0,3,2,2,3,3,0,1,1,1,1,1,0 1,3,5,2,1,5,5,1,0,1,1,0,1,1 0,0,1,2,2,9,1,4,1,1,1,2,1,0 1,0,3,2,0,8,0,0,0,1,1,0,1,1 1,0,1,2,0,10,2,0,1,1,1,0,1,0 1,1,0,3,0,3,2,0,1,1,1,1,1,1 2,0,12,1,0,2,2,0,1,1,1,0,1,0 1,0,0,3,2,4,3,0,1,1,1,1,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 2,1,11,0,4,2,5,0,0,1,1,2,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,0 1,0,10,3,0,5,2,4,1,1,1,2,1,0 1,0,3,2,0,6,2,0,1,1,1,0,1,0 0,0,14,0,0,1,2,0,1,1,1,1,1,0 0,0,1,2,2,2,3,0,1,1,1,1,1,0 1,0,5,2,0,0,2,0,1,1,1,0,1,0 1,4,1,2,2,2,1,4,1,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,3,1,2,2,13,3,4,1,1,1,1,1,0 0,0,3,2,2,2,5,4,0,1,1,0,1,0 2,2,1,2,0,10,0,0,0,1,1,0,1,1 1,1,4,3,0,5,2,0,1,1,1,1,1,0 0,0,6,2,0,4,2,0,1,1,1,1,1,0 1,0,0,3,0,7,2,0,1,1,1,1,1,1 0,0,6,2,2,7,3,0,1,1,1,0,1,0 0,0,14,0,2,8,1,0,0,1,1,0,1,0 1,0,3,2,0,3,2,0,1,1,1,1,1,0 1,0,3,2,0,1,0,0,0,1,1,0,1,1 1,3,0,3,0,4,2,0,1,1,1,0,1,0 0,0,0,3,2,5,3,0,0,1,1,0,1,0 1,0,3,2,1,8,5,0,0,1,1,0,1,0 0,0,1,2,0,6,2,0,1,1,1,1,1,1 0,0,3,2,2,7,1,0,0,1,1,0,1,0 0,0,13,3,0,5,2,0,1,1,1,0,1,1 1,5,0,3,0,5,2,0,1,1,1,0,1,1 1,0,0,3,0,1,2,0,1,1,1,1,1,1 2,4,3,2,4,8,5,0,0,1,1,2,1,0 0,0,1,2,2,8,1,0,1,1,1,2,1,0 0,0,3,2,2,3,3,0,1,1,1,1,1,1 2,0,1,2,0,10,2,0,1,1,1,2,1,1 1,0,3,2,0,8,2,0,1,1,1,0,1,1 1,0,3,2,4,2,5,1,0,1,1,0,1,1 0,0,3,2,2,3,1,4,0,1,1,2,1,0 0,0,2,1,2,2,5,4,0,1,1,0,1,0 0,0,3,2,2,7,4,0,1,1,1,0,1,0 0,0,1,2,2,7,3,0,0,1,1,0,1,0 0,0,3,2,2,7,3,4,1,1,1,2,1,0 2,0,4,3,0,5,2,0,1,1,1,1,1,0 1,0,6,2,0,5,2,0,1,1,1,0,1,1 0,0,1,2,2,5,3,0,0,1,1,2,1,0 1,0,0,3,2,5,3,0,1,1,1,0,1,0 1,0,3,2,0,4,2,0,1,1,1,0,1,1 2,0,0,3,1,0,1,0,0,1,1,2,1,0 1,5,1,2,0,4,2,0,1,1,1,0,1,0 0,5,4,3,2,5,5,0,1,1,1,0,1,0 2,0,10,3,5,5,3,0,0,1,1,0,1,0 1,0,1,2,1,8,3,0,1,1,1,0,1,0 2,5,3,2,2,8,1,0,1,1,1,0,1,0 0,0,3,2,2,3,3,3,1,1,1,0,1,0 0,0,0,3,2,8,1,0,0,1,1,0,1,0 2,2,0,3,0,4,2,0,1,1,1,1,1,1 0,0,1,2,2,5,3,0,1,1,1,1,1,1 0,2,0,3,0,1,2,0,1,1,1,1,1,1 1,0,3,2,3,3,1,0,0,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,0 2,0,14,0,1,7,3,4,1,1,1,0,1,0 2,1,3,2,0,9,2,0,1,1,1,1,1,1 1,0,12,1,2,1,4,4,1,1,1,1,1,0 0,0,0,3,2,0,3,0,1,1,1,2,1,0 1,0,3,2,2,3,3,0,1,1,1,1,1,0 0,0,1,2,2,7,1,0,1,1,1,0,1,0 0,0,3,2,2,1,3,0,1,1,1,1,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 0,0,3,2,2,2,3,0,0,1,1,2,1,0 1,0,1,2,1,3,5,0,0,1,1,0,1,0 0,3,6,2,2,4,3,0,0,1,1,0,1,0 1,2,3,2,1,4,5,0,0,1,1,0,1,0 1,0,3,2,0,7,0,4,0,1,1,0,1,0 1,3,1,2,4,8,3,4,0,1,1,0,1,0 1,0,3,2,0,4,2,1,1,1,1,0,1,1 0,0,12,1,2,6,1,0,1,1,1,0,1,0 0,0,5,2,2,2,1,4,1,1,1,0,1,0 1,0,10,3,2,2,3,0,0,1,1,2,1,0 1,2,0,3,0,3,2,0,1,1,1,1,1,0 1,4,6,2,2,8,3,0,0,1,1,2,1,0 1,0,3,2,1,3,5,4,0,1,1,0,1,0 1,1,3,2,0,10,2,0,1,1,1,1,1,0 2,0,3,2,0,9,2,0,1,1,1,0,1,0 2,0,10,3,0,3,2,0,1,1,1,0,1,1 0,0,0,3,1,4,5,0,0,1,1,0,1,0 0,0,1,2,3,8,1,0,1,1,1,0,1,0 0,0,0,3,2,3,3,0,1,1,1,1,1,0 0,4,0,3,2,5,3,0,1,1,1,1,1,0 0,0,1,2,2,6,1,0,1,1,1,1,1,0 1,1,3,2,0,4,2,0,1,1,1,1,1,0 1,0,1,2,2,7,1,0,1,1,1,1,1,0 1,0,3,2,2,3,3,4,1,1,1,1,1,0 1,1,1,2,1,4,4,0,1,1,1,1,1,1 0,0,2,1,2,2,1,0,1,1,1,2,1,0 0,0,0,3,2,0,3,0,0,1,1,0,1,0 2,0,3,2,1,3,5,0,0,1,1,2,1,0 0,3,3,2,2,8,5,4,0,1,1,0,1,0 1,0,12,1,2,7,3,4,1,1,1,0,1,0 1,0,12,1,2,10,5,0,1,1,1,0,1,1 2,0,3,2,0,10,2,4,1,1,1,0,1,0 2,1,10,3,0,3,2,0,1,1,1,1,1,0 1,0,12,1,0,6,2,0,1,1,1,1,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,1 1,0,3,2,2,8,3,0,0,1,1,0,1,0 2,0,5,2,0,0,2,0,1,1,1,2,1,0 1,0,3,2,1,8,3,0,0,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,1,1,0 0,0,3,2,0,2,2,0,1,1,1,1,1,1 0,0,2,1,1,3,1,0,1,1,1,0,1,0 1,4,5,2,0,1,0,0,0,1,1,1,1,1 1,0,3,2,1,10,3,0,1,1,1,1,1,0 0,0,3,2,0,10,2,0,1,1,1,0,1,0 1,0,3,2,4,2,5,0,0,1,1,0,1,0 1,2,3,2,0,2,2,1,1,1,1,1,1,0 1,0,0,3,0,5,2,0,1,1,1,0,1,1 1,0,1,2,0,4,2,0,1,1,1,1,1,1 1,1,12,1,0,4,2,0,1,1,1,1,1,0 0,5,1,2,0,8,2,1,1,1,1,2,1,0 0,0,3,2,2,2,3,0,1,1,1,1,1,0 0,0,0,3,0,3,2,4,1,1,1,1,1,1 0,0,0,3,0,5,0,0,0,1,1,0,1,1 1,0,1,2,2,8,3,0,0,1,1,0,1,0 1,0,6,2,0,6,2,4,1,1,1,0,1,0 1,0,5,2,2,8,1,0,0,1,1,1,1,0 1,0,2,1,1,2,3,0,1,1,1,0,1,0 1,3,3,2,0,8,2,4,1,1,1,0,1,0 1,0,2,1,1,7,5,2,1,1,1,1,1,0 1,2,0,3,0,9,2,0,1,1,1,2,1,1 1,0,7,1,0,2,0,4,0,1,1,2,1,0 0,0,3,2,2,7,3,0,1,1,1,0,1,0 2,0,3,2,0,10,2,0,1,1,1,0,1,1 1,0,6,2,0,7,0,0,0,1,1,0,1,0 2,0,3,2,1,4,3,0,0,1,1,0,1,0 0,0,6,2,1,3,3,0,1,1,1,1,1,1 0,5,1,2,2,12,3,4,1,1,1,0,1,0 2,2,12,1,0,10,0,0,0,1,1,0,1,0 0,0,0,3,2,2,3,0,1,1,1,1,1,0 1,3,5,2,0,8,0,0,0,1,1,0,1,1 1,1,10,3,1,5,5,0,0,1,1,2,1,0 1,0,3,2,0,3,2,0,1,1,1,0,1,1 1,2,3,2,0,1,2,0,1,1,1,1,1,0 1,0,3,2,0,4,2,0,1,1,1,1,1,1 1,0,6,2,1,1,3,0,1,1,1,0,1,0 2,1,3,2,0,2,2,0,1,1,1,1,1,1 1,0,6,2,0,10,2,0,1,1,1,1,1,0 1,1,1,2,0,3,2,0,1,1,1,0,1,0 1,1,3,2,0,4,2,0,1,1,1,1,1,0 1,0,1,2,0,4,2,0,1,1,1,1,1,1 1,2,1,2,0,4,2,0,1,1,1,1,1,1 0,0,3,2,1,1,3,0,1,1,1,1,1,0 2,0,2,1,4,10,5,4,1,1,1,0,1,0 1,2,10,3,0,4,2,0,1,1,1,1,1,1 1,0,3,2,0,1,2,4,1,1,1,1,1,1 2,0,3,2,4,8,5,4,0,1,1,2,1,0 0,0,3,2,1,1,3,0,1,1,1,1,1,0 0,0,1,2,2,10,3,0,1,1,1,0,1,0 1,2,4,3,0,5,2,0,1,1,1,1,1,1 1,2,3,2,0,4,2,0,1,1,1,0,1,1 1,0,12,1,2,7,3,4,1,1,1,0,1,0 0,0,1,2,2,1,3,0,1,1,1,0,1,1 1,0,3,2,0,10,2,0,1,1,1,0,1,1 1,0,12,1,1,1,3,2,1,1,1,0,1,0 2,3,3,2,0,8,2,4,1,1,1,0,1,0 0,0,1,2,0,1,2,0,1,1,1,1,1,0 1,0,10,3,1,4,3,0,0,1,1,1,1,0 0,0,6,2,2,12,3,0,1,1,1,1,1,0 1,0,5,2,0,5,2,0,1,1,1,2,1,1 2,0,4,3,0,10,2,0,1,1,1,2,1,1 0,0,0,3,2,5,1,1,1,1,1,0,1,0 0,4,0,3,2,5,3,0,0,1,1,0,1,0 2,5,10,3,0,5,2,0,1,1,1,2,1,0 0,0,1,2,2,6,1,0,0,1,1,2,1,0 1,0,3,2,0,8,2,0,1,1,1,2,1,0 1,0,3,2,1,2,5,0,0,1,1,1,1,0 0,0,6,2,2,8,1,0,0,1,1,0,1,0 0,0,2,1,2,8,1,1,0,1,1,2,1,0 0,1,1,2,2,2,3,0,1,1,1,2,1,0 1,1,3,2,5,1,3,0,1,1,1,0,1,0 2,0,6,2,0,1,2,0,1,1,1,0,1,1 1,2,3,2,0,3,2,0,1,1,1,0,1,1 0,0,3,2,2,1,3,0,1,1,1,2,1,0 1,4,0,3,0,5,2,4,1,1,1,0,1,1 0,0,12,1,0,9,2,0,1,1,1,0,1,0 0,0,3,2,2,8,5,0,1,1,1,1,1,0 0,0,3,2,2,2,1,0,0,1,1,2,1,0 2,3,3,2,1,8,5,0,0,1,1,0,1,0 1,0,10,3,1,4,5,0,1,1,1,1,1,1 0,0,1,2,0,3,2,0,1,1,1,1,1,0 0,0,3,2,1,4,3,0,0,1,1,1,1,0 1,0,3,2,0,8,2,0,1,1,1,0,1,1 1,5,3,2,0,8,2,0,1,1,1,2,1,1 0,0,3,2,2,6,4,2,1,1,1,0,1,0 0,2,2,1,0,1,2,0,1,1,1,1,1,1 0,0,2,1,1,3,3,0,1,1,1,1,1,1 0,0,0,3,1,3,3,0,0,1,1,1,1,0 1,1,1,2,0,4,2,0,1,1,1,1,1,1 0,0,1,2,2,8,3,0,1,1,1,0,1,0 1,2,0,3,0,4,2,0,1,1,1,1,1,1 1,0,1,2,1,7,3,0,1,1,1,1,1,0 0,0,1,2,2,2,3,0,1,1,1,1,1,0 2,2,0,3,0,4,2,0,1,1,1,1,1,1 0,0,5,2,0,1,2,0,1,1,1,1,1,0 2,5,3,2,0,4,2,0,1,1,1,0,1,0 1,0,3,2,0,3,2,0,1,1,1,1,1,0 0,0,1,2,2,8,3,4,0,1,1,2,1,0 1,5,1,2,0,8,2,4,1,1,1,0,1,0 0,0,1,2,5,5,5,4,1,1,1,0,1,0 0,1,6,2,0,5,2,0,1,1,1,1,1,1 1,2,0,3,0,5,2,0,1,1,1,2,1,1 2,1,6,2,0,5,2,0,1,1,1,1,1,0 2,2,0,3,0,4,2,0,1,1,1,0,1,1 1,0,0,3,1,2,3,1,1,1,1,0,1,0 1,0,3,2,0,8,2,0,1,1,1,1,1,1 2,0,0,3,0,8,0,0,0,1,1,2,1,0 0,0,0,3,2,4,1,0,1,1,1,0,1,0 0,4,7,1,2,2,1,4,1,1,1,2,1,0 1,4,0,3,0,12,2,0,1,1,1,0,1,0 1,5,7,1,1,2,3,0,0,1,1,0,1,0 0,0,1,2,1,4,5,0,0,1,1,0,1,0 0,0,1,2,2,9,1,0,0,1,1,0,1,0 0,4,0,3,2,5,3,0,1,1,1,1,1,0 0,0,1,2,2,6,3,4,1,1,1,2,1,0 0,0,3,2,1,2,5,0,1,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,3,2,1,4,5,0,0,1,1,2,1,0 1,0,3,2,0,1,2,4,1,1,1,0,1,0 1,0,12,1,0,7,2,0,1,1,1,0,1,1 1,0,10,3,1,4,5,0,0,1,1,0,1,1 1,0,12,1,0,10,2,4,1,1,1,1,1,1 1,0,1,2,1,2,3,0,0,1,1,0,1,0 0,0,5,2,2,5,3,0,0,1,1,0,1,0 0,0,1,2,0,4,2,0,1,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,12,1,0,7,0,0,0,1,1,0,1,0 0,0,3,2,3,2,3,4,1,1,1,0,1,0 0,5,3,2,1,8,1,0,0,1,1,2,1,0 2,0,4,3,0,5,2,0,1,1,1,1,1,0 1,4,3,2,3,12,3,0,1,1,1,0,1,0 2,4,1,2,0,1,2,0,1,1,1,0,1,0 0,0,0,3,0,1,2,0,1,1,1,0,1,0 0,0,12,1,2,3,1,0,1,1,1,2,1,0 1,0,0,3,0,8,2,0,1,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,1,1,1 0,0,12,1,2,7,5,0,0,1,1,0,1,0 0,0,3,2,2,8,1,0,0,1,1,0,1,0 0,0,12,1,2,6,1,0,1,1,1,2,1,0 2,0,8,0,1,7,3,0,0,1,1,0,1,0 0,0,1,2,2,8,3,0,0,1,1,0,1,0 1,0,9,1,1,10,5,4,1,1,1,0,1,0 0,0,0,3,2,8,3,0,1,1,1,2,1,0 0,0,3,2,2,10,3,0,1,1,1,1,1,0 0,0,1,2,2,2,4,4,0,1,1,2,1,0 0,0,9,1,2,6,1,0,1,1,1,2,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,0 1,0,8,0,0,12,2,0,1,1,1,0,1,0 1,3,3,2,3,2,4,4,0,1,1,0,1,0 1,0,1,2,2,2,3,4,0,1,1,2,1,0 0,0,1,2,0,9,2,0,1,1,1,0,1,0 0,0,2,1,2,2,3,4,1,1,1,0,1,0 1,4,0,3,0,1,2,0,1,1,1,0,1,0 1,0,5,2,0,1,2,0,1,1,1,0,1,1 0,0,1,2,2,2,1,0,1,1,1,2,1,0 0,0,1,2,2,6,1,0,1,1,1,0,1,0 1,0,6,2,0,8,2,0,1,1,1,0,1,0 1,1,3,2,2,9,3,0,1,1,1,1,1,0 0,5,1,2,2,0,3,0,1,1,1,1,1,0 0,4,0,3,2,5,3,0,1,1,1,1,1,0 0,0,3,2,0,3,2,0,1,1,1,1,1,1 0,0,0,3,0,3,2,0,1,1,1,1,1,0 1,0,3,2,1,8,3,0,1,1,1,0,1,1 1,1,3,2,0,9,2,0,1,1,1,1,1,0 1,0,1,2,0,1,2,0,1,1,1,1,1,1 1,0,1,2,1,4,5,0,1,1,1,1,1,0 0,1,3,2,1,1,1,0,1,1,1,0,1,0 0,0,3,2,2,4,1,0,0,1,1,2,1,0 0,0,0,3,2,8,3,0,0,1,1,0,1,0 2,0,1,2,0,12,2,0,1,1,1,2,1,0 0,4,0,3,0,5,2,0,1,1,1,0,1,0 1,1,0,3,0,2,2,0,1,1,1,2,1,0 0,0,3,2,2,5,3,0,1,1,1,1,1,1 0,4,3,2,0,8,0,0,0,1,1,1,1,0 1,0,0,3,2,3,3,4,0,1,1,0,1,0 0,0,2,1,2,7,1,0,1,1,1,1,1,0 0,0,0,3,2,3,3,0,1,1,1,1,1,0 0,0,2,1,0,1,2,0,1,1,1,1,1,0 2,5,3,2,1,4,3,0,0,1,1,1,1,0 0,5,1,2,2,5,1,0,0,1,1,2,1,0 2,0,3,2,0,7,2,4,1,1,1,0,1,1 1,5,3,2,0,0,2,0,1,1,1,0,1,0 2,0,3,2,0,8,2,0,1,1,1,2,1,0 1,0,3,2,3,1,1,0,1,1,1,0,1,0 1,0,12,1,0,1,2,0,1,1,1,0,1,0 1,0,1,2,1,2,5,1,1,1,1,0,1,0 2,1,9,1,1,3,3,0,0,1,1,1,1,0 1,0,5,2,0,5,0,0,0,1,1,2,1,1 1,0,10,3,0,5,2,0,1,1,1,2,1,1 2,0,3,2,0,7,2,0,1,1,1,0,1,1 0,0,0,3,2,8,1,0,1,1,1,2,1,0 2,0,3,2,0,5,2,0,1,1,1,0,1,1 1,0,4,3,0,5,2,0,1,1,1,1,1,1 0,0,1,2,0,4,0,0,0,1,1,2,1,0 0,0,2,1,2,1,4,0,1,1,1,0,1,0 1,4,3,2,0,10,2,0,1,1,1,0,1,0 1,1,1,2,0,3,2,0,1,1,1,1,1,1 1,1,3,2,0,4,2,0,1,1,1,1,1,1 1,0,3,2,2,2,1,1,0,1,1,0,1,0 1,0,1,2,0,4,2,0,1,1,1,0,1,0 0,0,3,2,2,2,3,3,0,1,1,2,1,0 2,1,4,3,0,5,2,0,1,1,1,2,1,1 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,0,3,0,3,0,0,0,1,1,1,1,1 1,0,3,2,0,7,0,0,0,1,1,0,1,0 1,0,2,1,0,2,2,0,1,1,1,1,1,0 2,4,3,2,1,2,3,0,0,1,1,2,1,0 1,5,5,2,0,8,2,0,1,1,1,0,1,1 0,0,14,0,2,9,3,0,1,1,1,2,1,0 1,0,11,0,0,7,2,0,1,1,1,0,1,0 2,0,1,2,0,4,2,0,1,1,1,1,1,1 0,0,12,1,1,2,3,0,0,1,1,0,1,0 0,0,3,2,2,3,3,0,0,1,1,1,1,0 0,2,0,3,0,5,2,0,1,1,1,1,1,1 2,0,3,2,0,7,2,0,1,1,1,1,1,1 1,0,3,2,1,2,4,4,0,1,1,2,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,1 1,0,10,3,0,5,2,0,1,1,1,0,1,1 2,5,10,3,0,5,2,0,1,1,1,2,1,1 2,1,4,3,0,5,0,0,0,1,1,2,1,0 2,2,3,2,0,8,0,0,0,1,1,2,1,1 0,0,1,2,0,7,2,4,1,1,1,0,1,0 0,0,3,2,0,3,2,0,1,1,1,0,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,1 2,0,12,1,1,8,3,4,0,1,1,0,1,0 0,0,1,2,2,6,1,0,1,1,1,2,1,0 1,1,7,1,0,1,2,0,1,1,1,2,1,0 0,1,3,2,2,3,1,0,1,1,1,0,1,0 0,4,3,2,0,12,2,0,1,1,1,0,1,0 1,0,3,2,0,1,2,4,1,1,1,0,1,1 1,0,0,3,0,5,2,0,1,1,1,1,1,1 1,0,3,2,0,1,2,0,1,1,1,1,1,0 0,0,1,2,2,3,1,0,1,1,1,2,1,0 2,1,12,1,0,1,2,0,1,1,1,2,1,0 1,4,3,2,0,1,2,0,1,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,0,1,1 1,0,0,3,2,5,3,0,1,1,1,0,1,0 2,0,8,0,0,12,2,0,1,1,1,0,1,0 1,0,3,2,0,6,2,4,1,1,1,0,1,0 1,2,1,2,0,3,2,0,1,1,1,1,1,1 0,0,2,1,2,3,3,0,1,1,1,1,1,0 1,0,3,2,0,8,2,0,1,1,1,0,1,0 1,0,4,3,0,5,2,0,1,1,1,1,1,1 1,0,5,2,0,3,2,0,1,1,1,0,1,1 1,0,1,2,2,4,5,0,1,1,1,1,1,0 1,0,8,0,0,1,2,0,1,1,1,0,1,0 0,0,1,2,2,3,1,0,1,1,1,2,1,0 1,0,5,2,0,8,0,0,0,1,1,0,1,1 1,0,10,3,1,4,5,0,1,1,1,1,1,0 0,0,1,2,2,1,3,0,1,1,1,0,1,0 0,3,1,2,0,1,2,0,1,1,1,1,1,0 0,0,3,2,0,10,2,0,1,1,1,0,1,0 1,0,3,2,1,2,5,0,0,1,1,2,1,0 0,0,3,2,0,7,2,0,1,1,1,1,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,3,2,0,7,0,0,0,1,1,0,1,0 0,1,3,2,2,10,1,0,1,1,1,1,1,0 1,0,3,2,0,4,2,0,1,1,1,1,1,1 1,0,3,2,2,2,3,4,0,1,1,1,1,0 1,0,3,2,0,4,2,0,1,1,1,1,1,1 1,0,7,1,1,2,3,0,0,1,1,2,1,0 1,0,13,3,0,5,2,0,1,1,1,0,1,1 0,0,3,2,2,2,3,0,0,1,1,0,1,0 0,0,2,1,2,8,1,0,0,1,1,2,1,0 0,0,3,2,2,3,1,0,1,1,1,1,1,0 1,5,3,2,0,4,0,0,0,1,1,0,1,1 1,0,1,2,0,3,2,0,1,1,1,1,1,0 1,0,3,2,0,7,2,4,1,1,1,0,1,1 1,0,3,2,0,4,0,0,0,1,1,1,1,0 0,0,1,2,0,6,2,0,1,1,1,0,1,0 1,0,3,2,1,1,3,0,1,1,1,1,1,0 2,0,10,3,0,5,2,0,1,1,1,1,1,0 1,0,1,2,1,8,5,4,0,1,1,2,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 0,0,1,2,0,6,2,0,1,1,1,0,1,0 0,0,3,2,1,1,3,0,0,1,1,1,1,0 0,0,3,2,2,7,3,0,1,1,1,0,1,0 2,0,3,2,0,1,2,0,1,1,1,1,1,1 0,0,0,3,2,7,3,1,1,1,1,1,1,0 1,0,10,3,0,4,2,0,1,1,1,0,1,1 3,0,3,2,4,3,4,0,0,1,1,2,1,0 1,0,9,1,0,7,2,0,1,1,1,2,1,0 1,0,0,3,0,3,2,0,1,1,1,0,1,1 0,0,3,2,0,7,2,4,1,1,1,0,1,0 1,0,1,2,1,8,5,2,0,1,1,0,1,0 1,0,0,3,1,8,3,0,0,1,1,0,1,0 1,0,10,3,0,5,2,1,1,1,1,1,1,1 0,0,0,3,0,3,2,0,1,1,1,1,1,1 1,0,3,2,0,10,2,0,1,1,1,1,1,0 0,0,3,2,1,8,3,0,0,1,1,0,1,0 1,4,3,2,0,12,2,0,1,1,1,1,1,0 1,0,0,3,1,3,3,0,1,1,1,1,1,1 1,4,1,2,0,4,2,0,1,1,1,1,1,1 0,0,3,2,2,2,3,0,0,1,1,2,1,0 1,0,1,2,1,1,3,0,1,1,1,0,1,0 2,0,3,2,0,1,2,0,1,1,1,0,1,1 0,0,3,2,1,3,3,0,1,1,1,1,1,0 1,0,10,3,0,5,0,0,0,1,1,1,1,1 0,0,6,2,0,2,2,0,1,1,1,1,1,0 0,0,10,3,2,4,1,0,1,1,1,1,1,0 1,0,1,2,2,4,3,4,1,1,1,0,1,0 0,0,3,2,2,3,3,4,1,1,1,0,1,0 0,0,0,3,2,2,3,0,1,1,1,2,1,0 0,0,6,2,2,3,3,0,1,1,1,1,1,0 2,1,0,3,0,4,2,0,1,1,1,2,1,1 0,0,0,3,2,1,4,0,1,1,1,0,1,0 0,0,3,2,2,2,3,0,0,1,1,2,1,0 2,4,3,2,0,10,2,0,1,1,1,1,1,0 0,0,0,3,0,8,2,0,1,1,1,0,1,1 1,0,2,1,0,2,0,0,0,1,1,2,1,0 1,0,8,0,1,1,3,0,0,1,1,2,1,0 1,0,0,3,2,8,1,0,0,1,1,0,1,0 1,1,1,2,0,1,2,0,1,1,1,1,1,0 1,0,1,2,4,4,3,0,0,1,1,1,1,0 0,0,0,3,2,5,1,0,1,1,1,0,1,0 0,0,3,2,2,8,3,0,0,1,1,0,1,0 0,0,3,2,2,2,3,0,0,1,1,2,1,0 1,0,2,1,4,8,5,0,0,1,1,0,1,0 1,0,3,2,2,7,3,0,0,1,1,0,1,0 1,0,3,2,1,10,3,0,1,1,1,1,1,0 1,0,3,2,1,8,5,0,0,1,1,0,1,0 2,0,12,1,1,7,3,0,0,1,1,0,1,0 1,1,3,2,0,4,2,4,1,1,1,1,1,1 0,0,0,3,0,4,1,0,0,1,1,0,1,0 1,1,0,3,1,4,3,1,1,1,1,1,1,0 1,1,3,2,2,9,3,0,1,1,1,1,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 1,0,1,2,0,5,0,0,0,1,1,1,1,1 1,0,0,3,1,8,5,0,0,1,1,0,1,0 0,0,12,1,2,7,1,4,1,1,1,1,1,0 1,0,10,3,1,4,3,0,0,1,1,1,1,1 1,0,0,3,0,5,0,0,0,1,1,2,1,1 0,0,3,2,2,6,4,4,1,1,1,0,1,0 0,0,2,1,0,7,2,0,1,1,1,0,1,0 2,0,3,2,0,12,2,0,1,1,1,2,1,0 0,0,1,2,0,0,2,0,1,1,1,0,1,1 0,0,3,2,5,12,3,0,1,1,1,0,1,0 1,0,1,2,0,4,2,0,1,1,1,1,1,1 1,0,6,2,0,1,2,0,1,1,1,1,1,1 1,0,3,2,0,2,0,4,0,1,1,0,1,1 0,0,12,1,0,7,2,0,1,1,1,0,1,0 0,0,2,1,0,7,2,0,1,1,1,0,1,0 2,4,3,2,4,9,5,0,1,1,1,0,1,0 1,0,1,2,0,3,2,0,1,1,1,0,1,1 1,0,0,3,0,3,2,0,1,1,1,0,1,1 1,0,3,2,0,4,2,0,1,1,1,0,1,0 0,0,12,1,2,2,1,0,1,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,5,2,2,8,3,0,1,1,1,2,1,0 1,4,0,3,5,5,3,0,0,1,1,1,1,1 0,4,10,3,0,5,0,0,0,1,1,2,1,1 1,0,10,3,0,4,2,1,1,1,1,0,1,1 1,0,5,2,1,8,5,0,0,1,1,0,1,0 2,0,14,0,5,6,5,0,0,1,1,0,1,0 0,3,7,1,0,0,2,0,1,1,1,0,1,0 1,0,5,2,1,1,3,0,1,1,1,0,1,0 1,0,7,1,2,2,5,0,0,1,1,1,1,0 1,0,10,3,2,8,3,1,0,1,1,0,1,0 0,0,1,2,0,7,2,4,1,1,1,0,1,0 0,0,3,2,0,3,2,0,1,1,1,0,1,1 0,0,0,3,2,8,3,0,1,1,1,0,1,0 0,0,5,2,0,6,2,4,1,1,1,0,1,0 1,3,3,2,0,8,2,0,1,1,1,0,1,1 2,0,8,0,1,3,3,0,0,1,1,0,1,0 0,0,0,3,0,8,2,0,1,1,1,0,1,0 1,0,1,2,4,8,5,4,0,1,1,0,1,0 1,0,3,2,1,2,3,0,0,1,1,2,1,0 1,2,4,3,0,5,2,1,1,1,1,0,1,1 1,0,3,2,2,4,3,0,1,1,1,0,1,0 1,5,10,3,2,5,3,0,1,1,1,2,1,0 2,0,2,1,0,7,2,0,1,1,1,0,1,0 0,0,3,2,0,3,2,0,1,1,1,1,1,0 3,4,8,0,0,12,2,0,1,1,1,2,1,0 1,2,3,2,1,4,5,0,1,1,1,2,1,0 2,0,3,2,0,4,2,0,1,1,1,1,1,0 0,0,6,2,0,4,2,0,1,1,1,1,1,1 1,0,0,3,0,10,2,0,1,1,1,1,1,1 0,0,2,1,4,3,1,4,0,1,1,2,1,0 1,0,3,2,0,3,2,0,1,1,1,0,1,1 0,0,3,2,2,6,1,4,1,1,1,0,1,0 1,4,3,2,0,1,2,0,1,1,1,0,1,0 1,0,3,2,1,1,5,0,0,1,1,0,1,0 1,5,0,3,0,8,2,0,1,1,1,1,1,1 0,0,8,0,0,6,2,0,1,1,1,0,1,0 0,0,8,0,2,1,3,0,1,1,1,0,1,0 0,0,1,2,2,3,1,0,1,1,1,2,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,1 1,0,0,3,1,4,5,0,1,1,1,0,1,1 0,1,3,2,2,5,5,0,0,1,1,0,1,1 1,4,3,2,1,8,5,4,0,1,1,2,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 1,0,3,2,1,10,5,0,0,1,1,1,1,0 0,5,1,2,2,2,1,0,1,1,1,2,1,0 1,0,3,2,4,3,3,0,0,1,1,0,1,0 1,4,1,2,0,5,2,0,1,1,1,2,1,0 1,5,10,3,1,5,3,0,0,1,1,2,1,0 2,0,3,2,2,1,3,0,1,1,1,0,1,0 0,0,3,2,2,8,3,0,0,1,1,0,1,0 2,0,10,3,0,3,2,0,1,1,1,0,1,0 2,0,3,2,0,9,2,0,1,1,1,2,1,0 0,0,1,2,1,8,5,0,1,1,1,0,1,0 1,0,0,3,0,8,2,1,1,1,1,0,1,0 0,0,1,2,2,1,3,0,1,1,1,1,1,0 0,4,1,2,0,10,2,0,1,1,1,0,1,0 1,0,0,3,0,1,0,0,0,1,1,0,1,0 0,0,6,2,0,1,2,0,1,1,1,0,1,0 1,0,8,0,2,10,3,2,1,1,1,0,1,0 1,3,3,2,2,10,3,4,1,1,1,0,1,0 0,0,1,2,2,2,1,0,0,1,1,0,1,0 0,0,0,3,2,5,3,0,0,1,1,0,1,0 0,2,3,2,0,1,2,0,1,1,1,1,1,1 0,0,3,2,0,6,2,0,1,1,1,0,1,0 0,0,7,1,2,6,1,4,1,1,1,2,1,0 0,0,0,3,1,1,5,0,1,1,1,1,1,0 0,1,3,2,2,10,5,4,1,1,1,1,1,0 0,4,0,3,2,5,1,0,0,1,1,0,1,0 1,5,10,3,2,5,3,0,0,1,1,1,1,0 0,0,3,2,2,2,1,0,0,1,1,2,1,0 0,0,3,2,2,2,1,0,1,1,1,2,1,0 1,4,5,2,0,8,0,0,0,1,1,2,1,1 0,0,3,2,1,3,3,0,1,1,1,0,1,0 1,0,1,2,0,7,2,0,1,1,1,0,1,0 2,4,0,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,2,1,4,0,1,1,1,0,1,0 1,4,3,2,0,12,2,1,1,1,1,1,1,1 0,0,1,2,2,2,3,0,1,1,1,2,1,0 1,3,3,2,1,8,3,0,0,1,1,1,1,0 1,0,7,1,1,2,3,0,1,1,1,2,1,0 0,1,0,3,0,5,2,0,1,1,1,1,1,1 1,0,12,1,0,10,2,0,1,1,1,0,1,0 0,0,3,2,2,8,1,4,1,1,1,0,1,0 0,0,1,2,0,4,2,0,1,1,1,1,1,1 0,5,0,3,2,8,3,0,1,1,1,2,1,0 0,0,1,2,2,2,1,0,1,1,1,2,1,0 2,0,1,2,0,3,2,4,1,1,1,0,1,1 1,0,1,2,3,4,3,0,1,1,1,1,1,1 1,1,0,3,0,3,2,0,1,1,1,1,1,0 0,0,1,2,1,8,3,0,0,1,1,1,1,0 0,0,3,2,2,2,5,0,1,1,1,0,1,0 1,0,0,3,0,0,2,0,1,1,1,0,1,1 1,1,3,2,0,5,0,0,0,1,1,0,1,1 0,3,0,3,2,4,3,4,1,1,1,1,1,0 0,4,1,2,2,4,5,0,1,1,1,0,1,0 0,0,3,2,2,2,3,0,0,1,1,1,1,0 2,0,3,2,2,3,3,0,0,1,1,0,1,0 2,1,1,2,0,9,2,0,1,1,1,1,1,1 0,1,3,2,2,2,1,0,1,1,1,0,1,0 0,0,1,2,0,4,0,0,0,1,1,2,1,0 2,1,3,2,0,9,2,0,1,1,1,1,1,0 2,0,1,2,4,4,3,0,0,1,1,2,1,0 0,0,3,2,1,2,4,0,1,1,1,0,1,0 0,0,10,3,0,5,2,0,1,1,1,1,1,1 2,0,1,2,4,3,3,0,1,1,1,0,1,0 1,4,0,3,3,4,3,0,1,1,1,1,1,1 1,0,0,3,0,3,2,0,1,1,1,1,1,0 0,0,2,1,2,10,3,0,1,1,1,0,1,0 0,0,3,2,0,7,2,0,1,1,1,1,1,0 0,0,0,3,2,5,1,0,1,1,1,1,1,0 2,6,8,0,4,9,5,0,0,1,1,1,1,0 0,0,3,2,2,10,3,0,1,1,1,1,1,0 0,0,3,2,2,8,3,0,0,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,1,1,1 1,0,3,2,0,7,2,0,1,1,1,0,1,1 1,4,10,3,1,5,5,0,0,1,1,1,1,0 0,1,10,3,2,5,3,0,0,1,1,1,1,0 0,0,12,1,0,10,2,0,1,1,1,2,1,0 1,0,7,1,0,10,2,0,1,1,1,1,1,0 1,0,2,1,0,1,2,0,1,1,1,1,1,0 1,0,3,2,2,7,5,0,1,1,1,1,1,0 1,2,4,3,0,4,2,0,1,1,1,0,1,0 1,0,11,0,0,1,2,0,1,1,1,1,1,0 1,1,1,2,1,1,3,0,1,1,1,0,1,0 1,4,10,3,0,4,2,0,1,1,1,1,1,1 1,0,0,3,0,3,2,0,1,1,1,1,1,0 0,4,6,2,0,12,2,4,1,1,1,1,1,0 0,4,0,3,2,5,1,0,1,1,1,2,1,0 0,0,0,3,2,8,3,0,0,1,1,0,1,0 0,0,3,2,3,8,5,0,0,1,1,0,1,0 1,0,10,3,0,1,2,4,1,1,1,0,1,1 1,0,1,2,0,0,2,0,1,1,1,2,1,1 0,0,0,3,2,3,1,0,0,1,1,0,1,0 0,0,0,3,2,4,3,0,1,1,1,1,1,1 0,0,0,3,2,3,3,0,1,1,1,1,1,0 1,0,3,2,0,6,2,0,1,1,1,1,1,0 0,0,3,2,2,1,1,0,1,1,1,0,1,0 2,0,10,3,2,5,3,0,1,1,1,1,1,0 1,0,1,2,1,8,3,0,1,1,1,1,1,0 0,0,8,0,0,7,4,1,0,1,1,1,1,0 0,0,3,2,0,0,4,0,0,1,1,1,1,1 0,0,3,2,0,3,2,0,1,1,1,0,1,0 3,0,0,3,0,4,2,0,1,1,1,1,1,0 1,4,0,3,3,5,5,4,1,1,1,0,1,0 0,0,0,3,5,4,5,0,0,1,1,0,1,0 1,5,0,3,0,4,2,0,1,1,1,0,1,1 0,4,3,2,2,8,3,0,0,1,1,0,1,0 1,0,1,2,0,9,2,0,1,1,1,1,1,0 2,0,12,1,0,3,2,0,1,1,1,0,1,0 0,4,3,2,1,12,5,4,0,1,1,0,1,0 1,0,3,2,0,8,0,0,0,1,1,0,1,1 0,4,2,1,2,8,4,0,0,1,1,2,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,1 2,0,10,3,1,5,3,0,0,1,1,0,1,0 1,5,3,2,2,8,5,4,0,1,1,0,1,0 0,5,0,3,0,5,2,0,1,1,1,2,1,0 1,0,10,3,0,4,2,0,1,1,1,0,1,1 1,1,0,3,0,4,2,0,1,1,1,0,1,0 3,4,3,2,0,4,2,0,1,1,1,2,1,0 0,0,0,3,2,5,3,4,1,1,1,0,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 2,0,12,1,0,12,2,0,1,1,1,0,1,0 1,0,2,1,2,10,1,0,1,1,1,2,1,0 2,0,3,2,0,3,2,0,1,1,1,0,1,0 2,0,3,2,4,2,3,0,0,1,1,2,1,0 0,0,0,3,2,5,3,0,0,1,1,1,1,0 0,0,1,2,0,4,2,0,1,1,1,0,1,1 0,0,3,2,2,8,1,0,1,1,1,2,1,0 1,4,10,3,0,5,2,0,1,1,1,0,1,1 1,0,10,3,0,5,2,0,1,1,1,1,1,1 1,0,0,3,0,3,2,0,1,1,1,1,1,1 0,0,0,3,2,10,5,0,1,1,1,2,1,0 0,0,3,2,1,2,5,0,0,1,1,2,1,0 0,0,1,2,2,3,1,0,1,1,1,2,1,0 0,0,3,2,2,8,5,4,0,1,1,0,1,0 2,0,12,1,0,1,2,0,1,1,1,0,1,0 1,1,3,2,0,3,2,1,1,1,1,1,1,1 0,0,1,2,2,3,3,0,1,1,1,0,1,0 0,0,10,3,2,5,3,0,1,1,1,0,1,1 0,0,3,2,0,2,2,0,1,1,1,1,1,0 0,0,3,2,0,3,2,0,1,1,1,2,1,0 1,0,0,3,5,5,3,1,1,1,1,0,1,1 0,0,0,3,2,4,3,0,1,1,1,0,1,0 0,0,1,2,2,3,3,0,0,1,1,0,1,0 1,1,2,1,0,9,2,0,1,1,1,1,1,1 1,4,12,1,1,6,1,4,1,1,1,0,1,0 1,4,4,3,1,5,3,0,0,1,1,1,1,0 1,3,3,2,0,8,2,0,1,1,1,0,1,1 0,0,0,3,2,4,3,4,0,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 2,2,1,2,0,4,2,0,1,1,1,1,1,1 0,0,3,2,2,7,3,0,1,1,1,1,1,0 2,2,1,2,0,3,2,0,1,1,1,1,1,1 0,0,3,2,0,1,2,0,1,1,1,1,1,0 0,0,1,2,2,3,3,4,0,1,1,2,1,0 0,0,3,2,2,6,3,0,1,1,1,0,1,0 1,0,1,2,2,3,3,0,1,1,1,1,1,1 1,0,3,2,1,4,5,0,1,1,1,2,1,0 0,0,0,3,2,4,5,0,0,1,1,1,1,1 1,0,1,2,1,7,3,0,1,1,1,1,1,0 1,0,3,2,0,3,2,0,1,1,1,1,1,1 3,1,10,3,5,5,3,0,0,1,1,1,1,0 1,0,0,3,0,3,2,0,1,1,1,1,1,1 1,5,3,2,1,1,5,0,1,1,1,2,1,0 0,0,3,2,2,1,5,0,1,1,1,2,1,0 0,0,1,2,2,3,4,0,0,1,1,0,1,0 2,1,3,2,0,9,2,0,1,1,1,0,1,0 3,0,7,1,0,4,0,1,0,1,1,1,1,1 1,0,0,3,3,3,3,0,1,1,1,1,1,0 0,0,3,2,2,9,1,4,1,1,1,2,1,0 2,0,1,2,2,8,4,4,0,1,1,0,1,0 0,0,8,0,0,1,2,0,1,1,1,2,1,0 0,0,3,2,2,1,1,0,1,1,1,1,1,0 0,0,1,2,5,2,3,0,0,1,1,1,1,0 0,0,0,3,2,4,3,0,0,1,1,0,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 0,0,1,2,2,2,3,0,0,1,1,0,1,0 0,4,0,3,2,5,3,0,0,1,1,0,1,0 0,0,0,3,0,5,2,0,1,1,1,1,1,0 0,0,10,3,2,5,3,0,1,1,1,1,1,0 2,3,3,2,2,8,3,0,1,1,1,0,1,0 1,0,10,3,0,4,2,0,1,1,1,0,1,1 0,0,2,1,2,1,1,0,1,1,1,0,1,0 0,4,5,2,0,2,0,0,0,1,1,0,1,0 1,0,13,3,2,5,3,0,1,1,1,0,1,0 0,0,1,2,1,2,4,0,1,1,1,0,1,0 0,0,5,2,1,2,1,0,0,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,0,1,0 1,0,6,2,0,7,2,0,1,1,1,0,1,1 0,0,3,2,2,6,3,0,1,1,1,0,1,0 1,3,1,2,0,0,2,0,1,1,1,0,1,0 0,5,10,3,0,5,2,0,1,1,1,1,1,0 0,0,5,2,0,4,0,0,0,1,1,0,1,1 2,1,1,2,0,5,0,0,0,1,1,2,1,1 0,0,6,2,0,1,2,0,1,1,1,0,1,0 1,0,3,2,0,1,2,4,1,1,1,0,1,0 0,0,2,1,0,3,1,4,1,1,1,2,1,0 0,0,3,2,3,4,5,0,0,1,1,1,1,0 1,0,12,1,0,1,2,0,1,1,1,2,1,0 1,5,1,2,0,5,2,0,1,1,1,0,1,0 1,0,1,2,0,4,2,0,1,1,1,0,1,1 0,0,0,3,2,4,5,0,1,1,1,0,1,0 2,0,8,0,4,2,5,4,0,1,1,2,1,0 1,0,1,2,0,9,2,0,1,1,1,2,1,0 0,1,0,3,0,4,2,0,1,1,1,1,1,1 1,0,0,3,1,4,3,0,1,1,1,1,1,0 0,1,12,1,2,8,1,0,1,1,1,2,1,0 1,0,1,2,2,1,3,0,1,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,1,1,1 0,0,0,3,5,5,1,0,0,1,1,0,1,0 0,0,1,2,2,8,3,0,0,1,1,2,1,0 1,0,0,3,0,3,2,0,1,1,1,1,1,1 0,0,2,1,2,2,4,4,1,1,1,2,1,0 0,0,1,2,2,3,5,0,1,1,1,1,1,0 0,0,3,2,2,3,3,0,0,1,1,0,1,0 0,4,8,0,0,10,2,0,1,1,1,0,1,0 1,5,6,2,2,5,3,0,1,1,1,0,1,1 0,0,3,2,0,10,2,0,1,1,1,0,1,0 0,0,3,2,2,6,1,0,1,1,1,2,1,0 0,0,9,1,2,8,1,0,0,1,1,0,1,0 1,0,3,2,1,2,3,1,0,1,1,0,1,0 0,0,0,3,2,5,1,0,0,1,1,0,1,0 1,4,10,3,0,4,2,0,1,1,1,0,1,1 2,0,1,2,1,8,3,0,0,1,1,0,1,0 0,0,3,2,2,11,5,0,0,1,1,0,1,0 1,0,3,2,0,4,2,0,1,1,1,0,1,1 2,0,3,2,4,8,3,0,0,1,1,0,1,0 1,0,0,3,0,2,0,1,0,1,1,2,1,1 0,0,1,2,1,4,1,0,1,1,1,1,1,0 1,0,0,3,2,5,3,0,1,1,1,1,1,0 0,0,2,1,0,9,2,0,1,1,1,0,1,0 1,4,1,2,0,4,2,4,1,1,1,0,1,1 1,4,1,2,0,12,2,0,1,1,1,0,1,1 0,3,3,2,2,8,1,4,1,1,1,0,1,0 1,0,3,2,1,2,5,0,0,1,1,2,1,0 0,1,1,2,2,7,1,0,1,1,1,0,1,0 0,0,3,2,2,9,1,0,1,1,1,1,1,0 1,0,1,2,0,4,2,0,1,1,1,1,1,0 2,4,3,2,3,12,5,4,0,1,1,0,1,0 0,0,0,3,0,4,2,0,1,1,1,0,1,1 1,0,1,2,3,4,5,0,0,1,1,1,1,0 1,0,3,2,1,7,3,0,1,1,1,1,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,1 1,2,5,2,0,3,2,0,1,1,1,2,1,1 0,0,3,2,2,8,1,0,1,1,1,2,1,0 0,3,3,2,0,8,0,0,0,1,1,0,1,1 1,0,3,2,0,2,2,0,1,1,1,1,1,1 1,0,5,2,0,3,2,0,1,1,1,1,1,1 0,0,1,2,1,3,3,0,1,1,1,1,1,0 1,0,0,3,0,3,2,0,1,1,1,1,1,1 1,0,1,2,0,1,2,0,1,1,1,0,1,1 0,0,0,3,2,5,3,1,1,1,1,2,1,0 2,4,3,2,1,8,3,0,0,1,1,1,1,0 1,0,1,2,0,5,2,0,1,1,1,1,1,1 1,5,0,3,1,4,3,0,0,1,1,0,1,1 1,0,6,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,1,1,5,0,0,1,1,0,1,0 1,2,1,2,0,3,2,0,1,1,1,1,1,1 1,0,3,2,0,1,2,0,1,1,1,0,1,1 0,0,1,2,5,1,4,4,0,1,1,2,1,0 2,4,3,2,0,9,2,0,1,1,1,0,1,0 2,0,1,2,0,3,2,0,1,1,1,0,1,1 0,0,3,2,0,12,2,0,1,1,1,1,1,1 1,0,1,2,3,8,5,0,0,1,1,0,1,0 1,0,1,2,0,8,0,0,0,1,1,2,1,1 2,0,3,2,2,3,5,0,0,1,1,0,1,0 0,0,0,3,2,4,1,0,1,1,1,0,1,0 0,5,1,2,2,0,1,0,0,1,1,2,1,0 1,0,3,2,1,1,3,0,1,1,1,1,1,0 1,4,10,3,1,5,3,0,0,1,1,2,1,0 1,0,3,2,2,1,1,0,1,1,1,0,1,0 1,0,3,2,0,8,0,0,0,1,1,1,1,0 0,0,3,2,2,7,1,0,0,1,1,0,1,0 0,0,3,2,2,12,1,4,1,1,1,2,1,0 0,0,0,3,2,0,1,0,1,1,1,0,1,0 1,0,14,0,2,11,1,0,0,1,1,0,1,0 0,0,3,2,2,3,1,0,1,1,1,1,1,0 0,0,3,2,2,1,3,0,1,1,1,1,1,0 1,4,3,2,0,2,0,4,0,1,1,2,1,1 1,5,1,2,0,5,2,0,1,1,1,1,1,0 0,5,2,1,3,8,5,1,0,1,1,0,1,0 1,4,10,3,1,5,5,0,0,1,1,1,1,0 0,0,3,2,2,8,3,0,0,1,1,0,1,0 0,0,10,3,2,4,3,0,0,1,1,2,1,0 1,0,6,2,0,1,2,0,1,1,1,0,1,0 1,0,3,2,2,3,3,1,0,1,1,0,1,0 2,0,1,2,2,11,3,0,0,1,1,0,1,0 1,3,1,2,1,8,4,0,0,1,1,0,1,0 1,0,3,2,2,2,3,0,0,1,1,2,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 2,4,10,3,4,5,5,0,0,1,1,2,1,0 1,0,3,2,4,0,5,0,1,1,1,0,1,0 2,4,1,2,4,8,5,0,0,1,1,0,1,0 1,0,10,3,1,5,1,0,0,1,1,0,1,0 0,0,3,2,0,10,2,0,1,1,1,0,1,0 0,1,3,2,0,1,2,0,1,1,1,0,1,0 0,0,2,1,2,5,1,0,0,1,1,0,1,0 2,0,3,2,0,7,2,0,1,1,1,0,1,0 0,5,0,3,1,5,3,0,1,1,1,0,1,0 0,0,1,2,0,1,2,0,1,1,1,1,1,0 0,0,2,1,2,7,3,4,1,1,1,0,1,0 0,0,1,2,2,8,3,0,1,1,1,1,1,0 1,0,10,3,0,5,2,0,1,1,1,2,1,1 3,0,12,1,4,11,3,0,0,1,1,1,1,0 0,0,1,2,0,1,2,4,1,1,1,0,1,0 0,2,0,3,0,3,2,0,1,1,1,1,1,1 2,2,10,3,0,3,2,0,1,1,1,1,1,1 1,1,14,0,0,3,2,0,1,1,1,1,1,1 1,0,3,2,0,4,2,0,1,1,1,0,1,1 0,0,1,2,2,2,3,0,0,1,1,2,1,0 0,0,2,1,2,1,1,0,1,1,1,2,1,0 0,0,1,2,2,2,1,4,0,1,1,2,1,0 1,0,3,2,0,3,2,0,1,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,0,1,1 0,1,6,2,1,3,5,0,1,1,1,1,1,0 2,0,12,1,3,11,3,4,0,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,0 0,0,3,2,3,12,1,0,0,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,0 1,0,7,1,0,10,2,0,1,1,1,0,1,0 1,0,3,2,0,3,2,0,1,1,1,1,1,0 0,0,0,3,0,5,0,0,0,1,1,0,1,1 2,0,1,2,0,1,2,0,1,1,1,1,1,0 2,4,3,2,1,8,3,0,0,1,1,2,1,0 1,0,5,2,0,7,2,0,1,1,1,0,1,1 2,1,0,3,0,4,2,0,1,1,1,1,1,1 1,0,5,2,0,4,0,0,0,1,1,1,1,1 1,1,10,3,1,3,5,0,1,1,1,2,1,1 0,1,8,0,0,9,2,0,1,1,1,1,1,0 2,2,10,3,0,3,2,0,1,1,1,1,1,1 1,0,3,2,1,1,4,0,1,1,1,0,1,0 1,1,10,3,1,5,3,0,1,1,1,0,1,0 0,0,0,3,2,7,3,0,1,1,1,1,1,0 0,0,1,2,2,3,3,0,1,1,1,2,1,0 3,3,1,2,4,10,3,0,0,1,1,2,1,0 1,0,2,1,0,10,2,0,1,1,1,1,1,1 0,0,1,2,2,8,3,0,0,1,1,0,1,0 1,0,9,1,3,8,1,4,0,1,1,0,1,0 0,0,7,1,0,6,4,0,1,1,1,0,1,0 0,0,0,3,0,3,2,0,1,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,1 0,0,0,3,2,8,1,0,0,1,1,0,1,0 1,0,0,3,0,8,0,0,0,1,1,0,1,1 1,0,3,2,0,10,2,0,1,1,1,0,1,0 2,0,6,2,0,9,2,0,1,1,1,1,1,0 0,3,5,2,0,8,2,0,1,1,1,1,1,0 2,0,0,3,4,8,5,0,0,1,1,0,1,0 1,4,0,3,2,5,1,0,0,1,1,1,1,0 0,0,3,2,3,4,5,0,0,1,1,2,1,0 1,0,3,2,0,7,0,4,0,1,1,0,1,1 1,0,3,2,0,10,2,0,1,1,1,0,1,1 0,0,3,2,2,2,3,4,0,1,1,0,1,0 0,1,0,3,0,3,2,1,1,1,1,1,1,0 1,4,3,2,4,12,3,4,1,1,1,0,1,0 0,0,3,2,2,2,3,0,0,1,1,1,1,0 1,0,3,2,0,6,2,0,1,1,1,0,1,0 2,1,3,2,2,2,3,0,1,1,1,0,1,0 0,0,1,2,0,3,2,0,1,1,1,1,1,1 0,0,1,2,2,8,3,0,0,1,1,0,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,2,7,5,4,0,1,1,0,1,0 1,0,3,2,1,3,3,0,0,1,1,2,1,0 0,0,12,1,2,1,3,0,1,1,1,2,1,0 2,5,3,2,3,2,3,0,0,1,1,2,1,0 0,0,8,0,2,1,1,4,1,1,1,0,1,0 0,0,2,1,2,10,5,0,1,1,1,0,1,0 0,5,0,3,2,0,3,0,1,1,1,2,1,0 0,0,3,2,3,8,5,0,0,1,1,0,1,0 0,4,0,3,3,5,3,0,0,1,1,1,1,1 1,0,5,2,0,8,0,4,0,1,1,0,1,1 1,0,8,0,0,10,2,0,1,1,1,0,1,0 2,1,0,3,0,3,2,0,1,1,1,0,1,1 1,0,0,3,2,4,1,0,0,1,1,0,1,0 1,0,3,2,2,3,3,4,1,1,1,0,1,0 0,0,6,2,0,3,2,0,1,1,1,1,1,1 0,0,8,0,0,7,2,0,1,1,1,0,1,0 1,0,6,2,1,5,5,0,0,1,1,0,1,0 2,0,3,2,0,0,0,0,0,1,1,0,1,1 1,5,0,3,0,5,2,0,1,1,1,1,1,1 0,0,1,2,2,0,5,0,0,1,1,0,1,0 1,0,1,2,0,8,2,0,1,1,1,1,1,0 1,3,4,3,0,5,2,0,1,1,1,1,1,1 2,0,8,0,0,1,2,0,1,1,1,0,1,0 1,0,6,2,0,6,2,0,1,1,1,0,1,1 1,0,5,2,0,1,2,0,1,1,1,1,1,1 2,3,1,2,1,4,5,0,0,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,1 2,1,10,3,1,3,3,0,1,1,1,2,1,0 2,4,3,2,1,8,3,0,0,1,1,0,1,0 0,0,1,2,2,6,1,0,1,1,1,0,1,0 1,3,0,3,0,8,2,1,1,1,1,0,1,1 1,0,0,3,1,4,5,0,0,1,1,1,1,0 1,5,1,2,2,8,5,0,0,1,1,0,1,0 1,0,13,3,0,8,2,0,1,1,1,1,1,1 0,3,1,2,2,4,3,0,0,1,1,0,1,0 2,2,3,2,0,4,2,0,1,1,1,0,1,1 0,0,6,2,3,2,3,4,1,1,1,0,1,0 1,1,0,3,0,9,2,0,1,1,1,1,1,0 0,0,3,2,2,2,1,0,0,1,1,2,1,0 0,0,10,3,0,3,2,0,1,1,1,0,1,1 1,4,0,3,2,4,5,1,1,1,1,0,1,0 0,0,3,2,2,10,1,0,1,1,1,0,1,0 0,0,0,3,0,1,4,0,1,1,1,1,1,0 1,0,6,2,1,8,3,0,0,1,1,0,1,0 0,0,1,2,1,1,3,0,1,1,1,1,1,0 0,0,6,2,2,4,1,0,1,1,1,2,1,0 1,0,1,2,0,3,2,0,1,1,1,1,1,1 0,0,9,1,2,7,1,0,1,1,1,2,1,0 0,4,3,2,2,10,5,4,0,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,1,0,3,0,3,2,0,1,1,1,0,1,0 1,0,3,2,1,1,5,0,1,1,1,0,1,0 0,0,6,2,2,7,3,0,1,1,1,0,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 1,0,1,2,0,3,2,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,0,7,2,0,1,1,1,0,1,0 1,0,5,2,4,2,1,0,0,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,12,1,2,3,4,0,0,1,1,2,1,0 0,4,4,3,2,5,3,0,0,1,1,1,1,0 0,5,1,2,2,5,3,0,0,1,1,2,1,0 0,0,3,2,0,2,2,0,1,1,1,0,1,1 0,4,0,3,2,5,5,0,0,1,1,0,1,0 0,0,13,3,2,5,3,0,1,1,1,0,1,0 0,0,0,3,2,3,3,0,0,1,1,1,1,0 1,0,10,3,0,5,2,1,1,1,1,1,1,1 1,4,0,3,0,5,2,0,1,1,1,2,1,1 0,0,1,2,0,12,4,4,0,1,1,2,1,0 1,1,3,2,0,1,2,0,1,1,1,2,1,0 0,0,3,2,2,6,1,0,0,1,1,2,1,0 1,0,3,2,1,1,3,0,1,1,1,2,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,1 2,0,3,2,1,1,5,0,0,1,1,0,1,0 0,0,6,2,2,7,1,0,1,1,1,0,1,0 0,1,3,2,2,1,4,0,1,1,1,2,1,0 0,0,0,3,1,8,5,0,0,1,1,1,1,0 1,1,3,2,0,2,2,0,1,1,1,1,1,0 0,0,1,2,3,8,5,0,0,1,1,0,1,0 1,1,0,3,1,4,3,0,1,1,1,1,1,0 1,0,3,2,3,3,3,0,0,1,1,0,1,0 0,0,1,2,1,0,3,0,1,1,1,1,1,0 3,0,1,2,2,2,3,1,1,1,1,2,1,0 1,0,0,3,0,3,2,0,1,1,1,0,1,1 0,0,0,3,0,2,0,0,0,1,1,0,1,1 1,0,1,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,2,6,1,0,1,1,1,2,1,0 1,0,0,3,0,5,2,0,1,1,1,0,1,1 2,5,3,2,4,8,3,0,0,1,1,2,1,0 2,0,8,0,4,10,3,0,1,1,1,2,1,0 1,0,1,2,5,5,3,0,1,1,1,0,1,1 0,0,0,3,0,3,0,0,0,1,1,0,1,1 0,4,5,2,2,8,1,2,0,1,1,0,1,0 1,0,0,3,0,8,0,0,0,1,1,0,1,0 2,0,1,2,4,1,3,0,1,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,0,1,0 2,2,3,2,2,3,3,0,1,1,1,1,1,0 2,5,10,3,0,5,2,0,1,1,1,1,1,1 2,2,0,3,0,3,2,0,1,1,1,1,1,1 1,0,1,2,2,1,3,0,1,1,1,0,1,0 1,4,1,2,0,12,2,0,1,1,1,0,1,1 0,0,3,2,2,1,1,0,1,1,1,1,1,0 2,3,10,3,0,4,2,0,1,1,1,1,1,1 1,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,1,2,4,1,5,0,1,1,1,0,1,0 2,0,2,1,0,9,2,0,1,1,1,1,1,0 0,0,1,2,1,3,3,0,1,1,1,1,1,0 1,3,1,2,0,4,0,1,0,1,1,0,1,1 0,0,6,2,1,5,3,0,1,1,1,0,1,0 0,1,2,1,0,10,2,0,1,1,1,1,1,1 0,0,2,1,3,10,3,0,1,1,1,1,1,0 1,0,1,2,0,4,2,0,1,1,1,1,1,1 0,0,1,2,2,8,1,0,0,1,1,2,1,0 1,0,2,1,5,7,3,0,1,1,1,0,1,0 0,0,12,1,2,10,1,0,1,1,1,2,1,0 0,0,3,2,2,0,1,0,0,1,1,0,1,0 1,0,10,3,0,4,2,1,1,1,1,0,1,1 1,0,6,2,0,1,2,0,1,1,1,0,1,0 0,1,3,2,2,9,3,0,1,1,1,2,1,0 0,0,2,1,2,2,5,4,0,1,1,0,1,0 1,0,10,3,0,4,2,0,1,1,1,0,1,1 0,0,0,3,0,3,2,0,1,1,1,0,1,1 1,1,6,2,0,0,2,0,1,1,1,1,1,0 0,0,7,1,2,6,1,0,1,1,1,0,1,0 2,1,9,1,0,1,2,0,1,1,1,0,1,1 0,3,1,2,2,4,3,4,1,1,1,0,1,0 0,0,5,2,1,4,3,0,0,1,1,1,1,0 0,0,0,3,2,4,3,0,0,1,1,1,1,1 1,0,0,3,0,4,2,0,1,1,1,0,1,1 0,0,0,3,0,9,2,0,1,1,1,0,1,0 0,0,5,2,0,3,2,0,1,1,1,2,1,0 1,0,3,2,0,2,2,0,1,1,1,0,1,1 0,0,0,3,0,4,2,0,1,1,1,1,1,0 0,0,4,3,0,5,2,0,1,1,1,1,1,1 1,0,1,2,0,1,2,0,1,1,1,1,1,1 0,0,3,2,2,6,1,0,1,1,1,0,1,0 0,0,3,2,2,10,1,4,1,1,1,0,1,0 1,0,1,2,3,2,3,4,0,1,1,2,1,0 0,0,6,2,2,8,3,0,1,1,1,1,1,0 0,2,10,3,3,5,3,0,0,1,1,0,1,1 0,0,3,2,2,1,1,0,1,1,1,0,1,0 1,0,7,1,0,6,2,0,1,1,1,1,1,0 1,5,3,2,0,12,2,0,1,1,1,0,1,0 2,0,1,2,0,1,2,0,1,1,1,0,1,0 2,0,13,3,2,5,3,0,1,1,1,0,1,0 0,0,3,2,1,3,3,4,0,1,1,0,1,0 1,0,3,2,2,3,3,4,0,1,1,1,1,0 2,0,3,2,0,7,2,0,1,1,1,0,1,1 0,0,1,2,3,8,5,0,0,1,1,0,1,0 1,0,1,2,1,4,3,0,1,1,1,0,1,0 0,0,2,1,2,1,1,0,1,1,1,2,1,0 2,0,8,0,5,2,5,2,0,1,1,0,1,0 0,0,1,2,2,4,1,0,0,1,1,2,1,0 2,2,0,3,0,3,2,0,1,1,1,1,1,1 0,1,0,3,0,3,2,0,1,1,1,1,1,1 1,0,0,3,0,9,2,0,1,1,1,1,1,0 0,0,8,0,0,10,2,0,1,1,1,1,1,0 1,4,0,3,0,8,2,0,1,1,1,0,1,0 0,2,3,2,0,4,2,0,1,1,1,1,1,1 0,0,0,3,2,5,3,0,1,1,1,1,1,0 0,0,1,2,0,6,2,0,1,1,1,0,1,0 0,0,3,2,2,6,3,0,1,1,1,1,1,0 0,0,1,2,2,3,1,0,0,1,1,0,1,0 0,0,9,1,2,7,3,0,1,1,1,0,1,0 1,0,10,3,2,5,3,0,0,1,1,1,1,1 0,0,3,2,2,3,1,0,0,1,1,2,1,0 0,0,3,2,1,7,3,0,1,1,1,2,1,0 0,5,1,2,2,8,3,4,0,1,1,0,1,0 0,0,1,2,2,7,1,2,1,1,1,0,1,0 2,0,8,0,0,2,2,0,1,1,1,2,1,0 2,0,0,3,0,4,2,0,1,1,1,0,1,1 2,0,1,2,0,3,2,0,1,1,1,1,1,0 0,0,6,2,0,7,2,0,1,1,1,0,1,0 1,0,1,2,0,4,2,0,1,1,1,0,1,1 1,0,2,1,0,2,0,0,0,1,1,0,1,0 1,0,3,2,2,8,3,0,1,1,1,0,1,0 0,0,1,2,2,2,1,0,1,1,1,0,1,0 1,0,12,1,0,2,2,0,1,1,1,0,1,0 1,4,1,2,1,8,5,0,0,1,1,1,1,0 0,0,1,2,2,4,1,1,1,1,1,0,1,0 1,0,1,2,2,9,3,0,1,1,1,0,1,0 1,0,0,3,1,4,5,0,1,1,1,1,1,1 1,4,10,3,0,5,2,0,1,1,1,0,1,1 2,1,7,1,0,9,2,0,1,1,1,2,1,0 0,0,1,2,2,8,1,0,0,1,1,0,1,0 0,0,3,2,2,3,3,0,1,1,1,0,1,0 0,1,9,1,0,1,2,0,1,1,1,0,1,0 2,0,3,2,4,8,3,0,0,1,1,2,1,0 0,0,2,1,0,10,2,0,1,1,1,1,1,0 0,1,0,3,2,3,3,0,1,1,1,0,1,0 2,0,7,1,0,7,2,0,1,1,1,0,1,0 0,0,3,2,0,7,2,0,1,1,1,1,1,1 2,2,4,3,0,5,2,0,1,1,1,2,1,1 1,0,3,2,2,3,1,0,0,1,1,0,1,0 1,1,3,2,0,9,2,0,1,1,1,1,1,0 2,0,3,2,0,1,2,0,1,1,1,0,1,1 2,1,3,2,0,1,2,0,1,1,1,1,1,1 0,0,4,3,0,3,2,1,1,1,1,2,1,0 1,5,0,3,0,4,2,0,1,1,1,1,1,1 0,0,0,3,2,0,3,0,1,1,1,0,1,0 1,4,1,2,2,2,5,4,0,1,1,0,1,0 0,5,10,3,2,8,3,0,1,1,1,2,1,0 1,5,3,2,2,2,3,4,1,1,1,0,1,0 0,0,1,2,2,0,1,0,0,1,1,2,1,0 0,2,1,2,0,1,2,0,1,1,1,0,1,0 0,1,3,2,0,3,2,0,1,1,1,0,1,0 2,0,7,1,0,7,2,4,1,1,1,2,1,0 2,4,1,2,1,8,5,0,0,1,1,0,1,0 0,0,5,2,2,1,4,0,1,1,1,0,1,0 0,0,3,2,2,3,1,0,1,1,1,2,1,0 0,0,1,2,0,5,2,2,1,1,1,0,1,0 0,0,14,0,0,6,2,0,1,1,1,0,1,0 0,0,3,2,1,2,3,0,0,1,1,2,1,0 0,4,3,2,2,12,3,4,0,1,1,0,1,0 0,0,12,1,3,2,1,0,0,1,1,2,1,0 1,0,0,3,1,3,3,0,0,1,1,0,1,0 0,0,6,2,2,2,5,0,0,1,1,2,1,0 0,0,12,1,2,3,3,3,1,1,1,0,1,0 0,1,3,2,0,8,0,0,0,1,1,0,1,0 1,0,3,2,1,8,5,0,0,1,1,2,1,0 1,0,3,2,1,7,3,0,0,1,1,0,1,0 2,1,3,2,0,3,2,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 0,4,1,2,3,8,5,0,0,1,1,2,1,0 0,1,6,2,1,1,1,0,1,1,1,2,1,0 1,0,6,2,0,1,2,0,1,1,1,0,1,1 0,1,5,2,2,1,3,0,1,1,1,0,1,0 2,0,0,3,0,4,2,0,1,1,1,0,1,1 1,0,6,2,1,12,3,4,1,1,1,0,1,0 1,0,3,2,0,3,2,0,1,1,1,1,1,1 1,0,3,2,1,7,3,0,0,1,1,1,1,0 1,0,3,2,1,3,4,0,0,1,1,0,1,0 1,0,0,3,1,3,3,0,1,1,1,0,1,0 1,1,3,2,0,3,0,4,0,1,1,1,1,1 1,3,10,3,0,0,2,0,1,1,1,0,1,1 0,0,0,3,2,5,3,0,0,1,1,0,1,0 0,0,6,2,0,0,4,0,0,1,1,0,1,1 1,2,0,3,0,3,2,0,1,1,1,1,1,1 0,1,3,2,0,1,2,0,1,1,1,0,1,0 0,0,2,1,2,10,1,0,0,1,1,2,1,0 0,0,12,1,3,1,3,0,1,1,1,0,1,0 2,2,0,3,0,7,2,0,1,1,1,2,1,0 2,0,3,2,3,6,5,0,1,1,1,0,1,0 1,0,1,2,0,3,2,0,1,1,1,1,1,0 1,2,0,3,0,4,2,0,1,1,1,1,1,1 0,0,2,1,2,8,3,0,1,1,1,0,1,0 3,1,0,3,0,4,2,0,1,1,1,2,1,0 1,0,13,3,0,5,2,0,1,1,1,0,1,1 0,0,3,2,0,1,2,0,1,1,1,0,1,0 2,0,3,2,1,8,3,0,0,1,1,0,1,0 1,1,8,0,0,1,2,2,1,1,1,0,1,0 2,0,1,2,1,3,5,0,0,1,1,1,1,0 1,0,3,2,1,1,5,0,1,1,1,1,1,0 0,0,3,2,2,6,1,0,0,1,1,0,1,0 0,0,2,1,2,1,1,0,1,1,1,2,1,0 1,0,3,2,1,4,3,0,1,1,1,1,1,0 1,0,0,3,0,10,2,0,1,1,1,0,1,1 0,0,1,2,0,4,2,0,1,1,1,1,1,1 2,0,0,3,0,3,2,0,1,1,1,0,1,1 0,0,3,2,2,12,1,4,1,1,1,0,1,0 0,0,1,2,2,8,3,0,0,1,1,0,1,0 0,1,0,3,5,4,3,0,1,1,1,1,1,0 2,0,14,0,1,7,3,0,0,1,1,0,1,0 1,0,3,2,1,1,5,0,0,1,1,1,1,0 2,0,8,0,0,10,2,0,1,1,1,0,1,0 2,1,3,2,4,1,3,0,1,1,1,1,1,1 2,1,4,3,0,3,2,0,1,1,1,2,1,0 0,1,3,2,2,1,3,0,1,1,1,1,1,1 0,0,5,2,0,1,3,1,1,1,1,1,1,1 1,0,3,2,1,12,3,4,1,1,1,2,1,0 2,0,1,2,2,8,3,0,0,1,1,2,1,0 0,0,1,2,0,10,2,0,1,1,1,1,1,1 0,0,2,1,2,6,4,4,1,1,1,0,1,0 0,0,9,1,0,2,0,0,0,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,0,3,0,1,2,0,1,1,1,0,1,0 1,1,1,2,0,1,2,0,1,1,1,1,1,1 1,0,6,2,0,1,2,0,1,1,1,0,1,0 1,0,6,2,3,2,5,0,0,1,1,2,1,0 2,0,8,0,0,7,2,0,1,1,1,0,1,0 1,0,6,2,1,7,3,0,1,1,1,0,1,0 1,4,3,2,1,5,5,1,0,1,1,0,1,0 0,0,0,3,2,4,4,0,0,1,1,1,1,0 1,1,0,3,0,4,2,0,1,1,1,2,1,0 1,3,10,3,2,4,3,0,1,1,1,1,1,1 0,0,1,2,2,2,3,0,0,1,1,2,1,0 0,0,1,2,2,2,3,0,0,1,1,2,1,0 0,4,9,1,2,12,1,0,1,1,1,0,1,0 0,0,1,2,2,3,3,4,1,1,1,0,1,0 0,1,3,2,0,1,2,0,1,1,1,1,1,0 1,0,1,2,1,8,5,0,0,1,1,0,1,0 0,0,3,2,2,8,3,0,1,1,1,0,1,0 0,0,1,2,2,3,3,0,1,1,1,1,1,0 1,0,3,2,0,7,2,0,1,1,1,1,1,1 0,3,3,2,3,4,5,4,0,1,1,0,1,0 2,0,6,2,4,8,5,0,0,1,1,2,1,0 0,0,1,2,0,8,2,4,1,1,1,0,1,1 0,0,1,2,5,3,3,0,1,1,1,1,1,0 2,0,3,2,4,7,5,0,1,1,1,0,1,0 0,0,3,2,1,3,3,0,0,1,1,1,1,0 0,0,1,2,0,10,2,0,1,1,1,1,1,1 0,0,1,2,2,8,1,1,0,1,1,2,1,0 2,4,6,2,1,8,3,0,0,1,1,0,1,0 0,0,1,2,2,2,1,0,0,1,1,0,1,0 1,0,3,2,0,9,2,0,1,1,1,0,1,0 1,0,1,2,0,3,2,0,1,1,1,0,1,0 0,0,3,2,2,8,5,3,0,1,1,0,1,0 1,0,3,2,0,4,2,0,1,1,1,0,1,0 0,0,1,2,2,9,1,0,1,1,1,1,1,0 2,0,0,3,0,3,2,0,1,1,1,1,1,1 0,4,1,2,2,5,3,0,0,1,1,2,1,0 2,5,13,3,0,5,2,1,1,1,1,0,1,0 1,0,1,2,0,8,0,0,0,1,1,2,1,0 1,0,6,2,0,8,0,0,0,1,1,2,1,1 1,0,7,1,2,7,5,4,0,1,1,0,1,0 1,0,3,2,1,4,3,0,1,1,1,1,1,0 2,3,3,2,2,8,5,0,0,1,1,2,1,0 0,0,1,2,2,3,1,4,1,1,1,2,1,0 0,0,3,2,0,8,2,0,1,1,1,0,1,0 0,5,10,3,2,5,3,0,1,1,1,2,1,0 0,1,3,2,2,9,1,0,1,1,1,1,1,0 2,2,1,2,0,4,2,0,1,1,1,1,1,1 2,0,2,1,1,7,3,0,0,1,1,0,1,0 0,0,0,3,0,5,2,0,1,1,1,1,1,1 0,0,12,1,2,3,5,4,0,1,1,0,1,0 0,2,3,2,0,3,2,0,1,1,1,1,1,1 1,0,3,2,1,8,5,0,0,1,1,1,1,0 1,0,3,2,0,10,2,0,1,1,1,2,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,1 1,0,11,0,5,7,5,0,0,1,1,0,1,0 0,0,12,1,0,1,2,0,1,1,1,1,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 2,0,11,0,1,1,5,0,1,1,1,0,1,0 1,0,3,2,1,8,3,0,0,1,1,0,1,0 0,0,1,2,0,4,2,0,1,1,1,1,1,1 1,0,0,3,0,1,2,0,1,1,1,1,1,1 1,0,3,2,1,8,4,1,0,1,1,0,1,0 3,1,3,2,2,7,3,0,1,1,1,2,1,0 1,0,10,3,2,4,3,4,1,1,1,1,1,1 0,0,5,2,1,6,5,0,0,1,1,2,1,0 0,0,12,1,2,1,1,4,0,1,1,0,1,0 1,0,6,2,1,5,3,0,0,1,1,1,1,1 1,0,3,2,0,10,2,0,1,1,1,1,1,1 2,0,5,2,0,8,2,0,1,1,1,2,1,1 0,0,0,3,2,8,3,0,1,1,1,1,1,0 2,3,3,2,0,10,2,2,1,1,1,0,1,0 1,5,6,2,1,0,5,0,0,1,1,0,1,0 0,0,3,2,1,4,3,0,0,1,1,1,1,1 0,0,12,1,2,6,1,0,1,1,1,2,1,0 0,0,3,2,0,2,2,3,1,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,1,2,2,2,3,0,0,1,1,0,1,0 1,5,1,2,0,4,2,0,1,1,1,0,1,0 0,0,2,1,2,3,4,2,0,1,1,2,1,0 0,0,3,2,0,10,2,4,1,1,1,2,1,0 0,5,3,2,0,3,2,0,1,1,1,0,1,0 0,0,3,2,2,7,4,0,1,1,1,1,1,0 1,0,0,3,0,4,2,0,1,1,1,0,1,1 3,0,4,3,4,8,3,4,0,1,1,2,1,0 0,0,14,0,2,10,3,0,1,1,1,0,1,0 0,0,3,2,2,8,3,0,0,1,1,0,1,0 0,0,6,2,0,3,2,0,1,1,1,0,1,1 1,2,3,2,0,6,2,0,1,1,1,0,1,0 1,3,3,2,0,10,2,0,1,1,1,0,1,1 0,0,10,3,2,3,3,0,1,1,1,2,1,0 1,0,3,2,0,1,2,2,1,1,1,1,1,0 0,0,0,3,2,1,3,0,0,1,1,0,1,0 1,0,5,2,0,1,2,0,1,1,1,1,1,1 1,1,12,1,0,1,2,0,1,1,1,1,1,0 1,3,3,2,0,4,2,0,1,1,1,0,1,1 0,0,6,2,1,1,3,0,1,1,1,0,1,0 0,0,3,2,2,6,4,0,1,1,1,1,1,0 2,0,3,2,0,1,2,0,1,1,1,1,1,0 1,3,2,1,2,0,3,0,1,1,1,0,1,0 0,0,0,3,0,0,2,0,1,1,1,0,1,1 2,2,0,3,0,3,2,0,1,1,1,1,1,1 1,5,10,3,0,5,2,0,1,1,1,0,1,0 0,5,1,2,2,8,3,0,0,1,1,2,1,0 0,0,0,3,0,4,0,0,0,1,1,0,1,1 0,1,2,1,0,1,2,0,1,1,1,0,1,0 1,4,0,3,1,5,3,0,0,1,1,1,1,0 0,2,1,2,2,8,1,0,0,1,1,1,1,0 1,0,6,2,0,1,2,0,1,1,1,0,1,1 0,0,3,2,2,2,3,0,0,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,0 2,1,3,2,4,2,3,0,0,1,1,2,1,0 1,0,8,0,0,3,2,3,1,1,1,1,1,0 0,0,1,2,2,8,3,0,0,1,1,1,1,0 0,0,3,2,0,8,0,0,0,1,1,0,1,0 0,0,3,2,2,8,1,4,0,1,1,0,1,0 1,0,10,3,5,4,3,0,1,1,1,1,1,0 0,0,0,3,0,5,2,0,1,1,1,0,1,1 0,0,1,2,2,8,3,1,1,1,1,0,1,0 1,0,1,2,0,4,2,1,1,1,1,1,1,0 0,0,0,3,2,8,4,1,0,1,1,0,1,0 0,0,3,2,2,3,1,0,0,1,1,2,1,0 0,0,1,2,4,8,5,0,0,1,1,0,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,0 0,3,4,3,0,5,2,0,1,1,1,1,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,1 1,0,3,2,0,1,2,4,1,1,1,0,1,0 1,0,3,2,3,7,5,0,0,1,1,0,1,0 1,5,6,2,1,5,5,0,0,1,1,1,1,1 1,0,0,3,1,4,3,0,0,1,1,0,1,1 2,0,0,3,0,3,2,0,1,1,1,1,1,1 0,0,3,2,2,6,1,0,1,1,1,1,1,0 1,0,14,0,0,2,2,0,1,1,1,1,1,0 1,1,1,2,3,2,1,0,0,1,1,0,1,0 1,0,1,2,4,4,3,0,0,1,1,0,1,1 1,0,3,2,0,6,2,0,1,1,1,0,1,1 1,0,11,0,2,3,1,0,1,1,1,0,1,0 1,0,4,3,2,5,3,0,1,1,1,1,1,0 0,0,8,0,2,2,3,0,1,1,1,2,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,2,8,5,0,1,1,1,0,1,0 0,0,1,2,2,9,3,0,0,1,1,1,1,0 2,0,1,2,4,0,5,0,0,1,1,0,1,0 0,4,0,3,0,5,2,0,1,1,1,2,1,0 2,0,1,2,0,5,2,0,1,1,1,0,1,0 2,4,0,3,5,5,3,0,1,1,1,0,1,0 1,0,3,2,0,0,2,0,1,1,1,0,1,1 3,4,0,3,0,4,2,0,1,1,1,2,1,0 0,3,1,2,2,8,5,4,0,1,1,0,1,0 1,0,3,2,1,5,3,0,1,1,1,1,1,0 2,5,10,3,0,5,2,0,1,1,1,1,1,1 1,0,0,3,0,10,2,0,1,1,1,1,1,0 2,0,7,1,0,1,2,0,1,1,1,0,1,0 2,1,0,3,0,8,2,0,1,1,1,2,1,0 1,4,3,2,0,2,2,0,1,1,1,0,1,0 0,0,0,3,2,4,3,0,1,1,1,0,1,0 0,0,1,2,0,1,2,0,1,1,1,1,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,1 0,0,1,2,1,2,1,0,1,1,1,2,1,0 1,0,3,2,0,3,2,0,1,1,1,1,1,0 1,1,3,2,1,9,3,0,1,1,1,0,1,0 1,5,10,3,1,5,3,0,0,1,1,1,1,0 2,1,12,1,1,3,1,0,1,1,1,0,1,0 0,0,3,2,2,8,3,0,0,1,1,0,1,0 2,3,0,3,0,3,2,0,1,1,1,0,1,0 0,0,2,1,2,2,1,0,1,1,1,2,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 1,0,3,2,1,0,5,0,0,1,1,0,1,0 0,4,3,2,0,6,4,0,1,1,1,1,1,0 1,1,4,3,0,5,2,0,1,1,1,1,1,1 1,0,3,2,1,3,3,0,0,1,1,2,1,0 0,0,3,2,2,8,1,0,0,1,1,0,1,0 1,0,1,2,0,0,2,0,1,1,1,1,1,1 0,0,1,2,2,7,4,0,1,1,1,1,1,0 0,0,3,2,2,2,3,0,1,1,1,0,1,0 1,0,1,2,1,4,3,0,0,1,1,0,1,1 0,0,2,1,2,1,1,0,1,1,1,2,1,0 3,0,6,2,4,8,3,0,0,1,1,0,1,0 1,5,10,3,0,5,0,0,0,1,1,2,1,1 1,0,0,3,1,4,3,2,1,1,1,1,1,0 1,0,3,2,0,3,2,0,1,1,1,1,1,1 1,4,1,2,2,8,5,2,0,1,1,2,1,0 0,0,1,2,0,3,2,0,1,1,1,1,1,1 0,0,2,1,2,6,1,0,1,1,1,0,1,0 0,0,3,2,2,4,1,0,0,1,1,0,1,0 1,4,0,3,1,5,5,0,0,1,1,1,1,1 0,0,10,3,2,5,3,0,0,1,1,0,1,1 0,3,0,3,2,5,3,0,1,1,1,0,1,1 0,0,3,2,2,8,3,0,0,1,1,0,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 0,0,3,2,2,2,1,0,1,1,1,2,1,0 2,0,3,2,0,11,4,4,0,1,1,2,1,0 2,0,4,3,0,5,2,0,1,1,1,2,1,1 0,0,1,2,2,2,3,0,1,1,1,1,1,0 1,2,1,2,1,4,5,0,0,1,1,2,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,1 1,4,3,2,0,12,2,0,1,1,1,0,1,1 2,0,3,2,1,3,4,0,0,1,1,0,1,0 1,0,1,2,0,8,0,0,0,1,1,1,1,1 1,0,3,2,2,4,3,0,0,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,0,1,1 1,5,3,2,0,2,2,0,1,1,1,0,1,0 1,0,3,2,1,2,5,4,1,1,1,2,1,0 0,5,3,2,0,8,2,0,1,1,1,0,1,0 1,0,1,2,0,3,2,0,1,1,1,0,1,1 0,0,3,2,0,7,2,4,1,1,1,0,1,0 2,0,1,2,1,4,4,0,0,1,1,2,1,0 1,0,2,1,0,7,2,0,1,1,1,0,1,0 0,0,1,2,0,10,2,0,1,1,1,1,1,0 0,0,7,1,2,7,1,0,0,1,1,2,1,0 1,0,6,2,1,3,3,0,1,1,1,1,1,0 1,1,8,0,0,4,2,0,1,1,1,1,1,1 1,0,0,3,0,3,2,0,1,1,1,1,1,1 3,1,8,0,0,9,2,0,1,1,1,2,1,0 0,0,1,2,2,2,1,0,0,1,1,0,1,0 1,4,10,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,2,6,1,0,1,1,1,0,1,0 1,0,1,2,3,4,3,4,1,1,1,0,1,0 1,0,3,2,0,4,2,0,1,1,1,1,1,1 1,0,3,2,0,1,2,0,1,1,1,1,1,1 0,3,3,2,2,8,3,0,0,1,1,0,1,0 0,0,3,2,2,2,1,0,0,1,1,0,1,0 0,0,1,2,1,8,5,0,0,1,1,2,1,0 0,0,3,2,2,1,1,0,1,1,1,0,1,0 1,0,0,3,0,10,2,0,1,1,1,1,1,1 0,0,3,2,1,3,3,0,0,1,1,2,1,0 0,4,1,2,2,12,1,0,1,1,1,0,1,0 0,3,1,2,1,8,5,0,0,1,1,0,1,0 1,0,0,3,1,4,3,0,0,1,1,1,1,0 0,0,1,2,2,2,1,0,1,1,1,2,1,0 0,0,3,2,2,2,3,4,1,1,1,0,1,0 2,0,0,3,0,0,2,0,1,1,1,2,1,1 0,0,0,3,2,3,1,0,1,1,1,0,1,0 0,1,3,2,1,10,3,0,1,1,1,1,1,0 0,0,3,2,3,8,3,0,0,1,1,0,1,0 1,0,3,2,1,2,3,0,1,1,1,1,1,0 2,0,1,2,0,5,2,0,1,1,1,2,1,0 2,0,1,2,0,3,2,0,1,1,1,1,1,1 0,0,3,2,2,3,1,4,0,1,1,0,1,0 1,3,10,3,1,12,3,0,1,1,1,1,1,1 2,0,14,0,2,6,3,4,1,1,1,0,1,0 2,0,5,2,4,8,5,0,0,1,1,2,1,0 0,0,1,2,0,3,2,0,1,1,1,1,1,0 0,0,1,2,2,3,3,0,0,1,1,1,1,0 0,5,10,3,2,5,3,0,0,1,1,1,1,0 1,2,1,2,1,7,3,0,1,1,1,1,1,0 2,0,1,2,4,8,3,0,0,1,1,0,1,0 2,0,3,2,1,8,3,0,0,1,1,0,1,0 0,0,3,2,1,1,3,0,1,1,1,1,1,0 2,0,3,2,4,3,3,0,0,1,1,2,1,0 0,0,3,2,1,7,5,4,0,1,1,0,1,0 1,2,4,3,0,5,2,0,1,1,1,1,1,1 0,0,0,3,2,8,3,0,1,1,1,1,1,0 0,0,2,1,2,2,5,2,1,1,1,0,1,0 1,0,0,3,0,5,2,0,1,1,1,2,1,0 1,0,0,3,0,5,2,0,1,1,1,0,1,1 0,0,2,1,2,2,1,4,0,1,1,2,1,0 0,0,1,2,0,5,2,0,1,1,1,1,1,0 0,0,10,3,2,5,1,0,1,1,1,2,1,0 0,0,5,2,0,8,0,0,0,1,1,0,1,0 0,0,12,1,2,3,1,0,1,1,1,2,1,0 1,5,10,3,3,5,3,0,1,1,1,2,1,0 1,0,3,2,4,2,5,4,0,1,1,2,1,0 1,0,3,2,1,2,5,0,0,1,1,2,1,0 0,0,0,3,2,8,3,0,0,1,1,0,1,0 1,1,1,2,0,9,2,0,1,1,1,1,1,0 1,0,3,2,4,2,5,4,0,1,1,2,1,0 1,0,3,2,0,3,0,0,0,1,1,2,1,0 0,0,1,2,2,8,3,0,1,1,1,2,1,0 0,0,0,3,2,3,1,0,1,1,1,0,1,0 1,0,14,0,0,10,2,0,1,1,1,2,1,0 1,0,2,1,0,1,2,0,1,1,1,1,1,0 1,0,11,0,0,7,2,0,1,1,1,0,1,1 1,0,10,3,2,5,3,0,0,1,1,0,1,0 0,0,3,2,2,2,3,0,0,1,1,0,1,0 0,3,0,3,0,4,2,0,1,1,1,0,1,0 0,0,1,2,2,7,1,0,1,1,1,1,1,0 0,0,12,1,1,1,1,0,1,1,1,0,1,0 0,4,9,1,2,5,1,0,1,1,1,2,1,0 1,0,0,3,0,5,2,4,1,1,1,2,1,0 1,0,3,2,0,4,0,0,0,1,1,1,1,0 0,5,3,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,2,7,3,0,1,1,1,0,1,0 2,1,0,3,0,4,2,0,1,1,1,0,1,1 1,0,10,3,0,5,2,0,1,1,1,1,1,1 2,4,3,2,0,4,2,0,1,1,1,1,1,0 1,0,1,2,0,4,2,0,1,1,1,1,1,0 2,1,1,2,0,3,2,0,1,1,1,1,1,1 2,2,4,3,0,5,2,0,1,1,1,1,1,1 0,0,0,3,2,8,3,1,0,1,1,0,1,0 0,0,2,1,2,3,1,0,0,1,1,2,1,0 1,0,3,2,1,1,3,0,1,1,1,0,1,0 2,1,1,2,0,2,0,0,0,1,1,2,1,0 0,0,12,1,1,3,3,0,0,1,1,0,1,0 1,0,7,1,0,1,2,0,1,1,1,0,1,0 1,0,4,3,2,5,3,0,1,1,1,0,1,1 1,4,4,3,1,5,5,4,0,1,1,0,1,0 0,5,0,3,0,8,2,4,1,1,1,0,1,0 1,4,1,2,0,2,2,0,1,1,1,0,1,1 1,2,3,2,0,3,2,0,1,1,1,1,1,1 1,0,1,2,0,3,2,0,1,1,1,1,1,1 1,0,0,3,0,5,2,0,1,1,1,1,1,0 1,0,1,2,0,4,2,0,1,1,1,1,1,1 0,0,1,2,2,2,1,0,0,1,1,2,1,0 1,0,5,2,0,9,2,0,1,1,1,0,1,0 0,5,1,2,2,5,1,0,0,1,1,2,1,0 2,1,3,2,0,3,0,0,0,1,1,2,1,0 0,0,3,2,3,3,4,0,0,1,1,0,1,0 0,0,1,2,2,5,3,0,1,1,1,0,1,0 0,0,6,2,2,2,5,4,0,1,1,0,1,0 1,1,4,3,2,5,3,0,1,1,1,1,1,1 1,0,10,3,0,3,2,0,1,1,1,0,1,1 1,0,11,0,2,7,3,0,0,1,1,0,1,0 0,0,9,1,2,6,5,0,1,1,1,1,1,0 0,0,0,3,0,5,2,0,1,1,1,1,1,0 0,0,1,2,0,3,0,0,0,1,1,2,1,0 0,0,3,2,1,7,5,0,1,1,1,0,1,0 0,0,1,2,0,6,2,0,1,1,1,0,1,0 2,1,8,0,1,2,5,0,0,1,1,0,1,0 0,1,0,3,2,5,1,0,1,1,1,2,1,0 0,0,3,2,2,6,1,4,1,1,1,0,1,0 1,1,7,1,0,1,2,0,1,1,1,0,1,0 1,4,3,2,0,12,2,0,1,1,1,1,1,1 1,1,0,3,0,1,2,0,1,1,1,0,1,0 1,5,10,3,1,5,5,0,0,1,1,2,1,0 1,3,5,2,0,8,0,0,0,1,1,2,1,1 0,0,3,2,2,12,4,4,1,1,1,0,1,0 0,0,14,0,2,1,3,0,1,1,1,0,1,0 2,0,2,1,0,1,2,0,1,1,1,1,1,0 0,0,8,0,0,6,2,0,1,1,1,0,1,0 0,0,2,1,2,2,4,0,1,1,1,0,1,0 0,0,3,2,2,6,4,0,1,1,1,0,1,0 0,0,1,2,3,8,3,0,0,1,1,0,1,0 1,0,0,3,0,4,2,4,1,1,1,0,1,0 1,0,10,3,1,4,3,0,0,1,1,1,1,1 2,0,15,0,4,1,5,4,1,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,1 0,3,3,2,6,3,0,0,0,1,1,0,1,0 0,4,0,3,1,5,5,0,0,1,1,0,1,0 1,0,3,2,0,8,2,0,1,1,1,1,1,0 1,0,3,2,5,2,1,0,0,1,1,0,1,0 3,0,1,2,3,8,1,0,0,1,1,0,1,0 2,0,4,3,0,4,2,0,1,1,1,2,1,0 0,0,3,2,2,5,3,0,0,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,1,2,3,8,5,0,0,1,1,2,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,1 2,0,12,1,3,2,3,0,0,1,1,2,1,0 0,4,10,3,2,5,1,1,1,1,1,0,1,0 0,0,3,2,1,0,5,0,0,1,1,2,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,1 2,2,0,3,0,4,2,0,1,1,1,1,1,1 1,0,3,2,0,6,2,0,1,1,1,0,1,0 1,0,1,2,0,3,2,0,1,1,1,0,1,0 0,0,1,2,0,2,2,0,1,1,1,1,1,0 1,0,2,1,1,2,5,0,0,1,1,0,1,0 3,0,7,1,4,11,3,4,0,1,1,2,1,0 0,4,3,2,1,8,1,0,0,1,1,0,1,0 0,0,9,1,2,2,1,0,0,1,1,2,1,0 0,0,3,2,2,6,1,0,1,1,1,2,1,0 0,0,1,2,2,3,1,0,0,1,1,0,1,0 1,0,3,2,3,8,5,0,0,1,1,1,1,0 0,4,10,3,2,8,3,0,0,1,1,0,1,0 0,0,2,1,2,7,5,0,0,1,1,0,1,0 0,0,10,3,0,3,0,0,0,1,1,0,1,0 1,0,1,2,1,3,5,0,0,1,1,2,1,0 0,0,3,2,0,0,2,0,1,1,1,0,1,1 0,0,0,3,0,4,2,0,1,1,1,1,1,0 1,0,3,2,0,3,2,0,1,1,1,1,1,1 2,1,3,2,0,9,2,0,1,1,1,1,1,0 0,0,8,0,2,1,4,0,1,1,1,2,1,0 2,0,3,2,1,1,5,4,1,1,1,0,1,0 1,1,6,2,0,4,2,0,1,1,1,1,1,0 1,0,3,2,2,1,3,0,1,1,1,0,1,0 1,0,5,2,0,3,0,0,0,1,1,0,1,1 1,0,3,2,1,7,1,4,0,1,1,2,1,0 0,0,0,3,2,8,1,0,0,1,1,0,1,0 0,0,12,1,0,10,2,0,1,1,1,1,1,0 1,1,3,2,2,1,3,0,1,1,1,2,1,0 0,1,4,3,2,5,1,0,1,1,1,1,1,1 0,0,0,3,2,7,1,0,1,1,1,2,1,0 1,4,1,2,0,8,2,0,1,1,1,1,1,0 0,0,1,2,2,2,1,4,1,1,1,0,1,0 0,0,3,2,2,2,1,0,1,1,1,0,1,0 1,0,2,1,0,7,0,4,0,1,1,0,1,0 1,1,1,2,0,9,2,0,1,1,1,0,1,0 0,0,3,2,2,3,5,4,0,1,1,2,1,0 3,0,1,2,0,4,2,0,1,1,1,2,1,1 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,5,0,3,2,0,1,1,1,1,1,2,1,0 0,4,2,1,2,2,1,0,0,1,1,2,1,0 0,0,3,2,2,1,1,4,1,1,1,0,1,0 0,0,15,0,2,2,4,0,0,1,1,2,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,1 0,0,3,2,2,1,1,0,1,1,1,1,1,0 0,0,0,3,0,5,2,0,1,1,1,1,1,1 1,0,1,2,4,4,5,4,0,1,1,2,1,0 0,0,0,3,0,12,2,4,1,1,1,2,1,0 0,0,3,2,2,7,5,4,0,1,1,0,1,0 1,0,1,2,0,5,2,0,1,1,1,0,1,0 2,0,0,3,0,4,2,0,1,1,1,2,1,1 1,4,10,3,3,5,5,0,0,1,1,1,1,0 1,0,1,2,1,4,3,0,0,1,1,0,1,0 1,2,12,1,0,9,2,0,1,1,1,1,1,0 0,0,0,3,2,5,3,0,1,1,1,1,1,0 1,0,6,2,0,5,2,0,1,1,1,0,1,1 1,1,3,2,2,9,1,0,1,1,1,1,1,0 0,0,3,2,2,1,1,0,0,1,1,1,1,0 1,0,1,2,0,4,2,0,1,1,1,1,1,1 0,0,3,2,2,1,3,0,1,1,1,2,1,0 3,0,3,2,4,8,3,0,0,1,1,0,1,0 1,2,0,3,0,3,2,0,1,1,1,1,1,1 0,0,1,2,2,3,3,0,1,1,1,2,1,0 1,1,0,3,2,9,3,0,1,1,1,1,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,1 0,0,3,2,1,6,1,0,1,1,1,2,1,0 1,0,3,2,0,3,2,0,1,1,1,0,1,1 1,0,2,1,0,1,2,4,1,1,1,0,1,0 0,0,1,2,2,8,5,4,0,1,1,0,1,0 0,0,3,2,1,1,3,0,1,1,1,2,1,0 2,0,1,2,0,3,2,0,1,1,1,1,1,1 0,0,3,2,1,7,5,0,1,1,1,1,1,0 1,5,1,2,1,8,5,4,0,1,1,2,1,0 1,0,10,3,2,4,3,0,1,1,1,0,1,1 0,0,7,1,2,6,4,0,1,1,1,2,1,0 1,2,1,2,0,4,2,0,1,1,1,0,1,0 2,1,3,2,0,9,2,0,1,1,1,2,1,0 0,0,1,2,1,8,5,0,0,1,1,0,1,0 0,0,0,3,2,2,1,0,0,1,1,2,1,0 2,4,2,1,0,1,2,4,1,1,1,0,1,1 1,0,1,2,2,6,3,0,1,1,1,0,1,0 0,0,1,2,2,1,1,0,1,1,1,0,1,0 1,0,10,3,0,4,2,1,1,1,1,1,1,0 0,0,1,2,2,5,1,0,1,1,1,2,1,0 2,1,1,2,1,3,3,0,1,1,1,0,1,0 1,0,6,2,2,4,5,0,0,1,1,2,1,0 0,0,12,1,0,9,0,2,0,1,1,0,1,0 0,1,0,3,0,3,2,0,1,1,1,1,1,0 1,4,2,1,0,10,2,0,1,1,1,2,1,0 1,0,0,3,2,4,3,0,1,1,1,1,1,0 1,0,3,2,1,7,4,0,0,1,1,2,1,0 1,0,3,2,0,6,2,0,1,1,1,2,1,0 0,0,8,0,0,7,2,0,1,1,1,0,1,0 2,0,8,0,0,1,2,0,1,1,1,1,1,0 1,0,1,2,3,2,5,0,0,1,1,0,1,0 0,0,1,2,1,3,3,0,0,1,1,2,1,0 0,0,5,2,2,8,3,0,0,1,1,0,1,0 1,0,6,2,1,0,5,0,0,1,1,1,1,0 1,0,1,2,1,0,4,0,1,1,1,2,1,0 0,0,3,2,2,1,4,0,1,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,1,1,0 1,2,3,2,0,3,0,0,0,1,1,1,1,0 1,0,10,3,3,4,3,0,1,1,1,1,1,1 1,0,0,3,0,5,2,0,1,1,1,1,1,1 2,5,13,3,2,5,3,0,0,1,1,0,1,1 0,0,3,2,0,6,2,0,1,1,1,0,1,1 0,1,3,2,2,4,3,0,1,1,1,1,1,0 1,5,0,3,0,8,2,0,1,1,1,0,1,0 2,3,0,3,0,5,2,0,1,1,1,0,1,1 0,0,3,2,2,9,1,0,1,1,1,1,1,0 1,0,1,2,2,4,3,4,0,1,1,0,1,0 1,5,13,3,0,5,2,0,1,1,1,0,1,1 2,0,4,3,0,1,2,1,1,1,1,0,1,1 1,0,0,3,0,1,2,0,1,1,1,0,1,1 0,0,3,2,2,3,1,0,0,1,1,2,1,0 1,1,3,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,0,7,2,0,1,1,1,1,1,0 1,2,4,3,0,5,2,0,1,1,1,1,1,1 0,0,1,2,2,2,3,0,1,1,1,0,1,0 0,5,10,3,0,4,2,0,1,1,1,0,1,0 2,0,3,2,4,7,5,0,0,1,1,0,1,0 0,0,3,2,3,7,5,0,0,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,1,1,1 0,0,3,2,6,8,2,0,1,1,1,1,1,0 2,0,10,3,0,3,2,0,1,1,1,1,1,1 2,4,0,3,4,5,5,0,0,1,1,2,1,0 1,0,3,2,1,8,1,0,0,1,1,0,1,0 1,4,9,1,0,1,2,0,1,1,1,1,1,0 1,1,1,2,0,3,2,0,1,1,1,1,1,1 1,4,4,3,2,4,3,4,0,1,1,1,1,1 0,5,0,3,2,5,3,0,1,1,1,2,1,0 0,0,1,2,2,8,4,0,0,1,1,0,1,0 0,0,3,2,2,6,4,0,1,1,1,2,1,0 2,0,14,0,1,10,3,0,1,1,1,1,1,0 2,0,1,2,1,8,3,0,1,1,1,2,1,0 0,0,0,3,2,3,3,0,1,1,1,0,1,0 1,1,1,2,0,9,2,0,1,1,1,2,1,0 1,2,5,2,0,4,2,0,1,1,1,1,1,1 2,2,4,3,0,10,2,0,1,1,1,1,1,1 1,0,0,3,1,3,5,0,0,1,1,1,1,0 0,0,1,2,0,10,2,0,1,1,1,1,1,1 0,0,3,2,0,6,2,0,1,1,1,1,1,0 1,1,3,2,0,4,2,0,1,1,1,1,1,0 0,1,3,2,0,7,2,0,1,1,1,0,1,0 2,0,3,2,0,3,2,0,1,1,1,0,1,1 2,4,12,1,0,4,2,0,1,1,1,2,1,0 0,0,1,2,2,8,1,0,0,1,1,0,1,0 1,0,3,2,0,10,2,0,1,1,1,0,1,0 0,0,1,2,2,2,1,0,1,1,1,2,1,0 1,0,5,2,1,5,3,0,0,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,0 1,0,3,2,1,6,3,0,1,1,1,0,1,0 1,0,3,2,5,5,3,1,1,1,1,0,1,1 0,0,1,2,2,10,1,0,1,1,1,2,1,0 1,4,0,3,4,8,3,0,0,1,1,0,1,0 0,0,1,2,1,4,3,0,1,1,1,1,1,0 1,0,2,1,1,2,5,4,0,1,1,0,1,0 0,0,3,2,2,4,1,0,0,1,1,0,1,0 0,0,1,2,0,4,2,0,1,1,1,1,1,1 0,0,3,2,2,1,1,4,1,1,1,0,1,0 0,0,1,2,2,3,1,0,1,1,1,0,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 0,0,0,3,0,3,2,0,1,1,1,0,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,1 0,5,1,2,2,2,1,0,1,1,1,0,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,1 1,5,4,3,0,5,2,0,1,1,1,2,1,1 0,0,3,2,1,7,5,0,0,1,1,0,1,0 3,2,1,2,4,4,5,0,1,1,1,0,1,0 0,0,3,2,2,1,1,0,1,1,1,0,1,0 0,0,1,2,2,6,1,0,1,1,1,2,1,0 0,1,1,2,2,9,1,0,1,1,1,2,1,0 1,0,3,2,1,7,5,4,0,1,1,1,1,0 1,4,3,2,1,8,5,0,0,1,1,2,1,0 1,1,0,3,0,3,2,0,1,1,1,1,1,1 1,0,1,2,3,8,3,0,0,1,1,0,1,0 1,0,4,3,0,0,2,0,1,1,1,0,1,1 2,1,7,1,0,9,2,0,1,1,1,1,1,0 1,2,0,3,0,4,2,0,1,1,1,0,1,1 1,4,0,3,0,5,0,0,0,1,1,1,1,0 1,2,0,3,0,4,2,0,1,1,1,0,1,1 0,4,0,3,2,5,3,0,0,1,1,0,1,0 1,5,1,2,1,5,5,0,0,1,1,0,1,0 0,0,9,1,2,3,1,0,0,1,1,2,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,0 2,2,3,2,0,9,2,0,1,1,1,1,1,0 0,0,1,2,1,7,1,0,0,1,1,0,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 0,0,1,2,0,3,2,0,1,1,1,0,1,0 1,0,4,3,0,5,2,0,1,1,1,1,1,1 1,4,0,3,0,4,2,0,1,1,1,1,1,1 0,0,1,2,0,4,1,0,1,1,1,1,1,1 0,0,1,2,2,3,1,0,0,1,1,2,1,0 0,3,0,3,2,5,3,1,1,1,1,0,1,0 1,0,13,3,0,5,2,0,1,1,1,1,1,1 0,0,3,2,2,8,1,0,1,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,1,2,2,2,1,0,1,1,1,2,1,0 0,0,1,2,0,0,2,0,1,1,1,1,1,0 1,2,0,3,0,3,2,0,1,1,1,1,1,0 0,0,5,2,2,9,3,0,1,1,1,1,1,0 0,0,14,0,2,9,3,0,1,1,1,2,1,0 2,0,1,2,1,8,5,0,0,1,1,0,1,0 0,0,1,2,2,1,1,0,1,1,1,0,1,0 0,0,3,2,0,8,0,0,0,1,1,0,1,1 1,0,6,2,1,8,5,0,0,1,1,0,1,0 0,0,1,2,2,8,1,0,0,1,1,0,1,0 2,0,10,3,0,4,2,0,1,1,1,1,1,1 1,5,3,2,0,8,2,0,1,1,1,0,1,0 0,0,0,3,2,4,1,0,1,1,1,1,1,0 0,0,1,2,0,7,2,0,1,1,1,0,1,0 2,3,5,2,3,5,3,0,0,1,1,0,1,1 1,0,2,1,1,2,5,3,0,1,1,0,1,0 1,0,1,2,0,10,2,0,1,1,1,0,1,0 1,0,3,2,2,1,1,0,1,1,1,1,1,1 1,3,0,3,0,5,2,0,1,1,1,1,1,1 2,0,3,2,0,10,2,0,1,1,1,0,1,0 1,1,1,2,2,9,3,0,1,1,1,1,1,0 1,0,12,1,0,3,2,0,1,1,1,0,1,1 1,3,3,2,1,8,5,0,0,1,1,0,1,0 0,0,1,2,2,8,1,0,1,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,1 0,0,3,2,0,1,2,0,1,1,1,1,1,0 1,4,3,2,0,1,2,0,1,1,1,0,1,0 0,0,10,3,0,4,2,4,1,1,1,0,1,1 1,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,3,2,0,3,2,0,1,1,1,0,1,0 0,0,0,3,2,5,3,0,0,1,1,0,1,0 1,0,1,2,0,4,2,1,1,1,1,0,1,0 2,2,3,2,0,4,2,0,1,1,1,1,1,0 1,0,3,2,0,6,2,0,1,1,1,0,1,0 0,5,0,3,2,5,3,0,1,1,1,2,1,0 2,1,13,3,0,4,2,0,1,1,1,2,1,1 2,3,0,3,0,5,2,0,1,1,1,0,1,1 1,0,3,2,0,3,2,0,1,1,1,1,1,1 0,0,3,2,0,3,2,0,1,1,1,1,1,1 0,0,4,3,2,5,1,0,1,1,1,1,1,1 0,0,1,2,0,2,2,0,1,1,1,0,1,0 2,4,3,2,4,1,3,4,1,1,1,0,1,0 2,0,6,2,0,4,2,0,1,1,1,0,1,1 1,4,10,3,1,5,5,0,1,1,1,0,1,0 0,0,3,2,2,1,1,4,1,1,1,0,1,0 1,0,3,2,2,7,3,0,1,1,1,0,1,0 1,4,3,2,0,4,0,0,0,1,1,1,1,1 0,0,12,1,0,4,0,0,0,1,1,0,1,0 1,0,10,3,0,5,2,0,1,1,1,2,1,1 0,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,3,2,0,10,2,0,1,1,1,2,1,0 0,5,1,2,2,8,1,0,0,1,1,0,1,0 1,1,10,3,0,3,2,0,1,1,1,1,1,0 1,5,1,2,2,5,3,0,1,1,1,0,1,0 0,0,1,2,0,6,0,0,0,1,1,2,1,0 1,4,1,2,0,4,2,0,1,1,1,0,1,0 1,0,4,3,1,5,3,0,1,1,1,1,1,1 1,0,0,3,0,8,0,0,0,1,1,0,1,1 0,0,3,2,2,6,1,0,1,1,1,1,1,0 2,1,3,2,5,2,5,0,0,1,1,1,1,0 0,1,9,1,2,2,3,4,0,1,1,0,1,0 0,4,3,2,0,12,2,0,1,1,1,0,1,1 0,0,3,2,2,1,1,0,1,1,1,0,1,0 0,0,5,2,2,7,5,0,1,1,1,1,1,0 1,0,3,2,4,3,3,0,0,1,1,0,1,0 2,5,0,3,2,5,5,1,0,1,1,0,1,1 0,0,0,3,0,3,2,0,1,1,1,1,1,1 0,0,0,3,0,3,2,0,1,1,1,1,1,0 2,0,3,2,3,3,5,4,0,1,1,0,1,0 1,2,1,2,0,7,2,0,1,1,1,1,1,0 1,0,12,1,0,1,2,0,1,1,1,1,1,1 1,0,8,0,3,7,3,4,0,1,1,2,1,0 2,0,1,2,2,2,3,0,0,1,1,1,1,0 0,0,9,1,1,7,5,4,0,1,1,0,1,0 0,0,3,2,1,2,1,4,1,1,1,2,1,0 0,0,3,2,5,3,5,0,1,1,1,0,1,0 0,0,14,0,5,9,4,0,1,1,1,0,1,0 1,2,3,2,0,3,2,0,1,1,1,1,1,0 1,0,3,2,0,7,0,0,0,1,1,0,1,1 2,0,1,2,0,3,2,1,1,1,1,0,1,1 0,0,7,1,2,7,3,0,1,1,1,1,1,0 0,0,3,2,2,3,1,1,1,1,1,1,1,0 1,0,0,3,0,3,0,0,0,1,1,2,1,0 1,2,0,3,4,3,5,0,1,1,1,1,1,1 0,0,8,0,2,1,5,0,1,1,1,0,1,0 1,4,0,3,0,4,2,0,1,1,1,1,1,1 1,0,12,1,4,7,3,0,1,1,1,0,1,0 2,0,3,2,4,5,3,0,0,1,1,2,1,0 0,0,5,2,0,6,2,0,1,1,1,0,1,0 1,0,0,3,0,3,2,0,1,1,1,1,1,1 3,3,3,2,4,2,3,0,1,1,1,2,1,0 0,0,1,2,2,8,1,0,1,1,1,2,1,0 0,0,1,2,0,1,2,0,1,1,1,1,1,0 0,0,0,3,0,9,2,0,1,1,1,1,1,1 2,0,0,3,0,1,2,0,1,1,1,1,1,1 1,0,0,3,0,3,2,0,1,1,1,1,1,1 2,0,2,1,1,8,5,0,0,1,1,0,1,0 1,2,0,3,1,4,3,0,1,1,1,1,1,1 1,4,3,2,0,2,2,0,1,1,1,1,1,0 0,1,1,2,2,1,5,0,1,1,1,2,1,0 1,0,0,3,1,8,3,4,1,1,1,1,1,0 2,1,4,3,0,3,0,0,0,1,1,2,1,1 1,1,0,3,0,9,2,0,1,1,1,1,1,1 2,4,12,1,0,10,2,0,1,1,1,0,1,0 1,0,0,3,0,3,2,0,1,1,1,0,1,0 1,0,8,0,1,7,3,0,1,1,1,1,1,0 1,0,0,3,0,4,0,4,0,1,1,2,1,1 1,0,3,2,1,7,3,0,0,1,1,0,1,0 0,0,3,2,2,2,5,4,0,1,1,2,1,0 1,1,8,0,0,1,2,0,1,1,1,2,1,0 1,0,3,2,5,1,3,0,1,1,1,0,1,0 0,0,1,2,2,5,1,0,1,1,1,0,1,0 1,0,0,3,0,4,2,3,1,1,1,0,1,0 0,0,1,2,2,2,5,0,0,1,1,0,1,0 1,0,1,2,3,2,3,4,1,1,1,0,1,0 0,0,3,2,2,6,3,0,1,1,1,0,1,0 0,0,7,1,2,7,4,0,1,1,1,1,1,0 1,4,0,3,3,5,5,0,1,1,1,0,1,0 1,0,1,2,0,3,2,0,1,1,1,0,1,1 0,0,6,2,2,3,3,0,1,1,1,1,1,0 1,2,0,3,0,3,2,0,1,1,1,1,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 1,5,2,1,0,8,2,0,1,1,1,0,1,0 0,0,1,2,2,3,1,4,0,1,1,2,1,0 1,4,0,3,2,5,3,0,0,1,1,0,1,1 0,0,3,2,2,6,5,0,1,1,1,1,1,0 1,1,3,2,0,1,2,0,1,1,1,0,1,1 0,0,3,2,1,1,1,0,1,1,1,1,1,0 0,0,3,2,2,6,1,0,1,1,1,1,1,0 1,0,5,2,1,5,5,0,0,1,1,2,1,0 0,0,0,3,0,5,2,0,1,1,1,0,1,1 0,0,3,2,2,1,3,0,1,1,1,0,1,0 1,1,3,2,0,10,2,0,1,1,1,0,1,1 0,0,1,2,2,8,3,0,0,1,1,1,1,0 1,2,5,2,3,4,3,0,1,1,1,1,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,0,3,0,0,2,0,1,1,1,0,1,0 1,0,3,2,0,5,2,0,1,1,1,0,1,1 0,0,0,3,2,5,3,4,1,1,1,1,1,1 3,0,12,1,4,2,3,0,0,1,1,2,1,0 1,3,10,3,0,4,2,0,1,1,1,0,1,1 0,0,12,1,2,1,3,0,1,1,1,1,1,0 0,0,3,2,0,1,2,0,1,1,1,1,1,1 1,4,0,3,0,5,2,0,1,1,1,0,1,1 2,0,1,2,1,8,5,0,0,1,1,1,1,0 0,4,10,3,2,5,3,0,0,1,1,1,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 2,3,3,2,0,1,2,0,1,1,1,0,1,1 1,0,0,3,1,4,5,0,0,1,1,0,1,0 0,0,1,2,2,10,3,0,1,1,1,1,1,0 0,4,13,3,2,5,3,0,1,1,1,1,1,1 1,0,1,2,2,9,4,0,1,1,1,1,1,0 1,0,3,2,3,2,4,0,0,1,1,2,1,0 0,0,4,3,0,8,2,0,1,1,1,0,1,0 0,0,3,2,2,2,1,0,1,1,1,2,1,0 0,0,14,0,2,2,3,0,1,1,1,2,1,0 0,2,1,2,0,9,2,0,1,1,1,1,1,0 0,5,5,2,0,1,2,0,1,1,1,0,1,0 1,0,2,1,0,1,2,0,1,1,1,0,1,0 0,0,2,1,1,4,5,0,0,1,1,0,1,1 2,0,0,3,0,5,2,0,1,1,1,1,1,1 1,1,3,2,0,4,2,0,1,1,1,0,1,0 1,0,3,2,1,4,5,0,0,1,1,0,1,0 0,0,1,2,2,0,3,0,0,1,1,1,1,0 0,0,3,2,0,10,2,0,1,1,1,1,1,0 0,0,1,2,2,2,5,4,0,1,1,0,1,0 0,0,1,2,2,3,3,0,0,1,1,2,1,0 0,0,5,2,1,8,5,0,0,1,1,1,1,0 1,0,2,1,1,1,4,0,0,1,1,0,1,0 2,0,3,2,0,8,2,0,1,1,1,2,1,0 1,0,0,3,0,2,2,0,1,1,1,0,1,0 1,0,3,2,1,8,5,0,0,1,1,1,1,0 1,1,0,3,1,4,3,0,1,1,1,2,1,0 0,0,1,2,2,3,3,0,1,1,1,1,1,0 2,0,3,2,1,8,3,0,0,1,1,0,1,0 1,0,3,2,0,6,2,4,1,1,1,0,1,0 1,0,5,2,0,8,2,0,1,1,1,0,1,0 1,0,1,2,2,3,3,0,0,1,1,2,1,0 2,0,0,3,0,5,2,0,1,1,1,1,1,0 0,0,3,2,0,9,2,0,1,1,1,1,1,0 0,0,0,3,2,5,1,0,0,1,1,2,1,0 1,0,2,1,2,10,3,4,1,1,1,0,1,0 2,0,9,1,4,3,3,0,0,1,1,2,1,0 1,4,1,2,2,12,3,4,1,1,1,0,1,0 1,3,1,2,0,0,2,0,1,1,1,0,1,1 0,0,1,2,0,4,2,0,1,1,1,1,1,0 0,0,3,2,2,7,1,0,1,1,1,0,1,0 1,0,1,2,2,8,1,0,0,1,1,0,1,0 1,0,5,2,0,0,2,0,1,1,1,1,1,1 1,0,1,2,0,1,2,0,1,1,1,1,1,0 1,0,1,2,0,10,2,0,1,1,1,1,1,0 2,0,10,3,4,5,3,0,0,1,1,0,1,0 1,0,3,2,1,8,5,0,0,1,1,0,1,0 0,0,1,2,1,9,3,0,0,1,1,1,1,0 2,0,1,2,0,5,2,0,1,1,1,2,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,1 2,0,0,3,1,8,5,0,0,1,1,0,1,0 0,0,3,2,2,0,4,0,1,1,1,0,1,0 0,0,3,2,1,8,5,0,0,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 0,0,3,2,2,6,1,4,1,1,1,0,1,0 1,0,3,2,1,7,3,0,0,1,1,0,1,0 0,0,3,2,0,8,0,0,0,1,1,2,1,1 1,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,4,1,5,0,0,1,1,0,1,0 0,0,3,2,3,2,3,0,1,1,1,0,1,0 2,4,3,2,1,8,5,0,0,1,1,1,1,0 1,0,3,2,3,2,5,0,0,1,1,1,1,0 1,2,6,2,0,3,2,3,1,1,1,1,1,0 0,0,1,2,2,8,1,0,1,1,1,2,1,0 1,0,2,1,2,7,3,4,0,1,1,0,1,0 0,0,6,2,3,8,5,0,0,1,1,0,1,0 1,0,14,0,5,1,4,0,1,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,0,3,0,5,0,0,0,1,1,0,1,1 0,0,3,2,5,9,3,3,1,1,1,0,1,0 0,0,3,2,0,8,0,0,0,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,1 0,0,2,1,2,6,5,0,1,1,1,2,1,0 0,0,0,3,2,5,3,0,1,1,1,0,1,0 0,0,6,2,2,8,1,0,0,1,1,0,1,0 0,0,1,2,2,8,1,0,0,1,1,1,1,0 1,0,3,2,0,8,2,0,1,1,1,0,1,1 0,0,10,3,2,4,3,0,1,1,1,0,1,1 2,2,0,3,0,3,0,0,0,1,1,0,1,1 0,0,2,1,2,11,4,0,0,1,1,0,1,0 0,0,12,1,2,2,1,4,0,1,1,2,1,0 1,0,1,2,0,4,2,0,1,1,1,0,1,0 0,0,1,2,2,8,1,0,0,1,1,2,1,0 1,0,0,3,0,4,2,0,1,1,1,0,1,1 1,0,2,1,0,7,2,0,1,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,0 1,1,4,3,0,5,2,0,1,1,1,1,1,1 2,0,3,2,0,4,2,0,1,1,1,1,1,0 1,0,4,3,0,5,2,0,1,1,1,1,1,0 0,0,3,2,3,2,1,0,0,1,1,2,1,0 1,0,3,2,1,0,5,0,0,1,1,0,1,0 1,0,12,1,0,1,2,0,1,1,1,1,1,0 0,0,1,2,0,1,2,0,1,1,1,1,1,0 0,1,12,1,0,10,2,4,1,1,1,1,1,0 1,0,0,3,0,3,2,0,1,1,1,0,1,0 1,1,3,2,0,1,2,0,1,1,1,1,1,0 0,0,3,2,3,8,5,0,0,1,1,0,1,0 0,0,7,1,2,7,5,3,1,1,1,0,1,0 0,0,0,3,0,4,2,0,1,1,1,0,1,1 1,1,6,2,0,1,2,0,1,1,1,0,1,1 1,0,6,2,0,1,2,0,1,1,1,0,1,0 1,0,3,2,0,7,0,4,0,1,1,0,1,1 1,0,12,1,0,10,2,0,1,1,1,0,1,0 1,0,3,2,0,3,2,0,1,1,1,0,1,0 1,1,0,3,0,9,2,0,1,1,1,0,1,1 1,0,13,3,0,5,2,0,1,1,1,1,1,1 1,0,13,3,4,5,5,0,1,1,1,0,1,1 0,0,1,2,2,2,1,0,0,1,1,2,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,0 0,0,6,2,0,9,2,0,1,1,1,1,1,0 0,0,3,2,2,2,1,0,0,1,1,2,1,0 2,2,4,3,3,5,3,0,1,1,1,0,1,1 1,5,0,3,2,4,3,0,0,1,1,0,1,0 1,3,3,2,2,7,1,4,1,1,1,0,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,3,2,0,10,2,4,1,1,1,1,1,0 1,1,1,2,0,1,2,0,1,1,1,0,1,0 2,0,3,2,0,1,2,0,1,1,1,0,1,1 0,0,2,1,2,9,3,0,1,1,1,1,1,0 1,0,14,0,0,8,2,0,1,1,1,0,1,0 1,4,1,2,0,4,2,0,1,1,1,0,1,0 0,0,6,2,0,7,2,2,1,1,1,0,1,0 1,0,1,2,0,4,2,0,1,1,1,0,1,1 0,0,5,2,0,3,2,0,1,1,1,1,1,1 1,0,7,1,3,6,5,4,0,1,1,1,1,0 1,3,10,3,0,4,2,0,1,1,1,0,1,1 0,0,1,2,2,7,3,4,0,1,1,2,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,0,3,0,3,2,0,1,1,1,1,1,1 1,1,1,2,0,1,2,0,1,1,1,0,1,0 2,0,1,2,0,1,2,0,1,1,1,0,1,0 1,4,3,2,3,4,5,0,1,1,1,0,1,0 0,0,1,2,2,3,3,0,0,1,1,2,1,0 1,5,0,3,0,4,2,0,1,1,1,0,1,1 1,0,1,2,2,4,3,0,1,1,1,1,1,0 0,0,1,2,2,2,3,0,1,1,1,1,1,0 0,5,3,2,3,8,3,0,0,1,1,0,1,0 1,0,6,2,1,2,3,0,0,1,1,2,1,0 1,0,0,3,5,5,3,0,1,1,1,0,1,0 1,0,14,0,0,9,2,0,1,1,1,2,1,0 0,0,5,2,2,2,1,0,1,1,1,2,1,0 1,4,5,2,1,5,3,0,1,1,1,1,1,0 2,0,10,3,0,3,2,0,1,1,1,0,1,0 1,2,1,2,0,3,2,0,1,1,1,1,1,0 0,0,1,2,2,10,1,0,0,1,1,0,1,0 1,1,0,3,0,0,0,0,0,1,1,1,1,1 0,0,12,1,2,3,1,0,0,1,1,2,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,0 1,0,3,2,0,3,2,0,1,1,1,1,1,0 1,0,3,2,1,2,3,0,0,1,1,2,1,0 1,0,3,2,0,10,2,0,1,1,1,0,1,1 1,0,3,2,0,1,2,0,1,1,1,0,1,0 2,1,3,2,0,1,2,0,1,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,1 0,2,1,2,2,5,3,0,1,1,1,1,1,0 0,0,3,2,2,6,3,0,1,1,1,1,1,0 1,0,1,2,0,1,2,4,1,1,1,0,1,1 0,0,12,1,2,2,4,2,1,1,1,0,1,0 2,0,10,3,1,5,3,0,1,1,1,1,1,0 1,0,0,3,0,4,2,0,1,1,1,0,1,1 0,0,15,0,0,9,2,0,1,1,1,0,1,0 2,0,9,1,0,1,2,0,1,1,1,0,1,0 1,1,3,2,0,3,2,0,1,1,1,1,1,1 0,4,0,3,2,4,3,0,0,1,1,1,1,0 1,0,6,2,1,3,1,0,1,1,1,1,1,0 1,0,0,3,0,5,0,0,0,1,1,0,1,1 0,5,5,2,2,8,1,0,0,1,1,0,1,0 1,4,0,3,1,5,5,4,0,1,1,0,1,0 1,0,1,2,2,7,1,0,1,1,1,0,1,0 0,0,1,2,2,5,1,0,0,1,1,2,1,0 0,0,0,3,0,3,2,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 0,0,3,2,1,10,3,0,1,1,1,1,1,0 0,2,2,1,2,5,1,0,1,1,1,2,1,0 0,0,0,3,0,8,2,0,1,1,1,1,1,1 0,4,0,3,2,5,3,0,1,1,1,0,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,1 1,0,8,0,0,7,2,0,1,1,1,0,1,0 1,4,0,3,0,5,0,0,0,1,1,2,1,1 1,0,1,2,0,3,2,0,1,1,1,1,1,0 2,0,12,1,0,4,2,0,1,1,1,0,1,0 0,0,3,2,0,10,2,0,1,1,1,1,1,0 0,0,0,3,2,5,1,0,0,1,1,0,1,0 0,0,1,2,2,2,1,0,1,1,1,2,1,0 1,4,0,3,1,5,5,0,0,1,1,1,1,0 0,0,1,2,0,4,2,0,1,1,1,1,1,1 0,0,2,1,2,3,1,0,1,1,1,2,1,0 1,0,3,2,0,7,2,4,1,1,1,0,1,1 0,0,0,3,2,3,5,0,0,1,1,0,1,1 1,5,10,3,2,4,3,0,0,1,1,2,1,0 2,0,6,2,0,0,2,0,1,1,1,0,1,1 0,0,8,0,2,6,3,0,0,1,1,2,1,0 0,0,3,2,1,3,5,0,0,1,1,2,1,0 1,0,10,3,0,5,2,0,1,1,1,0,1,0 2,0,0,3,0,4,2,0,1,1,1,0,1,1 1,0,3,2,2,7,3,0,0,1,1,0,1,0 0,0,0,3,2,4,3,0,0,1,1,1,1,0 1,0,6,2,0,5,0,0,0,1,1,0,1,1 2,0,7,1,0,2,2,0,1,1,1,2,1,0 0,0,1,2,2,8,5,0,0,1,1,0,1,0 0,0,6,2,0,5,2,0,1,1,1,0,1,0 0,0,3,2,0,2,0,0,0,1,1,2,1,1 0,0,0,3,2,4,3,0,0,1,1,0,1,1 0,0,2,1,2,2,4,4,1,1,1,2,1,0 0,1,1,2,0,1,2,0,1,1,1,1,1,1 0,0,3,2,0,6,2,0,1,1,1,1,1,0 0,0,10,3,0,5,2,0,1,1,1,0,1,0 1,0,0,3,0,0,2,0,1,1,1,0,1,0 0,0,0,3,2,5,5,0,0,1,1,2,1,0 1,0,4,3,0,1,2,0,1,1,1,0,1,1 1,0,3,2,1,4,5,0,0,1,1,1,1,0 0,0,0,3,2,4,3,0,0,1,1,0,1,0 0,1,13,3,0,4,2,0,1,1,1,0,1,0 0,1,1,2,1,8,1,0,1,1,1,0,1,0 0,4,10,3,2,12,3,0,1,1,1,0,1,0 1,0,1,2,0,10,2,0,1,1,1,1,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 2,0,3,2,4,3,3,0,0,1,1,2,1,0 1,0,7,1,1,1,5,0,0,1,1,0,1,0 0,0,3,2,2,8,1,0,0,1,1,0,1,0 1,0,1,2,2,0,3,0,1,1,1,0,1,1 1,0,3,2,1,4,5,0,0,1,1,1,1,0 2,1,0,3,1,5,3,0,0,1,1,0,1,1 1,0,3,2,0,1,2,0,1,1,1,1,1,1 1,4,0,3,0,12,2,0,1,1,1,0,1,1 2,0,3,2,1,2,5,0,0,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,2,1,0 2,3,1,2,0,1,2,0,1,1,1,2,1,0 1,1,12,1,0,1,2,0,1,1,1,1,1,0 1,0,1,2,0,4,2,0,1,1,1,1,1,1 0,0,3,2,2,6,1,0,1,1,1,2,1,0 0,0,3,2,0,7,2,0,1,1,1,1,1,0 0,0,1,2,2,8,1,4,1,1,1,0,1,0 0,0,3,2,0,6,2,0,1,1,1,0,1,0 0,0,12,1,2,2,1,0,1,1,1,2,1,0 1,0,3,2,1,7,3,4,0,1,1,0,1,0 1,0,1,2,0,3,2,0,1,1,1,1,1,1 2,0,9,1,0,10,2,0,1,1,1,0,1,0 0,0,1,2,2,2,1,0,1,1,1,2,1,0 0,0,3,2,2,2,4,4,1,1,1,2,1,0 1,5,13,3,0,4,2,0,1,1,1,1,1,1 3,1,3,2,4,8,3,0,0,1,1,2,1,0 1,2,5,2,0,4,2,0,1,1,1,0,1,1 1,0,3,2,0,1,2,0,1,1,1,0,1,1 1,0,10,3,0,3,2,0,1,1,1,1,1,1 1,1,6,2,0,9,2,0,1,1,1,1,1,0 1,0,0,3,2,3,3,0,0,1,1,2,1,0 1,4,1,2,0,8,0,0,0,1,1,0,1,1 1,4,0,3,1,8,5,0,0,1,1,2,1,0 0,0,1,2,3,3,3,0,0,1,1,0,1,0 0,0,3,2,2,6,1,4,0,1,1,2,1,0 2,0,12,1,0,1,2,0,1,1,1,1,1,0 1,1,3,2,2,3,5,4,0,1,1,1,1,0 0,0,0,3,2,3,1,0,0,1,1,0,1,0 1,4,1,2,0,4,2,0,1,1,1,0,1,0 0,0,1,2,2,3,3,4,1,1,1,0,1,0 2,0,10,3,0,1,2,0,1,1,1,1,1,1 1,0,9,1,1,3,3,0,0,1,1,0,1,0 0,0,6,2,2,3,5,0,0,1,1,1,1,0 2,1,3,2,1,4,3,0,0,1,1,2,1,0 1,0,0,3,2,8,3,1,1,1,1,1,1,0 0,4,0,3,2,5,1,0,0,1,1,1,1,0 1,0,0,3,1,4,3,4,1,1,1,0,1,1 0,2,3,2,1,2,3,0,0,1,1,1,1,0 1,2,3,2,0,9,2,0,1,1,1,0,1,1 2,0,3,2,2,7,3,0,1,1,1,2,1,0 1,0,3,2,1,1,3,0,1,1,1,2,1,0 2,1,1,2,0,4,2,0,1,1,1,1,1,0 0,0,1,2,1,2,5,0,0,1,1,0,1,0 0,0,0,3,2,5,3,0,1,1,1,0,1,0 2,0,3,2,0,7,2,0,1,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,1 0,0,3,2,2,0,3,0,0,1,1,0,1,0 0,0,8,0,0,7,2,0,1,1,1,0,1,0 2,0,3,2,0,1,2,0,1,1,1,1,1,0 2,5,13,3,0,5,2,0,1,1,1,1,1,1 1,0,1,2,0,4,2,0,1,1,1,0,1,1 0,0,2,1,2,2,1,0,0,1,1,2,1,0 1,5,13,3,0,5,2,0,1,1,1,1,1,1 1,2,13,3,0,5,2,4,1,1,1,1,1,1 2,0,3,2,0,1,2,0,1,1,1,0,1,1 0,0,1,2,5,10,5,0,1,1,1,1,1,0 0,0,3,2,0,2,2,0,1,1,1,0,1,0 1,4,1,2,0,12,2,0,1,1,1,0,1,1 0,0,4,3,2,5,3,0,0,1,1,1,1,1 0,1,3,2,2,2,4,0,1,1,1,2,1,0 0,0,3,2,2,5,3,0,0,1,1,0,1,0 2,0,3,2,1,3,5,0,0,1,1,2,1,0 0,4,1,2,2,4,1,2,0,1,1,2,1,0 0,0,1,2,2,0,3,0,1,1,1,1,1,0 0,0,0,3,2,5,1,0,0,1,1,2,1,0 2,1,3,2,0,9,0,0,0,1,1,0,1,0 0,2,6,2,0,2,0,0,0,1,1,2,1,1 0,0,1,2,2,8,1,4,0,1,1,2,1,0 0,4,3,2,1,8,3,2,0,1,1,2,1,0 1,0,1,2,0,0,2,0,1,1,1,1,1,1 1,0,2,1,1,2,3,0,0,1,1,2,1,0 0,0,0,3,2,5,3,0,1,1,1,1,1,0 3,1,13,3,0,5,2,0,1,1,1,2,1,1 2,0,8,0,0,10,2,0,1,1,1,0,1,0 1,0,3,2,0,3,2,0,1,1,1,0,1,0 0,0,12,1,2,2,1,2,0,1,1,2,1,0 3,0,3,2,0,10,2,0,1,1,1,2,1,0 1,1,1,2,3,1,3,0,1,1,1,0,1,0 0,0,1,2,2,7,1,4,0,1,1,2,1,0 0,0,3,2,2,5,3,0,0,1,1,0,1,0 2,0,6,2,0,8,2,0,1,1,1,2,1,0 1,2,3,2,0,3,0,0,0,1,1,1,1,0 1,3,0,3,0,0,2,4,1,1,1,0,1,1 0,4,0,3,2,8,1,4,0,1,1,2,1,0 0,0,6,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,1,0,1,0,0,1,1,0,1,0 0,0,0,3,2,4,3,0,1,1,1,0,1,0 1,1,3,2,1,9,5,0,1,1,1,1,1,0 0,0,3,2,2,2,1,0,1,1,1,0,1,0 0,0,3,2,0,3,2,0,1,1,1,0,1,0 1,0,3,2,3,8,4,0,0,1,1,0,1,0 2,0,0,3,2,3,3,0,1,1,1,2,1,0 0,0,3,2,2,11,3,0,0,1,1,1,1,0 0,0,7,1,0,7,2,0,1,1,1,0,1,0 2,1,3,2,4,8,3,0,0,1,1,2,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,0 1,0,3,2,0,8,0,0,0,1,1,2,1,0 1,0,10,3,0,5,2,1,1,1,1,0,1,0 0,0,0,3,2,4,4,0,0,1,1,2,1,0 0,0,3,2,0,5,2,0,1,1,1,1,1,0 0,4,0,3,1,5,5,0,0,1,1,0,1,0 0,0,1,2,2,8,1,0,0,1,1,0,1,0 3,0,8,0,4,12,3,0,0,1,1,2,1,0 1,0,3,2,1,1,3,0,1,1,1,0,1,0 0,0,8,0,0,7,2,3,1,1,1,0,1,0 0,0,1,2,1,8,5,0,0,1,1,0,1,0 0,0,3,2,2,1,3,0,1,1,1,0,1,0 1,0,0,3,0,3,2,0,1,1,1,0,1,1 2,1,0,3,2,10,3,0,1,1,1,0,1,0 0,0,5,2,2,10,5,0,0,1,1,0,1,0 2,0,12,1,0,7,2,0,1,1,1,0,1,0 0,5,6,2,0,1,2,0,1,1,1,0,1,0 0,0,7,1,0,7,2,0,1,1,1,1,1,0 0,0,3,2,2,2,1,0,0,1,1,0,1,0 1,0,3,2,0,3,0,0,0,1,1,2,1,0 1,0,0,3,0,7,0,1,0,1,1,0,1,0 0,3,0,3,2,4,3,0,0,1,1,0,1,0 0,0,1,2,2,2,1,0,1,1,1,2,1,0 0,0,3,2,2,8,1,4,1,1,1,0,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,1 1,5,10,3,0,5,2,4,1,1,1,0,1,1 0,0,3,2,1,1,1,0,1,1,1,1,1,0 1,0,3,2,0,10,2,0,1,1,1,0,1,1 1,0,4,3,0,5,2,0,1,1,1,1,1,1 1,0,3,2,0,7,2,0,1,1,1,1,1,0 0,0,0,3,0,2,2,1,1,1,1,2,1,1 0,0,1,2,2,3,1,4,0,1,1,2,1,0 0,0,3,2,0,6,2,0,1,1,1,0,1,1 2,0,3,2,0,10,2,0,1,1,1,1,1,0 2,0,1,2,2,8,3,0,0,1,1,0,1,0 1,0,3,2,2,9,3,0,1,1,1,1,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,1 2,1,0,3,0,5,2,0,1,1,1,1,1,1 0,1,0,3,2,3,3,4,1,1,1,0,1,1 1,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,10,3,1,4,5,0,0,1,1,1,1,0 1,0,14,0,0,10,2,0,1,1,1,2,1,0 1,0,1,2,0,7,2,0,1,1,1,0,1,0 3,1,2,1,0,4,2,0,1,1,1,2,1,0 1,0,10,3,0,5,2,3,1,1,1,1,1,0 1,0,5,2,0,1,2,0,1,1,1,1,1,1 0,0,0,3,0,5,2,0,1,1,1,0,1,1 0,0,14,0,2,6,4,0,1,1,1,0,1,0 1,0,3,2,0,7,2,2,1,1,1,0,1,0 1,4,10,3,1,5,3,0,0,1,1,2,1,1 1,0,0,3,0,8,2,0,1,1,1,0,1,0 0,0,2,1,2,3,1,0,0,1,1,2,1,0 0,0,0,3,0,12,2,4,1,1,1,0,1,0 0,0,3,2,2,3,1,0,1,1,1,0,1,0 1,0,1,2,0,4,2,4,1,1,1,1,1,0 1,0,3,2,1,8,3,0,0,1,1,2,1,0 1,1,3,2,0,4,2,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 0,1,3,2,2,2,4,0,0,1,1,2,1,0 0,0,8,0,2,6,4,0,1,1,1,0,1,0 0,0,1,2,1,6,3,0,1,1,1,1,1,0 2,0,3,2,0,4,2,0,1,1,1,2,1,0 0,0,3,2,0,10,2,0,1,1,1,1,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 2,0,3,2,0,8,0,0,0,1,1,2,1,0 1,4,1,2,0,2,2,0,1,1,1,0,1,0 1,1,1,2,1,3,5,0,0,1,1,2,1,0 0,0,7,1,2,7,4,0,0,1,1,0,1,0 0,0,3,2,0,3,2,0,1,1,1,0,1,0 1,1,1,2,0,4,2,0,1,1,1,1,1,1 2,0,3,2,1,7,3,0,1,1,1,2,1,0 1,0,1,2,0,4,2,0,1,1,1,1,1,1 0,0,1,2,0,6,2,0,1,1,1,0,1,0 0,0,3,2,2,1,3,4,1,1,1,0,1,0 0,4,10,3,1,5,3,0,0,1,1,1,1,0 1,0,2,1,0,1,2,0,1,1,1,0,1,0 0,0,1,2,2,2,4,4,1,1,1,2,1,0 1,0,1,2,0,1,2,2,1,1,1,1,1,1 1,0,3,2,0,8,2,1,1,1,1,0,1,0 1,4,0,3,0,5,0,0,0,1,1,2,1,0 0,0,3,2,2,8,3,0,1,1,1,0,1,0 1,1,1,2,0,9,2,0,1,1,1,1,1,0 0,0,6,2,2,8,1,0,0,1,1,2,1,0 1,0,3,2,1,12,1,0,1,1,1,0,1,0 0,0,0,3,0,4,4,1,0,1,1,0,1,1 0,0,1,2,2,8,1,1,1,1,1,2,1,0 1,0,0,3,0,4,2,4,1,1,1,1,1,1 0,0,0,3,2,4,1,0,1,1,1,0,1,0 0,1,1,2,2,2,1,0,0,1,1,2,1,0 0,4,1,2,2,8,1,0,1,1,1,0,1,0 1,0,3,2,0,10,2,0,1,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,1,2,2,8,5,0,1,1,1,1,1,1 2,2,3,2,0,3,2,0,1,1,1,1,1,1 1,0,10,3,0,4,2,0,1,1,1,1,1,1 1,0,3,2,0,8,0,0,0,1,1,0,1,1 0,0,6,2,0,5,0,0,0,1,1,2,1,1 0,0,7,1,0,1,2,0,1,1,1,0,1,0 0,4,3,2,2,4,5,2,0,1,1,2,1,0 0,0,6,2,2,8,3,0,0,1,1,1,1,0 1,3,1,2,0,1,2,0,1,1,1,1,1,0 0,0,3,2,0,7,2,0,1,1,1,1,1,1 2,5,10,3,0,5,0,0,0,1,1,2,1,1 0,0,3,2,2,3,1,0,0,1,1,2,1,0 0,0,1,2,0,8,2,0,1,1,1,2,1,0 0,0,2,1,2,2,4,4,1,1,1,2,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,7,1,0,2,2,0,1,1,1,0,1,0 1,5,3,2,0,2,2,0,1,1,1,1,1,1 1,0,3,2,0,8,2,0,1,1,1,0,1,0 0,0,1,2,1,10,3,0,1,1,1,0,1,0 0,0,3,2,1,5,3,3,0,1,1,2,1,0 0,1,3,2,0,9,2,0,1,1,1,2,1,0 1,0,3,2,3,11,5,4,0,1,1,2,1,0 0,0,1,2,0,1,2,0,1,1,1,1,1,0 2,0,10,3,0,8,2,0,1,1,1,1,1,1 0,0,1,2,1,4,3,0,0,1,1,0,1,0 1,0,3,2,0,0,2,0,1,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,0,3,2,8,3,1,0,1,1,0,1,0 1,1,0,3,0,3,2,0,1,1,1,1,1,1 0,4,3,2,2,12,4,4,1,1,1,0,1,0 1,0,0,3,1,8,5,0,0,1,1,2,1,0 1,1,1,2,0,9,0,0,0,1,1,1,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,1 1,2,0,3,0,1,2,0,1,1,1,1,1,1 2,0,4,3,2,5,3,0,0,1,1,0,1,0 0,0,1,2,2,2,3,4,0,1,1,2,1,0 0,0,6,2,2,8,3,0,1,1,1,2,1,1 0,0,1,2,2,6,1,0,1,1,1,1,1,0 2,0,5,2,1,3,5,4,0,1,1,2,1,0 1,4,3,2,0,12,2,0,1,1,1,0,1,0 1,4,1,2,2,8,5,4,0,1,1,0,1,0 0,0,0,3,0,2,2,0,1,1,1,1,1,0 0,0,3,2,2,2,3,0,0,1,1,0,1,0 1,5,0,3,2,5,5,0,0,1,1,2,1,0 1,0,3,2,1,11,1,0,0,1,1,0,1,0 1,0,6,2,0,10,2,0,1,1,1,1,1,0 1,2,1,2,0,4,2,0,1,1,1,1,1,1 1,3,1,2,1,8,3,0,0,1,1,1,1,0 3,0,1,2,2,5,3,0,1,1,1,1,1,0 2,0,1,2,0,12,2,0,1,1,1,0,1,0 2,0,3,2,1,10,5,0,1,1,1,1,1,1 1,0,1,2,1,8,5,0,0,1,1,0,1,0 0,0,3,2,2,8,3,0,0,1,1,0,1,0 2,1,3,2,4,1,3,0,1,1,1,2,1,0 0,1,3,2,0,3,2,0,1,1,1,1,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,0 0,0,1,2,2,10,3,0,1,1,1,2,1,0 0,2,5,2,0,4,2,0,1,1,1,1,1,1 0,0,1,2,6,12,2,0,1,1,1,0,1,0 1,0,3,2,0,4,2,0,1,1,1,1,1,1 0,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,0,3,1,3,3,0,1,1,1,1,1,0 0,0,3,2,2,4,1,4,1,1,1,1,1,0 1,3,5,2,0,8,2,0,1,1,1,0,1,0 0,0,1,2,2,2,1,0,1,1,1,2,1,0 0,3,1,2,2,1,3,0,1,1,1,0,1,0 1,0,8,0,0,10,2,0,1,1,1,1,1,1 2,0,3,2,2,7,3,0,1,1,1,2,1,0 2,0,0,3,0,10,2,0,1,1,1,2,1,0 0,0,12,1,2,3,4,0,1,1,1,2,1,0 0,0,2,1,0,1,2,0,1,1,1,1,1,0 2,4,12,1,0,12,2,0,1,1,1,1,1,0 0,0,3,2,2,2,1,0,1,1,1,2,1,0 0,0,1,2,2,8,1,0,1,1,1,1,1,0 0,0,3,2,2,2,1,0,1,1,1,2,1,0 0,0,2,1,2,2,4,0,1,1,1,2,1,0 0,3,4,3,0,5,2,0,1,1,1,0,1,1 0,0,0,3,2,4,1,0,0,1,1,0,1,0 1,4,0,3,0,5,2,0,1,1,1,1,1,0 0,0,1,2,0,3,2,0,1,1,1,1,1,1 1,4,0,3,2,5,3,4,0,1,1,0,1,0 1,0,1,2,1,0,5,0,0,1,1,1,1,0 0,5,3,2,0,12,2,1,1,1,1,0,1,1 1,0,3,2,1,5,3,0,0,1,1,0,1,0 0,0,0,3,2,5,3,0,0,1,1,0,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 0,4,10,3,0,5,4,0,1,1,1,2,1,0 1,2,10,3,0,4,2,0,1,1,1,1,1,1 1,0,1,2,0,1,2,0,1,1,1,1,1,0 0,0,1,2,2,8,3,0,0,1,1,0,1,0 0,1,0,3,2,9,5,0,1,1,1,1,1,0 0,0,6,2,0,2,0,2,0,1,1,2,1,0 0,0,5,2,3,1,3,0,1,1,1,1,1,0 0,0,1,2,2,9,1,0,1,1,1,1,1,0 0,0,3,2,2,10,1,4,1,1,1,0,1,0 0,0,12,1,0,9,2,0,1,1,1,1,1,0 0,0,1,2,0,10,2,0,1,1,1,2,1,0 1,3,1,2,2,1,3,0,1,1,1,0,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,1 2,0,3,2,0,2,2,0,1,1,1,2,1,0 1,0,0,3,0,5,2,0,1,1,1,0,1,1 0,0,2,1,0,10,2,1,1,1,1,0,1,0 1,0,1,2,0,5,2,0,1,1,1,0,1,0 1,0,3,2,2,2,3,0,0,1,1,0,1,0 1,2,4,3,0,5,2,0,1,1,1,2,1,1 1,0,3,2,1,4,3,0,1,1,1,0,1,0 1,1,1,2,0,4,2,2,1,1,1,0,1,0 2,4,3,2,2,1,3,0,1,1,1,0,1,0 0,0,6,2,0,8,2,0,1,1,1,0,1,0 1,0,3,2,3,7,5,0,0,1,1,0,1,0 2,3,1,2,1,8,5,4,0,1,1,0,1,0 1,2,0,3,2,4,1,0,1,1,1,0,1,0 1,5,0,3,0,8,2,0,1,1,1,0,1,1 0,0,1,2,1,8,3,0,0,1,1,0,1,0 1,0,3,2,0,3,0,0,0,1,1,0,1,1 0,0,1,2,3,0,5,0,1,1,1,0,1,1 1,0,1,2,2,4,3,0,0,1,1,1,1,0 1,0,6,2,0,3,2,0,1,1,1,1,1,1 0,0,1,2,2,2,1,0,0,1,1,2,1,0 0,0,9,1,2,2,3,0,1,1,1,0,1,0 2,0,3,2,0,6,2,0,1,1,1,0,1,0 0,0,3,2,2,3,3,0,0,1,1,0,1,0 1,0,1,2,1,3,3,0,0,1,1,1,1,0 1,0,3,2,1,4,5,0,0,1,1,0,1,0 1,0,0,3,0,3,2,0,1,1,1,0,1,1 1,4,3,2,1,10,5,4,1,1,1,0,1,0 1,0,6,2,0,0,2,0,1,1,1,1,1,1 1,5,3,2,0,1,2,4,1,1,1,0,1,1 1,0,3,2,0,3,0,0,0,1,1,0,1,1 2,0,1,2,0,10,2,0,1,1,1,1,1,1 2,0,3,2,0,6,2,0,1,1,1,1,1,1 0,1,5,2,2,1,3,0,1,1,1,2,1,0 1,0,10,3,2,3,3,0,0,1,1,2,1,0 0,0,12,1,0,6,2,0,1,1,1,0,1,0 0,4,3,2,0,12,2,4,1,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,1,1,0 0,0,3,2,2,3,3,0,0,1,1,2,1,0 0,0,1,2,2,4,1,0,1,1,1,0,1,0 0,0,8,0,3,6,3,0,1,1,1,0,1,0 2,0,8,0,0,10,2,0,1,1,1,2,1,0 1,0,3,2,1,4,5,0,1,1,1,0,1,0 1,2,6,2,0,4,2,0,1,1,1,0,1,0 1,0,14,0,0,7,0,1,0,1,1,0,1,1 2,3,1,2,0,12,2,0,1,1,1,1,1,1 2,0,3,2,4,5,3,0,0,1,1,2,1,0 1,0,1,2,0,4,2,0,1,1,1,0,1,1 2,1,12,1,0,7,2,0,1,1,1,0,1,0 1,4,10,3,0,5,2,0,1,1,1,1,1,1 0,0,3,2,1,3,1,0,0,1,1,2,1,0 0,0,5,2,0,0,2,0,1,1,1,0,1,1 1,1,3,2,3,1,5,0,1,1,1,0,1,0 1,0,6,2,0,1,2,4,1,1,1,0,1,1 0,3,1,2,1,8,1,0,1,1,1,2,1,0 1,0,3,2,2,7,1,0,1,1,1,0,1,0 1,0,3,2,0,3,2,0,1,1,1,1,1,1 1,3,3,2,1,5,3,0,1,1,1,0,1,0 2,3,3,2,0,8,2,0,1,1,1,0,1,1 2,5,1,2,1,5,5,0,0,1,1,0,1,0 0,4,3,2,2,2,1,0,1,1,1,2,1,0 0,0,3,2,2,1,4,4,1,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,2,2,3,0,1,1,1,0,1,0 2,0,2,1,0,8,2,0,1,1,1,2,1,0 2,0,8,0,0,6,2,0,1,1,1,0,1,0 1,4,0,3,0,5,2,4,1,1,1,2,1,0 0,0,3,2,2,8,3,0,1,1,1,0,1,0 0,0,0,3,0,2,2,4,1,1,1,0,1,0 0,2,3,2,0,4,2,1,1,1,1,1,1,1 1,0,3,2,1,3,5,0,0,1,1,2,1,0 2,0,3,2,0,1,2,0,1,1,1,0,1,1 1,0,0,3,0,5,2,0,1,1,1,1,1,0 1,0,1,2,0,4,2,0,1,1,1,0,1,0 0,0,8,0,0,1,2,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 0,0,1,2,2,2,1,0,1,1,1,2,1,0 1,0,3,2,0,5,2,0,1,1,1,1,1,0 0,0,0,3,2,10,1,0,1,1,1,1,1,0 3,0,1,2,0,12,2,4,1,1,1,0,1,0 0,0,2,1,1,1,3,0,1,1,1,0,1,0 0,0,3,2,2,8,1,0,0,1,1,0,1,0 2,0,3,2,0,2,2,4,1,1,1,1,1,0 1,0,5,2,0,8,2,0,1,1,1,1,1,0 1,2,1,2,0,3,2,0,1,1,1,2,1,0 1,0,1,2,1,5,3,0,1,1,1,0,1,1 1,0,10,3,0,4,2,0,1,1,1,1,1,1 1,0,3,2,0,6,2,0,1,1,1,1,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 0,0,3,2,2,3,1,0,0,1,1,2,1,0 3,0,14,0,4,2,5,4,1,1,1,2,1,0 0,4,3,2,0,1,2,0,1,1,1,0,1,1 0,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,10,3,1,5,3,0,0,1,1,0,1,0 0,0,2,1,2,3,1,0,0,1,1,2,1,0 1,5,6,2,1,8,5,0,0,1,1,2,1,0 1,0,5,2,3,5,3,0,0,1,1,2,1,0 1,0,1,2,1,1,5,0,1,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,1,1,0 2,4,0,3,2,5,3,4,0,1,1,2,1,0 0,0,11,0,0,7,2,0,1,1,1,1,1,0 1,0,3,2,2,8,5,0,0,1,1,2,1,0 1,0,1,2,0,7,2,0,1,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,3,2,2,0,3,0,1,1,1,1,1,0 1,0,3,2,0,4,2,0,1,1,1,0,1,0 0,3,0,3,2,5,3,0,1,1,1,1,1,0 0,0,1,2,0,0,2,0,1,1,1,1,1,1 1,0,1,2,0,10,2,4,1,1,1,0,1,0 1,0,3,2,0,3,2,0,1,1,1,2,1,0 0,0,3,2,2,7,4,0,0,1,1,2,1,0 1,0,10,3,1,5,3,0,0,1,1,0,1,0 1,1,6,2,1,5,3,0,0,1,1,2,1,0 1,0,1,2,0,1,2,4,1,1,1,0,1,1 1,0,1,2,0,1,2,0,1,1,1,1,1,1 1,0,1,2,1,5,5,0,1,1,1,1,1,0 2,1,3,2,0,1,2,0,1,1,1,0,1,0 0,0,6,2,0,1,2,0,1,1,1,0,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,1 1,0,3,2,0,10,0,0,0,1,1,2,1,0 1,0,10,3,0,5,0,0,0,1,1,0,1,1 0,0,2,1,0,1,2,0,1,1,1,0,1,0 1,0,2,1,0,10,2,0,1,1,1,0,1,0 1,5,0,3,2,8,3,0,1,1,1,0,1,0 1,0,7,1,1,6,3,0,1,1,1,1,1,0 1,0,3,2,2,6,1,0,1,1,1,0,1,0 0,0,3,2,2,8,1,4,0,1,1,2,1,0 1,0,1,2,3,8,3,0,0,1,1,2,1,0 0,0,0,3,2,4,3,0,0,1,1,1,1,0 2,1,3,2,0,9,2,0,1,1,1,1,1,0 0,0,0,3,2,8,1,0,1,1,1,2,1,0 1,1,0,3,0,3,2,0,1,1,1,1,1,0 1,0,10,3,1,3,3,0,1,1,1,2,1,0 0,0,3,2,2,7,3,0,1,1,1,0,1,0 1,0,0,3,1,5,5,0,0,1,1,2,1,0 2,5,12,1,0,4,2,0,1,1,1,0,1,1 1,0,7,1,1,2,3,4,1,1,1,2,1,0 0,0,3,2,2,2,1,4,1,1,1,1,1,0 0,0,3,2,3,8,3,0,0,1,1,0,1,0 1,0,0,3,0,2,2,1,1,1,1,2,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,1 0,0,1,2,2,12,1,0,1,1,1,2,1,0 0,5,1,2,2,8,1,0,1,1,1,2,1,0 1,0,3,2,1,1,4,0,1,1,1,1,1,1 1,0,0,3,5,0,1,1,0,1,1,0,1,0 0,0,3,2,3,4,3,0,0,1,1,2,1,0 0,0,1,2,2,8,5,0,0,1,1,1,1,0 2,5,3,2,2,2,3,4,0,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,12,1,0,10,2,0,1,1,1,2,1,0 0,0,8,0,0,1,2,0,1,1,1,2,1,0 2,0,0,3,0,3,2,0,1,1,1,0,1,0 0,0,3,2,2,7,1,0,1,1,1,1,1,0 0,0,0,3,2,3,1,0,0,1,1,0,1,0 1,0,4,3,2,5,3,0,0,1,1,0,1,1 0,0,1,2,0,1,2,0,1,1,1,0,1,1 2,0,3,2,1,11,3,0,0,1,1,1,1,0 1,0,3,2,0,6,2,0,1,1,1,0,1,1 2,4,5,2,1,5,3,0,0,1,1,1,1,0 0,0,1,2,2,8,1,0,0,1,1,0,1,0 1,0,1,2,2,3,3,0,0,1,1,1,1,0 0,0,8,0,0,6,2,0,1,1,1,0,1,0 0,0,1,2,2,8,1,0,0,1,1,2,1,0 0,4,3,2,2,12,1,0,1,1,1,0,1,0 0,0,1,2,0,4,2,0,1,1,1,1,1,0 0,0,3,2,1,7,1,0,1,1,1,0,1,0 0,2,5,2,2,3,3,0,1,1,1,1,1,0 1,0,3,2,1,8,5,0,0,1,1,0,1,0 0,0,6,2,1,3,1,0,0,1,1,2,1,0 1,0,3,2,2,8,4,0,0,1,1,0,1,0 0,0,12,1,0,0,2,0,1,1,1,0,1,1 1,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,2,4,3,4,1,1,1,1,1,0 2,1,1,2,0,9,2,0,1,1,1,1,1,0 0,0,3,2,1,2,3,0,0,1,1,2,1,0 1,2,3,2,0,4,2,0,1,1,1,1,1,0 0,4,3,2,2,12,3,0,1,1,1,0,1,0 1,0,3,2,0,5,2,0,1,1,1,0,1,1 1,0,6,2,0,1,2,0,1,1,1,0,1,1 0,0,5,2,2,2,3,4,1,1,1,2,1,0 0,0,1,2,2,1,3,0,1,1,1,1,1,0 0,1,4,3,3,5,5,0,1,1,1,1,1,1 0,0,0,3,2,4,1,0,0,1,1,2,1,0 0,0,12,1,1,2,3,0,0,1,1,0,1,0 0,0,3,2,3,10,1,0,1,1,1,1,1,0 0,0,3,2,1,1,3,0,1,1,1,0,1,0 1,5,0,3,2,4,3,0,0,1,1,0,1,0 1,3,3,2,1,8,5,4,0,1,1,0,1,0 1,0,0,3,0,6,0,0,0,1,1,0,1,1 2,4,3,2,1,2,3,0,0,1,1,0,1,0 0,0,1,2,2,3,1,0,0,1,1,0,1,0 0,0,6,2,0,7,2,0,1,1,1,1,1,0 0,0,3,2,2,7,4,4,1,1,1,0,1,0 1,0,3,2,4,2,5,0,0,1,1,0,1,0 1,1,1,2,0,1,2,0,1,1,1,2,1,0 0,0,6,2,1,1,3,2,1,1,1,0,1,0 1,0,0,3,0,3,2,0,1,1,1,1,1,0 0,1,0,3,2,5,3,4,1,1,1,0,1,0 0,0,3,2,1,10,3,0,1,1,1,1,1,0 0,0,0,3,0,1,2,0,1,1,1,1,1,1 0,0,0,3,0,4,2,0,1,1,1,1,1,0 1,2,4,3,0,5,2,1,1,1,1,1,1,1 0,0,1,2,0,6,2,0,1,1,1,0,1,1 0,0,6,2,2,8,5,4,0,1,1,0,1,0 1,0,5,2,0,1,2,0,1,1,1,0,1,1 1,0,1,2,2,8,1,1,0,1,1,0,1,0 1,0,0,3,0,3,2,0,1,1,1,1,1,1 0,0,2,1,1,3,1,0,1,1,1,0,1,0 0,0,3,2,2,3,1,0,0,1,1,0,1,0 1,0,3,2,1,8,3,0,0,1,1,0,1,0 2,2,3,2,1,3,3,0,1,1,1,1,1,0 2,0,3,2,0,3,2,0,1,1,1,0,1,0 1,1,3,2,0,2,0,1,0,1,1,2,1,0 1,0,2,1,1,6,3,0,0,1,1,1,1,0 0,0,5,2,2,4,1,0,1,1,1,0,1,0 0,0,3,2,2,2,5,0,0,1,1,2,1,0 3,0,2,1,2,6,1,0,1,1,1,0,1,0 1,4,1,2,1,8,5,0,0,1,1,0,1,0 0,0,0,3,1,5,5,0,0,1,1,0,1,0 0,0,3,2,2,8,3,0,0,1,1,0,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,1 1,1,3,2,2,1,1,4,0,1,1,2,1,0 2,0,3,2,0,3,2,0,1,1,1,1,1,0 0,0,1,2,2,0,1,0,1,1,1,2,1,0 1,0,3,2,0,3,2,0,1,1,1,2,1,0 0,0,3,2,2,6,1,0,0,1,1,0,1,0 1,0,8,0,0,1,2,0,1,1,1,0,1,0 2,1,3,2,1,2,1,0,0,1,1,2,1,0 0,0,1,2,1,1,5,0,0,1,1,0,1,0 1,0,3,2,1,2,4,0,0,1,1,1,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,0,3,0,5,2,0,1,1,1,1,1,1 0,0,1,2,2,8,1,0,1,1,1,0,1,0 0,0,3,2,1,1,3,0,1,1,1,1,1,0 0,4,10,3,2,5,1,0,1,1,1,1,1,0 0,4,10,3,0,5,2,0,1,1,1,0,1,0 0,0,12,1,0,7,2,0,1,1,1,2,1,0 0,0,3,2,0,4,2,0,1,1,1,1,1,0 2,0,3,2,0,6,2,0,1,1,1,0,1,1 1,4,10,3,0,5,2,0,1,1,1,1,1,1 0,0,2,1,2,6,1,0,1,1,1,0,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,0 0,0,0,3,2,1,5,0,1,1,1,0,1,0 2,0,3,2,0,2,2,0,1,1,1,1,1,0 1,4,7,1,0,10,2,4,1,1,1,0,1,0 0,0,1,2,2,6,3,0,1,1,1,2,1,0 0,2,1,2,0,3,2,0,1,1,1,1,1,0 1,0,1,2,1,6,3,0,1,1,1,1,1,0 1,0,0,3,2,3,3,0,0,1,1,1,1,0 1,0,15,0,0,2,3,0,1,1,1,0,1,0 0,0,0,3,2,3,3,1,1,1,1,1,1,0 0,0,3,2,2,8,3,0,0,1,1,1,1,0 1,0,1,2,1,10,3,0,1,1,1,1,1,0 1,5,1,2,1,12,5,2,0,1,1,0,1,1 0,0,6,2,2,2,3,0,0,1,1,2,1,0 0,4,0,3,2,8,3,0,0,1,1,0,1,0 0,0,1,2,0,5,2,0,1,1,1,0,1,1 2,0,6,2,0,10,2,0,1,1,1,2,1,0 1,0,3,2,2,0,1,0,1,1,1,2,1,0 0,0,0,3,2,3,3,0,1,1,1,1,1,0 0,0,3,2,0,10,2,0,1,1,1,0,1,0 2,0,1,2,1,8,3,0,0,1,1,0,1,0 1,0,3,2,0,8,2,0,1,1,1,0,1,1 1,0,1,2,0,7,2,0,1,1,1,0,1,0 0,0,7,1,1,2,1,0,0,1,1,0,1,0 0,0,0,3,2,3,3,0,1,1,1,2,1,0 2,4,3,2,0,10,2,0,1,1,1,2,1,0 2,1,3,2,0,4,2,4,1,1,1,1,1,0 1,1,4,3,0,5,2,0,1,1,1,1,1,1 0,0,0,3,2,5,1,0,0,1,1,0,1,0 0,0,1,2,2,2,3,0,0,1,1,2,1,0 0,0,14,0,2,1,5,0,1,1,1,0,1,0 1,0,1,2,0,4,2,0,1,1,1,1,1,1 1,2,1,2,0,9,2,0,1,1,1,1,1,0 2,0,3,2,0,1,2,0,1,1,1,1,1,1 1,0,3,2,1,8,5,0,0,1,1,1,1,0 0,0,3,2,2,8,5,4,0,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,1 0,1,1,2,2,8,1,0,0,1,1,2,1,0 0,0,3,2,2,2,1,0,1,1,1,0,1,0 1,5,3,2,0,12,2,0,1,1,1,0,1,0 0,0,9,1,1,7,3,0,1,1,1,0,1,0 0,5,1,2,2,8,3,0,0,1,1,2,1,0 0,0,3,2,0,4,2,0,1,1,1,0,1,1 1,0,3,2,1,1,5,0,0,1,1,0,1,0 1,0,0,3,0,5,0,0,0,1,1,1,1,1 1,0,3,2,0,1,2,0,1,1,1,1,1,0 2,1,6,2,0,9,2,0,1,1,1,0,1,0 0,0,1,2,2,2,1,0,1,1,1,2,1,0 0,5,3,2,1,8,3,0,1,1,1,0,1,0 1,5,1,2,1,5,5,0,0,1,1,1,1,0 1,2,0,3,2,3,3,0,1,1,1,1,1,0 0,0,13,3,0,5,2,0,1,1,1,1,1,1 0,0,3,2,1,6,3,0,1,1,1,0,1,0 1,0,3,2,1,11,5,0,0,1,1,2,1,0 0,0,1,2,0,3,2,4,1,1,1,1,1,0 1,0,3,2,0,1,1,0,1,1,1,0,1,0 0,1,7,1,0,1,2,0,1,1,1,1,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 0,5,1,2,5,0,5,0,1,1,1,2,1,0 1,0,6,2,0,2,0,0,0,1,1,2,1,1 0,0,5,2,0,4,0,0,0,1,1,1,1,0 0,0,2,1,2,2,1,0,0,1,1,2,1,0 0,4,1,2,0,4,2,0,1,1,1,2,1,0 0,0,1,2,2,2,3,1,0,1,1,2,1,0 2,1,12,1,0,3,2,0,1,1,1,1,1,0 1,4,3,2,1,2,5,0,0,1,1,1,1,0 0,0,0,3,2,9,1,0,0,1,1,0,1,0 1,2,3,2,3,2,3,0,1,1,1,1,1,0 2,4,3,2,0,1,2,0,1,1,1,0,1,1 1,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,3,2,0,8,2,0,1,1,1,0,1,0 1,4,0,3,2,5,3,0,0,1,1,2,1,0 0,0,3,2,2,10,1,4,1,1,1,0,1,0 2,0,1,2,4,2,3,0,0,1,1,0,1,0 2,0,3,2,0,3,2,0,1,1,1,0,1,1 0,0,3,2,2,1,3,0,1,1,1,0,1,0 0,0,0,3,2,5,1,0,1,1,1,0,1,0 2,0,6,2,0,8,2,0,1,1,1,2,1,0 0,0,2,1,0,1,2,0,1,1,1,1,1,0 0,0,1,2,1,7,5,0,0,1,1,2,1,0 0,0,3,2,0,10,2,0,1,1,1,0,1,0 2,1,8,0,0,4,2,0,1,1,1,0,1,0 0,0,9,1,2,1,3,4,1,1,1,0,1,0 0,0,1,2,2,7,3,4,0,1,1,2,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,1,2,2,3,1,0,1,1,1,0,1,0 0,0,9,1,2,1,1,0,1,1,1,2,1,0 0,0,3,2,2,1,3,0,1,1,1,0,1,0 3,2,7,1,0,5,2,0,1,1,1,0,1,0 0,0,3,2,0,7,0,0,0,1,1,1,1,0 0,0,9,1,2,2,3,0,0,1,1,2,1,0 0,0,6,2,0,7,2,0,1,1,1,1,1,0 2,0,3,2,1,4,3,0,0,1,1,0,1,0 2,0,0,3,3,4,3,0,1,1,1,1,1,1 0,1,1,2,2,9,3,0,1,1,1,1,1,0 0,0,3,2,2,2,1,0,0,1,1,2,1,0 1,0,3,2,4,7,3,0,0,1,1,2,1,0 2,0,0,3,1,3,3,0,0,1,1,2,1,0 1,4,10,3,2,5,3,0,0,1,1,1,1,1 0,0,1,2,2,0,1,0,0,1,1,0,1,0 1,0,5,2,0,5,2,0,1,1,1,1,1,1 0,0,3,2,0,9,2,0,1,1,1,0,1,0 0,0,3,2,2,7,1,0,1,1,1,1,1,0 1,1,3,2,1,1,3,0,1,1,1,0,1,0 0,0,1,2,2,3,4,4,1,1,1,2,1,0 0,0,12,1,2,3,3,0,1,1,1,1,1,0 0,0,0,3,2,5,3,0,0,1,1,2,1,0 0,0,3,2,2,8,3,0,0,1,1,1,1,0 0,0,1,2,1,3,5,0,0,1,1,2,1,0 1,0,1,2,1,1,3,0,1,1,1,0,1,1 0,0,2,1,2,1,1,0,1,1,1,0,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 0,2,3,2,3,8,3,0,1,1,1,2,1,0 0,0,3,2,1,2,5,0,0,1,1,2,1,0 1,4,3,2,2,2,3,4,1,1,1,0,1,0 1,0,6,2,1,8,5,4,0,1,1,0,1,0 1,4,1,2,0,10,0,0,0,1,1,2,1,0 0,0,1,2,0,1,2,0,1,1,1,0,1,0 1,1,6,2,1,4,5,0,1,1,1,2,1,0 2,0,7,1,0,4,2,0,1,1,1,1,1,1 0,0,0,3,2,5,3,0,0,1,1,1,1,0 0,0,1,2,4,4,5,0,0,1,1,2,1,0 0,5,0,3,2,5,3,0,1,1,1,0,1,0 3,1,13,3,0,5,2,0,1,1,1,2,1,0 0,0,10,3,2,10,1,4,1,1,1,0,1,0 2,0,3,2,0,4,2,0,1,1,1,1,1,1 0,0,1,2,3,3,5,0,0,1,1,1,1,0 0,0,5,2,2,5,3,0,1,1,1,0,1,0 1,0,1,2,1,1,1,0,1,1,1,0,1,0 0,0,2,1,2,1,3,0,1,1,1,0,1,0 0,3,3,2,2,1,3,4,1,1,1,0,1,0 1,4,0,3,0,5,0,0,0,1,1,1,1,1 0,0,3,2,2,6,1,0,1,1,1,0,1,0 1,0,2,1,2,2,3,4,0,1,1,0,1,0 2,0,0,3,0,3,2,0,1,1,1,2,1,0 0,3,3,2,2,7,1,0,1,1,1,1,1,0 1,0,3,2,1,0,3,0,0,1,1,0,1,0 0,0,1,2,5,1,3,0,1,1,1,0,1,0 1,0,3,2,1,8,5,4,0,1,1,0,1,0 1,0,0,3,2,6,3,0,1,1,1,0,1,0 1,0,3,2,0,0,2,0,1,1,1,1,1,1 0,0,3,2,0,8,4,0,0,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,1 0,1,5,2,0,10,2,0,1,1,1,1,1,1 0,0,1,2,2,2,3,0,1,1,1,1,1,0 1,0,1,2,1,3,3,0,1,1,1,1,1,0 0,0,3,2,2,2,3,0,1,1,1,2,1,0 0,0,1,2,2,8,1,1,0,1,1,0,1,0 1,0,3,2,0,9,0,0,0,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,0,1,1 0,0,3,2,0,4,2,0,1,1,1,1,1,1 0,0,0,3,0,5,2,0,1,1,1,1,1,1 1,0,0,3,0,1,2,0,1,1,1,0,1,1 1,0,3,2,2,10,3,0,1,1,1,1,1,0 0,0,1,2,2,2,4,0,1,1,1,2,1,0 1,3,3,2,1,8,3,0,0,1,1,0,1,0 1,0,3,2,0,4,2,0,1,1,1,1,1,1 3,0,3,2,4,2,5,0,0,1,1,2,1,0 0,4,0,3,3,5,3,0,0,1,1,0,1,0 1,0,1,2,0,6,2,0,1,1,1,0,1,0 0,0,0,3,2,3,3,0,0,1,1,1,1,0 0,0,1,2,2,3,1,0,1,1,1,2,1,0 2,0,0,3,3,8,5,0,1,1,1,1,1,0 1,0,3,2,1,5,5,0,0,1,1,0,1,0 0,0,6,2,0,6,2,0,1,1,1,0,1,0 2,3,8,0,4,2,5,0,0,1,1,2,1,0 0,0,1,2,0,3,0,4,0,1,1,0,1,0 2,0,3,2,0,2,2,0,1,1,1,2,1,0 1,0,3,2,2,7,1,0,0,1,1,0,1,0 2,0,3,2,0,7,2,0,1,1,1,0,1,1 0,0,3,2,2,8,4,4,0,1,1,0,1,0 1,0,0,3,0,7,2,2,1,1,1,0,1,0 0,0,1,2,2,3,3,0,1,1,1,1,1,0 1,1,3,2,0,1,2,0,1,1,1,0,1,0 0,0,9,1,0,7,2,0,1,1,1,0,1,0 1,0,6,2,2,4,5,0,0,1,1,0,1,0 0,0,1,2,1,5,3,0,1,1,1,0,1,0 0,0,4,3,2,5,3,0,0,1,1,1,1,0 1,0,3,2,0,3,2,4,1,1,1,0,1,0 1,0,3,2,2,2,1,0,1,1,1,0,1,0 0,4,10,3,0,4,2,0,1,1,1,0,1,1 0,0,3,2,2,2,3,0,0,1,1,2,1,0 0,0,1,2,2,3,3,0,0,1,1,2,1,0 1,0,7,1,0,2,2,0,1,1,1,0,1,0 1,0,11,0,0,1,2,1,1,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,1,1,1 1,0,3,2,2,8,1,0,1,1,1,1,1,0 0,0,3,2,0,0,2,0,1,1,1,0,1,1 2,0,1,2,0,7,2,0,1,1,1,0,1,0 0,1,3,2,0,9,2,0,1,1,1,1,1,0 0,0,1,2,2,0,1,0,0,1,1,2,1,0 0,1,10,3,0,3,2,0,1,1,1,0,1,1 0,0,4,3,0,5,2,0,1,1,1,1,1,1 0,0,1,2,2,1,1,0,1,1,1,2,1,0 1,0,3,2,1,4,3,0,0,1,1,0,1,0 2,1,1,2,4,1,3,0,0,1,1,2,1,0 1,0,0,3,3,8,5,4,1,1,1,2,1,0 0,0,3,2,2,8,3,0,0,1,1,0,1,0 1,0,1,2,0,4,2,0,1,1,1,0,1,0 0,0,1,2,2,1,1,0,1,1,1,0,1,0 0,0,3,2,0,8,2,0,1,1,1,0,1,0 0,0,0,3,1,4,3,0,1,1,1,1,1,1 0,1,1,2,2,1,3,0,1,1,1,1,1,0 1,0,6,2,3,5,1,0,0,1,1,2,1,0 0,0,0,3,2,1,3,0,1,1,1,0,1,0 1,0,6,2,0,4,2,0,1,1,1,1,1,1 0,0,3,2,2,6,1,0,1,1,1,2,1,0 2,0,5,2,1,4,3,0,1,1,1,0,1,1 1,4,3,2,0,12,2,0,1,1,1,0,1,1 2,1,8,0,0,4,2,0,1,1,1,2,1,0 1,0,13,3,0,5,2,0,1,1,1,1,1,0 0,2,1,2,2,4,3,0,1,1,1,1,1,0 1,4,1,2,0,3,2,0,1,1,1,0,1,0 1,0,1,2,0,5,2,0,1,1,1,0,1,0 0,0,1,2,2,2,5,4,0,1,1,2,1,0 0,2,4,3,0,5,2,0,1,1,1,0,1,1 1,3,0,3,0,5,2,0,1,1,1,0,1,1 0,0,1,2,5,8,1,0,0,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,1 0,0,1,2,2,3,1,0,0,1,1,2,1,0 0,4,10,3,0,5,2,0,1,1,1,1,1,1 1,0,3,2,0,10,2,0,1,1,1,1,1,1 2,1,3,2,0,4,2,0,1,1,1,2,1,0 2,0,3,2,2,8,5,0,0,1,1,0,1,0 0,0,3,2,2,4,5,4,0,1,1,0,1,0 1,0,1,2,1,6,3,2,0,1,1,1,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,2,6,1,0,1,1,1,2,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,1 0,0,3,2,1,10,3,0,1,1,1,1,1,0 2,0,1,2,0,5,0,0,0,1,1,2,1,0 1,3,13,3,0,5,2,0,1,1,1,1,1,1 1,0,12,1,0,1,2,0,1,1,1,1,1,0 1,3,1,2,1,4,5,0,1,1,1,0,1,0 0,0,3,2,2,1,1,0,1,1,1,0,1,0 1,3,5,2,2,8,3,0,0,1,1,0,1,0 0,0,0,3,2,5,3,0,0,1,1,0,1,1 0,0,1,2,2,5,1,0,1,1,1,0,1,0 0,0,5,2,0,6,2,4,1,1,1,0,1,0 0,0,1,2,2,1,3,0,0,1,1,0,1,0 1,3,3,2,0,10,2,0,1,1,1,0,1,0 0,0,6,2,2,4,5,0,0,1,1,1,1,0 0,0,0,3,0,3,2,0,1,1,1,0,1,1 1,0,10,3,0,3,2,0,1,1,1,1,1,1 0,0,3,2,0,7,2,1,1,1,1,0,1,0 0,0,1,2,0,4,0,0,0,1,1,0,1,1 0,0,1,2,0,7,2,0,1,1,1,2,1,0 0,0,3,2,0,10,2,0,1,1,1,0,1,0 0,0,1,2,2,4,1,0,0,1,1,2,1,0 0,0,12,1,2,8,1,0,1,1,1,0,1,0 0,1,0,3,0,5,2,0,1,1,1,1,1,1 0,0,3,2,2,1,3,0,1,1,1,1,1,0 2,0,1,2,0,4,2,0,1,1,1,0,1,0 1,0,1,2,0,5,2,0,1,1,1,2,1,0 1,0,7,1,0,7,0,0,0,1,1,0,1,1 0,4,2,1,2,3,1,0,1,1,1,2,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,1 1,1,0,3,5,4,3,4,1,1,1,0,1,1 1,0,3,2,1,7,3,4,0,1,1,0,1,0 0,0,1,2,2,3,4,0,0,1,1,0,1,0 0,0,3,2,0,7,2,0,1,1,1,1,1,0 2,0,1,2,0,1,2,0,1,1,1,2,1,0 1,3,1,2,3,1,3,4,1,1,1,0,1,0 1,0,3,2,1,8,3,0,0,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,1,1,0 0,2,3,2,0,1,2,0,1,1,1,0,1,1 1,1,0,3,0,5,0,0,0,1,1,2,1,1 0,0,1,2,2,1,4,0,1,1,1,0,1,0 0,0,3,2,0,2,2,0,1,1,1,2,1,0 1,0,3,2,2,5,3,0,1,1,1,1,1,0 0,0,2,1,2,6,4,0,1,1,1,0,1,0 2,0,0,3,2,5,3,0,0,1,1,1,1,0 0,0,1,2,2,3,1,0,1,1,1,0,1,0 0,0,3,2,2,4,1,0,0,1,1,0,1,0 0,0,2,1,1,2,5,0,0,1,1,2,1,0 1,4,1,2,0,4,0,0,0,1,1,0,1,1 0,0,0,3,2,3,1,0,0,1,1,0,1,0 0,0,1,2,0,3,2,1,1,1,1,1,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,1 0,0,1,2,2,8,1,0,0,1,1,2,1,0 1,2,1,2,0,3,2,0,1,1,1,1,1,1 1,0,3,2,0,8,2,0,1,1,1,0,1,0 2,0,3,2,0,10,2,0,1,1,1,2,1,0 1,0,10,3,0,5,2,0,1,1,1,1,1,1 0,0,5,2,1,2,1,0,0,1,1,2,1,0 1,0,3,2,2,8,3,0,0,1,1,0,1,0 1,1,7,1,1,1,3,0,1,1,1,0,1,0 0,0,1,2,2,8,1,0,0,1,1,2,1,0 1,2,3,2,0,8,2,0,1,1,1,1,1,1 2,0,1,2,4,4,5,0,0,1,1,0,1,0 0,0,0,3,2,2,4,0,1,1,1,1,1,0 1,0,2,1,3,7,5,4,1,1,1,0,1,0 1,0,3,2,0,4,2,0,1,1,1,0,1,1 0,0,3,2,1,1,5,4,1,1,1,0,1,0 1,1,1,2,1,3,5,0,0,1,1,1,1,0 0,0,0,3,0,1,2,0,1,1,1,0,1,0 0,0,3,2,0,10,2,2,1,1,1,1,1,0 0,0,3,2,2,2,3,0,0,1,1,0,1,0 2,0,0,3,0,8,2,0,1,1,1,0,1,0 2,0,3,2,0,6,2,0,1,1,1,2,1,0 1,0,3,2,0,8,0,4,0,1,1,2,1,0 0,0,3,2,2,8,3,0,0,1,1,2,1,0 1,1,5,2,1,4,3,0,1,1,1,2,1,0 1,5,13,3,0,5,2,0,1,1,1,0,1,1 1,0,6,2,2,0,3,0,1,1,1,1,1,0 1,0,3,2,0,4,2,0,1,1,1,0,1,0 2,0,13,3,0,5,2,0,1,1,1,1,1,1 0,0,3,2,2,3,3,0,1,1,1,2,1,0 1,2,4,3,0,5,2,0,1,1,1,1,1,1 1,2,4,3,0,5,2,4,1,1,1,1,1,1 1,0,0,3,2,4,3,0,0,1,1,1,1,0 1,0,3,2,0,3,2,0,1,1,1,0,1,1 0,0,2,1,2,7,1,0,1,1,1,1,1,0 2,4,10,3,0,4,2,0,1,1,1,1,1,1 1,0,3,2,3,2,3,4,0,1,1,2,1,0 0,0,1,2,2,4,1,0,0,1,1,0,1,0 1,3,1,2,1,8,3,0,1,1,1,0,1,0 2,0,12,1,1,1,3,0,1,1,1,1,1,0 0,2,1,2,2,3,3,0,1,1,1,1,1,0 0,0,3,2,2,1,3,0,0,1,1,0,1,0 0,2,0,3,2,8,1,1,0,1,1,0,1,0 0,0,3,2,0,8,0,0,0,1,1,2,1,0 0,0,3,2,2,3,4,0,1,1,1,1,1,0 1,1,8,0,0,1,2,0,1,1,1,0,1,0 0,5,10,3,0,5,2,0,1,1,1,1,1,0 0,5,3,2,1,12,1,3,1,1,1,0,1,0 0,1,3,2,1,9,5,0,1,1,1,1,1,0 1,5,0,3,2,5,3,0,1,1,1,2,1,0 0,0,1,2,2,2,1,0,1,1,1,2,1,0 1,0,3,2,4,8,5,0,0,1,1,2,1,0 1,0,10,3,0,4,2,0,1,1,1,0,1,1 1,0,1,2,0,5,0,0,0,1,1,0,1,1 1,0,1,2,0,3,2,0,1,1,1,0,1,0 0,0,6,2,2,7,1,0,0,1,1,0,1,0 0,0,9,1,2,3,1,0,1,1,1,2,1,0 1,0,12,1,0,10,2,4,1,1,1,0,1,1 1,0,3,2,0,8,2,0,1,1,1,0,1,1 1,0,3,2,0,8,0,0,0,1,1,0,1,0 2,0,12,1,0,10,2,0,1,1,1,0,1,1 1,1,4,3,0,5,2,0,1,1,1,0,1,1 1,5,10,3,0,5,2,0,1,1,1,2,1,1 0,0,3,2,2,1,3,0,1,1,1,0,1,0 0,5,1,2,0,2,2,0,1,1,1,2,1,0 1,0,0,3,1,4,5,0,0,1,1,1,1,1 1,3,4,3,2,5,3,0,1,1,1,1,1,1 0,0,0,3,0,3,2,1,1,1,1,0,1,0 0,0,0,3,2,5,3,0,1,1,1,0,1,0 0,0,1,2,2,4,5,4,0,1,1,0,1,0 1,0,0,3,2,3,3,0,1,1,1,1,1,0 2,0,3,2,4,8,5,0,0,1,1,1,1,0 0,0,3,2,5,8,5,0,0,1,1,0,1,0 2,0,12,1,0,1,2,4,1,1,1,0,1,1 0,0,1,2,2,2,1,0,1,1,1,2,1,0 0,0,6,2,2,5,3,0,0,1,1,2,1,0 0,0,5,2,3,2,3,0,1,1,1,0,1,0 0,0,0,3,2,3,3,0,1,1,1,1,1,0 2,0,2,1,0,3,2,0,1,1,1,0,1,1 1,4,0,3,0,5,0,0,0,1,1,1,1,1 0,0,2,1,1,3,1,0,0,1,1,0,1,0 0,0,1,2,0,1,2,0,1,1,1,1,1,0 1,5,0,3,0,4,2,0,1,1,1,0,1,1 1,1,1,2,0,9,2,0,1,1,1,1,1,0 1,0,8,0,0,1,2,0,1,1,1,1,1,0 0,0,6,2,1,2,5,4,0,1,1,0,1,0 1,0,3,2,2,6,3,4,1,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,0,1,1 0,0,0,3,2,5,3,0,0,1,1,1,1,0 1,4,0,3,1,5,5,0,0,1,1,0,1,0 1,0,5,2,2,10,3,4,1,1,1,1,1,0 0,0,3,2,2,6,1,0,1,1,1,1,1,0 1,0,1,2,0,7,2,0,1,1,1,0,1,0 0,0,1,2,2,6,3,4,1,1,1,0,1,0 0,2,3,2,2,7,1,0,0,1,1,2,1,0 0,0,0,3,2,4,3,0,1,1,1,0,1,0 0,0,0,3,0,1,4,1,1,1,1,2,1,0 0,0,1,2,2,2,1,0,1,1,1,0,1,0 1,3,0,3,1,4,4,0,0,1,1,1,1,0 1,3,3,2,2,8,1,0,1,1,1,0,1,0 0,0,3,2,2,8,3,0,0,1,1,2,1,0 1,0,3,2,0,3,2,0,1,1,1,1,1,0 2,0,3,2,0,10,2,0,1,1,1,1,1,1 0,0,3,2,0,2,2,0,1,1,1,1,1,0 2,0,12,1,0,6,2,4,1,1,1,0,1,0 0,0,1,2,2,8,3,0,0,1,1,0,1,0 2,4,0,3,0,5,2,1,1,1,1,2,1,0 2,0,11,0,0,1,2,0,1,1,1,0,1,0 0,0,3,2,2,4,3,0,0,1,1,0,1,0 1,0,8,0,0,7,0,4,0,1,1,2,1,0 0,0,3,2,2,2,3,0,1,1,1,2,1,0 0,1,9,1,1,2,5,0,0,1,1,2,1,0 1,0,12,1,0,8,2,0,1,1,1,0,1,0 2,4,1,2,1,4,3,0,0,1,1,2,1,0 0,0,3,2,1,6,1,1,0,1,1,0,1,0 0,1,3,2,2,7,1,0,1,1,1,0,1,1 0,0,3,2,2,6,1,0,0,1,1,0,1,0 1,0,12,1,0,3,2,0,1,1,1,1,1,0 0,4,0,3,2,5,3,4,0,1,1,0,1,0 0,0,0,3,0,5,2,0,1,1,1,0,1,1 0,0,3,2,2,3,1,1,0,1,1,2,1,0 2,5,10,3,0,5,2,0,1,1,1,1,1,1 1,0,6,2,0,8,0,0,0,1,1,1,1,1 0,0,3,2,1,8,4,0,0,1,1,0,1,0 0,0,6,2,0,9,2,0,1,1,1,0,1,0 0,0,3,2,0,9,2,0,1,1,1,1,1,1 0,0,12,1,2,1,3,0,1,1,1,2,1,0 1,0,5,2,0,4,0,4,0,1,1,0,1,1 1,1,0,3,0,5,2,0,1,1,1,1,1,1 1,0,3,2,0,1,2,0,1,1,1,1,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,1 1,1,1,2,0,7,2,0,1,1,1,0,1,1 0,5,3,2,2,5,3,0,1,1,1,0,1,0 1,0,3,2,0,1,2,4,1,1,1,0,1,0 0,0,1,2,2,2,1,0,1,1,1,2,1,0 1,0,2,1,0,6,2,0,1,1,1,0,1,1 0,0,3,2,2,8,5,0,0,1,1,0,1,0 0,0,0,3,2,3,3,0,0,1,1,0,1,0 2,5,1,2,0,10,2,0,1,1,1,0,1,0 1,1,3,2,0,4,2,0,1,1,1,1,1,1 0,0,1,2,2,7,3,0,1,1,1,0,1,0 0,4,8,0,0,2,2,0,1,1,1,0,1,0 0,0,3,2,2,2,5,0,0,1,1,0,1,0 0,0,6,2,2,3,3,0,1,1,1,1,1,0 0,0,1,2,1,8,3,0,0,1,1,0,1,0 2,0,0,3,0,1,2,0,1,1,1,0,1,0 0,0,1,2,0,3,2,0,1,1,1,0,1,1 0,4,10,3,0,5,2,0,1,1,1,1,1,0 0,0,3,2,2,12,1,0,1,1,1,2,1,0 1,0,3,2,1,8,5,0,0,1,1,1,1,0 2,0,3,2,4,8,3,0,0,1,1,2,1,0 0,0,10,3,0,4,2,0,1,1,1,1,1,1 0,0,2,1,2,6,3,0,1,1,1,0,1,0 0,0,3,2,2,8,5,4,0,1,1,0,1,0 1,2,3,2,2,9,3,0,1,1,1,1,1,0 1,0,0,3,0,5,0,4,0,1,1,0,1,1 1,0,3,2,0,7,0,4,0,1,1,2,1,0 1,5,0,3,0,12,2,0,1,1,1,0,1,0 1,0,1,2,1,5,5,0,0,1,1,2,1,0 0,0,3,2,2,2,1,0,1,1,1,0,1,0 2,0,14,0,1,10,5,0,1,1,1,0,1,0 1,0,5,2,2,8,3,0,0,1,1,0,1,0 1,0,1,2,1,3,5,1,0,1,1,2,1,0 2,0,1,2,0,3,2,0,1,1,1,0,1,1 0,0,5,2,2,2,3,0,1,1,1,0,1,0 0,0,3,2,2,8,3,0,0,1,1,2,1,0 2,0,1,2,3,8,3,0,0,1,1,2,1,0 0,0,1,2,0,2,0,0,0,1,1,0,1,0 0,0,7,1,2,7,3,0,0,1,1,0,1,0 0,0,0,3,0,3,2,0,1,1,1,1,1,0 0,0,2,1,3,1,1,0,1,1,1,0,1,0 1,0,6,2,0,4,2,0,1,1,1,1,1,1 0,0,5,2,2,2,1,0,1,1,1,1,1,0 1,0,3,2,0,3,2,4,1,1,1,0,1,1 1,1,1,2,2,1,3,1,1,1,1,2,1,0 2,0,13,3,0,4,2,0,1,1,1,1,1,1 0,5,10,3,5,5,3,1,0,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 1,0,2,1,3,2,5,4,0,1,1,1,1,0 1,0,3,2,3,10,5,4,0,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,1 0,0,6,2,3,8,5,0,0,1,1,2,1,0 0,0,3,2,2,3,1,0,0,1,1,0,1,0 1,0,3,2,1,4,3,0,0,1,1,0,1,0 1,4,3,2,0,2,0,0,0,1,1,2,1,0 0,0,3,2,0,1,2,1,1,1,1,0,1,0 1,0,3,2,0,3,2,2,1,1,1,1,1,0 1,0,4,3,0,5,2,0,1,1,1,1,1,1 1,1,3,2,0,9,2,0,1,1,1,1,1,0 0,0,3,2,2,10,1,4,1,1,1,0,1,0 1,0,0,3,1,8,3,0,0,1,1,0,1,0 0,3,6,2,2,5,4,1,1,1,1,0,1,0 0,0,0,3,0,4,2,0,1,1,1,0,1,1 0,5,1,2,1,12,4,0,1,1,1,1,1,0 1,0,10,3,2,4,3,0,1,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,2,1,2,2,1,0,0,1,1,2,1,0 0,0,3,2,2,3,5,0,0,1,1,0,1,0 1,0,4,3,0,5,2,1,1,1,1,1,1,1 0,1,1,2,3,6,1,0,1,1,1,1,1,0 0,0,3,2,2,1,3,0,1,1,1,0,1,0 1,0,1,2,0,8,0,0,0,1,1,2,1,1 0,0,9,1,0,1,2,0,1,1,1,1,1,0 0,0,1,2,2,8,1,0,1,1,1,2,1,0 2,0,12,1,0,10,2,0,1,1,1,0,1,1 1,0,8,0,5,2,5,0,0,1,1,2,1,0 1,0,1,2,0,0,2,4,1,1,1,0,1,0 0,0,5,2,2,5,1,0,1,1,1,0,1,0 1,0,5,2,0,1,2,0,1,1,1,0,1,1 1,1,1,2,0,1,2,0,1,1,1,1,1,0 2,5,12,1,1,2,3,4,0,1,1,0,1,0 1,1,1,2,2,1,1,0,1,1,1,2,1,0 2,1,3,2,0,4,2,0,1,1,1,1,1,1 0,0,8,0,2,2,4,0,1,1,1,1,1,0 2,0,7,1,4,2,5,4,0,1,1,0,1,0 0,4,1,2,0,2,2,0,1,1,1,0,1,0 1,0,7,1,0,8,2,4,1,1,1,0,1,1 0,0,3,2,0,10,2,0,1,1,1,0,1,0 0,0,3,2,2,6,3,4,1,1,1,0,1,0 0,0,1,2,2,3,3,0,0,1,1,2,1,0 1,0,1,2,3,3,5,4,0,1,1,2,1,0 0,0,3,2,2,3,1,1,0,1,1,0,1,0 1,0,3,2,0,4,2,0,1,1,1,1,1,0 1,0,3,2,1,5,5,0,0,1,1,2,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,0,6,2,0,1,1,1,1,1,1 1,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,1,2,0,10,2,0,1,1,1,1,1,1 0,0,1,2,2,2,3,0,1,1,1,1,1,0 1,0,0,3,0,3,2,0,1,1,1,1,1,1 0,4,6,2,0,5,2,0,1,1,1,1,1,0 0,0,6,2,0,1,0,0,0,1,1,1,1,0 0,0,3,2,2,6,1,4,1,1,1,0,1,0 0,0,3,2,1,2,5,0,0,1,1,2,1,0 1,0,3,2,0,5,2,2,1,1,1,2,1,0 0,0,2,1,2,9,1,0,1,1,1,1,1,0 1,0,3,2,0,4,2,0,1,1,1,1,1,0 1,4,0,3,0,5,2,0,1,1,1,1,1,1 0,0,1,2,0,1,2,0,1,1,1,1,1,1 0,0,0,3,2,3,3,0,0,1,1,1,1,0 2,0,3,2,0,1,2,0,1,1,1,0,1,0 2,1,1,2,0,4,2,0,1,1,1,2,1,0 0,0,3,2,0,0,2,0,1,1,1,1,1,1 0,0,2,1,2,3,1,0,1,1,1,2,1,0 2,0,3,2,0,1,2,0,1,1,1,1,1,0 1,5,13,3,2,5,3,4,0,1,1,0,1,0 0,0,3,2,2,4,4,0,0,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 0,1,1,2,0,4,2,0,1,1,1,1,1,0 0,0,6,2,0,5,2,0,1,1,1,0,1,0 0,3,5,2,2,10,3,4,1,1,1,0,1,0 0,0,5,2,2,8,3,0,0,1,1,0,1,0 1,4,10,3,2,5,1,0,1,1,1,0,1,0 1,0,3,2,3,7,5,4,0,1,1,2,1,0 0,0,1,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,2,0,1,4,1,1,1,0,1,0 2,0,0,3,0,8,2,0,1,1,1,2,1,0 2,1,1,2,1,0,3,0,0,1,1,2,1,1 0,0,1,2,2,0,1,0,1,1,1,2,1,0 1,0,1,2,0,1,2,0,1,1,1,1,1,1 0,4,3,2,0,2,2,0,1,1,1,0,1,0 0,0,3,2,0,3,2,0,1,1,1,0,1,0 0,0,8,0,2,2,4,0,1,1,1,2,1,0 0,0,7,1,5,1,3,0,1,1,1,0,1,0 2,0,12,1,0,1,2,0,1,1,1,0,1,0 0,0,9,1,2,1,4,3,1,1,1,1,1,0 1,0,12,1,2,6,3,0,1,1,1,0,1,0 0,0,3,2,2,3,1,0,0,1,1,2,1,0 0,0,7,1,1,6,3,0,1,1,1,1,1,0 2,1,6,2,0,10,0,0,0,1,1,2,1,1 1,0,3,2,1,7,5,0,0,1,1,1,1,0 1,0,3,2,0,9,2,0,1,1,1,1,1,0 0,1,12,1,0,1,2,0,1,1,1,1,1,0 0,0,1,2,2,2,1,0,1,1,1,2,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,1 0,0,1,2,1,1,3,0,1,1,1,1,1,0 1,3,6,2,0,12,2,0,1,1,1,0,1,0 0,0,1,2,2,8,1,0,0,1,1,2,1,0 0,3,3,2,1,1,5,0,1,1,1,0,1,0 0,0,1,2,2,6,1,0,0,1,1,2,1,0 0,0,3,2,2,8,3,0,1,1,1,0,1,0 1,5,3,2,2,2,5,4,0,1,1,2,1,0 0,0,3,2,0,1,2,0,1,1,1,1,1,1 1,0,11,0,4,2,5,3,0,1,1,2,1,0 1,0,0,3,1,4,3,0,0,1,1,2,1,0 3,1,3,2,4,2,3,0,0,1,1,2,1,0 0,0,3,2,2,3,1,0,1,1,1,0,1,0 0,0,1,2,0,1,2,0,1,1,1,1,1,0 1,1,0,3,0,3,2,1,1,1,1,1,1,0 0,0,3,2,2,1,4,0,1,1,1,0,1,0 0,0,1,2,0,10,2,0,1,1,1,1,1,0 0,0,0,3,0,5,2,0,1,1,1,0,1,1 0,5,0,3,2,5,1,0,0,1,1,1,1,0 2,4,3,2,1,2,5,0,0,1,1,2,1,0 1,0,3,2,1,1,4,0,1,1,1,0,1,0 0,0,8,0,2,9,5,3,1,1,1,2,1,0 0,0,3,2,2,8,5,0,1,1,1,2,1,0 0,0,6,2,2,2,4,0,0,1,1,0,1,0 0,0,1,2,2,3,3,0,1,1,1,1,1,0 0,0,3,2,0,4,2,0,1,1,1,1,1,1 0,0,1,2,2,7,1,0,1,1,1,1,1,0 0,5,1,2,2,10,3,4,1,1,1,0,1,0 0,3,3,2,2,4,3,0,0,1,1,0,1,0 0,0,0,3,2,5,3,0,1,1,1,0,1,1 0,0,13,3,2,5,3,0,0,1,1,2,1,0 0,4,10,3,0,5,2,0,1,1,1,1,1,1 2,0,0,3,0,3,2,0,1,1,1,0,1,0 1,0,9,1,2,4,3,0,1,1,1,1,1,0 0,0,0,3,2,3,3,0,1,1,1,0,1,1 1,0,10,3,0,5,2,0,1,1,1,0,1,1 1,0,5,2,1,4,5,0,1,1,1,1,1,0 2,4,0,3,1,5,3,4,0,1,1,0,1,0 2,2,1,2,0,3,2,0,1,1,1,2,1,1 0,0,0,3,0,5,2,0,1,1,1,0,1,0 1,0,8,0,0,1,2,4,1,1,1,1,1,1 1,2,3,2,1,4,5,0,0,1,1,0,1,0 0,1,0,3,0,1,2,0,1,1,1,0,1,0 1,3,1,2,0,7,2,0,1,1,1,0,1,0 0,0,3,2,2,1,5,0,1,1,1,0,1,1 3,0,12,1,4,3,5,4,0,1,1,2,1,0 2,0,0,3,1,3,3,4,0,1,1,1,1,0 0,3,0,3,0,5,2,0,1,1,1,0,1,1 0,0,1,2,2,8,3,0,0,1,1,1,1,0 0,3,0,3,1,12,3,0,1,1,1,1,1,1 2,1,4,3,1,5,3,0,1,1,1,0,1,0 0,0,3,2,0,7,2,0,1,1,1,1,1,1 0,0,1,2,2,5,1,0,0,1,1,2,1,0 1,3,10,3,0,0,2,1,1,1,1,0,1,1 0,5,1,2,2,1,3,0,0,1,1,0,1,0 0,0,2,1,2,2,1,0,0,1,1,2,1,0 0,4,3,2,0,2,2,0,1,1,1,1,1,0 1,1,1,2,2,9,1,0,1,1,1,1,1,0 0,0,5,2,2,0,3,0,0,1,1,0,1,0 1,1,0,3,2,1,1,0,1,1,1,0,1,0 0,0,1,2,0,5,2,0,1,1,1,1,1,1 0,0,1,2,2,3,3,0,1,1,1,2,1,0 0,0,3,2,2,3,1,1,1,1,1,0,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,1 1,1,0,3,3,1,1,0,1,1,1,2,1,0 0,0,1,2,2,6,1,0,1,1,1,2,1,0 0,0,5,2,0,4,2,0,1,1,1,1,1,1 0,0,1,2,2,1,4,1,0,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,0 1,0,10,3,0,5,2,0,1,1,1,1,1,0 1,3,3,2,0,2,2,0,1,1,1,0,1,0 1,1,1,2,0,5,2,0,1,1,1,2,1,0 1,0,3,2,1,8,5,0,0,1,1,0,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 2,0,3,2,0,6,2,4,1,1,1,2,1,1 1,0,3,2,0,7,2,0,1,1,1,1,1,0 0,0,0,3,0,4,2,0,1,1,1,0,1,0 0,0,6,2,2,8,1,4,0,1,1,0,1,0 1,2,0,3,0,3,2,0,1,1,1,1,1,1 1,4,3,2,2,10,3,1,1,1,1,0,1,0 2,4,0,3,2,8,3,0,1,1,1,2,1,0 0,0,9,1,0,10,2,0,1,1,1,0,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,5,2,2,2,3,1,0,1,1,2,1,0 1,0,3,2,0,9,2,0,1,1,1,1,1,0 1,3,13,3,2,5,3,0,0,1,1,1,1,1 1,0,3,2,1,10,3,0,1,1,1,1,1,1 1,4,2,1,1,3,5,0,1,1,1,1,1,1 1,5,0,3,0,8,2,0,1,1,1,0,1,1 0,0,1,2,2,0,1,0,1,1,1,2,1,0 1,0,0,3,1,3,3,0,1,1,1,1,1,1 0,0,0,3,2,5,3,0,0,1,1,0,1,0 2,0,3,2,0,7,2,0,1,1,1,2,1,0 0,0,3,2,2,8,1,0,0,1,1,0,1,0 0,4,5,2,0,8,0,0,0,1,1,2,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,0,3,2,4,3,0,0,1,1,0,1,0 2,0,5,2,1,8,5,0,0,1,1,0,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 1,0,0,3,1,3,5,0,0,1,1,1,1,0 1,0,0,3,2,5,3,4,1,1,1,2,1,0 0,0,3,2,0,1,2,0,1,1,1,1,1,0 1,0,3,2,1,2,5,4,1,1,1,2,1,0 1,0,1,2,0,8,2,0,1,1,1,1,1,1 0,0,1,2,2,8,5,1,0,1,1,0,1,0 0,0,2,1,1,2,3,0,0,1,1,0,1,0 1,0,6,2,1,2,5,0,0,1,1,2,1,0 1,0,14,0,5,1,4,0,1,1,1,0,1,0 2,0,3,2,4,8,3,0,0,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 0,0,1,2,0,3,2,0,1,1,1,1,1,1 3,0,1,2,1,8,3,0,0,1,1,2,1,0 2,3,1,2,1,5,3,0,1,1,1,1,1,1 0,0,3,2,2,8,3,0,0,1,1,0,1,0 0,0,6,2,2,0,5,4,0,1,1,0,1,0 0,0,3,2,2,2,5,0,1,1,1,0,1,0 2,3,1,2,1,8,4,4,0,1,1,0,1,0 2,0,3,2,3,3,3,0,0,1,1,2,1,0 1,3,1,2,0,1,2,0,1,1,1,0,1,0 0,0,8,0,2,6,5,0,1,1,1,0,1,0 1,3,3,2,0,8,2,0,1,1,1,0,1,0 1,0,5,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,0,4,2,0,1,1,1,1,1,1 0,0,0,3,3,4,3,0,0,1,1,1,1,0 1,1,0,3,0,9,2,0,1,1,1,1,1,0 2,1,3,2,0,1,2,0,1,1,1,1,1,1 3,0,0,3,0,4,2,0,1,1,1,2,1,0 1,4,1,2,0,12,2,0,1,1,1,0,1,0 0,0,3,2,2,6,1,0,1,1,1,0,1,0 0,0,0,3,2,0,3,1,0,1,1,0,1,0 0,0,3,2,2,8,1,0,0,1,1,0,1,0 0,0,3,2,2,3,3,0,0,1,1,1,1,0 2,2,0,3,0,4,2,0,1,1,1,2,1,0 1,0,1,2,0,10,2,0,1,1,1,1,1,1 0,1,3,2,2,9,4,0,1,1,1,0,1,0 1,4,0,3,3,5,5,4,0,1,1,0,1,0 1,0,3,2,2,7,4,0,1,1,1,0,1,0 0,0,3,2,0,10,2,0,1,1,1,1,1,1 1,5,6,2,0,4,2,0,1,1,1,0,1,0 0,0,3,2,2,1,1,4,0,1,1,2,1,0 0,5,0,3,0,12,2,0,1,1,1,1,1,1 0,0,3,2,2,1,1,0,1,1,1,0,1,0 2,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,1,2,2,3,4,0,1,1,1,1,1,0 0,0,1,2,1,2,3,0,0,1,1,1,1,0 1,1,4,3,0,5,2,0,1,1,1,2,1,1 0,0,3,2,2,8,1,0,0,1,1,0,1,0 1,0,3,2,0,5,2,0,1,1,1,1,1,1 0,0,0,3,0,3,2,0,1,1,1,1,1,1 1,0,1,2,0,8,0,0,0,1,1,2,1,1 1,4,10,3,0,4,2,0,1,1,1,1,1,1 0,4,0,3,2,5,1,0,1,1,1,0,1,0 1,3,1,2,1,8,5,4,0,1,1,0,1,0 1,0,1,2,0,4,0,0,0,1,1,0,1,1 1,5,5,2,1,5,3,4,1,1,1,0,1,0 1,0,2,1,2,10,3,0,1,1,1,1,1,1 0,0,12,1,0,1,2,0,1,1,1,0,1,0 0,0,1,2,2,3,3,0,1,1,1,1,1,0 1,2,0,3,0,4,2,0,1,1,1,0,1,1 0,0,3,2,3,4,5,0,0,1,1,2,1,0 0,3,5,2,2,8,5,4,0,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,0,1,1 0,0,3,2,0,1,2,0,1,1,1,1,1,0 1,1,1,2,0,9,2,0,1,1,1,1,1,0 0,0,1,2,2,2,3,0,0,1,1,2,1,0 0,0,5,2,2,2,1,0,0,1,1,2,1,0 0,0,3,2,2,0,3,0,0,1,1,0,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,1 1,2,3,2,2,9,3,0,1,1,1,1,1,0 0,0,3,2,2,3,3,0,1,1,1,0,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,1 1,1,4,3,0,5,2,0,1,1,1,1,1,1 1,4,10,3,2,5,3,0,1,1,1,1,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,1 1,4,0,3,2,4,3,0,1,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,0 2,0,3,2,0,1,2,1,1,1,1,0,1,1 0,0,12,1,2,2,1,0,1,1,1,2,1,0 1,0,3,2,0,4,0,0,0,1,1,2,1,1 1,0,0,3,4,5,3,0,0,1,1,1,1,1 1,0,1,2,2,8,3,0,0,1,1,0,1,0 1,4,6,2,0,1,2,0,1,1,1,0,1,1 2,4,10,3,4,5,5,0,0,1,1,1,1,0 1,0,3,2,0,7,2,0,1,1,1,1,1,0 0,0,0,3,2,8,1,0,0,1,1,0,1,0 1,0,1,2,2,8,1,4,0,1,1,0,1,0 0,0,0,3,2,6,4,0,0,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,1 0,0,2,1,2,4,1,0,1,1,1,2,1,0 1,0,6,2,0,2,2,0,1,1,1,0,1,0 0,0,1,2,2,5,3,0,0,1,1,2,1,0 1,1,3,2,0,4,2,0,1,1,1,1,1,0 0,0,1,2,2,8,4,1,0,1,1,2,1,0 1,0,3,2,0,8,0,0,0,1,1,0,1,0 0,0,1,2,0,4,2,0,1,1,1,1,1,0 0,4,1,2,2,8,3,0,1,1,1,0,1,0 1,0,1,2,0,3,2,0,1,1,1,0,1,1 0,0,3,2,1,4,5,0,0,1,1,0,1,0 0,0,1,2,3,0,5,0,0,1,1,0,1,0 0,0,1,2,5,8,1,0,0,1,1,2,1,0 1,5,10,3,1,5,3,0,1,1,1,0,1,1 1,1,3,2,1,10,5,0,1,1,1,1,1,0 0,4,7,1,2,2,1,0,1,1,1,0,1,0 0,0,3,2,2,2,1,0,0,1,1,2,1,0 0,0,1,2,1,1,1,0,1,1,1,0,1,1 0,5,5,2,3,2,5,4,0,1,1,0,1,0 0,0,3,2,0,6,2,0,1,1,1,0,1,0 1,3,3,2,0,8,2,4,1,1,1,0,1,1 1,3,2,1,4,8,3,0,0,1,1,0,1,0 0,0,9,1,2,8,1,0,1,1,1,0,1,0 0,0,1,2,0,8,0,0,0,1,1,2,1,0 0,5,3,2,0,8,1,0,0,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,1,1,1 0,2,3,2,0,1,2,0,1,1,1,0,1,1 1,0,6,2,0,4,2,0,1,1,1,0,1,1 1,0,1,2,0,3,2,0,1,1,1,0,1,1 1,4,1,2,0,5,2,0,1,1,1,1,1,0 0,0,0,3,2,3,3,0,1,1,1,1,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,1 2,3,1,2,1,5,3,2,0,1,1,0,1,0 1,0,0,3,0,3,2,0,1,1,1,1,1,1 2,2,6,2,0,4,2,0,1,1,1,0,1,1 1,0,3,2,0,3,2,0,1,1,1,1,1,1 1,2,1,2,0,4,2,0,1,1,1,1,1,1 1,0,1,2,0,8,2,0,1,1,1,1,1,1 1,0,3,2,1,3,3,0,0,1,1,0,1,0 2,4,3,2,0,2,2,0,1,1,1,2,1,0 1,0,0,3,4,4,5,0,1,1,1,2,1,0 0,0,10,3,3,2,1,0,0,1,1,0,1,0 2,0,6,2,4,8,3,0,1,1,1,0,1,0 0,4,2,1,2,5,1,0,0,1,1,2,1,0 0,0,5,2,0,4,0,0,0,1,1,2,1,1 0,0,5,2,2,1,1,3,1,1,1,1,1,0 1,0,10,3,2,5,3,0,0,1,1,2,1,0 1,1,1,2,0,10,2,0,1,1,1,1,1,0 1,0,0,3,2,5,3,0,1,1,1,0,1,0 0,0,3,2,2,7,1,4,1,1,1,0,1,0 1,1,10,3,0,4,0,0,0,1,1,1,1,1 0,0,3,2,2,4,4,0,1,1,1,1,1,0 0,0,1,2,2,5,1,0,1,1,1,2,1,0 1,5,3,2,0,10,2,0,1,1,1,0,1,0 0,0,13,3,0,5,2,1,1,1,1,0,1,1 1,0,12,1,0,9,2,0,1,1,1,2,1,0 2,0,4,3,0,5,2,0,1,1,1,1,1,1 0,0,3,2,0,8,2,0,1,1,1,1,1,0 1,1,10,3,0,1,2,0,1,1,1,1,1,1 2,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,0,3,1,3,3,0,1,1,1,1,1,1 0,0,3,2,5,6,3,0,1,1,1,0,1,0 1,0,0,3,2,8,3,0,1,1,1,0,1,0 0,0,4,3,0,5,2,0,1,1,1,1,1,1 0,0,3,2,2,1,1,4,1,1,1,0,1,0 0,0,1,2,2,6,5,4,1,1,1,2,1,0 0,3,9,1,2,2,1,0,0,1,1,2,1,0 1,4,0,3,0,5,2,0,1,1,1,0,1,0 1,2,1,2,0,4,2,0,1,1,1,1,1,1 1,0,6,2,3,4,5,4,0,1,1,1,1,0 0,1,5,2,1,3,3,0,1,1,1,1,1,0 0,0,7,1,0,10,2,0,1,1,1,0,1,0 0,0,3,2,0,6,2,0,1,1,1,0,1,0 0,0,1,2,2,4,3,0,1,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,0 1,0,14,0,2,7,5,0,0,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,1 1,2,3,2,0,1,2,0,1,1,1,0,1,1 0,0,3,2,2,8,3,0,1,1,1,1,1,0 2,4,1,2,2,5,3,0,0,1,1,1,1,0 1,2,4,3,1,5,3,0,1,1,1,1,1,1 2,0,0,3,2,0,4,0,0,1,1,2,1,0 0,0,3,2,0,4,0,0,0,1,1,0,1,0 0,0,3,2,2,7,5,0,0,1,1,0,1,0 1,0,3,2,0,1,2,4,1,1,1,0,1,0 1,0,3,2,0,3,2,0,1,1,1,1,1,0 0,0,2,1,2,2,3,0,1,1,1,0,1,0 2,1,0,3,0,3,2,0,1,1,1,0,1,1 1,0,0,3,0,10,2,0,1,1,1,0,1,0 3,0,7,1,0,12,2,0,1,1,1,2,1,0 0,5,6,2,2,0,3,0,0,1,1,0,1,0 1,1,14,0,2,10,3,0,1,1,1,0,1,0 0,5,10,3,2,5,3,1,1,1,1,2,1,0 1,4,10,3,0,5,2,0,1,1,1,0,1,1 2,0,1,2,1,10,3,0,1,1,1,0,1,1 0,0,3,2,0,7,2,4,1,1,1,0,1,0 1,4,1,2,1,5,5,0,0,1,1,2,1,0 0,0,3,2,1,8,1,4,0,1,1,0,1,0 0,3,1,2,2,4,3,0,1,1,1,1,1,0 0,0,14,0,2,6,3,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,3,2,0,10,2,2,1,1,1,1,1,0 0,0,1,2,2,8,3,0,0,1,1,0,1,0 1,3,3,2,0,8,2,0,1,1,1,0,1,0 2,2,3,2,0,3,2,0,1,1,1,0,1,0 2,4,0,3,0,5,2,0,1,1,1,0,1,1 0,3,1,2,0,4,0,4,0,1,1,0,1,1 1,0,3,2,0,9,2,3,1,1,1,1,1,0 0,0,9,1,2,3,1,0,0,1,1,2,1,0 0,0,3,2,2,2,1,0,1,1,1,2,1,0 2,1,0,3,0,3,2,0,1,1,1,2,1,1 0,0,1,2,2,6,3,0,1,1,1,2,1,0 1,2,4,3,0,5,2,0,1,1,1,1,1,1 1,1,3,2,0,9,2,0,1,1,1,1,1,0 2,0,3,2,0,11,0,0,0,1,1,2,1,0 0,0,5,2,0,8,0,4,0,1,1,2,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,0 2,0,6,2,0,7,2,0,1,1,1,1,1,0 1,3,1,2,0,1,2,0,1,1,1,0,1,0 1,5,1,2,2,12,3,0,0,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,1,8,3,0,0,1,1,0,1,0 1,5,0,3,1,5,3,0,0,1,1,0,1,0 2,0,10,3,0,4,2,0,1,1,1,0,1,1 1,1,1,2,0,5,2,0,1,1,1,2,1,1 1,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,2,10,3,0,1,1,1,0,1,0 0,0,8,0,3,9,3,0,1,1,1,1,1,0 0,0,10,3,0,5,2,0,1,1,1,0,1,1 1,0,3,2,0,4,2,0,1,1,1,1,1,0 1,0,3,2,0,3,2,0,1,1,1,1,1,1 1,0,3,2,3,3,3,0,0,1,1,1,1,0 2,4,0,3,0,5,2,0,1,1,1,0,1,1 0,0,3,2,2,1,1,0,1,1,1,0,1,0 0,5,1,2,2,2,1,0,1,1,1,2,1,0 0,0,1,2,0,7,2,0,1,1,1,0,1,0 0,5,1,2,0,2,2,0,1,1,1,0,1,0 1,0,6,2,0,4,2,4,1,1,1,0,1,1 1,0,1,2,1,8,3,0,0,1,1,2,1,0 1,0,1,2,0,10,2,0,1,1,1,1,1,0 0,0,2,1,2,1,1,0,1,1,1,1,1,0 2,0,3,2,0,1,2,0,1,1,1,1,1,1 1,0,1,2,0,1,2,0,1,1,1,0,1,0 0,1,11,0,5,1,3,0,1,1,1,0,1,0 1,0,3,2,0,4,2,0,1,1,1,1,1,0 0,0,2,1,0,6,1,0,1,1,1,0,1,0 0,4,1,2,2,1,3,0,1,1,1,0,1,0 0,0,13,3,2,5,3,0,0,1,1,1,1,1 0,0,1,2,2,5,1,0,1,1,1,2,1,0 2,1,3,2,0,9,2,0,1,1,1,2,1,0 2,0,8,0,0,3,2,0,1,1,1,1,1,1 1,0,13,3,0,5,2,0,1,1,1,0,1,1 1,0,3,2,0,3,2,0,1,1,1,0,1,0 1,1,3,2,0,3,0,0,0,1,1,0,1,1 0,3,3,2,2,2,1,4,0,1,1,2,1,0 0,0,0,3,1,2,3,0,0,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,8,0,0,7,2,0,1,1,1,0,1,0 0,0,1,2,3,3,5,4,0,1,1,2,1,0 1,0,0,3,1,12,3,0,1,1,1,1,1,0 0,0,1,2,2,8,3,4,0,1,1,0,1,0 1,0,3,2,2,3,3,4,0,1,1,1,1,0 1,1,3,2,0,9,2,0,1,1,1,1,1,1 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,2,1,1,0,1,1,1,0,1,0 0,1,3,2,0,1,2,0,1,1,1,0,1,1 1,0,1,2,0,3,2,0,1,1,1,1,1,0 1,0,11,0,2,2,1,0,1,1,1,2,1,0 0,0,3,2,1,4,5,0,0,1,1,0,1,0 1,0,1,2,1,1,1,0,1,1,1,1,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,3,2,1,7,3,0,0,1,1,0,1,0 0,5,1,2,0,8,0,0,0,1,1,1,1,0 2,4,3,2,4,2,5,4,0,1,1,2,1,0 0,0,5,2,0,3,2,0,1,1,1,1,1,0 1,2,4,3,0,5,2,0,1,1,1,1,1,1 1,4,1,2,0,12,2,0,1,1,1,0,1,1 1,0,8,0,0,9,2,0,1,1,1,1,1,0 1,5,10,3,0,4,2,0,1,1,1,1,1,1 2,0,1,2,0,2,2,0,1,1,1,0,1,0 2,1,3,2,0,3,2,0,1,1,1,1,1,0 0,0,5,2,5,1,3,0,1,1,1,2,1,0 2,0,1,2,0,4,2,0,1,1,1,1,1,0 0,0,5,2,2,1,1,0,1,1,1,0,1,0 1,2,1,2,0,3,2,0,1,1,1,1,1,1 1,0,0,3,5,2,3,0,1,1,1,1,1,0 0,0,1,2,2,7,1,0,1,1,1,0,1,0 0,0,3,2,2,2,5,4,1,1,1,2,1,0 1,0,10,3,0,10,2,0,1,1,1,0,1,0 2,3,3,2,4,7,5,0,0,1,1,0,1,0 0,1,3,2,0,4,2,0,1,1,1,1,1,0 1,0,8,0,2,5,4,4,1,1,1,1,1,0 0,0,7,1,0,1,2,0,1,1,1,0,1,0 0,0,0,3,2,3,3,0,1,1,1,0,1,0 0,0,0,3,0,3,2,3,1,1,1,0,1,0 1,5,3,2,1,2,5,4,0,1,1,0,1,0 1,0,10,3,0,5,2,0,1,1,1,1,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 0,0,3,2,2,2,3,0,1,1,1,0,1,0 0,4,10,3,0,5,0,0,0,1,1,1,1,0 0,0,9,1,2,3,1,0,0,1,1,2,1,0 0,0,3,2,2,3,3,0,1,1,1,2,1,0 0,0,3,2,2,7,4,0,0,1,1,0,1,0 2,5,6,2,4,4,3,2,0,1,1,2,1,0 0,0,1,2,2,3,1,4,0,1,1,0,1,0 2,1,10,3,0,4,2,0,1,1,1,0,1,0 1,0,12,1,1,1,3,0,1,1,1,1,1,0 1,5,1,2,0,8,0,0,0,1,1,2,1,0 0,0,0,3,2,4,3,0,0,1,1,2,1,0 2,4,3,2,4,10,3,0,0,1,1,0,1,0 1,0,2,1,0,2,2,0,1,1,1,0,1,0 1,0,8,0,4,1,5,0,1,1,1,0,1,0 0,0,5,2,2,6,1,0,1,1,1,2,1,0 1,2,3,2,0,8,0,0,0,1,1,0,1,1 1,3,1,2,2,12,1,0,1,1,1,0,1,0 1,5,6,2,0,2,2,4,1,1,1,2,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 2,0,3,2,2,10,1,0,1,1,1,0,1,0 0,0,0,3,2,2,3,4,0,1,1,2,1,0 2,0,12,1,1,8,4,0,0,1,1,1,1,0 0,0,3,2,0,3,2,0,1,1,1,1,1,0 1,0,3,2,3,3,5,0,0,1,1,0,1,0 0,0,1,2,2,4,3,0,1,1,1,1,1,0 1,1,7,1,0,1,2,0,1,1,1,0,1,0 0,0,3,2,0,7,2,4,1,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,1,1,1 1,1,1,2,1,3,5,0,0,1,1,1,1,0 0,0,1,2,2,8,3,0,0,1,1,2,1,0 1,0,3,2,1,8,5,0,0,1,1,1,1,0 0,0,0,3,0,1,2,0,1,1,1,0,1,0 2,1,1,2,1,9,5,0,0,1,1,2,1,1 1,0,3,2,0,8,0,0,0,1,1,2,1,0 1,0,10,3,0,4,2,0,1,1,1,0,1,1 0,0,1,2,0,1,2,0,1,1,1,1,1,0 1,4,0,3,0,5,0,0,0,1,1,1,1,1 0,0,3,2,0,8,0,4,0,1,1,0,1,0 0,4,3,2,0,2,2,0,1,1,1,1,1,0 0,0,10,3,2,3,1,0,1,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,1 0,0,6,2,2,5,3,0,1,1,1,2,1,0 1,3,3,2,0,8,2,0,1,1,1,0,1,1 1,4,1,2,0,6,2,0,1,1,1,0,1,1 2,1,3,2,0,9,2,0,1,1,1,1,1,0 1,1,3,2,0,9,2,0,1,1,1,0,1,1 0,0,7,1,0,1,2,0,1,1,1,2,1,0 0,0,3,2,2,3,3,0,1,1,1,1,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,0,3,2,3,1,0,1,1,1,2,1,0 1,1,1,2,0,4,2,0,1,1,1,0,1,1 0,0,3,2,0,3,1,0,1,1,1,2,1,1 2,0,1,2,1,8,3,0,0,1,1,0,1,0 1,4,3,2,1,10,3,4,0,1,1,2,1,0 1,4,10,3,0,5,0,0,0,1,1,1,1,1 0,0,2,1,2,1,1,0,1,1,1,2,1,0 0,0,14,0,0,6,1,0,1,1,1,0,1,0 1,5,4,3,1,5,3,0,1,1,1,1,1,0 1,0,13,3,0,4,0,0,0,1,1,2,1,1 2,1,0,3,0,3,2,0,1,1,1,2,1,0 2,0,6,2,4,5,3,0,0,1,1,2,1,0 0,0,2,1,2,10,3,4,1,1,1,1,1,0 1,0,3,2,0,8,0,4,0,1,1,2,1,0 0,2,3,2,0,1,2,0,1,1,1,0,1,0 0,0,9,1,2,2,1,0,0,1,1,2,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,3,2,0,7,2,0,1,1,1,0,1,1 1,4,1,2,1,8,5,0,0,1,1,0,1,0 1,5,13,3,0,5,2,1,1,1,1,0,1,1 2,0,0,3,0,3,2,0,1,1,1,2,1,0 1,0,5,2,1,8,5,0,0,1,1,0,1,0 1,3,0,3,2,4,3,0,1,1,1,0,1,1 1,4,4,3,0,5,2,0,1,1,1,1,1,1 0,0,12,1,2,5,1,0,1,1,1,2,1,0 0,1,3,2,2,1,3,0,1,1,1,0,1,0 0,0,0,3,2,5,3,0,1,1,1,1,1,0 0,0,1,2,2,2,3,0,1,1,1,2,1,0 0,0,3,2,2,2,5,4,0,1,1,1,1,0 0,0,1,2,2,3,4,4,0,1,1,0,1,0 1,0,12,1,0,7,2,0,1,1,1,0,1,1 0,1,6,2,2,9,3,0,1,1,1,1,1,0 0,0,1,2,2,3,4,0,0,1,1,2,1,0 0,0,6,2,0,4,2,0,1,1,1,1,1,0 0,0,0,3,2,3,3,0,1,1,1,1,1,0 1,0,3,2,2,1,3,0,0,1,1,0,1,0 0,0,0,3,2,4,3,0,1,1,1,0,1,0 1,2,0,3,0,4,0,1,0,1,1,2,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,1 0,0,9,1,2,8,1,0,1,1,1,2,1,0 2,3,1,2,0,5,2,0,1,1,1,0,1,1 2,0,1,2,1,8,3,0,0,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,8,0,0,7,2,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,4,3,2,0,4,0,4,0,1,1,0,1,1 0,0,1,2,0,6,2,0,1,1,1,2,1,0 0,5,1,2,0,2,2,0,1,1,1,2,1,0 1,0,0,3,1,4,3,0,1,1,1,0,1,1 2,4,8,0,1,2,3,0,1,1,1,0,1,0 1,2,1,2,0,3,2,0,1,1,1,1,1,0 0,0,2,1,2,3,3,0,0,1,1,0,1,0 1,0,1,2,0,0,2,0,1,1,1,0,1,1 0,0,1,2,2,3,1,0,0,1,1,2,1,0 1,3,0,3,0,12,2,0,1,1,1,1,1,1 1,1,1,2,2,5,1,0,0,1,1,2,1,0 0,0,5,2,2,0,1,0,0,1,1,0,1,0 1,0,1,2,5,2,3,0,0,1,1,0,1,0 0,5,1,2,0,4,2,0,1,1,1,1,1,0 1,0,6,2,3,5,5,0,0,1,1,0,1,0 2,0,3,2,0,1,2,0,1,1,1,2,1,0 1,3,0,3,1,4,3,0,1,1,1,1,1,0 0,0,1,2,1,8,3,0,0,1,1,2,1,0 0,0,2,1,2,6,1,0,1,1,1,2,1,0 0,1,3,2,0,1,2,0,1,1,1,0,1,0 1,1,1,2,0,3,2,0,1,1,1,1,1,0 2,0,3,2,0,3,2,0,1,1,1,0,1,0 1,4,10,3,0,5,0,0,0,1,1,0,1,1 0,0,1,2,2,7,1,0,0,1,1,1,1,0 0,4,5,2,2,12,3,4,1,1,1,0,1,0 0,0,3,2,0,7,2,3,1,1,1,0,1,0 0,0,0,3,2,2,1,0,0,1,1,2,1,0 0,0,1,2,2,1,3,0,1,1,1,1,1,0 0,0,3,2,2,8,1,0,1,1,1,0,1,0 0,0,2,1,2,2,1,0,1,1,1,2,1,0 0,0,1,2,2,8,1,0,0,1,1,2,1,0 0,0,3,2,2,1,3,0,1,1,1,0,1,0 1,0,1,2,1,0,3,0,0,1,1,0,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 1,0,1,2,0,3,2,0,1,1,1,0,1,1 0,3,0,3,2,8,3,0,0,1,1,0,1,0 0,1,3,2,2,10,1,0,1,1,1,0,1,0 2,0,1,2,0,3,2,0,1,1,1,0,1,1 0,5,0,3,2,5,1,0,0,1,1,2,1,0 2,0,7,1,0,10,2,0,1,1,1,1,1,1 1,0,3,2,1,10,3,0,1,1,1,0,1,0 0,0,3,2,2,10,4,0,1,1,1,0,1,0 3,0,7,1,2,8,3,0,0,1,1,0,1,0 0,0,6,2,0,3,2,0,1,1,1,0,1,0 1,0,3,2,0,12,2,0,1,1,1,2,1,1 1,0,13,3,0,5,2,0,1,1,1,1,1,1 1,0,10,3,0,4,2,0,1,1,1,1,1,1 0,0,5,2,2,5,1,0,1,1,1,0,1,0 0,0,2,1,0,6,2,0,1,1,1,0,1,0 0,2,0,3,1,3,3,0,0,1,1,1,1,0 1,5,1,2,0,12,2,0,1,1,1,0,1,0 0,0,1,2,2,6,3,0,1,1,1,1,1,0 2,0,1,2,0,4,2,0,1,1,1,0,1,1 1,0,10,3,1,5,3,0,1,1,1,1,1,0 1,0,1,2,2,3,1,0,1,1,1,1,1,0 0,2,1,2,0,8,0,0,0,1,1,2,1,1 0,0,7,1,3,6,4,0,1,1,1,0,1,0 0,0,0,3,0,4,0,0,0,1,1,2,1,1 0,0,3,2,2,10,3,0,1,1,1,1,1,0 1,0,12,1,0,7,2,0,1,1,1,0,1,0 1,1,1,2,0,5,2,3,1,1,1,1,1,1 3,0,10,3,4,5,3,0,0,1,1,2,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 0,1,1,2,0,9,2,0,1,1,1,1,1,0 0,0,3,2,0,10,2,0,1,1,1,0,1,0 1,0,8,0,0,6,2,0,1,1,1,0,1,0 0,0,3,2,0,8,0,0,0,1,1,2,1,0 1,1,1,2,0,9,2,0,1,1,1,1,1,0 1,0,3,2,1,6,5,0,1,1,1,1,1,0 2,0,0,3,0,7,2,0,1,1,1,0,1,1 0,0,1,2,2,2,1,0,0,1,1,0,1,0 0,0,0,3,2,4,1,0,0,1,1,1,1,0 1,3,10,3,1,8,3,0,1,1,1,1,1,0 0,1,1,2,0,9,2,0,1,1,1,1,1,0 0,0,1,2,2,2,1,0,1,1,1,2,1,0 1,0,1,2,1,4,3,0,0,1,1,0,1,0 1,1,13,3,2,5,3,0,1,1,1,0,1,1 0,0,3,2,0,4,2,0,1,1,1,0,1,0 0,1,0,3,2,8,3,4,0,1,1,2,1,0 1,1,3,2,0,9,2,0,1,1,1,1,1,0 0,0,3,2,2,1,1,0,1,1,1,0,1,0 0,0,5,2,2,8,1,0,1,1,1,2,1,0 1,0,14,0,0,1,2,0,1,1,1,0,1,0 1,4,3,2,0,12,2,0,1,1,1,1,1,0 1,0,0,3,0,1,2,0,1,1,1,0,1,0 0,0,3,2,2,3,3,0,0,1,1,0,1,0 0,0,3,2,0,10,2,0,1,1,1,0,1,0 1,0,3,2,1,7,3,0,0,1,1,0,1,0 0,0,8,0,2,6,1,0,1,1,1,2,1,0 2,0,3,2,0,9,2,0,1,1,1,1,1,0 1,0,5,2,0,12,2,0,1,1,1,0,1,1 0,0,0,3,2,4,1,0,1,1,1,0,1,0 1,4,0,3,0,5,2,0,1,1,1,1,1,1 2,0,0,3,0,2,2,1,1,1,1,0,1,0 1,0,0,3,2,4,1,0,1,1,1,0,1,0 0,0,3,2,2,6,1,0,1,1,1,2,1,0 0,0,2,1,1,6,4,0,1,1,1,0,1,0 1,0,3,2,0,4,2,0,1,1,1,0,1,0 1,0,5,2,1,4,3,0,0,1,1,0,1,0 0,0,9,1,2,1,3,0,1,1,1,0,1,0 1,0,10,3,1,5,5,0,0,1,1,1,1,1 0,0,5,2,1,8,3,0,0,1,1,0,1,0 0,0,1,2,2,4,3,0,0,1,1,2,1,0 0,0,3,2,2,7,1,0,1,1,1,2,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,1,2,1,8,5,4,0,1,1,0,1,0 0,0,6,2,0,6,2,0,1,1,1,1,1,0 0,0,0,3,2,2,1,0,1,1,1,0,1,0 0,0,0,3,0,4,0,0,0,1,1,2,1,1 0,0,3,2,2,2,1,0,1,1,1,2,1,0 0,0,10,3,2,5,3,0,1,1,1,1,1,1 0,0,3,2,2,1,1,0,1,1,1,2,1,0 0,4,3,2,0,10,2,0,1,1,1,1,1,0 1,0,0,3,1,4,5,4,0,1,1,0,1,0 0,0,1,2,0,6,2,0,1,1,1,0,1,0 1,0,3,2,2,3,1,0,0,1,1,0,1,0 1,0,3,2,0,6,2,4,1,1,1,2,1,0 0,0,3,2,0,5,2,2,1,1,1,1,1,1 2,0,1,2,2,2,3,0,0,1,1,0,1,0 0,4,3,2,2,1,1,0,1,1,1,0,1,0 2,0,3,2,0,1,2,0,1,1,1,0,1,0 0,1,3,2,2,1,1,0,1,1,1,0,1,0 1,1,3,2,0,3,2,0,1,1,1,0,1,0 1,4,14,0,0,2,2,0,1,1,1,0,1,0 0,0,0,3,2,5,1,0,1,1,1,1,1,0 0,0,12,1,2,3,1,0,1,1,1,2,1,0 1,2,0,3,0,3,2,0,1,1,1,1,1,1 0,0,1,2,0,10,2,4,1,1,1,2,1,0 3,4,10,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,2,12,4,0,1,1,1,0,1,0 0,0,6,2,0,3,2,0,1,1,1,2,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,3,0,3,2,4,3,4,0,1,1,0,1,0 1,0,6,2,0,1,2,0,1,1,1,1,1,0 2,0,10,3,3,5,3,0,0,1,1,0,1,1 1,0,8,0,0,10,2,0,1,1,1,0,1,0 2,0,3,2,0,3,2,0,1,1,1,0,1,0 1,0,0,3,0,4,0,4,0,1,1,1,1,1 0,0,0,3,2,8,3,0,0,1,1,2,1,0 0,0,1,2,0,3,2,0,1,1,1,1,1,0 2,0,7,1,1,6,3,0,1,1,1,0,1,1 0,5,3,2,0,4,2,0,1,1,1,0,1,0 0,0,3,2,0,8,0,0,0,1,1,0,1,0 0,0,0,3,1,0,5,0,1,1,1,0,1,1 1,1,3,2,0,3,2,0,1,1,1,2,1,0 0,0,9,1,1,2,5,0,0,1,1,2,1,0 0,0,3,2,0,7,0,0,0,1,1,1,1,0 2,0,0,3,4,8,3,0,0,1,1,2,1,0 0,5,6,2,2,0,3,0,0,1,1,1,1,0 1,5,0,3,0,5,2,0,1,1,1,0,1,0 0,0,0,3,2,8,3,1,0,1,1,2,1,0 0,0,2,1,2,2,1,0,1,1,1,2,1,0 0,1,0,3,2,8,1,0,1,1,1,0,1,1 0,0,7,1,1,1,3,0,1,1,1,1,1,0 0,0,3,2,1,2,5,3,0,1,1,2,1,0 1,2,0,3,0,4,2,0,1,1,1,1,1,1 0,4,10,3,5,5,3,0,0,1,1,0,1,0 0,0,0,3,0,4,2,0,1,1,1,0,1,0 0,0,6,2,0,1,2,0,1,1,1,1,1,0 2,0,1,2,0,5,2,0,1,1,1,0,1,1 3,0,10,3,2,4,3,4,1,1,1,1,1,1 0,0,6,2,1,5,5,0,0,1,1,0,1,1 0,1,1,2,0,3,2,4,1,1,1,1,1,1 2,0,3,2,1,3,3,0,0,1,1,2,1,0 0,0,6,2,0,8,4,0,0,1,1,0,1,0 2,4,10,3,4,5,3,0,0,1,1,0,1,0 0,0,6,2,2,2,1,0,1,1,1,2,1,0 1,4,3,2,1,8,3,0,0,1,1,0,1,0 1,0,1,2,0,3,2,0,1,1,1,1,1,1 0,0,3,2,2,8,1,1,0,1,1,0,1,0 3,0,3,2,0,2,2,0,1,1,1,2,1,0 2,0,1,2,0,3,2,0,1,1,1,1,1,0 2,0,1,2,0,1,2,0,1,1,1,1,1,1 0,0,3,2,0,10,2,0,1,1,1,0,1,0 1,0,3,2,0,9,2,2,1,1,1,0,1,0 2,1,1,2,0,9,2,0,1,1,1,2,1,0 1,0,0,3,2,5,3,0,0,1,1,1,1,0 0,5,1,2,1,2,5,4,0,1,1,0,1,0 0,0,0,3,2,2,3,1,1,1,1,0,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,3,2,2,6,4,0,1,1,1,0,1,0 0,5,10,3,0,8,2,0,1,1,1,2,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 1,0,0,3,1,3,3,0,0,1,1,1,1,1 1,0,6,2,0,1,2,0,1,1,1,1,1,0 1,0,1,2,0,2,0,0,0,1,1,0,1,1 1,0,4,3,1,5,3,0,0,1,1,1,1,0 2,5,3,2,1,8,3,0,0,1,1,0,1,0 0,0,0,3,2,8,1,4,0,1,1,0,1,0 1,0,7,1,5,7,3,1,0,1,1,2,1,0 1,0,0,3,2,5,3,0,1,1,1,0,1,1 1,3,1,2,0,4,2,0,1,1,1,0,1,1 1,0,1,2,0,1,2,0,1,1,1,1,1,0 0,0,3,2,1,8,1,0,1,1,1,0,1,0 1,0,14,0,0,1,0,0,0,1,1,1,1,0 0,0,9,1,0,1,0,0,0,1,1,1,1,0 0,0,3,2,0,4,2,4,1,1,1,1,1,0 1,0,0,3,0,3,2,0,1,1,1,0,1,0 0,0,3,2,1,7,1,0,1,1,1,1,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 0,0,3,2,2,10,1,1,1,1,1,1,1,0 0,0,3,2,2,6,1,0,0,1,1,2,1,0 2,0,2,1,3,7,3,0,0,1,1,0,1,0 0,0,0,3,2,8,1,0,0,1,1,2,1,0 1,0,3,2,1,1,5,0,0,1,1,0,1,0 0,0,6,2,0,8,0,0,0,1,1,1,1,0 1,0,0,3,0,1,2,0,1,1,1,2,1,0 2,0,3,2,0,5,2,0,1,1,1,0,1,1 0,0,1,2,0,8,2,0,1,1,1,0,1,1 0,0,10,3,0,5,2,0,1,1,1,0,1,1 1,0,0,3,2,4,1,0,1,1,1,1,1,0 0,0,3,2,2,8,1,0,0,1,1,0,1,0 0,0,0,3,2,3,3,0,1,1,1,0,1,0 1,0,0,3,0,3,2,0,1,1,1,1,1,1 1,0,12,1,5,7,3,0,0,1,1,0,1,0 1,0,3,2,1,4,3,2,0,1,1,1,1,0 1,2,6,2,1,4,3,0,1,1,1,1,1,0 0,0,3,2,2,6,1,2,1,1,1,0,1,0 0,0,1,2,2,8,4,0,1,1,1,0,1,0 1,2,1,2,1,2,5,0,1,1,1,1,1,0 0,0,3,2,2,5,1,0,1,1,1,0,1,0 1,1,3,2,1,1,3,0,1,1,1,0,1,0 0,0,1,2,2,6,1,0,1,1,1,2,1,0 1,0,4,3,0,5,2,0,1,1,1,1,1,1 2,4,3,2,0,2,0,0,0,1,1,2,1,0 0,0,3,2,0,1,2,0,1,1,1,2,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 0,5,1,2,2,5,1,0,1,1,1,2,1,0 1,0,0,3,0,1,2,0,1,1,1,2,1,1 1,0,0,3,0,4,2,0,1,1,1,1,1,1 2,0,1,2,0,0,2,0,1,1,1,2,1,1 0,1,12,1,5,8,5,2,0,1,1,0,1,0 0,0,0,3,2,3,1,0,1,1,1,0,1,0 0,0,3,2,2,2,3,0,0,1,1,0,1,0 1,0,8,0,0,5,2,0,1,1,1,2,1,0 0,0,12,1,1,7,3,0,1,1,1,1,1,0 1,0,1,2,0,3,2,0,1,1,1,0,1,0 0,0,3,2,0,5,2,0,1,1,1,0,1,1 2,0,6,2,0,1,2,0,1,1,1,1,1,1 1,0,1,2,1,4,3,0,0,1,1,1,1,0 2,2,10,3,0,3,2,0,1,1,1,1,1,1 0,0,3,2,2,12,1,0,1,1,1,0,1,0 0,0,3,2,2,3,3,0,1,1,1,1,1,0 0,0,0,3,0,5,2,0,1,1,1,1,1,1 0,0,3,2,2,8,3,0,0,1,1,0,1,0 1,0,3,2,1,7,3,0,1,1,1,1,1,0 1,3,10,3,0,8,2,0,1,1,1,0,1,1 1,0,0,3,1,2,3,0,0,1,1,0,1,0 2,0,3,2,1,1,5,0,1,1,1,2,1,0 0,0,0,3,0,3,2,0,1,1,1,1,1,0 2,0,10,3,1,5,4,4,1,1,1,0,1,0 0,0,1,2,2,8,3,0,0,1,1,0,1,0 0,0,3,2,2,7,5,0,1,1,1,0,1,0 1,0,0,3,2,8,5,4,0,1,1,0,1,0 0,0,3,2,0,1,2,4,1,1,1,0,1,0 0,0,1,2,2,1,1,0,0,1,1,2,1,0 0,0,3,2,0,1,2,0,1,1,1,1,1,1 0,0,2,1,2,3,1,0,0,1,1,2,1,0 0,5,5,2,0,2,2,0,1,1,1,2,1,0 0,0,11,0,2,2,1,3,1,1,1,2,1,0 1,0,3,2,4,7,3,0,0,1,1,2,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 2,0,3,2,1,3,3,0,0,1,1,0,1,0 0,4,0,3,2,5,3,0,0,1,1,1,1,1 0,5,1,2,2,8,1,0,0,1,1,2,1,0 1,1,3,2,0,1,2,0,1,1,1,2,1,0 0,0,1,2,0,7,2,0,1,1,1,0,1,0 1,4,0,3,0,5,2,0,1,1,1,2,1,1 0,0,3,2,2,3,3,1,0,1,1,0,1,0 0,0,3,2,2,2,3,4,0,1,1,0,1,0 1,0,1,2,0,10,2,0,1,1,1,1,1,1 0,0,5,2,2,1,5,0,1,1,1,0,1,0 1,0,3,2,0,8,0,0,0,1,1,0,1,1 2,0,12,1,2,1,4,0,1,1,1,0,1,0 0,0,0,3,2,4,3,1,0,1,1,0,1,0 1,0,14,0,3,2,5,0,0,1,1,0,1,0 1,4,0,3,1,5,1,0,0,1,1,2,1,0 0,5,10,3,0,5,0,4,0,1,1,0,1,1 0,1,1,2,0,7,2,0,1,1,1,1,1,0 1,5,13,3,1,5,3,0,0,1,1,1,1,1 0,0,3,2,1,3,5,0,0,1,1,2,1,0 1,0,1,2,3,2,5,0,0,1,1,1,1,0 0,0,0,3,2,2,1,0,1,1,1,0,1,0 2,4,1,2,0,10,2,4,1,1,1,2,1,0 1,5,10,3,0,5,2,0,1,1,1,1,1,1 0,5,10,3,0,5,2,0,1,1,1,2,1,1 0,2,1,2,2,4,3,0,1,1,1,0,1,0 0,0,3,2,2,7,3,0,1,1,1,0,1,0 1,2,5,2,0,4,0,0,0,1,1,0,1,1 1,0,10,3,0,4,2,0,1,1,1,0,1,1 0,4,5,2,1,12,3,0,1,1,1,1,1,0 0,4,1,2,2,8,1,0,1,1,1,0,1,0 0,1,0,3,2,2,3,4,0,1,1,1,1,0 1,0,1,2,0,3,2,0,1,1,1,0,1,1 1,4,10,3,0,5,2,0,1,1,1,1,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 1,4,3,2,3,12,3,4,1,1,1,0,1,0 0,0,3,2,0,3,2,0,1,1,1,0,1,0 0,0,2,1,2,3,1,0,1,1,1,2,1,0 2,0,12,1,0,1,2,0,1,1,1,1,1,0 2,2,1,2,0,4,2,0,1,1,1,0,1,1 0,0,3,2,2,3,1,0,0,1,1,2,1,0 1,0,1,2,3,2,5,0,0,1,1,0,1,0 1,0,3,2,0,3,2,0,1,1,1,1,1,0 1,0,1,2,5,8,3,0,0,1,1,0,1,0 0,0,1,2,0,5,2,1,1,1,1,0,1,1 1,4,1,2,0,12,2,0,1,1,1,1,1,0 0,0,3,2,1,1,3,0,1,1,1,2,1,0 1,0,0,3,0,0,2,0,1,1,1,0,1,0 2,0,3,2,0,3,2,0,1,1,1,0,1,1 0,0,3,2,3,10,3,0,1,1,1,1,1,0 1,0,1,2,0,1,2,4,1,1,1,0,1,1 1,0,0,3,2,4,3,0,0,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,1,1,1 0,0,1,2,1,8,4,0,0,1,1,0,1,0 1,0,1,2,1,3,3,0,1,1,1,0,1,0 0,0,0,3,0,10,2,0,1,1,1,0,1,0 2,0,0,3,2,4,3,0,1,1,1,1,1,1 2,1,1,2,0,9,2,0,1,1,1,2,1,0 1,0,0,3,2,10,3,0,1,1,1,2,1,0 2,0,1,2,0,7,2,0,1,1,1,1,1,0 0,0,5,2,2,11,3,0,0,1,1,1,1,0 0,0,3,2,2,7,3,0,0,1,1,0,1,0 1,0,10,3,0,0,2,0,1,1,1,2,1,1 1,0,3,2,0,1,2,0,1,1,1,0,1,1 0,0,1,2,0,4,2,0,1,1,1,1,1,1 0,0,3,2,2,1,1,0,1,1,1,0,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,1 2,0,6,2,1,8,5,4,0,1,1,0,1,0 0,1,6,2,0,5,2,3,1,1,1,1,1,0 0,0,6,2,0,6,2,0,1,1,1,1,1,0 2,2,4,3,0,5,2,0,1,1,1,1,1,1 0,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,0,3,2,3,3,0,0,1,1,1,1,0 0,1,1,2,2,3,4,1,1,1,1,0,1,0 0,0,10,3,0,5,2,0,1,1,1,0,1,1 2,0,3,2,2,2,4,4,0,1,1,2,1,0 2,0,3,2,0,1,2,0,1,1,1,1,1,1 0,0,0,3,0,5,2,0,1,1,1,0,1,0 0,0,3,2,2,1,4,0,1,1,1,0,1,0 0,0,3,2,2,6,1,0,1,1,1,1,1,0 0,0,0,3,2,3,3,0,1,1,1,1,1,1 1,0,3,2,0,0,2,0,1,1,1,1,1,1 0,4,0,3,0,4,2,0,1,1,1,1,1,1 2,0,0,3,0,5,2,0,1,1,1,1,1,1 0,0,0,3,2,4,1,1,1,1,1,2,1,0 0,0,2,1,2,2,4,0,1,1,1,0,1,0 2,4,6,2,3,5,5,4,0,1,1,2,1,0 1,2,3,2,0,4,2,0,1,1,1,0,1,1 1,0,2,1,2,1,3,4,1,1,1,0,1,0 2,0,8,0,1,10,5,0,1,1,1,1,1,0 0,0,3,2,1,3,5,0,0,1,1,0,1,0 1,4,6,2,0,12,2,0,1,1,1,1,1,1 1,0,3,2,0,3,1,0,0,1,1,2,1,1 1,5,13,3,0,8,2,0,1,1,1,1,1,1 0,0,1,2,2,3,1,4,1,1,1,2,1,0 0,0,10,3,2,1,3,0,1,1,1,1,1,1 1,0,1,2,1,9,3,0,0,1,1,0,1,0 0,0,3,2,2,2,1,0,0,1,1,2,1,0 0,0,0,3,2,4,3,1,0,1,1,0,1,0 0,0,3,2,2,4,3,0,1,1,1,1,1,0 0,0,3,2,0,2,2,0,1,1,1,2,1,0 1,2,1,2,0,10,2,0,1,1,1,1,1,1 1,0,1,2,2,1,1,0,1,1,1,1,1,0 1,0,3,2,1,2,5,0,0,1,1,2,1,0 0,0,5,2,0,8,0,2,0,1,1,1,1,1 2,1,0,3,0,4,2,0,1,1,1,0,1,1 1,0,1,2,5,2,3,4,0,1,1,0,1,0 0,4,1,2,1,8,5,0,0,1,1,0,1,0 0,0,1,2,0,9,2,0,1,1,1,1,1,1 1,0,1,2,0,1,4,1,1,1,1,0,1,0 1,0,3,2,3,3,3,0,0,1,1,0,1,0 2,0,3,2,0,2,2,0,1,1,1,0,1,0 0,0,3,2,2,8,1,0,1,1,1,0,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,1 1,5,1,2,1,5,5,0,1,1,1,2,1,0 1,0,14,0,5,1,3,0,1,1,1,0,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 0,0,0,3,2,1,1,0,1,1,1,0,1,0 1,0,10,3,0,0,2,0,1,1,1,1,1,1 0,0,9,1,0,2,2,4,1,1,1,0,1,0 1,0,3,2,0,10,2,0,1,1,1,2,1,0 2,1,2,1,0,3,2,0,1,1,1,2,1,0 1,0,3,2,0,0,2,0,1,1,1,1,1,1 1,0,12,1,1,3,3,0,0,1,1,2,1,0 0,0,1,2,1,2,3,0,0,1,1,2,1,0 1,3,1,2,1,10,3,0,1,1,1,0,1,0 1,5,10,3,1,12,3,0,1,1,1,1,1,0 0,1,0,3,0,5,2,0,1,1,1,1,1,1 0,0,3,2,2,7,1,0,1,1,1,1,1,0 2,0,1,2,2,1,3,0,0,1,1,2,1,1 1,0,6,2,0,2,2,0,1,1,1,0,1,0 0,0,0,3,2,0,3,0,1,1,1,0,1,0 1,0,1,2,2,3,3,4,1,1,1,2,1,0 0,0,3,2,2,2,1,0,0,1,1,2,1,0 0,0,1,2,0,1,2,0,1,1,1,1,1,1 1,0,5,2,0,4,0,0,0,1,1,0,1,1 1,5,0,3,2,5,3,0,1,1,1,0,1,0 2,0,3,2,0,7,2,0,1,1,1,0,1,1 0,0,8,0,2,1,1,0,1,1,1,2,1,0 0,0,7,1,0,4,0,0,0,1,1,0,1,0 0,0,3,2,3,6,5,0,1,1,1,2,1,0 3,0,11,0,1,2,3,4,1,1,1,0,1,0 2,0,3,2,0,10,2,0,1,1,1,1,1,1 0,0,0,3,2,7,3,0,0,1,1,0,1,0 1,0,13,3,2,5,3,0,1,1,1,0,1,1 0,0,3,2,0,1,2,0,1,1,1,1,1,1 0,0,0,3,2,5,3,0,1,1,1,1,1,0 0,0,1,2,0,12,2,4,1,1,1,2,1,0 0,0,1,2,2,3,3,0,1,1,1,1,1,1 0,0,10,3,0,8,2,0,1,1,1,0,1,0 1,0,1,2,1,8,1,0,0,1,1,1,1,1 1,5,0,3,1,5,3,0,0,1,1,0,1,0 0,0,12,1,2,2,4,0,0,1,1,2,1,0 0,0,1,2,2,5,3,0,1,1,1,1,1,0 1,0,10,3,5,8,5,0,0,1,1,0,1,0 2,0,0,3,0,5,2,0,1,1,1,2,1,0 2,0,7,1,0,3,2,0,1,1,1,0,1,0 2,0,13,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,2,1,1,0,1,1,1,0,1,0 1,0,10,3,0,3,2,0,1,1,1,1,1,1 2,5,1,2,4,8,3,0,0,1,1,2,1,0 1,0,3,2,0,8,0,0,0,1,1,0,1,1 0,0,3,2,2,2,1,0,0,1,1,0,1,0 1,0,2,1,0,1,2,0,1,1,1,0,1,0 2,0,0,3,1,4,3,0,1,1,1,0,1,0 0,0,3,2,2,2,1,0,0,1,1,2,1,0 1,0,3,2,3,8,5,0,0,1,1,2,1,0 1,0,6,2,0,0,2,0,1,1,1,0,1,1 2,0,1,2,1,3,3,0,0,1,1,1,1,0 0,4,1,2,0,12,2,0,1,1,1,1,1,1 1,0,0,3,2,8,5,0,1,1,1,2,1,0 1,0,2,1,0,7,2,1,1,1,1,0,1,0 0,0,3,2,2,3,3,0,1,1,1,0,1,0 1,0,8,0,0,7,2,0,1,1,1,1,1,0 2,0,3,2,0,1,2,0,1,1,1,1,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 1,1,4,3,0,5,2,0,1,1,1,1,1,1 0,1,3,2,1,2,5,0,0,1,1,0,1,0 1,1,0,3,0,4,2,0,1,1,1,1,1,0 0,0,1,2,2,1,3,0,1,1,1,1,1,0 1,4,10,3,0,5,2,0,1,1,1,2,1,0 1,1,4,3,0,5,2,0,1,1,1,2,1,1 1,0,1,2,0,8,2,0,1,1,1,1,1,1 1,0,3,2,0,8,2,0,1,1,1,0,1,1 1,5,1,2,0,1,2,0,1,1,1,0,1,1 1,1,4,3,2,5,3,0,1,1,1,1,1,1 1,0,6,2,0,7,2,0,1,1,1,0,1,0 0,5,1,2,2,2,1,0,0,1,1,0,1,0 0,0,14,0,2,2,3,0,1,1,1,1,1,0 0,0,0,3,0,3,2,0,1,1,1,1,1,1 1,2,1,2,0,9,2,0,1,1,1,1,1,0 1,0,6,2,1,7,3,0,0,1,1,2,1,0 1,0,3,2,1,1,5,0,1,1,1,0,1,0 0,0,5,2,2,3,1,0,0,1,1,0,1,0 0,0,3,2,2,8,4,0,0,1,1,0,1,0 0,0,1,2,2,6,1,0,1,1,1,2,1,0 0,0,3,2,0,4,0,0,0,1,1,0,1,0 0,0,3,2,3,7,1,0,1,1,1,0,1,0 1,0,10,3,1,10,3,0,1,1,1,1,1,1 1,4,4,3,0,12,2,0,1,1,1,0,1,1 1,0,6,2,1,4,5,0,0,1,1,1,1,0 0,0,1,2,2,12,3,0,1,1,1,1,1,0 1,1,0,3,0,4,1,0,1,1,1,1,1,0 0,0,1,2,2,5,1,0,0,1,1,2,1,0 0,1,3,2,0,4,2,0,1,1,1,1,1,0 1,0,11,0,0,1,2,0,1,1,1,0,1,0 0,0,1,2,2,6,1,0,1,1,1,2,1,0 0,0,3,2,0,7,2,0,1,1,1,1,1,0 0,0,2,1,0,7,2,4,1,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,7,1,2,11,1,0,1,1,1,0,1,0 0,0,1,2,0,2,2,0,1,1,1,1,1,0 1,0,11,0,2,7,1,0,1,1,1,0,1,0 1,0,3,2,3,8,5,0,0,1,1,0,1,0 2,1,8,0,0,1,2,0,1,1,1,0,1,0 0,0,0,3,2,5,3,0,1,1,1,1,1,0 0,0,1,2,0,10,2,0,1,1,1,1,1,0 0,0,7,1,2,3,1,0,0,1,1,2,1,0 2,1,0,3,0,5,2,0,1,1,1,0,1,1 1,0,1,2,0,4,2,0,1,1,1,1,1,1 2,0,3,2,0,7,2,0,1,1,1,0,1,0 1,0,3,2,1,4,5,4,0,1,1,0,1,1 2,0,7,1,0,7,2,0,1,1,1,2,1,0 0,0,7,1,0,7,2,0,1,1,1,1,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,1 2,0,3,2,0,6,2,0,1,1,1,0,1,1 1,0,6,2,0,10,2,0,1,1,1,1,1,1 2,1,10,3,0,5,2,0,1,1,1,0,1,1 0,0,1,2,2,8,1,3,0,1,1,0,1,0 1,0,6,2,1,0,4,0,0,1,1,2,1,0 0,0,1,2,2,5,3,0,0,1,1,0,1,0 1,0,3,2,0,4,2,0,1,1,1,0,1,0 1,0,1,2,0,0,2,0,1,1,1,0,1,0 0,0,3,2,2,2,1,0,0,1,1,2,1,0 2,0,13,3,0,5,2,0,1,1,1,1,1,1 0,4,3,2,0,10,0,0,0,1,1,2,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,1 1,3,1,2,2,8,5,4,0,1,1,0,1,0 1,0,5,2,0,10,2,0,1,1,1,1,1,0 0,0,1,2,2,3,4,4,0,1,1,0,1,0 1,0,10,3,0,0,2,1,1,1,1,0,1,1 1,0,3,2,1,2,3,0,0,1,1,0,1,0 1,2,1,2,0,1,2,0,1,1,1,0,1,0 2,4,5,2,4,8,3,4,0,1,1,0,1,0 1,0,1,2,1,0,3,2,0,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,0,8,2,0,1,1,1,0,1,0 0,0,1,2,2,8,4,0,0,1,1,2,1,0 0,0,1,2,2,5,3,4,1,1,1,0,1,0 1,0,1,2,1,3,3,0,0,1,1,2,1,0 0,0,5,2,2,8,1,0,0,1,1,2,1,0 0,0,6,2,2,0,3,0,0,1,1,0,1,0 0,3,1,2,2,0,1,0,0,1,1,0,1,0 0,0,0,3,0,2,0,0,0,1,1,0,1,0 0,0,1,2,2,4,1,0,0,1,1,1,1,0 1,0,12,1,0,1,2,1,1,1,1,1,1,0 1,5,3,2,1,8,3,0,0,1,1,0,1,0 2,0,8,0,1,2,5,0,0,1,1,0,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,1 1,2,3,2,0,4,2,0,1,1,1,1,1,1 1,4,3,2,0,4,2,0,1,1,1,0,1,1 1,0,3,2,0,12,2,0,1,1,1,0,1,1 0,0,0,3,0,10,2,0,1,1,1,0,1,0 1,3,0,3,0,8,2,0,1,1,1,1,1,1 0,0,1,2,2,8,1,0,1,1,1,0,1,0 1,2,6,2,0,4,2,0,1,1,1,1,1,1 0,0,3,2,2,1,1,0,1,1,1,2,1,0 0,0,12,1,1,2,3,0,0,1,1,0,1,0 0,0,3,2,2,1,3,0,1,1,1,0,1,0 1,0,5,2,1,5,5,0,0,1,1,1,1,0 0,1,1,2,2,9,1,0,1,1,1,2,1,0 0,0,1,2,2,0,3,0,0,1,1,2,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,0 0,0,9,1,2,2,1,4,1,1,1,2,1,0 1,0,1,2,1,3,5,0,0,1,1,0,1,0 0,0,7,1,0,7,2,0,1,1,1,0,1,0 0,0,6,2,0,4,0,4,0,1,1,1,1,0 1,0,3,2,1,10,3,4,1,1,1,2,1,0 1,0,6,2,0,4,2,0,1,1,1,0,1,1 0,0,1,2,3,1,3,0,1,1,1,1,1,0 1,1,1,2,0,4,2,0,1,1,1,1,1,0 0,0,3,2,0,3,2,0,1,1,1,1,1,0 0,0,10,3,0,3,2,0,1,1,1,0,1,1 1,0,1,2,2,2,3,0,1,1,1,1,1,0 1,0,1,2,4,2,5,0,0,1,1,1,1,0 1,1,1,2,0,4,2,0,1,1,1,1,1,0 1,0,5,2,0,7,2,0,1,1,1,0,1,1 0,0,10,3,0,5,0,0,0,1,1,1,1,1 2,2,1,2,0,3,2,0,1,1,1,0,1,0 1,1,12,1,1,9,5,0,1,1,1,1,1,0 0,0,3,2,2,6,3,0,1,1,1,0,1,0 2,0,1,2,0,1,2,0,1,1,1,0,1,0 0,0,12,1,2,3,1,0,0,1,1,2,1,0 0,0,9,1,2,2,1,0,1,1,1,2,1,0 2,0,3,2,4,7,3,0,0,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,2,1,1 0,0,1,2,2,4,1,4,0,1,1,0,1,0 2,0,11,0,0,2,2,0,1,1,1,2,1,0 1,1,3,2,1,4,5,0,1,1,1,1,1,0 1,0,10,3,0,5,2,0,1,1,1,2,1,1 0,0,0,3,1,4,3,0,1,1,1,0,1,0 0,0,1,2,2,8,3,0,0,1,1,2,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,1,2,2,10,3,0,0,1,1,2,1,0 0,0,11,0,2,11,3,0,0,1,1,0,1,0 0,0,12,1,2,2,1,0,1,1,1,2,1,0 0,0,3,2,2,6,1,0,1,1,1,0,1,0 1,0,1,2,0,10,2,0,1,1,1,1,1,0 0,0,3,2,2,2,4,2,0,1,1,2,1,0 1,0,3,2,1,1,1,0,1,1,1,0,1,0 2,1,0,3,0,4,2,0,1,1,1,2,1,1 0,0,1,2,2,2,1,0,1,1,1,2,1,0 0,0,12,1,2,2,1,0,1,1,1,2,1,0 1,0,3,2,2,8,1,4,1,1,1,0,1,0 0,0,1,2,2,7,1,0,1,1,1,2,1,0 3,1,3,2,0,9,2,0,1,1,1,0,1,0 0,0,1,2,0,1,2,0,1,1,1,0,1,0 0,0,5,2,0,1,2,0,1,1,1,0,1,1 0,0,12,1,2,7,3,0,1,1,1,0,1,0 0,0,3,2,2,8,1,0,0,1,1,0,1,0 0,0,3,2,0,6,2,0,1,1,1,0,1,0 2,2,12,1,0,3,2,0,1,1,1,2,1,0 2,0,10,3,0,3,2,0,1,1,1,1,1,0 2,0,10,3,2,5,3,0,0,1,1,2,1,0 1,0,1,2,1,10,3,0,1,1,1,1,1,0 0,0,0,3,2,5,3,0,0,1,1,0,1,0 1,1,3,2,0,9,2,0,1,1,1,1,1,0 0,0,0,3,0,1,2,0,1,1,1,1,1,1 0,0,2,1,3,3,1,0,0,1,1,2,1,0 1,0,3,2,0,7,2,0,1,1,1,1,1,0 1,0,8,0,5,1,3,4,1,1,1,1,1,0 0,5,0,3,0,5,2,0,1,1,1,2,1,1 1,4,8,0,2,2,5,4,0,1,1,0,1,0 0,1,1,2,0,7,2,0,1,1,1,0,1,0 2,0,1,2,1,1,3,0,1,1,1,0,1,0 1,1,1,2,0,7,2,0,1,1,1,0,1,1 1,1,10,3,2,3,3,0,1,1,1,1,1,1 1,0,11,0,0,9,2,0,1,1,1,1,1,0 0,0,3,2,2,2,3,2,1,1,1,2,1,0 0,0,3,2,2,1,1,0,1,1,1,0,1,0 0,0,1,2,0,10,2,0,1,1,1,1,1,0 2,0,12,1,0,7,2,4,1,1,1,0,1,0 1,0,10,3,0,3,2,0,1,1,1,1,1,1 2,1,12,1,2,1,3,0,1,1,1,0,1,0 1,2,3,2,1,3,5,0,1,1,1,1,1,0 1,2,3,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,5,3,2,2,4,3,0,1,1,1,1,1,0 2,4,7,1,2,8,4,0,1,1,1,0,1,0 1,0,0,3,0,5,0,0,0,1,1,2,1,1 0,0,0,3,2,3,1,4,0,1,1,2,1,0 0,0,3,2,2,2,3,0,1,1,1,2,1,0 0,0,3,2,2,8,1,0,0,1,1,1,1,0 0,0,1,2,2,8,3,0,0,1,1,0,1,0 0,4,5,2,0,12,2,0,1,1,1,1,1,0 0,0,0,3,2,8,4,0,0,1,1,1,1,0 0,0,1,2,2,8,1,1,0,1,1,2,1,0 0,0,1,2,2,10,1,0,1,1,1,2,1,0 0,3,0,3,0,8,2,0,1,1,1,1,1,1 0,0,1,2,0,1,4,0,1,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,1,1,0 1,0,3,2,0,4,0,0,0,1,1,0,1,0 0,1,3,2,0,3,2,0,1,1,1,1,1,0 2,0,3,2,0,10,0,1,0,1,1,2,1,0 0,0,3,2,0,6,2,0,1,1,1,0,1,0 2,1,1,2,0,1,2,0,1,1,1,2,1,0 1,0,3,2,0,2,2,0,1,1,1,1,1,0 0,0,0,3,2,4,3,0,1,1,1,1,1,0 0,0,6,2,0,8,0,4,0,1,1,0,1,0 2,1,3,2,1,1,5,0,1,1,1,1,1,1 0,0,1,2,2,7,1,4,0,1,1,0,1,0 0,0,1,2,2,8,1,0,1,1,1,2,1,0 0,0,3,2,2,4,3,0,1,1,1,1,1,0 0,0,2,1,2,2,1,0,0,1,1,2,1,0 0,4,1,2,0,8,0,0,0,1,1,1,1,0 0,0,0,3,2,4,3,0,0,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 0,2,10,3,0,1,2,0,1,1,1,0,1,0 2,0,3,2,1,7,3,0,0,1,1,0,1,1 0,0,12,1,3,2,5,0,0,1,1,0,1,0 0,0,3,2,0,10,2,0,1,1,1,1,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,0,3,3,5,5,0,1,1,1,1,1,0 2,1,1,2,0,0,2,0,1,1,1,2,1,1 1,0,10,3,1,5,3,0,1,1,1,0,1,0 0,0,1,2,2,10,1,0,1,1,1,2,1,0 1,1,0,3,0,3,2,0,1,1,1,1,1,1 1,0,1,2,0,3,2,0,1,1,1,1,1,0 1,0,1,2,0,5,0,0,0,1,1,2,1,1 0,4,3,2,2,6,1,4,1,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,0 1,0,1,2,1,8,5,0,0,1,1,0,1,0 0,0,0,3,2,8,3,4,0,1,1,0,1,0 1,0,1,2,5,8,3,0,0,1,1,2,1,1 2,0,1,2,4,3,3,0,1,1,1,2,1,1 1,0,3,2,2,1,1,0,1,1,1,1,1,0 1,0,3,2,0,3,2,0,1,1,1,0,1,0 1,0,1,2,1,1,3,0,1,1,1,1,1,1 1,0,3,2,0,2,0,0,0,1,1,2,1,1 0,0,12,1,2,6,3,0,1,1,1,0,1,0 0,0,0,3,0,5,2,0,1,1,1,1,1,1 0,0,0,3,2,5,3,0,1,1,1,1,1,1 0,0,7,1,2,3,1,0,0,1,1,0,1,0 0,4,1,2,0,1,2,0,1,1,1,0,1,0 2,1,0,3,0,4,2,0,1,1,1,1,1,0 1,0,0,3,0,5,0,0,0,1,1,2,1,1 0,0,1,2,2,0,1,0,0,1,1,2,1,0 0,0,2,1,1,3,5,0,0,1,1,2,1,0 0,0,0,3,2,5,3,0,1,1,1,1,1,0 0,0,0,3,2,5,3,0,1,1,1,1,1,0 0,0,3,2,2,8,5,0,0,1,1,0,1,0 0,0,1,2,2,8,3,0,0,1,1,0,1,0 1,0,1,2,0,7,0,0,0,1,1,2,1,1 1,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,6,2,0,1,2,0,1,1,1,0,1,0 2,0,11,0,0,7,2,0,1,1,1,0,1,0 0,0,3,2,0,2,0,0,0,1,1,0,1,0 0,0,3,2,2,8,1,0,0,1,1,2,1,0 0,0,3,2,0,1,0,0,0,1,1,2,1,0 1,5,1,2,3,4,1,0,1,1,1,0,1,0 0,1,3,2,3,4,3,0,1,1,1,1,1,0 1,1,0,3,0,4,2,0,1,1,1,1,1,1 1,1,9,1,1,1,4,4,1,1,1,2,1,0 0,0,6,2,2,10,1,0,1,1,1,0,1,0 2,2,13,3,0,5,2,0,1,1,1,1,1,1 0,0,3,2,2,7,4,4,1,1,1,0,1,0 1,0,0,3,2,5,3,0,1,1,1,0,1,1 1,0,14,0,0,7,2,1,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,2,1,0 0,0,3,2,1,2,3,0,0,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,0 2,0,14,0,0,9,2,0,1,1,1,2,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,0 0,0,3,2,2,9,3,0,1,1,1,2,1,0 1,2,12,1,2,10,3,0,1,1,1,1,1,1 1,0,0,3,0,4,2,1,1,1,1,1,1,1 1,4,3,2,1,10,1,0,1,1,1,2,1,0 0,0,3,2,2,10,1,0,1,1,1,0,1,0 0,0,0,3,2,5,3,0,0,1,1,0,1,0 2,0,3,2,0,4,2,0,1,1,1,1,1,1 2,0,0,3,4,2,3,0,0,1,1,0,1,0 1,0,12,1,1,1,5,0,0,1,1,0,1,0 1,0,1,2,1,7,3,0,1,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,0,3,2,3,1,4,0,1,1,0,1,0 1,0,7,1,1,2,1,0,0,1,1,1,1,0 0,0,3,2,2,6,5,0,1,1,1,0,1,0 0,0,3,2,1,2,3,0,0,1,1,2,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,1,2,2,0,1,0,0,1,1,0,1,0 0,0,2,1,2,10,1,0,1,1,1,1,1,0 0,0,3,2,0,1,2,0,1,1,1,1,1,1 1,0,3,2,1,1,3,0,1,1,1,1,1,0 0,0,3,2,2,1,4,0,1,1,1,0,1,0 3,4,2,1,0,4,2,0,1,1,1,2,1,0 1,0,12,1,1,8,5,3,0,1,1,1,1,0 1,0,10,3,0,5,0,0,0,1,1,1,1,1 0,0,3,2,0,7,2,0,1,1,1,0,1,0 1,0,5,2,0,3,2,0,1,1,1,1,1,1 0,0,14,0,0,9,2,1,1,1,1,0,1,0 1,0,0,3,1,4,5,0,1,1,1,1,1,1 1,0,6,2,0,0,2,0,1,1,1,0,1,1 1,0,3,2,2,7,3,0,1,1,1,0,1,0 0,0,0,3,0,3,0,0,0,1,1,2,1,1 0,0,1,2,0,4,2,0,1,1,1,0,1,1 0,0,0,3,2,5,3,0,1,1,1,1,1,0 0,2,6,2,1,3,3,0,1,1,1,0,1,0 0,0,3,2,2,6,1,0,1,1,1,0,1,0 2,0,3,2,0,3,2,0,1,1,1,0,1,1 1,1,3,2,0,3,2,0,1,1,1,1,1,1 0,0,1,2,2,0,1,0,1,1,1,0,1,0 0,1,5,2,0,3,2,0,1,1,1,1,1,0 2,1,12,1,1,4,1,0,1,1,1,1,1,1 1,0,1,2,4,2,3,0,0,1,1,2,1,0 1,4,3,2,0,10,2,4,1,1,1,1,1,0 0,0,3,2,0,6,2,4,1,1,1,0,1,0 1,0,3,2,0,4,2,0,1,1,1,1,1,1 0,0,3,2,0,5,2,0,1,1,1,0,1,1 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,4,1,2,0,9,2,0,1,1,1,0,1,0 0,0,1,2,2,2,3,0,0,1,1,0,1,0 1,0,0,3,5,5,3,0,0,1,1,0,1,0 2,1,3,2,0,3,2,0,1,1,1,1,1,1 2,2,0,3,3,3,3,0,0,1,1,2,1,0 0,0,5,2,2,8,3,1,0,1,1,1,1,1 1,0,0,3,0,8,2,0,1,1,1,0,1,0 0,4,6,2,2,8,1,0,1,1,1,1,1,0 3,1,0,3,2,4,3,0,1,1,1,2,1,1 1,0,3,2,0,10,2,0,1,1,1,0,1,1 0,1,8,0,0,10,2,0,1,1,1,1,1,0 1,0,3,2,0,2,2,1,1,1,1,1,1,0 0,0,6,2,0,0,2,0,1,1,1,0,1,0 0,1,1,2,2,2,3,0,0,1,1,1,1,0 1,2,3,2,0,3,2,0,1,1,1,1,1,1 0,0,1,2,2,2,1,0,1,1,1,0,1,0 0,0,1,2,2,8,4,4,0,1,1,2,1,0 1,1,3,2,0,1,2,0,1,1,1,1,1,1 2,0,3,2,0,8,0,0,0,1,1,2,1,0 1,0,0,3,2,3,5,0,1,1,1,0,1,0 0,0,6,2,2,8,3,0,0,1,1,0,1,0 1,0,3,2,0,10,2,2,1,1,1,0,1,0 2,0,3,2,0,1,2,0,1,1,1,0,1,0 0,3,5,2,1,2,5,0,1,1,1,0,1,0 0,0,12,1,2,8,3,0,0,1,1,0,1,0 1,0,3,2,1,7,3,0,0,1,1,2,1,0 1,2,3,2,1,4,3,0,1,1,1,1,1,0 1,0,3,2,1,3,3,0,0,1,1,1,1,0 1,0,3,2,5,9,5,3,1,1,1,0,1,0 2,0,7,1,1,1,3,0,1,1,1,0,1,0 1,0,5,2,1,8,5,4,0,1,1,2,1,0 0,0,0,3,0,3,2,0,1,1,1,1,1,0 0,0,0,3,0,5,2,0,1,1,1,0,1,0 0,5,0,3,2,5,1,0,1,1,1,0,1,0 1,2,0,3,0,4,2,0,1,1,1,1,1,0 1,1,3,2,0,4,2,1,1,1,1,0,1,0 1,4,1,2,0,5,2,4,1,1,1,1,1,1 0,0,1,2,0,7,2,0,1,1,1,0,1,0 0,0,0,3,2,4,1,0,1,1,1,0,1,0 1,0,3,2,2,10,3,4,1,1,1,1,1,0 1,1,3,2,0,9,2,0,1,1,1,1,1,0 2,1,12,1,0,1,2,0,1,1,1,2,1,0 1,0,1,2,1,8,3,0,0,1,1,1,1,0 2,4,7,1,0,10,2,0,1,1,1,0,1,0 2,0,2,1,4,8,5,0,0,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,1,1,0 0,0,0,3,2,5,3,0,1,1,1,0,1,0 1,0,10,3,2,5,3,0,0,1,1,0,1,0 0,0,3,2,1,1,3,0,1,1,1,1,1,0 0,0,9,1,2,2,3,0,0,1,1,2,1,0 1,1,6,2,0,4,2,0,1,1,1,1,1,0 0,0,1,2,2,7,3,0,1,1,1,0,1,0 1,1,0,3,0,5,0,0,0,1,1,1,1,1 0,0,1,2,2,8,1,0,0,1,1,2,1,0 0,0,3,2,0,10,2,0,1,1,1,1,1,1 2,0,7,1,0,10,2,4,1,1,1,0,1,0 0,0,3,2,0,10,2,0,1,1,1,1,1,0 0,5,1,2,2,8,1,0,1,1,1,2,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 0,0,1,2,0,8,2,0,1,1,1,0,1,0 0,0,7,1,1,2,5,0,0,1,1,0,1,0 2,1,3,2,0,1,2,0,1,1,1,0,1,0 2,0,7,1,0,0,0,0,0,1,1,2,1,0 0,0,1,2,2,3,3,0,1,1,1,1,1,0 0,0,3,2,1,2,5,0,0,1,1,0,1,0 0,0,3,2,1,2,5,0,1,1,1,0,1,0 1,0,3,2,3,7,3,0,1,1,1,0,1,0 2,0,3,2,0,1,2,0,1,1,1,0,1,0 2,0,3,2,1,8,5,4,0,1,1,2,1,0 1,0,7,1,0,6,2,0,1,1,1,0,1,0 2,0,3,2,0,1,2,4,1,1,1,0,1,0 0,4,0,3,0,5,2,0,1,1,1,0,1,1 0,2,2,1,2,9,1,0,1,1,1,2,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,0 2,0,12,1,4,2,5,0,0,1,1,0,1,0 1,0,3,2,0,4,2,0,1,1,1,0,1,1 1,0,3,2,2,2,5,0,0,1,1,2,1,0 1,0,3,2,2,2,1,0,0,1,1,2,1,0 0,0,3,2,2,1,3,0,0,1,1,0,1,0 1,0,5,2,0,7,2,0,1,1,1,0,1,0 2,0,3,2,2,8,3,0,1,1,1,1,1,0 1,0,10,3,0,4,2,0,1,1,1,0,1,1 1,0,3,2,0,1,2,0,1,1,1,0,1,1 0,0,4,3,2,5,3,0,0,1,1,2,1,0 2,2,3,2,0,8,2,0,1,1,1,1,1,0 0,4,1,2,0,12,2,0,1,1,1,0,1,1 2,0,1,2,0,4,2,0,1,1,1,0,1,1 2,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,3,2,2,10,3,0,1,1,1,1,1,0 2,0,9,1,0,10,4,0,1,1,1,0,1,0 1,3,10,3,5,4,3,0,0,1,1,1,1,1 1,4,10,3,0,5,2,0,1,1,1,1,1,1 0,0,3,2,2,3,1,1,0,1,1,0,1,0 2,0,3,2,4,2,5,0,0,1,1,0,1,0 1,2,3,2,0,1,2,0,1,1,1,1,1,1 1,0,0,3,2,0,3,1,0,1,1,1,1,0 1,0,3,2,1,2,3,0,1,1,1,2,1,0 2,0,1,2,1,8,5,0,0,1,1,0,1,0 0,0,1,2,2,4,1,0,1,1,1,1,1,0 1,0,0,3,1,5,3,0,1,1,1,1,1,0 1,0,3,2,0,9,2,0,1,1,1,1,1,0 1,3,1,2,1,0,3,0,1,1,1,0,1,0 2,5,0,3,0,8,2,0,1,1,1,0,1,0 0,0,0,3,0,4,2,4,1,1,1,0,1,1 0,0,1,2,0,8,2,0,1,1,1,0,1,0 1,0,6,2,0,3,2,0,1,1,1,1,1,1 0,0,3,2,2,2,3,0,0,1,1,1,1,0 0,0,1,2,0,1,2,0,1,1,1,0,1,0 0,0,6,2,2,2,3,4,0,1,1,0,1,0 2,0,3,2,0,10,2,0,1,1,1,1,1,0 2,4,7,1,0,2,2,0,1,1,1,0,1,0 0,4,10,3,0,5,0,0,0,1,1,2,1,1 2,0,3,2,1,8,5,0,0,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,0 1,2,1,2,1,4,3,0,1,1,1,1,1,0 2,1,1,2,0,4,2,0,1,1,1,1,1,1 0,0,1,2,2,2,1,0,0,1,1,2,1,0 1,2,5,2,0,4,2,0,1,1,1,1,1,1 0,2,1,2,0,4,0,1,0,1,1,1,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 1,4,7,1,3,2,5,4,0,1,1,0,1,0 1,1,10,3,2,4,3,0,1,1,1,0,1,0 0,0,0,3,2,3,3,4,0,1,1,0,1,0 0,0,1,2,2,10,3,0,1,1,1,1,1,0 0,0,1,2,2,2,1,0,1,1,1,2,1,0 2,0,3,2,1,1,3,0,1,1,1,1,1,0 1,0,5,2,2,3,3,0,0,1,1,0,1,0 1,0,3,2,2,2,3,0,0,1,1,0,1,0 0,0,0,3,2,5,3,0,0,1,1,0,1,0 1,2,0,3,5,3,3,0,1,1,1,0,1,0 0,0,3,2,3,4,5,0,0,1,1,1,1,0 0,0,1,2,2,3,1,0,1,1,1,2,1,0 0,0,3,2,0,1,2,0,1,1,1,1,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,0 0,0,0,3,2,8,1,0,1,1,1,0,1,0 2,0,3,2,1,12,3,0,0,1,1,2,1,0 0,0,1,2,2,8,1,0,1,1,1,0,1,0 2,0,3,2,4,4,3,0,0,1,1,0,1,0 1,1,8,0,0,4,2,0,1,1,1,1,1,1 1,0,3,2,0,6,2,0,1,1,1,1,1,0 2,0,1,2,1,2,3,0,0,1,1,1,1,0 3,0,13,3,0,5,2,0,1,1,1,2,1,1 0,0,1,2,2,8,1,0,0,1,1,2,1,0 0,0,3,2,2,1,5,1,1,1,1,0,1,0 1,0,0,3,0,3,2,0,1,1,1,0,1,1 2,0,3,2,0,1,2,0,1,1,1,0,1,1 2,1,4,3,0,9,2,0,1,1,1,2,1,0 1,0,4,3,0,5,2,0,1,1,1,1,1,1 0,4,1,2,2,4,3,0,1,1,1,0,1,0 0,0,12,1,3,2,5,0,0,1,1,2,1,0 2,5,3,2,0,12,2,2,1,1,1,0,1,1 0,0,5,2,2,8,3,0,1,1,1,1,1,0 0,0,12,1,2,6,5,4,1,1,1,0,1,0 0,0,3,2,0,8,0,0,0,1,1,1,1,0 0,5,3,2,0,12,2,0,1,1,1,1,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 1,0,3,2,0,5,0,0,0,1,1,0,1,0 1,0,1,2,0,8,0,0,0,1,1,2,1,1 1,5,1,2,3,4,5,4,0,1,1,2,1,0 0,0,2,1,2,3,1,0,0,1,1,2,1,0 0,0,1,2,0,8,2,0,1,1,1,0,1,0 1,0,1,2,0,0,2,0,1,1,1,2,1,1 1,0,3,2,0,4,0,0,0,1,1,0,1,1 1,0,2,1,1,2,3,0,0,1,1,0,1,0 0,0,1,2,1,4,3,0,0,1,1,1,1,1 1,1,0,3,0,5,2,0,1,1,1,0,1,1 0,0,0,3,2,3,3,0,1,1,1,0,1,0 1,0,6,2,0,1,2,0,1,1,1,0,1,0 1,0,3,2,3,5,5,3,0,1,1,1,1,0 1,0,2,1,0,1,2,0,1,1,1,0,1,0 1,0,10,3,0,4,2,0,1,1,1,0,1,1 1,0,1,2,0,2,2,0,1,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,0 0,3,10,3,2,4,3,0,1,1,1,0,1,1 0,4,3,2,1,12,5,0,1,1,1,0,1,0 0,0,3,2,2,1,3,0,1,1,1,0,1,0 1,0,10,3,2,8,3,0,0,1,1,0,1,0 1,0,1,2,0,0,2,4,1,1,1,0,1,1 1,1,3,2,0,9,2,0,1,1,1,1,1,1 3,1,0,3,0,9,2,0,1,1,1,2,1,0 0,0,3,2,2,3,1,0,1,1,1,0,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,1 2,2,3,2,0,4,2,0,1,1,1,1,1,1 0,1,1,2,2,1,3,0,1,1,1,1,1,0 1,0,5,2,0,8,2,1,1,1,1,0,1,0 2,0,1,2,0,4,2,0,1,1,1,0,1,1 0,0,1,2,2,8,3,0,1,1,1,0,1,0 2,1,10,3,1,3,3,0,1,1,1,1,1,0 0,0,1,2,2,8,1,4,1,1,1,0,1,0 1,4,10,3,0,5,0,0,0,1,1,0,1,1 1,0,1,2,0,8,0,4,0,1,1,0,1,1 0,1,3,2,2,5,3,0,1,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,1,4,3,2,0,1,1,1,1,0 1,0,3,2,2,8,3,4,0,1,1,0,1,0 0,0,3,2,0,6,2,0,1,1,1,0,1,0 3,1,0,3,0,5,2,0,1,1,1,1,1,0 2,0,10,3,0,5,2,0,1,1,1,1,1,1 0,2,8,0,0,1,2,0,1,1,1,0,1,0 1,0,1,2,1,8,3,0,0,1,1,2,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,1 2,1,8,0,0,9,2,0,1,1,1,1,1,0 0,0,3,2,2,6,3,0,0,1,1,2,1,0 1,0,1,2,3,8,4,4,0,1,1,0,1,0 0,0,3,2,0,3,2,3,1,1,1,2,1,0 0,0,5,2,5,5,1,0,0,1,1,0,1,0 1,0,6,2,2,5,3,0,0,1,1,0,1,0 0,0,2,1,2,2,1,0,0,1,1,2,1,0 1,2,3,2,0,1,2,0,1,1,1,1,1,1 0,0,1,2,2,1,1,0,1,1,1,2,1,0 0,0,12,1,2,3,1,0,0,1,1,2,1,0 2,0,3,2,0,4,2,0,1,1,1,1,1,0 0,0,0,3,2,8,1,0,1,1,1,2,1,0 1,0,0,3,0,1,2,0,1,1,1,0,1,1 0,0,0,3,2,3,1,0,0,1,1,1,1,0 0,0,1,2,2,3,1,0,1,1,1,1,1,0 1,0,3,2,4,3,5,0,1,1,1,0,1,0 0,0,3,2,2,8,3,0,0,1,1,0,1,0 1,1,12,1,0,1,2,0,1,1,1,0,1,0 1,0,3,2,0,4,2,0,1,1,1,1,1,1 1,0,3,2,2,2,1,0,1,1,1,2,1,0 0,0,0,3,2,5,3,0,1,1,1,1,1,0 0,4,1,2,3,12,3,0,1,1,1,1,1,0 1,0,3,2,1,1,4,0,0,1,1,0,1,0 1,0,3,2,3,8,5,0,0,1,1,0,1,0 0,0,1,2,2,6,1,0,1,1,1,2,1,0 1,1,10,3,0,5,2,0,1,1,1,1,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 2,1,8,0,0,9,2,0,1,1,1,2,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,1,2,1,2,2,1,0,0,1,1,2,1,0 0,0,1,2,2,2,1,0,1,1,1,2,1,0 0,0,0,3,0,5,4,1,0,1,1,0,1,0 2,0,1,2,0,1,2,0,1,1,1,0,1,0 0,0,7,1,2,8,5,4,0,1,1,2,1,0 0,0,1,2,1,3,1,0,0,1,1,2,1,0 0,0,1,2,2,8,1,0,0,1,1,2,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 1,1,1,2,0,3,2,0,1,1,1,1,1,0 0,0,1,2,2,12,1,0,0,1,1,2,1,0 1,4,3,2,1,12,3,0,1,1,1,1,1,0 1,4,3,2,0,1,2,0,1,1,1,0,1,0 2,1,4,3,0,5,2,0,1,1,1,2,1,0 1,0,12,1,1,1,3,0,1,1,1,0,1,0 2,0,13,3,0,4,2,0,1,1,1,0,1,1 1,0,1,2,0,10,2,0,1,1,1,1,1,0 0,0,9,1,2,3,1,0,0,1,1,2,1,0 0,0,1,2,1,8,3,0,0,1,1,0,1,0 0,0,3,2,2,8,3,0,0,1,1,2,1,0 0,0,1,2,2,4,3,4,1,1,1,0,1,0 0,1,3,2,0,3,2,0,1,1,1,1,1,1 0,0,3,2,2,3,3,0,0,1,1,0,1,0 1,0,3,2,0,8,2,0,1,1,1,1,1,1 0,0,3,2,2,3,1,0,1,1,1,2,1,0 1,0,3,2,2,8,3,0,1,1,1,1,1,0 0,0,1,2,2,2,5,0,0,1,1,2,1,0 1,2,10,3,0,4,0,0,0,1,1,2,1,1 0,0,3,2,2,5,3,0,0,1,1,0,1,0 1,4,1,2,3,2,5,4,0,1,1,2,1,0 2,0,3,2,1,2,3,0,0,1,1,2,1,0 1,0,10,3,0,5,2,0,1,1,1,0,1,1 3,1,1,2,2,1,3,0,1,1,1,0,1,0 0,1,3,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,0,7,2,0,1,1,1,2,1,0 1,0,1,2,0,3,2,0,1,1,1,1,1,1 2,5,10,3,0,5,2,0,1,1,1,1,1,1 0,0,1,2,2,8,1,0,1,1,1,2,1,0 0,0,3,2,0,10,2,4,1,1,1,0,1,0 0,0,2,1,0,3,2,0,1,1,1,0,1,0 0,0,1,2,2,4,3,0,1,1,1,1,1,0 0,0,1,2,1,3,3,0,0,1,1,1,1,0 1,0,0,3,0,0,0,0,0,1,1,2,1,1 1,0,1,2,0,1,2,0,1,1,1,0,1,0 0,0,2,1,2,3,1,0,1,1,1,2,1,0 1,0,0,3,1,4,3,0,1,1,1,1,1,1 2,5,3,2,3,4,5,0,0,1,1,2,1,0 0,5,3,2,2,2,1,4,1,1,1,0,1,0 1,0,0,3,1,8,5,0,0,1,1,2,1,0 0,0,0,3,0,5,2,0,1,1,1,0,1,0 0,0,6,2,0,4,2,0,1,1,1,1,1,0 0,0,1,2,2,3,1,1,1,1,1,2,1,0 1,1,1,2,0,9,2,0,1,1,1,1,1,0 0,0,1,2,2,0,1,0,1,1,1,2,1,0 1,0,10,3,0,3,2,0,1,1,1,1,1,1 1,0,5,2,0,5,2,0,1,1,1,1,1,1 1,1,3,2,1,2,5,0,0,1,1,0,1,0 0,0,0,3,2,8,3,0,1,1,1,2,1,0 0,0,1,2,2,8,1,0,1,1,1,0,1,0 0,0,1,2,2,8,3,0,0,1,1,0,1,0 2,0,1,2,0,1,2,0,1,1,1,0,1,1 1,0,1,2,0,4,0,0,0,1,1,2,1,1 2,0,0,3,0,5,2,0,1,1,1,0,1,1 0,0,1,2,1,8,5,0,0,1,1,0,1,0 1,0,0,3,1,5,3,0,1,1,1,0,1,1 1,0,3,2,0,3,0,0,0,1,1,0,1,0 1,4,10,3,1,5,5,0,0,1,1,1,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,1 0,4,3,2,2,12,1,0,1,1,1,0,1,0 1,0,1,2,0,0,0,4,0,1,1,0,1,0 1,0,1,2,1,4,1,0,0,1,1,0,1,0 0,0,0,3,2,3,3,0,1,1,1,1,1,0 0,0,1,2,0,4,2,0,1,1,1,0,1,0 1,3,3,2,0,8,2,0,1,1,1,0,1,1 1,2,8,0,1,1,5,0,1,1,1,2,1,0 0,0,6,2,2,4,1,0,1,1,1,0,1,0 0,0,0,3,2,3,3,0,0,1,1,0,1,0 0,0,3,2,2,3,4,0,1,1,1,1,1,0 1,4,10,3,0,5,2,0,1,1,1,0,1,1 1,0,1,2,1,8,5,0,0,1,1,1,1,0 1,3,5,2,0,1,2,0,1,1,1,0,1,1 0,0,3,2,0,10,2,4,1,1,1,0,1,0 0,0,6,2,0,8,0,0,0,1,1,2,1,0 1,0,1,2,0,3,2,0,1,1,1,1,1,0 1,1,0,3,2,3,3,0,1,1,1,1,1,0 0,0,3,2,1,1,3,0,1,1,1,0,1,0 1,4,3,2,2,8,3,4,0,1,1,0,1,0 3,5,13,3,0,5,2,4,1,1,1,2,1,1 1,0,5,2,1,4,3,0,0,1,1,0,1,0 1,0,0,3,0,7,2,0,1,1,1,2,1,0 2,4,3,2,0,9,2,0,1,1,1,1,1,0 1,4,3,2,0,8,2,4,1,1,1,0,1,0 2,0,3,2,2,7,3,0,1,1,1,0,1,0 0,0,3,2,2,8,5,0,0,1,1,2,1,0 0,0,3,2,2,6,1,0,1,1,1,2,1,0 2,0,1,2,0,10,2,0,1,1,1,0,1,1 1,0,0,3,2,8,5,4,0,1,1,0,1,0 0,0,6,2,0,1,2,0,1,1,1,1,1,0 2,0,3,2,2,4,3,0,1,1,1,0,1,0 1,1,3,2,0,9,2,0,1,1,1,1,1,1 0,0,0,3,2,4,3,0,0,1,1,0,1,0 1,1,3,2,0,9,2,0,1,1,1,2,1,0 1,0,2,1,0,10,2,4,1,1,1,0,1,0 1,2,4,3,0,5,2,0,1,1,1,1,1,1 2,0,0,3,1,8,3,0,1,1,1,0,1,1 0,0,3,2,2,10,3,0,1,1,1,1,1,0 1,0,3,2,0,2,2,4,1,1,1,0,1,0 2,2,1,2,0,4,2,0,1,1,1,1,1,1 1,2,10,3,0,4,2,0,1,1,1,1,1,1 0,0,1,2,0,5,2,0,1,1,1,0,1,1 1,2,1,2,1,4,5,0,0,1,1,1,1,0 1,0,9,1,2,2,1,0,0,1,1,0,1,0 2,0,10,3,0,5,2,1,1,1,1,1,1,0 1,0,3,2,2,1,3,0,1,1,1,1,1,0 0,0,2,1,2,6,1,0,1,1,1,2,1,0 1,1,2,1,0,9,2,0,1,1,1,1,1,0 1,5,0,3,0,5,0,2,0,1,1,1,1,1 0,5,1,2,3,5,3,0,1,1,1,0,1,1 1,0,7,1,3,11,5,0,0,1,1,2,1,0 0,0,1,2,2,8,1,0,0,1,1,0,1,0 0,0,1,2,2,6,1,0,1,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,0,1,0 0,0,6,2,2,2,3,0,0,1,1,0,1,0 0,1,3,2,2,10,1,0,1,1,1,1,1,0 0,3,0,3,2,0,1,0,1,1,1,2,1,0 2,0,0,3,1,8,5,0,0,1,1,1,1,0 0,0,1,2,2,5,3,0,1,1,1,2,1,0 0,0,0,3,2,5,3,0,0,1,1,0,1,0 0,2,3,2,2,9,1,0,1,1,1,1,1,0 1,0,7,1,1,2,3,0,0,1,1,0,1,0 0,0,3,2,0,3,2,0,1,1,1,1,1,1 0,0,3,2,2,3,3,0,0,1,1,0,1,0 0,0,1,2,2,4,1,0,1,1,1,1,1,0 0,0,2,1,2,2,1,0,1,1,1,2,1,0 1,1,3,2,0,1,2,0,1,1,1,1,1,0 0,0,9,1,2,6,1,0,1,1,1,2,1,0 0,1,6,2,0,1,2,0,1,1,1,1,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,1 1,3,1,2,0,4,2,0,1,1,1,0,1,1 3,0,3,2,4,8,3,0,0,1,1,0,1,1 1,0,3,2,1,9,3,0,1,1,1,0,1,0 0,0,2,1,0,6,2,0,1,1,1,0,1,0 1,0,3,2,0,4,0,0,0,1,1,2,1,1 0,0,0,3,2,3,3,0,1,1,1,0,1,1 0,0,4,3,0,5,2,4,1,1,1,0,1,0 1,0,3,2,3,8,3,0,0,1,1,0,1,0 1,0,12,1,0,2,0,4,0,1,1,2,1,0 2,0,3,2,0,3,0,0,0,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,1,2,0,3,2,0,1,1,1,2,1,1 1,0,3,2,2,2,3,0,1,1,1,2,1,0 0,0,3,2,2,2,1,4,1,1,1,0,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,1 0,5,10,3,2,5,3,0,1,1,1,0,1,0 0,3,1,2,2,1,4,0,1,1,1,0,1,0 0,0,15,0,0,9,4,0,1,1,1,2,1,0 2,0,1,2,1,1,5,0,0,1,1,1,1,0 1,0,3,2,4,7,5,4,0,1,1,2,1,0 0,0,1,2,2,3,4,0,0,1,1,2,1,0 0,0,2,1,2,2,1,0,1,1,1,2,1,0 0,0,1,2,0,3,2,0,1,1,1,1,1,0 3,0,8,0,4,2,3,0,0,1,1,2,1,0 0,1,3,2,2,1,1,0,1,1,1,1,1,0 0,0,0,3,2,5,1,0,1,1,1,0,1,0 2,0,3,2,0,4,0,0,0,1,1,2,1,1 0,0,1,2,2,4,1,0,1,1,1,0,1,0 1,0,3,2,1,8,3,0,0,1,1,2,1,0 0,0,3,2,2,7,1,4,0,1,1,0,1,0 1,0,3,2,2,2,3,0,0,1,1,2,1,0 2,1,3,2,0,4,2,0,1,1,1,1,1,0 1,0,3,2,1,8,3,0,0,1,1,0,1,0 0,0,1,2,2,2,1,0,0,1,1,0,1,0 1,5,1,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,2,7,3,0,1,1,1,1,1,0 1,3,10,3,2,4,3,0,0,1,1,1,1,1 1,0,1,2,0,6,2,0,1,1,1,0,1,0 2,0,10,3,0,5,2,0,1,1,1,0,1,1 0,0,3,2,2,2,3,4,1,1,1,2,1,0 2,0,3,2,0,10,2,0,1,1,1,1,1,1 1,0,12,1,1,3,5,0,0,1,1,2,1,0 0,0,9,1,2,3,4,4,1,1,1,1,1,0 2,0,3,2,5,8,5,0,0,1,1,2,1,0 2,4,1,2,4,8,3,0,0,1,1,2,1,0 0,0,1,2,2,8,3,0,0,1,1,2,1,0 1,0,12,1,0,3,2,0,1,1,1,1,1,0 0,0,10,3,2,4,3,0,0,1,1,1,1,0 1,2,4,3,0,5,2,0,1,1,1,1,1,1 1,0,3,2,0,1,2,0,1,1,1,0,1,0 2,0,12,1,0,10,2,2,1,1,1,2,1,0 0,0,10,3,0,4,2,0,1,1,1,1,1,1 1,5,1,2,1,8,4,0,0,1,1,0,1,0 0,0,0,3,2,8,3,0,0,1,1,2,1,0 1,4,3,2,1,8,1,0,1,1,1,1,1,0 2,1,3,2,0,1,2,0,1,1,1,2,1,0 0,0,0,3,0,3,2,0,1,1,1,0,1,0 1,0,3,2,3,5,5,0,0,1,1,2,1,0 1,0,12,1,2,5,3,0,1,1,1,1,1,1 1,4,10,3,2,5,3,4,0,1,1,0,1,0 1,0,3,2,0,10,2,0,1,1,1,2,1,0 1,0,6,2,0,4,2,0,1,1,1,0,1,1 1,0,0,3,1,5,3,0,1,1,1,0,1,0 0,0,0,3,2,3,1,0,1,1,1,1,1,0 1,4,10,3,2,5,3,0,0,1,1,0,1,0 1,1,0,3,0,5,2,0,1,1,1,1,1,1 1,0,1,2,0,4,2,0,1,1,1,1,1,1 2,3,3,2,0,5,2,0,1,1,1,0,1,1 1,2,14,0,0,3,2,0,1,1,1,0,1,1 2,4,10,3,0,5,2,0,1,1,1,1,1,0 0,0,0,3,0,5,2,0,1,1,1,0,1,1 0,0,0,3,0,2,2,0,1,1,1,0,1,0 0,0,3,2,2,3,1,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,5,3,2,0,10,2,0,1,1,1,0,1,0 1,2,4,3,0,5,2,0,1,1,1,1,1,1 1,1,3,2,4,4,5,1,0,1,1,1,1,0 1,0,3,2,1,4,5,0,0,1,1,0,1,0 0,4,0,3,0,5,2,0,1,1,1,0,1,0 0,0,3,2,2,8,1,0,0,1,1,2,1,0 1,0,3,2,0,6,2,0,1,1,1,0,1,0 1,0,3,2,1,1,1,0,1,1,1,0,1,0 1,0,0,3,0,1,2,0,1,1,1,1,1,1 1,0,10,3,0,5,2,0,1,1,1,0,1,1 0,0,12,1,2,9,1,0,1,1,1,2,1,0 0,0,3,2,1,3,3,0,1,1,1,1,1,0 0,0,3,2,2,0,3,0,0,1,1,0,1,0 0,0,1,2,2,6,1,2,1,1,1,0,1,0 1,0,0,3,3,2,5,1,0,1,1,2,1,0 0,0,3,2,0,2,2,0,1,1,1,2,1,0 1,3,5,2,0,0,2,4,1,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 2,0,2,1,0,7,2,0,1,1,1,0,1,0 0,0,3,2,2,2,5,4,0,1,1,2,1,0 1,1,0,3,2,12,3,0,1,1,1,1,1,1 0,0,0,3,0,3,2,0,1,1,1,0,1,1 1,0,0,3,0,6,2,0,1,1,1,2,1,0 2,2,1,2,0,3,2,0,1,1,1,0,1,0 1,0,1,2,1,8,5,0,0,1,1,0,1,0 0,0,3,2,2,10,3,0,0,1,1,1,1,0 1,0,8,0,0,7,2,3,1,1,1,2,1,0 1,1,10,3,1,4,5,0,1,1,1,1,1,1 0,0,3,2,0,10,2,0,1,1,1,0,1,0 0,0,1,2,2,3,1,0,1,1,1,0,1,0 0,0,1,2,1,8,5,4,0,1,1,2,1,0 1,2,10,3,1,5,5,0,1,1,1,1,1,1 0,0,1,2,2,3,3,0,1,1,1,0,1,0 2,0,12,1,0,8,2,0,1,1,1,1,1,0 1,0,5,2,2,10,3,0,1,1,1,1,1,0 2,1,0,3,0,5,2,0,1,1,1,0,1,1 0,0,3,2,2,8,3,0,0,1,1,2,1,0 1,0,3,2,0,3,2,0,1,1,1,0,1,1 0,0,8,0,4,8,3,0,0,1,1,2,1,0 1,0,1,2,0,1,2,0,1,1,1,1,1,0 0,5,0,3,2,5,1,0,0,1,1,2,1,0 0,0,6,2,2,3,3,0,1,1,1,0,1,1 0,0,0,3,0,1,2,0,1,1,1,1,1,1 1,1,1,2,1,7,3,0,1,1,1,2,1,0 0,0,3,2,3,10,3,0,1,1,1,0,1,0 0,0,1,2,2,8,3,0,1,1,1,1,1,0 2,0,2,1,0,2,2,4,1,1,1,0,1,0 3,1,3,2,1,3,3,0,1,1,1,2,1,0 2,0,7,1,2,7,5,4,0,1,1,0,1,0 1,0,3,2,1,8,3,0,0,1,1,0,1,0 0,4,5,2,0,12,2,0,1,1,1,1,1,1 1,0,1,2,4,3,5,0,1,1,1,1,1,1 0,5,10,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,0,6,2,0,1,1,1,1,1,0 0,0,1,2,1,0,1,0,0,1,1,0,1,0 1,0,3,2,0,10,2,0,1,1,1,0,1,0 1,4,0,3,1,5,5,0,0,1,1,1,1,0 1,4,3,2,0,10,2,0,1,1,1,0,1,0 0,0,12,1,0,1,2,0,1,1,1,1,1,1 2,0,13,3,0,5,2,0,1,1,1,2,1,1 0,4,5,2,2,0,3,0,1,1,1,2,1,0 0,1,3,2,0,9,2,0,1,1,1,0,1,0 0,5,4,3,2,5,3,1,1,1,1,1,1,0 0,0,0,3,0,5,2,0,1,1,1,1,1,1 1,0,1,2,0,10,2,0,1,1,1,0,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,1 0,0,3,2,2,8,5,4,0,1,1,2,1,0 1,1,3,2,0,9,2,0,1,1,1,1,1,0 0,1,2,1,2,8,3,0,0,1,1,0,1,0 2,0,3,2,0,9,2,0,1,1,1,0,1,0 2,0,6,2,0,0,2,0,1,1,1,0,1,1 0,1,1,2,0,3,1,1,1,1,1,1,1,0 0,0,0,3,2,9,1,0,1,1,1,0,1,0 2,0,3,2,2,8,3,0,0,1,1,2,1,0 1,2,0,3,0,4,2,0,1,1,1,1,1,1 1,0,1,2,0,0,2,0,1,1,1,0,1,1 1,0,3,2,2,6,3,0,1,1,1,0,1,0 1,0,0,3,0,3,2,0,1,1,1,1,1,1 1,4,3,2,0,2,2,0,1,1,1,0,1,0 1,0,2,1,3,2,3,4,0,1,1,0,1,0 0,0,6,2,1,8,5,0,0,1,1,0,1,0 0,0,10,3,0,4,2,0,1,1,1,1,1,1 0,0,1,2,3,2,3,0,1,1,1,0,1,1 0,1,1,2,0,1,2,2,1,1,1,1,1,0 1,0,2,1,1,11,5,0,0,1,1,2,1,0 1,0,10,3,2,1,3,0,0,1,1,1,1,0 1,0,1,2,0,3,2,0,1,1,1,1,1,0 0,2,1,2,0,4,2,0,1,1,1,0,1,0 0,0,3,2,2,2,4,0,1,1,1,0,1,0 0,0,1,2,2,4,4,0,0,1,1,1,1,0 0,0,1,2,1,7,1,0,0,1,1,0,1,0 3,1,8,0,5,8,3,0,1,1,1,2,1,1 2,0,3,2,4,3,3,0,0,1,1,0,1,0 0,0,1,2,2,3,1,0,1,1,1,2,1,0 1,0,3,2,2,2,5,4,0,1,1,2,1,0 1,2,10,3,1,3,5,0,0,1,1,1,1,1 0,0,1,2,2,3,3,0,1,1,1,1,1,0 0,0,3,2,2,6,4,0,1,1,1,0,1,0 1,0,3,2,0,7,2,4,1,1,1,0,1,1 1,0,0,3,0,0,2,0,1,1,1,0,1,1 0,0,0,3,0,3,2,0,1,1,1,1,1,0 1,0,3,2,5,2,3,4,0,1,1,0,1,0 2,0,8,0,4,7,3,0,0,1,1,0,1,0 1,0,1,2,0,3,2,0,1,1,1,1,1,1 1,0,3,2,2,2,3,0,1,1,1,2,1,0 0,4,1,2,2,2,3,4,1,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 1,0,10,3,0,5,2,0,1,1,1,1,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,1 1,0,10,3,0,5,2,0,1,1,1,1,1,1 0,0,3,2,0,12,2,0,1,1,1,0,1,0 2,4,3,2,4,8,5,0,0,1,1,2,1,0 0,0,3,2,2,2,3,0,0,1,1,1,1,0 0,0,7,1,2,6,4,0,1,1,1,2,1,0 0,0,0,3,0,0,2,0,1,1,1,0,1,1 1,0,10,3,2,4,3,0,0,1,1,1,1,0 0,1,3,2,2,10,3,0,1,1,1,1,1,0 1,0,1,2,3,3,5,0,0,1,1,2,1,0 0,0,3,2,0,10,2,0,1,1,1,1,1,0 0,5,1,2,3,8,1,4,1,1,1,2,1,0 0,0,14,0,0,9,2,0,1,1,1,2,1,0 2,2,10,3,1,4,3,0,1,1,1,1,1,1 1,0,3,2,0,3,2,0,1,1,1,2,1,0 1,0,5,2,1,1,5,0,0,1,1,0,1,0 3,0,2,1,0,1,2,0,1,1,1,0,1,0 3,2,1,2,0,4,2,0,1,1,1,2,1,1 0,0,3,2,2,8,5,1,0,1,1,2,1,0 0,0,3,2,0,1,2,2,1,1,1,1,1,0 1,0,2,1,0,10,2,0,1,1,1,1,1,0 0,0,3,2,2,2,5,0,0,1,1,2,1,0 0,0,1,2,5,3,1,4,0,1,1,2,1,0 2,0,0,3,0,4,2,1,1,1,1,0,1,0 1,0,5,2,1,5,5,0,0,1,1,0,1,0 0,0,0,3,0,5,2,0,1,1,1,0,1,1 0,0,0,3,2,3,3,0,1,1,1,1,1,0 1,0,6,2,0,1,2,0,1,1,1,1,1,0 2,0,3,2,0,10,2,0,1,1,1,1,1,0 1,3,13,3,2,5,3,0,0,1,1,1,1,1 0,1,6,2,0,1,2,0,1,1,1,1,1,0 1,2,4,3,0,5,2,0,1,1,1,0,1,1 0,0,3,2,2,7,1,0,1,1,1,0,1,0 1,0,5,2,2,8,3,0,1,1,1,0,1,0 1,0,0,3,1,5,3,0,1,1,1,0,1,0 2,0,3,2,4,1,5,0,1,1,1,0,1,0 1,1,3,2,0,3,2,0,1,1,1,1,1,0 0,3,9,1,2,8,1,4,1,1,1,2,1,0 1,5,10,3,2,8,3,0,1,1,1,1,1,1 0,0,6,2,0,1,2,0,1,1,1,2,1,1 0,0,6,2,2,6,1,0,0,1,1,0,1,0 0,0,3,2,1,10,3,0,1,1,1,0,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,1 1,0,3,2,0,9,2,0,1,1,1,1,1,0 1,0,2,1,1,7,5,4,0,1,1,2,1,0 0,0,1,2,0,1,2,4,1,1,1,1,1,1 0,0,1,2,1,2,1,0,0,1,1,2,1,0 0,0,1,2,2,6,1,0,1,1,1,2,1,0 1,4,3,2,0,2,2,0,1,1,1,0,1,1 1,0,3,2,0,3,2,0,1,1,1,1,1,0 1,0,0,3,0,3,2,0,1,1,1,0,1,1 1,3,3,2,0,1,2,0,1,1,1,0,1,1 0,0,1,2,2,8,3,0,0,1,1,0,1,0 0,5,0,3,0,5,0,0,0,1,1,2,1,1 1,4,3,2,0,12,2,0,1,1,1,0,1,1 2,0,2,1,0,8,2,0,1,1,1,1,1,0 1,0,10,3,2,5,3,0,0,1,1,0,1,0 1,0,3,2,0,7,0,0,0,1,1,0,1,0 0,0,0,3,0,4,0,0,0,1,1,2,1,1 0,0,2,1,2,6,3,0,1,1,1,0,1,0 1,0,6,2,1,0,3,0,0,1,1,2,1,0 0,0,6,2,2,5,1,3,0,1,1,1,1,0 1,0,5,2,1,8,3,0,0,1,1,2,1,0 1,0,1,2,0,1,2,0,1,1,1,1,1,0 1,0,3,2,0,4,2,0,1,1,1,1,1,1 1,0,0,3,0,0,0,0,0,1,1,2,1,1 0,0,3,2,2,3,3,0,1,1,1,1,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,3,2,0,3,2,0,1,1,1,0,1,0 0,0,6,2,1,3,3,0,1,1,1,0,1,0 0,0,12,1,0,1,2,0,1,1,1,1,1,0 0,1,3,2,2,3,5,0,1,1,1,1,1,0 0,0,1,2,2,8,1,0,1,1,1,2,1,0 1,0,3,2,0,4,0,0,0,1,1,0,1,1 0,0,0,3,2,8,3,0,0,1,1,0,1,0 0,5,1,2,2,2,1,0,0,1,1,2,1,0 1,0,3,2,0,2,2,0,1,1,1,1,1,1 2,0,12,1,0,7,2,0,1,1,1,0,1,0 0,0,3,2,2,5,5,4,1,1,1,0,1,0 0,0,3,2,2,8,1,0,0,1,1,2,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,0 1,0,3,2,3,7,3,4,0,1,1,2,1,0 0,0,3,2,0,2,0,0,0,1,1,2,1,0 0,0,1,2,2,8,1,0,0,1,1,2,1,0 2,0,3,2,0,1,2,0,1,1,1,0,1,1 1,0,0,3,0,5,2,0,1,1,1,1,1,0 2,0,3,2,0,10,2,0,1,1,1,1,1,0 2,0,10,3,0,8,2,0,1,1,1,0,1,0 2,0,8,0,0,10,2,0,1,1,1,2,1,0 0,0,3,2,0,4,2,0,1,1,1,1,1,0 0,4,0,3,0,5,2,0,1,1,1,0,1,1 1,2,2,1,1,3,3,0,1,1,1,0,1,0 0,0,3,2,1,4,1,0,1,1,1,1,1,0 1,0,5,2,1,8,5,0,0,1,1,1,1,0 1,4,7,1,3,2,4,0,0,1,1,0,1,0 1,2,13,3,0,5,2,0,1,1,1,1,1,1 1,0,3,2,1,4,3,4,0,1,1,1,1,0 0,5,0,3,2,5,3,0,0,1,1,0,1,0 0,0,3,2,2,6,4,0,1,1,1,1,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,0,3,1,3,5,0,1,1,1,0,1,1 2,0,0,3,0,5,2,0,1,1,1,1,1,1 1,0,9,1,0,10,2,4,1,1,1,0,1,0 2,2,3,2,0,4,0,0,0,1,1,2,1,1 1,0,3,2,5,9,4,0,1,1,1,2,1,0 0,0,2,1,2,2,1,4,1,1,1,2,1,0 0,0,12,1,0,7,2,0,1,1,1,0,1,0 1,1,1,2,0,5,2,0,1,1,1,1,1,0 2,0,7,1,0,1,2,0,1,1,1,2,1,0 1,1,3,2,0,1,2,0,1,1,1,1,1,0 0,0,1,2,0,8,2,0,1,1,1,0,1,0 1,1,1,2,0,5,2,0,1,1,1,1,1,0 1,0,3,2,1,4,3,0,1,1,1,0,1,0 0,0,0,3,2,5,3,0,0,1,1,0,1,0 0,0,4,3,1,5,3,0,1,1,1,1,1,1 0,0,6,2,0,1,2,0,1,1,1,1,1,1 0,0,3,2,2,6,5,4,1,1,1,1,1,0 1,4,3,2,1,1,3,0,1,1,1,0,1,0 0,0,0,3,0,3,2,0,1,1,1,1,1,0 0,0,3,2,2,6,4,4,0,1,1,2,1,0 1,5,10,3,0,5,2,0,1,1,1,0,1,1 0,0,1,2,2,9,1,0,1,1,1,2,1,0 1,0,5,2,0,1,2,0,1,1,1,2,1,0 1,0,10,3,2,4,3,0,1,1,1,0,1,0 2,0,1,2,0,4,2,0,1,1,1,0,1,0 0,0,3,2,1,10,1,0,1,1,1,0,1,0 0,0,1,2,2,2,3,0,0,1,1,2,1,0 1,1,1,2,0,9,2,0,1,1,1,1,1,0 0,1,3,2,0,9,2,0,1,1,1,1,1,0 0,0,1,2,2,2,1,0,1,1,1,2,1,0 3,1,0,3,4,5,5,0,1,1,1,1,1,1 0,0,1,2,2,2,1,0,1,1,1,2,1,0 3,0,1,2,0,3,2,0,1,1,1,2,1,0 2,2,3,2,1,2,3,0,1,1,1,0,1,0 0,0,0,3,0,5,2,0,1,1,1,1,1,0 2,1,4,3,0,5,2,1,1,1,1,1,1,1 1,0,3,2,0,2,2,2,1,1,1,1,1,0 2,0,3,2,0,2,2,0,1,1,1,2,1,0 0,0,1,2,2,7,3,0,1,1,1,0,1,0 0,0,3,2,0,8,0,0,0,1,1,0,1,0 1,4,0,3,1,5,1,0,0,1,1,1,1,0 1,1,0,3,0,3,2,0,1,1,1,0,1,1 0,0,1,2,0,1,2,0,1,1,1,0,1,0 1,0,8,0,1,1,3,0,1,1,1,0,1,0 1,1,3,2,0,1,2,0,1,1,1,1,1,0 2,0,3,2,0,8,0,0,0,1,1,0,1,0 1,0,10,3,0,5,2,0,1,1,1,1,1,1 1,0,3,2,0,1,2,0,1,1,1,1,1,1 0,0,1,2,0,1,2,0,1,1,1,1,1,1 2,0,3,2,1,8,3,0,0,1,1,0,1,0 0,0,1,2,2,9,1,0,1,1,1,2,1,0 0,4,0,3,0,8,2,0,1,1,1,1,1,1 0,0,1,2,1,8,1,0,0,1,1,1,1,0 0,0,3,2,2,1,1,0,1,1,1,0,1,0 0,0,0,3,2,8,3,0,0,1,1,1,1,0 2,0,2,1,1,11,5,4,0,1,1,2,1,0 0,0,3,2,2,6,1,0,1,1,1,2,1,0 0,0,3,2,0,4,2,0,1,1,1,0,1,0 0,0,1,2,2,8,1,0,1,1,1,0,1,0 0,5,1,2,2,2,5,0,0,1,1,0,1,0 1,0,1,2,1,4,5,0,0,1,1,0,1,0 1,0,3,2,1,7,3,4,0,1,1,1,1,0 0,0,1,2,2,8,4,4,0,1,1,2,1,0 0,4,3,2,2,9,1,0,1,1,1,0,1,0 2,5,1,2,1,8,3,0,0,1,1,2,1,0 0,0,2,1,2,3,1,0,1,1,1,2,1,0 0,0,3,2,2,2,3,0,1,1,1,2,1,0 1,4,1,2,0,1,2,0,1,1,1,0,1,1 1,0,5,2,2,1,3,0,1,1,1,0,1,0 0,0,0,3,0,3,2,0,1,1,1,0,1,1 0,0,2,1,3,1,5,0,0,1,1,0,1,0 0,0,0,3,2,4,1,0,0,1,1,2,1,0 2,0,10,3,2,2,3,0,0,1,1,0,1,0 0,0,2,1,2,3,1,0,0,1,1,2,1,0 1,3,5,2,0,8,2,0,1,1,1,0,1,1 0,0,0,3,2,8,3,0,0,1,1,2,1,0 0,0,3,2,0,2,0,0,0,1,1,0,1,0 0,0,3,2,2,3,5,0,0,1,1,0,1,0 1,5,8,0,0,10,2,0,1,1,1,0,1,0 1,0,1,2,0,3,0,0,0,1,1,0,1,1 0,5,1,2,1,4,3,4,0,1,1,0,1,0 1,3,1,2,1,4,3,0,0,1,1,0,1,0 0,0,3,2,2,3,3,0,0,1,1,0,1,0 3,2,12,1,4,3,5,0,0,1,1,0,1,0 1,1,3,2,0,5,2,0,1,1,1,1,1,1 2,1,3,2,0,4,2,0,1,1,1,1,1,1 0,0,1,2,0,1,2,0,1,1,1,2,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 0,0,3,2,0,8,0,4,0,1,1,0,1,0 0,4,0,3,0,5,2,0,1,1,1,1,1,0 1,0,1,2,1,4,4,4,0,1,1,1,1,0 2,0,3,2,4,8,3,0,0,1,1,0,1,0 1,0,3,2,1,5,3,0,1,1,1,0,1,0 1,0,0,3,2,5,1,0,0,1,1,1,1,0 0,0,3,2,1,6,1,0,1,1,1,0,1,0 2,0,1,2,0,4,0,0,0,1,1,0,1,1 1,0,3,2,3,0,3,0,0,1,1,2,1,0 1,4,0,3,2,5,3,0,0,1,1,1,1,1 2,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,3,2,0,7,2,4,1,1,1,0,1,0 0,5,1,2,2,8,3,0,1,1,1,2,1,0 0,0,12,1,2,2,1,0,1,1,1,2,1,0 1,0,1,2,1,4,3,0,1,1,1,1,1,0 0,1,5,2,2,3,3,0,1,1,1,1,1,0 0,0,0,3,0,3,2,0,1,1,1,1,1,1 0,0,3,2,0,2,2,0,1,1,1,0,1,0 0,0,3,2,0,5,2,0,1,1,1,1,1,0 2,0,2,1,1,10,3,0,1,1,1,1,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 0,0,1,2,1,8,3,4,0,1,1,0,1,0 0,0,7,1,2,6,1,0,1,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,0 1,0,10,3,1,5,5,0,0,1,1,1,1,0 1,0,1,2,4,8,3,0,0,1,1,0,1,0 0,0,10,3,0,5,2,0,1,1,1,1,1,1 1,4,10,3,1,5,5,0,0,1,1,0,1,0 0,0,1,2,2,2,1,0,1,1,1,2,1,0 0,5,9,1,2,4,3,0,1,1,1,0,1,0 1,0,1,2,3,8,4,0,0,1,1,0,1,0 0,0,0,3,0,5,0,0,0,1,1,0,1,0 1,0,3,2,2,2,5,0,1,1,1,0,1,0 0,1,3,2,0,1,2,0,1,1,1,0,1,0 1,0,3,2,0,4,2,0,1,1,1,0,1,0 1,0,0,3,0,3,0,0,0,1,1,1,1,1 2,0,6,2,4,5,3,0,0,1,1,0,1,0 2,1,3,2,0,8,0,0,0,1,1,2,1,0 1,0,3,2,0,5,0,0,0,1,1,2,1,0 2,0,3,2,0,1,2,0,1,1,1,1,1,0 0,4,1,2,0,12,2,0,1,1,1,1,1,1 1,0,1,2,0,1,2,0,1,1,1,0,1,1 1,0,3,2,1,10,1,0,1,1,1,1,1,0 0,0,3,2,0,10,1,0,1,1,1,1,1,0 1,0,1,2,2,1,3,1,1,1,1,0,1,0 1,0,1,2,2,8,3,0,0,1,1,1,1,0 0,0,3,2,2,8,3,4,0,1,1,0,1,0 0,0,2,1,2,2,1,0,1,1,1,2,1,0 1,0,0,3,1,3,3,0,0,1,1,1,1,0 1,2,3,2,0,1,2,0,1,1,1,0,1,0 1,1,3,2,0,4,2,0,1,1,1,2,1,0 1,4,5,2,3,8,3,4,0,1,1,0,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 2,0,15,0,0,9,2,0,1,1,1,1,1,0 0,0,1,2,1,3,1,0,0,1,1,1,1,0 0,0,3,2,2,10,1,0,1,1,1,2,1,0 1,0,8,0,1,6,4,4,1,1,1,0,1,0 0,0,3,2,5,2,5,0,0,1,1,2,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,0,3,2,0,3,0,0,1,1,0,1,1 0,0,10,3,2,4,3,1,1,1,1,0,1,0 1,0,6,2,0,0,2,0,1,1,1,0,1,0 3,1,9,1,0,9,2,0,1,1,1,2,1,0 0,0,12,1,2,2,1,0,1,1,1,2,1,0 0,0,0,3,3,5,5,0,0,1,1,2,1,0 1,4,10,3,0,5,2,0,1,1,1,0,1,1 0,0,3,2,2,7,5,3,0,1,1,0,1,0 1,3,10,3,0,4,2,0,1,1,1,0,1,1 1,0,5,2,0,3,2,0,1,1,1,1,1,1 1,5,1,2,3,12,5,0,1,1,1,0,1,0 0,0,3,2,3,8,5,0,0,1,1,2,1,0 2,0,2,1,0,2,2,0,1,1,1,1,1,0 0,0,6,2,5,5,5,0,0,1,1,1,1,0 0,0,0,3,2,5,3,0,1,1,1,0,1,0 2,0,8,0,1,10,5,0,1,1,1,0,1,0 1,0,0,3,2,3,1,0,1,1,1,1,1,0 0,0,1,2,2,8,1,0,1,1,1,2,1,0 1,0,3,2,1,8,3,0,0,1,1,2,1,0 1,0,4,3,0,5,2,0,1,1,1,1,1,1 0,1,1,2,1,8,5,0,0,1,1,1,1,0 1,1,1,2,2,5,3,4,1,1,1,0,1,0 0,0,9,1,2,2,3,0,1,1,1,2,1,0 0,0,6,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 1,0,0,3,0,8,2,0,1,1,1,0,1,1 1,1,12,1,5,10,3,0,1,1,1,1,1,0 0,0,2,1,2,1,3,0,1,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,0,3,0,4,2,0,1,1,1,1,1,0 0,0,3,2,2,2,5,2,0,1,1,2,1,0 2,5,0,3,0,4,2,0,1,1,1,2,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,1 2,0,3,2,0,5,2,0,1,1,1,0,1,0 1,0,3,2,0,12,2,0,1,1,1,0,1,1 1,4,0,3,0,5,2,0,1,1,1,1,1,0 0,0,1,2,2,8,1,0,0,1,1,0,1,0 1,1,5,2,1,5,3,0,0,1,1,1,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,0 2,1,1,2,0,7,2,0,1,1,1,0,1,1 0,0,3,2,0,1,2,0,1,1,1,1,1,0 1,4,5,2,0,8,2,0,1,1,1,0,1,0 2,2,6,2,0,4,2,0,1,1,1,1,1,0 1,0,0,3,2,4,5,0,0,1,1,0,1,0 0,0,0,3,2,2,1,0,0,1,1,2,1,0 0,0,1,2,2,3,3,1,0,1,1,1,1,0 0,0,0,3,2,5,3,0,0,1,1,1,1,0 1,5,5,2,5,2,5,0,0,1,1,2,1,0 1,0,3,2,1,6,5,1,0,1,1,0,1,0 1,0,3,2,3,1,3,4,1,1,1,0,1,0 0,0,1,2,0,0,0,4,0,1,1,1,1,0 1,0,0,3,0,3,2,0,1,1,1,0,1,1 1,0,4,3,2,5,3,0,1,1,1,0,1,1 1,0,0,3,2,5,1,0,1,1,1,0,1,0 2,0,1,2,1,8,3,0,0,1,1,2,1,0 1,1,8,0,0,4,2,0,1,1,1,1,1,0 0,0,0,3,2,5,1,1,1,1,1,0,1,0 0,4,1,2,2,8,1,2,0,1,1,2,1,0 0,0,3,2,0,1,2,0,1,1,1,2,1,0 1,4,1,2,3,8,3,0,0,1,1,0,1,0 0,0,1,2,0,5,2,0,1,1,1,1,1,0 2,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,0,3,2,4,3,0,1,1,1,1,1,0 0,0,12,1,0,7,2,0,1,1,1,0,1,0 1,0,3,2,2,3,3,0,0,1,1,0,1,0 0,0,3,2,2,1,1,0,1,1,1,0,1,0 0,0,3,2,2,8,3,0,1,1,1,0,1,0 1,3,10,3,0,4,2,0,1,1,1,0,1,1 1,2,1,2,0,4,2,0,1,1,1,1,1,1 2,0,0,3,1,4,3,0,0,1,1,0,1,0 1,0,3,2,0,8,0,0,0,1,1,2,1,0 0,0,1,2,0,1,2,0,1,1,1,1,1,0 0,0,1,2,0,4,2,0,1,1,1,1,1,0 1,2,3,2,2,10,3,0,1,1,1,1,1,0 0,0,0,3,0,1,2,0,1,1,1,1,1,0 1,0,0,3,0,4,2,0,1,1,1,0,1,0 0,0,6,2,2,3,1,0,0,1,1,2,1,0 1,2,6,2,1,4,5,1,0,1,1,1,1,0 0,0,3,2,2,2,5,0,0,1,1,2,1,0 1,4,10,3,0,5,2,0,1,1,1,2,1,1 0,0,1,2,2,0,3,0,0,1,1,2,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,0 1,3,5,2,0,8,2,4,1,1,1,0,1,1 1,0,3,2,1,8,5,0,1,1,1,0,1,0 2,0,3,2,4,7,5,0,1,1,1,0,1,0 0,0,3,2,0,3,2,0,1,1,1,0,1,1 1,0,3,2,0,10,2,4,1,1,1,0,1,0 1,0,3,2,0,3,2,0,1,1,1,0,1,1 1,4,10,3,0,5,0,0,0,1,1,0,1,0 0,0,13,3,0,5,2,1,1,1,1,1,1,0 0,0,4,3,0,5,2,0,1,1,1,0,1,0 0,0,12,1,1,10,3,2,1,1,1,1,1,0 2,0,8,0,1,8,3,0,0,1,1,2,1,0 0,0,3,2,0,2,2,0,1,1,1,0,1,0 1,0,5,2,0,1,2,0,1,1,1,0,1,0 1,4,3,2,2,8,1,0,0,1,1,0,1,0 1,0,1,2,0,1,2,4,1,1,1,1,1,1 2,1,8,0,0,3,2,0,1,1,1,1,1,0 2,2,0,3,0,4,2,0,1,1,1,0,1,1 2,0,3,2,1,8,3,0,0,1,1,0,1,0 1,3,1,2,1,8,3,0,0,1,1,0,1,0 0,0,5,2,2,0,3,0,0,1,1,1,1,0 0,1,3,2,0,10,2,0,1,1,1,1,1,0 0,1,8,0,2,9,1,0,1,1,1,1,1,0 2,0,1,2,0,1,2,0,1,1,1,1,1,0 0,4,10,3,0,5,2,0,1,1,1,1,1,0 2,0,1,2,0,8,2,0,1,1,1,0,1,0 1,0,0,3,2,5,3,0,1,1,1,0,1,0 0,0,3,2,2,1,4,0,1,1,1,1,1,0 1,0,12,1,1,2,3,0,0,1,1,0,1,0 2,5,0,3,0,8,2,0,1,1,1,2,1,1 1,0,3,2,0,6,0,0,0,1,1,0,1,1 1,0,12,1,2,7,3,0,1,1,1,1,1,0 2,0,0,3,0,5,0,0,0,1,1,2,1,1 0,0,3,2,0,10,2,0,1,1,1,1,1,0 0,0,1,2,2,8,1,0,0,1,1,2,1,0 2,4,10,3,0,5,0,4,0,1,1,0,1,1 0,0,5,2,0,3,2,0,1,1,1,1,1,1 2,4,3,2,0,4,2,0,1,1,1,0,1,1 0,0,1,2,0,3,2,0,1,1,1,0,1,0 1,0,3,2,1,8,5,0,0,1,1,0,1,0 0,0,2,1,2,2,1,0,1,1,1,2,1,0 0,0,3,2,2,8,3,0,1,1,1,0,1,0 0,0,13,3,0,5,2,0,1,1,1,1,1,1 1,4,0,3,0,5,2,4,1,1,1,0,1,0 0,5,1,2,2,8,1,0,0,1,1,2,1,0 0,0,1,2,1,7,5,0,1,1,1,1,1,0 2,1,3,2,4,2,4,0,0,1,1,0,1,0 0,5,0,3,2,5,3,0,1,1,1,2,1,0 2,0,3,2,0,1,2,0,1,1,1,0,1,1 0,0,1,2,5,8,1,1,0,1,1,2,1,0 1,0,0,3,0,7,2,4,1,1,1,1,1,0 1,0,3,2,0,2,0,0,0,1,1,2,1,0 1,0,3,2,3,4,1,0,1,1,1,0,1,0 0,0,0,3,0,3,2,0,1,1,1,1,1,1 0,0,3,2,0,7,2,0,1,1,1,0,1,0 0,2,6,2,1,3,5,0,0,1,1,0,1,0 1,0,7,1,0,6,2,0,1,1,1,1,1,0 1,0,1,2,2,1,1,1,1,1,1,0,1,0 0,0,0,3,2,8,3,0,1,1,1,2,1,0 1,0,1,2,0,4,2,0,1,1,1,1,1,1 1,5,5,2,0,12,2,0,1,1,1,0,1,0 0,4,3,2,0,12,2,0,1,1,1,0,1,0 1,5,10,3,0,5,2,0,1,1,1,1,1,1 1,3,0,3,1,5,3,0,1,1,1,0,1,0 1,0,4,3,0,5,2,0,1,1,1,2,1,1 3,1,3,2,4,1,3,0,1,1,1,2,1,0 0,0,1,2,2,2,1,4,1,1,1,0,1,0 1,0,3,2,1,8,5,0,0,1,1,0,1,0 1,0,1,2,1,0,5,0,0,1,1,0,1,0 1,0,1,2,0,10,2,0,1,1,1,1,1,1 0,0,0,3,2,3,3,0,1,1,1,1,1,0 1,0,0,3,0,4,2,0,1,1,1,0,1,1 0,0,8,0,1,7,5,0,1,1,1,0,1,0 2,1,1,2,0,3,2,4,1,1,1,1,1,1 2,0,0,3,0,3,2,0,1,1,1,0,1,1 1,0,0,3,2,3,3,0,0,1,1,1,1,1 1,0,1,2,1,3,5,0,0,1,1,1,1,0 0,0,1,2,2,8,1,4,1,1,1,2,1,0 0,0,6,2,2,8,1,4,0,1,1,0,1,0 0,0,3,2,2,9,3,0,1,1,1,1,1,0 2,0,2,1,1,3,3,0,0,1,1,0,1,0 0,0,9,1,0,1,2,0,1,1,1,0,1,0 1,3,1,2,1,0,5,2,0,1,1,2,1,0 1,0,13,3,1,3,5,0,0,1,1,1,1,1 0,0,2,1,0,3,2,0,1,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,0 2,2,12,1,4,4,5,0,0,1,1,1,1,1 2,0,2,1,0,7,2,0,1,1,1,2,1,0 0,0,12,1,2,8,5,4,0,1,1,0,1,0 0,0,10,3,0,8,2,0,1,1,1,0,1,1 0,0,0,3,2,4,1,0,1,1,1,1,1,0 1,1,1,2,0,1,2,0,1,1,1,0,1,0 0,0,8,0,2,1,3,0,1,1,1,2,1,0 1,0,3,2,1,8,5,0,0,1,1,2,1,0 1,0,0,3,2,8,3,4,1,1,1,0,1,0 0,1,1,2,2,5,4,1,0,1,1,2,1,0 1,1,1,2,0,1,2,0,1,1,1,1,1,1 1,0,3,2,4,2,4,1,0,1,1,1,1,0 1,3,0,3,0,5,2,1,1,1,1,1,1,1 0,0,3,2,2,2,1,0,0,1,1,2,1,0 0,3,0,3,2,4,1,0,0,1,1,0,1,0 1,0,3,2,1,2,5,0,0,1,1,0,1,0 2,1,10,3,0,1,2,0,1,1,1,1,1,1 0,0,0,3,2,4,1,0,1,1,1,0,1,0 2,4,3,2,0,4,2,0,1,1,1,1,1,0 0,0,3,2,0,2,2,0,1,1,1,0,1,0 0,0,3,2,0,2,2,0,1,1,1,0,1,0 1,0,3,2,1,10,3,0,1,1,1,0,1,0 0,0,15,0,2,9,3,0,1,1,1,0,1,0 2,0,0,3,0,8,2,0,1,1,1,1,1,1 2,0,3,2,0,10,2,0,1,1,1,1,1,1 1,0,1,2,0,4,2,0,1,1,1,0,1,0 0,0,0,3,2,8,3,0,0,1,1,0,1,0 0,0,3,2,2,7,1,0,1,1,1,0,1,0 1,3,6,2,1,5,5,2,0,1,1,0,1,0 0,1,3,2,0,1,2,0,1,1,1,0,1,1 1,0,12,1,2,2,3,0,0,1,1,2,1,0 0,0,0,3,2,3,3,0,0,1,1,1,1,1 1,4,0,3,0,5,0,0,0,1,1,0,1,1 1,4,10,3,0,5,2,0,1,1,1,0,1,1 2,2,0,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,2,2,1,0,1,1,1,2,1,0 1,0,10,3,1,4,3,0,0,1,1,0,1,1 1,2,1,2,0,1,2,0,1,1,1,1,1,0 1,0,7,1,0,2,2,0,1,1,1,0,1,0 1,2,0,3,0,3,2,0,1,1,1,1,1,1 1,0,1,2,1,2,5,4,0,1,1,0,1,0 0,0,12,1,2,8,3,0,0,1,1,2,1,0 1,0,0,3,0,0,0,0,0,1,1,0,1,1 1,3,3,2,3,8,5,4,0,1,1,0,1,0 1,1,3,2,0,0,2,0,1,1,1,2,1,0 1,1,6,2,0,9,2,0,1,1,1,1,1,0 0,0,1,2,2,0,3,0,0,1,1,2,1,0 0,0,4,3,0,5,2,0,1,1,1,1,1,0 1,0,3,2,1,7,3,0,0,1,1,1,1,0 0,0,1,2,0,3,2,0,1,1,1,0,1,1 1,0,0,3,0,5,2,0,1,1,1,0,1,1 1,0,10,3,1,5,5,0,0,1,1,1,1,0 0,0,10,3,2,4,3,0,0,1,1,0,1,0 1,0,3,2,2,8,3,0,0,1,1,0,1,0 0,0,3,2,0,3,2,0,0,1,1,0,1,0 0,4,1,2,2,12,3,0,1,1,1,1,1,1 0,0,3,2,1,9,3,0,1,1,1,0,1,0 1,0,0,3,0,4,0,0,0,1,1,1,1,0 0,0,3,2,2,3,3,0,1,1,1,1,1,0 1,0,3,2,0,4,2,0,1,1,1,0,1,0 0,0,5,2,2,3,1,0,0,1,1,2,1,0 0,0,3,2,2,9,1,0,1,1,1,2,1,0 1,0,3,2,0,3,2,0,1,1,1,1,1,1 1,0,6,2,2,10,3,0,1,1,1,1,1,0 1,0,10,3,1,3,3,0,0,1,1,2,1,0 1,1,13,3,0,5,2,0,1,1,1,2,1,1 1,4,1,2,1,10,3,0,0,1,1,0,1,0 1,1,7,1,0,1,2,0,1,1,1,0,1,0 2,0,3,2,0,3,2,0,1,1,1,0,1,1 0,0,14,0,0,2,2,0,1,1,1,0,1,0 2,1,6,2,0,0,4,0,0,1,1,2,1,0 0,0,1,2,2,8,3,0,1,1,1,2,1,0 0,0,5,2,2,3,3,0,1,1,1,1,1,0 0,1,7,1,2,1,3,0,1,1,1,2,1,0 1,5,0,3,1,5,3,0,1,1,1,1,1,0 2,1,3,2,0,0,2,0,1,1,1,2,1,0 0,0,0,3,0,5,0,0,0,1,1,1,1,1 0,0,1,2,2,8,1,0,0,1,1,2,1,0 0,0,8,0,2,9,5,0,1,1,1,0,1,0 1,0,0,3,0,0,2,0,1,1,1,0,1,1 0,0,3,2,2,7,1,0,1,1,1,2,1,0 1,0,3,2,0,2,4,4,0,1,1,0,1,0 0,0,6,2,0,2,2,0,1,1,1,0,1,1 0,4,3,2,0,1,2,0,1,1,1,0,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,1 0,0,6,2,2,8,3,0,0,1,1,0,1,0 1,0,3,2,0,0,2,0,1,1,1,1,1,0 1,2,13,3,0,5,2,0,1,1,1,1,1,1 0,0,2,1,1,7,5,0,0,1,1,0,1,0 0,0,3,2,2,6,1,0,1,1,1,0,1,0 0,0,1,2,2,2,1,0,1,1,1,2,1,0 1,0,10,3,0,5,2,0,1,1,1,0,1,1 1,0,1,2,1,4,3,0,1,1,1,1,1,0 0,0,3,2,1,6,1,0,1,1,1,1,1,0 0,0,1,2,2,8,1,0,0,1,1,2,1,0 0,0,1,2,2,1,1,0,1,1,1,0,1,0 0,0,3,2,1,1,3,0,1,1,1,0,1,0 1,0,10,3,1,5,5,0,1,1,1,1,1,1 1,0,3,2,2,3,5,0,1,1,1,1,1,1 0,0,12,1,2,7,1,0,1,1,1,2,1,0 0,0,3,2,1,3,1,0,0,1,1,0,1,0 0,0,1,2,0,3,2,0,1,1,1,1,1,0 1,0,5,2,1,5,5,0,0,1,1,2,1,0 0,0,1,2,2,1,5,2,1,1,1,0,1,0 1,3,3,2,1,8,3,4,1,1,1,0,1,0 1,0,4,3,0,5,0,0,0,1,1,1,1,1 0,5,1,2,2,8,1,0,0,1,1,2,1,0 0,0,3,2,2,7,5,4,0,1,1,1,1,0 2,0,0,3,0,2,2,0,1,1,1,0,1,0 0,0,0,3,2,4,1,0,1,1,1,0,1,0 0,0,0,3,2,5,3,0,0,1,1,2,1,0 0,0,1,2,2,8,1,4,0,1,1,2,1,0 0,0,0,3,2,5,3,0,0,1,1,2,1,0 1,1,3,2,0,1,2,0,1,1,1,1,1,0 1,0,1,2,3,7,3,0,1,1,1,1,1,1 0,0,3,2,2,8,3,0,0,1,1,1,1,0 2,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,0,3,0,5,2,0,1,1,1,1,1,0 0,1,1,2,2,2,3,0,0,1,1,1,1,0 0,0,5,2,2,8,3,0,0,1,1,0,1,0 0,0,1,2,2,4,1,0,0,1,1,2,1,0 1,0,0,3,0,4,2,0,1,1,1,0,1,1 1,4,10,3,1,5,5,0,0,1,1,1,1,0 0,0,3,2,2,2,1,0,0,1,1,2,1,0 2,1,1,2,0,9,2,0,1,1,1,1,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 0,0,3,2,0,1,2,3,1,1,1,0,1,0 1,0,3,2,3,7,1,4,0,1,1,0,1,0 1,0,3,2,2,3,3,0,0,1,1,2,1,0 1,0,0,3,1,5,5,4,1,1,1,0,1,0 1,4,0,3,0,5,2,0,1,1,1,0,1,1 0,1,1,2,0,9,2,0,1,1,1,1,1,0 0,0,3,2,0,7,0,4,0,1,1,2,1,0 0,0,3,2,2,8,3,0,0,1,1,1,1,0 2,4,3,2,0,1,2,0,1,1,1,0,1,0 1,0,3,2,1,8,3,0,0,1,1,2,1,1 0,0,8,0,1,0,5,0,0,1,1,0,1,0 0,1,0,3,2,0,3,0,1,1,1,1,1,0 2,1,0,3,0,5,2,1,1,1,1,2,1,1 1,1,4,3,0,5,2,0,1,1,1,1,1,1 0,0,1,2,2,3,3,0,1,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,1,1,1 0,0,8,0,2,3,4,0,1,1,1,1,1,0 1,2,0,3,0,4,2,0,1,1,1,2,1,1 0,0,1,2,0,7,2,0,1,1,1,0,1,1 1,0,1,2,2,8,5,4,0,1,1,0,1,0 2,0,3,2,0,8,2,1,1,1,1,0,1,0 0,4,1,2,0,12,2,0,1,1,1,1,1,0 0,0,2,1,2,1,3,0,1,1,1,0,1,0 0,0,3,2,0,10,2,0,1,1,1,1,1,0 1,5,0,3,1,12,3,0,1,1,1,0,1,1 1,1,1,2,0,1,2,0,1,1,1,1,1,1 0,0,3,2,2,2,1,4,1,1,1,2,1,0 0,0,0,3,0,5,2,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,1,1,2,0,5,2,0,1,1,1,2,1,0 0,0,13,3,2,8,1,0,0,1,1,0,1,0 0,0,3,2,2,0,3,0,0,1,1,0,1,0 0,0,3,2,0,3,0,0,0,1,1,0,1,1 1,0,3,2,4,3,5,0,0,1,1,0,1,0 0,0,6,2,1,1,1,0,1,1,1,1,1,0 0,0,3,2,2,3,3,0,1,1,1,0,1,0 0,0,1,2,2,8,1,0,1,1,1,2,1,0 1,0,3,2,4,7,3,4,0,1,1,0,1,0 0,0,3,2,2,6,1,0,1,1,1,2,1,0 1,0,0,3,3,3,5,0,0,1,1,2,1,0 0,0,3,2,0,7,0,0,0,1,1,0,1,0 0,0,1,2,1,3,1,0,1,1,1,0,1,0 1,0,3,2,1,0,5,0,0,1,1,0,1,0 0,0,1,2,2,8,3,0,0,1,1,2,1,0 2,5,3,2,5,2,5,4,0,1,1,0,1,0 1,5,0,3,1,12,3,0,0,1,1,0,1,0 1,0,12,1,1,10,1,0,1,1,1,0,1,0 0,0,1,2,2,8,3,0,0,1,1,0,1,0 0,0,0,3,2,5,3,3,0,1,1,0,1,0 1,0,6,2,0,2,0,4,0,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,3,6,4,0,0,1,1,0,1,0 0,0,0,3,2,0,1,0,1,1,1,0,1,0 1,4,0,3,2,8,3,4,0,1,1,0,1,0 0,3,3,2,2,8,4,0,1,1,1,0,1,0 1,3,1,2,2,2,1,0,1,1,1,0,1,0 2,0,0,3,0,10,2,0,1,1,1,0,1,0 1,0,3,2,1,9,5,0,1,1,1,1,1,0 1,0,6,2,0,4,2,4,1,1,1,0,1,0 1,0,1,2,0,12,2,4,1,1,1,0,1,1 1,0,1,2,1,1,3,0,0,1,1,0,1,0 0,0,2,1,2,6,1,0,1,1,1,2,1,0 0,0,0,3,2,3,3,0,1,1,1,1,1,0 0,0,2,1,0,7,0,0,0,1,1,0,1,0 0,5,3,2,2,0,1,0,1,1,1,0,1,0 1,0,3,2,2,8,3,0,0,1,1,1,1,0 1,1,3,2,0,1,2,0,1,1,1,0,1,0 1,5,4,3,0,5,2,1,1,1,1,1,1,1 0,0,3,2,0,3,2,0,1,1,1,0,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 1,0,5,2,0,3,2,0,1,1,1,1,1,1 0,0,3,2,2,3,3,0,0,1,1,0,1,0 1,3,5,2,0,4,2,0,1,1,1,1,1,0 1,0,3,2,1,1,3,4,1,1,1,0,1,0 0,0,1,2,0,5,2,0,1,1,1,1,1,1 1,0,0,3,0,5,2,0,1,1,1,0,1,1 0,0,12,1,3,3,5,0,0,1,1,0,1,0 1,0,1,2,1,1,3,0,1,1,1,1,1,1 0,0,4,3,2,5,3,0,0,1,1,1,1,1 1,0,1,2,2,2,3,0,0,1,1,1,1,0 0,0,1,2,0,4,2,0,1,1,1,0,1,1 1,4,0,3,0,12,2,4,1,1,1,0,1,1 0,0,3,2,3,7,1,0,0,1,1,0,1,0 1,2,3,2,0,4,2,0,1,1,1,2,1,0 1,5,13,3,2,4,3,0,0,1,1,0,1,1 0,0,3,2,2,4,3,0,1,1,1,1,1,0 1,4,3,2,0,1,2,0,1,1,1,0,1,0 1,0,13,3,0,5,0,0,0,1,1,2,1,0 1,0,3,2,5,3,3,4,0,1,1,2,1,0 0,3,3,2,0,2,2,0,1,1,1,0,1,0 1,0,3,2,2,3,3,0,0,1,1,0,1,0 1,0,3,2,2,1,3,0,1,1,1,0,1,0 1,2,0,3,0,5,2,0,1,1,1,1,1,0 2,5,10,3,0,5,2,1,1,1,1,0,1,1 1,2,3,2,0,4,2,0,1,1,1,1,1,1 0,0,3,2,0,2,2,0,1,1,1,0,1,1 0,0,3,2,0,7,2,0,1,1,1,0,1,0 0,4,1,2,2,8,4,4,1,1,1,0,1,0 1,5,0,3,0,4,0,0,0,1,1,1,1,1 0,0,0,3,0,3,2,0,1,1,1,0,1,0 0,0,2,1,2,2,3,0,0,1,1,0,1,0 1,0,3,2,0,10,2,0,1,1,1,0,1,1 0,0,5,2,2,8,1,0,1,1,1,2,1,0 0,5,13,3,0,4,2,0,1,1,1,1,1,1 2,0,3,2,0,5,2,0,1,1,1,1,1,0 0,1,1,2,2,2,1,0,1,1,1,2,1,0 2,0,3,2,0,1,2,0,1,1,1,0,1,1 1,0,11,0,3,5,5,4,0,1,1,0,1,0 0,0,3,2,2,10,1,0,1,1,1,2,1,0 0,0,0,3,2,0,3,0,1,1,1,1,1,0 0,0,0,3,0,5,0,0,0,1,1,0,1,0 1,0,6,2,0,4,0,0,0,1,1,0,1,1 0,4,0,3,0,5,2,0,1,1,1,0,1,0 0,0,0,3,2,1,1,0,1,1,1,0,1,0 0,0,8,0,2,7,4,0,0,1,1,1,1,0 1,0,3,2,0,4,4,0,1,1,1,0,1,1 1,0,3,2,0,2,0,1,0,1,1,2,1,0 2,0,3,2,1,7,3,0,0,1,1,0,1,0 2,4,2,1,0,10,2,0,1,1,1,2,1,0 0,0,0,3,2,5,3,0,0,1,1,1,1,0 0,0,3,2,2,1,3,0,1,1,1,2,1,0 0,0,3,2,2,11,4,0,0,1,1,2,1,0 0,0,1,2,2,8,3,0,1,1,1,2,1,0 2,2,10,3,0,3,2,0,1,1,1,1,1,1 0,0,3,2,1,3,5,0,0,1,1,2,1,0 1,0,11,0,3,7,1,0,0,1,1,0,1,0 1,5,13,3,0,5,2,1,1,1,1,0,1,0 0,0,8,0,2,7,4,0,1,1,1,0,1,0 0,0,0,3,2,5,3,0,1,1,1,1,1,0 2,0,3,2,0,7,2,0,1,1,1,0,1,0 0,5,1,2,2,2,3,1,1,1,1,0,1,0 1,5,5,2,1,12,3,4,1,1,1,2,1,0 1,0,8,0,1,7,3,4,0,1,1,2,1,0 0,0,3,2,2,8,3,0,0,1,1,1,1,0 0,5,10,3,0,12,2,4,1,1,1,0,1,0 0,0,3,2,1,6,3,0,1,1,1,2,1,0 2,1,3,2,0,4,2,4,1,1,1,0,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 1,0,12,1,0,1,2,4,1,1,1,1,1,0 1,0,6,2,1,1,5,0,0,1,1,0,1,0 1,0,1,2,0,3,0,0,0,1,1,0,1,1 1,1,4,3,0,5,2,0,1,1,1,1,1,1 0,0,1,2,0,4,2,0,1,1,1,1,1,0 0,1,1,2,0,1,2,0,1,1,1,1,1,1 1,4,1,2,0,12,2,0,1,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,1,1,1 1,0,12,1,0,10,2,0,1,1,1,2,1,1 1,0,1,2,0,7,2,4,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,4,0,3,1,8,3,0,0,1,1,0,1,1 0,5,1,2,0,2,0,0,0,1,1,2,1,0 1,0,0,3,1,8,3,0,1,1,1,0,1,0 1,4,1,2,1,12,5,0,1,1,1,1,1,0 1,0,3,2,1,1,3,0,1,1,1,0,1,1 1,0,10,3,0,5,2,0,1,1,1,1,1,1 2,0,5,2,0,8,2,0,1,1,1,2,1,0 1,2,1,2,0,10,2,0,1,1,1,1,1,1 1,4,5,2,1,0,3,4,1,1,1,0,1,0 0,0,12,1,0,1,2,0,1,1,1,0,1,0 0,0,0,3,2,8,1,0,0,1,1,0,1,0 1,4,10,3,0,5,2,0,1,1,1,2,1,1 0,0,2,1,2,6,1,0,1,1,1,2,1,0 1,0,9,1,0,2,0,0,0,1,1,2,1,0 0,0,1,2,0,4,0,0,0,1,1,0,1,1 2,0,12,1,3,2,5,0,0,1,1,2,1,0 0,0,1,2,2,8,1,0,1,1,1,0,1,0 0,1,2,1,2,3,1,0,1,1,1,0,1,0 0,0,8,0,2,10,5,0,1,1,1,2,1,0 1,3,1,2,0,0,2,0,1,1,1,0,1,1 1,1,1,2,0,2,0,0,0,1,1,1,1,0 0,0,1,2,0,10,2,0,1,1,1,2,1,0 1,0,0,3,1,5,3,0,1,1,1,0,1,0 1,1,4,3,0,5,2,0,1,1,1,1,1,1 0,0,1,2,0,12,2,0,1,1,1,0,1,0 0,0,1,2,0,4,2,0,1,1,1,1,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,0 1,4,3,2,2,12,1,2,1,1,1,1,1,0 1,0,3,2,0,4,2,0,1,1,1,2,1,1 1,0,1,2,1,2,3,0,0,1,1,2,1,1 0,0,1,2,1,2,1,0,0,1,1,2,1,0 0,3,3,2,0,0,2,0,1,1,1,0,1,0 1,4,1,2,0,12,2,0,1,1,1,1,1,1 0,0,1,2,2,5,5,0,0,1,1,2,1,0 1,0,1,2,2,7,5,0,1,1,1,1,1,0 1,0,3,2,0,7,2,0,1,1,1,1,1,1 1,0,3,2,2,7,1,0,1,1,1,0,1,0 0,0,0,3,2,9,1,0,1,1,1,1,1,1 1,0,1,2,1,2,5,0,0,1,1,1,1,0 0,0,3,2,0,9,0,0,0,1,1,0,1,0 2,0,1,2,4,8,3,0,0,1,1,2,1,0 0,0,0,3,0,1,2,0,1,1,1,1,1,0 1,0,3,2,0,10,2,4,1,1,1,0,1,0 1,0,6,2,0,3,2,0,1,1,1,2,1,0 0,0,1,2,1,5,3,0,1,1,1,0,1,0 1,0,5,2,0,3,2,0,1,1,1,0,1,1 0,0,3,2,0,1,2,0,1,1,1,2,1,0 1,1,12,1,1,1,3,0,1,1,1,1,1,0 0,0,1,2,2,1,3,0,1,1,1,2,1,0 2,0,10,3,2,5,3,0,1,1,1,1,1,0 1,4,10,3,2,5,3,0,1,1,1,2,1,0 1,0,3,2,1,2,5,0,0,1,1,2,1,0 0,2,1,2,0,3,0,0,0,1,1,0,1,0 0,1,5,2,0,3,2,0,1,1,1,1,1,0 2,0,1,2,0,4,2,0,1,1,1,0,1,1 0,2,3,2,2,2,3,4,1,1,1,1,1,1 2,0,5,2,1,8,5,0,0,1,1,0,1,0 0,0,3,2,2,8,1,0,0,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,1,2,1,4,5,0,0,1,1,0,1,0 1,0,0,3,0,5,2,0,1,1,1,0,1,1 0,0,1,2,2,6,1,0,1,1,1,2,1,0 0,0,0,3,2,0,1,4,1,1,1,0,1,0 0,0,1,2,2,2,1,0,1,1,1,2,1,0 2,1,10,3,0,5,2,0,1,1,1,1,1,1 0,0,1,2,2,3,3,0,0,1,1,0,1,0 0,0,1,2,2,6,3,0,1,1,1,2,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,1 0,0,0,3,2,8,3,0,0,1,1,2,1,0 1,2,10,3,0,4,2,0,1,1,1,1,1,1 0,0,1,2,2,3,1,0,0,1,1,2,1,0 1,0,1,2,0,2,2,0,1,1,1,0,1,1 0,5,0,3,2,8,1,0,0,1,1,2,1,0 0,0,3,2,2,8,1,0,1,1,1,2,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,7,1,0,1,2,0,1,1,1,1,1,0 0,0,5,2,3,2,5,0,0,1,1,0,1,0 2,1,1,2,4,9,5,0,0,1,1,1,1,0 1,0,1,2,0,6,2,0,1,1,1,0,1,0 0,0,3,2,0,2,2,4,1,1,1,2,1,0 0,1,10,3,2,5,1,0,1,1,1,0,1,0 2,0,12,1,2,6,3,0,1,1,1,0,1,0 1,0,3,2,1,0,3,0,0,1,1,2,1,0 1,0,1,2,0,0,2,0,1,1,1,1,1,1 0,4,1,2,5,8,1,0,0,1,1,0,1,0 0,0,0,3,0,8,0,4,0,1,1,2,1,0 0,0,3,2,2,2,1,1,1,1,1,0,1,0 0,0,1,2,2,8,1,4,0,1,1,2,1,0 1,0,14,0,0,7,2,0,1,1,1,0,1,1 1,4,0,3,1,5,3,0,0,1,1,2,1,0 1,4,2,1,0,2,2,0,1,1,1,0,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,1 0,0,5,2,2,1,3,0,1,1,1,0,1,0 0,0,5,2,2,4,1,4,0,1,1,0,1,0 1,0,3,2,1,3,3,0,0,1,1,1,1,0 0,0,3,2,0,1,2,0,1,1,1,1,1,0 0,0,3,2,1,4,5,0,0,1,1,0,1,0 0,1,3,2,0,12,2,0,1,1,1,2,1,0 0,0,3,2,2,3,1,0,0,1,1,2,1,0 0,0,1,2,1,8,5,0,0,1,1,2,1,0 1,0,3,2,0,8,0,0,0,1,1,2,1,1 0,0,2,1,2,3,1,0,0,1,1,2,1,0 1,0,6,2,0,4,2,0,1,1,1,0,1,0 0,0,1,2,1,3,1,0,0,1,1,2,1,0 0,0,2,1,0,7,2,0,1,1,1,0,1,0 0,0,14,0,0,2,2,0,1,1,1,0,1,0 1,0,0,3,0,1,2,0,1,1,1,1,1,1 0,0,1,2,2,8,1,0,0,1,1,2,1,0 1,0,3,2,2,8,5,4,0,1,1,2,1,0 2,4,10,3,0,8,2,0,1,1,1,0,1,1 0,3,0,3,0,5,2,1,1,1,1,0,1,0 0,4,3,2,0,2,0,0,0,1,1,0,1,0 0,4,0,3,0,12,2,0,1,1,1,1,1,1 2,0,1,2,2,4,3,0,1,1,1,0,1,1 0,0,3,2,1,11,5,0,0,1,1,0,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,1 2,0,3,2,0,2,0,0,0,1,1,2,1,0 0,0,1,2,2,5,1,1,1,1,1,0,1,0 1,0,6,2,2,5,3,0,1,1,1,1,1,0 0,0,12,1,2,2,3,0,0,1,1,0,1,0 0,0,0,3,0,8,0,4,0,1,1,0,1,0 1,0,1,2,2,8,1,0,0,1,1,1,1,0 1,0,9,1,0,6,2,0,1,1,1,0,1,1 0,0,1,2,2,8,3,0,0,1,1,0,1,0 0,0,3,2,1,2,3,0,0,1,1,1,1,0 2,1,1,2,0,1,2,0,1,1,1,2,1,0 1,0,12,1,0,3,2,0,1,1,1,0,1,0 3,0,3,2,4,12,3,0,1,1,1,1,1,0 2,0,3,2,3,2,3,0,0,1,1,0,1,0 0,0,7,1,2,2,1,4,1,1,1,2,1,0 0,0,3,2,0,8,2,0,1,1,1,0,1,0 1,0,10,3,0,5,0,0,0,1,1,1,1,1 0,4,0,3,2,5,3,0,0,1,1,0,1,0 0,0,6,2,0,7,2,0,1,1,1,1,1,0 1,4,10,3,2,5,3,0,0,1,1,1,1,0 0,0,0,3,0,4,2,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,0,2,0,0,0,1,1,2,1,0 1,0,3,2,1,10,3,0,1,1,1,0,1,1 2,1,4,3,0,5,2,0,1,1,1,1,1,0 0,0,1,2,0,1,2,0,1,1,1,0,1,1 0,5,0,3,5,8,3,0,1,1,1,0,1,0 0,0,3,2,1,10,3,0,1,1,1,0,1,0 1,2,0,3,0,3,2,0,1,1,1,1,1,1 3,0,3,2,0,4,2,0,1,1,1,0,1,1 1,0,1,2,0,8,2,4,1,1,1,1,1,1 0,1,1,2,3,9,3,0,1,1,1,1,1,0 1,1,0,3,0,4,2,0,1,1,1,1,1,0 1,0,1,2,3,2,3,0,0,1,1,0,1,0 1,4,13,3,0,5,2,0,1,1,1,0,1,1 0,0,12,1,0,6,0,0,0,1,1,0,1,0 1,0,5,2,2,8,5,4,0,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,1,1,2,0,1,2,1,1,1,1,0,1,0 1,0,3,2,3,8,3,0,1,1,1,0,1,0 0,0,1,2,2,10,3,0,1,1,1,2,1,0 0,0,3,2,1,8,3,0,0,1,1,0,1,0 0,0,3,2,2,10,1,4,1,1,1,2,1,0 1,4,0,3,0,5,2,0,1,1,1,1,1,1 0,0,2,1,2,6,3,0,1,1,1,0,1,0 0,0,14,0,0,2,2,0,1,1,1,0,1,0 0,3,0,3,2,5,3,0,1,1,1,1,1,0 0,0,13,3,1,3,3,0,1,1,1,1,1,1 1,0,5,2,1,1,3,0,1,1,1,0,1,0 0,0,3,2,2,8,3,2,0,1,1,0,1,0 1,0,3,2,1,1,3,0,1,1,1,0,1,0 0,0,3,2,0,7,2,2,1,1,1,1,1,0 2,0,3,2,0,8,2,0,1,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,3,2,4,7,5,4,0,1,1,0,1,0 1,0,2,1,4,2,3,0,0,1,1,2,1,0 2,1,12,1,0,1,2,0,1,1,1,2,1,0 0,0,1,2,0,9,2,0,1,1,1,1,1,0 2,0,3,2,2,8,3,0,0,1,1,0,1,0 2,0,3,2,0,0,2,1,1,1,1,1,1,1 0,0,1,2,0,4,0,0,0,1,1,2,1,0 1,0,0,3,0,5,2,0,1,1,1,0,1,1 1,4,10,3,0,5,2,0,1,1,1,1,1,1 0,0,3,2,2,4,3,0,1,1,1,0,1,0 0,3,5,2,0,0,2,0,1,1,1,0,1,0 1,0,0,3,1,8,5,0,0,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 0,0,1,2,2,8,3,0,0,1,1,1,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,9,1,2,3,3,0,1,1,1,0,1,0 1,1,5,2,0,12,2,0,1,1,1,2,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,2,1,2,6,3,0,1,1,1,0,1,0 1,4,10,3,1,5,5,0,0,1,1,2,1,1 0,0,1,2,2,4,3,0,1,1,1,1,1,0 0,0,1,2,0,4,2,0,1,1,1,0,1,0 2,0,1,2,1,4,3,0,0,1,1,0,1,0 0,0,2,1,0,3,4,0,0,1,1,1,1,0 1,0,3,2,2,2,1,0,1,1,1,0,1,0 0,4,3,2,2,2,1,4,1,1,1,2,1,0 1,0,3,2,0,8,0,0,0,1,1,0,1,1 1,5,1,2,2,4,3,0,0,1,1,0,1,0 0,0,0,3,3,4,5,0,0,1,1,1,1,0 1,1,1,2,0,3,2,0,1,1,1,2,1,1 1,0,10,3,0,4,2,0,1,1,1,0,1,1 0,2,0,3,1,4,3,0,1,1,1,1,1,0 0,1,3,2,0,3,2,0,1,1,1,1,1,1 1,2,4,3,0,5,2,0,1,1,1,1,1,1 0,0,0,3,0,3,2,0,1,1,1,1,1,1 2,0,3,2,2,8,3,0,0,1,1,0,1,0 1,0,1,2,1,3,5,0,0,1,1,0,1,0 1,0,3,2,0,10,2,0,1,1,1,0,1,0 0,0,3,2,2,10,5,4,1,1,1,2,1,0 0,0,6,2,0,3,2,0,1,1,1,1,1,0 0,0,12,1,2,1,5,0,1,1,1,0,1,0 0,0,0,3,2,0,3,0,0,1,1,0,1,0 0,0,2,1,2,2,4,0,0,1,1,2,1,0 1,0,3,2,1,9,3,0,1,1,1,0,1,0 1,0,0,3,1,4,3,0,1,1,1,1,1,1 2,0,3,2,0,1,2,0,1,1,1,0,1,1 1,0,3,2,0,8,2,0,1,1,1,0,1,0 0,5,1,2,2,8,1,0,0,1,1,2,1,0 1,1,6,2,0,5,2,0,1,1,1,1,1,0 0,0,1,2,0,1,2,0,1,1,1,0,1,0 1,0,6,2,1,8,5,0,0,1,1,1,1,0 1,0,3,2,2,6,1,0,1,1,1,1,1,0 1,0,3,2,3,7,1,4,0,1,1,0,1,0 0,1,3,2,3,3,3,0,1,1,1,1,1,0 0,0,1,2,0,6,2,4,1,1,1,0,1,0 0,0,3,2,2,8,1,0,0,1,1,2,1,0 0,0,2,1,2,8,1,4,1,1,1,2,1,0 1,0,3,2,2,3,3,0,1,1,1,1,1,0 2,1,0,3,1,5,3,0,0,1,1,2,1,0 1,4,0,3,1,5,3,0,0,1,1,0,1,0 1,0,8,0,0,7,0,0,0,1,1,1,1,1 1,0,3,2,0,7,2,0,1,1,1,1,1,1 1,0,1,2,0,3,2,0,1,1,1,0,1,0 2,5,0,3,1,5,3,0,0,1,1,0,1,0 0,0,2,1,0,1,2,0,1,1,1,0,1,0 0,0,1,2,2,0,3,0,0,1,1,1,1,0 0,0,1,2,2,4,3,0,1,1,1,1,1,0 1,5,1,2,2,5,3,4,0,1,1,2,1,0 1,0,3,2,0,2,1,0,0,1,1,2,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,0,10,1,3,1,1,1,0,1,0 1,0,1,2,2,5,3,0,1,1,1,0,1,0 2,2,3,2,1,3,3,0,1,1,1,1,1,0 0,0,0,3,2,3,3,0,1,1,1,1,1,0 2,4,1,2,1,4,3,0,0,1,1,0,1,0 2,0,3,2,0,10,2,1,1,1,1,1,1,0 1,1,0,3,0,7,0,1,0,1,1,1,1,0 2,0,3,2,0,10,2,0,1,1,1,1,1,0 0,0,1,2,2,8,1,0,0,1,1,0,1,0 1,0,1,2,1,7,1,0,1,1,1,2,1,0 0,0,3,2,0,9,2,0,1,1,1,1,1,0 0,0,7,1,0,7,2,0,1,1,1,0,1,0 1,4,9,1,0,2,2,0,1,1,1,2,1,1 1,0,3,2,3,10,5,0,1,1,1,0,1,0 1,0,2,1,0,2,2,4,1,1,1,2,1,0 0,0,3,2,2,4,5,0,0,1,1,2,1,0 0,0,3,2,1,2,3,0,0,1,1,2,1,0 0,0,3,2,2,8,5,0,1,1,1,1,1,0 0,0,3,2,2,7,3,4,1,1,1,2,1,0 1,0,10,3,0,4,2,0,1,1,1,2,1,1 0,0,3,2,1,8,5,0,0,1,1,0,1,0 1,0,3,2,0,6,2,0,1,1,1,0,1,0 1,3,0,3,0,8,2,0,1,1,1,0,1,1 0,0,1,2,2,8,3,0,0,1,1,0,1,0 1,0,8,0,0,1,2,0,1,1,1,0,1,0 0,0,1,2,2,8,1,0,0,1,1,2,1,0 0,0,3,2,0,8,0,0,0,1,1,2,1,0 1,0,4,3,0,5,2,0,1,1,1,1,1,1 0,0,12,1,2,6,5,0,1,1,1,1,1,0 1,0,3,2,2,3,5,4,0,1,1,0,1,0 0,0,1,2,2,4,3,0,0,1,1,1,1,0 1,0,7,1,0,1,2,0,1,1,1,0,1,0 0,0,12,1,1,2,3,0,1,1,1,0,1,0 1,0,1,2,1,8,3,1,0,1,1,0,1,0 0,4,0,3,2,5,3,4,0,1,1,1,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,1 0,0,1,2,2,2,4,0,0,1,1,2,1,0 1,0,8,0,0,7,2,0,1,1,1,0,1,0 0,2,1,2,2,4,3,0,1,1,1,1,1,1 2,0,3,2,4,9,5,0,0,1,1,0,1,0 2,1,1,2,0,4,2,0,1,1,1,2,1,1 0,0,7,1,0,2,2,0,1,1,1,0,1,0 2,0,3,2,0,10,2,0,1,1,1,1,1,1 0,0,2,1,0,1,2,0,1,1,1,0,1,0 0,0,1,2,2,2,5,4,0,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,1 1,0,1,2,0,3,2,0,1,1,1,0,1,1 1,0,2,1,0,3,2,0,1,1,1,1,1,0 1,3,1,2,0,1,2,0,1,1,1,0,1,0 0,0,2,1,2,3,1,4,0,1,1,2,1,0 1,0,3,2,1,1,5,0,0,1,1,1,1,0 1,3,0,3,0,5,2,0,1,1,1,0,1,0 1,0,5,2,0,2,0,0,0,1,1,2,1,0 1,0,1,2,3,3,3,2,0,1,1,0,1,0 2,2,3,2,0,5,2,4,1,1,1,1,1,1 1,0,3,2,3,2,3,0,0,1,1,0,1,0 0,0,0,3,0,5,2,3,1,1,1,0,1,0 2,0,1,2,0,3,2,0,1,1,1,0,1,0 0,0,9,1,2,3,1,0,0,1,1,2,1,0 1,1,0,3,2,4,3,0,1,1,1,1,1,0 0,0,3,2,2,7,3,0,1,1,1,0,1,0 1,0,6,2,1,8,5,4,0,1,1,0,1,0 1,1,10,3,1,5,3,0,0,1,1,2,1,0 0,0,12,1,2,2,3,0,1,1,1,1,1,0 0,0,1,2,5,6,5,0,1,1,1,0,1,0 2,1,3,2,0,9,2,1,1,1,1,2,1,0 0,0,3,2,1,0,5,0,0,1,1,1,1,0 1,0,10,3,1,5,3,0,1,1,1,0,1,1 0,0,3,2,0,4,2,0,1,1,1,1,1,0 0,0,0,3,3,5,3,1,1,1,1,0,1,1 1,0,5,2,0,7,2,0,1,1,1,0,1,1 0,0,1,2,0,1,2,0,1,1,1,1,1,0 1,0,1,2,0,1,2,0,1,1,1,1,1,1 1,0,3,2,2,2,1,0,0,1,1,2,1,0 0,4,0,3,0,12,2,0,1,1,1,1,1,1 1,0,6,2,0,8,2,0,1,1,1,0,1,1 0,0,6,2,3,4,1,0,0,1,1,0,1,0 0,2,0,3,0,3,2,0,1,1,1,1,1,1 0,0,1,2,0,2,2,4,1,1,1,2,1,0 0,0,1,2,0,4,2,0,1,1,1,0,1,0 0,0,3,2,2,10,1,0,1,1,1,0,1,0 0,4,3,2,2,8,5,2,1,1,1,1,1,0 0,0,0,3,2,4,3,0,1,1,1,0,1,0 0,1,3,2,2,9,1,0,1,1,1,1,1,0 0,0,13,3,0,5,2,0,1,1,1,1,1,1 0,0,1,2,0,1,2,0,1,1,1,1,1,0 0,4,10,3,2,5,3,0,0,1,1,0,1,0 1,1,3,2,2,1,1,0,1,1,1,0,1,0 1,2,1,2,0,4,2,0,1,1,1,1,1,1 1,0,1,2,1,4,3,0,0,1,1,1,1,1 1,0,1,2,3,1,5,0,1,1,1,1,1,1 1,0,8,0,0,1,2,1,1,1,1,0,1,0 2,3,1,2,0,0,2,1,1,1,1,0,1,1 0,0,0,3,0,0,2,0,1,1,1,0,1,1 0,0,3,2,0,7,2,3,1,1,1,0,1,0 2,0,10,3,0,4,2,0,1,1,1,1,1,1 2,5,3,2,0,12,2,0,1,1,1,0,1,0 0,0,1,2,2,8,1,0,0,1,1,2,1,0 2,0,3,2,4,3,5,0,0,1,1,2,1,0 1,0,14,0,0,1,2,0,1,1,1,0,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 2,0,3,2,0,1,2,0,1,1,1,2,1,0 1,0,0,3,1,4,5,0,0,1,1,1,1,0 1,0,0,3,2,5,3,0,1,1,1,0,1,1 2,4,0,3,0,5,2,0,1,1,1,1,1,0 1,1,1,2,0,5,1,0,0,1,1,2,1,0 1,0,3,2,0,3,2,0,1,1,1,0,1,0 0,0,3,2,2,8,3,0,0,1,1,0,1,0 1,4,10,3,0,5,2,0,1,1,1,1,1,1 0,0,3,2,0,7,0,0,0,1,1,0,1,0 2,1,3,2,0,2,2,0,1,1,1,1,1,1 0,0,3,2,2,8,1,0,0,1,1,2,1,0 1,0,1,2,0,4,2,0,1,1,1,1,1,1 2,0,1,2,4,8,3,0,0,1,1,2,1,0 3,0,10,3,2,5,3,0,1,1,1,1,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,9,1,2,6,1,0,1,1,1,2,1,0 0,0,1,2,2,5,3,4,1,1,1,0,1,0 1,0,3,2,1,7,3,0,1,1,1,1,1,0 2,0,1,2,0,3,2,0,1,1,1,1,1,0 0,0,1,2,2,6,4,0,1,1,1,2,1,0 1,1,1,2,0,4,2,0,1,1,1,1,1,0 0,0,9,1,2,8,5,0,0,1,1,0,1,0 1,0,11,0,4,5,5,0,0,1,1,2,1,0 1,0,3,2,0,6,2,0,1,1,1,2,1,0 1,0,4,3,3,0,3,0,1,1,1,1,1,1 1,0,1,2,0,0,0,0,0,1,1,0,1,1 0,0,1,2,2,2,1,0,1,1,1,2,1,0 1,1,3,2,0,3,2,0,1,1,1,1,1,0 0,0,3,2,0,2,4,4,1,1,1,0,1,0 1,1,1,2,4,1,5,0,0,1,1,2,1,0 0,0,1,2,2,2,3,4,1,1,1,0,1,0 1,0,11,0,0,1,2,0,1,1,1,0,1,0 0,0,8,0,2,2,3,0,1,1,1,1,1,1 2,0,7,1,0,2,2,0,1,1,1,0,1,0 0,0,3,2,2,2,3,0,1,1,1,2,1,0 0,0,1,2,2,8,1,0,0,1,1,2,1,0 0,0,3,2,0,7,2,0,1,1,1,1,1,1 0,0,1,2,2,1,3,0,1,1,1,1,1,0 2,0,1,2,1,11,4,0,0,1,1,2,1,0 2,4,0,3,1,4,5,0,0,1,1,0,1,0 2,1,7,1,0,8,2,0,1,1,1,0,1,0 1,0,0,3,2,0,3,0,1,1,1,0,1,0 0,0,3,2,2,7,5,4,0,1,1,0,1,0 0,0,2,1,2,3,1,0,0,1,1,2,1,0 0,0,2,1,2,2,1,4,1,1,1,2,1,0 0,0,2,1,1,6,4,4,1,1,1,0,1,0 1,0,1,2,0,0,2,0,1,1,1,1,1,1 2,0,12,1,4,6,3,0,0,1,1,0,1,0 1,0,3,2,1,8,5,0,0,1,1,1,1,0 0,3,3,2,2,2,3,0,0,1,1,0,1,0 0,0,5,2,2,3,1,0,1,1,1,2,1,0 0,0,3,2,2,2,3,0,1,1,1,2,1,0 1,0,7,1,0,1,2,0,1,1,1,0,1,0 0,0,0,3,2,5,3,0,1,1,1,0,1,0 1,0,3,2,1,8,4,0,0,1,1,0,1,0 1,0,3,2,0,3,2,0,1,1,1,1,1,0 1,4,14,0,0,2,2,0,1,1,1,0,1,0 0,0,12,1,2,6,3,0,1,1,1,0,1,0 0,5,1,2,0,12,2,0,1,1,1,0,1,0 1,0,1,2,0,5,2,0,1,1,1,1,1,0 2,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,3,2,2,7,5,0,0,1,1,0,1,0 1,1,1,2,0,9,2,0,1,1,1,2,1,0 0,0,3,2,1,2,3,0,0,1,1,0,1,0 1,0,13,3,0,4,2,0,1,1,1,1,1,1 0,0,0,3,0,4,2,0,1,1,1,0,1,0 0,0,2,1,2,2,1,0,0,1,1,2,1,0 1,0,0,3,1,4,3,0,1,1,1,1,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,0,3,2,3,3,0,0,1,1,1,1,0 0,1,6,2,0,9,2,0,1,1,1,1,1,0 0,0,3,2,0,6,2,0,1,1,1,0,1,1 1,4,10,3,0,12,2,0,1,1,1,0,1,1 1,0,2,1,0,9,2,0,1,1,1,0,1,0 1,0,4,3,1,4,3,0,1,1,1,1,1,1 0,0,3,2,2,8,3,0,1,1,1,0,1,0 0,0,3,2,0,7,4,0,1,1,1,2,1,0 1,0,6,2,0,5,2,0,1,1,1,0,1,0 0,5,1,2,2,0,1,0,0,1,1,2,1,0 0,0,1,2,2,8,3,0,1,1,1,2,1,0 0,0,5,2,1,5,3,0,0,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,0,3,3,0,3,0,1,1,1,0,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,3,2,2,2,1,0,1,1,1,2,1,0 1,1,0,3,0,5,2,1,1,1,1,0,1,0 1,0,0,3,0,8,2,0,1,1,1,1,1,1 0,0,1,2,3,3,4,4,1,1,1,2,1,0 2,0,3,2,0,2,2,0,1,1,1,1,1,0 1,0,5,2,1,3,5,0,0,1,1,0,1,0 0,0,0,3,0,4,2,0,1,1,1,0,1,1 1,0,3,2,0,2,2,0,1,1,1,0,1,1 2,2,1,2,0,3,2,0,1,1,1,1,1,1 1,0,1,2,0,3,2,1,1,1,1,0,1,0 1,1,3,2,0,9,2,0,1,1,1,1,1,0 0,1,5,2,2,5,3,0,0,1,1,1,1,0 1,0,0,3,0,4,2,0,1,1,1,0,1,1 2,0,1,2,1,8,3,0,0,1,1,0,1,0 1,0,2,1,0,8,2,0,1,1,1,1,1,0 0,0,0,3,2,4,3,0,0,1,1,1,1,0 2,0,1,2,1,2,3,0,1,1,1,0,1,0 1,0,3,2,1,5,3,0,0,1,1,1,1,0 0,0,0,3,0,5,2,0,1,1,1,1,1,1 2,0,3,2,1,3,3,0,1,1,1,2,1,0 0,0,1,2,2,3,3,0,0,1,1,1,1,0 0,0,1,2,2,1,1,0,0,1,1,0,1,0 2,0,3,2,0,12,2,0,1,1,1,0,1,0 0,0,5,2,0,6,2,0,1,1,1,0,1,0 1,0,10,3,0,0,2,0,1,1,1,0,1,1 2,0,1,2,4,4,3,0,0,1,1,2,1,0 0,1,1,2,1,1,3,0,1,1,1,1,1,0 1,0,10,3,4,5,3,0,0,1,1,1,1,0 0,3,1,2,1,4,5,1,0,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,1,1,1 1,0,1,2,0,4,2,0,1,1,1,1,1,1 1,0,1,2,0,3,2,0,1,1,1,1,1,1 0,0,3,2,2,3,3,0,1,1,1,0,1,0 1,0,3,2,1,1,3,0,1,1,1,1,1,1 1,4,0,3,0,5,0,0,0,1,1,1,1,1 0,0,12,1,2,8,3,0,0,1,1,0,1,0 1,0,1,2,0,4,2,0,1,1,1,0,1,1 0,0,5,2,0,3,2,0,1,1,1,0,1,0 1,0,0,3,0,7,2,0,1,1,1,1,1,1 0,0,3,2,2,4,3,0,0,1,1,1,1,0 2,1,6,2,0,5,2,0,1,1,1,0,1,0 1,4,3,2,0,1,2,0,1,1,1,0,1,1 0,0,10,3,0,3,2,0,1,1,1,0,1,0 1,0,1,2,1,8,5,0,0,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,2,1,0 0,0,1,2,2,8,3,0,0,1,1,2,1,0 1,4,0,3,0,12,2,0,1,1,1,1,1,1 0,0,1,2,2,2,3,0,0,1,1,0,1,0 1,4,3,2,0,5,2,0,1,1,1,0,1,1 1,0,3,2,2,8,3,0,0,1,1,0,1,0 0,1,1,2,2,5,1,0,0,1,1,2,1,0 0,1,1,2,2,9,1,0,0,1,1,1,1,0 1,5,1,2,0,9,2,0,1,1,1,1,1,0 0,4,5,2,4,5,5,0,1,1,1,0,1,0 0,4,10,3,2,5,3,0,0,1,1,0,1,0 1,1,2,1,0,1,2,0,1,1,1,0,1,0 1,4,1,2,1,12,5,0,1,1,1,1,1,0 0,0,10,3,0,5,2,0,1,1,1,2,1,0 0,0,1,2,1,1,3,0,1,1,1,1,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,0 2,1,3,2,0,4,2,0,1,1,1,1,1,0 0,1,3,2,0,1,2,0,1,1,1,2,1,0 0,0,3,2,0,3,2,0,1,1,1,1,1,1 1,5,1,2,0,7,2,0,1,1,1,0,1,1 1,3,12,1,3,1,3,0,1,1,1,1,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,8,0,0,6,2,0,1,1,1,0,1,0 0,0,1,2,2,0,3,0,0,1,1,2,1,0 0,1,1,2,0,1,2,0,1,1,1,1,1,0 1,3,3,2,0,10,2,4,1,1,1,0,1,1 0,0,1,2,2,4,1,0,1,1,1,0,1,0 1,4,1,2,0,0,0,0,0,1,1,2,1,1 1,0,0,3,0,3,2,0,1,1,1,0,1,1 1,0,3,2,0,10,2,0,1,1,1,1,1,0 0,0,1,2,2,8,3,0,0,1,1,0,1,0 0,0,5,2,2,2,3,3,1,1,1,0,1,0 1,1,1,2,0,1,2,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,2,4,3,0,1,1,1,1,1,0 1,0,1,2,0,10,2,0,1,1,1,1,1,1 0,0,0,3,2,4,1,0,0,1,1,2,1,0 2,0,10,3,0,5,2,0,1,1,1,1,1,0 0,0,5,2,1,5,5,0,0,1,1,2,1,0 0,0,7,1,0,7,0,0,0,1,1,0,1,0 0,0,1,2,0,7,0,3,0,1,1,0,1,0 1,0,0,3,2,2,3,0,1,1,1,0,1,0 1,1,3,2,0,4,2,0,1,1,1,1,1,1 0,0,15,0,5,7,3,0,1,1,1,0,1,0 0,0,3,2,2,2,5,0,0,1,1,0,1,0 3,4,10,3,0,5,2,0,1,1,1,2,1,1 0,0,3,2,0,7,2,4,1,1,1,0,1,0 0,0,3,2,0,2,2,0,1,1,1,0,1,0 1,0,1,2,0,10,2,0,1,1,1,1,1,0 0,0,2,1,2,2,1,0,1,1,1,0,1,0 0,0,3,2,2,8,1,0,0,1,1,0,1,0 1,2,3,2,0,3,2,4,1,1,1,1,1,0 1,2,0,3,0,4,2,0,1,1,1,0,1,1 0,0,1,2,2,3,1,0,1,1,1,0,1,0 0,0,3,2,2,8,5,4,0,1,1,0,1,0 0,0,3,2,2,6,1,1,0,1,1,0,1,0 0,0,0,3,2,8,1,0,1,1,1,0,1,0 1,1,1,2,0,7,2,0,1,1,1,1,1,1 0,0,0,3,2,3,1,0,0,1,1,2,1,0 0,4,3,2,3,12,4,0,0,1,1,0,1,0 1,3,10,3,0,8,2,0,1,1,1,0,1,1 0,0,8,0,0,7,2,0,1,1,1,0,1,0 0,0,3,2,2,7,3,0,1,1,1,1,1,0 0,0,0,3,2,8,1,0,0,1,1,1,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,1,1,0 1,0,8,0,0,1,2,0,1,1,1,0,1,0 0,0,3,2,0,4,2,0,1,1,1,0,1,0 0,0,3,2,3,4,5,0,0,1,1,0,1,0 1,0,3,2,5,8,5,0,0,1,1,0,1,0 1,5,13,3,2,5,3,0,1,1,1,1,1,0 0,0,3,2,2,2,1,0,1,1,1,2,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 0,4,6,2,2,12,3,0,1,1,1,0,1,0 1,0,1,2,2,8,1,4,0,1,1,0,1,0 1,0,1,2,0,10,2,0,1,1,1,1,1,0 1,0,3,2,0,4,2,0,1,1,1,1,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,1,2,5,3,1,1,0,1,1,2,1,0 1,0,1,2,0,8,0,0,0,1,1,0,1,0 1,0,1,2,0,2,2,0,1,1,1,1,1,0 0,0,1,2,2,2,3,0,0,1,1,2,1,0 0,5,0,3,0,0,2,0,1,1,1,2,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 0,0,3,2,2,7,1,0,1,1,1,0,1,0 0,0,6,2,0,6,2,0,1,1,1,0,1,0 0,0,2,1,2,2,3,4,0,1,1,0,1,0 1,0,6,2,1,2,3,0,1,1,1,2,1,0 0,0,1,2,2,2,3,0,1,1,1,2,1,0 2,0,1,2,0,3,2,0,1,1,1,1,1,1 1,0,3,2,1,7,4,0,0,1,1,1,1,0 0,0,1,2,1,7,3,0,1,1,1,0,1,0 0,0,12,1,2,0,1,0,1,1,1,2,1,0 1,0,3,2,1,2,5,0,0,1,1,2,1,0 1,0,0,3,1,5,5,4,0,1,1,2,1,0 0,0,1,2,0,6,2,0,1,1,1,1,1,0 2,0,1,2,0,2,0,0,0,1,1,2,1,0 1,0,0,3,1,5,3,4,0,1,1,0,1,0 0,0,1,2,2,12,1,0,1,1,1,0,1,0 0,0,6,2,2,8,1,0,0,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,2,3,1,4,1,1,1,2,1,0 0,0,8,0,2,7,1,0,1,1,1,1,1,0 1,4,0,3,2,5,1,0,0,1,1,0,1,1 1,0,3,2,0,3,2,0,1,1,1,1,1,1 0,0,1,2,2,2,4,0,1,1,1,0,1,0 1,0,4,3,1,8,3,0,1,1,1,0,1,0 0,0,9,1,2,3,3,0,1,1,1,1,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,1,1,1 0,1,2,1,2,1,3,0,1,1,1,0,1,0 2,0,1,2,0,4,2,0,1,1,1,1,1,1 0,0,3,2,2,8,1,0,0,1,1,0,1,0 1,1,12,1,1,3,3,0,0,1,1,1,1,0 0,0,0,3,2,5,3,0,0,1,1,0,1,0 0,1,0,3,0,8,0,0,0,1,1,2,1,0 0,1,3,2,0,1,2,0,1,1,1,0,1,1 0,0,13,3,0,5,2,0,1,1,1,1,1,1 0,0,10,3,0,5,2,0,1,1,1,1,1,1 1,0,3,2,0,6,2,0,1,1,1,1,1,1 1,0,10,3,0,5,2,0,1,1,1,0,1,1 0,3,0,3,2,4,5,1,1,1,1,0,1,0 0,0,1,2,2,4,1,0,1,1,1,0,1,0 2,0,3,2,1,11,3,0,0,1,1,0,1,0 1,0,3,2,0,0,2,0,1,1,1,0,1,1 1,0,0,3,0,3,2,0,1,1,1,1,1,1 0,0,0,3,2,6,3,0,1,1,1,2,1,0 1,3,1,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,2,7,3,0,1,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,0 1,4,6,2,0,4,2,0,1,1,1,0,1,1 1,0,0,3,3,5,5,0,0,1,1,2,1,1 1,0,6,2,0,1,2,0,1,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,0 1,0,3,2,0,7,2,4,1,1,1,0,1,0 1,0,4,3,3,5,3,0,1,1,1,2,1,1 1,1,1,2,0,1,2,0,1,1,1,1,1,0 0,0,0,3,1,4,5,0,0,1,1,0,1,0 1,1,3,2,0,7,0,0,0,1,1,2,1,1 0,0,10,3,0,5,2,0,1,1,1,1,1,1 1,0,1,2,1,8,3,0,0,1,1,0,1,0 0,1,3,2,2,3,5,4,0,1,1,2,1,0 0,0,2,1,0,8,2,0,1,1,1,1,1,0 0,0,1,2,0,2,2,4,1,1,1,1,1,0 0,0,3,2,2,2,1,0,0,1,1,2,1,0 0,0,3,2,2,6,1,4,1,1,1,2,1,0 1,2,0,3,0,3,2,0,1,1,1,2,1,0 1,5,3,2,0,8,2,0,1,1,1,0,1,0 0,0,1,2,2,8,4,0,0,1,1,0,1,0 1,0,3,2,1,2,3,0,0,1,1,2,1,0 1,0,1,2,0,3,2,0,1,1,1,1,1,1 1,0,8,0,0,2,2,1,1,1,1,1,1,0 0,0,3,2,0,1,2,0,1,1,1,1,1,1 0,0,1,2,2,3,4,3,0,1,1,0,1,0 0,0,1,2,3,8,5,0,0,1,1,0,1,0 0,0,3,2,0,8,1,0,0,1,1,2,1,0 0,0,1,2,2,6,1,0,1,1,1,2,1,0 0,0,12,1,1,2,5,0,0,1,1,2,1,0 1,5,1,2,0,1,2,0,1,1,1,0,1,1 1,0,1,2,0,1,2,4,1,1,1,0,1,1 0,0,3,2,2,8,1,1,1,1,1,0,1,0 2,1,3,2,0,1,2,0,1,1,1,1,1,1 1,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,0,3,3,4,3,0,0,1,1,1,1,0 1,0,3,2,1,2,1,0,0,1,1,2,1,0 0,0,10,3,0,4,0,0,0,1,1,0,1,1 0,0,0,3,2,3,3,0,1,1,1,2,1,0 0,0,0,3,1,5,5,0,0,1,1,0,1,1 1,3,3,2,0,8,2,0,1,1,1,0,1,0 0,0,1,2,1,5,5,0,0,1,1,2,1,0 1,2,1,2,2,3,3,0,1,1,1,1,1,0 1,0,2,1,3,2,3,4,0,1,1,2,1,0 1,0,0,3,0,4,2,4,1,1,1,0,1,1 1,0,1,2,4,8,5,0,0,1,1,1,1,0 1,1,0,3,0,9,2,0,1,1,1,1,1,0 1,2,6,2,0,4,2,0,1,1,1,1,1,1 1,0,13,3,1,1,3,0,0,1,1,1,1,1 0,0,1,2,2,1,3,0,0,1,1,0,1,0 0,0,1,2,2,2,3,0,1,1,1,1,1,0 0,0,6,2,2,5,5,4,0,1,1,2,1,0 1,1,3,2,6,1,2,0,1,1,1,1,1,0 2,1,10,3,1,5,3,0,1,1,1,1,1,0 2,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,3,2,0,4,2,0,1,1,1,0,1,1 1,0,3,2,2,3,3,0,0,1,1,0,1,0 1,0,3,2,0,5,2,0,1,1,1,1,1,0 1,3,0,3,0,3,2,0,1,1,1,1,1,1 2,0,8,0,0,10,2,0,1,1,1,1,1,0 1,0,5,2,1,5,3,0,0,1,1,2,1,0 0,0,5,2,0,4,0,0,0,1,1,1,1,1 0,0,7,1,0,1,2,0,1,1,1,0,1,0 1,3,2,1,2,3,3,4,0,1,1,0,1,0 0,0,3,2,2,7,1,1,1,1,1,0,1,0 1,0,3,2,0,4,2,0,1,1,1,1,1,0 0,0,7,1,1,7,3,0,1,1,1,2,1,0 1,1,1,2,2,8,3,0,1,1,1,0,1,0 0,0,8,0,2,2,1,0,1,1,1,2,1,0 0,3,0,3,0,4,2,0,1,1,1,0,1,1 0,0,1,2,0,7,2,4,1,1,1,0,1,0 2,1,3,2,0,3,2,1,1,1,1,1,1,0 1,0,0,3,1,3,5,4,1,1,1,0,1,0 1,0,6,2,0,5,2,0,1,1,1,0,1,1 0,0,3,2,2,2,4,1,1,1,1,2,1,0 0,0,2,1,2,6,1,0,1,1,1,2,1,0 1,1,5,2,0,2,0,0,0,1,1,1,1,0 2,0,6,2,0,3,2,0,1,1,1,1,1,0 0,5,3,2,0,12,2,0,1,1,1,0,1,1 0,5,10,3,2,5,3,1,1,1,1,2,1,0 1,2,3,2,0,9,2,0,1,1,1,1,1,0 1,5,3,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,1,8,5,0,1,1,1,0,1,0 1,0,3,2,0,4,2,0,1,1,1,0,1,0 0,0,15,0,2,9,3,0,1,1,1,1,1,0 0,0,4,3,2,5,3,0,0,1,1,1,1,0 0,0,3,2,2,1,1,0,1,1,1,1,1,0 1,0,1,2,0,2,2,0,1,1,1,0,1,0 2,0,10,3,0,3,2,0,1,1,1,1,1,1 0,0,6,2,1,7,5,0,1,1,1,1,1,0 0,0,6,2,1,4,3,0,1,1,1,0,1,0 1,3,0,3,2,5,3,2,0,1,1,1,1,0 0,0,3,2,1,10,1,0,0,1,1,0,1,0 2,0,10,3,0,4,2,0,1,1,1,1,1,1 1,0,3,2,1,4,5,0,0,1,1,2,1,0 0,0,3,2,1,7,5,0,1,1,1,0,1,0 0,5,12,1,2,9,1,0,1,1,1,0,1,0 0,0,3,2,2,2,1,0,0,1,1,2,1,0 1,0,10,3,0,5,0,0,0,1,1,2,1,1 0,0,1,2,1,6,5,4,1,1,1,0,1,0 0,0,3,2,2,7,3,0,0,1,1,1,1,0 1,1,3,2,0,5,2,0,1,1,1,0,1,1 1,4,1,2,1,8,5,0,0,1,1,0,1,0 1,0,10,3,0,4,0,0,0,1,1,1,1,1 0,2,4,3,0,5,2,0,1,1,1,0,1,1 0,0,1,2,2,2,3,0,0,1,1,2,1,0 1,3,1,2,1,8,5,0,1,1,1,1,1,0 0,0,2,1,1,6,1,0,1,1,1,0,1,0 0,0,9,1,1,2,3,0,0,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,2,1,0 0,0,3,2,2,3,1,0,0,1,1,2,1,0 1,0,8,0,0,2,2,1,1,1,1,2,1,0 0,0,3,2,0,5,2,0,1,1,1,1,1,1 0,0,6,2,2,6,3,4,1,1,1,0,1,0 0,0,3,2,3,2,5,4,1,1,1,0,1,0 1,1,0,3,3,1,3,0,1,1,1,2,1,0 0,1,4,3,0,5,2,0,1,1,1,1,1,1 1,0,0,3,1,4,5,0,0,1,1,0,1,0 0,1,3,2,0,10,2,0,1,1,1,1,1,1 1,0,12,1,0,7,2,0,1,1,1,1,1,0 0,0,0,3,0,4,2,0,1,1,1,0,1,1 0,0,1,2,2,3,1,1,1,1,1,0,1,0 0,0,2,1,0,10,2,0,1,1,1,1,1,0 1,0,4,3,2,5,3,3,1,1,1,0,1,1 1,1,0,3,2,3,5,0,1,1,1,1,1,1 0,0,13,3,2,5,3,0,1,1,1,1,1,0 0,0,0,3,2,8,3,0,0,1,1,1,1,0 2,0,3,2,2,4,3,0,0,1,1,1,1,0 0,0,2,1,2,3,1,0,0,1,1,2,1,0 2,4,3,2,1,8,5,0,0,1,1,2,1,0 0,0,3,2,2,2,1,0,0,1,1,0,1,0 0,0,12,1,0,10,2,0,1,1,1,1,1,0 0,5,5,2,2,8,1,4,0,1,1,1,1,0 0,0,1,2,2,3,3,0,1,1,1,2,1,0 0,0,3,2,2,10,1,0,1,1,1,0,1,0 0,1,6,2,2,9,1,0,1,1,1,0,1,0 1,1,3,2,1,3,3,0,1,1,1,0,1,0 1,4,0,3,0,5,2,0,1,1,1,1,1,1 0,0,3,2,3,2,5,0,0,1,1,1,1,0 0,0,1,2,2,3,3,0,0,1,1,2,1,0 1,4,0,3,0,5,0,0,0,1,1,2,1,0 0,0,3,2,2,6,1,0,1,1,1,2,1,0 0,0,0,3,0,5,0,0,0,1,1,0,1,1 0,0,3,2,0,7,1,0,0,1,1,0,1,0 0,0,0,3,2,8,3,0,0,1,1,0,1,0 0,0,12,1,2,10,3,2,1,1,1,1,1,0 1,0,4,3,0,5,2,0,1,1,1,1,1,1 1,0,3,2,0,4,2,0,1,1,1,1,1,1 1,0,0,3,0,4,2,1,1,1,1,0,1,1 1,0,0,3,0,3,2,0,1,1,1,1,1,0 0,1,1,2,0,3,2,0,1,1,1,1,1,0 0,0,3,2,1,2,5,2,0,1,1,0,1,0 1,4,3,2,0,4,0,0,0,1,1,2,1,0 2,0,1,2,0,4,2,0,1,1,1,0,1,1 0,4,3,2,2,10,1,0,1,1,1,0,1,0 0,4,0,3,2,0,3,0,1,1,1,1,1,0 2,0,5,2,4,8,3,0,0,1,1,2,1,0 1,0,3,2,2,2,3,0,1,1,1,0,1,0 0,0,3,2,1,7,3,0,1,1,1,0,1,0 0,0,8,0,2,7,1,0,1,1,1,0,1,0 1,0,3,2,3,8,5,0,0,1,1,2,1,0 2,0,3,2,0,3,2,0,1,1,1,0,1,0 1,4,10,3,2,4,3,0,0,1,1,1,1,1 0,0,3,2,2,6,1,0,1,1,1,0,1,0 0,0,3,2,0,10,2,0,1,1,1,1,1,0 0,5,0,3,2,1,3,0,1,1,1,0,1,0 0,0,0,3,2,9,1,0,1,1,1,0,1,0 1,0,0,3,2,5,3,0,0,1,1,2,1,1 2,2,4,3,0,5,2,0,1,1,1,1,1,1 0,0,3,2,0,3,2,0,1,1,1,0,1,0 3,0,1,2,0,8,2,0,1,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 0,0,9,1,2,2,3,3,1,1,1,0,1,0 2,0,8,0,1,2,3,0,1,1,1,0,1,0 2,0,9,1,0,2,0,0,0,1,1,2,1,0 0,0,5,2,2,2,1,0,0,1,1,2,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,1 1,0,3,2,0,10,2,0,1,1,1,1,1,0 2,0,3,2,0,12,2,0,1,1,1,2,1,1 1,0,10,3,1,4,3,0,1,1,1,1,1,0 0,0,3,2,3,7,4,0,1,1,1,0,1,0 2,0,6,2,4,4,3,0,0,1,1,0,1,0 1,0,1,2,0,8,2,0,1,1,1,0,1,0 0,0,3,2,2,1,5,0,0,1,1,2,1,0 1,4,10,3,2,8,3,0,0,1,1,2,1,0 1,1,1,2,2,3,1,0,0,1,1,2,1,0 0,0,1,2,2,0,1,0,1,1,1,0,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,1 0,0,1,2,2,3,3,0,1,1,1,1,1,0 0,0,3,2,0,3,0,0,0,1,1,0,1,0 1,3,1,2,0,8,4,0,1,1,1,1,1,1 0,0,1,2,2,1,3,0,1,1,1,0,1,0 0,0,3,2,2,6,5,0,1,1,1,0,1,0 0,0,1,2,2,8,1,0,1,1,1,2,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,0 0,0,1,2,2,11,1,0,0,1,1,2,1,0 0,0,2,1,2,2,1,4,1,1,1,2,1,0 1,0,0,3,0,4,2,0,1,1,1,0,1,1 1,2,0,3,1,9,3,0,1,1,1,2,1,0 1,0,10,3,0,4,2,0,1,1,1,0,1,1 0,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,1,2,1,8,3,0,0,1,1,1,1,0 3,0,11,0,0,10,2,0,1,1,1,2,1,0 0,0,1,2,1,4,5,0,0,1,1,1,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,1 2,0,3,2,0,6,2,0,1,1,1,2,1,0 0,0,3,2,2,2,1,0,0,1,1,2,1,0 1,0,6,2,0,3,2,0,1,1,1,0,1,0 0,0,3,2,2,2,1,0,1,1,1,2,1,0 2,0,3,2,1,8,5,0,0,1,1,1,1,0 1,0,3,2,0,1,0,4,0,1,1,1,1,0 1,0,1,2,0,8,0,0,0,1,1,2,1,0 0,0,1,2,2,2,3,0,0,1,1,0,1,0 1,0,0,3,0,3,2,0,1,1,1,1,1,1 0,3,4,3,0,5,2,0,1,1,1,1,1,0 0,2,0,3,0,4,2,0,1,1,1,1,1,1 0,0,1,2,0,10,2,0,1,1,1,0,1,1 1,5,3,2,0,12,2,0,1,1,1,0,1,0 1,0,6,2,2,0,3,0,1,1,1,1,1,0 1,1,3,2,0,9,2,0,1,1,1,1,1,0 2,0,3,2,0,5,2,0,1,1,1,2,1,0 0,4,0,3,2,5,3,0,0,1,1,2,1,0 1,5,3,2,2,2,1,0,0,1,1,0,1,0 2,0,13,3,0,4,2,0,1,1,1,0,1,1 0,1,12,1,2,5,3,0,0,1,1,2,1,0 1,0,1,2,0,0,2,0,1,1,1,0,1,0 1,0,10,3,0,4,2,0,1,1,1,0,1,1 2,0,8,0,1,1,1,0,1,1,1,0,1,0 0,0,6,2,2,4,1,0,1,1,1,1,1,0 3,1,1,2,4,3,3,0,1,1,1,2,1,0 0,0,0,3,2,8,1,0,0,1,1,0,1,0 0,0,9,1,0,10,2,0,1,1,1,0,1,1 0,0,12,1,2,7,1,0,1,1,1,0,1,0 0,2,1,2,0,1,2,0,1,1,1,0,1,0 0,3,3,2,2,8,3,4,0,1,1,1,1,0 1,4,1,2,1,8,3,0,0,1,1,0,1,0 0,0,0,3,0,2,2,0,1,1,1,2,1,0 1,3,4,3,0,5,2,0,1,1,1,0,1,1 1,0,0,3,1,2,3,0,1,1,1,0,1,0 1,5,10,3,1,5,5,4,0,1,1,0,1,1 0,0,3,2,2,10,3,0,1,1,1,1,1,1 0,0,1,2,2,6,1,0,1,1,1,2,1,0 1,0,3,2,4,8,1,0,0,1,1,0,1,0 0,0,0,3,0,3,2,0,1,1,1,1,1,1 1,0,1,2,0,1,2,0,1,1,1,2,1,1 0,0,1,2,2,8,1,0,0,1,1,0,1,0 0,0,0,3,0,3,2,0,1,1,1,1,1,1 0,0,3,2,2,1,3,0,1,1,1,0,1,0 0,0,1,2,2,1,3,0,1,1,1,0,1,0 1,0,3,2,1,3,3,0,0,1,1,0,1,0 0,0,0,3,0,4,2,4,1,1,1,1,1,1 1,0,1,2,0,1,2,0,1,1,1,0,1,1 1,0,1,2,0,7,2,4,1,1,1,1,1,0 0,0,0,3,2,8,1,0,0,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,0,1,1 1,0,0,3,0,3,2,0,1,1,1,1,1,1 1,1,0,3,0,4,2,0,1,1,1,1,1,1 2,4,0,3,0,8,0,0,0,1,1,2,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,1 1,0,1,2,1,7,5,0,0,1,1,0,1,0 2,1,3,2,0,3,2,0,1,1,1,0,1,0 1,0,14,0,2,6,3,0,1,1,1,0,1,0 2,0,3,2,1,2,5,4,0,1,1,0,1,0 0,0,3,2,2,9,5,0,0,1,1,2,1,0 0,0,3,2,2,1,1,4,1,1,1,0,1,0 1,0,3,2,1,2,3,0,0,1,1,2,1,0 0,0,0,3,0,1,2,0,1,1,1,0,1,1 1,0,3,2,0,3,2,0,1,1,1,1,1,1 2,4,13,3,2,5,3,0,0,1,1,1,1,0 1,5,0,3,2,4,3,0,0,1,1,1,1,0 1,0,6,2,0,4,2,0,1,1,1,1,1,1 0,0,3,2,2,3,3,0,1,1,1,2,1,0 2,1,3,2,5,4,3,0,1,1,1,1,1,0 1,1,10,3,2,5,3,0,1,1,1,0,1,0 1,0,14,0,3,6,3,0,1,1,1,1,1,0 1,0,2,1,2,10,5,2,1,1,1,1,1,0 1,1,3,2,0,1,2,0,1,1,1,0,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,1 0,0,2,1,2,6,1,0,1,1,1,2,1,0 2,0,8,0,4,7,5,4,0,1,1,0,1,0 3,0,3,2,4,2,4,0,0,1,1,2,1,0 1,3,1,2,2,8,3,0,1,1,1,0,1,0 0,0,1,2,2,10,1,0,1,1,1,1,1,0 0,0,1,2,0,7,2,0,1,1,1,1,1,0 0,0,1,2,2,1,1,0,1,1,1,0,1,0 0,1,3,2,2,1,1,0,1,1,1,0,1,0 0,0,3,2,2,8,1,0,0,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,0,1,1 0,0,12,1,0,8,0,0,0,1,1,0,1,0 1,0,1,2,0,8,2,0,1,1,1,1,1,0 1,0,3,2,1,2,3,4,1,1,1,0,1,0 2,0,7,1,1,2,5,0,0,1,1,0,1,0 0,0,1,2,2,3,1,0,0,1,1,0,1,0 0,0,3,2,0,3,0,0,0,1,1,2,1,0 1,0,2,1,0,10,2,0,1,1,1,1,1,0 1,0,3,2,1,4,3,0,0,1,1,1,1,0 2,0,11,0,4,11,3,4,0,1,1,2,1,0 2,0,3,2,4,8,3,0,0,1,1,0,1,0 0,0,3,2,2,2,1,4,0,1,1,0,1,0 0,0,3,2,2,8,1,0,1,1,1,1,1,0 2,5,3,2,3,8,5,4,0,1,1,2,1,0 0,0,1,2,2,10,1,0,1,1,1,0,1,0 2,4,3,2,0,6,2,0,1,1,1,0,1,0 0,0,3,2,2,3,1,0,0,1,1,2,1,0 1,3,3,2,0,8,2,0,1,1,1,0,1,0 1,0,7,1,1,10,3,0,1,1,1,1,1,0 2,0,3,2,0,4,0,0,0,1,1,2,1,0 1,0,1,2,0,10,2,0,1,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,2,10,5,0,1,1,1,1,1,0 1,5,4,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,2,8,1,0,0,1,1,2,1,0 1,5,4,3,0,5,2,0,1,1,1,1,1,1 1,0,0,3,2,5,3,0,0,1,1,0,1,0 2,0,3,2,3,8,5,0,0,1,1,2,1,0 1,0,1,2,3,4,5,2,0,1,1,2,1,0 0,0,3,2,2,1,1,0,1,1,1,2,1,0 2,0,1,2,1,2,3,0,1,1,1,0,1,0 0,0,0,3,0,3,2,0,1,1,1,1,1,1 2,0,3,2,0,8,0,4,0,1,1,0,1,0 2,5,1,2,1,8,3,0,0,1,1,2,1,0 2,0,3,2,1,2,5,0,0,1,1,0,1,0 3,0,3,2,0,6,2,0,1,1,1,2,1,0 0,0,3,2,2,8,3,0,1,1,1,0,1,0 1,0,3,2,0,8,0,0,0,1,1,0,1,1 1,4,1,2,0,12,2,0,1,1,1,2,1,1 1,0,3,2,2,5,5,4,0,1,1,2,1,0 0,0,3,2,0,4,2,0,1,1,1,0,1,0 0,0,1,2,2,6,1,0,0,1,1,0,1,0 0,0,3,2,1,8,5,0,0,1,1,1,1,0 0,0,3,2,1,10,3,0,1,1,1,0,1,0 0,0,0,3,2,7,3,0,1,1,1,0,1,0 1,4,1,2,1,8,3,0,0,1,1,2,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,1 1,5,3,2,2,2,3,4,0,1,1,0,1,0 0,0,1,2,0,3,2,0,1,1,1,2,1,0 2,0,1,2,0,8,2,0,1,1,1,0,1,1 0,0,2,1,2,3,1,0,0,1,1,2,1,0 0,0,0,3,2,1,3,0,1,1,1,0,1,0 0,0,12,1,1,1,3,0,1,1,1,1,1,0 0,1,2,1,0,4,2,0,1,1,1,1,1,0 1,4,3,2,2,8,1,0,0,1,1,2,1,0 1,0,3,2,1,2,5,0,0,1,1,2,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,3,2,1,0,3,0,0,1,1,1,1,1 1,2,0,3,2,3,1,0,1,1,1,0,1,1 2,0,2,1,0,1,2,0,1,1,1,1,1,0 1,0,4,3,0,4,0,0,0,1,1,1,1,1 2,0,0,3,0,5,2,0,1,1,1,0,1,1 1,0,1,2,0,5,2,0,1,1,1,0,1,1 0,0,0,3,0,4,2,0,1,1,1,0,1,0 0,0,3,2,0,3,2,0,1,1,1,0,1,0 2,2,8,0,0,1,2,0,1,1,1,1,1,1 1,0,1,2,2,2,3,0,0,1,1,0,1,0 0,0,1,2,2,3,3,4,1,1,1,2,1,0 1,1,1,2,0,1,2,0,1,1,1,0,1,1 1,0,1,2,3,3,3,0,1,1,1,1,1,0 0,0,6,2,0,6,2,0,1,1,1,1,1,0 0,0,3,2,2,2,1,0,0,1,1,0,1,0 1,0,0,3,0,9,2,0,1,1,1,1,1,1 1,0,6,2,2,7,1,0,1,1,1,0,1,0 2,0,8,0,1,2,3,0,1,1,1,2,1,0 0,3,1,2,2,8,3,4,0,1,1,1,1,0 3,0,3,2,4,3,5,0,1,1,1,2,1,0 1,0,3,2,2,8,3,0,0,1,1,0,1,0 0,5,5,2,2,8,3,0,0,1,1,2,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 2,0,3,2,4,2,5,4,0,1,1,0,1,0 0,0,5,2,1,5,3,0,0,1,1,2,1,0 0,5,0,3,2,4,3,1,0,1,1,1,1,0 0,0,3,2,2,3,3,0,1,1,1,2,1,0 1,4,10,3,1,5,3,4,1,1,1,0,1,0 0,4,9,1,2,2,1,4,1,1,1,2,1,0 0,0,5,2,0,10,0,0,0,1,1,2,1,1 1,2,1,2,0,4,2,0,1,1,1,1,1,1 1,1,3,2,0,4,2,0,1,1,1,0,1,1 0,0,3,2,2,3,3,0,0,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,0 0,0,0,3,0,4,2,0,1,1,1,0,1,1 0,0,3,2,1,6,1,0,1,1,1,0,1,0 0,0,3,2,2,2,5,0,1,1,1,0,1,0 0,0,0,3,2,5,3,0,1,1,1,1,1,1 1,0,0,3,0,10,2,0,1,1,1,1,1,1 2,0,0,3,4,5,3,0,1,1,1,0,1,1 1,0,1,2,1,8,5,0,0,1,1,0,1,0 1,0,0,3,1,8,3,0,0,1,1,0,1,0 0,0,3,2,2,1,5,0,1,1,1,0,1,0 2,4,1,2,1,8,3,0,0,1,1,2,1,0 0,0,0,3,2,4,3,0,1,1,1,2,1,0 0,0,0,3,2,8,3,0,0,1,1,0,1,0 1,0,0,3,0,5,2,0,1,1,1,0,1,1 1,0,1,2,2,1,3,0,0,1,1,1,1,0 1,0,3,2,1,8,4,4,1,1,1,2,1,0 0,0,5,2,0,3,2,0,1,1,1,1,1,0 0,0,1,2,0,1,2,0,1,1,1,1,1,1 1,0,1,2,0,1,4,1,1,1,1,0,1,0 0,0,0,3,2,3,4,4,0,1,1,2,1,0 0,0,0,3,2,0,5,0,1,1,1,0,1,0 1,0,3,2,4,6,5,0,0,1,1,2,1,0 0,0,0,3,2,3,3,0,1,1,1,1,1,0 2,0,1,2,0,1,2,0,1,1,1,1,1,0 0,0,0,3,2,3,1,0,1,1,1,2,1,0 1,1,1,2,1,4,3,0,0,1,1,1,1,0 1,2,3,2,0,4,2,0,1,1,1,1,1,0 0,0,3,2,0,4,0,0,0,1,1,1,1,0 0,5,10,3,2,5,5,4,0,1,1,2,1,0 1,0,3,2,0,4,2,0,1,1,1,1,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,0 0,0,6,2,2,2,1,1,1,1,1,2,1,0 1,0,7,1,1,6,3,0,0,1,1,0,1,0 0,0,5,2,2,5,3,0,0,1,1,0,1,0 3,0,8,0,0,6,2,0,1,1,1,2,1,0 1,0,3,2,1,1,3,0,1,1,1,0,1,0 0,0,1,2,2,1,1,0,1,1,1,1,1,0 0,0,3,2,0,3,2,4,1,1,1,2,1,0 0,0,1,2,2,8,1,0,1,1,1,0,1,0 2,0,3,2,4,6,4,4,1,1,1,2,1,0 1,0,0,3,0,4,2,0,1,1,1,0,1,1 1,0,5,2,2,8,3,3,0,1,1,1,1,0 1,0,6,2,1,5,5,0,0,1,1,0,1,0 0,0,3,2,2,10,1,0,1,1,1,0,1,0 1,0,3,2,1,1,5,0,1,1,1,0,1,0 1,0,10,3,3,4,3,0,1,1,1,1,1,1 1,0,3,2,0,0,2,0,1,1,1,0,1,0 1,5,0,3,2,4,3,0,0,1,1,0,1,0 0,0,1,2,2,8,1,4,0,1,1,2,1,0 1,0,0,3,0,3,2,0,1,1,1,1,1,1 2,0,3,2,1,7,3,0,1,1,1,2,1,0 1,0,3,2,2,5,5,0,0,1,1,0,1,0 2,2,3,2,1,4,3,0,1,1,1,1,1,0 3,0,3,2,4,11,5,0,0,1,1,2,1,0 0,3,3,2,2,8,3,0,1,1,1,0,1,0 0,0,0,3,6,4,0,0,0,1,1,0,1,1 1,0,1,2,2,2,3,0,1,1,1,0,1,0 0,0,3,2,3,0,1,0,0,1,1,0,1,0 0,0,0,3,2,2,3,0,1,1,1,2,1,0 1,0,0,3,0,5,2,0,1,1,1,0,1,1 1,1,4,3,0,5,2,0,1,1,1,0,1,0 0,0,0,3,2,5,3,0,1,1,1,0,1,0 1,0,0,3,2,2,3,0,1,1,1,2,1,0 2,0,0,3,2,8,3,0,1,1,1,0,1,0 2,1,3,2,0,4,2,0,1,1,1,0,1,1 0,0,3,2,1,4,5,0,0,1,1,0,1,0 1,5,3,2,2,2,5,4,0,1,1,0,1,0 0,0,14,0,2,8,3,0,0,1,1,2,1,0 1,5,10,3,0,5,2,0,1,1,1,0,1,1 1,0,6,2,0,8,0,0,0,1,1,0,1,1 0,0,1,2,2,10,1,0,1,1,1,2,1,0 1,4,5,2,2,4,3,0,1,1,1,0,1,0 1,0,0,3,0,3,2,0,1,1,1,1,1,1 0,0,1,2,0,1,2,0,1,1,1,0,1,0 1,1,3,2,0,9,2,0,1,1,1,1,1,0 1,0,3,2,1,4,5,0,0,1,1,1,1,0 0,0,6,2,0,5,2,0,1,1,1,1,1,1 0,5,10,3,0,5,2,1,1,1,1,2,1,0 0,0,1,2,0,4,2,0,1,1,1,1,1,1 1,0,5,2,1,4,3,0,1,1,1,0,1,1 0,0,1,2,2,2,1,0,0,1,1,2,1,0 0,0,3,2,2,12,5,0,1,1,1,1,1,0 0,0,3,2,2,2,3,0,1,1,1,2,1,0 1,5,0,3,2,8,3,0,0,1,1,0,1,0 0,0,9,1,2,10,1,4,1,1,1,0,1,0 0,0,1,2,2,10,3,4,1,1,1,0,1,0 1,0,1,2,1,0,3,0,0,1,1,0,1,0 0,0,6,2,0,0,2,0,1,1,1,0,1,0 0,0,3,2,0,9,2,0,1,1,1,1,1,0 1,2,0,3,0,3,2,0,1,1,1,0,1,1 0,1,3,2,0,9,2,0,1,1,1,1,1,0 0,0,6,2,2,0,3,0,1,1,1,0,1,0 1,0,3,2,1,2,3,4,0,1,1,0,1,0 1,0,7,1,0,7,2,0,1,1,1,0,1,0 1,1,13,3,0,1,2,0,1,1,1,1,1,0 0,0,1,2,2,2,1,0,1,1,1,0,1,0 0,0,0,3,2,5,3,1,0,1,1,0,1,1 1,0,11,0,0,6,2,0,1,1,1,0,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,1 0,0,1,2,2,2,1,0,0,1,1,2,1,0 0,0,3,2,2,6,1,0,1,1,1,2,1,0 1,0,4,3,0,4,2,0,1,1,1,0,1,0 1,0,0,3,2,5,5,0,0,1,1,0,1,0 0,4,6,2,0,12,2,0,1,1,1,1,1,1 0,0,1,2,0,3,2,0,1,1,1,0,1,1 0,4,1,2,1,8,5,0,0,1,1,2,1,0 2,5,10,3,5,5,3,1,0,1,1,0,1,0 0,2,1,2,2,10,1,0,1,1,1,0,1,0 1,1,4,3,0,5,2,0,1,1,1,1,1,1 1,1,0,3,3,1,3,0,1,1,1,1,1,0 0,0,3,2,2,8,5,0,0,1,1,0,1,0 0,0,3,2,2,2,1,0,1,1,1,2,1,0 0,0,5,2,2,2,1,0,0,1,1,2,1,0 0,0,9,1,2,2,1,0,0,1,1,2,1,0 0,0,7,1,2,3,1,3,0,1,1,2,1,0 0,0,3,2,1,1,3,0,1,1,1,0,1,0 0,0,3,2,2,10,3,0,1,1,1,0,1,0 1,0,3,2,3,7,4,4,0,1,1,0,1,0 0,0,3,2,2,6,3,0,1,1,1,0,1,0 2,0,12,1,1,2,3,4,0,1,1,2,1,0 3,0,3,2,5,5,3,0,1,1,1,2,1,0 0,0,5,2,1,7,3,0,1,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,0,1,1 1,1,6,2,0,3,2,0,1,1,1,1,1,1 0,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,1,2,2,8,3,0,0,1,1,0,1,0 2,0,1,2,2,8,3,0,0,1,1,0,1,0 2,4,10,3,2,5,5,0,0,1,1,1,1,1 0,4,5,2,2,8,3,0,0,1,1,0,1,0 1,0,6,2,0,6,2,0,1,1,1,0,1,0 0,5,0,3,1,5,3,0,1,1,1,1,1,0 0,0,3,2,2,6,1,0,1,1,1,0,1,0 1,0,0,3,5,2,3,1,1,1,1,0,1,0 3,2,1,2,0,4,2,0,1,1,1,0,1,0 0,0,3,2,2,2,1,0,0,1,1,2,1,0 0,0,0,3,0,0,0,0,0,1,1,0,1,1 0,0,1,2,2,3,3,0,0,1,1,0,1,0 0,4,3,2,0,1,2,0,1,1,1,0,1,1 1,4,0,3,0,12,2,0,1,1,1,0,1,1 0,5,3,2,1,7,1,0,1,1,1,0,1,0 0,0,3,2,0,12,2,0,1,1,1,2,1,0 1,0,1,2,4,4,5,0,0,1,1,1,1,0 0,0,1,2,5,3,1,0,0,1,1,0,1,0 1,0,3,2,1,1,3,0,1,1,1,0,1,0 0,0,3,2,0,7,2,4,1,1,1,1,1,0 0,0,0,3,2,4,3,0,0,1,1,1,1,0 0,0,0,3,0,5,2,0,1,1,1,0,1,1 0,1,3,2,1,9,3,0,1,1,1,1,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,0 0,0,6,2,2,2,1,0,0,1,1,2,1,0 1,3,10,3,0,5,2,0,1,1,1,0,1,1 2,0,2,1,0,5,2,4,1,1,1,1,1,0 1,0,3,2,2,10,1,0,1,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,1,2,0,1,2,0,1,1,1,0,1,0 0,3,0,3,2,0,3,0,1,1,1,0,1,0 0,0,1,2,1,3,1,0,1,1,1,2,1,0 1,3,0,3,1,4,3,0,1,1,1,0,1,1 1,0,3,2,0,4,2,0,1,1,1,2,1,0 0,0,8,0,3,2,1,0,1,1,1,1,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 0,4,3,2,0,1,2,0,1,1,1,0,1,1 2,0,3,2,0,8,0,0,0,1,1,0,1,0 1,0,7,1,0,10,2,0,1,1,1,0,1,0 0,0,3,2,2,3,3,0,1,1,1,1,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,3,2,0,8,0,0,0,1,1,0,1,0 0,0,0,3,0,2,2,1,1,1,1,0,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,1 0,3,0,3,2,4,3,0,1,1,1,0,1,0 2,2,6,2,0,1,2,0,1,1,1,2,1,0 1,4,4,3,3,5,5,0,0,1,1,0,1,0 2,1,3,2,0,9,2,0,1,1,1,0,1,1 1,0,3,2,2,7,3,0,1,1,1,0,1,0 0,0,1,2,2,3,1,4,1,1,1,2,1,0 0,1,6,2,2,8,3,0,0,1,1,0,1,0 1,1,3,2,2,9,3,0,1,1,1,0,1,1 0,0,3,2,2,8,1,0,1,1,1,0,1,0 1,0,3,2,1,2,5,0,0,1,1,0,1,0 1,0,5,2,0,3,2,0,1,1,1,1,1,1 1,0,1,2,1,8,5,0,0,1,1,1,1,0 0,0,1,2,3,1,1,0,1,1,1,0,1,0 0,0,3,2,2,2,1,0,0,1,1,0,1,0 1,0,0,3,1,1,1,0,0,1,1,0,1,0 0,0,0,3,2,5,3,0,0,1,1,0,1,0 0,0,1,2,1,0,3,0,0,1,1,0,1,0 0,0,3,2,2,2,1,0,1,1,1,2,1,0 1,0,3,2,0,2,0,0,0,1,1,2,1,0 1,4,3,2,2,2,1,0,1,1,1,0,1,0 0,0,0,3,0,4,2,0,1,1,1,0,1,1 1,1,3,2,3,2,5,0,0,1,1,0,1,0 1,0,0,3,1,4,5,0,0,1,1,0,1,0 0,3,5,2,1,12,3,0,1,1,1,0,1,0 0,0,3,2,0,3,2,0,1,1,1,1,1,0 2,5,0,3,0,8,2,0,1,1,1,2,1,0 0,0,1,2,2,8,3,0,1,1,1,0,1,0 0,1,3,2,0,1,2,0,1,1,1,1,1,0 0,0,3,2,2,8,1,0,1,1,1,0,1,0 2,4,8,0,4,2,3,4,0,1,1,2,1,0 1,4,1,2,0,1,2,0,1,1,1,0,1,1 0,0,1,2,2,10,1,0,1,1,1,1,1,0 0,2,3,2,1,4,3,0,1,1,1,0,1,0 0,0,12,1,2,6,3,0,1,1,1,0,1,0 2,4,10,3,1,5,3,0,0,1,1,0,1,0 0,1,8,0,0,10,2,0,1,1,1,0,1,1 1,0,3,2,0,1,2,0,1,1,1,0,1,0 0,5,2,1,2,2,1,0,1,1,1,2,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,1 0,0,4,3,0,3,2,0,1,1,1,1,1,1 0,0,12,1,2,7,3,0,0,1,1,1,1,0 0,0,0,3,2,3,3,4,1,1,1,2,1,0 0,3,4,3,2,5,3,0,0,1,1,1,1,1 1,3,1,2,0,4,2,0,1,1,1,0,1,1 0,0,0,3,0,4,2,0,1,1,1,1,1,0 0,0,5,2,0,5,2,0,1,1,1,1,1,0 1,0,1,2,0,3,2,0,1,1,1,1,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 0,0,0,3,2,5,1,0,0,1,1,2,1,0 0,0,0,3,2,4,3,0,0,1,1,0,1,0 2,0,3,2,0,6,2,0,1,1,1,0,1,0 0,5,1,2,2,5,3,0,1,1,1,2,1,0 2,0,3,2,4,8,5,0,0,1,1,2,1,0 0,0,1,2,0,0,2,0,1,1,1,1,1,1 1,0,10,3,1,3,3,0,0,1,1,0,1,0 0,0,1,2,2,3,1,0,1,1,1,1,1,0 1,0,3,2,1,7,3,0,1,1,1,0,1,0 2,1,3,2,0,1,2,0,1,1,1,1,1,1 0,0,2,1,2,1,1,1,1,1,1,0,1,1 0,0,12,1,0,10,2,0,1,1,1,1,1,1 2,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,1,2,2,8,3,0,1,1,1,2,1,0 0,0,3,2,0,1,2,0,1,1,1,1,1,0 0,0,3,2,1,8,3,0,0,1,1,0,1,0 0,0,1,2,2,2,1,0,1,1,1,2,1,0 0,5,0,3,0,0,2,0,1,1,1,2,1,0 1,0,3,2,0,3,2,0,1,1,1,0,1,0 1,0,1,2,2,7,5,4,0,1,1,0,1,0 0,1,2,1,0,7,2,0,1,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,1 0,0,6,2,2,0,5,4,0,1,1,0,1,0 0,0,1,2,2,4,1,0,0,1,1,0,1,0 0,0,3,2,5,11,4,4,0,1,1,1,1,0 1,4,6,2,2,5,3,0,0,1,1,0,1,0 1,1,1,2,0,1,2,0,1,1,1,1,1,0 1,0,0,3,1,8,5,0,0,1,1,2,1,0 1,0,6,2,0,3,2,0,1,1,1,0,1,1 0,0,3,2,2,12,3,0,1,1,1,1,1,0 0,0,12,1,0,7,2,0,1,1,1,0,1,0 1,1,0,3,1,2,5,4,1,1,1,1,1,1 0,0,12,1,2,2,1,0,1,1,1,2,1,0 0,0,1,2,2,3,3,0,1,1,1,2,1,0 0,0,3,2,2,1,1,0,1,1,1,1,1,0 0,1,3,2,0,1,2,0,1,1,1,0,1,0 1,0,1,2,1,4,5,0,0,1,1,1,1,0 2,0,12,1,1,9,3,0,1,1,1,1,1,0 0,5,1,2,1,8,5,0,0,1,1,2,1,0 1,3,0,3,1,8,5,0,0,1,1,0,1,0 1,0,1,2,0,0,2,0,1,1,1,0,1,1 0,1,3,2,0,10,2,0,1,1,1,0,1,1 1,0,0,3,0,3,2,0,1,1,1,1,1,1 0,0,3,2,0,1,2,0,1,1,1,0,1,1 1,0,1,2,0,4,2,0,1,1,1,1,1,1 0,0,1,2,0,8,0,2,0,1,1,1,1,0 0,5,10,3,2,5,3,0,1,1,1,1,1,0 2,0,12,1,1,3,5,0,0,1,1,0,1,0 1,1,6,2,0,9,2,0,1,1,1,1,1,1 0,0,1,2,2,10,1,0,1,1,1,0,1,0 0,0,0,3,2,5,3,0,0,1,1,0,1,0 0,0,3,2,0,10,2,0,1,1,1,0,1,0 0,0,3,2,2,7,1,4,0,1,1,2,1,0 0,0,10,3,2,5,3,0,1,1,1,1,1,0 0,0,0,3,2,1,1,0,1,1,1,2,1,0 0,0,1,2,0,1,2,0,1,1,1,0,1,0 1,4,0,3,0,5,0,0,0,1,1,2,1,1 2,0,3,2,4,8,3,0,0,1,1,2,1,0 1,0,3,2,0,6,2,0,1,1,1,0,1,0 0,0,1,2,1,2,5,0,0,1,1,0,1,0 2,0,12,1,0,1,2,0,1,1,1,0,1,1 2,0,0,3,1,1,1,0,0,1,1,2,1,0 1,0,6,2,0,5,2,1,1,1,1,2,1,1 0,0,1,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,1,1,1,4,1,1,1,0,1,0 1,4,3,2,0,1,2,0,1,1,1,0,1,1 1,0,3,2,1,6,3,0,1,1,1,1,1,0 0,0,3,2,2,2,1,0,0,1,1,0,1,0 0,0,10,3,0,5,2,0,1,1,1,2,1,1 1,1,1,2,1,9,3,0,1,1,1,0,1,0 1,1,10,3,0,9,2,0,1,1,1,0,1,1 1,4,10,3,1,4,5,4,0,1,1,0,1,1 1,5,3,2,0,1,2,0,1,1,1,0,1,0 0,4,3,2,2,1,4,4,0,1,1,0,1,0 1,0,0,3,1,4,1,0,0,1,1,0,1,0 0,0,1,2,2,5,3,0,0,1,1,0,1,0 2,0,1,2,1,2,3,0,1,1,1,1,1,0 0,4,10,3,2,5,3,0,1,1,1,1,1,0 0,0,6,2,1,2,5,0,0,1,1,0,1,0 0,0,0,3,2,4,3,0,0,1,1,0,1,0 0,4,0,3,2,5,1,0,0,1,1,2,1,0 0,0,1,2,2,3,1,4,1,1,1,2,1,0 1,2,4,3,0,5,2,3,1,1,1,1,1,1 2,1,12,1,0,9,2,0,1,1,1,1,1,0 1,0,3,2,0,4,2,0,1,1,1,1,1,0 2,0,6,2,0,5,0,0,0,1,1,2,1,0 0,0,3,2,1,4,3,0,0,1,1,0,1,0 2,0,3,2,0,3,2,0,1,1,1,2,1,0 0,0,3,2,1,7,1,0,0,1,1,0,1,0 2,5,7,1,0,1,2,0,1,1,1,0,1,0 0,1,0,3,2,4,4,0,1,1,1,1,1,0 0,0,1,2,0,4,2,0,1,1,1,0,1,0 0,0,3,2,2,4,4,0,1,1,1,0,1,0 1,5,13,3,0,5,2,0,1,1,1,1,1,1 0,0,0,3,0,10,2,0,1,1,1,0,1,1 0,0,9,1,2,2,1,0,1,1,1,2,1,0 1,2,12,1,0,3,2,0,1,1,1,1,1,0 1,4,0,3,0,5,0,0,0,1,1,1,1,1 1,0,3,2,0,7,2,4,1,1,1,0,1,0 0,0,6,2,1,8,3,0,0,1,1,2,1,0 1,0,3,2,0,10,2,0,1,1,1,0,1,0 2,5,3,2,0,10,2,0,1,1,1,2,1,1 1,0,3,2,1,5,3,0,1,1,1,0,1,0 0,0,1,2,1,4,3,0,0,1,1,0,1,0 0,0,1,2,2,2,3,0,1,1,1,0,1,0 0,0,10,3,2,5,1,0,0,1,1,2,1,0 0,0,1,2,0,2,2,3,1,1,1,0,1,0 1,0,5,2,0,7,2,0,1,1,1,0,1,0 1,0,1,2,0,7,2,0,1,1,1,0,1,0 1,5,5,2,1,8,5,0,1,1,1,2,1,1 0,0,1,2,0,2,0,0,0,1,1,2,1,0 1,1,3,2,2,9,3,0,1,1,1,1,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,1 1,2,0,3,0,3,2,0,1,1,1,1,1,1 1,0,10,3,0,4,2,0,1,1,1,1,1,1 1,5,10,3,0,4,2,0,1,1,1,2,1,0 0,4,3,2,2,6,4,0,1,1,1,1,1,0 1,3,3,2,0,10,2,0,1,1,1,1,1,0 1,0,1,2,0,4,0,4,0,1,1,0,1,1 1,0,3,2,0,8,2,0,1,1,1,0,1,0 1,0,1,2,0,7,2,0,1,1,1,0,1,0 0,0,1,2,2,0,5,0,0,1,1,0,1,0 0,1,3,2,0,3,2,0,1,1,1,1,1,1 0,4,1,2,2,8,1,0,0,1,1,2,1,0 0,0,11,0,0,6,2,0,1,1,1,0,1,0 0,0,3,2,1,1,1,0,1,1,1,0,1,0 1,4,0,3,3,5,3,0,1,1,1,0,1,1 0,0,0,3,2,5,3,0,0,1,1,1,1,0 0,0,3,2,0,7,2,0,1,1,1,1,1,1 0,0,3,2,1,10,3,0,1,1,1,1,1,0 2,0,0,3,1,4,3,4,0,1,1,1,1,1 1,5,6,2,0,0,2,0,1,1,1,1,1,1 0,0,3,2,5,7,5,0,0,1,1,0,1,0 0,0,1,2,2,6,3,0,1,1,1,0,1,0 0,5,1,2,2,12,1,0,1,1,1,1,1,0 1,4,10,3,1,5,3,0,1,1,1,0,1,0 1,1,3,2,0,4,2,0,1,1,1,1,1,0 1,3,0,3,0,12,2,0,1,1,1,1,1,1 0,4,10,3,2,5,3,0,0,1,1,0,1,0 1,0,3,2,4,2,5,0,0,1,1,0,1,0 1,0,3,2,1,2,5,4,0,1,1,0,1,0 1,5,3,2,0,5,2,0,1,1,1,0,1,1 1,0,3,2,0,3,2,0,1,1,1,0,1,1 0,0,15,0,2,2,1,0,1,1,1,2,1,0 2,2,3,2,0,4,2,0,1,1,1,1,1,0 1,0,7,1,0,7,2,0,1,1,1,0,1,0 0,0,10,3,0,5,2,0,1,1,1,2,1,1 1,0,1,2,0,3,2,0,1,1,1,0,1,0 1,0,13,3,1,5,5,0,0,1,1,1,1,0 2,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,5,2,0,10,2,0,1,1,1,1,1,0 0,0,6,2,2,6,1,0,1,1,1,1,1,0 0,0,3,2,0,1,2,0,1,1,1,1,1,0 2,1,3,2,4,1,3,0,0,1,1,2,1,0 0,0,1,2,2,9,1,0,1,1,1,1,1,0 2,0,3,2,1,5,3,0,0,1,1,0,1,0 1,0,3,2,0,8,0,0,0,1,1,0,1,1 1,0,12,1,0,7,2,0,1,1,1,0,1,1 2,0,3,2,0,1,2,0,1,1,1,0,1,1 2,0,3,2,0,1,2,4,1,1,1,1,1,0 0,0,3,2,0,0,2,0,1,1,1,0,1,0 1,0,0,3,0,10,2,0,1,1,1,1,1,1 0,0,3,2,2,1,1,0,1,1,1,0,1,0 0,0,1,2,2,2,1,0,1,1,1,2,1,0 2,0,5,2,1,2,3,0,0,1,1,0,1,0 1,4,6,2,2,12,3,0,1,1,1,0,1,1 2,0,3,2,4,3,3,0,0,1,1,2,1,1 1,0,1,2,2,6,3,0,1,1,1,2,1,0 0,4,0,3,2,4,1,0,0,1,1,2,1,0 0,0,3,2,2,2,3,0,1,1,1,0,1,0 3,0,4,3,0,5,2,0,1,1,1,1,1,1 1,4,0,3,2,5,3,0,0,1,1,1,1,0 1,4,0,3,0,5,2,0,1,1,1,0,1,0 0,0,13,3,2,5,3,0,1,1,1,0,1,1 1,3,3,2,1,0,5,0,0,1,1,0,1,0 0,0,12,1,0,12,0,4,0,1,1,1,1,0 1,0,5,2,2,8,3,0,0,1,1,0,1,0 1,0,3,2,0,8,2,0,1,1,1,0,1,0 0,0,3,2,0,4,2,0,1,1,1,1,1,1 0,0,1,2,2,2,3,0,1,1,1,0,1,0 0,0,3,2,0,4,2,0,1,1,1,1,1,1 1,0,1,2,3,7,1,0,1,1,1,0,1,0 0,5,8,0,0,6,2,0,1,1,1,2,1,0 0,0,3,2,0,2,0,0,0,1,1,2,1,0 0,0,4,3,2,5,3,0,1,1,1,1,1,0 1,1,8,0,0,1,2,0,1,1,1,0,1,0 0,0,3,2,0,12,2,0,1,1,1,1,1,0 2,0,3,2,1,3,5,0,0,1,1,0,1,1 1,1,3,2,0,3,2,0,1,1,1,1,1,1 1,0,0,3,0,4,2,0,1,1,1,1,1,1 0,2,3,2,0,4,2,0,1,1,1,1,1,1 0,0,1,2,2,2,1,0,1,1,1,2,1,0 1,1,3,2,0,3,2,4,1,1,1,1,1,1 2,2,0,3,0,4,2,0,1,1,1,1,1,1 0,0,0,3,2,4,1,0,0,1,1,0,1,0 1,5,10,3,2,5,3,0,0,1,1,0,1,0 0,0,0,3,0,3,2,0,1,1,1,0,1,1 0,4,0,3,2,5,1,2,1,1,1,2,1,0 0,0,1,2,2,5,3,4,0,1,1,0,1,0 1,4,0,3,0,12,2,0,1,1,1,0,1,1 0,5,0,3,2,5,3,0,0,1,1,0,1,0 0,0,2,1,2,10,1,0,1,1,1,2,1,0 1,0,7,1,1,6,5,0,0,1,1,0,1,0 1,5,3,2,0,12,2,0,1,1,1,0,1,0 2,4,1,2,0,12,2,0,1,1,1,1,1,0 0,0,3,2,0,8,0,0,0,1,1,0,1,0 1,0,5,2,2,8,3,0,0,1,1,1,1,0 0,0,1,2,2,6,1,1,1,1,1,2,1,0 0,0,1,2,3,2,5,1,0,1,1,0,1,0 0,0,1,2,2,11,3,0,0,1,1,2,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,0 1,1,0,3,0,1,2,0,1,1,1,2,1,0 0,0,10,3,0,0,2,0,1,1,1,2,1,0 2,0,1,2,0,12,2,0,1,1,1,0,1,0 1,1,3,2,0,4,2,0,1,1,1,0,1,0 1,0,3,2,0,3,2,0,1,1,1,1,1,1 0,0,12,1,2,2,1,0,0,1,1,2,1,0 0,0,3,2,0,8,2,2,1,1,1,0,1,1 1,0,0,3,2,4,3,0,1,1,1,1,1,1 1,0,0,3,0,5,2,0,1,1,1,0,1,0 0,0,1,2,0,6,2,0,1,1,1,0,1,0 2,0,12,1,1,1,3,0,1,1,1,1,1,0 1,0,1,2,3,8,5,4,0,1,1,1,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,3,1,3,0,1,1,1,1,1,0 0,1,0,3,0,1,2,0,1,1,1,0,1,1 1,0,3,2,0,7,0,0,0,1,1,0,1,0 2,1,5,2,5,9,5,2,1,1,1,0,1,0 0,0,2,1,1,1,5,0,1,1,1,0,1,0 1,0,3,2,1,1,1,0,1,1,1,0,1,0 0,0,3,2,0,3,2,0,1,1,1,0,1,1 0,0,3,2,2,7,1,0,1,1,1,0,1,0 1,3,3,2,0,8,0,0,0,1,1,2,1,1 1,0,3,2,3,8,1,1,0,1,1,0,1,0 1,0,3,2,1,1,3,1,1,1,1,0,1,1 1,0,1,2,1,3,5,0,0,1,1,0,1,0 0,1,3,2,2,9,1,0,1,1,1,2,1,0 0,0,3,2,2,8,3,0,0,1,1,0,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,0,3,0,5,2,0,1,1,1,0,1,1 1,0,0,3,0,3,2,0,1,1,1,0,1,1 1,1,8,0,2,9,1,0,1,1,1,1,1,0 1,0,10,3,0,4,2,0,1,1,1,0,1,0 1,1,4,3,0,5,2,0,1,1,1,1,1,1 0,0,14,0,2,11,3,0,0,1,1,0,1,0 1,5,10,3,0,5,2,0,1,1,1,2,1,1 1,0,11,0,0,9,2,0,1,1,1,0,1,0 2,1,11,0,0,1,2,0,1,1,1,2,1,0 2,0,8,0,0,1,2,0,1,1,1,0,1,0 0,0,1,2,3,8,3,4,1,1,1,0,1,0 1,0,3,2,1,10,5,0,1,1,1,1,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 0,4,1,2,1,8,5,0,0,1,1,1,1,0 1,0,12,1,0,2,0,0,0,1,1,2,1,0 1,0,10,3,2,4,3,0,0,1,1,2,1,0 0,0,0,3,0,6,2,1,1,1,1,0,1,0 2,0,0,3,0,1,2,1,1,1,1,0,1,0 0,0,1,2,2,2,3,0,0,1,1,1,1,1 1,2,1,2,0,4,2,1,1,1,1,1,1,0 2,0,12,1,1,6,3,0,0,1,1,2,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,1,2,2,2,1,0,0,1,1,0,1,0 0,0,3,2,0,10,2,4,1,1,1,0,1,0 1,3,1,2,1,8,5,0,0,1,1,0,1,0 0,0,3,2,1,8,3,0,0,1,1,1,1,0 1,1,3,2,0,9,2,0,1,1,1,1,1,0 1,0,1,2,2,8,1,0,0,1,1,2,1,0 1,0,13,3,2,5,3,0,1,1,1,2,1,1 1,0,0,3,0,5,2,0,1,1,1,1,1,1 0,0,1,2,1,6,3,0,1,1,1,1,1,0 2,0,0,3,0,3,2,0,1,1,1,0,1,1 2,0,3,2,2,6,3,4,1,1,1,0,1,0 0,0,1,2,0,3,2,0,1,1,1,1,1,1 0,0,1,2,2,2,3,0,0,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 0,2,1,2,0,3,2,0,1,1,1,1,1,1 1,0,0,3,0,4,2,4,1,1,1,2,1,1 0,0,0,3,2,8,3,0,1,1,1,2,1,0 1,0,0,3,2,8,3,0,0,1,1,1,1,0 0,0,0,3,2,3,1,0,1,1,1,2,1,0 0,0,3,2,0,10,2,3,1,1,1,1,1,0 0,0,3,2,0,6,2,0,1,1,1,0,1,0 3,0,3,2,0,9,2,0,1,1,1,1,1,0 1,0,6,2,0,7,2,0,1,1,1,0,1,1 0,0,0,3,0,4,0,0,0,1,1,1,1,1 1,0,0,3,0,4,2,0,1,1,1,1,1,0 1,0,3,2,1,1,3,0,1,1,1,1,1,0 0,0,1,2,2,8,1,0,0,1,1,2,1,0 0,0,1,2,2,10,1,0,1,1,1,2,1,0 3,1,8,0,0,1,2,0,1,1,1,2,1,0 0,0,1,2,2,10,3,4,1,1,1,0,1,0 2,1,1,2,0,3,2,0,1,1,1,1,1,0 0,0,1,2,0,7,2,0,1,1,1,0,1,1 0,0,1,2,0,1,2,0,1,1,1,1,1,0 0,0,1,2,1,7,3,0,1,1,1,1,1,0 1,0,5,2,0,4,2,0,1,1,1,1,1,1 1,0,6,2,1,3,5,0,0,1,1,0,1,0 0,0,3,2,2,1,3,0,1,1,1,0,1,0 0,0,3,2,2,8,3,3,0,1,1,0,1,0 0,0,3,2,0,6,2,0,1,1,1,1,1,0 1,0,3,2,0,12,2,0,1,1,1,0,1,0 1,0,3,2,0,8,2,0,1,1,1,1,1,0 2,0,8,0,4,7,5,3,0,1,1,0,1,0 1,0,1,2,4,3,3,0,0,1,1,0,1,0 0,0,0,3,2,5,3,0,0,1,1,0,1,0 1,0,1,2,2,4,5,0,0,1,1,1,1,0 1,0,3,2,0,10,2,0,1,1,1,0,1,1 1,0,0,3,0,2,2,1,1,1,1,2,1,0 0,1,1,2,0,8,0,0,0,1,1,1,1,1 2,1,3,2,0,9,2,0,1,1,1,1,1,0 1,2,1,2,0,4,2,0,1,1,1,1,1,0 0,1,3,2,0,9,2,0,1,1,1,0,1,0 0,1,3,2,0,10,2,0,1,1,1,0,1,0 2,4,1,2,4,8,5,0,0,1,1,0,1,0 2,1,0,3,0,9,2,0,1,1,1,2,1,0 0,0,4,3,0,5,0,1,0,1,1,1,1,1 0,0,0,3,2,4,3,0,0,1,1,2,1,0 1,0,3,2,2,8,3,0,0,1,1,0,1,0 1,0,6,2,0,4,2,0,1,1,1,1,1,1 1,4,0,3,0,4,2,4,1,1,1,1,1,1 2,0,7,1,1,3,3,0,1,1,1,2,1,0 0,0,1,2,2,3,1,0,1,1,1,1,1,0 0,0,1,2,2,3,3,0,1,1,1,1,1,0 1,0,6,2,0,1,2,0,1,1,1,0,1,0 2,4,3,2,1,8,3,0,0,1,1,0,1,1 3,0,0,3,0,3,2,0,1,1,1,2,1,1 0,0,3,2,1,8,5,0,0,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 1,0,12,1,1,1,4,4,1,1,1,0,1,0 2,2,1,2,0,4,2,0,1,1,1,1,1,1 2,0,14,0,0,10,2,0,1,1,1,0,1,0 0,1,4,3,2,5,3,0,0,1,1,1,1,1 1,1,2,1,0,4,2,0,1,1,1,1,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,1 1,2,3,2,0,3,2,0,1,1,1,1,1,1 1,0,14,0,0,1,2,0,1,1,1,1,1,0 0,0,1,2,2,0,3,0,0,1,1,0,1,0 0,0,1,2,0,3,2,4,1,1,1,2,1,0 1,0,3,2,0,6,2,0,1,1,1,0,1,0 0,0,4,3,0,5,2,0,1,1,1,1,1,1 1,0,0,3,1,3,5,0,1,1,1,1,1,1 0,0,3,2,0,10,2,0,1,1,1,1,1,0 0,0,1,2,2,8,1,1,1,1,1,2,1,0 1,0,6,2,3,8,3,1,1,1,1,0,1,0 0,0,1,2,0,1,2,4,1,1,1,0,1,1 0,0,14,0,2,6,3,0,1,1,1,2,1,0 1,0,2,1,3,2,5,0,0,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,0,6,2,0,1,1,1,1,1,0 2,1,11,0,0,10,2,0,1,1,1,2,1,0 1,1,3,2,1,3,3,0,1,1,1,0,1,0 0,0,3,2,2,6,3,0,1,1,1,1,1,0 1,0,5,2,2,5,5,0,0,1,1,2,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,1 2,0,0,3,0,7,2,0,1,1,1,0,1,1 0,0,12,1,2,7,3,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,1 0,2,13,3,2,5,1,0,1,1,1,0,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 1,0,3,2,1,6,4,0,1,1,1,0,1,0 0,0,1,2,2,3,4,0,0,1,1,0,1,0 1,5,4,3,2,5,3,0,0,1,1,1,1,1 2,0,3,2,0,10,2,0,1,1,1,0,1,1 2,0,0,3,0,3,2,4,1,1,1,1,1,1 1,0,1,2,1,4,3,1,0,1,1,0,1,1 1,0,11,0,5,9,5,0,1,1,1,0,1,0 2,0,8,0,0,7,2,0,1,1,1,1,1,0 0,0,1,2,2,6,3,0,1,1,1,2,1,0 0,1,0,3,0,3,2,0,1,1,1,1,1,1 1,0,3,2,0,3,2,0,1,1,1,1,1,1 0,0,1,2,0,7,2,0,1,1,1,0,1,1 1,1,3,2,0,4,2,0,1,1,1,1,1,1 0,0,2,1,0,7,2,0,1,1,1,1,1,0 1,0,6,2,0,3,2,0,1,1,1,0,1,1 1,0,1,2,0,6,2,0,1,1,1,1,1,0 1,0,1,2,0,4,2,0,1,1,1,1,1,1 1,0,3,2,0,1,2,0,1,1,1,0,1,1 1,4,3,2,0,4,2,0,1,1,1,1,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,1 0,0,3,2,2,8,3,0,0,1,1,2,1,0 0,5,12,1,0,8,2,0,1,1,1,0,1,0 0,0,3,2,0,2,2,4,1,1,1,2,1,0 0,0,1,2,2,6,1,0,1,1,1,2,1,0 0,0,3,2,0,10,2,0,1,1,1,1,1,1 0,0,3,2,2,3,1,0,0,1,1,2,1,0 1,0,0,3,0,0,2,0,1,1,1,0,1,1 0,0,3,2,2,2,3,4,0,1,1,1,1,0 0,0,1,2,2,11,1,0,0,1,1,0,1,0 1,0,6,2,1,0,1,0,1,1,1,0,1,0 0,3,0,3,2,5,1,4,0,1,1,0,1,0 0,0,14,0,0,2,2,0,1,1,1,2,1,0 0,0,6,2,2,4,3,4,0,1,1,2,1,0 0,0,9,1,2,7,1,0,1,1,1,1,1,0 2,0,3,2,1,5,5,4,0,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 0,0,0,3,2,5,1,0,1,1,1,0,1,0 0,0,3,2,1,3,5,0,0,1,1,2,1,0 1,0,3,2,5,4,3,0,0,1,1,1,1,0 0,0,3,2,2,6,1,0,1,1,1,0,1,0 3,0,0,3,4,2,3,0,0,1,1,2,1,0 0,0,7,1,2,3,3,0,1,1,1,0,1,0 0,0,0,3,0,5,2,0,1,1,1,0,1,0 0,5,1,2,2,0,1,0,0,1,1,1,1,0 1,0,4,3,0,5,2,0,1,1,1,1,1,1 0,0,1,2,0,8,2,0,1,1,1,0,1,1 0,0,3,2,2,8,1,0,0,1,1,0,1,0 0,1,4,3,0,5,2,0,1,1,1,1,1,1 1,5,0,3,0,4,2,0,1,1,1,0,1,1 0,0,4,3,2,5,3,0,1,1,1,1,1,0 1,0,3,2,0,1,2,3,1,1,1,0,1,0 0,0,6,2,0,9,2,0,1,1,1,0,1,1 1,0,7,1,0,7,4,1,0,1,1,1,1,0 1,0,3,2,2,2,3,4,1,1,1,0,1,0 0,5,9,1,2,8,3,4,0,1,1,0,1,0 2,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,3,2,0,6,2,0,1,1,1,0,1,0 1,1,0,3,0,4,2,3,1,1,1,1,1,1 1,0,1,2,3,8,3,0,0,1,1,0,1,0 2,0,6,2,0,10,2,0,1,1,1,2,1,0 1,0,3,2,0,3,2,0,1,1,1,1,1,0 0,0,6,2,2,8,1,0,0,1,1,1,1,0 0,0,1,2,2,5,1,0,0,1,1,1,1,0 0,0,5,2,2,8,3,0,1,1,1,0,1,0 1,2,0,3,0,4,2,0,1,1,1,1,1,1 0,1,12,1,2,7,1,0,1,1,1,0,1,0 0,0,6,2,2,2,4,4,1,1,1,0,1,0 3,5,3,2,4,8,3,0,0,1,1,0,1,0 2,0,3,2,0,12,2,0,1,1,1,2,1,0 2,0,0,3,1,4,3,0,1,1,1,1,1,1 0,0,6,2,0,1,2,0,1,1,1,0,1,0 1,0,1,2,1,7,3,0,1,1,1,0,1,0 0,0,3,2,0,2,2,4,1,1,1,0,1,0 1,0,3,2,2,2,3,0,1,1,1,0,1,0 0,0,1,2,0,4,2,0,1,1,1,1,1,0 0,0,12,1,2,8,5,0,0,1,1,0,1,0 2,0,10,3,0,4,2,0,1,1,1,0,1,1 0,0,3,2,2,8,5,0,1,1,1,0,1,0 2,2,1,2,0,4,2,0,1,1,1,1,1,1 0,4,12,1,2,2,3,0,1,1,1,0,1,0 0,5,1,2,0,12,2,0,1,1,1,0,1,0 0,0,2,1,0,10,2,0,1,1,1,0,1,0 0,4,10,3,2,5,3,0,0,1,1,0,1,0 0,0,0,3,2,3,3,0,1,1,1,0,1,0 0,0,12,1,0,7,2,0,1,1,1,1,1,0 0,0,3,2,2,7,3,0,1,1,1,0,1,0 1,1,5,2,0,8,0,0,0,1,1,0,1,1 2,0,1,2,1,8,5,0,0,1,1,0,1,0 2,1,1,2,2,3,3,0,0,1,1,2,1,0 1,0,0,3,2,9,3,0,1,1,1,0,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,1 1,0,3,2,0,1,2,0,1,1,1,0,1,0 2,1,10,3,0,3,2,0,1,1,1,1,1,1 0,5,0,3,2,5,3,0,1,1,1,0,1,0 1,0,0,3,2,5,3,0,0,1,1,0,1,0 0,5,1,2,2,5,1,0,1,1,1,2,1,0 0,0,1,2,2,10,3,0,1,1,1,1,1,0 1,3,1,2,0,8,2,4,1,1,1,0,1,1 1,0,1,2,0,3,4,0,1,1,1,0,1,0 1,0,0,3,1,4,3,0,1,1,1,0,1,0 0,0,3,2,2,2,3,0,1,1,1,0,1,0 0,0,1,2,2,1,1,0,0,1,1,1,1,0 0,0,12,1,2,6,4,3,1,1,1,0,1,0 0,0,10,3,1,3,1,0,0,1,1,0,1,0 0,0,3,2,5,1,3,0,1,1,1,0,1,0 0,0,2,1,0,1,2,0,1,1,1,0,1,0 0,0,3,2,2,2,5,4,0,1,1,0,1,0 1,0,0,3,0,5,2,4,1,1,1,0,1,1 0,1,3,2,0,9,2,0,1,1,1,1,1,0 0,0,1,2,2,3,1,0,1,1,1,2,1,0 2,0,13,3,0,5,2,0,1,1,1,1,1,1 1,0,12,1,2,6,5,0,1,1,1,1,1,0 0,2,3,2,2,2,5,1,0,1,1,2,1,0 0,0,1,2,0,1,2,0,1,1,1,0,1,1 1,0,10,3,0,4,2,0,1,1,1,1,1,1 1,1,10,3,1,5,5,0,1,1,1,1,1,1 1,0,1,2,1,8,3,0,1,1,1,0,1,0 0,5,1,2,2,2,1,0,0,1,1,2,1,0 1,4,3,2,0,1,2,0,1,1,1,1,1,1 2,0,14,0,2,2,3,0,1,1,1,0,1,0 0,0,1,2,0,3,2,0,1,1,1,0,1,0 2,0,2,1,0,3,2,0,1,1,1,2,1,0 0,0,6,2,2,8,3,0,0,1,1,0,1,0 2,0,3,2,0,6,2,0,1,1,1,0,1,1 2,1,8,0,0,9,2,0,1,1,1,1,1,0 0,0,0,3,0,5,2,0,1,1,1,0,1,0 1,4,4,3,2,5,3,0,1,1,1,0,1,1 1,0,10,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,2,3,1,0,0,1,1,0,1,0 1,3,3,2,0,1,2,0,1,1,1,0,1,1 0,0,3,2,2,8,3,4,0,1,1,2,1,0 0,5,3,2,0,12,2,0,1,1,1,0,1,0 0,0,3,2,2,8,5,0,0,1,1,2,1,0 1,0,3,2,1,10,3,0,1,1,1,0,1,0 2,0,1,2,0,3,0,0,0,1,1,2,1,0 0,0,3,2,2,3,3,0,0,1,1,2,1,0 0,0,2,1,0,4,2,0,1,1,1,1,1,0 0,0,3,2,2,6,3,0,1,1,1,1,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,0 1,0,1,2,0,2,0,0,0,1,1,2,1,0 0,4,0,3,2,5,3,0,0,1,1,0,1,0 1,4,10,3,2,5,3,0,0,1,1,0,1,0 3,0,0,3,0,3,2,0,1,1,1,2,1,0 0,0,3,2,0,2,0,0,0,1,1,0,1,1 1,4,0,3,0,5,2,0,1,1,1,0,1,1 0,1,6,2,2,1,3,0,1,1,1,0,1,0 1,0,1,2,4,4,3,0,0,1,1,0,1,1 1,0,1,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,2,8,3,0,1,1,1,0,1,0 0,0,1,2,0,6,2,0,1,1,1,0,1,1 0,0,1,2,2,3,1,0,0,1,1,2,1,0 0,0,2,1,2,4,5,0,0,1,1,1,1,0 0,0,1,2,2,8,1,0,0,1,1,2,1,0 1,0,6,2,0,8,2,0,1,1,1,0,1,1 0,0,0,3,0,4,2,0,1,1,1,1,1,1 2,0,3,2,0,1,2,0,1,1,1,1,1,1 0,4,10,3,4,5,3,0,0,1,1,0,1,0 1,0,1,2,0,3,2,0,1,1,1,1,1,1 0,0,2,1,3,7,4,0,1,1,1,2,1,0 0,0,0,3,0,5,2,0,1,1,1,1,1,1 1,0,6,2,2,0,3,0,1,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,1,1,0 1,0,1,2,0,2,2,0,1,1,1,0,1,1 0,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,0,3,2,4,3,0,1,1,1,2,1,0 1,1,1,2,0,2,2,0,1,1,1,0,1,1 1,0,3,2,0,7,2,0,1,1,1,0,1,0 1,0,1,2,0,4,2,0,1,1,1,1,1,0 0,0,1,2,2,8,5,0,1,1,1,0,1,0 1,5,13,3,0,5,2,0,1,1,1,1,1,1 0,0,0,3,2,5,3,0,1,1,1,2,1,0 1,0,3,2,2,10,3,2,1,1,1,0,1,0 1,0,0,3,0,3,2,0,1,1,1,0,1,1 0,0,4,3,0,5,2,0,1,1,1,1,1,1 2,1,8,0,0,10,2,0,1,1,1,0,1,1 0,0,0,3,0,2,0,0,0,1,1,2,1,0 0,0,3,2,3,2,5,0,0,1,1,0,1,0 0,0,5,2,2,5,3,0,0,1,1,0,1,0 1,0,0,3,0,0,2,0,1,1,1,1,1,1 1,3,3,2,0,8,2,4,1,1,1,1,1,1 2,0,8,0,4,9,4,0,0,1,1,1,1,0 0,0,3,2,2,6,3,0,0,1,1,0,1,0 0,0,3,2,2,6,1,0,1,1,1,0,1,0 0,0,3,2,2,2,5,0,0,1,1,0,1,0 0,1,10,3,0,4,0,0,0,1,1,2,1,1 0,3,3,2,2,5,3,0,1,1,1,0,1,0 2,5,3,2,0,8,2,4,1,1,1,0,1,1 1,4,0,3,0,1,2,1,1,1,1,0,1,0 1,0,3,2,0,3,2,0,1,1,1,2,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,0,3,0,4,2,0,1,1,1,0,1,1 0,0,3,2,2,5,5,0,0,1,1,1,1,0 2,0,3,2,3,8,3,0,0,1,1,0,1,0 1,0,2,1,1,6,3,0,1,1,1,0,1,0 0,0,3,2,2,5,3,0,0,1,1,0,1,0 1,0,3,2,2,0,4,0,1,1,1,1,1,0 1,0,2,1,0,1,2,0,1,1,1,0,1,0 0,4,5,2,0,12,2,0,1,1,1,0,1,0 1,0,3,2,4,3,5,2,0,1,1,0,1,0 1,0,10,3,2,5,3,0,0,1,1,2,1,1 1,0,0,3,0,3,2,0,1,1,1,0,1,1 0,0,3,2,0,3,2,0,1,1,1,1,1,0 0,0,12,1,2,2,5,4,0,1,1,0,1,0 0,0,8,0,0,1,2,0,1,1,1,0,1,0 2,5,0,3,0,4,2,0,1,1,1,0,1,1 1,0,3,2,0,10,2,0,1,1,1,0,1,0 0,0,0,3,2,0,3,0,0,1,1,1,1,0 1,3,1,2,0,6,2,0,1,1,1,1,1,1 0,0,1,2,2,1,3,0,1,1,1,0,1,0 1,4,3,2,1,8,5,0,0,1,1,0,1,0 0,0,9,1,3,5,1,0,0,1,1,0,1,0 0,0,3,2,2,8,1,0,0,1,1,0,1,0 1,0,3,2,0,3,2,4,1,1,1,0,1,1 1,0,0,3,0,1,2,0,1,1,1,1,1,1 0,0,1,2,2,3,4,0,0,1,1,2,1,0 1,0,5,2,2,7,3,4,0,1,1,1,1,1 1,0,3,2,0,1,2,0,1,1,1,0,1,0 0,5,3,2,0,1,2,0,1,1,1,0,1,1 1,4,1,2,1,4,5,4,0,1,1,1,1,0 0,0,3,2,0,2,0,4,0,1,1,2,1,0 0,0,3,2,2,10,1,0,1,1,1,1,1,0 1,0,0,3,1,1,5,0,1,1,1,2,1,0 1,0,14,0,0,2,2,3,1,1,1,0,1,0 1,0,3,2,1,8,3,0,0,1,1,0,1,0 2,3,1,2,0,8,2,0,1,1,1,0,1,1 0,0,0,3,2,3,3,0,1,1,1,1,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,0 0,6,3,2,2,9,1,0,1,1,1,2,1,0 0,5,2,1,1,2,5,0,0,1,1,0,1,0 2,0,12,1,0,10,2,0,1,1,1,0,1,0 0,1,3,2,0,4,2,0,1,1,1,1,1,0 1,0,12,1,1,2,3,0,0,1,1,1,1,0 0,0,3,2,3,6,5,0,0,1,1,0,1,0 0,3,10,3,2,5,3,0,1,1,1,0,1,0 0,0,9,1,2,2,1,0,1,1,1,2,1,0 2,1,3,2,0,3,2,0,1,1,1,0,1,1 1,4,3,2,0,4,2,2,1,1,1,1,1,0 0,0,2,1,1,10,3,0,1,1,1,0,1,0 0,4,1,2,0,4,2,0,1,1,1,0,1,1 1,0,3,2,0,0,2,0,1,1,1,1,1,1 1,0,3,2,0,3,2,0,1,1,1,0,1,0 0,0,3,2,2,2,1,0,1,1,1,0,1,0 0,0,1,2,2,3,1,0,0,1,1,0,1,0 0,0,0,3,0,5,2,0,1,1,1,1,1,1 2,1,0,3,0,4,2,0,1,1,1,0,1,1 0,0,1,2,2,2,3,0,1,1,1,2,1,0 1,4,10,3,0,5,2,0,1,1,1,1,1,0 0,3,0,3,2,5,3,3,0,1,1,0,1,0 1,0,0,3,1,0,3,0,0,1,1,0,1,0 0,0,3,2,0,7,0,0,0,1,1,0,1,1 1,1,1,2,0,1,2,0,1,1,1,0,1,0 1,0,8,0,1,3,5,0,0,1,1,0,1,0 1,0,3,2,0,4,2,0,1,1,1,0,1,0 1,0,12,1,1,1,3,0,1,1,1,0,1,0 0,0,1,2,0,1,2,0,1,1,1,1,1,0 2,0,14,0,0,3,2,0,1,1,1,1,1,0 0,0,3,2,2,8,3,4,0,1,1,0,1,0 1,0,0,3,3,2,3,0,0,1,1,1,1,0 0,5,3,2,0,1,2,0,1,1,1,0,1,0 0,0,5,2,2,4,3,0,0,1,1,1,1,0 2,0,2,1,0,2,0,0,0,1,1,2,1,0 2,0,3,2,4,2,5,0,0,1,1,2,1,0 1,0,8,0,0,10,2,0,1,1,1,1,1,0 1,0,3,2,1,8,3,0,0,1,1,0,1,0 1,0,0,3,2,4,3,0,1,1,1,1,1,0 0,1,5,2,0,1,2,0,1,1,1,0,1,0 1,0,1,2,1,8,3,0,0,1,1,2,1,0 0,0,0,3,2,4,3,0,1,1,1,0,1,0 1,1,0,3,0,5,2,0,1,1,1,0,1,0 1,0,3,2,3,1,5,4,0,1,1,0,1,0 0,0,1,2,2,2,1,0,1,1,1,2,1,0 2,2,0,3,0,5,2,0,1,1,1,0,1,0 1,1,0,3,0,9,2,0,1,1,1,2,1,0 0,3,3,2,2,8,4,0,1,1,1,2,1,0 0,0,3,2,2,2,3,0,1,1,1,0,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,1 0,1,1,2,2,1,3,0,1,1,1,1,1,0 1,0,0,3,3,3,3,0,1,1,1,0,1,0 1,0,3,2,0,5,2,0,1,1,1,1,1,0 1,0,0,3,0,3,2,0,1,1,1,1,1,1 1,0,1,2,0,4,2,0,1,1,1,0,1,0 1,0,3,2,1,1,3,0,1,1,1,0,1,1 0,0,1,2,1,2,3,0,1,1,1,2,1,0 1,0,5,2,2,8,5,4,0,1,1,0,1,0 1,0,1,2,0,4,0,0,0,1,1,1,1,0 1,0,12,1,5,10,3,4,1,1,1,1,1,0 0,0,3,2,1,1,1,0,1,1,1,0,1,0 1,0,10,3,2,5,5,1,1,1,1,0,1,0 1,0,3,2,0,8,2,0,1,1,1,0,1,0 0,1,3,2,0,3,2,0,1,1,1,1,1,0 0,2,1,2,0,3,2,0,1,1,1,1,1,1 0,0,1,2,2,5,1,0,1,1,1,2,1,0 1,1,0,3,0,9,2,0,1,1,1,1,1,0 1,1,0,3,5,5,3,0,1,1,1,2,1,0 0,4,1,2,2,8,1,4,1,1,1,0,1,0 0,0,6,2,2,1,3,0,1,1,1,2,1,0 0,0,1,2,2,2,3,0,0,1,1,2,1,0 1,0,13,3,2,4,3,0,1,1,1,0,1,1 0,0,1,2,2,8,3,4,0,1,1,0,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,7,1,2,7,3,0,1,1,1,0,1,0 1,0,3,2,1,3,5,0,0,1,1,2,1,0 0,0,8,0,0,7,2,0,1,1,1,0,1,0 1,0,6,2,2,1,1,0,1,1,1,0,1,0 0,0,3,2,0,3,2,0,1,1,1,0,1,0 0,5,1,2,2,12,3,0,1,1,1,0,1,0 0,0,5,2,0,4,2,0,1,1,1,0,1,0 1,0,1,2,1,3,5,0,0,1,1,0,1,0 0,0,1,2,2,8,1,0,1,1,1,2,1,0 0,0,1,2,2,2,1,0,1,1,1,2,1,0 0,3,0,3,0,12,2,0,1,1,1,1,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,1 0,0,1,2,0,9,2,3,1,1,1,1,1,0 2,0,1,2,0,8,0,0,0,1,1,2,1,1 1,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,1,2,2,3,1,0,0,1,1,2,1,0 1,5,6,2,1,5,5,0,0,1,1,0,1,0 1,5,13,3,0,5,2,0,1,1,1,0,1,1 1,0,10,3,5,5,3,0,1,1,1,0,1,0 1,0,3,2,1,7,1,4,1,1,1,0,1,0 0,0,1,2,2,6,1,0,0,1,1,2,1,0 2,1,3,2,0,3,2,0,1,1,1,1,1,0 1,0,3,2,0,6,2,0,1,1,1,1,1,0 1,0,3,2,1,7,5,4,0,1,1,1,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 0,4,3,2,2,9,1,0,1,1,1,0,1,0 1,0,3,2,0,2,2,0,1,1,1,0,1,0 2,0,3,2,0,7,2,0,1,1,1,0,1,1 1,0,3,2,1,4,3,0,1,1,1,1,1,0 0,0,3,2,2,7,5,0,0,1,1,0,1,0 1,0,0,3,2,8,3,0,0,1,1,1,1,0 1,0,9,1,1,6,3,0,1,1,1,0,1,0 0,0,3,2,2,7,1,1,1,1,1,0,1,0 2,0,0,3,0,5,2,0,1,1,1,0,1,1 1,0,0,3,0,5,2,0,1,1,1,1,1,0 2,0,1,2,0,4,0,0,0,1,1,2,1,0 2,0,2,1,0,1,2,0,1,1,1,2,1,0 1,0,3,2,0,3,2,0,1,1,1,0,1,0 2,0,1,2,4,8,5,0,0,1,1,0,1,0 1,0,1,2,0,4,2,0,1,1,1,0,1,1 0,0,3,2,0,6,2,0,1,1,1,0,1,0 1,0,1,2,2,0,5,4,0,1,1,0,1,0 0,0,3,2,2,2,1,0,1,1,1,0,1,0 0,0,3,2,0,2,2,0,1,1,1,1,1,0 0,0,0,3,2,3,5,0,1,1,1,1,1,0 0,3,5,2,2,4,1,0,0,1,1,0,1,0 0,0,3,2,2,2,1,0,1,1,1,2,1,0 1,1,3,2,0,4,2,0,1,1,1,2,1,1 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,0,12,2,0,1,1,1,1,1,0 0,4,3,2,1,1,5,0,1,1,1,0,1,0 2,0,14,0,0,1,2,0,1,1,1,0,1,0 1,0,1,2,0,10,2,0,1,1,1,1,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,1 1,0,3,2,0,1,2,0,1,1,1,0,1,1 0,0,2,1,2,2,1,0,0,1,1,2,1,0 0,0,3,2,2,3,1,0,0,1,1,0,1,0 2,0,3,2,0,3,2,0,1,1,1,1,1,0 1,0,1,2,0,3,2,0,1,1,1,1,1,0 0,1,3,2,2,9,1,0,1,1,1,1,1,0 1,4,0,3,0,5,2,0,1,1,1,1,1,1 1,1,8,0,0,9,2,0,1,1,1,1,1,0 1,5,10,3,2,5,1,0,0,1,1,0,1,0 0,0,3,2,1,2,3,0,1,1,1,0,1,0 0,0,3,2,2,9,1,0,1,1,1,2,1,0 2,4,1,2,0,2,2,1,1,1,1,1,1,0 1,4,7,1,2,2,1,0,1,1,1,0,1,0 0,0,1,2,2,0,1,0,1,1,1,2,1,0 1,0,3,2,1,10,3,0,1,1,1,1,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,0 0,0,3,2,2,4,3,4,1,1,1,2,1,0 0,0,1,2,2,8,1,0,1,1,1,0,1,0 0,0,1,2,2,6,1,0,0,1,1,2,1,0 0,0,5,2,1,3,3,0,1,1,1,1,1,0 2,0,1,2,0,4,2,0,1,1,1,0,1,0 0,1,4,3,2,5,1,0,1,1,1,2,1,0 1,3,0,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,0,3,1,5,5,0,0,1,1,2,1,0 0,0,3,2,1,3,3,0,1,1,1,0,1,0 1,0,3,2,1,3,3,0,0,1,1,1,1,0 2,0,0,3,0,8,0,0,0,1,1,2,1,1 0,0,3,2,2,4,1,0,1,1,1,0,1,0 1,4,1,2,1,8,3,4,0,1,1,0,1,0 2,0,0,3,0,5,2,0,1,1,1,0,1,1 2,0,8,0,1,7,1,0,1,1,1,0,1,0 1,2,3,2,0,1,2,0,1,1,1,1,1,0 0,0,3,2,1,1,5,0,1,1,1,0,1,0 0,0,0,3,0,5,2,0,1,1,1,0,1,0 0,0,3,2,0,10,2,0,1,1,1,2,1,0 0,0,1,2,2,2,1,0,1,1,1,1,1,0 2,0,8,0,0,1,2,0,1,1,1,0,1,0 2,2,10,3,4,3,3,0,0,1,1,0,1,0 1,0,3,2,1,0,3,0,0,1,1,1,1,0 1,0,1,2,0,10,2,0,1,1,1,1,1,0 0,0,3,2,2,10,3,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,0,3,2,3,3,0,0,1,1,0,1,0 2,0,12,1,0,10,2,0,1,1,1,0,1,1 1,2,0,3,0,4,2,0,1,1,1,1,1,0 1,0,3,2,4,11,3,1,0,1,1,1,1,0 0,0,10,3,0,7,2,0,1,1,1,1,1,0 1,0,3,2,0,4,2,0,1,1,1,0,1,0 1,0,2,1,0,1,2,0,1,1,1,0,1,0 1,0,3,2,1,8,5,0,0,1,1,2,1,0 0,0,14,0,2,1,4,0,1,1,1,0,1,0 1,1,3,2,0,7,0,0,0,1,1,1,1,0 1,0,3,2,1,12,5,0,0,1,1,0,1,0 2,0,1,2,0,1,2,0,1,1,1,0,1,1 0,1,3,2,2,9,3,0,1,1,1,1,1,0 0,0,3,2,0,1,2,0,1,1,1,1,1,0 0,0,0,3,0,4,2,0,1,1,1,0,1,1 1,4,10,3,0,5,2,4,1,1,1,2,1,1 0,0,3,2,2,6,1,0,1,1,1,2,1,0 0,0,6,2,2,12,1,4,1,1,1,0,1,0 0,0,1,2,2,2,3,1,0,1,1,0,1,0 2,0,3,2,1,6,3,4,1,1,1,0,1,0 0,0,1,2,2,1,3,0,1,1,1,2,1,0 1,5,1,2,2,8,3,0,0,1,1,0,1,0 0,0,1,2,2,8,1,0,1,1,1,2,1,0 0,0,1,2,2,8,3,0,1,1,1,2,1,0 0,5,1,2,0,8,2,1,1,1,1,0,1,0 2,1,1,2,0,3,0,0,0,1,1,1,1,0 1,0,3,2,0,4,2,0,1,1,1,1,1,1 1,0,3,2,0,10,2,0,1,1,1,0,1,0 0,0,1,2,2,2,3,0,1,1,1,2,1,0 1,5,10,3,0,5,0,0,0,1,1,2,1,1 0,1,0,3,0,5,0,0,0,1,1,2,1,1 0,0,1,2,2,7,4,1,1,1,1,0,1,0 3,4,3,2,4,4,3,0,0,1,1,2,1,0 1,0,1,2,1,1,4,0,1,1,1,1,1,0 1,0,0,3,2,3,3,0,0,1,1,0,1,0 1,0,1,2,1,10,1,0,1,1,1,0,1,0 1,0,1,2,1,4,5,0,0,1,1,0,1,0 2,1,1,2,0,3,2,0,1,1,1,2,1,0 1,0,3,2,2,10,3,0,1,1,1,1,1,0 1,4,3,2,1,1,5,4,1,1,1,0,1,0 0,4,0,3,0,8,2,0,1,1,1,1,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,0 1,0,2,1,0,2,2,0,1,1,1,0,1,0 0,0,1,2,1,8,5,0,0,1,1,0,1,0 0,0,3,2,0,10,2,4,1,1,1,0,1,0 0,0,0,3,0,4,2,0,1,1,1,2,1,0 2,0,0,3,0,7,2,0,1,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,0 1,0,3,2,5,9,3,0,1,1,1,1,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,3,2,1,2,5,0,0,1,1,1,1,0 1,0,1,2,0,8,2,0,1,1,1,0,1,1 2,1,8,0,0,4,2,0,1,1,1,2,1,0 1,0,1,2,0,7,2,0,1,1,1,1,1,0 0,4,2,1,2,8,1,0,0,1,1,2,1,0 0,0,3,2,2,2,3,0,0,1,1,2,1,0 2,1,3,2,4,2,4,0,0,1,1,2,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 2,0,1,2,0,3,2,0,1,1,1,0,1,0 0,0,0,3,0,5,2,0,1,1,1,2,1,1 0,0,12,1,3,9,5,0,0,1,1,0,1,0 1,4,1,2,1,10,5,0,1,1,1,0,1,0 1,5,3,2,0,10,2,0,1,1,1,2,1,1 0,0,3,2,2,3,3,0,1,1,1,0,1,0 0,0,1,2,0,1,2,0,1,1,1,1,1,0 2,1,3,2,0,2,0,4,0,1,1,2,1,0 1,0,2,1,1,2,3,0,0,1,1,2,1,0 0,0,1,2,2,6,1,0,1,1,1,2,1,0 0,0,1,2,2,7,3,0,0,1,1,0,1,0 0,0,1,2,2,2,3,0,1,1,1,2,1,0 1,4,10,3,2,5,5,0,0,1,1,1,1,0 1,2,1,2,1,4,5,0,0,1,1,1,1,0 1,0,3,2,0,3,2,0,1,1,1,1,1,1 0,4,0,3,2,5,1,0,0,1,1,0,1,0 0,0,10,3,2,5,1,0,0,1,1,0,1,0 0,0,2,1,2,1,3,0,1,1,1,0,1,0 2,0,0,3,1,10,3,0,1,1,1,1,1,0 0,0,3,2,0,4,0,0,0,1,1,1,1,1 1,0,3,2,4,2,5,0,0,1,1,2,1,0 1,2,10,3,0,3,2,0,1,1,1,1,1,1 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,3,2,5,1,0,1,1,1,1,0 1,0,5,2,0,3,2,0,1,1,1,1,1,0 0,0,6,2,2,0,1,0,1,1,1,0,1,0 1,0,3,2,2,1,5,0,1,1,1,0,1,0 2,4,10,3,0,5,2,0,1,1,1,0,1,1 0,0,1,2,2,3,1,0,0,1,1,2,1,0 1,0,1,2,0,8,0,0,0,1,1,0,1,0 1,1,10,3,0,3,2,1,1,1,1,1,1,0 1,0,1,2,0,10,2,0,1,1,1,1,1,0 0,5,1,2,3,2,3,0,0,1,1,2,1,0 1,4,3,2,0,1,2,0,1,1,1,0,1,0 1,4,1,2,1,4,3,0,0,1,1,2,1,0 0,0,3,2,2,2,1,4,1,1,1,2,1,0 1,4,1,2,1,5,1,0,0,1,1,1,1,0 1,0,1,2,1,2,5,0,0,1,1,0,1,0 0,0,3,2,1,1,4,3,1,1,1,0,1,0 1,0,1,2,1,1,3,0,1,1,1,0,1,0 1,0,3,2,3,2,5,0,0,1,1,2,1,0 2,0,1,2,0,10,2,0,1,1,1,1,1,0 0,0,5,2,0,0,2,0,1,1,1,1,1,1 1,3,3,2,1,2,5,4,0,1,1,0,1,0 1,1,3,2,0,1,2,1,1,1,1,1,1,0 1,0,3,2,2,6,5,0,0,1,1,0,1,0 1,5,10,3,2,5,3,0,1,1,1,0,1,0 1,0,3,2,0,8,2,1,1,1,1,1,1,0 1,3,6,2,3,0,3,3,0,1,1,2,1,0 0,1,1,2,2,8,1,0,1,1,1,2,1,0 1,0,10,3,3,3,5,0,0,1,1,1,1,0 1,1,1,2,0,8,0,0,0,1,1,2,1,1 1,4,1,2,1,1,3,0,1,1,1,0,1,0 2,0,0,3,2,4,3,0,0,1,1,1,1,1 0,0,0,3,2,5,1,0,1,1,1,0,1,0 0,0,0,3,0,2,2,0,1,1,1,2,1,0 0,0,1,2,0,3,2,0,1,1,1,0,1,0 1,1,0,3,2,3,3,4,0,1,1,1,1,0 1,0,2,1,2,2,3,0,1,1,1,1,1,0 2,0,3,2,0,4,2,0,1,1,1,0,1,1 3,5,8,0,1,2,3,1,0,1,1,0,1,0 0,0,2,1,0,6,2,0,1,1,1,0,1,0 0,0,0,3,2,8,1,0,0,1,1,0,1,0 1,4,1,2,2,2,5,0,0,1,1,2,1,0 0,0,2,1,2,2,5,4,0,1,1,2,1,0 1,0,7,1,0,10,2,0,1,1,1,2,1,0 0,0,2,1,2,1,3,0,1,1,1,1,1,0 0,0,12,1,0,7,0,0,0,1,1,0,1,0 0,0,3,2,1,8,5,0,0,1,1,2,1,0 0,0,3,2,2,7,4,0,1,1,1,0,1,0 1,0,10,3,1,2,5,0,0,1,1,0,1,0 1,0,1,2,1,8,5,4,0,1,1,0,1,0 0,1,5,2,2,2,3,4,1,1,1,2,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 0,0,12,1,2,3,5,0,0,1,1,2,1,0 1,1,1,2,0,9,2,0,1,1,1,1,1,0 2,0,3,2,4,8,3,0,0,1,1,1,1,0 1,4,10,3,1,5,3,4,0,1,1,0,1,1 1,5,10,3,0,5,2,0,1,1,1,1,1,1 1,0,3,2,1,8,3,4,0,1,1,0,1,0 0,0,1,2,2,2,1,4,0,1,1,0,1,0 1,0,3,2,3,3,3,0,0,1,1,2,1,0 0,0,3,2,3,7,1,4,0,1,1,0,1,0 1,4,1,2,0,6,2,0,1,1,1,0,1,0 2,4,14,0,1,2,4,4,0,1,1,0,1,0 0,3,3,2,1,8,3,0,1,1,1,1,1,0 2,5,3,2,1,8,3,0,0,1,1,2,1,0 1,0,1,2,1,2,1,0,1,1,1,2,1,0 1,4,10,3,2,0,3,4,0,1,1,1,1,1 0,2,1,2,2,4,3,0,1,1,1,1,1,0 1,0,1,2,0,3,2,0,1,1,1,0,1,0 2,0,3,2,0,2,2,0,1,1,1,0,1,0 1,0,3,2,2,10,3,0,1,1,1,1,1,0 0,4,3,2,2,8,1,0,1,1,1,0,1,0 0,0,0,3,2,1,3,0,1,1,1,1,1,1 2,1,1,2,1,1,3,0,1,1,1,1,1,0 0,0,2,1,2,8,1,4,0,1,1,0,1,0 1,0,3,2,0,3,0,0,0,1,1,2,1,0 1,0,6,2,2,5,3,0,0,1,1,2,1,0 1,0,0,3,0,5,2,0,1,1,1,0,1,1 0,0,1,2,2,2,1,0,0,1,1,2,1,0 2,0,12,1,2,2,3,0,1,1,1,2,1,0 2,0,0,3,0,3,2,0,1,1,1,1,1,1 0,0,0,3,2,8,3,0,1,1,1,1,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 2,0,1,2,1,5,5,0,1,1,1,1,1,0 0,0,1,2,1,8,5,0,0,1,1,2,1,0 0,0,3,2,0,3,2,0,1,1,1,1,1,0 1,0,1,2,1,5,3,0,1,1,1,1,1,1 0,0,1,2,2,2,4,0,0,1,1,2,1,0 0,5,0,3,2,8,3,4,0,1,1,2,1,0 1,0,6,2,1,8,3,4,0,1,1,0,1,0 0,4,0,3,5,5,3,0,0,1,1,0,1,0 1,0,14,0,0,9,0,0,0,1,1,0,1,0 0,0,3,2,2,2,3,0,0,1,1,0,1,0 1,0,10,3,0,4,2,0,1,1,1,2,1,1 0,4,3,2,2,12,1,0,1,1,1,0,1,0 1,0,3,2,0,6,2,0,1,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 2,0,0,3,2,9,3,0,1,1,1,2,1,0 1,0,8,0,4,7,3,2,0,1,1,0,1,0 0,0,3,2,2,3,5,4,0,1,1,2,1,0 0,0,0,3,0,7,2,0,1,1,1,0,1,0 1,0,3,2,1,1,3,0,1,1,1,0,1,0 2,0,12,1,0,1,2,0,1,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,13,3,0,5,2,0,1,1,1,0,1,0 1,0,1,2,2,3,3,0,1,1,1,1,1,0 2,0,3,2,0,1,2,0,1,1,1,0,1,0 2,1,1,2,0,3,2,0,1,1,1,2,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 1,0,14,0,5,9,5,0,1,1,1,2,1,0 2,1,8,0,4,2,3,0,0,1,1,1,1,0 0,0,5,2,0,5,2,0,1,1,1,1,1,0 1,0,0,3,0,6,2,4,1,1,1,0,1,1 1,0,3,2,0,4,2,0,1,1,1,0,1,1 0,0,0,3,0,4,0,0,0,1,1,0,1,0 1,0,5,2,0,4,2,0,1,1,1,1,1,1 0,0,0,3,2,8,3,0,1,1,1,2,1,0 1,4,1,2,1,10,5,0,1,1,1,0,1,0 0,0,12,1,2,2,1,0,1,1,1,2,1,0 1,4,0,3,1,5,5,0,1,1,1,1,1,0 0,0,1,2,2,3,1,0,1,1,1,2,1,0 2,0,11,0,0,2,2,3,1,1,1,0,1,0 0,0,3,2,2,8,5,4,1,1,1,2,1,0 1,4,1,2,0,8,2,0,1,1,1,0,1,1 0,0,6,2,0,7,2,0,1,1,1,0,1,0 0,0,1,2,2,3,1,0,1,1,1,2,1,0 0,0,4,3,0,5,2,0,1,1,1,1,1,1 1,0,9,1,2,7,3,0,1,1,1,0,1,0 1,0,3,2,2,7,1,0,0,1,1,0,1,0 0,0,3,2,5,7,3,0,0,1,1,2,1,0 0,0,10,3,2,5,1,0,0,1,1,2,1,0 0,0,2,1,0,1,2,0,1,1,1,0,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,0 0,0,3,2,2,8,1,0,0,1,1,2,1,0 0,0,1,2,2,10,1,0,1,1,1,2,1,0 1,5,0,3,2,8,3,0,0,1,1,0,1,1 1,1,4,3,0,5,2,0,1,1,1,2,1,1 2,4,3,2,0,8,0,0,0,1,1,2,1,0 1,4,6,2,2,8,3,0,0,1,1,1,1,0 2,1,0,3,0,1,2,0,1,1,1,2,1,1 0,0,12,1,2,10,1,1,1,1,1,2,1,0 0,2,3,2,0,3,2,1,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,0,3,2,0,3,0,1,1,1,0,1,0 1,0,2,1,1,7,3,0,1,1,1,1,1,0 0,0,3,2,2,1,3,0,1,1,1,1,1,0 2,5,0,3,0,8,2,0,1,1,1,2,1,1 2,4,1,2,0,8,0,0,0,1,1,2,1,0 0,0,1,2,2,3,3,0,1,1,1,2,1,0 1,0,1,2,0,3,2,0,1,1,1,0,1,1 1,0,7,1,0,10,2,0,1,1,1,1,1,0 0,5,9,1,2,4,3,0,1,1,1,1,1,1 2,1,12,1,0,10,2,0,1,1,1,1,1,0 0,0,0,3,0,3,0,0,0,1,1,1,1,1 0,0,1,2,3,3,5,0,0,1,1,2,1,0 1,0,6,2,0,5,0,0,0,1,1,2,1,0 0,0,1,2,2,0,3,0,0,1,1,0,1,0 0,0,3,2,2,3,1,2,1,1,1,2,1,0 1,1,1,2,0,3,2,0,1,1,1,1,1,0 1,0,3,2,3,7,5,4,0,1,1,0,1,0 0,0,1,2,2,1,1,2,1,1,1,0,1,0 0,0,3,2,1,8,3,0,0,1,1,0,1,0 0,0,10,3,2,5,3,0,0,1,1,1,1,0 1,0,6,2,0,6,2,4,1,1,1,0,1,0 0,0,0,3,0,1,2,0,1,1,1,0,1,0 0,5,5,2,2,8,1,4,0,1,1,2,1,0 1,0,3,2,2,3,3,0,0,1,1,0,1,0 1,0,0,3,0,1,2,0,1,1,1,1,1,0 0,4,0,3,2,5,3,0,0,1,1,0,1,0 1,4,3,2,3,2,3,0,1,1,1,0,1,0 1,0,3,2,1,1,3,0,1,1,1,0,1,0 1,0,1,2,2,4,3,0,1,1,1,0,1,0 1,0,0,3,2,2,5,1,0,1,1,0,1,0 0,0,0,3,0,5,2,0,1,1,1,1,1,1 0,0,3,2,1,2,5,0,0,1,1,2,1,0 0,0,0,3,0,4,0,0,0,1,1,1,1,1 2,0,0,3,0,7,2,0,1,1,1,0,1,0 1,1,3,2,1,10,3,0,1,1,1,0,1,0 1,1,4,3,0,5,2,0,1,1,1,1,1,1 1,1,3,2,0,10,2,0,1,1,1,1,1,0 1,4,10,3,1,5,5,0,0,1,1,1,1,0 1,5,10,3,1,5,3,0,0,1,1,0,1,0 1,0,1,2,2,4,3,0,1,1,1,0,1,0 1,0,5,2,0,0,2,0,1,1,1,0,1,1 0,0,3,2,2,8,3,0,1,1,1,1,1,0 1,5,3,2,2,10,3,0,1,1,1,0,1,0 0,0,12,1,2,2,1,0,1,1,1,2,1,0 0,0,3,2,2,6,4,0,1,1,1,0,1,0 1,0,3,2,1,7,3,0,1,1,1,2,1,0 0,0,3,2,2,6,1,4,0,1,1,0,1,0 1,2,0,3,0,4,2,0,1,1,1,1,1,1 2,0,1,2,0,8,0,0,0,1,1,2,1,1 1,0,0,3,0,3,2,0,1,1,1,1,1,0 2,0,3,2,4,8,3,0,0,1,1,2,1,0 0,0,0,3,2,4,3,0,1,1,1,1,1,1 3,0,10,3,4,1,5,1,1,1,1,0,1,0 2,0,1,2,0,4,2,0,1,1,1,1,1,1 0,0,0,3,2,5,3,0,0,1,1,0,1,0 0,0,1,2,2,8,1,0,0,1,1,0,1,0 0,0,12,1,2,9,1,0,1,1,1,0,1,0 0,0,3,2,0,6,2,4,1,1,1,1,1,1 2,0,3,2,0,10,2,0,1,1,1,0,1,0 0,1,3,2,2,4,3,0,1,1,1,1,1,0 0,0,9,1,0,1,4,0,1,1,1,0,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 1,5,2,1,0,9,2,0,1,1,1,0,1,0 0,0,0,3,2,3,1,0,0,1,1,2,1,0 0,0,3,2,2,4,3,4,1,1,1,1,1,0 1,4,4,3,2,5,3,0,1,1,1,0,1,0 0,0,0,3,2,0,3,0,1,1,1,1,1,0 1,0,4,3,0,5,2,0,1,1,1,2,1,1 1,0,10,3,2,4,3,0,0,1,1,1,1,1 1,4,5,2,1,12,3,0,0,1,1,1,1,1 1,1,14,0,0,9,2,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,0 1,0,7,1,1,8,5,0,0,1,1,0,1,0 0,0,11,0,2,2,3,0,1,1,1,2,1,0 1,0,5,2,1,3,3,0,0,1,1,2,1,0 1,0,3,2,0,8,2,0,1,1,1,0,1,0 0,0,3,2,0,10,2,0,1,1,1,0,1,1 1,4,3,2,0,12,2,0,1,1,1,2,1,1 0,0,0,3,2,4,3,0,1,1,1,1,1,0 1,0,3,2,1,7,5,0,0,1,1,1,1,0 1,1,4,3,0,5,2,0,1,1,1,0,1,1 0,0,1,2,2,4,5,0,1,1,1,1,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,0,3,2,3,1,0,1,1,1,0,1,0 1,0,1,2,1,1,5,0,0,1,1,0,1,0 2,0,0,3,0,5,2,0,1,1,1,0,1,1 3,0,8,0,2,7,3,0,0,1,1,2,1,0 0,0,1,2,0,1,2,0,1,1,1,0,1,0 1,0,1,2,2,8,3,0,0,1,1,0,1,0 0,0,5,2,2,3,1,0,1,1,1,0,1,0 0,0,3,2,3,8,3,0,1,1,1,0,1,1 0,0,1,2,2,3,5,0,0,1,1,2,1,0 1,0,1,2,1,8,5,0,0,1,1,0,1,0 2,0,1,2,0,3,2,0,1,1,1,0,1,1 1,0,1,2,3,2,5,4,0,1,1,2,1,0 1,3,6,2,0,1,2,1,1,1,1,0,1,1 2,0,6,2,0,1,2,0,1,1,1,0,1,0 1,4,1,2,0,12,2,0,1,1,1,1,1,0 1,0,3,2,2,0,3,0,1,1,1,1,1,0 0,0,1,2,3,8,4,4,0,1,1,0,1,0 0,0,0,3,0,8,2,0,1,1,1,0,1,0 1,1,3,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,2,1,3,0,1,1,1,1,1,0 1,0,1,2,0,8,0,4,0,1,1,2,1,0 2,0,3,2,0,10,2,0,1,1,1,1,1,0 0,0,0,3,2,3,3,0,1,1,1,1,1,0 1,5,10,3,0,8,2,0,1,1,1,0,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,1 0,4,3,2,0,1,2,0,1,1,1,0,1,0 1,0,3,2,0,4,2,0,1,1,1,1,1,0 1,2,1,2,0,1,2,0,1,1,1,0,1,0 1,0,1,2,0,4,2,0,1,1,1,1,1,1 1,0,1,2,3,7,3,4,1,1,1,0,1,0 1,0,1,2,0,4,2,0,1,1,1,1,1,1 1,0,1,2,1,1,5,4,0,1,1,2,1,0 0,0,12,1,2,2,1,0,0,1,1,2,1,0 0,0,3,2,2,3,1,0,0,1,1,2,1,0 0,2,1,2,0,4,0,0,0,1,1,2,1,0 2,0,3,2,4,11,3,0,0,1,1,1,1,0 2,0,0,3,2,1,3,0,1,1,1,1,1,0 0,4,3,2,0,8,2,4,1,1,1,0,1,0 1,0,3,2,0,9,2,0,1,1,1,1,1,0 0,0,3,2,2,2,1,0,0,1,1,2,1,0 0,0,4,3,0,5,2,1,1,1,1,1,1,0 1,4,10,3,0,5,0,0,0,1,1,0,1,1 0,0,6,2,2,5,3,0,1,1,1,0,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,2,10,3,0,1,1,1,0,1,0 2,0,6,2,1,5,5,0,0,1,1,0,1,0 1,1,4,3,0,5,2,0,1,1,1,1,1,1 1,3,3,2,0,8,2,0,1,1,1,0,1,0 0,0,13,3,2,5,3,0,1,1,1,1,1,1 1,4,5,2,0,5,2,0,1,1,1,1,1,1 0,2,12,1,2,2,1,0,1,1,1,2,1,0 0,0,6,2,0,3,0,0,0,1,1,1,1,1 0,4,0,3,1,5,3,0,1,1,1,0,1,0 2,0,10,3,1,4,3,0,0,1,1,0,1,1 1,4,1,2,2,8,1,2,0,1,1,0,1,0 0,0,0,3,0,8,2,0,1,1,1,1,1,1 1,4,10,3,0,5,0,0,0,1,1,0,1,1 2,5,13,3,0,5,2,0,1,1,1,1,1,1 1,2,1,2,1,12,3,0,1,1,1,0,1,0 0,0,12,1,2,10,3,0,1,1,1,1,1,0 2,0,10,3,2,5,3,0,1,1,1,1,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 2,1,0,3,0,9,2,0,1,1,1,1,1,0 0,0,3,2,2,7,3,0,0,1,1,0,1,0 0,0,1,2,2,2,1,4,0,1,1,0,1,0 2,5,13,3,0,5,3,1,1,1,1,0,1,0 0,0,3,2,0,6,0,0,0,1,1,0,1,1 1,0,0,3,2,8,5,4,0,1,1,2,1,0 2,0,11,0,1,11,5,0,0,1,1,2,1,0 0,0,3,2,2,8,3,0,0,1,1,2,1,0 0,0,3,2,2,1,3,0,1,1,1,2,1,0 1,2,0,3,0,3,2,0,1,1,1,1,1,1 0,0,9,1,0,7,4,3,1,1,1,0,1,0 1,0,3,2,2,1,1,0,1,1,1,2,1,0 0,0,1,2,3,3,1,0,0,1,1,0,1,0 1,1,1,2,2,10,3,4,1,1,1,2,1,0 0,1,1,2,0,1,2,2,1,1,1,1,1,1 2,0,12,1,4,2,4,1,0,1,1,0,1,0 0,0,3,2,2,4,1,0,1,1,1,2,1,0 0,0,2,1,2,8,1,0,0,1,1,2,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,1 0,0,14,0,2,11,4,0,0,1,1,0,1,0 2,0,3,2,5,1,3,0,1,1,1,0,1,0 0,0,10,3,0,3,0,0,0,1,1,1,1,1 1,4,3,2,2,8,5,4,0,1,1,2,1,0 2,1,4,3,0,5,2,0,1,1,1,1,1,1 0,0,3,2,2,1,3,0,1,1,1,0,1,0 1,1,0,3,0,4,2,1,1,1,1,1,1,0 1,1,1,2,1,1,3,0,1,1,1,0,1,0 2,5,0,3,4,5,3,0,0,1,1,0,1,0 1,3,3,2,0,8,2,0,1,1,1,0,1,0 0,0,1,2,2,1,3,0,1,1,1,0,1,0 1,0,1,2,0,3,2,1,1,1,1,0,1,1 1,0,1,2,0,3,2,0,1,1,1,1,1,1 1,0,0,3,0,4,2,0,1,1,1,0,1,1 0,0,1,2,3,7,3,3,1,1,1,0,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 2,3,10,3,1,5,3,0,1,1,1,0,1,1 1,4,10,3,0,4,2,0,1,1,1,1,1,1 2,2,3,2,1,3,5,0,0,1,1,1,1,1 0,4,0,3,2,12,1,4,1,1,1,1,1,0 0,0,1,2,1,2,3,0,1,1,1,0,1,0 2,0,0,3,1,8,3,0,0,1,1,0,1,1 0,4,1,2,0,12,2,0,1,1,1,1,1,0 1,0,8,0,1,7,3,0,0,1,1,1,1,0 0,3,3,2,0,8,2,4,1,1,1,1,1,0 1,0,1,2,1,8,5,0,0,1,1,2,1,0 1,0,1,2,1,0,3,0,0,1,1,1,1,0 1,4,3,2,5,9,5,4,1,1,1,0,1,0 1,2,10,3,1,4,3,0,1,1,1,1,1,1 1,0,2,1,0,2,2,0,1,1,1,0,1,0 0,0,3,2,1,7,3,0,1,1,1,0,1,0 0,0,2,1,2,3,3,0,0,1,1,0,1,0 0,0,1,2,0,3,2,0,1,1,1,1,1,0 2,0,1,2,0,1,2,0,1,1,1,1,1,1 0,0,1,2,0,7,2,0,1,1,1,0,1,0 0,0,3,2,3,2,3,0,0,1,1,1,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 1,4,0,3,1,12,3,0,1,1,1,0,1,1 1,0,9,1,0,2,2,0,1,1,1,0,1,0 0,0,3,2,0,8,2,0,1,1,1,0,1,0 3,0,3,2,0,3,2,0,1,1,1,2,1,0 0,0,6,2,2,1,5,0,1,1,1,0,1,0 2,0,1,2,4,2,5,0,0,1,1,2,1,0 1,0,3,2,0,4,2,0,1,1,1,1,1,1 0,0,0,3,0,5,0,0,0,1,1,2,1,0 0,0,0,3,2,3,3,0,1,1,1,1,1,0 1,0,5,2,0,4,2,0,1,1,1,1,1,1 2,0,3,2,0,4,2,0,1,1,1,2,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,1 1,0,0,3,0,4,2,0,1,1,1,0,1,1 0,0,0,3,0,4,2,0,1,1,1,0,1,1 0,0,1,2,0,4,2,0,1,1,1,2,1,0 1,0,1,2,1,8,3,0,0,1,1,1,1,0 0,0,6,2,2,3,5,1,1,1,1,1,1,0 0,0,1,2,1,8,5,0,0,1,1,0,1,0 0,0,1,2,0,10,2,0,1,1,1,2,1,0 1,0,3,2,0,7,2,0,1,1,1,1,1,0 0,0,1,2,2,3,3,0,1,1,1,1,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,1 1,1,13,3,2,5,3,0,0,1,1,1,1,0 0,0,3,2,1,1,3,0,0,1,1,0,1,0 0,2,1,2,2,4,3,0,1,1,1,1,1,0 1,1,0,3,2,4,3,4,1,1,1,1,1,1 1,0,3,2,1,1,3,0,1,1,1,0,1,1 0,0,3,2,2,3,1,0,1,1,1,0,1,0 0,0,3,2,0,4,2,0,1,1,1,1,1,0 1,0,7,1,0,1,2,0,1,1,1,1,1,1 2,0,3,2,0,1,2,0,1,1,1,2,1,0 0,1,3,2,2,5,3,0,1,1,1,0,1,0 0,4,1,2,2,8,3,0,0,1,1,1,1,0 0,0,0,3,2,0,3,0,0,1,1,1,1,1 0,3,1,2,2,8,4,0,0,1,1,0,1,0 0,1,1,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,2,6,3,0,0,1,1,0,1,0 0,0,3,2,2,2,3,0,1,1,1,1,1,0 0,0,3,2,2,10,1,0,1,1,1,0,1,0 2,1,3,2,0,9,2,0,1,1,1,2,1,0 0,2,3,2,0,4,2,0,1,1,1,0,1,0 1,3,4,3,0,5,2,1,1,1,1,1,1,1 0,0,0,3,2,5,3,0,0,1,1,0,1,0 1,1,3,2,0,5,0,0,0,1,1,2,1,1 0,0,3,2,0,10,2,4,1,1,1,1,1,0 1,0,1,2,2,10,3,0,1,1,1,0,1,0 0,0,5,2,1,3,3,0,0,1,1,1,1,0 2,0,0,3,0,3,2,0,1,1,1,0,1,1 1,0,0,3,1,2,5,0,0,1,1,1,1,1 0,0,3,2,2,6,4,0,1,1,1,1,1,0 1,1,3,2,0,2,2,0,1,1,1,2,1,0 0,0,3,2,2,2,3,0,1,1,1,0,1,0 0,0,1,2,2,8,1,4,0,1,1,0,1,0 0,5,3,2,2,2,5,4,0,1,1,0,1,0 0,5,10,3,0,5,2,1,1,1,1,2,1,0 2,1,3,2,4,2,3,0,0,1,1,2,1,0 0,0,3,2,0,3,2,0,1,1,1,1,1,1 1,1,3,2,1,1,3,0,1,1,1,1,1,1 1,0,3,2,4,2,3,0,0,1,1,2,1,0 1,0,10,3,2,3,3,1,1,1,1,0,1,0 1,2,0,3,0,5,2,0,1,1,1,1,1,0 1,0,3,2,0,10,2,4,1,1,1,0,1,1 0,0,3,2,2,7,4,0,1,1,1,0,1,0 0,0,3,2,1,6,5,0,0,1,1,2,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,1 0,0,1,2,2,5,3,0,0,1,1,2,1,0 1,0,3,2,4,4,4,0,1,1,1,0,1,0 0,0,1,2,0,2,0,2,0,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 2,0,3,2,4,4,3,0,0,1,1,0,1,0 0,0,2,1,2,1,3,0,1,1,1,0,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 1,0,0,3,2,8,3,0,0,1,1,0,1,0 0,0,8,0,2,1,3,0,1,1,1,1,1,0 1,4,10,3,1,5,5,4,0,1,1,0,1,1 3,0,3,2,0,7,2,0,1,1,1,0,1,0 1,4,1,2,1,7,1,0,0,1,1,0,1,0 0,0,1,2,2,2,1,0,1,1,1,2,1,0 1,0,3,2,1,7,3,0,1,1,1,0,1,0 0,0,1,2,0,8,2,0,1,1,1,0,1,0 1,0,3,2,1,3,1,0,1,1,1,0,1,0 1,4,10,3,2,5,3,0,1,1,1,0,1,0 0,0,0,3,2,5,3,0,1,1,1,0,1,0 0,0,3,2,2,8,3,0,0,1,1,0,1,0 0,0,0,3,0,4,1,0,1,1,1,1,1,0 0,0,3,2,2,10,4,0,1,1,1,0,1,0 0,0,12,1,0,1,0,3,0,1,1,1,1,0 1,5,10,3,0,5,2,0,1,1,1,0,1,0 1,0,0,3,0,3,2,0,1,1,1,1,1,0 0,0,7,1,0,6,2,0,1,1,1,1,1,0 0,0,9,1,2,2,1,0,0,1,1,2,1,0 2,5,1,2,1,8,3,0,1,1,1,0,1,0 1,0,3,2,1,7,1,4,0,1,1,0,1,0 2,0,3,2,4,11,3,0,0,1,1,2,1,0 0,1,6,2,0,1,2,0,1,1,1,1,1,0 1,0,1,2,0,3,2,0,1,1,1,1,1,1 0,0,3,2,2,2,1,0,0,1,1,2,1,0 0,0,1,2,2,10,1,4,1,1,1,0,1,0 1,0,11,0,0,2,2,0,1,1,1,1,1,0 1,0,1,2,1,3,5,0,0,1,1,0,1,0 0,0,1,2,1,8,3,0,0,1,1,1,1,0 0,0,0,3,2,4,3,0,0,1,1,1,1,0 2,0,1,2,0,1,2,0,1,1,1,0,1,1 1,2,10,3,3,4,3,0,1,1,1,1,1,1 0,0,3,2,0,8,0,0,0,1,1,0,1,0 1,0,5,2,0,3,2,0,1,1,1,1,1,0 0,0,3,2,2,9,5,0,1,1,1,2,1,0 0,5,0,3,0,12,0,4,0,1,1,1,1,0 1,0,3,2,0,11,4,0,0,1,1,0,1,0 2,0,0,3,0,5,2,0,1,1,1,1,1,1 2,0,3,2,0,3,2,0,1,1,1,0,1,1 0,0,3,2,1,3,5,2,0,1,1,1,1,0 0,0,1,2,2,3,1,0,0,1,1,0,1,0 1,4,10,3,0,4,2,0,1,1,1,1,1,0 1,0,3,2,2,3,1,0,0,1,1,2,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,3,2,2,6,3,0,1,1,1,0,1,0 1,0,2,1,3,8,5,4,0,1,1,2,1,0 0,0,2,1,2,3,3,0,0,1,1,2,1,0 1,0,0,3,2,11,3,0,1,1,1,2,1,0 1,0,6,2,3,5,1,0,0,1,1,2,1,0 1,4,0,3,0,5,2,0,1,1,1,2,1,0 0,0,3,2,2,6,4,1,1,1,1,0,1,0 0,0,1,2,0,4,2,1,1,1,1,0,1,0 0,0,0,3,0,5,2,0,1,1,1,1,1,1 0,0,1,2,2,7,3,0,1,1,1,0,1,0 0,0,2,1,0,3,2,0,1,1,1,2,1,0 0,0,3,2,2,1,4,0,1,1,1,0,1,0 0,0,1,2,2,2,3,0,0,1,1,2,1,0 0,0,3,2,1,3,3,2,1,1,1,0,1,1 1,0,1,2,5,8,3,0,0,1,1,0,1,0 1,2,1,2,0,5,2,0,1,1,1,2,1,0 0,0,3,2,3,8,5,0,0,1,1,0,1,0 1,0,12,1,0,1,2,0,1,1,1,0,1,0 0,0,1,2,2,8,1,0,1,1,1,0,1,0 0,0,3,2,2,1,1,0,1,1,1,0,1,0 1,4,7,1,4,6,5,0,1,1,1,0,1,1 0,2,13,3,0,5,2,0,1,1,1,0,1,1 0,0,3,2,0,1,2,0,1,1,1,1,1,0 1,0,8,0,5,5,4,0,1,1,1,2,1,0 0,0,1,2,2,2,1,0,1,1,1,2,1,0 1,4,1,2,0,12,2,0,1,1,1,1,1,0 0,0,1,2,0,4,2,0,1,1,1,0,1,1 0,3,3,2,3,6,5,0,0,1,1,0,1,0 0,0,6,2,2,2,3,4,1,1,1,0,1,0 1,3,1,2,0,2,2,0,1,1,1,0,1,0 0,2,13,3,2,5,3,0,1,1,1,1,1,0 2,0,3,2,4,8,5,0,0,1,1,2,1,0 1,1,2,1,0,1,2,0,1,1,1,1,1,0 0,0,3,2,2,6,3,0,0,1,1,0,1,0 1,5,0,3,0,5,2,0,1,1,1,0,1,0 1,1,1,2,0,9,2,0,1,1,1,1,1,0 0,0,0,3,2,5,3,0,0,1,1,0,1,0 0,0,0,3,0,3,2,0,1,1,1,1,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,1 1,0,5,2,0,0,2,0,1,1,1,0,1,1 1,0,3,2,4,3,3,0,0,1,1,1,1,1 2,0,4,3,0,5,2,0,1,1,1,2,1,1 0,0,3,2,2,2,4,4,0,1,1,2,1,0 2,0,3,2,0,1,2,0,1,1,1,1,1,0 0,1,1,2,2,5,5,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,0,7,0,0,0,1,1,0,1,0 0,4,1,2,0,12,2,0,1,1,1,0,1,0 0,0,1,2,2,7,3,0,0,1,1,2,1,0 2,0,8,0,1,6,3,0,1,1,1,0,1,0 0,0,9,1,3,7,5,0,0,1,1,0,1,0 1,0,12,1,0,7,2,0,1,1,1,1,1,0 0,0,1,2,2,8,3,4,1,1,1,2,1,0 2,0,7,1,1,9,3,4,1,1,1,0,1,0 1,0,3,2,1,3,3,0,1,1,1,0,1,0 2,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,0,3,0,3,2,0,1,1,1,1,1,0 0,0,3,2,0,3,2,0,1,1,1,0,1,0 0,0,0,3,0,5,0,0,0,1,1,2,1,1 0,1,8,0,0,9,2,0,1,1,1,1,1,0 1,0,5,2,1,4,5,4,0,1,1,0,1,0 0,0,1,2,2,2,1,0,0,1,1,0,1,0 0,1,3,2,0,9,2,0,1,1,1,1,1,0 1,0,0,3,2,3,5,0,0,1,1,2,1,0 1,0,3,2,1,5,5,4,0,1,1,0,1,0 1,3,6,2,1,4,5,4,0,1,1,1,1,0 0,0,0,3,2,5,3,0,1,1,1,1,1,0 0,5,10,3,0,5,2,1,1,1,1,2,1,0 0,5,1,2,2,8,3,3,1,1,1,2,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,0 0,0,1,2,1,2,5,0,0,1,1,1,1,0 1,1,0,3,0,5,2,0,1,1,1,2,1,0 0,0,1,2,2,2,1,0,1,1,1,2,1,0 1,0,12,1,0,1,2,0,1,1,1,0,1,1 0,2,7,1,2,1,1,0,1,1,1,0,1,0 0,0,2,1,2,2,3,0,1,1,1,0,1,0 0,0,1,2,2,12,1,0,1,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,1 1,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,3,2,1,8,3,0,1,1,1,2,1,0 0,0,0,3,0,8,2,1,1,1,1,1,1,0 0,0,1,2,0,2,0,0,0,1,1,0,1,0 2,0,0,3,0,7,2,0,1,1,1,0,1,0 0,0,2,1,0,1,2,0,1,1,1,1,1,0 0,0,3,2,2,3,4,0,0,1,1,2,1,0 1,0,1,2,0,7,2,4,1,1,1,1,1,0 1,5,13,3,5,5,5,0,1,1,1,1,1,1 0,0,3,2,0,8,2,0,1,1,1,0,1,0 1,0,3,2,0,8,0,0,0,1,1,0,1,0 1,0,1,2,0,10,2,0,1,1,1,1,1,1 1,5,1,2,0,5,2,0,1,1,1,0,1,1 0,0,3,2,2,2,3,0,0,1,1,2,1,0 0,0,0,3,0,4,0,0,0,1,1,1,1,1 1,4,10,3,0,5,0,0,0,1,1,0,1,1 1,0,0,3,1,1,3,0,1,1,1,0,1,0 3,1,8,0,4,9,3,0,1,1,1,2,1,0 1,1,3,2,0,8,0,0,0,1,1,2,1,0 1,0,3,2,0,3,2,0,1,1,1,1,1,0 0,0,2,1,2,6,1,0,1,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,0 0,0,1,2,2,7,3,0,0,1,1,0,1,0 0,0,9,1,2,2,1,0,1,1,1,2,1,0 0,1,3,2,2,9,1,0,1,1,1,0,1,0 2,0,3,2,0,6,2,0,1,1,1,0,1,0 0,0,3,2,3,8,5,0,0,1,1,0,1,0 0,0,10,3,2,4,1,0,0,1,1,0,1,0 1,1,0,3,0,5,2,0,1,1,1,1,1,1 1,0,3,2,0,9,2,0,1,1,1,1,1,1 1,0,1,2,2,2,3,0,1,1,1,0,1,0 1,0,3,2,2,1,3,0,1,1,1,0,1,1 0,0,2,1,2,6,3,0,1,1,1,0,1,0 0,0,3,2,1,9,3,0,1,1,1,1,1,0 1,2,0,3,0,4,2,0,1,1,1,0,1,1 0,0,0,3,0,4,2,0,1,1,1,0,1,1 1,0,3,2,0,10,2,0,1,1,1,0,1,0 1,0,3,2,0,4,2,0,1,1,1,0,1,0 0,0,3,2,2,6,3,0,1,1,1,2,1,0 1,0,0,3,0,3,0,0,0,1,1,0,1,0 2,0,1,2,0,8,0,0,0,1,1,0,1,1 1,4,3,2,0,2,0,4,0,1,1,2,1,0 0,0,3,2,1,3,3,2,0,1,1,1,1,0 0,0,1,2,0,1,2,0,1,1,1,1,1,0 0,0,1,2,2,8,1,4,0,1,1,0,1,0 2,0,5,2,0,1,2,0,1,1,1,2,1,1 0,0,3,2,2,6,1,0,1,1,1,0,1,0 0,0,1,2,2,1,3,0,1,1,1,0,1,0 0,0,12,1,5,6,3,0,1,1,1,0,1,0 2,0,0,3,0,4,2,0,1,1,1,0,1,1 2,0,3,2,1,2,3,0,1,1,1,2,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,1 0,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,3,2,2,8,1,4,0,1,1,0,1,0 1,0,10,3,0,2,2,0,1,1,1,0,1,0 2,5,3,2,0,12,2,0,1,1,1,0,1,0 0,0,14,0,2,7,3,0,1,1,1,2,1,0 0,0,0,3,2,5,3,0,0,1,1,0,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 0,0,0,3,0,5,2,0,1,1,1,0,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,1 2,2,3,2,0,3,2,0,1,1,1,0,1,0 1,1,3,2,1,3,3,0,1,1,1,1,1,1 0,0,8,0,2,7,1,0,1,1,1,0,1,0 1,1,13,3,1,5,3,0,0,1,1,1,1,1 1,0,9,1,3,11,5,4,0,1,1,0,1,0 2,0,10,3,0,4,2,0,1,1,1,1,1,1 1,0,1,2,0,1,2,0,1,1,1,0,1,0 1,2,13,3,0,5,0,0,0,1,1,1,1,1 0,0,2,1,2,11,1,0,0,1,1,2,1,0 1,0,1,2,2,4,3,0,0,1,1,1,1,0 0,1,1,2,2,8,1,0,0,1,1,2,1,0 1,1,1,2,0,9,2,0,1,1,1,1,1,1 2,0,0,3,2,4,3,0,1,1,1,1,1,1 0,0,5,2,2,2,1,0,0,1,1,2,1,0 0,4,5,2,0,12,2,1,1,1,1,0,1,1 1,1,3,2,0,1,2,0,1,1,1,0,1,1 1,0,8,0,0,3,2,0,1,1,1,0,1,0 1,4,5,2,2,5,3,0,1,1,1,0,1,0 2,0,1,2,0,5,2,0,1,1,1,2,1,1 1,3,3,2,0,0,2,0,1,1,1,0,1,0 0,0,3,2,2,6,1,0,1,1,1,2,1,0 0,0,3,2,2,7,3,0,0,1,1,0,1,0 0,0,0,3,1,5,3,0,0,1,1,0,1,0 1,0,5,2,0,5,2,4,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 1,0,1,2,0,1,2,0,1,1,1,1,1,1 0,0,1,2,0,7,2,0,1,1,1,2,1,0 0,0,3,2,2,7,1,0,1,1,1,2,1,0 0,0,1,2,0,4,2,0,1,1,1,0,1,1 2,2,1,2,0,3,2,0,1,1,1,0,1,1 0,0,6,2,2,5,3,0,0,1,1,0,1,0 0,0,3,2,0,7,2,0,1,1,1,1,1,0 0,0,1,2,2,8,1,0,0,1,1,2,1,0 1,1,0,3,1,5,3,0,1,1,1,2,1,0 1,0,0,3,0,2,2,1,1,1,1,1,1,1 0,0,0,3,2,3,3,0,0,1,1,0,1,0 3,1,1,2,0,9,2,0,1,1,1,0,1,0 1,5,0,3,0,12,2,0,1,1,1,1,1,1 0,1,3,2,0,5,2,0,1,1,1,0,1,1 0,0,9,1,3,2,3,0,0,1,1,2,1,0 1,1,1,2,2,1,3,0,1,1,1,2,1,0 0,0,0,3,2,5,3,4,1,1,1,0,1,0 0,0,3,2,2,2,5,0,0,1,1,2,1,0 1,0,1,2,0,2,2,0,1,1,1,2,1,0 2,0,0,3,0,4,2,1,1,1,1,1,1,1 0,0,7,1,1,10,3,0,1,1,1,0,1,0 1,0,1,2,1,4,3,0,0,1,1,1,1,0 0,1,3,2,0,3,2,0,1,1,1,0,1,0 0,0,3,2,2,6,1,0,1,1,1,0,1,0 0,0,3,2,0,6,2,0,1,1,1,1,1,0 0,0,1,2,1,4,1,0,0,1,1,0,1,0 0,5,0,3,0,8,2,0,1,1,1,2,1,0 0,5,1,2,0,4,0,0,0,1,1,2,1,0 1,0,3,2,1,4,5,0,0,1,1,0,1,0 0,0,1,2,0,0,2,0,1,1,1,0,1,1 1,1,3,2,0,1,2,0,1,1,1,1,1,0 0,0,1,2,2,3,3,1,1,1,1,2,1,0 0,0,6,2,2,6,1,0,0,1,1,2,1,0 0,0,3,2,2,4,3,0,1,1,1,0,1,0 0,5,12,1,0,6,2,0,1,1,1,0,1,0 1,0,3,2,0,3,2,0,1,1,1,1,1,1 0,0,3,2,2,6,1,0,1,1,1,0,1,0 0,0,0,3,2,4,3,0,0,1,1,0,1,0 0,0,3,2,2,2,1,0,0,1,1,2,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,1,2,0,1,2,0,1,1,1,0,1,0 1,1,1,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,2,3,3,0,0,1,1,2,1,0 2,0,7,1,3,1,5,0,1,1,1,0,1,0 2,0,0,3,5,1,5,0,0,1,1,1,1,0 0,0,3,2,0,6,2,0,1,1,1,2,1,0 1,0,6,2,0,4,2,0,1,1,1,1,1,1 0,0,3,2,2,8,1,0,1,1,1,0,1,0 0,0,6,2,0,1,2,4,1,1,1,0,1,0 0,0,3,2,3,2,5,4,0,1,1,2,1,0 2,0,3,2,2,4,5,0,0,1,1,2,1,0 0,0,9,1,2,3,1,0,1,1,1,2,1,0 3,1,3,2,0,3,2,0,1,1,1,0,1,1 1,0,12,1,1,2,5,4,0,1,1,0,1,0 1,0,3,2,2,8,3,0,0,1,1,0,1,0 0,2,1,2,1,4,3,0,1,1,1,1,1,0 1,0,1,2,1,1,3,0,1,1,1,0,1,0 1,1,3,2,2,9,1,0,1,1,1,1,1,0 1,5,10,3,1,5,5,0,0,1,1,0,1,0 1,0,3,2,1,4,4,0,0,1,1,0,1,0 1,0,1,2,3,4,3,0,1,1,1,1,1,0 1,0,11,0,0,9,2,0,1,1,1,1,1,1 0,0,0,3,2,5,3,0,1,1,1,1,1,0 2,2,7,1,0,10,2,0,1,1,1,1,1,0 0,0,3,2,0,7,2,0,1,1,1,1,1,1 1,2,0,3,0,4,2,0,1,1,1,1,1,1 1,1,4,3,0,5,2,2,1,1,1,1,1,1 1,0,3,2,2,5,3,0,1,1,1,0,1,0 0,0,6,2,1,3,3,0,0,1,1,0,1,0 1,0,3,2,1,8,5,0,0,1,1,2,1,0 0,0,3,2,1,3,1,0,1,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,1,8,5,0,0,1,1,2,1,0 2,0,0,3,0,2,4,1,1,1,1,2,1,0 0,0,1,2,2,8,1,0,1,1,1,0,1,0 0,0,0,3,0,5,4,0,1,1,1,0,1,0 0,0,1,2,3,2,3,0,0,1,1,1,1,0 0,2,3,2,0,4,2,0,1,1,1,1,1,0 0,0,3,2,2,9,1,4,1,1,1,0,1,0 0,0,3,2,0,10,2,0,1,1,1,0,1,0 2,0,6,2,0,7,2,0,1,1,1,2,1,0 2,3,1,2,0,0,2,0,1,1,1,2,1,1 1,0,3,2,0,2,0,0,0,1,1,0,1,0 1,3,13,3,0,5,2,0,1,1,1,1,1,1 2,1,8,0,0,1,2,0,1,1,1,0,1,0 0,0,3,2,4,1,5,0,0,1,1,2,1,0 2,0,10,3,0,4,2,0,1,1,1,1,1,1 2,0,12,1,0,10,2,4,1,1,1,0,1,1 0,0,3,2,2,8,3,0,0,1,1,2,1,0 0,0,3,2,2,1,1,0,1,1,1,2,1,0 0,0,3,2,0,7,2,0,1,1,1,1,1,0 0,0,2,1,2,2,1,0,0,1,1,2,1,0 1,0,3,2,0,0,2,1,1,1,1,0,1,1 1,0,1,2,5,5,3,0,0,1,1,2,1,0 1,4,3,2,0,1,2,0,1,1,1,0,1,0 1,0,3,2,2,8,3,0,0,1,1,0,1,0 0,0,3,2,2,10,1,0,1,1,1,0,1,0 0,0,6,2,0,3,2,0,1,1,1,1,1,0 0,0,3,2,2,6,1,0,1,1,1,0,1,0 2,0,5,2,1,8,3,0,0,1,1,2,1,0 0,0,0,3,2,4,3,0,1,1,1,1,1,0 0,0,3,2,0,6,2,0,1,1,1,2,1,0 0,0,3,2,2,6,1,0,1,1,1,1,1,0 1,0,14,0,0,7,2,0,1,1,1,0,1,0 0,0,1,2,2,8,1,0,1,1,1,2,1,0 1,0,6,2,0,1,2,0,1,1,1,1,1,1 2,0,15,0,2,7,3,0,1,1,1,0,1,0 0,0,3,2,2,2,1,0,0,1,1,2,1,0 1,0,1,2,3,2,3,0,0,1,1,2,1,0 2,3,3,2,0,8,2,0,1,1,1,0,1,0 1,0,0,3,0,0,2,0,1,1,1,1,1,0 0,0,0,3,2,8,3,0,1,1,1,0,1,0 1,5,10,3,2,4,3,0,0,1,1,2,1,0 1,0,10,3,5,4,3,0,1,1,1,1,1,1 0,3,1,2,0,12,2,4,1,1,1,0,1,1 1,0,3,2,0,8,0,0,0,1,1,0,1,1 0,0,3,2,3,10,3,0,1,1,1,0,1,0 0,0,1,2,2,8,3,0,0,1,1,2,1,0 0,0,1,2,2,2,3,0,1,1,1,2,1,0 0,0,3,2,3,10,3,0,1,1,1,1,1,0 0,5,1,2,1,0,5,0,0,1,1,0,1,0 1,0,4,3,0,5,2,0,1,1,1,0,1,1 1,0,10,3,2,5,5,0,0,1,1,0,1,0 1,1,4,3,1,5,5,0,1,1,1,1,1,1 1,0,3,2,1,8,3,0,0,1,1,0,1,0 1,0,3,2,1,7,5,0,0,1,1,2,1,0 1,5,0,3,0,5,2,0,1,1,1,2,1,1 0,0,7,1,0,3,2,0,1,1,1,1,1,0 1,4,0,3,3,5,3,0,0,1,1,1,1,0 0,1,3,2,1,1,3,0,1,1,1,1,1,0 1,0,0,3,0,8,2,1,1,1,1,0,1,0 0,5,2,1,2,2,1,0,1,1,1,2,1,0 2,0,3,2,0,2,2,0,1,1,1,1,1,0 2,0,3,2,2,2,4,4,0,1,1,2,1,0 1,0,0,3,0,1,2,0,1,1,1,1,1,1 0,0,7,1,0,9,2,2,1,1,1,0,1,0 0,0,1,2,2,8,4,1,1,1,1,2,1,0 0,1,14,0,0,1,2,0,1,1,1,1,1,1 0,0,11,0,2,7,3,0,0,1,1,0,1,0 0,0,3,2,2,8,1,0,1,1,1,2,1,0 0,1,6,2,0,9,2,0,1,1,1,1,1,1 0,0,0,3,2,2,3,0,1,1,1,2,1,0 1,0,0,3,1,4,3,0,1,1,1,1,1,1 3,0,0,3,0,5,2,0,1,1,1,2,1,0 1,0,0,3,1,3,5,0,0,1,1,2,1,0 0,0,6,2,1,4,3,0,1,1,1,1,1,0 0,0,0,3,2,8,3,0,0,1,1,0,1,0 1,3,0,3,0,12,2,4,1,1,1,1,1,1 0,0,3,2,0,1,2,0,1,1,1,1,1,1 0,0,1,2,0,2,0,0,0,1,1,2,1,0 1,0,1,2,1,2,3,0,0,1,1,2,1,0 0,0,3,2,0,6,2,0,1,1,1,0,1,0 1,1,10,3,1,6,5,0,1,1,1,0,1,0 1,0,3,2,0,3,2,0,1,1,1,1,1,1 2,0,3,2,4,8,3,0,0,1,1,2,1,0 1,5,1,2,3,0,5,0,0,1,1,0,1,0 0,1,0,3,0,5,2,4,1,1,1,2,1,1 0,0,0,3,0,3,2,0,1,1,1,1,1,1 1,0,1,2,0,5,2,0,1,1,1,0,1,1 1,0,1,2,3,4,3,0,0,1,1,1,1,1 1,0,3,2,0,12,1,0,1,1,1,1,1,0 1,0,1,2,0,4,2,0,1,1,1,1,1,0 1,0,1,2,0,1,2,0,1,1,1,1,1,0 0,0,1,2,2,7,3,0,1,1,1,2,1,0 0,1,1,2,2,3,3,0,1,1,1,1,1,0 0,0,7,1,5,8,5,1,0,1,1,0,1,0 0,0,3,2,0,3,2,0,1,1,1,1,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,0 1,2,3,2,0,10,2,0,1,1,1,1,1,0 0,0,0,3,2,3,3,1,0,1,1,0,1,0 1,4,5,2,0,12,2,0,1,1,1,1,1,1 1,0,1,2,3,4,5,0,1,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,0 0,5,0,3,0,4,2,0,1,1,1,2,1,0 0,0,1,2,1,3,3,0,1,1,1,0,1,0 1,0,5,2,1,8,3,1,1,1,1,0,1,0 0,4,3,2,0,12,2,0,1,1,1,1,1,1 0,1,1,2,2,5,3,0,0,1,1,2,1,0 1,0,1,2,0,6,2,0,1,1,1,2,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,10,3,0,5,2,0,1,1,1,1,1,1 2,0,3,2,0,12,2,0,1,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,1,4,3,2,5,3,0,1,1,1,0,1,1 2,0,10,3,2,5,3,0,1,1,1,1,1,0 0,4,10,3,2,5,1,0,1,1,1,2,1,0 2,5,0,3,1,4,3,0,0,1,1,2,1,0 1,0,3,2,0,3,2,0,1,1,1,1,1,0 1,0,3,2,1,6,3,0,1,1,1,2,1,0 1,0,0,3,2,8,5,1,0,1,1,0,1,0 0,0,1,2,2,8,1,0,0,1,1,2,1,0 2,0,8,0,2,9,5,4,0,1,1,2,1,0 0,0,0,3,2,5,3,0,1,1,1,0,1,0 1,0,14,0,3,3,5,4,0,1,1,2,1,0 0,0,1,2,1,5,3,0,1,1,1,0,1,0 0,0,0,3,0,3,2,0,1,1,1,1,1,1 0,0,3,2,2,2,1,0,0,1,1,2,1,0 1,0,0,3,0,4,2,0,1,1,1,0,1,1 0,1,2,1,2,1,3,0,1,1,1,0,1,0 0,0,3,2,2,8,5,0,0,1,1,2,1,0 1,0,0,3,0,3,2,0,1,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,1,1,0 1,0,3,2,0,8,0,0,0,1,1,0,1,1 1,0,0,3,1,8,3,0,0,1,1,0,1,0 2,0,3,2,0,3,2,0,1,1,1,0,1,0 1,0,6,2,1,10,3,0,1,1,1,0,1,0 0,0,1,2,2,3,1,4,0,1,1,2,1,0 1,0,3,2,0,2,2,4,1,1,1,0,1,0 1,0,1,2,0,5,2,0,1,1,1,0,1,0 2,3,5,2,0,9,2,4,1,1,1,0,1,0 2,1,0,3,0,5,2,0,1,1,1,1,1,0 1,0,1,2,1,1,3,0,1,1,1,1,1,1 0,0,1,2,0,5,2,0,1,1,1,0,1,0 1,0,1,2,2,7,3,0,0,1,1,0,1,0 1,0,12,1,0,1,2,0,1,1,1,2,1,0 0,2,0,3,0,5,2,0,1,1,1,1,1,1 0,0,3,2,2,3,1,0,0,1,1,0,1,0 1,1,0,3,0,4,2,0,1,1,1,0,1,1 0,2,3,2,2,7,1,0,1,1,1,2,1,0 0,0,3,2,2,2,3,0,0,1,1,1,1,0 1,5,4,3,1,5,5,0,0,1,1,1,1,0 1,0,3,2,1,8,5,4,0,1,1,2,1,0 0,4,0,3,2,5,3,0,0,1,1,2,1,0 0,2,0,3,0,4,2,0,1,1,1,0,1,1 0,0,3,2,2,7,3,0,0,1,1,2,1,0 0,0,9,1,2,2,5,4,1,1,1,2,1,0 0,0,14,0,2,2,4,0,1,1,1,0,1,0 0,1,12,1,2,2,1,0,0,1,1,2,1,0 2,2,0,3,0,9,2,0,1,1,1,0,1,1 0,4,0,3,0,6,2,0,1,1,1,1,1,1 1,3,0,3,0,5,2,0,1,1,1,1,1,1 0,0,0,3,2,3,3,0,0,1,1,1,1,0 2,0,1,2,4,8,5,0,0,1,1,2,1,0 0,0,12,1,2,2,1,0,1,1,1,2,1,0 1,4,1,2,1,8,5,4,0,1,1,2,1,0 0,0,9,1,2,2,1,4,1,1,1,2,1,0 0,4,3,2,2,8,1,0,0,1,1,0,1,0 1,1,0,3,5,3,1,0,1,1,1,1,1,1 1,0,1,2,2,5,3,0,0,1,1,1,1,0 2,0,4,3,0,5,2,0,1,1,1,1,1,1 0,0,6,2,1,7,3,0,1,1,1,0,1,0 1,0,6,2,0,4,2,0,1,1,1,0,1,0 1,1,1,2,1,1,3,0,1,1,1,2,1,1 1,0,10,3,0,4,2,0,1,1,1,1,1,1 1,0,0,3,0,3,2,0,1,1,1,1,1,1 0,0,3,2,2,7,3,4,0,1,1,0,1,0 1,0,1,2,1,8,5,4,0,1,1,2,1,0 0,0,7,1,1,8,3,0,0,1,1,0,1,0 2,0,2,1,0,12,2,0,1,1,1,2,1,1 1,5,0,3,1,4,3,0,0,1,1,0,1,0 2,0,1,2,1,2,3,0,1,1,1,0,1,0 1,1,10,3,2,9,1,0,1,1,1,1,1,0 1,0,3,2,1,10,3,0,1,1,1,1,1,0 1,1,1,2,0,3,2,0,1,1,1,1,1,0 0,0,3,2,2,8,1,0,0,1,1,2,1,0 0,0,1,2,2,2,1,0,1,1,1,2,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 2,0,1,2,0,9,2,0,1,1,1,1,1,1 0,0,8,0,1,10,5,0,1,1,1,2,1,0 1,0,1,2,0,8,2,0,1,1,1,0,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,1 2,4,3,2,0,2,2,1,1,1,1,0,1,0 0,0,3,2,2,4,5,0,0,1,1,0,1,0 1,2,0,3,0,5,2,0,1,1,1,0,1,1 1,0,3,2,0,4,2,0,1,1,1,2,1,1 0,0,2,1,2,2,1,0,0,1,1,2,1,0 0,0,3,2,0,5,2,0,1,1,1,1,1,1 0,0,0,3,2,9,3,0,1,1,1,0,1,0 1,3,10,3,0,4,2,0,1,1,1,0,1,0 1,0,3,2,0,2,2,0,1,1,1,0,1,0 0,0,1,2,2,2,3,0,1,1,1,2,1,0 0,0,0,3,2,2,3,0,0,1,1,0,1,0 1,4,10,3,0,5,2,0,1,1,1,1,1,1 1,0,1,2,0,1,2,0,1,1,1,0,1,1 0,0,7,1,0,1,2,0,1,1,1,0,1,0 1,0,3,2,0,4,2,0,1,1,1,1,1,1 0,0,3,2,1,7,3,0,1,1,1,0,1,0 3,1,3,2,0,3,2,0,1,1,1,2,1,0 2,1,14,0,0,4,2,0,1,1,1,1,1,1 1,3,0,3,2,8,3,0,1,1,1,0,1,0 0,0,3,2,2,10,1,0,1,1,1,0,1,0 0,0,0,3,2,4,3,0,0,1,1,1,1,1 1,1,3,2,1,2,5,0,1,1,1,1,1,0 0,0,0,3,2,12,3,0,0,1,1,0,1,0 0,0,3,2,2,4,3,0,0,1,1,1,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,0 0,0,3,2,0,7,2,0,1,1,1,1,1,0 1,0,3,2,0,7,2,0,1,1,1,1,1,1 0,0,3,2,2,12,1,0,1,1,1,1,1,0 0,0,1,2,0,8,0,0,0,1,1,2,1,1 0,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 0,0,3,2,2,9,1,0,1,1,1,2,1,0 1,0,3,2,0,3,2,0,1,1,1,0,1,0 1,3,3,2,0,8,2,0,1,1,1,2,1,0 1,0,3,2,2,1,3,0,0,1,1,1,1,0 1,0,14,0,3,7,3,0,0,1,1,0,1,0 2,0,3,2,2,5,3,0,1,1,1,0,1,0 0,0,3,2,0,8,0,0,0,1,1,0,1,0 0,4,3,2,1,8,5,0,0,1,1,2,1,0 1,2,3,2,0,10,2,0,1,1,1,1,1,0 2,1,0,3,2,5,3,0,1,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,0,3,2,5,3,0,0,1,1,0,1,1 0,0,0,3,2,2,1,0,0,1,1,2,1,0 0,5,0,3,2,5,3,0,0,1,1,0,1,0 1,5,0,3,2,8,3,0,1,1,1,0,1,0 2,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,0,3,0,4,2,0,1,1,1,0,1,1 2,4,5,2,0,4,2,0,1,1,1,2,1,0 2,0,3,2,4,3,3,0,0,1,1,1,1,0 2,0,3,2,4,3,5,0,0,1,1,0,1,0 1,0,10,3,0,5,2,0,1,1,1,0,1,1 1,0,1,2,0,7,2,1,1,1,1,0,1,1 1,5,0,3,0,5,2,0,1,1,1,1,1,1 0,0,3,2,2,3,1,0,0,1,1,2,1,0 0,0,1,2,2,1,5,0,1,1,1,0,1,0 2,0,3,2,4,3,4,0,0,1,1,2,1,0 1,1,10,3,0,4,2,0,1,1,1,1,1,1 0,0,1,2,2,4,3,0,1,1,1,0,1,0 1,0,1,2,1,8,5,0,0,1,1,0,1,0 0,0,3,2,0,10,2,0,1,1,1,1,1,1 1,0,0,3,1,3,3,0,1,1,1,1,1,0 3,0,3,2,0,1,2,0,1,1,1,1,1,1 1,0,3,2,1,4,3,0,0,1,1,0,1,0 0,0,4,3,1,3,1,0,1,1,1,1,1,0 0,0,1,2,1,4,3,0,1,1,1,0,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,1 1,0,3,2,2,7,4,0,1,1,1,0,1,0 0,0,0,3,0,5,2,0,1,1,1,0,1,0 1,0,0,3,0,2,0,0,0,1,1,0,1,0 1,0,8,0,0,7,2,0,1,1,1,0,1,0 0,0,3,2,2,2,1,4,1,1,1,2,1,0 3,0,1,2,4,11,3,0,0,1,1,2,1,0 1,0,3,2,0,6,2,0,1,1,1,1,1,1 1,0,1,2,3,1,3,4,1,1,1,0,1,0 0,0,11,0,2,9,5,0,1,1,1,1,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,9,1,2,9,1,4,1,1,1,0,1,0 1,0,3,2,0,10,2,4,1,1,1,1,1,0 0,5,1,2,2,8,1,0,1,1,1,2,1,0 1,3,3,2,0,10,2,0,1,1,1,0,1,0 0,1,3,2,0,1,2,0,1,1,1,0,1,0 1,0,1,2,0,4,4,0,1,1,1,1,1,1 1,3,0,3,2,8,5,4,1,1,1,0,1,1 1,4,10,3,1,5,3,0,0,1,1,0,1,0 1,4,0,3,0,5,2,0,1,1,1,1,1,0 0,0,3,2,1,8,1,1,0,1,1,0,1,0 0,0,3,2,2,4,1,0,1,1,1,0,1,0 1,5,3,2,0,12,2,0,1,1,1,0,1,0 2,0,0,3,4,5,5,0,0,1,1,2,1,0 1,0,10,3,0,12,2,0,1,1,1,0,1,1 2,0,7,1,3,2,3,4,0,1,1,2,1,0 2,2,1,2,0,4,2,0,1,1,1,0,1,0 1,0,1,2,0,7,2,0,1,1,1,0,1,1 1,2,0,3,1,3,3,0,1,1,1,1,1,1 1,0,10,3,0,5,0,0,0,1,1,0,1,1 1,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,0,1,2,0,1,1,1,1,1,0 0,0,0,3,2,8,1,0,0,1,1,0,1,0 0,0,1,2,2,8,1,0,0,1,1,2,1,0 0,0,1,2,1,8,3,0,0,1,1,0,1,0 0,0,1,2,2,8,3,0,1,1,1,0,1,0 0,4,1,2,0,1,2,0,1,1,1,1,1,1 0,0,4,3,2,5,3,1,1,1,1,0,1,1 0,0,3,2,0,1,2,0,1,1,1,1,1,0 1,0,3,2,2,3,5,0,0,1,1,1,1,0 0,0,0,3,2,2,1,4,0,1,1,1,1,0 1,0,1,2,0,4,2,0,1,1,1,0,1,1 0,0,1,2,2,8,1,0,1,1,1,0,1,0 1,5,0,3,0,5,4,0,0,1,1,1,1,0 0,5,10,3,2,5,3,0,0,1,1,0,1,0 0,0,3,2,2,8,3,0,0,1,1,0,1,0 0,0,1,2,2,8,1,0,0,1,1,2,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,0 0,0,3,2,0,10,2,0,1,1,1,1,1,0 0,0,10,3,0,5,2,0,1,1,1,1,1,0 0,0,2,1,2,1,3,4,1,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 0,1,3,2,0,2,2,4,1,1,1,0,1,0 1,0,1,2,0,7,2,0,1,1,1,0,1,0 0,0,3,2,2,8,5,0,0,1,1,0,1,0 0,5,3,2,0,12,2,0,1,1,1,0,1,0 2,3,0,3,0,8,2,4,1,1,1,0,1,1 1,3,6,2,0,1,2,0,1,1,1,0,1,0 1,0,1,2,0,1,2,4,1,1,1,0,1,0 2,3,0,3,2,8,3,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 1,4,2,1,1,8,5,0,0,1,1,0,1,0 2,4,3,2,0,1,2,0,1,1,1,2,1,0 1,5,6,2,1,0,3,0,1,1,1,2,1,1 1,0,3,2,0,6,2,4,1,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,0,3,0,6,2,0,1,1,1,0,1,0 1,0,12,1,0,1,2,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,1 0,0,1,2,2,2,1,0,0,1,1,2,1,0 1,5,1,2,3,8,5,4,0,1,1,2,1,0 1,0,6,2,0,1,2,0,1,1,1,1,1,1 1,2,6,2,0,4,2,0,1,1,1,1,1,1 0,0,6,2,0,7,2,0,1,1,1,0,1,1 1,1,3,2,0,4,2,0,1,1,1,1,1,1 1,0,3,2,0,3,2,0,1,1,1,1,1,0 0,4,0,3,1,12,5,0,0,1,1,1,1,0 0,0,3,2,5,2,3,1,0,1,1,2,1,0 0,0,1,2,2,2,1,0,1,1,1,2,1,0 1,5,0,3,1,4,3,0,1,1,1,0,1,0 0,0,1,2,0,10,2,0,1,1,1,1,1,1 1,3,0,3,0,4,0,0,0,1,1,0,1,0 1,0,0,3,2,5,3,0,0,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,0,1,1 0,0,1,2,2,2,1,0,0,1,1,2,1,0 2,0,1,2,0,10,2,0,1,1,1,1,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 1,0,3,2,1,1,5,0,1,1,1,0,1,0 0,0,1,2,2,5,1,0,0,1,1,0,1,0 0,0,6,2,1,8,5,0,0,1,1,0,1,0 1,0,8,0,0,10,2,4,1,1,1,0,1,0 0,0,3,2,2,2,5,4,0,1,1,2,1,0 1,0,0,3,1,3,3,0,1,1,1,1,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,2,1,1,0,1,1,1,0,1,0 0,0,3,2,0,1,2,4,1,1,1,0,1,0 0,1,3,2,2,1,3,0,1,1,1,0,1,0 1,4,5,2,0,0,2,0,1,1,1,1,1,0 1,0,1,2,0,7,2,0,1,1,1,0,1,0 0,4,0,3,2,2,3,0,1,1,1,2,1,0 1,0,1,2,3,8,5,0,0,1,1,1,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,0 1,4,4,3,0,5,2,0,1,1,1,1,1,1 2,0,1,2,0,3,2,0,1,1,1,1,1,1 2,4,10,3,0,5,2,0,1,1,1,2,1,0 1,3,1,2,0,2,2,0,1,1,1,1,1,0 2,0,4,3,0,5,2,1,1,1,1,0,1,1 0,0,3,2,2,6,1,0,1,1,1,2,1,0 1,0,5,2,0,5,2,0,1,1,1,1,1,0 1,0,14,0,1,10,5,0,1,1,1,0,1,0 0,0,3,2,0,12,2,0,1,1,1,0,1,0 0,5,5,2,2,12,3,0,1,1,1,0,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,1 1,5,0,3,0,8,2,0,1,1,1,0,1,0 0,0,3,2,2,9,1,4,1,1,1,1,1,0 2,0,4,3,0,5,2,0,1,1,1,2,1,0 0,0,9,1,2,3,1,0,1,1,1,0,1,0 2,1,1,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,0,6,2,0,1,1,1,0,1,0 1,0,3,2,0,2,2,0,1,1,1,0,1,0 0,0,0,3,2,8,1,0,0,1,1,0,1,0 1,1,3,2,0,9,2,0,1,1,1,2,1,0 0,0,3,2,2,6,3,0,1,1,1,0,1,0 0,4,0,3,2,5,3,0,0,1,1,1,1,0 0,0,0,3,2,5,1,0,1,1,1,2,1,0 0,0,0,3,2,6,1,0,1,1,1,2,1,0 0,0,1,2,0,5,2,0,1,1,1,0,1,0 2,2,6,2,1,3,3,0,1,1,1,1,1,0 0,0,7,1,0,6,2,0,1,1,1,0,1,0 1,0,10,3,2,5,3,0,0,1,1,1,1,0 1,3,3,2,0,5,2,0,1,1,1,0,1,1 1,4,3,2,0,8,0,0,0,1,1,2,1,1 1,0,0,3,2,5,3,0,0,1,1,1,1,1 0,5,3,2,2,4,3,0,1,1,1,0,1,0 2,3,0,3,1,4,5,0,0,1,1,0,1,0 0,0,9,1,3,10,5,4,1,1,1,0,1,0 0,5,3,2,2,8,1,0,1,1,1,0,1,0 1,0,3,2,1,2,3,4,1,1,1,0,1,0 0,0,1,2,0,3,0,4,0,1,1,0,1,0 0,0,0,3,2,5,3,0,1,1,1,1,1,0 0,0,5,2,2,4,3,0,1,1,1,1,1,0 1,5,1,2,0,1,2,0,1,1,1,0,1,0 1,0,3,2,1,8,3,0,0,1,1,0,1,0 1,0,3,2,2,2,5,4,1,1,1,0,1,0 0,1,0,3,0,1,2,0,1,1,1,0,1,0 1,3,1,2,4,0,3,0,0,1,1,1,1,1 0,0,12,1,0,2,1,0,0,1,1,2,1,0 0,0,1,2,3,3,5,4,0,1,1,0,1,0 1,3,3,2,2,8,3,2,1,1,1,0,1,0 0,0,5,2,2,0,1,0,1,1,1,0,1,0 1,0,11,0,0,2,0,0,0,1,1,2,1,0 2,0,3,2,0,10,2,0,1,1,1,0,1,1 0,0,6,2,2,3,3,0,1,1,1,0,1,0 1,0,1,2,0,3,2,0,1,1,1,1,1,1 0,0,3,2,2,6,3,0,0,1,1,0,1,0 0,0,0,3,2,3,3,0,1,1,1,1,1,1 1,0,0,3,1,5,5,0,1,1,1,1,1,0 0,0,3,2,2,6,1,0,1,1,1,2,1,0 0,0,0,3,2,0,5,1,0,1,1,2,1,0 1,0,10,3,0,10,2,0,1,1,1,1,1,1 1,1,0,3,0,1,2,0,1,1,1,1,1,0 2,0,10,3,0,0,2,0,1,1,1,2,1,1 2,0,3,2,1,9,3,0,0,1,1,1,1,0 1,4,1,2,0,4,2,0,1,1,1,0,1,1 1,3,5,2,1,8,3,0,0,1,1,0,1,0 0,4,6,2,0,12,2,0,1,1,1,0,1,0 0,1,3,2,0,7,2,0,1,1,1,0,1,0 1,0,1,2,0,10,2,0,1,1,1,0,1,1 0,0,1,2,0,1,2,0,1,1,1,1,1,0 0,0,6,2,5,8,3,0,0,1,1,0,1,0 0,0,4,3,0,5,2,1,1,1,1,2,1,1 2,0,1,2,0,4,2,0,1,1,1,1,1,1 1,0,1,2,0,10,2,0,1,1,1,0,1,0 0,0,3,2,2,2,1,0,1,1,1,1,1,0 2,4,0,3,0,5,2,0,1,1,1,0,1,1 0,0,6,2,0,1,2,0,1,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,3,2,2,3,1,0,1,1,1,1,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,0 1,0,1,2,4,8,5,0,0,1,1,1,1,0 0,0,5,2,0,1,2,0,1,1,1,0,1,0 1,4,0,3,0,1,2,0,1,1,1,0,1,0 2,0,3,2,0,2,2,0,1,1,1,0,1,0 0,0,3,2,2,8,5,4,0,1,1,0,1,0 1,4,0,3,0,3,2,0,1,1,1,0,1,1 0,0,14,0,0,10,2,0,1,1,1,0,1,0 1,5,3,2,1,8,5,0,0,1,1,1,1,1 0,0,1,2,2,2,1,0,0,1,1,2,1,0 0,0,12,1,2,6,1,4,1,1,1,0,1,0 1,0,10,3,0,5,2,0,1,1,1,1,1,1 2,0,3,2,0,3,0,0,0,1,1,2,1,0 1,0,4,3,0,5,2,0,1,1,1,0,1,1 0,3,3,2,0,8,2,3,1,1,1,0,1,0 0,0,0,3,2,5,3,0,1,1,1,0,1,0 0,0,1,2,2,8,3,0,0,1,1,0,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 0,0,3,2,0,8,0,0,0,1,1,2,1,0 0,0,1,2,0,10,2,0,1,1,1,0,1,0 1,0,3,2,0,4,2,0,1,1,1,0,1,1 1,0,1,2,0,3,2,0,1,1,1,1,1,1 1,0,0,3,0,4,2,0,1,1,1,0,1,1 1,0,1,2,0,2,2,1,1,1,1,0,1,0 1,2,0,3,0,3,2,0,1,1,1,1,1,1 1,1,0,3,0,3,0,1,0,1,1,1,1,0 1,0,1,2,4,3,5,0,0,1,1,2,1,0 0,4,0,3,2,5,1,0,0,1,1,2,1,0 0,0,3,2,1,8,3,0,0,1,1,2,1,0 2,2,3,2,0,1,2,0,1,1,1,0,1,1 0,0,1,2,2,6,1,0,1,1,1,1,1,0 0,0,1,2,2,4,1,0,1,1,1,2,1,0 2,4,3,2,1,8,3,0,0,1,1,0,1,0 2,1,7,1,3,1,3,0,1,1,1,0,1,0 0,0,12,1,2,2,4,4,0,1,1,2,1,0 1,0,1,2,2,3,3,0,1,1,1,1,1,0 0,0,1,2,0,1,2,0,1,1,1,1,1,1 3,0,3,2,4,2,5,0,0,1,1,2,1,0 1,0,3,2,3,8,5,0,0,1,1,0,1,0 0,0,1,2,1,10,3,0,1,1,1,0,1,0 1,0,1,2,0,8,0,0,0,1,1,2,1,1 0,0,3,2,3,2,5,0,0,1,1,2,1,0 0,0,0,3,0,5,0,0,0,1,1,1,1,1 2,0,1,2,0,10,2,0,1,1,1,2,1,1 0,0,3,2,0,7,0,0,0,1,1,0,1,0 1,4,1,2,1,8,5,0,0,1,1,0,1,0 0,0,9,1,2,1,5,0,1,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,0 2,3,1,2,0,5,2,0,1,1,1,0,1,0 1,4,13,3,0,4,2,0,1,1,1,1,1,1 0,5,1,2,2,0,3,0,0,1,1,1,1,0 2,0,3,2,0,4,2,0,1,1,1,0,1,1 1,0,1,2,0,0,2,0,1,1,1,0,1,0 0,0,3,2,2,8,1,0,1,1,1,0,1,0 0,0,1,2,2,5,4,4,0,1,1,2,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,0 2,0,1,2,1,4,3,0,0,1,1,0,1,0 1,5,10,3,0,5,2,0,1,1,1,0,1,1 0,0,7,1,0,7,2,0,1,1,1,0,1,0 0,0,5,2,2,8,3,0,0,1,1,2,1,0 2,0,1,2,1,5,3,0,1,1,1,1,1,1 1,0,3,2,1,2,3,0,1,1,1,0,1,0 0,0,3,2,1,2,3,0,1,1,1,0,1,1 1,0,0,3,0,4,2,0,1,1,1,0,1,1 1,3,1,2,0,8,2,0,1,1,1,0,1,1 1,0,1,2,0,2,0,4,0,1,1,0,1,0 0,0,1,2,0,3,2,0,1,1,1,1,1,0 0,0,3,2,0,8,2,0,1,1,1,0,1,0 1,1,1,2,3,3,5,0,1,1,1,1,1,0 0,0,1,2,2,2,4,0,0,1,1,2,1,0 0,2,0,3,2,3,3,0,1,1,1,1,1,1 0,0,1,2,2,3,1,0,0,1,1,2,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,0 1,0,2,1,1,1,3,0,0,1,1,1,1,0 0,0,3,2,2,6,3,0,1,1,1,0,1,0 0,0,1,2,0,1,2,0,1,1,1,1,1,0 1,0,6,2,0,0,2,0,1,1,1,0,1,1 1,0,3,2,1,7,5,0,0,1,1,0,1,0 0,0,13,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,2,8,3,0,1,1,1,0,1,0 0,0,3,2,2,7,1,0,1,1,1,0,1,0 0,0,0,3,1,5,3,0,0,1,1,0,1,1 0,0,0,3,0,2,0,1,0,1,1,0,1,0 0,0,2,1,2,2,1,4,1,1,1,2,1,0 0,0,14,0,2,2,3,0,1,1,1,1,1,0 0,0,3,2,2,3,1,4,0,1,1,2,1,0 0,5,1,2,2,8,1,0,0,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,2,1,0 1,1,6,2,0,0,2,0,1,1,1,2,1,1 0,0,0,3,0,0,2,0,1,1,1,2,1,0 0,0,0,3,2,5,3,0,0,1,1,2,1,0 0,5,3,2,2,2,3,0,0,1,1,0,1,0 1,0,3,2,0,4,2,0,1,1,1,1,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,1 1,0,0,3,0,4,2,0,1,1,1,2,1,1 0,0,8,0,4,2,5,0,0,1,1,1,1,0 0,0,3,2,0,1,1,0,1,1,1,0,1,0 0,0,1,2,2,8,5,0,0,1,1,2,1,0 0,0,0,3,2,8,3,0,0,1,1,0,1,0 1,0,0,3,1,11,5,0,0,1,1,2,1,0 1,4,1,2,0,12,2,0,1,1,1,1,1,1 0,0,10,3,0,1,2,0,1,1,1,0,1,0 0,0,3,2,0,8,0,0,0,1,1,1,1,1 0,4,3,2,2,5,3,0,0,1,1,0,1,0 1,0,1,2,0,3,2,0,1,1,1,1,1,1 1,0,3,2,2,2,5,4,0,1,1,0,1,0 1,4,3,2,0,7,2,4,1,1,1,0,1,1 0,0,1,2,1,8,3,0,1,1,1,0,1,0 2,0,3,2,1,8,3,0,0,1,1,0,1,0 0,0,0,3,2,0,1,0,1,1,1,0,1,0 1,2,1,2,0,1,2,0,1,1,1,1,1,1 0,0,5,2,1,1,3,0,1,1,1,1,1,0 0,4,1,2,0,5,2,0,1,1,1,0,1,0 0,0,2,1,2,2,5,4,0,1,1,0,1,0 0,0,3,2,0,10,2,0,1,1,1,1,1,1 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,3,2,2,1,3,0,1,1,1,2,1,0 1,4,3,2,1,12,5,0,0,1,1,1,1,0 1,0,1,2,4,4,5,0,0,1,1,0,1,0 0,0,4,3,2,5,3,0,0,1,1,1,1,0 2,0,0,3,0,3,2,0,1,1,1,1,1,0 0,0,3,2,2,1,5,0,1,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,0,3,1,4,3,0,1,1,1,1,1,1 0,0,3,2,2,7,1,0,1,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,1 1,0,3,2,1,6,3,0,0,1,1,1,1,0 1,0,3,2,2,2,5,4,0,1,1,0,1,0 0,0,1,2,2,4,4,4,0,1,1,0,1,0 0,0,5,2,1,7,3,0,0,1,1,1,1,0 1,0,0,3,0,0,0,0,0,1,1,2,1,1 0,0,3,2,2,2,1,0,1,1,1,0,1,0 1,5,1,2,1,2,1,0,1,1,1,0,1,0 0,0,3,2,2,3,3,0,0,1,1,0,1,0 0,1,6,2,0,5,0,0,0,1,1,1,1,1 0,0,1,2,0,3,4,0,0,1,1,2,1,0 0,0,0,3,2,5,3,0,0,1,1,0,1,0 2,0,3,2,4,8,3,0,0,1,1,0,1,0 0,5,0,3,2,5,3,0,0,1,1,0,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,1 0,0,2,1,2,1,4,0,1,1,1,1,1,0 1,0,3,2,2,2,3,0,0,1,1,2,1,0 0,0,1,2,1,7,5,0,1,1,1,1,1,0 0,5,6,2,0,12,2,0,1,1,1,0,1,0 0,0,1,2,0,7,2,0,1,1,1,0,1,0 0,0,0,3,0,5,2,0,1,1,1,0,1,0 1,0,3,2,2,8,5,4,0,1,1,0,1,0 1,3,3,2,0,8,2,0,1,1,1,1,1,0 3,0,14,0,0,10,2,4,1,1,1,0,1,0 0,2,1,2,0,4,2,0,1,1,1,1,1,1 0,0,3,2,0,10,2,4,1,1,1,0,1,0 2,0,1,2,1,4,5,0,0,1,1,0,1,0 1,1,3,2,0,7,2,0,1,1,1,0,1,1 1,0,0,3,0,4,0,0,0,1,1,2,1,1 1,0,3,2,0,1,2,0,1,1,1,0,1,1 0,0,3,2,0,7,2,0,1,1,1,0,1,1 1,0,6,2,1,5,5,0,0,1,1,0,1,1 0,0,3,2,2,2,3,4,1,1,1,1,1,0 2,0,3,2,0,7,2,0,1,1,1,0,1,0 1,0,3,2,2,8,1,0,0,1,1,1,1,0 0,2,1,2,0,4,2,0,1,1,1,1,1,0 0,0,9,1,2,5,3,0,0,1,1,2,1,0 1,5,10,3,0,4,2,0,1,1,1,2,1,1 1,0,0,3,0,1,2,0,1,1,1,1,1,1 0,0,3,2,0,10,2,0,1,1,1,0,1,0 1,1,3,2,0,1,2,0,1,1,1,2,1,0 0,0,3,2,2,6,1,0,1,1,1,0,1,0 0,0,1,2,2,8,1,0,0,1,1,1,1,0 0,0,6,2,2,1,1,0,1,1,1,0,1,0 1,0,0,3,2,4,3,0,1,1,1,1,1,0 2,1,1,2,0,3,2,0,1,1,1,0,1,0 0,0,3,2,2,1,3,0,1,1,1,0,1,0 1,0,3,2,0,10,2,4,1,1,1,0,1,0 2,0,12,1,0,7,2,0,1,1,1,0,1,0 1,4,6,2,2,2,3,0,1,1,1,0,1,0 1,0,6,2,0,10,2,0,1,1,1,1,1,0 2,0,1,2,0,4,2,0,1,1,1,0,1,1 0,0,3,2,0,3,2,0,1,1,1,1,1,0 1,0,0,3,0,8,2,0,1,1,1,1,1,1 0,0,0,3,2,0,3,0,0,1,1,2,1,0 0,0,10,3,2,3,3,0,1,1,1,1,1,0 0,0,1,2,1,3,5,0,0,1,1,1,1,0 1,0,14,0,0,1,2,0,1,1,1,0,1,0 2,4,3,2,0,12,2,0,1,1,1,0,1,0 0,5,6,2,1,4,3,0,0,1,1,2,1,0 0,0,3,2,2,6,3,0,1,1,1,1,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,1 0,0,6,2,2,8,1,0,0,1,1,0,1,0 3,4,13,3,0,4,2,0,1,1,1,0,1,0 1,0,12,1,5,1,4,0,1,1,1,0,1,0 0,0,7,1,5,6,1,0,1,1,1,0,1,0 1,0,1,2,1,3,5,4,0,1,1,0,1,0 1,0,0,3,0,5,0,0,0,1,1,0,1,1 1,0,10,3,0,5,2,0,1,1,1,1,1,0 0,1,0,3,1,4,5,0,1,1,1,1,1,1 2,4,12,1,3,2,3,4,0,1,1,1,1,0 0,0,3,2,2,3,1,0,1,1,1,0,1,0 1,0,0,3,0,5,2,0,1,1,1,2,1,0 2,3,13,3,0,5,2,0,1,1,1,0,1,1 1,0,3,2,0,1,2,0,1,1,1,0,1,1 0,0,3,2,2,8,3,0,0,1,1,2,1,0 0,0,1,2,2,12,3,4,0,1,1,0,1,1 1,4,1,2,0,1,2,0,1,1,1,0,1,0 2,2,13,3,0,5,2,0,1,1,1,1,1,1 1,0,0,3,4,2,3,0,0,1,1,2,1,1 1,1,0,3,0,4,2,0,1,1,1,2,1,0 0,0,3,2,1,7,5,0,1,1,1,0,1,0 1,0,1,2,2,1,3,4,1,1,1,1,1,0 0,0,3,2,0,9,2,0,1,1,1,1,1,0 0,0,3,2,2,3,1,0,0,1,1,2,1,0 2,0,11,0,0,9,2,0,1,1,1,0,1,0 1,0,3,2,2,7,3,0,1,1,1,0,1,0 1,0,1,2,1,1,3,4,0,1,1,1,1,0 0,0,3,2,2,6,3,0,1,1,1,1,1,0 0,0,3,2,2,9,1,4,1,1,1,2,1,0 1,1,3,2,0,1,2,0,1,1,1,0,1,0 1,1,8,0,0,9,2,0,1,1,1,0,1,0 1,0,5,2,0,8,0,0,0,1,1,2,1,1 0,3,4,3,0,5,2,0,1,1,1,1,1,0 2,0,3,2,0,0,2,0,1,1,1,2,1,1 0,0,3,2,0,2,0,0,0,1,1,2,1,0 0,0,3,2,2,6,4,0,1,1,1,1,1,0 0,1,1,2,0,3,2,2,1,1,1,1,1,1 0,1,3,2,2,8,1,1,0,1,1,2,1,0 0,0,3,2,2,3,3,4,1,1,1,0,1,0 1,0,3,2,0,3,2,0,1,1,1,1,1,1 0,0,1,2,2,2,3,0,0,1,1,0,1,0 0,0,1,2,1,1,5,0,1,1,1,1,1,0 2,4,0,3,0,5,2,0,1,1,1,0,1,1 0,0,1,2,2,6,3,0,1,1,1,0,1,0 0,0,0,3,2,5,3,0,1,1,1,0,1,0 0,0,8,0,2,2,3,0,0,1,1,0,1,0 0,0,3,2,2,1,1,0,1,1,1,0,1,0 0,0,1,2,0,5,2,0,1,1,1,0,1,1 1,5,5,2,0,12,2,0,1,1,1,1,1,0 0,0,8,0,0,9,2,0,1,1,1,1,1,0 2,0,3,2,0,9,2,0,1,1,1,2,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,2,3,1,0,0,1,1,2,1,0 0,0,12,1,2,1,1,0,1,1,1,0,1,0 0,0,0,3,2,4,3,0,0,1,1,1,1,1 0,0,2,1,2,6,1,0,1,1,1,2,1,0 0,5,0,3,2,5,1,0,1,1,1,0,1,0 1,0,3,2,1,2,3,0,0,1,1,0,1,0 1,0,1,2,0,4,2,0,1,1,1,1,1,1 2,3,6,2,4,2,5,4,0,1,1,0,1,0 0,0,3,2,2,2,3,0,1,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 1,3,0,3,0,8,2,0,1,1,1,1,1,0 1,0,5,2,1,4,5,0,1,1,1,0,1,0 1,0,3,2,0,3,2,0,1,1,1,1,1,0 0,4,0,3,1,5,3,0,1,1,1,0,1,0 0,0,3,2,0,7,2,0,1,1,1,1,1,1 1,0,2,1,1,10,3,0,1,1,1,0,1,0 2,0,1,2,0,1,2,0,1,1,1,0,1,1 1,0,6,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,2,1,5,0,1,1,1,0,1,0 1,0,1,2,1,4,3,0,1,1,1,1,1,0 1,0,13,3,0,4,2,0,1,1,1,1,1,1 0,0,1,2,2,8,1,0,0,1,1,2,1,0 2,3,3,2,0,0,2,0,1,1,1,0,1,1 1,0,5,2,1,7,1,0,1,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,0,3,0,3,2,0,1,1,1,1,1,1 1,4,1,2,0,4,2,0,1,1,1,0,1,0 0,0,1,2,0,0,2,0,1,1,1,1,1,0 0,1,3,2,2,1,3,0,1,1,1,2,1,0 1,0,0,3,0,2,2,0,1,1,1,2,1,0 0,0,14,0,5,10,5,3,1,1,1,2,1,0 1,0,10,3,1,4,3,0,0,1,1,1,1,1 1,0,3,2,3,10,4,0,1,1,1,1,1,0 1,0,2,1,0,10,2,0,1,1,1,0,1,0 0,4,3,2,2,0,3,0,0,1,1,0,1,0 0,0,12,1,2,1,1,0,1,1,1,0,1,0 0,0,0,3,2,2,3,0,1,1,1,0,1,0 1,1,4,3,0,4,2,0,1,1,1,1,1,1 1,5,3,2,0,12,2,0,1,1,1,1,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,6,2,5,8,5,0,0,1,1,0,1,0 1,5,0,3,0,5,2,0,1,1,1,1,1,1 1,0,3,2,0,3,2,0,1,1,1,0,1,0 1,0,1,2,1,0,1,0,0,1,1,1,1,0 1,0,3,2,1,7,5,0,1,1,1,0,1,0 2,0,0,3,0,1,4,0,1,1,1,0,1,0 2,0,3,2,0,1,2,0,1,1,1,2,1,0 1,0,6,2,0,7,2,0,1,1,1,0,1,0 1,0,3,2,1,9,3,0,0,1,1,0,1,0 1,0,0,3,2,1,3,0,1,1,1,0,1,0 0,0,1,2,2,10,1,0,1,1,1,0,1,0 0,0,2,1,2,1,1,0,1,1,1,2,1,0 0,0,1,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,2,2,3,0,1,1,1,2,1,0 2,4,10,3,4,5,5,0,1,1,1,2,1,1 1,2,3,2,2,4,3,4,1,1,1,1,1,0 2,0,2,1,3,2,3,4,0,1,1,2,1,0 0,0,1,2,2,9,1,0,1,1,1,2,1,0 0,0,1,2,0,4,2,0,1,1,1,1,1,0 0,0,7,1,0,1,2,0,1,1,1,0,1,0 0,0,1,2,0,5,2,0,1,1,1,2,1,1 1,4,3,2,1,2,5,0,0,1,1,0,1,0 0,0,3,2,2,5,4,0,0,1,1,0,1,0 0,1,0,3,0,5,2,4,1,1,1,1,1,1 0,0,1,2,0,8,0,0,0,1,1,0,1,1 2,0,12,1,0,10,2,0,1,1,1,1,1,1 1,2,3,2,1,4,3,0,0,1,1,0,1,0 1,1,0,3,2,1,3,0,0,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 1,4,12,1,0,1,2,0,1,1,1,0,1,0 1,0,2,1,1,2,5,0,0,1,1,2,1,0 1,4,0,3,0,5,2,0,1,1,1,0,1,1 1,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,1,2,0,4,2,0,1,1,1,0,1,1 1,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,1,2,0,10,2,0,1,1,1,1,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,1 1,4,5,2,0,8,2,0,1,1,1,0,1,0 0,0,12,1,2,2,3,0,1,1,1,2,1,0 0,0,0,3,2,0,3,0,1,1,1,0,1,0 1,1,6,2,1,3,3,0,1,1,1,1,1,0 0,0,0,3,0,8,2,0,1,1,1,0,1,1 2,0,10,3,1,4,5,0,1,1,1,0,1,1 1,0,1,2,0,5,2,0,1,1,1,1,1,1 1,0,0,3,0,5,2,0,1,1,1,0,1,1 2,0,6,2,0,5,2,0,1,1,1,1,1,1 1,0,1,2,1,4,3,0,1,1,1,1,1,0 1,0,9,1,1,10,3,0,1,1,1,0,1,0 1,0,0,3,2,5,1,0,1,1,1,1,1,0 0,0,2,1,2,6,1,0,1,1,1,2,1,0 0,4,3,2,0,12,2,0,1,1,1,0,1,1 1,0,3,2,0,7,2,0,1,1,1,0,1,1 2,1,3,2,0,9,2,0,1,1,1,1,1,0 1,0,3,2,0,7,2,0,1,1,1,1,1,1 0,0,10,3,0,4,2,0,1,1,1,1,1,1 0,0,0,3,2,5,3,0,0,1,1,0,1,0 0,0,8,0,2,7,1,0,1,1,1,0,1,0 1,0,3,2,0,5,2,0,1,1,1,0,1,0 1,0,0,3,0,3,2,0,1,1,1,1,1,1 0,0,2,1,2,0,4,0,1,1,1,0,1,0 0,0,2,1,2,2,1,0,1,1,1,2,1,0 1,0,1,2,1,2,3,4,1,1,1,1,1,1 0,0,0,3,0,4,2,0,1,1,1,0,1,1 0,0,2,1,2,1,1,0,1,1,1,0,1,0 2,0,3,2,1,3,3,0,0,1,1,0,1,0 2,1,1,2,0,1,2,0,1,1,1,1,1,0 1,0,3,2,3,1,5,4,0,1,1,0,1,0 1,2,10,3,0,5,2,0,1,1,1,1,1,1 0,0,1,2,2,3,5,0,0,1,1,0,1,0 1,0,14,0,2,2,3,0,1,1,1,2,1,0 1,0,0,3,3,2,3,0,1,1,1,1,1,0 1,3,3,2,2,8,3,0,0,1,1,0,1,0 1,0,1,2,0,7,2,0,1,1,1,1,1,1 0,0,8,0,0,9,2,0,1,1,1,1,1,0 1,3,0,3,2,5,3,0,0,1,1,1,1,0 1,1,0,3,0,4,2,0,1,1,1,1,1,0 1,0,3,2,1,4,5,0,0,1,1,1,1,0 1,0,3,2,2,1,1,0,1,1,1,1,1,1 1,4,0,3,1,5,5,0,0,1,1,1,1,0 1,4,10,3,0,4,2,4,1,1,1,1,1,1 0,0,12,1,0,6,2,0,1,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,6,2,2,2,3,0,0,1,1,2,1,0 1,5,3,2,3,1,3,0,1,1,1,1,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,0 0,0,15,0,0,7,0,1,0,1,1,0,1,0 1,4,10,3,1,5,5,0,0,1,1,1,1,0 1,1,3,2,0,4,0,0,0,1,1,1,1,0 1,0,3,2,2,2,3,4,0,1,1,2,1,0 0,2,0,3,0,4,2,0,1,1,1,1,1,0 0,0,3,2,0,8,2,0,1,1,1,0,1,0 0,0,2,1,2,1,1,0,1,1,1,2,1,0 1,0,3,2,3,1,5,4,0,1,1,0,1,0 1,1,3,2,2,10,1,0,1,1,1,0,1,0 3,0,1,2,4,11,5,0,0,1,1,2,1,0 1,0,0,3,0,4,2,0,1,1,1,0,1,0 0,0,12,1,2,2,1,0,0,1,1,0,1,0 0,3,6,2,0,1,2,0,1,1,1,0,1,1 0,0,1,2,2,9,1,0,1,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 1,0,1,2,3,2,4,0,0,1,1,0,1,0 1,0,3,2,0,10,2,0,1,1,1,0,1,0 0,0,5,2,0,8,2,0,1,1,1,1,1,1 0,0,10,3,0,5,2,0,1,1,1,1,1,1 0,0,1,2,2,7,1,0,0,1,1,0,1,0 0,0,2,1,0,8,2,0,1,1,1,0,1,1 0,0,0,3,2,5,3,0,1,1,1,2,1,0 1,0,3,2,0,0,2,0,1,1,1,1,1,1 0,0,1,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,2,3,1,0,0,1,1,2,1,0 0,0,3,2,0,2,1,0,0,1,1,2,1,0 0,0,3,2,2,1,1,2,1,1,1,0,1,0 1,0,1,2,2,3,3,0,1,1,1,1,1,0 1,0,0,3,4,5,3,0,0,1,1,1,1,0 0,0,6,2,2,7,1,0,1,1,1,2,1,0 1,0,5,2,0,1,2,0,1,1,1,1,1,1 1,0,0,3,1,5,5,0,0,1,1,1,1,0 1,0,2,1,0,8,2,0,1,1,1,0,1,1 1,0,3,2,0,7,2,0,1,1,1,0,1,1 2,0,1,2,2,1,3,4,0,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,0 1,0,3,2,1,7,3,0,1,1,1,1,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,1 0,0,6,2,0,5,2,0,1,1,1,1,1,1 1,0,3,2,5,2,5,4,0,1,1,1,1,1 0,4,3,2,2,6,1,0,1,1,1,0,1,0 1,0,3,2,3,11,3,0,0,1,1,1,1,0 1,1,3,2,0,4,2,0,1,1,1,2,1,0 1,0,1,2,0,8,0,0,0,1,1,0,1,0 1,0,1,2,0,3,2,0,1,1,1,1,1,1 1,5,0,3,0,5,0,0,0,1,1,0,1,1 1,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,3,2,0,7,0,0,0,1,1,0,1,0 1,0,3,2,0,7,4,1,0,1,1,0,1,0 2,0,3,2,0,10,2,0,1,1,1,0,1,1 0,0,1,2,2,8,1,0,0,1,1,2,1,0 1,4,10,3,0,5,2,0,1,1,1,1,1,1 1,0,3,2,0,7,2,0,1,1,1,1,1,1 0,0,2,1,2,3,1,0,0,1,1,0,1,0 1,2,3,2,0,3,2,0,1,1,1,2,1,1 3,0,2,1,0,7,2,0,1,1,1,0,1,0 1,0,12,1,0,7,2,4,1,1,1,0,1,0 1,5,5,2,2,4,3,0,1,1,1,1,1,0 1,3,3,2,0,8,2,0,1,1,1,1,1,1 2,2,3,2,0,4,2,4,1,1,1,1,1,1 0,0,3,2,2,8,3,4,1,1,1,0,1,0 1,2,10,3,0,4,0,0,0,1,1,1,1,1 1,0,10,3,0,0,2,0,1,1,1,0,1,1 1,0,3,2,1,8,5,0,0,1,1,2,1,1 2,3,1,2,1,8,3,0,0,1,1,0,1,0 2,0,1,2,0,4,2,0,1,1,1,0,1,0 0,0,5,2,0,1,2,0,1,1,1,1,1,0 1,0,3,2,0,2,2,0,1,1,1,0,1,0 1,1,13,3,3,5,5,0,0,1,1,2,1,0 2,1,3,2,1,1,3,0,1,1,1,1,1,1 0,0,0,3,2,6,3,0,1,1,1,0,1,0 2,0,3,2,4,8,3,0,0,1,1,2,1,0 0,0,3,2,2,8,3,0,0,1,1,0,1,0 1,0,3,2,2,0,3,0,0,1,1,2,1,1 2,0,10,3,0,5,2,0,1,1,1,2,1,0 0,5,1,2,0,8,2,0,1,1,1,0,1,0 2,2,1,2,0,3,2,0,1,1,1,0,1,0 3,0,3,2,0,2,2,0,1,1,1,2,1,0 1,1,3,2,0,1,2,0,1,1,1,0,1,0 1,0,1,2,0,10,2,0,1,1,1,1,1,0 1,0,3,2,2,3,3,0,1,1,1,1,1,1 0,0,0,3,2,5,3,0,1,1,1,1,1,0 0,4,1,2,2,12,3,0,1,1,1,0,1,1 2,1,3,2,1,4,3,0,1,1,1,1,1,0 0,0,0,3,2,5,3,0,1,1,1,1,1,0 2,2,3,2,0,3,2,0,1,1,1,2,1,1 0,0,1,2,2,3,1,0,1,1,1,1,1,0 0,0,3,2,0,7,2,0,1,1,1,1,1,0 1,0,0,3,0,1,2,0,1,1,1,1,1,0 0,0,3,2,1,1,5,0,0,1,1,1,1,0 0,0,3,2,2,8,3,0,0,1,1,1,1,0 0,0,2,1,2,6,1,0,1,1,1,1,1,0 3,2,1,2,0,3,2,0,1,1,1,2,1,1 0,1,3,2,2,1,3,4,1,1,1,0,1,0 1,1,6,2,0,9,2,0,1,1,1,1,1,1 1,0,3,2,2,1,1,0,1,1,1,0,1,0 1,4,1,2,0,9,2,0,1,1,1,0,1,0 1,0,2,1,2,7,3,0,1,1,1,0,1,0 0,0,3,2,1,2,1,0,0,1,1,0,1,0 1,2,0,3,0,4,2,0,1,1,1,1,1,1 0,3,1,2,0,0,2,0,1,1,1,0,1,1 0,0,3,2,0,10,2,0,1,1,1,0,1,0 0,0,0,3,0,0,2,0,1,1,1,0,1,0 0,0,3,2,0,3,2,0,1,1,1,1,1,0 1,0,1,2,0,6,0,0,0,1,1,2,1,0 0,0,8,0,0,9,2,0,1,1,1,0,1,0 0,0,1,2,2,6,4,1,1,1,1,1,1,0 0,0,4,3,2,5,3,1,0,1,1,0,1,0 0,0,6,2,0,1,2,0,1,1,1,0,1,1 0,0,1,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,2,2,1,0,1,1,1,0,1,0 1,0,10,3,1,5,5,0,1,1,1,1,1,0 0,0,3,2,0,8,0,0,0,1,1,2,1,0 1,0,5,2,1,3,5,0,0,1,1,0,1,0 2,0,10,3,0,5,2,1,1,1,1,0,1,1 1,1,1,2,1,4,5,0,0,1,1,1,1,0 0,0,3,2,2,3,1,2,0,1,1,2,1,0 2,0,1,2,0,12,2,0,1,1,1,1,1,0 1,0,3,2,0,6,2,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 1,0,3,2,2,4,3,4,0,1,1,0,1,0 0,0,1,2,1,8,5,0,0,1,1,0,1,0 1,3,3,2,0,8,2,0,1,1,1,0,1,0 0,0,5,2,2,0,3,0,0,1,1,2,1,0 2,0,1,2,1,9,3,1,1,1,1,0,1,0 1,0,1,2,0,7,2,0,1,1,1,1,1,1 1,1,3,2,1,1,3,0,1,1,1,0,1,0 0,0,3,2,2,1,5,0,1,1,1,0,1,0 0,0,3,2,0,4,2,0,1,1,1,0,1,1 0,0,6,2,2,1,3,0,1,1,1,1,1,0 0,0,6,2,2,4,1,4,0,1,1,0,1,0 2,0,12,1,1,10,3,4,1,1,1,1,1,0 1,0,0,3,1,8,5,1,0,1,1,0,1,0 2,1,1,2,4,9,3,0,0,1,1,0,1,0 0,0,2,1,2,8,1,0,0,1,1,2,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,0 1,2,10,3,0,4,2,0,1,1,1,1,1,0 1,0,3,2,5,1,3,0,1,1,1,1,1,0 0,5,3,2,2,8,5,4,0,1,1,2,1,0 0,0,1,2,2,8,1,4,1,1,1,2,1,0 0,0,0,3,0,4,2,0,1,1,1,0,1,0 1,1,1,2,3,1,3,0,1,1,1,1,1,1 0,0,6,2,2,0,1,0,0,1,1,2,1,0 1,0,2,1,0,3,2,0,1,1,1,2,1,1 1,0,0,3,2,8,1,0,0,1,1,2,1,0 0,0,3,2,0,9,2,4,1,1,1,2,1,0 0,0,2,1,0,3,2,0,1,1,1,0,1,0 1,0,11,0,0,1,2,3,1,1,1,1,1,0 1,0,3,2,2,6,3,0,1,1,1,0,1,0 2,2,9,1,0,4,2,0,1,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,1 1,0,5,2,0,10,2,0,1,1,1,0,1,0 0,0,8,0,1,6,4,0,1,1,1,1,1,0 0,0,1,2,2,8,1,4,1,1,1,2,1,0 0,0,0,3,2,6,1,0,1,1,1,0,1,0 1,0,1,2,0,5,2,0,1,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,1,1,0 2,4,4,3,1,5,3,0,0,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,1 0,0,0,3,2,2,3,0,0,1,1,2,1,0 0,0,3,2,2,8,1,4,0,1,1,1,1,0 1,0,0,3,1,8,3,0,0,1,1,2,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 2,5,13,3,0,4,2,0,1,1,1,1,1,1 2,0,0,3,0,1,2,1,1,1,1,2,1,0 2,0,6,2,1,2,3,0,1,1,1,2,1,0 2,0,3,2,1,2,5,0,0,1,1,2,1,0 0,0,3,2,2,0,1,0,1,1,1,0,1,0 0,2,3,2,0,4,2,0,1,1,1,1,1,0 3,1,1,2,0,1,2,4,1,1,1,0,1,0 2,5,1,2,4,5,3,0,0,1,1,2,1,0 0,1,1,2,2,4,3,0,0,1,1,1,1,0 2,0,5,2,0,4,2,0,1,1,1,0,1,0 1,1,3,2,0,4,2,0,1,1,1,0,1,1 0,0,1,2,2,2,1,0,1,1,1,0,1,0 1,3,10,3,0,3,2,0,1,1,1,1,1,1 0,3,3,2,0,0,2,0,1,1,1,0,1,1 1,0,1,2,0,3,0,0,0,1,1,1,1,1 0,0,0,3,2,4,1,0,0,1,1,0,1,0 0,0,3,2,2,2,1,0,1,1,1,0,1,0 1,4,3,2,2,4,1,0,0,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,0,1,1 1,5,0,3,2,12,3,4,1,1,1,0,1,0 0,0,3,2,1,3,5,4,0,1,1,2,1,0 1,0,3,2,0,9,2,4,1,1,1,0,1,0 0,0,3,2,2,6,3,0,1,1,1,2,1,0 1,5,3,2,3,8,5,0,1,1,1,2,1,0 0,0,0,3,2,8,1,0,0,1,1,1,1,0 1,1,3,2,1,9,3,0,1,1,1,0,1,1 0,0,2,1,2,5,3,0,0,1,1,2,1,0 0,0,0,3,0,0,2,0,1,1,1,0,1,1 0,0,1,2,2,3,1,0,1,1,1,2,1,0 0,0,2,1,2,1,3,0,1,1,1,2,1,0 0,0,1,2,2,2,4,0,1,1,1,2,1,0 1,1,0,3,2,5,3,0,1,1,1,0,1,0 1,2,3,2,0,1,2,0,1,1,1,0,1,0 1,2,1,2,1,3,3,0,1,1,1,1,1,1 1,0,3,2,1,7,1,0,1,1,1,0,1,0 1,4,0,3,5,8,5,1,0,1,1,0,1,0 0,0,1,2,3,4,5,0,0,1,1,0,1,0 0,0,3,2,2,8,1,0,0,1,1,0,1,0 2,5,3,2,2,8,3,0,0,1,1,2,1,0 1,0,0,3,0,3,2,0,1,1,1,1,1,1 1,0,15,0,0,2,2,0,1,1,1,0,1,0 1,0,3,2,0,1,2,4,1,1,1,0,1,0 0,1,1,2,0,1,2,0,1,1,1,0,1,1 0,0,1,2,0,3,2,0,1,1,1,1,1,0 1,2,1,2,2,4,3,4,1,1,1,1,1,0 0,0,2,1,2,2,4,0,0,1,1,0,1,0 1,5,3,2,3,2,5,0,0,1,1,0,1,0 1,0,5,2,2,8,3,4,0,1,1,1,1,0 0,0,3,2,2,2,1,0,0,1,1,0,1,0 0,0,12,1,2,6,4,4,1,1,1,0,1,0 1,0,1,2,1,4,5,0,0,1,1,0,1,0 2,0,3,2,1,5,3,0,0,1,1,1,1,0 0,0,1,2,0,12,2,0,1,1,1,1,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,8,0,3,2,5,0,0,1,1,2,1,0 1,5,1,2,0,2,2,0,1,1,1,0,1,0 2,3,3,2,0,8,2,4,1,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,1,1,0 0,0,3,2,2,6,1,0,1,1,1,2,1,0 1,0,12,1,1,7,5,0,0,1,1,2,1,0 0,1,1,2,2,2,3,0,0,1,1,1,1,0 2,5,0,3,0,4,2,0,1,1,1,0,1,0 1,3,1,2,0,8,2,0,1,1,1,2,1,0 0,0,3,2,2,1,1,0,1,1,1,0,1,0 0,0,4,3,2,0,3,1,1,1,1,0,1,1 1,0,1,2,2,1,1,4,1,1,1,0,1,0 0,0,1,2,2,6,3,4,1,1,1,1,1,0 1,2,3,2,0,4,2,0,1,1,1,1,1,0 0,0,7,1,2,2,1,1,1,1,1,2,1,0 1,0,3,2,0,2,2,0,1,1,1,0,1,0 0,1,1,2,1,2,5,0,0,1,1,2,1,0 1,0,5,2,0,0,2,0,1,1,1,0,1,0 2,4,3,2,4,2,3,0,0,1,1,2,1,0 1,0,3,2,0,6,2,4,1,1,1,0,1,1 1,0,1,2,0,3,2,0,1,1,1,0,1,0 0,0,10,3,2,5,3,0,0,1,1,2,1,0 1,2,3,2,1,1,3,0,1,1,1,1,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,1 1,0,1,2,0,2,2,0,1,1,1,0,1,0 0,0,3,2,2,1,3,0,1,1,1,1,1,0 0,0,5,2,0,4,2,1,1,1,1,2,1,0 0,0,3,2,1,3,1,0,0,1,1,2,1,0 0,0,2,1,2,11,1,0,0,1,1,2,1,0 1,0,13,3,0,5,2,0,1,1,1,1,1,1 0,0,12,1,2,2,4,0,1,1,1,2,1,0 1,0,14,0,0,6,2,0,1,1,1,0,1,0 0,0,1,2,2,8,1,0,1,1,1,2,1,0 1,0,0,3,0,5,2,0,1,1,1,0,1,1 1,3,10,3,0,5,2,0,1,1,1,1,1,1 1,0,0,3,0,5,2,0,1,1,1,0,1,1 0,0,3,2,2,1,3,0,0,1,1,2,1,0 0,0,12,1,1,6,3,0,0,1,1,2,1,0 1,0,3,2,2,1,3,0,1,1,1,1,1,0 0,0,3,2,2,3,1,0,0,1,1,2,1,0 1,3,3,2,2,8,3,0,1,1,1,1,1,1 0,0,1,2,2,1,3,0,1,1,1,0,1,0 1,0,0,3,1,3,5,0,0,1,1,0,1,0 1,5,0,3,0,5,2,0,1,1,1,1,1,1 0,0,1,2,2,3,1,0,0,1,1,2,1,0 1,0,1,2,0,8,0,0,0,1,1,0,1,0 0,0,1,2,0,6,2,0,1,1,1,0,1,0 0,0,9,1,2,6,1,0,1,1,1,2,1,0 1,4,0,3,0,1,2,0,1,1,1,1,1,1 0,0,1,2,1,8,3,0,0,1,1,1,1,0 2,3,1,2,0,4,2,0,1,1,1,0,1,1 1,1,1,2,0,1,2,0,1,1,1,1,1,0 2,0,3,2,0,5,0,4,0,1,1,2,1,0 0,0,1,2,1,0,3,0,1,1,1,1,1,0 0,0,3,2,3,2,3,0,1,1,1,0,1,0 1,0,3,2,0,10,2,0,1,1,1,0,1,1 2,3,3,2,0,8,2,0,1,1,1,0,1,1 0,0,0,3,2,8,3,0,0,1,1,0,1,0 0,0,9,1,2,3,1,0,0,1,1,2,1,0 0,0,6,2,2,4,3,4,0,1,1,0,1,0 0,0,14,0,2,6,5,0,1,1,1,2,1,0 2,0,3,2,2,4,3,0,0,1,1,2,1,0 0,0,10,3,2,5,3,0,0,1,1,1,1,0 0,0,5,2,1,8,3,0,0,1,1,0,1,0 0,0,3,2,2,10,1,0,1,1,1,0,1,0 0,0,1,2,0,2,2,0,1,1,1,1,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,0 1,0,3,2,1,2,3,0,1,1,1,0,1,0 1,0,0,3,2,1,3,0,1,1,1,0,1,0 0,0,1,2,1,8,5,0,0,1,1,2,1,0 1,3,13,3,0,5,2,0,1,1,1,0,1,1 0,0,3,2,2,7,4,0,1,1,1,2,1,0 0,0,2,1,0,10,2,0,1,1,1,2,1,0 1,0,8,0,0,10,2,0,1,1,1,1,1,1 0,0,5,2,0,4,2,0,1,1,1,1,1,0 0,0,1,2,2,8,1,0,0,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,1 2,3,3,2,4,4,3,0,0,1,1,2,1,0 0,0,0,3,2,5,3,0,0,1,1,0,1,0 0,0,2,1,0,1,2,0,1,1,1,1,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,2,1,3,0,0,1,1,0,1,0 1,0,3,2,2,10,3,0,1,1,1,0,1,0 2,0,7,1,2,1,4,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 1,0,0,3,0,5,0,1,0,1,1,2,1,1 1,1,3,2,0,9,2,0,1,1,1,0,1,1 2,4,1,2,0,1,2,0,1,1,1,1,1,1 1,5,3,2,0,7,2,0,1,1,1,0,1,1 1,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,1,2,2,2,3,0,0,1,1,0,1,0 0,4,0,3,0,5,2,0,1,1,1,0,1,1 1,0,3,2,2,7,3,0,1,1,1,0,1,0 0,4,1,2,0,4,2,0,1,1,1,1,1,0 0,0,0,3,0,5,2,0,1,1,1,1,1,0 3,4,14,0,0,12,2,0,1,1,1,2,1,0 1,1,3,2,0,9,2,0,1,1,1,1,1,0 0,0,0,3,2,4,1,4,0,1,1,1,1,0 0,5,3,2,6,8,1,0,0,1,1,2,1,0 1,0,6,2,0,2,2,0,1,1,1,0,1,0 1,0,1,2,0,8,2,1,1,1,1,0,1,1 1,0,4,3,5,5,3,0,1,1,1,0,1,1 1,0,3,2,0,6,2,4,1,1,1,0,1,0 2,5,1,2,1,8,3,0,0,1,1,2,1,0 0,5,5,2,2,4,3,0,0,1,1,1,1,0 1,0,1,2,1,3,3,0,1,1,1,1,1,0 0,0,1,2,2,8,3,4,0,1,1,0,1,0 0,0,3,2,0,6,2,0,1,1,1,1,1,0 0,0,3,2,0,10,2,0,1,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,0 1,3,0,3,1,5,3,0,1,1,1,1,1,1 1,0,1,2,1,1,5,0,0,1,1,0,1,0 0,0,1,2,2,6,1,4,1,1,1,2,1,0 0,0,1,2,2,1,3,0,1,1,1,0,1,0 0,0,0,3,0,8,2,0,1,1,1,1,1,0 3,0,8,0,4,2,3,0,0,1,1,2,1,0 1,0,0,3,0,8,2,0,1,1,1,0,1,0 0,0,1,2,0,3,2,0,1,1,1,1,1,0 0,0,3,2,0,9,2,0,1,1,1,1,1,0 0,0,3,2,0,10,2,0,1,1,1,0,1,0 0,0,0,3,0,3,2,0,1,1,1,0,1,0 3,1,1,2,0,4,2,0,1,1,1,2,1,0 1,0,1,2,1,4,3,4,0,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,0 3,0,12,1,4,2,3,4,0,1,1,2,1,0 0,5,0,3,2,5,3,0,1,1,1,2,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,0 3,0,3,2,2,2,1,0,0,1,1,2,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,1 1,0,0,3,0,4,2,0,1,1,1,0,1,1 2,0,0,3,1,6,3,0,1,1,1,0,1,0 0,0,0,3,2,0,3,0,0,1,1,2,1,0 1,4,3,2,0,5,2,0,1,1,1,2,1,0 1,0,3,2,0,3,2,0,1,1,1,0,1,0 1,4,1,2,2,8,3,4,1,1,1,0,1,0 1,0,0,3,0,4,2,4,1,1,1,0,1,1 0,0,1,2,2,2,3,4,1,1,1,0,1,0 1,0,2,1,2,2,3,0,0,1,1,2,1,0 1,0,0,3,1,3,5,0,1,1,1,1,1,0 1,0,10,3,1,4,5,0,0,1,1,0,1,1 1,0,3,2,4,11,4,0,0,1,1,0,1,0 0,0,3,2,2,3,1,0,0,1,1,2,1,0 0,2,3,2,2,3,1,0,1,1,1,1,1,0 0,2,0,3,0,4,2,0,1,1,1,1,1,1 1,4,3,2,2,8,3,0,0,1,1,0,1,0 0,0,6,2,0,2,2,0,1,1,1,2,1,0 0,0,1,2,5,3,5,0,0,1,1,0,1,0 1,1,12,1,4,10,5,0,1,1,1,2,1,0 2,1,8,0,0,1,2,0,1,1,1,0,1,0 1,0,3,2,0,8,0,0,0,1,1,1,1,1 1,0,4,3,0,4,2,0,1,1,1,1,1,1 1,0,3,2,0,1,2,0,1,1,1,1,1,1 1,0,1,2,1,4,5,0,0,1,1,1,1,0 2,4,0,3,0,5,2,0,1,1,1,0,1,1 1,4,0,3,1,5,5,0,0,1,1,1,1,0 2,0,3,2,0,8,2,0,1,1,1,2,1,0 2,0,0,3,0,1,2,0,1,1,1,1,1,1 1,0,3,2,1,1,3,2,1,1,1,0,1,0 0,0,3,2,2,3,4,4,0,1,1,2,1,0 1,4,0,3,0,5,0,0,0,1,1,1,1,0 0,0,1,2,2,2,1,0,1,1,1,2,1,0 0,0,3,2,2,6,1,0,1,1,1,0,1,0 2,4,3,2,0,2,2,0,1,1,1,0,1,0 0,5,3,2,0,2,0,0,0,1,1,1,1,0 0,5,0,3,0,12,2,0,1,1,1,1,1,1 0,0,0,3,2,3,3,0,1,1,1,1,1,1 1,0,3,2,4,7,5,4,0,1,1,0,1,0 0,0,2,1,1,2,5,0,0,1,1,2,1,0 0,0,2,1,2,11,5,4,0,1,1,0,1,0 2,0,3,2,4,2,3,0,0,1,1,2,1,0 0,1,1,2,2,1,3,0,0,1,1,2,1,0 2,5,13,3,1,5,3,0,1,1,1,1,1,1 1,0,0,3,0,1,2,0,1,1,1,0,1,1 0,0,6,2,2,3,1,0,1,1,1,0,1,0 0,0,13,3,2,5,1,0,1,1,1,2,1,0 1,2,5,2,0,4,2,0,1,1,1,1,1,0 2,1,8,0,0,2,2,0,1,1,1,2,1,0 2,0,14,0,3,7,3,0,1,1,1,0,1,0 0,0,3,2,0,8,2,0,1,1,1,0,1,0 2,0,3,2,0,1,2,0,1,1,1,1,1,0 0,0,2,1,2,2,1,0,0,1,1,2,1,0 0,0,12,1,2,2,1,4,1,1,1,2,1,0 0,0,1,2,0,8,0,0,0,1,1,1,1,0 1,0,3,2,1,1,3,0,1,1,1,1,1,0 1,0,3,2,1,11,5,0,0,1,1,2,1,0 1,0,0,3,0,4,0,0,0,1,1,0,1,1 1,0,0,3,1,4,3,0,1,1,1,1,1,1 0,0,1,2,2,7,3,0,0,1,1,1,1,0 2,0,1,2,4,4,3,4,0,1,1,2,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,1 0,0,1,2,3,2,1,0,0,1,1,2,1,0 1,0,0,3,1,5,3,0,1,1,1,1,1,1 0,5,10,3,2,5,3,4,0,1,1,2,1,0 0,0,1,2,0,8,0,4,0,1,1,2,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,1 1,0,1,2,1,8,5,4,0,1,1,2,1,0 2,0,6,2,0,1,2,1,1,1,1,0,1,0 0,1,3,2,3,1,4,0,1,1,1,1,1,0 1,0,12,1,2,9,1,4,1,1,1,1,1,0 1,4,10,3,0,5,2,0,1,1,1,1,1,1 0,0,1,2,2,8,1,0,0,1,1,0,1,0 1,3,0,3,0,4,2,0,1,1,1,1,1,1 1,4,10,3,0,5,0,1,0,1,1,0,1,1 0,0,1,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,2,8,1,0,1,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,14,0,2,10,3,0,1,1,1,0,1,0 1,0,2,1,3,7,3,4,1,1,1,0,1,0 0,0,3,2,3,7,5,0,1,1,1,0,1,0 1,0,1,2,0,12,2,4,1,1,1,0,1,1 0,0,0,3,2,5,1,0,0,1,1,2,1,0 0,0,6,2,0,5,2,0,1,1,1,1,1,1 1,0,3,2,1,7,1,0,1,1,1,0,1,0 1,0,3,2,1,3,5,0,0,1,1,1,1,0 1,4,1,2,1,8,5,4,0,1,1,0,1,0 1,0,3,2,0,4,2,0,1,1,1,1,1,1 1,0,0,3,2,3,3,4,1,1,1,1,1,0 1,0,3,2,0,3,2,0,1,1,1,1,1,1 2,0,1,2,0,8,4,0,0,1,1,2,1,1 2,0,13,3,0,5,2,0,1,1,1,1,1,1 1,0,1,2,0,4,2,0,1,1,1,1,1,1 1,2,6,2,0,3,2,0,1,1,1,1,1,1 1,0,0,3,5,2,4,4,0,1,1,0,1,0 1,0,5,2,0,1,2,0,1,1,1,1,1,1 2,1,0,3,0,4,2,0,1,1,1,1,1,0 2,0,12,1,4,2,5,4,0,1,1,2,1,0 2,0,7,1,1,11,3,4,0,1,1,2,1,0 1,4,10,3,0,8,2,0,1,1,1,0,1,0 0,4,3,2,0,2,2,0,1,1,1,0,1,0 0,0,3,2,2,8,1,0,1,1,1,0,1,0 0,0,12,1,0,9,0,0,0,1,1,0,1,0 1,1,0,3,0,5,2,0,1,1,1,1,1,0 0,0,7,1,2,9,3,0,1,1,1,0,1,0 0,3,1,2,2,4,3,4,1,1,1,0,1,0 2,0,3,2,1,3,3,0,0,1,1,2,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 0,0,3,2,0,5,2,0,1,1,1,0,1,0 1,0,3,2,1,2,1,0,1,1,1,0,1,0 1,0,0,3,1,5,3,0,0,1,1,0,1,0 1,0,3,2,0,3,2,1,1,1,1,1,1,0 1,0,1,2,0,8,2,0,1,1,1,0,1,1 1,0,3,2,0,10,2,0,1,1,1,1,1,1 0,0,0,3,0,3,2,0,1,1,1,1,1,0 1,0,14,0,0,2,2,3,1,1,1,0,1,0 0,0,3,2,2,3,1,0,1,1,1,2,1,0 0,0,3,2,1,8,3,0,1,1,1,0,1,0 0,0,1,2,2,3,3,0,0,1,1,0,1,0 0,0,1,2,2,3,1,0,1,1,1,2,1,0 0,4,0,3,2,5,3,0,1,1,1,0,1,0 1,4,2,1,0,10,2,0,1,1,1,0,1,0 1,3,0,3,1,8,1,0,1,1,1,0,1,0 0,0,1,2,2,3,1,0,1,1,1,0,1,0 0,0,12,1,2,3,1,0,0,1,1,2,1,0 0,0,0,3,2,4,3,0,0,1,1,1,1,0 0,0,5,2,2,4,1,0,1,1,1,0,1,0 0,0,1,2,0,8,0,0,0,1,1,0,1,0 1,3,3,2,2,6,3,0,1,1,1,0,1,0 2,0,3,2,0,3,2,0,1,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,1 1,3,1,2,0,5,2,0,1,1,1,0,1,1 1,5,10,3,2,8,3,4,0,1,1,0,1,0 1,3,0,3,1,5,5,0,1,1,1,0,1,0 2,0,2,1,4,9,5,0,0,1,1,0,1,0 0,0,1,2,0,2,2,0,1,1,1,2,1,0 0,0,4,3,1,5,1,0,0,1,1,1,1,0 0,0,2,1,2,5,1,0,0,1,1,2,1,0 0,0,3,2,2,8,5,0,1,1,1,1,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,2,2,3,0,1,1,1,1,1,0 1,0,0,3,0,3,2,0,1,1,1,1,1,0 1,0,6,2,2,5,5,4,0,1,1,2,1,0 1,0,6,2,2,1,3,0,0,1,1,0,1,0 1,0,3,2,1,1,3,0,1,1,1,0,1,0 1,0,10,3,0,5,2,0,1,1,1,0,1,1 1,2,6,2,0,3,2,0,1,1,1,1,1,0 0,0,12,1,2,7,3,0,0,1,1,0,1,0 1,0,10,3,0,7,2,0,1,1,1,0,1,0 0,1,3,2,0,9,2,0,1,1,1,2,1,0 0,0,6,2,1,4,3,0,0,1,1,1,1,0 1,1,10,3,0,5,2,0,1,1,1,0,1,1 1,0,1,2,0,10,2,0,1,1,1,1,1,0 2,0,3,2,0,3,0,0,0,1,1,1,1,0 1,1,1,2,0,2,2,4,1,1,1,0,1,0 0,5,3,2,2,3,5,4,0,1,1,0,1,0 1,0,2,1,0,1,2,0,1,1,1,0,1,1 0,2,0,3,2,8,1,0,1,1,1,0,1,0 1,1,0,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,0,7,2,0,1,1,1,1,1,0 0,0,0,3,5,1,5,0,1,1,1,0,1,0 0,0,1,2,2,8,3,0,1,1,1,0,1,0 1,5,3,2,0,4,2,0,1,1,1,0,1,0 0,0,0,3,0,4,2,0,1,1,1,0,1,0 0,3,1,2,2,8,5,4,0,1,1,0,1,0 0,0,8,0,0,1,2,0,1,1,1,2,1,0 2,0,2,1,3,8,5,4,0,1,1,0,1,0 0,0,2,1,2,3,1,0,0,1,1,2,1,0 1,0,1,2,3,4,5,0,0,1,1,0,1,0 1,0,0,3,1,3,1,0,1,1,1,1,1,0 2,2,3,2,4,4,3,0,0,1,1,0,1,1 1,0,3,2,1,7,1,0,1,1,1,0,1,0 0,0,1,2,0,4,2,0,1,1,1,0,1,1 0,0,3,2,1,6,1,0,0,1,1,0,1,0 1,0,3,2,1,8,5,0,0,1,1,0,1,0 1,0,3,2,0,8,2,0,1,1,1,1,1,1 2,0,1,2,0,1,2,0,1,1,1,1,1,0 0,0,3,2,2,2,3,0,1,1,1,0,1,0 1,5,1,2,5,2,4,4,1,1,1,0,1,0 1,1,10,3,0,5,0,0,0,1,1,2,1,1 1,0,0,3,1,8,3,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 0,0,3,2,3,2,5,4,0,1,1,2,1,0 0,0,2,1,2,9,4,0,0,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,0,3,0,4,2,4,1,1,1,0,1,1 1,0,0,3,0,5,2,0,1,1,1,0,1,1 0,0,3,2,0,0,0,0,0,1,1,2,1,0 3,0,3,2,0,2,2,0,1,1,1,2,1,0 0,0,10,3,2,5,3,0,0,1,1,0,1,0 1,5,3,2,0,2,0,4,0,1,1,0,1,0 2,2,1,2,0,3,2,0,1,1,1,2,1,1 1,3,10,3,2,4,1,0,0,1,1,0,1,0 0,0,6,2,0,1,2,0,1,1,1,0,1,1 1,0,5,2,0,4,2,0,1,1,1,0,1,1 0,0,2,1,2,7,1,3,1,1,1,2,1,0 0,0,3,2,1,8,5,0,0,1,1,0,1,0 0,0,3,2,2,2,3,0,0,1,1,0,1,0 0,0,13,3,2,5,3,0,1,1,1,1,1,0 1,0,3,2,1,8,5,0,0,1,1,2,1,0 0,0,1,2,2,8,1,0,1,1,1,0,1,0 1,0,0,3,1,5,1,0,0,1,1,0,1,0 1,0,3,2,0,10,2,0,1,1,1,0,1,0 0,4,5,2,2,8,5,4,0,1,1,0,1,0 1,4,3,2,0,1,2,0,1,1,1,1,1,0 1,0,3,2,1,2,3,0,0,1,1,2,1,0 1,0,0,3,0,3,2,0,1,1,1,0,1,1 0,5,1,2,2,8,1,0,1,1,1,2,1,0 0,0,3,2,0,1,2,0,1,1,1,2,1,0 0,4,4,3,0,5,2,0,1,1,1,0,1,1 0,0,0,3,2,8,3,0,1,1,1,0,1,0 1,1,1,2,1,4,3,0,0,1,1,0,1,0 1,3,0,3,0,8,2,1,1,1,1,0,1,1 1,0,3,2,2,1,1,0,1,1,1,0,1,0 0,0,0,3,2,6,3,4,1,1,1,0,1,0 2,2,3,2,0,3,2,0,1,1,1,1,1,0 1,0,1,2,1,2,3,0,0,1,1,1,1,0 2,0,1,2,0,1,2,0,1,1,1,0,1,1 1,0,10,3,0,4,2,0,1,1,1,0,1,1 2,0,1,2,0,4,2,0,1,1,1,1,1,1 0,0,3,2,2,1,1,4,1,1,1,0,1,0 1,0,3,2,0,1,2,1,1,1,1,0,1,0 2,5,12,1,2,2,3,4,0,1,1,2,1,0 2,2,0,3,0,4,2,0,1,1,1,1,1,1 2,0,3,2,1,1,4,0,1,1,1,0,1,0 0,0,10,3,0,5,2,0,1,1,1,1,1,1 1,4,0,3,0,4,2,0,1,1,1,1,1,1 1,0,2,1,2,7,4,0,0,1,1,0,1,0 0,0,1,2,2,0,1,0,0,1,1,1,1,0 1,0,10,3,0,4,2,1,1,1,1,1,1,1 0,0,0,3,2,8,1,0,0,1,1,2,1,0 1,0,3,2,0,10,2,0,1,1,1,0,1,0 1,5,3,2,1,8,5,0,0,1,1,0,1,0 0,0,1,2,2,0,3,3,0,1,1,0,1,0 0,0,12,1,2,2,1,0,0,1,1,2,1,0 1,0,3,2,5,6,3,0,1,1,1,1,1,0 0,5,9,1,0,2,0,0,0,1,1,0,1,0 0,0,3,2,0,9,2,0,1,1,1,1,1,0 0,0,6,2,1,5,5,0,0,1,1,0,1,0 2,5,10,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,2,8,1,0,1,1,1,2,1,0 0,0,1,2,0,1,2,0,1,1,1,0,1,0 1,5,10,3,0,4,2,0,1,1,1,0,1,1 1,4,10,3,0,4,2,4,1,1,1,1,1,1 1,4,4,3,0,5,2,0,1,1,1,1,1,1 0,0,3,2,2,7,1,0,0,1,1,2,1,0 1,5,10,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,0,8,0,0,0,1,1,2,1,1 0,0,3,2,2,7,4,3,1,1,1,0,1,0 0,0,0,3,2,3,1,0,1,1,1,2,1,0 0,0,7,1,0,1,2,0,1,1,1,1,1,0 0,0,0,3,0,5,2,0,1,1,1,0,1,0 1,1,3,2,0,3,2,0,1,1,1,2,1,0 0,0,3,2,2,8,3,0,0,1,1,2,1,0 0,3,3,2,3,7,3,4,1,1,1,1,1,0 1,0,0,3,1,3,1,0,0,1,1,0,1,0 0,0,3,2,2,9,3,0,1,1,1,1,1,0 2,0,1,2,0,8,0,0,0,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,1 2,2,0,3,0,4,2,0,1,1,1,1,1,1 1,0,3,2,0,8,0,0,0,1,1,0,1,1 0,2,3,2,0,4,2,0,1,1,1,0,1,1 0,0,1,2,2,8,3,0,0,1,1,0,1,0 0,0,1,2,0,5,2,2,1,1,1,1,1,0 1,4,3,2,0,10,2,0,1,1,1,1,1,0 1,0,0,3,2,5,3,0,1,1,1,2,1,0 0,0,1,2,1,1,3,0,1,1,1,1,1,0 0,0,3,2,2,10,5,4,1,1,1,1,1,0 1,4,1,2,0,8,0,0,0,1,1,0,1,1 1,0,8,0,0,5,0,0,0,1,1,1,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,1 0,0,3,2,2,1,3,0,1,1,1,0,1,0 2,0,3,2,4,2,5,0,0,1,1,2,1,0 0,0,0,3,3,4,3,4,0,1,1,1,1,0 0,0,1,2,0,2,2,0,1,1,1,2,1,0 1,1,0,3,0,9,2,0,1,1,1,1,1,1 0,0,1,2,2,3,3,0,1,1,1,1,1,1 0,5,1,2,1,8,5,4,0,1,1,0,1,0 1,0,3,2,1,8,5,0,0,1,1,1,1,0 1,5,10,3,1,5,5,0,1,1,1,2,1,0 1,2,7,1,0,8,0,0,0,1,1,1,1,0 1,4,3,2,0,10,2,0,1,1,1,0,1,0 1,0,3,2,0,4,2,0,1,1,1,1,1,0 0,0,10,3,2,4,1,0,1,1,1,2,1,0 1,0,3,2,1,2,3,4,0,1,1,2,1,0 1,4,1,2,0,12,2,0,1,1,1,0,1,1 0,0,1,2,2,2,1,0,1,1,1,2,1,0 2,5,13,3,1,5,5,0,1,1,1,1,1,1 0,0,1,2,0,3,2,0,1,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,1,1,0 1,4,0,3,0,12,2,0,1,1,1,0,1,1 0,0,0,3,2,8,3,0,1,1,1,0,1,0 1,0,1,2,2,4,3,0,0,1,1,0,1,1 0,0,3,2,3,6,5,0,0,1,1,0,1,0 2,0,0,3,2,5,3,0,1,1,1,1,1,0 0,4,1,2,0,12,2,0,1,1,1,0,1,0 1,0,0,3,5,10,3,3,1,1,1,1,1,0 1,3,0,3,0,4,2,0,1,1,1,0,1,1 2,1,11,0,4,2,3,4,0,1,1,2,1,0 0,0,12,1,2,7,3,0,0,1,1,0,1,0 1,0,1,2,0,5,2,0,1,1,1,0,1,1 2,0,3,2,0,8,0,0,0,1,1,0,1,0 1,0,10,3,0,4,2,0,1,1,1,0,1,1 0,0,10,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,2,1,1,0,1,1,1,0,1,0 0,0,3,2,2,4,3,0,1,1,1,0,1,0 1,0,3,2,0,6,2,0,1,1,1,0,1,0 0,0,12,1,0,7,2,0,1,1,1,0,1,0 0,4,10,3,2,5,3,0,1,1,1,1,1,1 1,4,10,3,0,5,2,0,1,1,1,0,1,0 1,0,5,2,3,5,3,0,0,1,1,1,1,0 1,5,0,3,0,5,2,0,1,1,1,0,1,1 1,1,10,3,0,5,0,0,0,1,1,0,1,1 1,0,1,2,0,0,2,4,1,1,1,0,1,1 1,4,10,3,0,5,2,2,1,1,1,0,1,0 0,0,1,2,2,6,1,0,1,1,1,0,1,0 1,0,6,2,0,9,2,0,1,1,1,0,1,1 2,0,9,1,0,10,2,0,1,1,1,0,1,1 0,0,3,2,1,4,3,0,1,1,1,1,1,0 0,0,0,3,2,3,3,0,0,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,5,1,2,1,8,3,0,0,1,1,0,1,0 0,0,3,2,2,6,1,0,1,1,1,0,1,0 0,0,1,2,3,2,1,0,0,1,1,0,1,0 2,0,1,2,0,12,2,0,1,1,1,2,1,0 1,0,0,3,1,5,5,0,0,1,1,1,1,1 0,0,3,2,2,7,5,0,1,1,1,0,1,0 1,5,12,1,0,2,2,0,1,1,1,0,1,0 0,0,1,2,1,2,3,0,0,1,1,2,1,0 1,0,1,2,0,0,2,0,1,1,1,0,1,1 1,0,3,2,0,10,2,0,1,1,1,2,1,0 0,0,3,2,3,8,5,0,0,1,1,2,1,0 1,0,10,3,0,5,2,0,1,1,1,0,1,0 0,0,11,0,0,1,2,0,1,1,1,2,1,0 2,1,3,2,0,1,2,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,6,2,0,1,2,0,1,1,1,0,1,1 1,0,1,2,0,3,2,0,1,1,1,1,1,1 1,0,12,1,0,10,2,0,1,1,1,0,1,0 0,0,10,3,2,4,3,0,1,1,1,2,1,0 2,0,3,2,0,10,2,0,1,1,1,0,1,0 1,0,6,2,1,8,5,4,0,1,1,0,1,0 1,0,8,0,1,6,3,0,1,1,1,1,1,0 0,0,3,2,3,8,3,0,1,1,1,1,1,1 1,0,5,2,2,8,3,0,0,1,1,0,1,0 1,3,1,2,0,2,2,4,1,1,1,0,1,0 1,0,1,2,1,8,5,0,0,1,1,0,1,0 0,3,1,2,1,12,1,0,1,1,1,1,1,0 0,0,0,3,2,5,3,0,1,1,1,2,1,0 2,2,1,2,4,3,3,0,0,1,1,2,1,1 1,0,1,2,1,0,5,0,0,1,1,2,1,0 0,0,3,2,2,1,1,0,1,1,1,0,1,0 1,0,1,2,3,4,3,4,0,1,1,0,1,0 1,0,1,2,2,2,3,0,1,1,1,2,1,0 0,0,3,2,0,8,2,0,1,1,1,0,1,0 1,4,5,2,0,12,2,0,1,1,1,1,1,1 1,0,1,2,0,3,2,0,1,1,1,1,1,1 0,0,3,2,2,2,1,0,0,1,1,2,1,0 1,0,10,3,0,4,2,0,1,1,1,0,1,0 0,0,9,1,1,12,1,0,1,1,1,1,1,0 1,0,3,2,0,7,2,0,1,1,1,1,1,0 0,0,3,2,1,2,5,0,0,1,1,1,1,0 0,0,3,2,2,1,5,0,1,1,1,2,1,0 2,0,10,3,0,5,2,0,1,1,1,1,1,1 2,0,14,0,0,10,2,0,1,1,1,0,1,0 1,4,10,3,2,5,3,0,1,1,1,1,1,1 2,0,3,2,1,10,3,0,1,1,1,1,1,0 0,0,6,2,2,3,5,0,0,1,1,1,1,0 1,0,1,2,0,4,0,0,0,1,1,1,1,1 0,1,1,2,0,9,2,0,1,1,1,1,1,0 1,0,0,3,1,5,5,0,0,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,3,2,0,3,2,0,1,1,1,1,1,0 2,0,3,2,0,3,2,0,1,1,1,1,1,0 1,0,0,3,0,5,3,0,1,1,1,1,1,0 1,5,1,2,0,8,0,1,0,1,1,0,1,1 0,0,6,2,1,8,3,0,0,1,1,1,1,0 0,0,3,2,6,1,2,0,1,1,1,0,1,1 1,0,13,3,0,5,2,0,1,1,1,0,1,1 1,5,13,3,0,5,2,0,1,1,1,0,1,1 1,0,3,2,0,4,0,0,0,1,1,1,1,1 0,0,3,2,2,9,1,0,1,1,1,0,1,0 1,0,1,2,1,3,3,0,0,1,1,2,1,0 2,2,12,1,4,10,3,0,1,1,1,0,1,0 0,0,12,1,2,2,1,0,0,1,1,2,1,0 1,0,1,2,1,8,5,0,0,1,1,0,1,0 1,4,3,2,0,2,0,0,0,1,1,2,1,0 1,0,0,3,0,9,2,0,1,1,1,1,1,0 1,0,10,3,0,4,2,0,1,1,1,2,1,1 0,0,1,2,0,10,2,0,1,1,1,1,1,1 0,0,5,2,0,1,2,0,1,1,1,0,1,1 0,0,3,2,2,2,1,0,0,1,1,0,1,0 1,3,0,3,0,3,2,0,1,1,1,1,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,5,0,3,2,5,3,0,1,1,1,2,1,0 1,2,3,2,2,3,3,0,1,1,1,1,1,0 1,0,14,0,2,7,1,0,0,1,1,0,1,0 2,5,3,2,4,4,3,0,0,1,1,0,1,0 0,0,1,2,2,4,1,0,1,1,1,0,1,0 2,2,3,2,0,4,2,0,1,1,1,1,1,0 0,0,1,2,0,12,2,0,1,1,1,0,1,0 1,4,10,3,0,5,2,0,1,1,1,1,1,1 1,1,3,2,0,1,2,0,1,1,1,1,1,0 0,0,3,2,2,2,3,0,0,1,1,2,1,0 2,0,2,1,0,7,0,1,0,1,1,2,1,0 1,5,3,2,2,8,3,0,0,1,1,0,1,0 0,0,0,3,2,3,1,0,0,1,1,0,1,0 0,0,3,2,0,1,0,0,0,1,1,1,1,0 0,0,3,2,1,1,3,0,1,1,1,0,1,0 1,0,1,2,1,7,5,0,1,1,1,0,1,0 1,1,3,2,0,8,0,0,0,1,1,2,1,1 0,0,3,2,1,4,5,0,0,1,1,0,1,0 0,0,3,2,2,1,3,0,1,1,1,0,1,0 1,2,3,2,0,4,2,0,1,1,1,1,1,1 1,1,3,2,0,10,2,0,1,1,1,2,1,0 1,0,1,2,0,8,0,0,0,1,1,0,1,1 0,0,3,2,2,8,1,0,0,1,1,0,1,0 2,0,2,1,1,9,3,0,1,1,1,0,1,0 0,0,0,3,0,2,2,0,1,1,1,0,1,0 1,1,10,3,2,5,3,0,1,1,1,0,1,1 1,3,0,3,0,5,2,0,1,1,1,0,1,1 0,0,3,2,2,1,3,0,1,1,1,0,1,0 2,2,0,3,0,4,2,0,1,1,1,1,1,1 1,0,1,2,1,8,5,0,0,1,1,0,1,0 2,0,14,0,4,7,5,0,0,1,1,0,1,0 3,0,3,2,1,8,3,0,0,1,1,2,1,0 0,0,1,2,1,8,5,0,0,1,1,0,1,0 1,0,1,2,0,7,2,0,1,1,1,0,1,1 0,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,3,2,0,10,2,0,1,1,1,0,1,0 1,0,1,2,0,8,0,0,0,1,1,0,1,0 1,4,6,2,4,5,5,4,0,1,1,0,1,0 1,0,0,3,2,2,3,0,1,1,1,1,1,1 0,4,10,3,0,5,0,0,0,1,1,2,1,1 0,0,0,3,0,5,2,0,1,1,1,2,1,1 1,4,1,2,1,1,3,0,1,1,1,0,1,0 1,5,5,2,1,2,3,0,0,1,1,0,1,0 0,0,3,2,0,10,2,1,1,1,1,0,1,1 0,0,6,2,2,2,5,0,0,1,1,0,1,0 1,0,1,2,0,5,2,0,1,1,1,1,1,1 0,0,11,0,5,2,3,0,1,1,1,0,1,0 1,4,1,2,0,12,2,0,1,1,1,0,1,1 1,4,10,3,0,5,0,0,0,1,1,0,1,1 0,0,3,2,0,2,2,1,1,1,1,0,1,0 0,0,0,3,2,8,1,0,0,1,1,2,1,0 1,0,3,2,1,7,4,4,1,1,1,0,1,0 2,0,3,2,0,10,2,0,1,1,1,0,1,1 0,0,4,3,2,5,1,0,1,1,1,1,1,0 0,0,3,2,2,3,3,0,1,1,1,0,1,0 1,4,0,3,0,5,2,0,1,1,1,1,1,0 1,0,3,2,2,2,5,4,0,1,1,0,1,0 0,0,0,3,2,5,1,0,1,1,1,0,1,0 3,0,0,3,2,4,3,0,1,1,1,1,1,0 0,0,0,3,2,4,1,0,1,1,1,0,1,0 0,0,1,2,2,5,1,0,0,1,1,2,1,0 1,4,10,3,0,4,2,0,1,1,1,1,1,1 1,1,6,2,0,1,2,0,1,1,1,1,1,0 0,0,3,2,2,1,3,0,0,1,1,0,1,0 0,0,3,2,2,10,1,0,1,1,1,0,1,0 0,0,1,2,0,4,2,0,1,1,1,0,1,0 1,4,10,3,0,5,2,0,1,1,1,1,1,1 1,4,6,2,0,1,2,0,1,1,1,0,1,0 0,0,7,1,0,7,0,0,0,1,1,0,1,0 0,5,1,2,2,9,3,0,1,1,1,0,1,0 1,0,1,2,1,6,3,0,0,1,1,0,1,0 0,3,3,2,0,8,0,0,0,1,1,0,1,1 2,0,12,1,0,2,2,0,1,1,1,0,1,0 1,4,0,3,1,12,5,0,0,1,1,0,1,0 1,0,10,3,0,5,0,0,0,1,1,2,1,1 1,2,3,2,0,2,2,0,1,1,1,0,1,1 2,4,3,2,0,1,2,0,1,1,1,0,1,0 1,0,13,3,0,5,2,0,1,1,1,1,1,1 0,0,1,2,2,8,1,0,0,1,1,0,1,0 1,1,4,3,0,5,2,0,1,1,1,1,1,1 1,0,0,3,0,4,2,0,1,1,1,0,1,1 0,0,0,3,0,4,0,0,0,1,1,0,1,0 2,0,1,2,1,2,5,4,0,1,1,1,1,0 0,0,3,2,5,0,3,0,0,1,1,2,1,0 2,0,12,1,0,2,2,0,1,1,1,2,1,1 0,5,6,2,0,12,2,0,1,1,1,2,1,0 0,0,1,2,3,4,5,0,0,1,1,0,1,0 1,0,1,2,0,6,2,0,1,1,1,0,1,1 1,0,0,3,0,5,2,0,1,1,1,0,1,1 1,0,8,0,0,6,2,0,1,1,1,0,1,0 1,0,3,2,1,3,5,0,0,1,1,2,1,0 0,0,1,2,2,3,1,0,1,1,1,1,1,0 2,1,8,0,0,9,2,0,1,1,1,0,1,0 1,0,1,2,0,2,0,4,0,1,1,2,1,0 0,3,0,3,2,5,3,0,0,1,1,2,1,0 1,0,1,2,1,8,3,0,0,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,2,1,0 1,0,3,2,0,10,2,0,1,1,1,0,1,0 0,0,6,2,2,8,3,0,0,1,1,0,1,0 0,1,3,2,2,2,5,0,0,1,1,0,1,0 1,0,3,2,1,4,3,0,1,1,1,1,1,0 1,0,0,3,0,3,2,0,1,1,1,2,1,1 0,0,0,3,2,8,1,4,1,1,1,2,1,0 0,0,2,1,0,10,2,0,1,1,1,0,1,0 1,0,7,1,0,7,0,4,0,1,1,1,1,0 0,0,3,2,2,1,5,0,0,1,1,2,1,0 1,3,10,3,0,4,2,0,1,1,1,0,1,1 2,0,0,3,1,3,3,0,0,1,1,2,1,0 0,0,5,2,2,1,3,0,1,1,1,1,1,0 2,5,0,3,2,4,3,0,1,1,1,0,1,0 1,0,1,2,1,8,3,0,1,1,1,1,1,0 1,4,10,3,1,5,5,0,0,1,1,1,1,0 2,5,3,2,1,8,3,0,0,1,1,0,1,0 0,0,2,1,2,12,1,0,0,1,1,2,1,0 1,0,1,2,1,6,3,0,1,1,1,0,1,0 1,1,4,3,2,5,3,0,1,1,1,1,1,1 1,4,3,2,5,9,1,4,1,1,1,0,1,0 1,0,3,2,0,10,2,4,1,1,1,1,1,1 0,0,3,2,0,10,2,0,1,1,1,1,1,0 1,0,10,3,0,5,2,0,1,1,1,0,1,1 1,0,14,0,2,7,3,0,1,1,1,1,1,0 2,2,3,2,0,4,2,0,1,1,1,0,1,0 2,0,1,2,0,6,2,0,1,1,1,2,1,0 1,2,3,2,0,1,2,0,1,1,1,1,1,1 2,0,3,2,5,7,3,0,1,1,1,0,1,0 0,0,3,2,0,3,4,0,1,1,1,2,1,0 1,0,3,2,0,2,2,1,1,1,1,0,1,0 0,3,3,2,0,6,2,1,1,1,1,0,1,0 1,0,12,1,1,2,5,0,0,1,1,2,1,0 0,5,3,2,0,12,2,0,1,1,1,0,1,0 0,2,13,3,0,5,2,0,1,1,1,1,1,0 1,0,6,2,0,2,2,0,1,1,1,2,1,0 0,0,3,2,0,7,2,4,1,1,1,0,1,0 2,0,3,2,1,8,4,4,0,1,1,2,1,0 0,0,3,2,2,1,1,4,1,1,1,0,1,0 0,0,5,2,2,3,1,0,1,1,1,2,1,0 0,0,3,2,2,3,1,0,0,1,1,2,1,0 0,0,3,2,0,3,2,0,1,1,1,1,1,0 2,0,3,2,0,1,2,0,1,1,1,2,1,1 1,5,6,2,2,1,3,0,1,1,1,0,1,0 0,0,9,1,2,2,1,0,0,1,1,2,1,0 2,0,3,2,4,3,3,0,0,1,1,0,1,1 1,0,3,2,0,7,0,0,0,1,1,0,1,0 0,0,3,2,2,10,1,0,1,1,1,2,1,0 1,5,1,2,1,8,5,0,0,1,1,2,1,0 2,1,6,2,0,9,2,0,1,1,1,2,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,1 1,0,1,2,1,3,3,0,0,1,1,0,1,0 0,0,3,2,2,7,3,0,0,1,1,2,1,0 1,0,8,0,0,7,0,0,0,1,1,0,1,0 0,0,1,2,2,5,1,0,1,1,1,1,1,0 1,0,3,2,0,8,2,0,1,1,1,0,1,1 2,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,12,1,0,1,4,0,1,1,1,1,1,0 0,0,3,2,3,8,5,0,0,1,1,0,1,0 2,4,1,2,2,5,3,0,0,1,1,0,1,0 1,0,3,2,2,8,5,0,0,1,1,0,1,0 0,0,3,2,1,8,4,0,0,1,1,0,1,0 0,5,1,2,3,0,3,0,1,1,1,2,1,0 0,3,5,2,0,12,2,0,1,1,1,1,1,0 0,0,10,3,0,4,2,0,1,1,1,1,1,0 1,0,0,3,0,2,2,0,1,1,1,2,1,1 1,0,10,3,0,4,2,0,1,1,1,0,1,1 0,0,1,2,2,4,1,0,1,1,1,0,1,0 1,3,8,0,5,6,5,0,1,1,1,0,1,0 2,0,3,2,0,4,2,0,1,1,1,2,1,1 0,0,0,3,2,2,3,0,0,1,1,2,1,0 1,0,1,2,0,1,2,0,1,1,1,2,1,0 0,4,5,2,2,5,3,0,0,1,1,0,1,0 2,0,11,0,3,7,5,0,1,1,1,0,1,0 2,1,1,2,0,1,2,0,1,1,1,1,1,0 1,0,3,2,0,3,2,0,1,1,1,1,1,1 2,1,3,2,0,3,0,0,0,1,1,2,1,0 0,0,1,2,2,8,3,0,0,1,1,0,1,0 0,0,1,2,2,3,1,0,1,1,1,0,1,0 0,0,1,2,2,5,1,0,0,1,1,0,1,0 0,0,1,2,0,1,2,0,1,1,1,0,1,0 0,0,12,1,2,1,1,0,1,1,1,2,1,0 0,0,0,3,2,4,3,0,0,1,1,1,1,0 1,2,3,2,0,1,2,0,1,1,1,1,1,0 0,0,3,2,2,10,4,1,1,1,1,0,1,0 0,0,7,1,1,7,5,4,0,1,1,0,1,0 3,0,3,2,4,8,3,0,0,1,1,0,1,0 0,1,3,2,0,1,2,0,1,1,1,1,1,1 1,5,3,2,0,1,2,0,1,1,1,0,1,0 1,0,1,2,2,4,1,0,0,1,1,0,1,0 0,0,3,2,2,2,1,0,1,1,1,2,1,0 2,0,3,2,4,8,5,0,0,1,1,2,1,0 1,4,3,2,2,2,5,0,0,1,1,2,1,0 1,0,10,3,0,8,2,0,1,1,1,1,1,1 0,0,3,2,0,6,2,0,1,1,1,0,1,0 1,2,4,3,0,5,2,0,1,1,1,1,1,1 2,0,1,2,0,10,2,4,1,1,1,2,1,0 0,0,1,2,0,4,2,4,1,1,1,0,1,1 1,0,1,2,1,3,3,0,0,1,1,1,1,0 2,0,3,2,0,4,2,0,1,1,1,2,1,0 1,0,1,2,0,4,2,0,1,1,1,1,1,0 0,0,12,1,2,2,1,0,1,1,1,0,1,0 0,0,3,2,0,8,0,0,0,1,1,2,1,1 0,0,9,1,5,2,5,4,0,1,1,1,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 0,0,3,2,2,1,5,0,1,1,1,0,1,0 0,0,0,3,0,5,2,0,1,1,1,1,1,1 1,0,3,2,2,2,5,0,0,1,1,2,1,0 1,0,3,2,3,8,5,0,0,1,1,2,1,0 0,4,1,2,2,12,1,0,1,1,1,0,1,0 0,0,0,3,0,5,0,0,0,1,1,0,1,1 1,0,3,2,0,8,2,0,1,1,1,0,1,0 2,2,0,3,0,3,2,0,1,1,1,1,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 0,0,3,2,1,4,5,0,0,1,1,0,1,1 2,4,6,2,0,4,2,0,1,1,1,0,1,1 0,0,3,2,0,6,2,0,1,1,1,2,1,0 1,1,1,2,2,5,3,0,1,1,1,2,1,1 1,0,3,2,1,10,5,0,1,1,1,0,1,0 0,0,3,2,2,8,3,0,0,1,1,0,1,0 1,3,1,2,1,6,5,4,0,1,1,0,1,0 0,4,0,3,2,5,3,0,1,1,1,2,1,0 0,0,1,2,2,2,3,0,0,1,1,2,1,0 0,0,5,2,2,8,3,0,0,1,1,2,1,0 2,4,3,2,0,5,4,0,0,1,1,0,1,1 1,5,10,3,0,5,0,4,0,1,1,0,1,1 0,0,3,2,2,8,1,0,0,1,1,0,1,0 1,0,3,2,1,4,3,0,0,1,1,0,1,0 0,0,12,1,2,1,4,0,1,1,1,2,1,0 0,0,3,2,0,6,2,0,1,1,1,0,1,1 0,0,0,3,2,3,3,0,0,1,1,0,1,0 0,0,3,2,0,7,2,0,1,1,1,1,1,0 2,0,7,1,0,7,2,0,1,1,1,0,1,0 0,4,10,3,2,5,1,0,0,1,1,1,1,0 0,0,0,3,2,5,3,0,1,1,1,1,1,0 0,1,0,3,1,5,5,0,0,1,1,1,1,0 1,0,1,2,0,8,2,0,1,1,1,1,1,1 2,0,3,2,1,2,5,4,0,1,1,2,1,0 0,0,9,1,0,1,2,0,1,1,1,0,1,1 1,0,0,3,0,3,2,0,1,1,1,1,1,0 1,0,3,2,0,8,0,0,0,1,1,0,1,1 0,1,1,2,0,4,2,0,1,1,1,2,1,0 0,1,3,2,1,1,3,0,1,1,1,1,1,1 2,2,3,2,0,4,2,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 0,0,0,3,2,0,1,0,1,1,1,0,1,0 0,0,1,2,2,1,5,0,1,1,1,0,1,0 1,1,1,2,3,3,5,0,1,1,1,1,1,0 0,0,0,3,2,4,3,0,1,1,1,1,1,0 2,1,1,2,0,4,0,0,0,1,1,1,1,0 1,0,1,2,1,3,5,0,1,1,1,1,1,1 0,0,10,3,0,5,2,0,1,1,1,1,1,1 0,0,1,2,1,8,3,0,0,1,1,0,1,0 0,3,1,2,0,8,2,0,1,1,1,0,1,1 2,0,3,2,0,10,2,0,1,1,1,0,1,1 1,1,3,2,0,1,2,0,1,1,1,1,1,0 0,0,10,3,0,5,2,0,1,1,1,0,1,1 1,0,5,2,0,7,2,0,1,1,1,1,1,1 1,1,8,0,0,0,2,0,1,1,1,1,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,1 0,0,1,2,2,8,1,0,1,1,1,2,1,0 1,4,0,3,1,12,3,0,1,1,1,0,1,1 1,1,3,2,0,1,2,0,1,1,1,0,1,1 1,3,0,3,0,5,2,0,1,1,1,0,1,1 2,0,3,2,4,8,3,0,0,1,1,2,1,0 2,0,3,2,1,8,5,0,0,1,1,0,1,0 1,4,10,3,1,5,3,2,0,1,1,1,1,1 0,3,1,2,2,8,1,1,0,1,1,0,1,0 0,1,2,1,0,1,2,0,1,1,1,0,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 1,4,10,3,0,12,2,0,1,1,1,1,1,1 2,0,5,2,1,8,3,4,0,1,1,0,1,0 2,1,3,2,0,3,2,0,1,1,1,1,1,0 0,0,5,2,2,8,1,0,0,1,1,2,1,0 1,0,1,2,1,3,3,0,1,1,1,0,1,0 0,0,1,2,3,1,3,0,1,1,1,0,1,0 2,0,3,2,0,8,2,0,1,1,1,2,1,0 1,0,1,2,0,4,2,0,1,1,1,0,1,1 0,0,1,2,0,4,2,0,1,1,1,1,1,1 0,5,1,2,2,8,3,0,0,1,1,0,1,0 0,0,3,2,2,8,3,0,0,1,1,1,1,0 1,0,14,0,0,2,2,0,1,1,1,0,1,0 1,0,3,2,2,8,3,0,0,1,1,1,1,0 0,0,3,2,0,3,2,4,1,1,1,0,1,0 1,5,7,1,3,7,3,4,1,1,1,0,1,0 0,0,3,2,0,7,2,0,1,1,1,1,1,0 1,5,3,2,2,10,3,4,1,1,1,0,1,0 0,0,2,1,0,1,3,0,1,1,1,1,1,1 1,5,0,3,2,4,3,0,1,1,1,1,1,0 2,0,3,2,1,6,3,0,0,1,1,0,1,0 3,0,1,2,1,8,3,0,0,1,1,2,1,0 0,0,0,3,2,5,3,0,1,1,1,1,1,0 1,0,3,2,0,10,2,0,1,1,1,0,1,1 3,0,3,2,0,1,2,0,1,1,1,2,1,0 1,3,10,3,0,4,2,0,1,1,1,0,1,1 1,4,10,3,2,5,3,4,0,1,1,0,1,0 1,0,3,2,0,12,2,0,1,1,1,0,1,0 1,0,4,3,0,5,2,0,1,1,1,1,1,1 1,0,0,3,0,10,2,0,1,1,1,0,1,0 2,0,14,0,0,1,2,0,1,1,1,1,1,0 1,5,0,3,0,5,2,0,1,1,1,1,1,1 3,0,2,1,0,7,2,0,1,1,1,2,1,0 0,0,3,2,0,6,2,4,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,1 0,0,8,0,0,1,2,0,1,1,1,0,1,0 1,0,0,3,0,1,2,0,1,1,1,0,1,1 2,0,3,2,0,1,2,1,1,1,1,0,1,1 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 0,0,3,2,2,6,1,4,1,1,1,0,1,0 1,0,0,3,0,5,0,0,0,1,1,1,1,1 0,0,3,2,0,1,2,0,1,1,1,0,1,1 1,5,10,3,1,5,5,0,0,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,0 1,0,14,0,0,11,0,4,0,1,1,2,1,0 0,0,3,2,2,6,3,0,1,1,1,0,1,0 1,0,3,2,0,8,0,0,0,1,1,1,1,0 0,0,5,2,2,3,1,4,0,1,1,2,1,0 0,0,3,2,2,1,3,0,1,1,1,0,1,0 0,0,1,2,1,7,3,2,1,1,1,0,1,0 0,0,6,2,2,9,3,0,0,1,1,2,1,0 0,0,0,3,2,0,1,0,1,1,1,0,1,0 0,0,3,2,0,1,2,4,1,1,1,0,1,0 0,4,0,3,0,5,0,0,0,1,1,2,1,1 2,0,3,2,4,8,3,0,0,1,1,0,1,0 0,0,3,2,5,7,1,1,1,1,1,0,1,0 1,4,3,2,2,1,1,0,1,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,1,2,1,8,3,4,0,1,1,0,1,0 0,0,0,3,0,1,2,0,1,1,1,1,1,1 0,0,3,2,2,6,3,4,1,1,1,0,1,0 1,5,13,3,0,5,2,0,1,1,1,1,1,1 1,1,3,2,0,1,2,0,1,1,1,2,1,0 0,0,3,2,1,8,1,0,0,1,1,0,1,0 3,0,2,1,1,2,3,4,0,1,1,2,1,0 0,0,2,1,2,6,1,0,1,1,1,0,1,0 1,2,3,2,0,12,2,0,1,1,1,1,1,0 1,0,0,3,2,2,3,0,1,1,1,1,1,0 1,0,0,3,2,5,3,0,0,1,1,1,1,0 0,1,5,2,2,1,1,0,1,1,1,0,1,0 0,0,3,2,1,2,5,0,0,1,1,2,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 1,4,1,2,0,12,2,3,1,1,1,0,1,1 1,0,0,3,0,4,2,0,1,1,1,0,1,1 1,1,3,2,0,1,2,0,1,1,1,0,1,0 0,0,13,3,2,5,3,0,1,1,1,0,1,1 2,0,1,2,0,1,2,4,1,1,1,0,1,1 0,0,1,2,0,6,2,0,1,1,1,0,1,0 2,0,8,0,4,7,3,0,0,1,1,2,1,0 1,0,3,2,1,2,3,0,0,1,1,2,1,0 0,0,3,2,1,6,1,0,0,1,1,0,1,0 0,0,1,2,2,4,1,0,0,1,1,0,1,0 0,0,1,2,2,1,1,0,1,1,1,0,1,0 1,0,1,2,0,4,2,0,1,1,1,0,1,1 1,0,8,0,2,7,3,4,0,1,1,0,1,0 2,0,4,3,4,5,5,0,0,1,1,2,1,0 0,4,0,3,0,5,0,4,0,1,1,0,1,1 1,1,3,2,0,9,2,0,1,1,1,1,1,0 1,0,10,3,0,5,2,0,1,1,1,0,1,1 0,0,2,1,2,3,1,0,0,1,1,2,1,0 0,0,0,3,0,5,1,0,1,1,1,1,1,0 1,0,1,2,0,3,2,0,1,1,1,1,1,1 1,0,1,2,1,0,3,4,0,1,1,0,1,0 2,0,1,2,1,4,3,0,0,1,1,1,1,1 0,3,0,3,0,8,2,0,1,1,1,2,1,0 1,0,3,2,0,3,2,0,1,1,1,1,1,1 1,0,5,2,0,6,2,0,1,1,1,0,1,0 1,0,5,2,0,3,2,0,1,1,1,1,1,0 1,5,3,2,1,2,5,0,0,1,1,2,1,0 2,1,8,0,0,3,2,0,1,1,1,1,1,0 1,0,1,2,2,1,3,0,1,1,1,0,1,0 1,0,8,0,2,9,1,0,1,1,1,0,1,0 0,0,12,1,2,3,4,4,0,1,1,0,1,0 2,0,3,2,1,3,3,0,0,1,1,0,1,0 0,0,10,3,2,5,3,0,0,1,1,1,1,0 0,0,0,3,0,4,0,4,0,1,1,1,1,1 1,5,13,3,1,5,5,0,1,1,1,1,1,1 0,4,3,2,2,8,1,0,1,1,1,0,1,0 1,0,5,2,0,1,2,0,1,1,1,1,1,0 0,0,3,2,0,8,2,0,1,1,1,2,1,0 0,0,3,2,2,0,3,0,0,1,1,0,1,0 1,0,5,2,4,0,5,0,0,1,1,2,1,0 1,0,6,2,1,1,3,0,1,1,1,0,1,0 2,0,12,1,1,2,3,4,0,1,1,0,1,0 1,3,3,2,3,4,3,4,0,1,1,0,1,0 1,0,3,2,0,3,2,0,1,1,1,0,1,1 0,0,0,3,0,5,2,0,1,1,1,2,1,1 0,0,8,0,0,2,0,0,0,1,1,0,1,0 0,0,3,2,2,10,1,0,0,1,1,2,1,0 1,0,7,1,4,2,3,0,0,1,1,2,1,0 0,0,5,2,2,3,3,0,1,1,1,0,1,0 2,4,10,3,0,5,2,0,1,1,1,0,1,1 1,1,0,3,0,8,0,0,0,1,1,0,1,1 0,1,0,3,2,3,3,0,1,1,1,1,1,0 0,0,3,2,0,4,2,0,1,1,1,0,1,1 0,0,1,2,3,2,5,0,0,1,1,2,1,0 1,3,0,3,1,4,5,4,0,1,1,0,1,0 2,0,1,2,4,8,3,0,0,1,1,0,1,0 0,1,2,1,2,9,1,0,1,1,1,2,1,0 1,4,6,2,0,12,2,0,1,1,1,0,1,1 1,1,3,2,0,10,2,0,1,1,1,1,1,0 0,1,3,2,0,5,2,0,1,1,1,2,1,0 0,0,12,1,2,3,1,0,0,1,1,2,1,0 0,0,3,2,2,1,3,0,1,1,1,0,1,0 0,0,1,2,2,8,1,0,1,1,1,0,1,0 0,1,0,3,2,3,3,0,1,1,1,1,1,0 2,2,0,3,3,4,3,0,1,1,1,0,1,0 0,0,3,2,5,8,3,0,1,1,1,0,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 2,0,8,0,0,10,2,4,1,1,1,0,1,0 2,0,8,0,4,2,5,4,0,1,1,2,1,0 0,0,0,3,0,0,2,0,1,1,1,0,1,1 0,1,3,2,2,1,5,0,1,1,1,1,1,1 0,0,0,3,2,2,3,0,0,1,1,0,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 1,5,10,3,0,5,2,4,1,1,1,1,1,1 1,0,1,2,2,8,3,0,0,1,1,0,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,1 0,0,0,3,2,5,3,0,0,1,1,1,1,0 0,3,0,3,0,12,2,0,1,1,1,1,1,1 0,4,0,3,2,5,4,0,1,1,1,1,1,0 0,0,14,0,2,6,1,0,1,1,1,0,1,0 0,0,3,2,2,8,1,0,0,1,1,2,1,0 1,0,1,2,1,9,5,0,0,1,1,1,1,0 0,0,1,2,2,6,3,0,1,1,1,0,1,0 0,4,10,3,1,8,5,0,0,1,1,1,1,0 0,0,3,2,2,6,1,0,1,1,1,0,1,0 1,0,0,3,0,3,2,0,1,1,1,1,1,0 1,5,13,3,0,5,2,0,1,1,1,1,1,1 2,0,1,2,1,4,3,0,1,1,1,2,1,0 0,0,2,1,2,7,3,0,1,1,1,1,1,0 1,0,6,2,0,6,2,0,1,1,1,0,1,0 1,4,10,3,1,5,5,0,0,1,1,0,1,0 0,0,3,2,0,9,2,0,1,1,1,0,1,0 0,0,1,2,2,4,3,0,0,1,1,2,1,0 0,0,3,2,2,1,1,0,1,1,1,0,1,0 1,0,1,2,1,3,3,0,0,1,1,0,1,0 0,0,3,2,2,1,1,0,0,1,1,0,1,0 0,0,3,2,2,9,1,1,1,1,1,0,1,0 1,1,3,2,0,1,2,1,1,1,1,0,1,0 2,5,3,2,0,12,2,0,1,1,1,2,1,0 2,0,3,2,1,8,3,0,0,1,1,0,1,0 0,0,2,1,2,3,1,0,0,1,1,2,1,0 1,0,1,2,4,5,1,0,0,1,1,0,1,0 1,4,9,1,0,10,2,0,1,1,1,0,1,1 0,0,0,3,2,2,3,1,1,1,1,0,1,0 1,0,3,2,1,8,5,0,0,1,1,0,1,0 0,0,3,2,5,3,3,0,1,1,1,0,1,0 2,0,6,2,2,1,3,0,1,1,1,0,1,1 0,0,1,2,2,1,3,4,1,1,1,2,1,0 0,0,10,3,2,5,3,0,0,1,1,1,1,0 0,0,0,3,2,3,1,0,1,1,1,0,1,0 1,1,3,2,2,2,3,4,1,1,1,1,1,0 0,0,1,2,1,5,3,0,0,1,1,0,1,0 0,0,2,1,2,8,1,0,0,1,1,2,1,0 0,2,3,2,3,3,5,0,0,1,1,2,1,0 0,0,11,0,2,9,3,3,1,1,1,1,1,0 2,0,12,1,0,4,2,0,1,1,1,1,1,0 0,0,9,1,5,2,1,3,0,1,1,2,1,0 0,0,10,3,1,5,3,0,0,1,1,1,1,0 1,0,4,3,0,5,2,0,1,1,1,1,1,1 0,0,0,3,2,4,3,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,0 1,0,0,3,0,5,2,0,1,1,1,0,1,1 0,0,1,2,2,1,1,0,1,1,1,0,1,0 2,3,3,2,0,1,2,0,1,1,1,0,1,1 0,0,3,2,2,6,1,0,1,1,1,2,1,0 0,0,3,2,2,1,1,0,1,1,1,0,1,0 1,2,1,2,0,4,2,0,1,1,1,1,1,0 0,1,0,3,0,3,2,0,1,1,1,1,1,0 1,1,0,3,2,1,3,0,1,1,1,1,1,0 2,0,3,2,0,7,2,0,1,1,1,1,1,1 0,0,3,2,0,10,2,0,1,1,1,1,1,0 0,0,3,2,1,10,3,0,1,1,1,0,1,0 1,0,10,3,0,4,2,0,1,1,1,0,1,1 0,2,0,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,2,8,1,4,1,1,1,0,1,0 0,0,0,3,0,0,2,0,1,1,1,0,1,1 0,0,3,2,0,1,2,0,1,1,1,0,1,0 1,1,1,2,0,9,2,0,1,1,1,1,1,1 0,1,10,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,0,6,2,3,1,1,1,0,1,0 1,0,10,3,1,5,3,0,0,1,1,2,1,0 2,0,8,0,0,7,0,0,0,1,1,1,1,0 0,0,0,3,2,3,1,0,1,1,1,1,1,0 0,0,3,2,2,0,1,0,1,1,1,1,1,0 2,0,3,2,2,6,3,0,1,1,1,0,1,0 0,0,1,2,2,1,1,0,1,1,1,0,1,0 0,0,1,2,0,10,2,0,1,1,1,1,1,1 1,0,10,3,2,4,3,0,0,1,1,0,1,1 1,1,0,3,0,4,2,0,1,1,1,1,1,0 0,0,1,2,0,1,2,0,1,1,1,1,1,1 0,0,3,2,2,3,1,1,1,1,1,0,1,0 1,0,3,2,1,4,5,0,1,1,1,1,1,0 1,0,3,2,1,2,5,4,0,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,1 0,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,5,2,2,3,3,0,1,1,1,0,1,0 0,0,1,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,1,6,3,0,1,1,1,2,1,0 0,0,1,2,0,7,2,0,1,1,1,0,1,0 1,0,6,2,1,3,5,0,0,1,1,0,1,0 1,3,3,2,0,8,2,0,1,1,1,1,1,0 2,0,14,0,0,10,2,0,1,1,1,0,1,0 0,0,1,2,0,9,2,0,1,1,1,1,1,1 1,5,3,2,0,0,2,0,1,1,1,0,1,0 2,5,6,2,0,1,2,4,1,1,1,1,1,1 0,0,3,2,2,8,1,0,0,1,1,0,1,0 1,0,3,2,2,2,4,4,1,1,1,2,1,0 0,0,6,2,2,1,3,0,0,1,1,0,1,0 0,0,0,3,2,4,1,0,1,1,1,0,1,0 0,5,3,2,0,0,2,0,1,1,1,0,1,0 0,0,3,2,2,5,3,0,1,1,1,0,1,0 2,0,1,2,0,1,2,0,1,1,1,1,1,1 0,0,2,1,0,10,2,0,1,1,1,1,1,0 0,0,3,2,0,10,2,0,1,1,1,1,1,1 0,0,1,2,2,8,3,0,0,1,1,2,1,0 0,0,1,2,2,6,4,0,1,1,1,0,1,0 0,0,0,3,0,3,2,0,1,1,1,1,1,1 0,0,6,2,0,1,2,0,1,1,1,0,1,0 1,0,1,2,1,8,5,0,0,1,1,1,1,0 0,0,3,2,2,8,5,0,0,1,1,0,1,0 0,1,0,3,0,1,2,0,1,1,1,1,1,0 0,1,0,3,0,3,0,0,0,1,1,2,1,0 0,0,3,2,2,8,3,0,0,1,1,1,1,0 2,0,1,2,0,1,2,0,1,1,1,0,1,0 0,0,6,2,2,3,3,0,0,1,1,0,1,0 1,3,1,2,1,4,3,4,0,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,1,1,1 0,0,1,2,0,2,2,0,1,1,1,2,1,1 1,0,1,2,0,2,0,0,0,1,1,2,1,0 1,4,7,1,0,2,0,0,0,1,1,0,1,1 0,0,1,2,2,2,3,0,1,1,1,0,1,0 1,2,1,2,0,4,2,0,1,1,1,1,1,1 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,0,3,2,4,3,0,1,1,1,0,1,0 0,0,7,1,5,2,4,0,1,1,1,2,1,0 1,0,1,2,0,7,2,0,1,1,1,0,1,0 0,0,0,3,0,5,2,0,1,1,1,1,1,0 0,0,1,2,1,8,5,0,0,1,1,0,1,0 1,0,1,2,1,3,5,0,0,1,1,1,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,2,3,1,0,0,1,1,0,1,0 2,0,4,3,0,5,2,0,1,1,1,2,1,0 0,0,1,2,2,1,3,4,1,1,1,0,1,1 0,0,3,2,0,10,4,0,1,1,1,1,1,0 1,0,6,2,0,1,2,0,1,1,1,0,1,0 0,0,0,3,0,4,2,4,1,1,1,0,1,1 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,1,2,1,0,10,2,0,1,1,1,1,1,0 2,1,8,0,0,9,2,0,1,1,1,1,1,1 1,5,1,2,0,4,2,0,1,1,1,2,1,1 1,0,3,2,3,7,5,4,0,1,1,0,1,0 0,0,3,2,2,8,1,4,0,1,1,0,1,0 2,0,1,2,4,5,3,0,0,1,1,2,1,0 1,0,3,2,2,8,1,0,0,1,1,0,1,1 1,0,0,3,1,4,3,4,0,1,1,0,1,1 0,0,12,1,0,1,2,0,1,1,1,0,1,0 1,1,3,2,1,4,3,0,0,1,1,2,1,1 0,5,0,3,2,5,3,0,1,1,1,2,1,0 1,0,3,2,1,10,3,0,1,1,1,0,1,0 0,0,1,2,2,2,3,0,1,1,1,0,1,0 2,0,3,2,0,10,2,0,1,1,1,0,1,0 1,1,1,2,2,4,3,0,1,1,1,0,1,0 2,0,3,2,0,4,2,0,1,1,1,0,1,1 1,0,3,2,0,4,2,0,1,1,1,1,1,1 1,0,4,3,2,4,3,0,0,1,1,0,1,0 1,4,3,2,0,1,2,0,1,1,1,0,1,0 1,4,3,2,1,12,5,0,0,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,2,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 0,4,0,3,0,12,2,0,1,1,1,0,1,1 0,0,1,2,0,3,2,4,1,1,1,1,1,0 0,0,1,2,2,8,3,0,1,1,1,0,1,0 1,0,5,2,2,3,5,4,0,1,1,0,1,0 0,0,0,3,2,8,1,0,0,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,0 0,0,0,3,0,3,2,0,1,1,1,1,1,0 1,0,0,3,0,1,2,0,1,1,1,1,1,1 1,0,6,2,0,4,2,0,1,1,1,1,1,1 0,0,6,2,0,1,2,0,1,1,1,1,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 1,1,1,2,4,2,5,0,0,1,1,2,1,0 1,0,3,2,5,8,5,0,0,1,1,2,1,0 1,0,3,2,3,1,3,0,1,1,1,2,1,0 1,1,10,3,0,4,2,1,1,1,1,0,1,0 2,0,8,0,0,9,2,0,1,1,1,0,1,1 1,0,10,3,2,4,3,0,1,1,1,1,1,1 1,0,1,2,0,0,2,0,1,1,1,1,1,1 1,0,3,2,0,3,2,0,1,1,1,1,1,1 1,4,10,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,2,1,3,0,1,1,1,2,1,0 0,0,2,1,3,2,1,0,0,1,1,0,1,0 0,0,6,2,2,11,1,0,0,1,1,0,1,0 2,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,13,3,0,5,0,0,0,1,1,2,1,1 2,0,3,2,0,3,0,0,0,1,1,2,1,0 1,2,1,2,0,4,2,0,1,1,1,0,1,1 2,0,3,2,0,3,2,1,1,1,1,0,1,0 0,1,0,3,2,5,3,0,1,1,1,1,1,0 0,0,3,2,0,3,2,0,1,1,1,0,1,0 0,0,0,3,2,3,1,0,1,1,1,0,1,0 2,0,0,3,0,8,2,0,1,1,1,2,1,0 1,0,3,2,3,6,3,4,1,1,1,2,1,0 0,0,0,3,2,5,3,0,1,1,1,0,1,0 0,0,3,2,1,10,3,0,1,1,1,1,1,0 1,3,10,3,0,5,2,1,1,1,1,0,1,1 0,0,3,2,2,3,3,0,0,1,1,2,1,0 0,4,1,2,1,8,3,0,0,1,1,0,1,0 0,0,0,3,2,4,1,0,1,1,1,1,1,0 0,0,3,2,2,2,1,0,1,1,1,0,1,0 0,0,1,2,0,5,0,0,0,1,1,0,1,0 2,0,1,2,0,4,2,4,1,1,1,1,1,1 1,0,3,2,1,2,4,4,1,1,1,2,1,0 1,1,12,1,0,9,2,0,1,1,1,1,1,0 1,5,1,2,1,8,3,4,0,1,1,0,1,0 1,0,10,3,1,4,5,0,1,1,1,1,1,1 0,0,3,2,0,1,2,0,1,1,1,0,1,0 2,0,0,3,0,5,2,0,1,1,1,0,1,1 0,1,1,2,2,3,3,0,1,1,1,1,1,0 1,0,0,3,0,8,2,0,1,1,1,0,1,1 3,5,13,3,2,5,4,0,0,1,1,2,1,1 1,0,0,3,0,4,2,0,1,1,1,1,1,0 1,0,0,3,0,4,2,0,1,1,1,0,1,1 1,0,3,2,2,7,3,0,0,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 2,0,0,3,0,5,2,0,1,1,1,0,1,1 0,0,0,3,0,4,2,0,1,1,1,0,1,1 0,0,2,1,2,11,1,0,0,1,1,0,1,0 0,0,7,1,1,5,3,4,0,1,1,0,1,0 1,0,10,3,1,8,3,0,0,1,1,2,1,0 1,0,1,2,3,8,5,4,0,1,1,0,1,0 0,1,3,2,0,9,2,0,1,1,1,0,1,0 0,0,1,2,2,5,1,0,1,1,1,2,1,0 1,0,1,2,2,8,5,1,0,1,1,0,1,0 2,0,12,1,4,7,5,4,0,1,1,0,1,0 1,0,14,0,0,1,2,0,1,1,1,0,1,0 1,2,1,2,0,3,2,0,1,1,1,1,1,0 1,0,1,2,3,8,5,0,0,1,1,0,1,0 1,0,11,0,2,2,3,0,1,1,1,1,1,0 1,5,0,3,0,4,2,0,1,1,1,0,1,1 2,0,9,1,0,9,2,0,1,1,1,1,1,0 1,0,4,3,0,5,0,0,0,1,1,2,1,1 0,0,3,2,2,2,5,4,0,1,1,0,1,0 2,2,10,3,1,5,3,0,1,1,1,1,1,1 1,0,13,3,0,5,2,1,1,1,1,1,1,0 0,0,3,2,2,8,1,1,0,1,1,0,1,0 0,0,3,2,2,3,3,0,0,1,1,0,1,0 1,3,1,2,2,8,3,0,1,1,1,2,1,0 0,0,3,2,0,10,2,0,1,1,1,0,1,0 1,0,1,2,0,3,2,0,1,1,1,1,1,0 0,1,3,2,1,1,3,0,1,1,1,0,1,0 1,5,10,3,1,4,5,0,0,1,1,0,1,0 0,0,3,2,0,10,2,0,1,1,1,1,1,0 1,0,0,3,1,2,3,0,1,1,1,2,1,0 2,0,3,2,0,2,2,4,1,1,1,0,1,0 2,2,0,3,1,4,5,0,0,1,1,1,1,0 2,0,2,1,2,7,3,4,0,1,1,0,1,0 0,0,0,3,2,2,3,0,0,1,1,1,1,0 1,0,6,2,0,6,2,0,1,1,1,2,1,0 0,0,1,2,2,0,1,0,1,1,1,1,1,0 0,0,0,3,0,2,0,0,0,1,1,0,1,0 1,3,0,3,1,5,5,0,0,1,1,1,1,0 0,0,3,2,2,2,1,0,1,1,1,2,1,0 0,0,3,2,0,10,2,4,1,1,1,0,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,0 1,0,3,2,2,7,3,0,1,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,0,10,2,0,1,1,1,0,1,1 1,0,2,1,2,2,1,4,0,1,1,0,1,0 0,0,1,2,2,9,5,0,1,1,1,1,1,0 1,0,6,2,1,5,5,0,1,1,1,0,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 1,0,3,2,0,7,2,0,1,1,1,1,1,0 1,0,1,2,3,8,5,0,0,1,1,2,1,0 1,2,0,3,0,8,2,0,1,1,1,0,1,1 0,0,5,2,2,8,3,4,0,1,1,0,1,0 0,0,1,2,2,8,3,0,0,1,1,0,1,0 1,0,5,2,0,1,2,0,1,1,1,0,1,0 1,0,3,2,4,2,5,0,0,1,1,2,1,0 0,2,3,2,2,4,1,0,1,1,1,0,1,0 1,3,1,2,3,4,3,0,1,1,1,1,1,1 1,0,0,3,0,5,2,0,1,1,1,0,1,0 1,0,0,3,0,8,2,0,1,1,1,0,1,1 1,0,10,3,2,4,3,0,1,1,1,2,1,0 3,0,8,0,0,7,2,3,1,1,1,2,1,0 0,0,3,2,2,2,1,0,1,1,1,2,1,0 0,0,0,3,2,8,3,1,0,1,1,0,1,0 0,0,5,2,2,0,3,0,0,1,1,0,1,0 1,4,6,2,1,8,5,0,0,1,1,1,1,0 0,0,1,2,1,3,1,1,0,1,1,2,1,0 0,0,1,2,2,3,1,1,1,1,1,2,1,0 1,0,13,3,0,4,2,0,1,1,1,1,1,1 0,0,9,1,2,3,1,0,1,1,1,2,1,0 1,0,0,3,2,2,3,0,1,1,1,1,1,1 1,0,1,2,0,4,2,0,1,1,1,0,1,1 0,0,9,1,0,1,2,0,1,1,1,0,1,0 0,0,3,2,2,8,1,0,0,1,1,2,1,0 1,5,1,2,2,4,3,0,0,1,1,0,1,0 0,0,0,3,2,4,1,1,1,1,1,0,1,0 2,1,4,3,0,5,2,0,1,1,1,1,1,1 2,0,2,1,0,2,2,0,1,1,1,2,1,0 2,0,3,2,4,3,5,0,0,1,1,0,1,0 1,0,6,2,0,8,2,0,1,1,1,0,1,1 1,4,5,2,0,0,2,0,1,1,1,0,1,1 0,0,3,2,1,3,4,0,0,1,1,0,1,0 1,4,0,3,2,8,5,0,0,1,1,2,1,0 1,5,1,2,0,3,2,0,1,1,1,0,1,1 1,0,0,3,0,3,2,0,1,1,1,1,1,0 2,1,1,2,0,1,2,0,1,1,1,1,1,0 1,0,3,2,1,8,3,0,0,1,1,0,1,0 0,0,0,3,2,8,1,0,1,1,1,2,1,0 1,0,1,2,0,2,0,0,0,1,1,2,1,0 1,1,1,2,2,9,1,0,1,1,1,1,1,0 1,0,3,2,1,2,5,0,1,1,1,0,1,0 0,0,3,2,2,6,3,0,1,1,1,2,1,0 2,0,3,2,0,8,2,0,1,1,1,2,1,0 1,3,10,3,0,4,2,0,1,1,1,1,1,1 1,1,3,2,3,4,4,0,1,1,1,0,1,0 0,0,3,2,2,7,3,0,1,1,1,0,1,0 1,0,3,2,2,6,5,0,1,1,1,0,1,0 0,0,1,2,2,5,3,4,0,1,1,1,1,0 1,3,5,2,0,1,2,0,1,1,1,0,1,1 0,0,6,2,2,0,1,0,0,1,1,2,1,0 1,0,1,2,0,3,2,0,1,1,1,0,1,1 0,0,4,3,0,5,2,0,1,1,1,1,1,1 2,0,3,2,0,1,2,0,1,1,1,2,1,0 1,5,13,3,0,5,2,0,1,1,1,0,1,1 1,1,13,3,2,5,3,0,1,1,1,1,1,1 2,0,3,2,1,8,3,0,0,1,1,0,1,0 1,0,1,2,0,3,2,0,1,1,1,1,1,0 2,2,1,2,0,3,2,0,1,1,1,0,1,0 2,1,3,2,0,3,0,0,0,1,1,1,1,0 0,0,1,2,0,6,2,0,1,1,1,0,1,1 0,0,9,1,2,6,1,0,1,1,1,0,1,0 1,1,4,3,0,5,2,0,1,1,1,1,1,1 0,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,0,3,0,1,2,1,1,1,1,0,1,1 0,0,10,3,2,5,1,0,0,1,1,2,1,0 0,0,1,2,2,3,3,0,0,1,1,2,1,0 0,0,1,2,2,8,1,0,1,1,1,0,1,0 0,0,0,3,2,5,3,0,1,1,1,1,1,0 1,2,4,3,0,5,2,0,1,1,1,1,1,1 1,0,3,2,2,8,1,0,1,1,1,2,1,0 1,0,10,3,0,4,2,1,1,1,1,0,1,1 0,0,3,2,3,8,5,0,0,1,1,0,1,0 0,0,1,2,2,3,1,4,0,1,1,2,1,0 0,0,0,3,2,4,5,0,0,1,1,0,1,0 2,0,6,2,1,8,3,0,0,1,1,1,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 0,0,1,2,2,2,3,0,0,1,1,2,1,0 2,0,3,2,0,4,2,0,1,1,1,1,1,1 0,5,1,2,2,2,1,0,0,1,1,0,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,1 0,0,3,2,2,1,3,0,1,1,1,2,1,0 1,0,3,2,1,4,5,0,0,1,1,0,1,0 2,0,10,3,1,5,3,0,0,1,1,1,1,0 1,0,1,2,0,3,2,0,1,1,1,1,1,1 1,0,5,2,0,1,2,0,1,1,1,0,1,1 0,0,1,2,2,3,3,0,0,1,1,1,1,0 2,4,3,2,1,10,5,0,1,1,1,2,1,0 0,2,5,2,2,5,4,4,0,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,0,1,1 1,0,3,2,0,1,2,0,1,1,1,1,1,0 2,0,3,2,4,3,5,0,0,1,1,0,1,0 1,0,3,2,1,10,3,0,1,1,1,1,1,0 0,0,9,1,2,3,3,4,1,1,1,0,1,0 1,5,5,2,0,0,2,0,1,1,1,2,1,1 0,0,3,2,2,7,5,0,1,1,1,0,1,0 1,0,10,3,0,8,0,0,0,1,1,2,1,1 1,1,10,3,2,4,3,0,0,1,1,0,1,0 0,0,1,2,2,8,1,4,0,1,1,2,1,0 0,0,2,1,0,1,2,0,1,1,1,0,1,0 2,0,0,3,0,1,2,0,1,1,1,0,1,1 0,0,1,2,2,2,3,0,1,1,1,0,1,0 0,5,10,3,1,8,3,0,0,1,1,2,1,0 1,5,3,2,0,8,2,0,1,1,1,0,1,0 0,0,1,2,2,3,3,0,1,1,1,0,1,0 0,0,1,2,2,5,3,3,0,1,1,2,1,0 1,0,1,2,0,3,2,0,1,1,1,1,1,0 1,4,10,3,0,5,0,0,0,1,1,0,1,0 1,0,13,3,0,5,2,0,1,1,1,1,1,1 1,0,3,2,1,1,3,0,1,1,1,0,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 0,0,1,2,5,3,5,3,0,1,1,2,1,0 0,0,10,3,2,5,3,0,0,1,1,1,1,0 0,0,3,2,0,8,1,0,0,1,1,0,1,0 1,0,0,3,2,4,3,0,0,1,1,2,1,0 1,0,1,2,1,1,3,0,1,1,1,0,1,0 0,4,3,2,2,12,3,0,1,1,1,0,1,0 1,0,3,2,0,5,2,1,1,1,1,2,1,1 1,4,1,2,0,1,2,0,1,1,1,1,1,0 2,0,1,2,0,8,2,0,1,1,1,0,1,0 0,5,10,3,0,5,2,0,1,1,1,1,1,0 0,0,11,0,2,1,3,0,1,1,1,0,1,0 0,0,3,2,5,7,3,0,1,1,1,0,1,0 0,0,1,2,2,3,3,0,0,1,1,0,1,0 0,4,2,1,2,8,1,0,0,1,1,2,1,0 0,5,13,3,2,5,3,0,0,1,1,1,1,0 0,0,12,1,3,3,3,0,0,1,1,2,1,0 1,3,5,2,0,8,2,0,1,1,1,0,1,1 1,0,1,2,5,1,5,0,0,1,1,1,1,0 2,0,8,0,0,1,2,0,1,1,1,0,1,0 0,0,0,3,0,3,2,0,1,1,1,1,1,1 0,0,1,2,2,12,1,1,1,1,1,2,1,0 1,0,3,2,1,2,3,0,0,1,1,0,1,0 1,2,0,3,0,4,2,0,1,1,1,0,1,0 1,4,0,3,3,5,5,0,1,1,1,0,1,0 1,0,3,2,1,7,3,0,0,1,1,2,1,0 1,0,0,3,0,3,2,0,1,1,1,0,1,1 0,2,0,3,2,8,1,0,0,1,1,1,1,0 0,0,12,1,2,3,4,4,0,1,1,2,1,0 2,0,1,2,0,4,2,0,1,1,1,0,1,0 1,0,3,2,0,0,2,0,1,1,1,0,1,1 0,1,3,2,0,5,2,0,1,1,1,2,1,0 1,0,0,3,1,8,3,0,0,1,1,0,1,0 1,1,0,3,1,8,3,0,1,1,1,0,1,0 1,0,1,2,1,2,5,0,0,1,1,2,1,0 1,0,1,2,0,2,1,0,0,1,1,0,1,1 1,0,2,1,0,2,2,0,1,1,1,0,1,0 1,0,3,2,4,1,1,0,0,1,1,0,1,0 2,0,1,2,2,8,3,0,0,1,1,2,1,0 0,0,2,1,2,2,3,0,0,1,1,0,1,0 1,0,0,3,0,0,2,0,1,1,1,0,1,1 0,0,1,2,2,8,1,0,1,1,1,0,1,0 0,0,0,3,0,2,2,0,1,1,1,0,1,0 1,4,5,2,0,4,2,0,1,1,1,0,1,1 1,2,1,2,0,3,2,0,1,1,1,2,1,1 1,0,10,3,1,4,3,0,0,1,1,1,1,1 0,0,3,2,0,6,0,4,0,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,2,7,3,0,1,1,1,2,1,0 0,0,10,3,2,4,3,0,0,1,1,2,1,0 1,0,0,3,2,3,3,0,0,1,1,2,1,0 0,0,6,2,1,3,1,0,0,1,1,2,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 1,0,5,2,0,4,2,0,1,1,1,0,1,1 2,0,1,2,2,3,3,4,1,1,1,1,1,0 0,0,1,2,0,8,1,0,0,1,1,2,1,0 1,0,10,3,2,5,3,0,0,1,1,2,1,1 1,0,6,2,1,10,3,0,1,1,1,1,1,1 1,0,1,2,4,8,5,4,0,1,1,0,1,0 0,0,9,1,2,8,1,0,0,1,1,2,1,0 1,5,2,1,3,0,3,4,1,1,1,0,1,0 1,0,3,2,3,2,5,4,0,1,1,2,1,0 2,5,13,3,0,5,2,0,1,1,1,1,1,1 0,0,9,1,2,5,1,0,1,1,1,2,1,0 1,0,6,2,0,1,2,0,1,1,1,0,1,1 0,0,3,2,2,7,5,4,1,1,1,0,1,0 1,0,5,2,0,4,2,0,1,1,1,0,1,0 0,0,5,2,2,3,3,0,1,1,1,2,1,0 2,0,0,3,0,4,0,0,0,1,1,0,1,0 0,0,12,1,2,7,1,0,0,1,1,0,1,0 1,0,3,2,1,1,3,2,1,1,1,1,1,0 1,0,8,0,5,11,5,0,0,1,1,2,1,0 0,0,3,2,0,5,1,0,1,1,1,0,1,1 0,0,1,2,2,8,3,0,0,1,1,0,1,0 0,0,3,2,0,9,2,0,1,1,1,1,1,0 0,0,3,2,3,9,3,0,1,1,1,1,1,0 0,0,1,2,0,3,0,0,0,1,1,0,1,0 1,0,0,3,0,2,2,0,1,1,1,0,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,0 2,3,1,2,1,2,3,0,1,1,1,0,1,0 2,0,8,0,0,10,2,0,1,1,1,0,1,0 1,0,3,2,0,8,2,0,1,1,1,1,1,0 1,1,3,2,0,1,2,0,1,1,1,1,1,0 2,0,1,2,1,8,3,0,0,1,1,0,1,0 1,0,0,3,0,4,4,0,1,1,1,1,1,0 1,3,3,2,2,1,1,4,0,1,1,0,1,0 0,1,1,2,2,2,1,0,0,1,1,2,1,0 2,0,10,3,0,1,0,1,0,1,1,2,1,0 1,0,3,2,0,2,2,0,1,1,1,0,1,0 0,3,0,3,0,1,2,0,1,1,1,0,1,1 1,3,1,2,1,7,5,0,1,1,1,0,1,0 0,0,1,2,2,3,1,4,1,1,1,2,1,0 0,0,14,0,0,7,2,2,1,1,1,0,1,0 0,0,6,2,1,2,5,0,0,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 0,0,3,2,2,1,4,0,0,1,1,0,1,0 0,0,10,3,0,4,2,0,1,1,1,1,1,1 1,0,0,3,0,0,2,0,1,1,1,0,1,1 1,2,1,2,0,4,2,0,1,1,1,1,1,1 1,0,5,2,1,2,5,0,0,1,1,2,1,0 2,0,1,2,0,3,2,0,1,1,1,0,1,1 0,3,0,3,4,8,3,0,1,1,1,0,1,1 2,0,3,2,1,8,3,0,1,1,1,1,1,0 0,0,12,1,2,2,1,0,1,1,1,2,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,1 2,0,3,2,1,8,3,0,0,1,1,0,1,0 2,5,9,1,0,1,2,0,1,1,1,0,1,0 0,0,1,2,0,3,2,0,1,1,1,1,1,0 0,0,3,2,2,7,5,4,0,1,1,0,1,0 1,1,3,2,0,9,2,0,1,1,1,2,1,0 0,1,6,2,0,9,2,0,1,1,1,1,1,0 0,0,6,2,0,1,2,0,1,1,1,0,1,1 1,0,1,2,2,9,5,0,1,1,1,1,1,0 1,0,2,1,0,7,2,0,1,1,1,0,1,0 0,0,5,2,2,3,3,0,1,1,1,1,1,0 1,4,10,3,4,5,5,0,0,1,1,2,1,0 0,0,3,2,3,7,5,4,0,1,1,0,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,1 1,0,0,3,2,7,3,4,1,1,1,2,1,0 1,0,1,2,2,8,1,0,0,1,1,0,1,0 1,0,3,2,0,2,2,0,1,1,1,0,1,1 0,0,3,2,0,4,2,0,1,1,1,1,1,0 0,0,3,2,2,2,3,0,1,1,1,0,1,0 0,5,0,3,2,5,3,0,0,1,1,1,1,0 1,0,0,3,0,3,2,0,1,1,1,0,1,1 2,2,3,2,0,4,2,0,1,1,1,2,1,1 1,0,2,1,1,1,3,0,1,1,1,0,1,0 2,1,0,3,0,3,2,0,1,1,1,1,1,1 0,0,12,1,2,3,1,4,0,1,1,2,1,0 2,1,3,2,4,8,5,0,0,1,1,0,1,1 2,0,3,2,1,2,3,0,1,1,1,2,1,0 0,0,12,1,2,2,1,4,1,1,1,2,1,0 1,1,10,3,0,1,2,0,1,1,1,1,1,0 1,0,0,3,4,2,1,1,0,1,1,0,1,0 1,0,3,2,0,3,2,0,1,1,1,1,1,0 0,0,3,2,2,3,4,0,1,1,1,2,1,0 0,0,1,2,2,8,1,0,0,1,1,2,1,0 0,0,1,2,0,5,0,1,0,1,1,0,1,0 1,0,1,2,0,5,2,0,1,1,1,0,1,1 0,0,3,2,2,1,3,0,1,1,1,1,1,0 0,0,1,2,2,1,3,4,1,1,1,0,1,0 0,0,3,2,1,8,5,0,0,1,1,2,1,0 1,0,0,3,2,1,3,0,1,1,1,1,1,1 0,0,2,1,2,8,3,0,1,1,1,0,1,0 0,0,12,1,2,11,1,0,0,1,1,2,1,0 0,0,3,2,0,3,2,0,1,1,1,1,1,0 0,4,3,2,1,12,1,0,1,1,1,0,1,0 0,0,0,3,2,8,3,0,1,1,1,1,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,3,2,0,4,2,1,1,1,1,0,1,1 2,0,3,2,0,3,2,0,1,1,1,0,1,0 0,0,1,2,0,4,2,0,1,1,1,1,1,1 0,0,3,2,2,7,1,0,1,1,1,0,1,0 1,4,3,2,1,1,1,0,0,1,1,0,1,0 1,0,0,3,0,5,2,4,1,1,1,1,1,1 2,0,3,2,1,4,4,0,0,1,1,1,1,0 1,2,1,2,0,8,0,0,0,1,1,0,1,1 1,0,3,2,3,1,5,0,0,1,1,2,1,0 0,0,2,1,2,3,1,0,0,1,1,1,1,0 0,0,6,2,2,7,1,0,1,1,1,0,1,0 1,0,1,2,0,4,2,0,1,1,1,1,1,0 0,0,3,2,2,7,3,0,1,1,1,1,1,0 2,1,13,3,0,3,2,0,1,1,1,0,1,1 2,1,1,2,4,1,3,0,0,1,1,2,1,0 0,0,1,2,2,4,1,4,1,1,1,0,1,0 0,3,10,3,0,8,2,0,1,1,1,1,1,1 1,1,3,2,0,9,2,0,1,1,1,1,1,0 0,0,3,2,2,6,1,0,1,1,1,1,1,0 0,0,12,1,2,9,1,0,1,1,1,2,1,0 0,0,3,2,0,4,2,0,1,1,1,1,1,1 0,0,10,3,2,5,3,0,0,1,1,0,1,0 1,0,3,2,3,2,1,0,1,1,1,2,1,0 1,0,1,2,0,7,2,0,1,1,1,1,1,0 0,0,2,1,2,2,5,0,0,1,1,2,1,0 1,0,1,2,1,8,3,0,0,1,1,1,1,0 1,0,3,2,3,2,5,4,0,1,1,2,1,0 1,4,6,2,2,12,3,0,1,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 1,3,3,2,0,8,0,0,0,1,1,0,1,1 0,0,1,2,2,2,1,0,1,1,1,0,1,0 1,5,13,3,0,5,2,0,1,1,1,1,1,1 0,0,3,2,3,3,3,0,0,1,1,2,1,0 0,0,0,3,2,8,5,4,0,1,1,0,1,0 1,1,3,2,1,3,5,4,1,1,1,0,1,0 0,0,3,2,2,8,1,0,0,1,1,0,1,0 0,5,1,2,2,5,3,0,1,1,1,0,1,0 1,2,1,2,0,4,2,0,1,1,1,0,1,1 0,0,2,1,2,3,1,0,0,1,1,2,1,0 0,1,1,2,2,5,1,0,0,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 3,0,12,1,0,4,2,0,1,1,1,0,1,0 0,0,3,2,1,3,1,0,0,1,1,0,1,0 1,0,3,2,0,10,2,0,1,1,1,0,1,0 0,0,0,3,0,2,2,0,1,1,1,1,1,1 1,0,6,2,0,4,2,0,1,1,1,1,1,1 1,0,3,2,0,7,2,4,1,1,1,0,1,1 1,3,0,3,0,4,2,0,1,1,1,0,1,1 0,0,0,3,2,0,1,0,1,1,1,1,1,0 2,1,3,2,1,1,5,0,0,1,1,0,1,0 0,0,3,2,0,7,0,3,0,1,1,0,1,0 1,1,12,1,0,1,2,0,1,1,1,1,1,1 0,0,1,2,2,3,3,0,1,1,1,0,1,0 0,1,3,2,1,9,3,0,1,1,1,0,1,0 0,0,5,2,2,6,1,0,1,1,1,2,1,0 1,1,3,2,0,10,2,0,1,1,1,1,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 0,0,6,2,0,2,4,0,0,1,1,0,1,0 2,0,1,2,0,3,2,4,1,1,1,0,1,0 0,1,1,2,2,1,1,0,0,1,1,2,1,0 0,0,1,2,2,1,1,0,1,1,1,0,1,0 1,1,4,3,0,5,2,0,1,1,1,1,1,1 0,0,0,3,0,7,2,0,1,1,1,1,1,0 1,1,13,3,0,5,2,0,1,1,1,0,1,0 2,0,3,2,4,1,5,0,1,1,1,0,1,0 0,0,0,3,2,5,3,0,1,1,1,1,1,0 2,5,3,2,4,8,3,0,0,1,1,2,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,0 1,0,4,3,0,5,2,0,1,1,1,1,1,1 0,1,3,2,1,4,3,0,0,1,1,0,1,0 0,0,3,2,2,2,1,0,0,1,1,1,1,0 1,0,3,2,2,7,3,0,0,1,1,2,1,0 1,0,12,1,0,1,2,0,1,1,1,0,1,1 1,2,10,3,0,5,0,0,0,1,1,0,1,1 1,0,0,3,2,0,1,0,1,1,1,0,1,0 1,0,6,2,0,6,2,0,1,1,1,1,1,0 1,2,5,2,2,3,3,0,0,1,1,2,1,0 0,0,3,2,2,2,1,0,0,1,1,2,1,0 2,1,4,3,0,5,2,0,1,1,1,2,1,1 1,4,4,3,3,5,1,4,0,1,1,0,1,0 0,0,1,2,1,3,5,0,0,1,1,0,1,0 0,0,1,2,2,3,1,0,1,1,1,1,1,0 1,5,3,2,1,4,5,0,0,1,1,1,1,0 0,1,12,1,2,2,1,0,0,1,1,0,1,0 0,0,3,2,2,7,1,0,1,1,1,0,1,0 2,0,8,0,1,7,3,0,1,1,1,0,1,0 1,0,9,1,0,1,2,0,1,1,1,1,1,0 1,0,2,1,0,6,0,0,0,1,1,2,1,0 0,0,1,2,0,7,2,0,1,1,1,1,1,0 2,0,3,2,1,10,3,0,1,1,1,2,1,0 0,0,3,2,2,1,3,0,1,1,1,0,1,0 2,0,3,2,4,2,5,0,0,1,1,0,1,0 0,0,0,3,2,3,3,1,1,1,1,1,1,0 0,0,1,2,2,8,1,4,0,1,1,0,1,0 1,2,0,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,6,2,4,0,0,1,1,2,1,0 2,0,9,1,0,8,2,0,1,1,1,0,1,0 1,0,1,2,1,2,3,0,1,1,1,1,1,0 1,0,8,0,0,7,2,4,1,1,1,0,1,0 2,0,7,1,0,6,2,0,1,1,1,1,1,1 1,0,3,2,0,1,2,0,1,1,1,1,1,1 0,0,3,2,0,3,2,0,1,1,1,0,1,1 1,0,3,2,2,8,4,0,1,1,1,2,1,0 1,0,3,2,1,3,3,0,0,1,1,0,1,0 0,0,3,2,2,6,1,0,0,1,1,2,1,0 0,0,1,2,0,3,2,0,1,1,1,1,1,0 1,1,1,2,2,1,3,0,1,1,1,2,1,1 0,0,0,3,2,4,3,0,0,1,1,1,1,0 0,0,9,1,2,10,3,0,1,1,1,0,1,0 0,4,1,2,2,8,1,0,1,1,1,2,1,0 0,0,3,2,2,6,1,4,1,1,1,2,1,0 1,0,0,3,3,5,5,0,1,1,1,0,1,0 0,5,10,3,2,8,3,4,0,1,1,0,1,0 0,0,2,1,2,2,1,4,1,1,1,2,1,0 2,0,3,2,1,4,5,0,0,1,1,0,1,0 0,0,10,3,2,5,1,0,1,1,1,1,1,1 1,0,7,1,2,7,3,0,0,1,1,2,1,0 1,0,3,2,0,7,2,4,1,1,1,2,1,0 0,0,3,2,0,3,2,0,1,1,1,0,1,0 2,0,7,1,0,9,2,4,1,1,1,0,1,0 1,0,7,1,0,7,2,0,1,1,1,0,1,0 0,0,0,3,2,2,4,0,1,1,1,2,1,0 0,5,1,2,0,2,2,0,1,1,1,0,1,0 1,0,3,2,0,7,0,0,0,1,1,0,1,1 1,3,3,2,0,1,2,0,1,1,1,0,1,0 1,2,3,2,0,1,2,0,1,1,1,2,1,0 2,0,8,0,0,10,2,0,1,1,1,0,1,0 0,5,0,3,0,4,2,0,1,1,1,0,1,1 1,0,1,2,0,9,0,0,0,1,1,2,1,0 0,0,9,1,2,2,1,0,1,1,1,2,1,0 0,1,0,3,2,5,3,0,1,1,1,1,1,1 0,0,3,2,2,2,1,0,0,1,1,2,1,0 0,0,3,2,0,10,2,0,1,1,1,0,1,0 2,0,3,2,0,3,2,0,1,1,1,0,1,0 2,0,8,0,0,1,2,0,1,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,2,6,1,0,1,1,1,0,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,1,2,2,1,4,0,1,1,1,1,1,0 1,4,0,3,1,5,5,0,0,1,1,1,1,0 1,5,3,2,0,12,2,0,1,1,1,2,1,0 0,0,1,2,0,6,2,0,1,1,1,2,1,0 1,0,3,2,1,1,3,0,1,1,1,0,1,0 0,1,8,0,0,9,2,0,1,1,1,0,1,0 1,0,6,2,1,8,5,0,0,1,1,2,1,0 0,0,2,1,2,11,1,0,0,1,1,2,1,0 1,4,0,3,0,12,2,0,1,1,1,0,1,1 1,5,1,2,0,8,2,0,1,1,1,0,1,1 0,0,1,2,2,4,3,0,0,1,1,1,1,0 1,3,0,3,0,8,2,0,1,1,1,0,1,0 0,0,0,3,2,2,5,3,1,1,1,0,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 1,0,1,2,0,5,2,0,1,1,1,1,1,0 1,0,1,2,0,3,2,0,1,1,1,0,1,0 3,0,8,0,4,11,5,0,0,1,1,2,1,0 0,0,3,2,1,4,3,0,1,1,1,0,1,0 1,2,3,2,0,7,2,0,1,1,1,1,1,0 2,0,2,1,0,10,2,0,1,1,1,0,1,0 0,0,3,2,0,4,2,0,1,1,1,1,1,0 0,4,3,2,2,5,5,4,0,1,1,2,1,0 2,4,10,3,2,4,4,0,0,1,1,1,1,1 1,4,3,2,2,2,3,0,1,1,1,0,1,0 0,0,0,3,0,5,2,0,1,1,1,0,1,1 1,1,13,3,1,3,3,0,1,1,1,1,1,0 2,0,0,3,0,4,2,0,1,1,1,1,1,1 1,4,0,3,1,5,5,0,0,1,1,1,1,0 1,0,0,3,0,1,2,0,1,1,1,0,1,1 1,0,3,2,0,3,4,0,0,1,1,1,1,0 1,0,10,3,0,5,2,0,1,1,1,0,1,1 1,0,3,2,2,8,4,0,0,1,1,0,1,0 1,0,1,2,2,8,3,0,0,1,1,1,1,0 1,0,1,2,0,8,2,0,1,1,1,0,1,0 1,0,10,3,0,3,2,0,1,1,1,0,1,1 1,0,10,3,0,5,2,0,1,1,1,1,1,1 0,0,14,0,2,3,1,1,0,1,1,2,1,0 1,4,10,3,0,4,2,0,1,1,1,0,1,1 0,0,3,2,2,2,1,4,1,1,1,2,1,0 2,0,5,2,0,7,2,0,1,1,1,0,1,1 1,1,12,1,0,2,0,0,0,1,1,0,1,0 0,0,1,2,2,8,3,0,0,1,1,0,1,0 1,4,0,3,0,5,2,0,1,1,1,0,1,1 1,0,12,1,2,2,5,0,0,1,1,2,1,0 1,4,0,3,0,5,0,0,0,1,1,0,1,1 2,3,3,2,4,4,3,0,1,1,1,2,1,0 1,4,10,3,0,5,0,0,0,1,1,0,1,1 2,0,3,2,4,8,5,0,0,1,1,0,1,0 1,5,10,3,2,5,1,0,0,1,1,2,1,0 0,5,1,2,2,7,1,0,0,1,1,0,1,0 1,4,1,2,1,2,5,0,0,1,1,1,1,0 0,4,5,2,0,8,2,0,1,1,1,0,1,0 1,4,1,2,0,1,2,4,1,1,1,0,1,0 0,0,0,3,2,3,1,1,1,1,1,0,1,0 1,0,6,2,1,5,3,0,0,1,1,2,1,0 0,1,9,1,0,1,3,0,1,1,1,0,1,0 0,0,14,0,0,6,2,0,1,1,1,1,1,0 0,0,0,3,2,8,1,4,1,1,1,2,1,0 1,0,2,1,0,1,2,0,1,1,1,2,1,0 0,0,1,2,2,4,1,0,1,1,1,0,1,0 1,4,0,3,0,5,2,0,1,1,1,2,1,0 0,0,6,2,0,3,2,0,1,1,1,1,1,0 1,2,3,2,0,4,2,0,1,1,1,1,1,0 1,0,3,2,1,3,5,0,0,1,1,1,1,0 1,4,3,2,0,2,2,0,1,1,1,0,1,0 1,4,3,2,1,8,3,0,0,1,1,0,1,0 0,0,3,2,1,8,5,0,0,1,1,0,1,0 1,0,3,2,0,6,2,4,1,1,1,0,1,0 0,0,12,1,2,3,1,0,0,1,1,2,1,0 0,0,2,1,1,6,3,0,1,1,1,1,1,0 1,0,3,2,2,8,4,0,0,1,1,2,1,0 0,0,5,2,2,2,1,0,0,1,1,2,1,0 0,0,1,2,2,5,5,1,1,1,1,2,1,0 0,0,0,3,2,10,3,0,1,1,1,0,1,0 0,0,0,3,0,3,2,0,1,1,1,1,1,0 0,3,4,3,0,5,2,0,1,1,1,0,1,1 1,0,6,2,0,8,2,0,1,1,1,0,1,0 0,0,6,2,0,8,2,0,1,1,1,0,1,0 1,4,10,3,0,4,2,0,1,1,1,1,1,1 0,0,2,1,2,10,5,0,1,1,1,0,1,0 0,0,3,2,2,1,3,0,1,1,1,0,1,0 1,0,8,0,0,9,2,0,1,1,1,1,1,0 2,1,10,3,1,5,3,0,1,1,1,1,1,1 0,0,1,2,1,3,5,0,0,1,1,0,1,0 1,5,0,3,2,5,3,0,1,1,1,2,1,0 1,0,1,2,1,7,5,0,0,1,1,0,1,0 0,0,3,2,0,4,2,0,1,1,1,0,1,0 0,0,3,2,1,5,3,0,0,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,1 1,0,10,3,0,8,2,0,1,1,1,0,1,0 1,0,1,2,1,4,3,0,0,1,1,0,1,0 1,0,1,2,0,7,2,0,1,1,1,0,1,0 1,4,1,2,1,8,3,0,0,1,1,2,1,0 0,0,3,2,2,3,5,4,0,1,1,1,1,0 1,0,3,2,0,4,2,0,1,1,1,1,1,1 0,0,0,3,0,5,0,0,0,1,1,2,1,1 1,4,3,2,0,1,2,4,1,1,1,0,1,1 0,0,3,2,2,6,1,0,1,1,1,1,1,0 1,0,1,2,0,5,2,0,1,1,1,1,1,1 0,0,6,2,0,10,2,0,1,1,1,0,1,0 1,1,0,3,2,3,3,0,0,1,1,1,1,0 0,0,0,3,0,8,2,0,1,1,1,2,1,0 2,2,1,2,0,5,2,0,1,1,1,0,1,0 1,0,6,2,0,1,2,0,1,1,1,0,1,1 1,2,5,2,0,4,0,0,0,1,1,0,1,0 0,0,0,3,2,5,1,0,0,1,1,0,1,0 1,0,0,3,2,5,3,0,1,1,1,0,1,1 2,0,3,2,0,6,2,0,1,1,1,0,1,1 0,1,4,3,0,5,2,0,1,1,1,1,1,1 1,0,0,3,0,5,2,0,1,1,1,1,1,1 1,0,0,3,0,5,2,0,1,1,1,1,1,1 0,1,6,2,2,1,1,0,1,1,1,1,1,0 1,4,10,3,0,5,0,0,0,1,1,1,1,1 2,0,0,3,0,3,2,0,1,1,1,0,1,1 1,3,0,3,0,8,2,0,1,1,1,1,1,1 3,2,0,3,0,4,2,0,1,1,1,0,1,1 3,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,5,2,3,1,0,1,1,0,1,0 1,1,3,2,0,1,2,0,1,1,1,1,1,1 1,0,0,3,3,0,3,1,1,1,1,0,1,0 0,0,6,2,0,5,2,0,1,1,1,1,1,1 0,4,0,3,2,5,1,0,0,1,1,2,1,0 2,0,0,3,2,2,3,0,0,1,1,1,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 1,0,12,1,0,1,2,0,1,1,1,0,1,0 2,1,3,2,4,8,4,0,0,1,1,2,1,0 1,0,1,2,0,3,2,0,1,1,1,0,1,1 1,1,1,2,1,5,5,4,0,1,1,0,1,0 1,0,0,3,0,3,2,0,1,1,1,1,1,1 0,0,14,0,2,1,3,0,1,1,1,0,1,0 1,0,0,3,1,5,5,0,0,1,1,0,1,0 0,0,1,2,0,2,2,0,1,1,1,2,1,0 1,0,3,2,1,3,5,0,0,1,1,2,1,0 2,0,12,1,3,7,3,0,0,1,1,2,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,0,3,2,2,3,1,0,1,1,2,1,1 0,0,3,2,2,3,1,4,0,1,1,2,1,0 0,0,0,3,2,5,3,0,1,1,1,1,1,0 1,0,7,1,0,1,2,0,1,1,1,1,1,0 1,3,10,3,0,5,2,0,1,1,1,0,1,1 1,0,1,2,1,2,3,0,0,1,1,1,1,0 2,0,3,2,0,0,2,4,1,1,1,0,1,1 0,0,12,1,2,2,5,0,1,1,1,1,1,0 0,4,0,3,0,5,0,0,0,1,1,2,1,1 0,0,3,2,2,5,1,4,1,1,1,0,1,0 0,0,9,1,2,11,1,0,1,1,1,2,1,0 1,4,0,3,0,5,2,0,1,1,1,1,1,1 0,0,1,2,2,7,3,0,0,1,1,2,1,0 2,0,1,2,0,3,2,0,1,1,1,0,1,0 0,0,3,2,1,3,3,1,1,1,1,1,1,0 0,0,10,3,0,5,2,0,1,1,1,1,1,0 0,0,2,1,2,7,3,0,0,1,1,2,1,0 1,0,1,2,1,8,4,0,0,1,1,0,1,0 2,0,15,0,2,7,3,0,1,1,1,2,1,0 0,5,3,2,0,1,2,0,1,1,1,0,1,1 0,0,3,2,1,4,3,0,0,1,1,0,1,0 1,1,3,2,0,9,2,0,1,1,1,1,1,0 1,0,0,3,0,4,2,0,1,1,1,0,1,1 0,0,3,2,3,1,5,0,0,1,1,0,1,0 0,0,3,2,1,8,3,0,0,1,1,0,1,0 2,0,7,1,4,3,3,0,0,1,1,0,1,0 2,0,3,2,4,8,4,0,0,1,1,0,1,0 1,0,3,2,0,4,2,0,1,1,1,0,1,0 0,0,3,2,2,7,1,4,0,1,1,0,1,0 1,0,3,2,1,3,3,0,1,1,1,2,1,0 0,1,1,2,0,1,2,0,1,1,1,1,1,1 0,1,3,2,2,9,1,0,1,1,1,0,1,0 1,0,3,2,0,5,2,0,1,1,1,0,1,1 2,0,3,2,0,2,2,4,1,1,1,2,1,0 1,0,1,2,1,3,3,0,1,1,1,1,1,0 1,0,3,2,0,7,2,0,1,1,1,1,1,1 1,4,1,2,0,6,2,0,1,1,1,0,1,0 0,0,1,2,0,3,2,0,1,1,1,0,1,1 0,0,3,2,2,3,5,0,0,1,1,2,1,0 0,0,0,3,0,8,2,0,1,1,1,0,1,0 1,0,10,3,0,5,2,0,1,1,1,1,1,1 0,4,0,3,2,5,3,2,1,1,1,1,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 0,1,0,3,0,5,2,0,1,1,1,1,1,0 1,0,3,2,0,4,2,0,1,1,1,1,1,1 0,0,0,3,2,3,3,0,1,1,1,1,1,0 0,0,0,3,2,6,1,0,0,1,1,2,1,0 0,0,3,2,0,3,2,4,1,1,1,2,1,0 2,0,3,2,0,3,0,0,0,1,1,2,1,0 1,0,1,2,1,8,5,0,0,1,1,1,1,0 0,0,3,2,2,8,1,0,0,1,1,0,1,0 0,1,0,3,0,5,2,0,1,1,1,0,1,0 1,0,1,2,0,3,2,0,1,1,1,0,1,1 2,1,1,2,4,4,5,0,0,1,1,1,1,0 1,0,3,2,4,7,3,0,1,1,1,0,1,0 0,0,14,0,2,2,4,0,1,1,1,1,1,0 0,1,4,3,0,5,2,0,1,1,1,1,1,1 0,0,3,2,2,7,5,0,0,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 2,0,0,3,0,5,2,0,1,1,1,0,1,0 0,0,10,3,2,4,3,0,0,1,1,1,1,1 0,0,0,3,0,5,0,0,0,1,1,2,1,0 0,4,0,3,2,5,3,0,0,1,1,0,1,0 3,0,11,0,0,5,2,0,1,1,1,2,1,0 1,0,3,2,3,2,4,4,0,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,1,2,0,2,2,4,1,1,1,2,1,0 1,0,3,2,0,7,2,0,1,1,1,1,1,1 1,0,5,2,0,1,2,0,1,1,1,1,1,0 1,0,1,2,0,8,2,0,1,1,1,1,1,1 2,0,1,2,0,5,2,0,1,1,1,0,1,1 2,0,0,3,0,3,2,0,1,1,1,0,1,1 0,0,0,3,2,3,3,0,1,1,1,2,1,0 0,0,3,2,2,7,3,0,0,1,1,1,1,0 1,0,1,2,0,7,2,0,1,1,1,1,1,1 1,0,3,2,3,2,5,4,0,1,1,2,1,0 1,0,0,3,0,5,2,0,1,1,1,0,1,1 1,0,2,1,0,7,2,0,1,1,1,0,1,0 1,1,3,2,0,2,2,0,1,1,1,1,1,0 0,0,0,3,0,10,2,0,1,1,1,2,1,0 1,0,3,2,1,8,3,0,0,1,1,0,1,0 0,0,3,2,2,4,1,3,0,1,1,0,1,0 1,0,5,2,1,5,5,0,1,1,1,2,1,0 1,0,1,2,0,8,0,0,0,1,1,0,1,1 0,0,0,3,2,3,1,0,1,1,1,0,1,0 0,0,12,1,2,6,4,0,1,1,1,0,1,0 0,0,1,2,1,3,5,0,0,1,1,2,1,0 0,0,12,1,2,2,1,0,1,1,1,0,1,0 0,0,3,2,2,6,1,2,1,1,1,0,1,0 0,0,1,2,2,8,5,3,0,1,1,2,1,0 0,0,5,2,0,3,2,1,1,1,1,1,1,0 1,0,1,2,0,8,0,0,0,1,1,2,1,0 1,0,3,2,2,8,1,1,0,1,1,0,1,0 1,2,1,2,1,4,3,0,1,1,1,1,1,0 1,0,1,2,0,3,2,0,1,1,1,2,1,1 2,0,11,0,1,11,3,0,0,1,1,2,1,0 1,0,1,2,0,5,2,0,1,1,1,0,1,1 1,3,3,2,4,8,3,0,0,1,1,0,1,0 0,0,0,3,2,5,1,0,0,1,1,0,1,0 0,0,1,2,1,8,5,0,0,1,1,0,1,0 1,0,2,1,0,1,2,0,1,1,1,0,1,1 1,1,1,2,0,9,2,0,1,1,1,1,1,0 0,0,3,2,2,8,4,0,0,1,1,0,1,0 1,0,5,2,0,8,2,0,1,1,1,0,1,1 0,4,0,3,2,5,3,0,0,1,1,0,1,0 1,1,1,2,0,4,2,0,1,1,1,1,1,0 2,0,3,2,1,8,3,0,0,1,1,0,1,0 1,1,0,3,0,3,2,0,1,1,1,0,1,0 2,0,0,3,0,5,2,0,1,1,1,0,1,1 0,0,9,1,2,3,3,0,0,1,1,1,1,0 0,0,3,2,0,7,0,0,0,1,1,1,1,1 1,1,3,2,0,9,2,0,1,1,1,1,1,1 0,4,1,2,0,12,2,0,1,1,1,0,1,1 2,0,3,2,0,10,2,0,1,1,1,1,1,0 0,0,6,2,2,4,3,0,0,1,1,2,1,0 0,0,5,2,0,7,2,0,1,1,1,0,1,1 1,0,0,3,2,4,3,0,1,1,1,0,1,1 2,0,3,2,0,12,2,0,1,1,1,0,1,1 0,0,1,2,2,2,1,0,0,1,1,2,1,0 0,0,1,2,2,0,3,0,0,1,1,0,1,0 1,0,3,2,1,8,5,0,0,1,1,2,1,0 1,0,1,2,0,4,0,0,0,1,1,2,1,1 1,0,1,2,5,5,1,4,0,1,1,0,1,0 1,0,12,1,0,7,2,0,1,1,1,0,1,1 0,1,0,3,1,4,3,0,1,1,1,2,1,0 0,4,0,3,0,5,0,4,0,1,1,0,1,0 1,0,3,2,1,8,5,4,1,1,1,0,1,0 0,0,3,2,2,6,1,0,1,1,1,2,1,0 1,0,3,2,1,10,3,0,1,1,1,0,1,0 2,0,3,2,0,4,2,0,1,1,1,1,1,1 1,0,0,3,5,4,3,0,0,1,1,1,1,0 0,0,0,3,2,5,3,0,0,1,1,1,1,0 0,0,3,2,2,7,3,0,1,1,1,0,1,0 0,0,1,2,1,7,3,0,1,1,1,0,1,0 0,0,3,2,2,8,1,0,0,1,1,0,1,0 0,3,1,2,2,6,1,0,1,1,1,2,1,0 0,0,1,2,0,1,2,0,1,1,1,1,1,0 0,0,0,3,2,2,3,0,1,1,1,0,1,0 0,0,10,3,1,5,5,0,0,1,1,0,1,0 1,0,0,3,1,5,5,0,1,1,1,1,1,1 1,4,10,3,1,4,3,0,0,1,1,0,1,0 0,0,0,3,2,4,1,0,0,1,1,0,1,0 1,0,6,2,0,1,2,0,1,1,1,0,1,0 0,1,0,3,2,3,3,0,0,1,1,0,1,0 0,0,1,2,2,8,3,0,0,1,1,0,1,0 0,2,0,3,0,3,2,0,1,1,1,1,1,0 2,2,0,3,0,3,2,0,1,1,1,1,1,1 0,1,3,2,0,1,2,0,1,1,1,1,1,0 0,4,3,2,0,10,2,4,1,1,1,0,1,0 0,4,1,2,0,5,2,0,1,1,1,0,1,0 1,1,1,2,0,9,2,0,1,1,1,1,1,0 2,0,0,3,0,5,2,0,1,1,1,1,1,1 2,0,1,2,0,9,2,0,1,1,1,0,1,0 2,0,12,1,0,7,2,0,1,1,1,0,1,0 0,3,0,3,2,5,3,0,1,1,1,0,1,0 0,1,1,2,0,4,2,0,1,1,1,1,1,1 1,0,0,3,2,4,3,0,1,1,1,1,1,1 0,0,12,1,0,1,2,0,1,1,1,0,1,0 1,4,10,3,1,5,3,0,0,1,1,1,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,4,3,2,1,8,5,0,0,1,1,2,1,0 1,0,3,2,1,3,3,0,1,1,1,1,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,0,3,1,8,3,0,0,1,1,2,1,0 0,0,1,2,2,4,1,0,1,1,1,2,1,0 0,2,3,2,2,1,1,0,1,1,1,0,1,0 0,0,3,2,1,3,3,0,0,1,1,2,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,1 0,1,1,2,0,3,2,0,1,1,1,1,1,0 0,0,5,2,1,5,5,0,0,1,1,1,1,0 0,0,1,2,2,1,1,0,1,1,1,0,1,0 0,0,6,2,0,5,0,0,0,1,1,0,1,1 2,5,0,3,1,8,5,0,1,1,1,2,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,0 0,0,10,3,0,4,2,0,1,1,1,0,1,0 1,0,0,3,0,7,2,0,1,1,1,0,1,1 1,0,3,2,0,8,2,0,1,1,1,2,1,0 0,0,1,2,0,1,2,0,1,1,1,0,1,1 0,0,2,1,2,4,1,0,0,1,1,2,1,0 1,0,6,2,0,0,2,0,1,1,1,0,1,0 2,0,0,3,0,3,2,0,1,1,1,1,1,1 1,0,3,2,4,3,3,0,0,1,1,0,1,0 1,0,1,2,1,7,3,4,0,1,1,0,1,0 1,0,0,3,0,4,2,1,1,1,1,1,1,1 1,4,0,3,2,12,3,0,1,1,1,1,1,0 1,0,1,2,2,8,5,4,0,1,1,0,1,0 3,1,3,2,0,3,2,0,1,1,1,2,1,0 0,0,6,2,0,8,0,0,0,1,1,0,1,1 1,0,0,3,0,4,2,0,1,1,1,0,1,1 0,0,3,2,2,8,1,0,0,1,1,0,1,0 0,0,1,2,2,3,1,0,0,1,1,0,1,0 1,0,9,1,2,10,3,1,1,1,1,2,1,0 0,0,3,2,0,7,2,0,1,1,1,1,1,0 0,1,3,2,0,5,2,0,1,1,1,0,1,0 1,1,1,2,1,1,3,0,1,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,2,1,1,0,0,1,1,2,1,0 1,0,7,1,1,2,3,0,0,1,1,2,1,0 1,0,3,2,2,1,3,0,1,1,1,0,1,0 0,0,0,3,2,3,1,0,1,1,1,0,1,0 1,4,1,2,1,12,3,0,1,1,1,1,1,0 0,0,1,2,2,3,1,4,0,1,1,2,1,0 0,0,3,2,2,1,1,0,1,1,1,0,1,0 0,0,1,2,2,8,1,0,1,1,1,1,1,0 1,0,4,3,0,3,2,0,1,1,1,1,1,0 1,0,3,2,0,10,2,4,1,1,1,1,1,1 1,0,3,2,0,8,0,0,0,1,1,2,1,0 0,0,0,3,2,8,3,0,0,1,1,0,1,0 2,0,3,2,0,1,2,0,1,1,1,0,1,1 1,4,7,1,0,1,2,0,1,1,1,2,1,0 0,0,1,2,2,1,5,0,1,1,1,0,1,0 1,5,13,3,0,5,2,0,1,1,1,1,1,1 0,0,1,2,2,8,1,0,0,1,1,2,1,0 0,0,0,3,2,5,3,0,0,1,1,0,1,0 2,5,10,3,1,5,3,0,1,1,1,0,1,0 1,0,1,2,0,4,2,0,1,1,1,1,1,1 0,0,8,0,2,6,5,0,1,1,1,0,1,0 2,2,3,2,0,8,0,0,0,1,1,0,1,1 1,0,8,0,0,1,2,0,1,1,1,2,1,0 0,0,1,2,2,3,5,0,1,1,1,1,1,0 1,0,10,3,0,5,2,0,1,1,1,1,1,1 0,0,1,2,2,3,1,0,0,1,1,2,1,0 2,1,3,2,0,3,2,0,1,1,1,0,1,0 1,1,0,3,0,1,2,0,1,1,1,1,1,1 1,0,1,2,1,10,3,0,1,1,1,1,1,0 0,0,0,3,2,6,3,0,1,1,1,0,1,0 1,1,13,3,0,5,2,0,1,1,1,0,1,1 2,0,3,2,1,3,3,0,0,1,1,2,1,0 0,0,5,2,2,2,4,1,1,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,0 2,0,8,0,0,7,2,0,1,1,1,0,1,0 0,0,1,2,2,2,3,0,0,1,1,1,1,0 0,0,2,1,3,2,5,0,0,1,1,0,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 1,0,3,2,4,5,5,0,0,1,1,2,1,0 0,0,1,2,2,8,1,0,0,1,1,2,1,0 0,0,5,2,2,5,3,1,1,1,1,0,1,0 0,0,5,2,2,8,3,0,0,1,1,2,1,0 0,3,1,2,0,4,0,4,0,1,1,0,1,1 0,0,10,3,3,4,3,0,1,1,1,1,1,1 1,0,2,1,0,3,2,0,1,1,1,0,1,1 0,5,1,2,2,2,1,4,1,1,1,2,1,0 3,4,3,2,1,8,3,0,0,1,1,2,1,0 2,3,10,3,0,4,2,1,1,1,1,1,1,1 1,1,3,2,0,2,0,0,0,1,1,2,1,0 0,0,3,2,0,1,2,0,1,1,1,1,1,0 1,0,1,2,0,1,2,0,1,1,1,1,1,0 0,4,10,3,2,5,3,0,1,1,1,1,1,0 0,0,6,2,2,1,5,4,0,1,1,0,1,0 1,3,3,2,1,8,5,4,0,1,1,0,1,0 0,0,3,2,2,8,3,0,0,1,1,0,1,0 0,0,3,2,2,8,3,0,1,1,1,1,1,0 0,0,0,3,2,4,1,0,1,1,1,0,1,0 0,3,1,2,2,2,5,4,0,1,1,0,1,0 2,0,0,3,0,10,2,0,1,1,1,2,1,0 0,0,0,3,2,5,3,0,1,1,1,1,1,0 2,0,0,3,1,3,3,0,1,1,1,1,1,0 2,0,3,2,1,2,3,0,0,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,0,1,1 0,0,6,2,0,5,2,0,1,1,1,0,1,1 0,0,0,3,2,6,1,0,1,1,1,0,1,0 1,0,10,3,1,3,3,0,1,1,1,1,1,1 0,0,0,3,1,3,3,0,1,1,1,0,1,1 0,0,3,2,2,1,1,0,1,1,1,0,1,0 1,5,1,2,1,5,3,0,0,1,1,0,1,0 1,0,3,2,0,4,2,0,1,1,1,0,1,0 2,0,1,2,0,5,2,0,1,1,1,0,1,1 0,1,6,2,0,9,2,0,1,1,1,1,1,0 2,4,3,2,4,2,3,0,0,1,1,2,1,0 0,5,1,2,2,0,1,0,1,1,1,2,1,0 1,0,0,3,0,5,2,0,1,1,1,0,1,1 1,4,3,2,0,10,2,0,1,1,1,0,1,1 1,0,5,2,0,1,2,0,1,1,1,1,1,0 0,0,3,2,1,7,4,0,1,1,1,0,1,0 1,0,3,2,2,1,3,4,1,1,1,0,1,0 0,0,3,2,2,2,1,4,1,1,1,0,1,0 1,0,0,3,1,4,3,0,1,1,1,0,1,1 0,3,1,2,2,0,1,0,0,1,1,2,1,0 0,0,4,3,0,5,0,0,0,1,1,1,1,1 1,0,3,2,3,2,3,0,0,1,1,0,1,0 0,4,0,3,1,5,3,0,0,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,1,1,1 1,0,0,3,0,4,2,0,1,1,1,1,1,1 2,1,3,2,0,9,2,0,1,1,1,1,1,1 1,0,3,2,3,1,5,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,6,2,1,2,5,0,0,1,1,0,1,0 1,0,10,3,0,5,0,0,0,1,1,1,1,0 2,0,3,2,0,10,2,0,1,1,1,1,1,1 0,1,12,1,2,9,1,0,1,1,1,2,1,0 0,3,3,2,0,8,2,4,1,1,1,0,1,0 0,0,12,1,2,7,1,0,0,1,1,0,1,0 1,1,0,3,0,3,2,0,1,1,1,1,1,0 0,0,6,2,2,1,5,0,1,1,1,0,1,0 2,0,8,0,2,2,4,0,1,1,1,2,1,0 3,0,11,0,4,11,3,4,0,1,1,2,1,0 2,0,1,2,0,12,2,0,1,1,1,0,1,1 0,0,5,2,0,7,2,0,1,1,1,1,1,0 0,0,1,2,3,3,5,0,0,1,1,0,1,0 0,0,1,2,2,3,1,1,0,1,1,2,1,0 2,4,10,3,0,5,2,0,1,1,1,0,1,1 1,0,6,2,0,8,2,0,1,1,1,0,1,0 2,1,4,3,0,5,2,0,1,1,1,2,1,0 1,0,3,2,4,1,5,1,0,1,1,0,1,0 1,0,13,3,0,4,2,1,1,1,1,0,1,1 1,0,3,2,2,8,3,0,1,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,1,1,1 1,0,5,2,0,3,2,0,1,1,1,1,1,1 2,0,0,3,0,3,0,0,0,1,1,0,1,0 1,0,4,3,0,5,2,0,1,1,1,1,1,1 0,0,0,3,2,2,3,0,0,1,1,2,1,0 1,0,0,3,2,5,3,0,0,1,1,1,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,1 0,1,3,2,1,9,1,0,1,1,1,1,1,0 1,0,1,2,1,8,3,0,0,1,1,2,1,0 0,0,1,2,2,7,5,0,1,1,1,0,1,0 1,0,0,3,0,1,2,0,1,1,1,0,1,0 1,1,3,2,0,1,2,0,1,1,1,1,1,0 0,0,6,2,2,5,5,4,0,1,1,2,1,0 2,1,3,2,0,3,2,0,1,1,1,2,1,0 1,0,10,3,2,5,3,0,0,1,1,0,1,0 0,0,3,2,0,6,2,0,1,1,1,1,1,0 1,0,3,2,0,8,0,0,0,1,1,0,1,0 0,0,3,2,2,7,4,0,1,1,1,0,1,0 0,0,1,2,0,10,2,0,1,1,1,1,1,0 0,0,1,2,2,1,1,0,1,1,1,0,1,0 0,0,3,2,2,1,3,0,1,1,1,0,1,0 2,0,0,3,0,0,2,0,1,1,1,1,1,1 0,0,1,2,2,3,1,0,0,1,1,0,1,0 0,5,1,2,1,8,1,0,1,1,1,2,1,0 1,1,3,2,0,4,2,0,1,1,1,1,1,0 2,0,1,2,4,2,3,0,0,1,1,2,1,0 0,0,3,2,0,4,2,0,1,1,1,0,1,0 0,2,0,3,2,5,3,3,1,1,1,1,1,0 0,5,3,2,2,8,1,0,0,1,1,0,1,0 1,0,3,2,1,5,3,0,0,1,1,0,1,0 2,5,7,1,0,9,2,0,1,1,1,0,1,0 0,4,6,2,2,1,1,0,0,1,1,0,1,0 0,1,1,2,2,4,1,1,1,1,1,1,1,0 1,5,13,3,1,5,5,0,1,1,1,1,1,1 1,0,0,3,2,8,3,0,0,1,1,2,1,0 0,0,1,2,2,2,1,0,1,1,1,2,1,0 0,0,0,3,0,5,2,0,1,1,1,0,1,1 1,0,1,2,0,4,0,0,0,1,1,0,1,1 0,1,5,2,2,2,1,0,1,1,1,1,1,0 1,0,3,2,1,8,5,0,0,1,1,1,1,0 1,0,0,3,0,9,2,0,1,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,1 0,0,0,3,0,3,2,0,1,1,1,1,1,1 2,1,11,0,0,3,2,0,1,1,1,2,1,0 0,0,7,1,2,2,3,0,1,1,1,0,1,0 0,0,7,1,3,2,5,0,0,1,1,2,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,0 1,0,2,1,1,10,1,0,1,1,1,0,1,0 0,0,2,1,2,2,1,0,0,1,1,2,1,0 0,0,1,2,2,1,1,0,1,1,1,0,1,0 2,0,12,1,0,10,2,0,1,1,1,0,1,0 1,1,3,2,0,10,2,0,1,1,1,1,1,1 0,0,1,2,0,8,2,0,1,1,1,2,1,0 0,0,3,2,2,7,1,0,0,1,1,0,1,0 1,3,0,3,2,0,3,0,1,1,1,1,1,0 0,0,0,3,2,4,4,0,0,1,1,0,1,0 0,0,2,1,2,3,5,0,0,1,1,2,1,0 1,2,5,2,0,3,2,0,1,1,1,1,1,1 1,0,12,1,3,4,3,4,1,1,1,1,1,0 0,0,6,2,2,2,5,4,1,1,1,0,1,0 0,5,1,2,2,4,1,0,1,1,1,2,1,0 1,0,3,2,1,1,3,0,1,1,1,0,1,0 0,0,3,2,0,6,2,0,1,1,1,0,1,0 0,0,0,3,0,1,2,0,1,1,1,1,1,0 2,0,3,2,0,3,2,0,1,1,1,2,1,0 0,4,0,3,2,5,1,0,0,1,1,1,1,0 1,0,4,3,0,5,2,0,1,1,1,1,1,1 1,0,3,2,5,3,5,0,0,1,1,2,1,0 0,0,0,3,2,3,3,0,1,1,1,1,1,0 1,0,1,2,0,8,0,0,0,1,1,0,1,0 1,0,1,2,1,3,5,0,0,1,1,1,1,0 1,0,10,3,0,5,2,0,1,1,1,0,1,1 0,5,3,2,0,9,2,0,1,1,1,0,1,0 2,0,3,2,0,12,2,0,1,1,1,2,1,0 1,0,9,1,0,8,2,0,1,1,1,1,1,0 1,0,0,3,2,5,1,0,1,1,1,0,1,0 3,2,2,1,0,4,2,0,1,1,1,2,1,0 0,2,6,2,0,9,2,0,1,1,1,1,1,0 1,0,3,2,1,8,3,0,1,1,1,0,1,0 1,1,8,0,0,7,2,0,1,1,1,1,1,1 1,4,10,3,1,5,5,0,0,1,1,1,1,0 0,0,1,2,0,8,2,1,1,1,1,1,1,1 0,0,1,2,2,3,5,0,1,1,1,2,1,0 0,3,3,2,3,8,4,4,1,1,1,2,1,0 1,0,0,3,0,3,2,4,1,1,1,0,1,1 1,0,1,2,0,8,0,0,0,1,1,2,1,1 1,1,3,2,0,3,2,4,1,1,1,1,1,0 1,0,3,2,1,1,4,0,0,1,1,0,1,0 0,0,1,2,2,10,1,0,1,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,0,1,1 2,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,3,2,2,7,1,0,0,1,1,0,1,0 1,0,1,2,0,6,2,0,1,1,1,0,1,0 1,4,10,3,0,5,2,0,1,1,1,0,1,1 1,5,0,3,0,4,2,0,1,1,1,0,1,1 0,4,3,2,3,2,5,0,0,1,1,2,1,0 0,0,1,2,2,4,1,0,1,1,1,0,1,0 0,0,7,1,3,9,5,4,1,1,1,0,1,0 1,4,3,2,4,10,5,0,0,1,1,0,1,0 1,0,10,3,0,3,2,0,1,1,1,1,1,1 1,0,0,3,2,5,3,0,0,1,1,0,1,1 2,0,3,2,2,8,3,0,0,1,1,2,1,0 0,0,1,2,2,7,1,0,0,1,1,1,1,0 2,4,11,0,4,6,5,4,1,1,1,0,1,0 0,0,0,3,0,8,0,0,0,1,1,0,1,0 1,0,3,2,3,1,5,0,1,1,1,1,1,0 0,5,0,3,2,0,1,0,0,1,1,0,1,0 2,5,7,1,2,8,3,0,0,1,1,2,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,1 1,5,3,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,1,8,3,0,0,1,1,0,1,0 0,0,3,2,2,2,1,0,0,1,1,2,1,0 0,0,1,2,2,8,1,0,1,1,1,0,1,0 1,3,3,2,0,8,2,0,1,1,1,0,1,1 2,1,5,2,0,4,2,0,1,1,1,1,1,1 0,0,3,2,2,1,1,0,1,1,1,1,1,0 2,1,1,2,0,4,2,0,1,1,1,2,1,0 0,4,0,3,2,5,3,0,1,1,1,2,1,0 0,0,1,2,0,1,2,0,1,1,1,0,1,0 2,0,0,3,0,10,2,0,1,1,1,0,1,0 1,1,3,2,0,4,2,0,1,1,1,0,1,0 1,0,11,0,0,4,2,0,1,1,1,1,1,1 0,0,3,2,0,1,2,0,1,1,1,1,1,0 1,0,6,2,0,1,2,0,1,1,1,0,1,0 0,0,0,3,2,7,1,4,0,1,1,0,1,0 1,0,3,2,0,6,2,4,1,1,1,0,1,0 1,0,5,2,0,1,2,0,1,1,1,1,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,0 1,0,3,2,2,8,3,0,0,1,1,2,1,0 1,3,0,3,2,8,3,0,1,1,1,1,1,0 1,5,0,3,0,12,2,4,1,1,1,1,1,0 0,0,3,2,2,2,1,0,1,1,1,0,1,0 2,1,14,0,2,3,3,0,0,1,1,2,1,0 1,0,10,3,0,3,2,0,1,1,1,0,1,1 3,1,3,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,1,6,1,0,1,1,1,1,1,0 1,0,1,2,0,10,2,1,1,1,1,0,1,0 0,0,3,2,5,10,1,0,1,1,1,0,1,0 0,0,0,3,2,4,5,0,0,1,1,1,1,0 2,0,3,2,1,7,1,0,0,1,1,0,1,0 0,0,9,1,2,9,1,0,1,1,1,1,1,0 1,1,1,2,0,3,2,0,1,1,1,0,1,0 1,0,2,1,0,9,2,0,1,1,1,1,1,0 0,0,0,3,2,5,5,3,0,1,1,2,1,0 0,0,2,1,2,2,1,1,1,1,1,0,1,0 1,0,6,2,0,12,2,0,1,1,1,1,1,0 2,1,1,2,0,9,2,0,1,1,1,1,1,0 2,0,3,2,0,12,2,0,1,1,1,0,1,0 1,0,3,2,0,8,2,0,1,1,1,0,1,1 0,0,3,2,2,3,1,0,0,1,1,2,1,0 0,0,5,2,0,5,0,0,0,1,1,1,1,0 1,0,1,2,0,3,0,0,0,1,1,0,1,1 0,0,3,2,2,3,1,0,0,1,1,2,1,0 0,4,10,3,2,5,3,0,1,1,1,1,1,0 0,0,3,2,1,10,3,0,1,1,1,1,1,0 0,0,1,2,2,2,1,0,1,1,1,2,1,0 0,4,1,2,2,12,1,0,0,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,3,2,1,8,5,0,0,1,1,0,1,0 1,0,0,3,0,5,2,0,1,1,1,0,1,1 1,4,1,2,0,1,2,0,1,1,1,0,1,0 0,0,0,3,2,5,1,0,0,1,1,1,1,0 0,0,3,2,2,3,3,0,0,1,1,2,1,0 1,0,1,2,4,8,3,0,0,1,1,1,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,0 1,0,3,2,1,4,3,0,0,1,1,2,1,0 1,0,0,3,1,4,3,0,1,1,1,1,1,0 1,0,3,2,0,7,2,0,1,1,1,1,1,1 0,0,1,2,0,4,2,0,1,1,1,1,1,0 1,0,1,2,0,8,0,0,0,1,1,2,1,0 1,4,3,2,0,4,2,4,1,1,1,2,1,1 0,0,3,2,2,8,3,0,0,1,1,1,1,0 0,1,3,2,0,4,2,0,1,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,3,3,2,2,1,3,0,1,1,1,0,1,0 0,0,4,3,2,5,3,0,0,1,1,2,1,0 0,0,1,2,2,3,1,4,0,1,1,2,1,0 0,0,2,1,2,2,1,0,1,1,1,2,1,0 2,1,8,0,4,9,5,0,0,1,1,2,1,0 0,0,2,1,2,3,1,4,0,1,1,2,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,2,1,2,10,1,0,1,1,1,2,1,0 0,0,1,2,2,10,3,0,1,1,1,1,1,0 1,0,10,3,0,5,2,0,1,1,1,1,1,1 1,0,3,2,1,2,3,4,0,1,1,2,1,0 1,0,0,3,0,4,2,0,1,1,1,0,1,1 0,0,3,2,0,1,2,3,1,1,1,0,1,0 1,0,3,2,0,1,2,4,1,1,1,0,1,0 0,3,1,2,1,8,5,4,0,1,1,2,1,0 1,0,1,2,2,4,3,0,0,1,1,0,1,1 0,0,1,2,2,3,1,0,0,1,1,0,1,0 0,0,3,2,2,8,3,0,1,1,1,1,1,0 1,0,1,2,2,6,3,0,1,1,1,0,1,0 0,2,3,2,2,1,3,0,1,1,1,1,1,0 0,0,11,0,2,2,4,0,0,1,1,2,1,0 0,0,9,1,2,3,1,0,0,1,1,2,1,0 1,0,3,2,2,3,3,0,0,1,1,0,1,0 2,0,0,3,0,4,2,0,1,1,1,1,1,1 1,1,3,2,0,9,2,0,1,1,1,0,1,0 0,0,3,2,2,8,1,0,0,1,1,0,1,0 3,0,12,1,0,3,2,0,1,1,1,2,1,0 2,0,12,1,0,9,2,0,1,1,1,1,1,0 1,0,1,2,0,7,2,0,1,1,1,0,1,0 0,2,3,2,0,4,2,0,1,1,1,1,1,1 1,0,5,2,1,4,3,0,0,1,1,0,1,0 0,0,3,2,2,8,1,0,1,1,1,0,1,0 2,0,0,3,0,3,2,0,1,1,1,2,1,0 1,0,1,2,1,3,5,0,0,1,1,0,1,0 1,0,3,2,2,7,3,0,1,1,1,0,1,0 0,1,1,2,0,3,2,0,1,1,1,1,1,0 2,4,3,2,4,2,5,0,0,1,1,0,1,0 2,1,0,3,0,9,2,0,1,1,1,2,1,1 1,0,0,3,2,3,5,0,0,1,1,1,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,0,3,2,5,1,1,0,1,1,0,1,0 1,0,0,3,2,5,3,0,1,1,1,0,1,1 1,0,0,3,0,3,2,0,1,1,1,0,1,1 1,0,1,2,1,8,4,0,0,1,1,0,1,0 2,0,0,3,0,8,2,1,1,1,1,0,1,0 1,0,1,2,0,8,2,0,1,1,1,1,1,1 1,5,0,3,0,4,2,0,1,1,1,1,1,1 2,5,13,3,0,5,2,0,1,1,1,0,1,1 1,0,5,2,1,7,1,0,0,1,1,1,1,0 2,0,0,3,0,4,2,0,1,1,1,1,1,0 1,1,3,2,4,2,4,4,0,1,1,0,1,0 1,0,1,2,2,1,1,0,1,1,1,0,1,0 0,0,1,2,2,2,1,0,0,1,1,0,1,0 1,3,3,2,0,8,2,0,1,1,1,0,1,1 1,1,1,2,0,4,2,0,1,1,1,1,1,0 1,3,3,2,0,8,2,4,1,1,1,0,1,0 0,0,3,2,0,3,2,0,1,1,1,1,1,0 2,0,1,2,1,7,3,0,1,1,1,1,1,0 0,0,0,3,2,8,1,0,0,1,1,0,1,0 1,0,3,2,1,8,5,0,0,1,1,2,1,0 1,1,0,3,0,5,2,0,1,1,1,1,1,0 0,0,12,1,1,6,5,0,0,1,1,1,1,0 2,0,3,2,0,1,2,0,1,1,1,0,1,1 1,0,5,2,1,5,3,0,0,1,1,0,1,0 0,2,0,3,2,4,3,0,1,1,1,1,1,0 1,0,6,2,0,4,2,0,1,1,1,1,1,1 0,0,2,1,2,3,1,0,0,1,1,2,1,0 0,0,1,2,2,8,1,0,0,1,1,2,1,0 1,1,3,2,0,1,2,0,1,1,1,0,1,0 1,0,0,3,0,3,0,0,0,1,1,2,1,1 2,4,3,2,0,4,2,0,1,1,1,0,1,0 0,0,12,1,2,3,1,0,1,1,1,2,1,0 0,0,0,3,0,5,0,0,0,1,1,1,1,1 0,0,1,2,0,3,0,0,0,1,1,0,1,0 1,4,0,3,3,5,3,0,1,1,1,0,1,0 1,0,3,2,3,1,1,4,0,1,1,0,1,0 0,0,3,2,0,4,2,0,1,1,1,1,1,0 0,0,12,1,2,7,4,1,1,1,1,0,1,0 0,0,6,2,2,1,3,0,1,1,1,0,1,0 0,0,8,0,2,1,3,0,1,1,1,1,1,0 1,0,3,2,0,1,2,4,1,1,1,0,1,0 2,1,12,1,0,1,2,0,1,1,1,2,1,0 0,0,6,2,1,3,3,2,0,1,1,0,1,0 0,0,3,2,2,8,1,0,1,1,1,0,1,0 2,0,3,2,1,0,3,0,1,1,1,2,1,1 0,5,3,2,0,12,2,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,1,8,1,0,0,1,1,2,1,0 0,0,14,0,0,6,2,0,1,1,1,0,1,0 0,0,6,2,0,1,2,0,1,1,1,1,1,0 1,0,0,3,0,3,2,0,1,1,1,2,1,1 0,3,3,2,1,8,5,4,0,1,1,2,1,0 0,5,1,2,2,0,1,0,0,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,0 0,0,5,2,0,3,2,4,1,1,1,1,1,1 1,3,4,3,1,5,5,0,1,1,1,0,1,1 1,0,6,2,2,5,3,0,0,1,1,1,1,0 0,0,3,2,0,1,2,0,1,1,1,1,1,0 1,0,0,3,1,5,5,0,0,1,1,1,1,0 0,0,0,3,2,3,3,0,1,1,1,1,1,0 2,0,3,2,0,7,2,0,1,1,1,0,1,0 1,0,2,1,2,7,3,0,0,1,1,2,1,0 1,0,14,0,1,11,5,0,0,1,1,2,1,0 1,0,3,2,0,3,2,0,1,1,1,0,1,0 1,0,5,2,2,2,4,0,1,1,1,2,1,0 0,0,1,2,2,1,3,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,1,2,0,3,2,0,1,1,1,1,1,1 2,1,1,2,1,1,5,0,1,1,1,0,1,0 1,0,1,2,0,7,2,0,1,1,1,1,1,0 1,0,13,3,0,5,2,0,1,1,1,1,1,1 1,1,3,2,2,1,1,0,1,1,1,2,1,0 0,0,5,2,2,10,3,0,1,1,1,1,1,0 0,1,3,2,0,10,2,0,1,1,1,1,1,0 1,0,0,3,0,4,2,1,1,1,1,0,1,1 1,1,1,2,0,4,2,0,1,1,1,1,1,0 1,4,6,2,0,10,2,0,1,1,1,0,1,1 3,0,3,2,1,2,3,0,0,1,1,2,1,0 2,1,3,2,0,2,2,0,1,1,1,2,1,0 0,0,3,2,0,5,2,0,1,1,1,1,1,0 2,1,6,2,0,1,2,0,1,1,1,1,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,0 2,0,1,2,0,3,2,0,1,1,1,0,1,0 2,1,1,2,0,9,2,0,1,1,1,1,1,0 0,0,0,3,2,3,4,0,0,1,1,1,1,0 2,0,3,2,0,4,0,0,0,1,1,0,1,0 1,0,10,3,1,4,3,0,1,1,1,1,1,1 1,0,3,2,1,8,3,0,0,1,1,0,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 1,0,1,2,0,8,2,0,1,1,1,0,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 2,1,12,1,0,1,2,0,1,1,1,0,1,0 1,4,1,2,0,2,2,0,1,1,1,2,1,0 1,0,3,2,0,4,2,0,1,1,1,1,1,1 0,0,3,2,1,3,3,0,0,1,1,1,1,0 1,0,10,3,1,5,5,0,0,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,5,2,0,6,2,0,1,1,1,0,1,0 3,3,2,1,1,8,3,0,0,1,1,2,1,0 0,0,3,2,0,3,2,0,1,1,1,0,1,0 1,0,3,2,0,2,2,1,1,1,1,2,1,0 1,0,1,2,0,5,2,0,1,1,1,0,1,1 2,1,0,3,0,5,2,0,1,1,1,2,1,1 0,0,2,1,2,11,3,0,0,1,1,2,1,0 1,0,6,2,1,8,5,0,0,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,1,1,1 2,0,3,2,0,1,2,0,1,1,1,2,1,1 1,3,3,2,1,8,3,0,0,1,1,0,1,0 1,0,3,2,0,8,0,0,0,1,1,1,1,1 0,0,5,2,2,1,1,4,0,1,1,0,1,0 2,2,10,3,0,4,2,0,1,1,1,1,1,0 0,0,3,2,0,2,2,0,1,1,1,0,1,0 1,0,1,2,1,8,3,0,0,1,1,1,1,0 1,1,0,3,0,4,2,0,1,1,1,2,1,0 1,4,1,2,0,10,2,0,1,1,1,0,1,1 0,0,0,3,2,3,1,0,0,1,1,2,1,0 1,0,2,1,1,2,5,0,0,1,1,2,1,0 0,0,3,2,0,10,2,0,1,1,1,0,1,0 1,1,3,2,1,1,3,0,1,1,1,1,1,0 3,2,3,2,0,3,2,0,1,1,1,2,1,0 1,0,8,0,1,1,3,0,1,1,1,1,1,0 0,0,1,2,0,4,2,0,1,1,1,1,1,0 2,0,1,2,0,3,2,0,1,1,1,2,1,1 0,0,3,2,2,3,1,0,1,1,1,1,1,0 2,4,12,1,0,10,2,0,1,1,1,2,1,0 0,0,3,2,2,1,1,0,1,1,1,0,1,0 0,0,1,2,4,8,5,0,0,1,1,2,1,0 0,0,1,2,2,8,1,0,0,1,1,2,1,0 2,2,1,2,0,4,2,0,1,1,1,2,1,1 2,0,6,2,0,0,2,0,1,1,1,0,1,1 0,0,3,2,2,2,3,1,1,1,1,0,1,0 1,5,13,3,0,5,2,0,1,1,1,1,1,1 0,0,8,0,1,6,1,0,1,1,1,0,1,0 1,0,3,2,3,2,3,0,0,1,1,2,1,0 2,2,1,2,0,4,2,0,1,1,1,0,1,0 3,1,0,3,4,5,3,0,0,1,1,2,1,0 0,1,3,2,0,4,2,0,1,1,1,1,1,0 0,0,3,2,0,10,2,0,1,1,1,1,1,0 1,1,10,3,2,4,3,0,1,1,1,2,1,0 0,5,1,2,2,2,1,2,1,1,1,1,1,0 0,0,1,2,0,2,2,0,1,1,1,0,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,0 0,0,8,0,2,6,4,0,1,1,1,2,1,0 1,3,3,2,2,8,1,4,0,1,1,2,1,0 0,0,1,2,2,6,1,4,1,1,1,2,1,0 0,0,3,2,0,7,2,0,1,1,1,2,1,0 0,4,10,3,2,5,3,0,0,1,1,0,1,0 0,5,0,3,0,4,2,0,1,1,1,0,1,1 1,0,1,2,0,6,2,0,1,1,1,0,1,0 0,0,1,2,0,10,2,0,1,1,1,1,1,0 1,2,3,2,0,4,2,0,1,1,1,0,1,1 1,0,6,2,1,5,3,0,0,1,1,0,1,0 0,0,1,2,0,8,0,4,0,1,1,1,1,1 1,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,1,2,2,8,1,4,0,1,1,0,1,0 2,4,1,2,2,5,3,4,0,1,1,0,1,0 0,0,6,2,2,1,1,0,1,1,1,0,1,1 2,0,2,1,0,2,0,0,0,1,1,1,1,0 1,0,9,1,1,7,3,0,0,1,1,0,1,0 1,1,6,2,0,5,0,0,0,1,1,2,1,1 1,3,3,2,0,8,2,0,1,1,1,0,1,1 0,0,14,0,2,11,5,0,0,1,1,2,1,0 3,0,3,2,0,2,2,0,1,1,1,2,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 0,0,3,2,5,8,3,0,0,1,1,2,1,0 1,2,0,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,0,4,2,0,1,1,1,1,1,1 0,0,1,2,2,8,1,0,0,1,1,0,1,0 2,2,0,3,0,4,2,0,1,1,1,0,1,1 1,0,3,2,2,1,5,0,0,1,1,0,1,0 1,0,0,3,0,3,2,0,1,1,1,1,1,1 0,0,10,3,0,5,0,0,0,1,1,2,1,1 1,0,3,2,0,1,2,0,1,1,1,2,1,0 0,0,2,1,2,10,3,0,1,1,1,1,1,0 0,0,1,2,2,2,1,0,1,1,1,2,1,0 1,0,2,1,2,5,5,0,0,1,1,2,1,0 2,4,0,3,1,2,3,0,1,1,1,2,1,0 1,0,5,2,1,10,3,0,1,1,1,1,1,0 1,4,0,3,0,5,1,0,1,1,1,0,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,1 1,0,3,2,0,4,2,0,1,1,1,1,1,0 1,4,1,2,0,10,2,4,1,1,1,0,1,0 0,3,6,2,0,0,2,0,1,1,1,1,1,1 0,0,3,2,2,9,3,0,1,1,1,0,1,0 1,1,1,2,2,1,1,0,1,1,1,0,1,0 0,0,3,2,2,1,3,0,1,1,1,1,1,0 1,4,0,3,1,12,3,4,1,1,1,1,1,1 1,0,10,3,0,1,2,0,1,1,1,1,1,1 0,0,3,2,2,2,1,0,0,1,1,2,1,0 1,0,3,2,0,8,0,0,0,1,1,0,1,1 1,0,3,2,2,1,3,2,1,1,1,0,1,0 0,0,1,2,2,5,1,0,0,1,1,2,1,0 0,0,5,2,2,6,1,0,1,1,1,2,1,0 3,0,3,2,4,2,3,0,1,1,1,2,1,0 0,0,3,2,0,0,4,0,1,1,1,0,1,0 0,0,4,3,2,5,3,0,1,1,1,0,1,1 0,0,1,2,0,0,2,0,1,1,1,0,1,0 0,0,3,2,1,2,5,0,0,1,1,0,1,0 0,0,3,2,2,1,1,0,1,1,1,2,1,0 0,0,0,3,2,4,3,0,1,1,1,1,1,0 0,0,3,2,0,3,2,0,1,1,1,1,1,0 1,0,10,3,1,4,3,0,1,1,1,1,1,1 1,0,0,3,0,4,2,0,1,1,1,0,1,0 1,0,2,1,0,10,2,0,1,1,1,0,1,0 2,2,3,2,0,4,2,0,1,1,1,1,1,1 1,0,5,2,0,8,2,0,1,1,1,1,1,1 0,1,3,2,2,2,3,0,0,1,1,2,1,0 1,4,1,2,0,12,2,0,1,1,1,1,1,1 2,5,10,3,0,4,0,0,0,1,1,0,1,1 0,0,6,2,2,2,1,0,0,1,1,0,1,0 0,0,1,2,2,9,1,0,1,1,1,0,1,0 1,0,0,3,0,5,2,0,1,1,1,0,1,1 1,0,3,2,1,3,1,0,1,1,1,2,1,0 1,0,0,3,1,8,5,0,0,1,1,2,1,1 1,0,1,2,2,3,5,4,0,1,1,0,1,0 0,0,1,2,0,8,2,0,1,1,1,1,1,1 0,0,3,2,2,3,1,0,0,1,1,0,1,0 0,0,1,2,2,2,1,0,1,1,1,0,1,0 1,2,10,3,0,3,2,0,1,1,1,0,1,1 1,4,1,2,0,12,2,0,1,1,1,1,1,1 1,2,0,3,0,4,2,0,1,1,1,1,1,1 0,0,9,1,2,8,1,0,0,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,1,2,2,9,3,0,1,1,1,2,1,0 0,0,0,3,2,4,5,4,0,1,1,0,1,0 2,1,0,3,0,4,2,0,1,1,1,2,1,1 0,0,0,3,2,8,3,0,1,1,1,0,1,0 0,0,1,2,2,8,1,4,0,1,1,0,1,0 0,0,3,2,2,6,1,0,1,1,1,2,1,0 1,0,3,2,2,2,3,0,1,1,1,0,1,0 0,0,1,2,0,1,2,0,1,1,1,0,1,1 1,1,0,3,2,3,3,0,1,1,1,1,1,0 0,5,1,2,2,6,1,0,1,1,1,0,1,0 1,0,1,2,0,3,2,0,1,1,1,1,1,0 1,1,3,2,1,9,3,0,1,1,1,2,1,0 1,0,3,2,4,7,5,0,0,1,1,2,1,0 1,0,6,2,2,3,5,4,0,1,1,2,1,0 1,0,3,2,0,3,2,0,1,1,1,1,1,0 0,0,6,2,0,10,2,0,1,1,1,0,1,0 1,4,3,2,0,8,0,0,0,1,1,0,1,1 0,0,0,3,2,8,3,0,1,1,1,2,1,0 1,4,3,2,1,9,3,0,1,1,1,0,1,0 0,2,5,2,2,3,1,0,1,1,1,0,1,0 1,3,3,2,1,8,5,0,0,1,1,2,1,0 1,2,4,3,0,5,2,1,1,1,1,0,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,1 2,2,3,2,0,4,2,0,1,1,1,0,1,0 1,4,3,2,0,10,2,0,1,1,1,0,1,1 2,3,3,2,2,8,5,0,0,1,1,2,1,0 2,0,3,2,4,3,5,0,0,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 1,0,0,3,2,2,4,0,0,1,1,1,1,0 0,0,0,3,2,3,3,0,1,1,1,1,1,0 0,0,2,1,0,6,2,0,1,1,1,1,1,0 1,5,2,1,1,10,5,0,0,1,1,1,1,0 0,0,3,2,0,8,0,0,0,1,1,0,1,0 0,0,3,2,2,1,3,0,1,1,1,0,1,0 1,0,1,2,2,8,1,4,0,1,1,2,1,0 0,0,3,2,0,3,0,0,0,1,1,0,1,1 0,0,10,3,2,4,3,3,1,1,1,2,1,0 0,0,3,2,2,1,3,0,1,1,1,0,1,0 0,0,1,2,1,6,5,0,0,1,1,0,1,0 0,5,0,3,0,8,2,0,1,1,1,1,1,0 0,0,1,2,2,8,5,4,0,1,1,0,1,0 1,0,0,3,0,0,2,0,1,1,1,0,1,0 2,0,3,2,0,7,2,0,1,1,1,0,1,0 1,0,1,2,3,2,3,0,0,1,1,1,1,0 2,0,3,2,4,2,4,0,0,1,1,2,1,0 2,0,3,2,0,2,0,0,0,1,1,2,1,0 0,0,0,3,2,4,3,0,0,1,1,0,1,0 2,0,1,2,1,3,3,0,0,1,1,1,1,0 1,0,1,2,0,4,2,0,1,1,1,1,1,0 0,0,1,2,0,10,2,0,1,1,1,0,1,1 2,0,1,2,3,2,3,0,1,1,1,2,1,0 1,0,3,2,0,2,2,1,1,1,1,2,1,0 0,0,9,1,2,2,1,0,1,1,1,2,1,0 1,3,3,2,0,8,2,0,1,1,1,0,1,1 1,1,1,2,0,0,2,0,1,1,1,1,1,1 2,3,3,2,0,5,2,0,1,1,1,2,1,0 0,0,3,2,2,2,3,0,0,1,1,0,1,0 0,0,3,2,0,0,0,4,0,1,1,2,1,0 0,0,3,2,1,4,5,0,0,1,1,0,1,0 0,4,3,2,0,12,2,0,1,1,1,0,1,1 2,0,0,3,2,8,3,0,0,1,1,0,1,1 0,0,11,0,2,6,3,0,1,1,1,2,1,0 0,0,1,2,2,0,1,0,1,1,1,0,1,0 0,0,1,2,2,1,3,0,1,1,1,0,1,0 2,0,14,0,3,2,3,0,1,1,1,2,1,0 2,3,12,1,1,2,3,0,0,1,1,2,1,0 0,1,3,2,0,1,2,0,1,1,1,1,1,0 0,0,0,3,2,8,1,0,1,1,1,0,1,0 0,0,3,2,2,1,5,0,1,1,1,0,1,0 0,0,1,2,1,4,5,0,1,1,1,1,1,0 0,5,12,1,2,2,1,0,1,1,1,2,1,0 0,0,1,2,2,6,3,0,1,1,1,1,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,1 2,0,14,0,1,7,5,0,0,1,1,0,1,0 1,0,3,2,2,8,1,0,0,1,1,2,1,0 3,1,3,2,4,2,3,0,1,1,1,2,1,0 0,0,1,2,2,10,3,0,1,1,1,1,1,0 1,0,0,3,2,8,3,0,1,1,1,0,1,0 0,0,1,2,2,2,1,4,1,1,1,0,1,0 3,0,4,3,0,5,2,0,1,1,1,2,1,1 1,0,3,2,0,7,2,4,1,1,1,0,1,0 0,0,12,1,2,3,1,0,1,1,1,2,1,0 1,3,0,3,0,5,2,0,1,1,1,0,1,0 2,0,3,2,2,2,3,0,1,1,1,0,1,0 2,0,1,2,0,1,2,0,1,1,1,0,1,0 1,0,1,2,1,7,3,0,1,1,1,0,1,0 0,3,1,2,2,1,5,2,1,1,1,0,1,0 1,0,0,3,2,8,3,0,0,1,1,2,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,0,3,0,0,0,1,1,0,1,0 0,0,3,2,2,8,5,0,0,1,1,2,1,0 1,0,4,3,0,5,2,0,1,1,1,1,1,1 0,0,3,2,2,3,1,0,1,1,1,0,1,0 1,0,4,3,2,5,3,0,0,1,1,1,1,1 1,0,3,2,4,8,3,4,0,1,1,0,1,0 0,5,1,2,2,0,3,0,1,1,1,2,1,0 1,0,3,2,2,8,4,0,1,1,1,0,1,0 0,0,9,1,1,2,3,0,0,1,1,0,1,0 1,0,3,2,0,12,2,0,1,1,1,0,1,0 1,0,3,2,2,2,1,0,1,1,1,0,1,0 1,0,5,2,0,5,2,0,1,1,1,0,1,1 1,1,3,2,0,1,2,0,1,1,1,2,1,0 0,0,0,3,2,5,1,0,1,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,3,2,2,1,3,0,1,1,1,1,1,0 0,0,3,2,1,2,1,0,1,1,1,0,1,0 0,0,3,2,0,6,2,4,1,1,1,0,1,0 0,0,1,2,2,3,1,0,1,1,1,1,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 0,4,3,2,2,8,1,4,0,1,1,0,1,0 1,0,3,2,6,1,0,4,0,1,1,1,1,1 0,0,3,2,0,1,2,0,1,1,1,1,1,0 0,0,0,3,2,1,1,0,1,1,1,2,1,0 1,0,12,1,0,10,2,0,1,1,1,1,1,0 1,4,0,3,0,4,2,0,1,1,1,0,1,1 0,0,0,3,0,4,2,0,1,1,1,1,1,1 2,1,5,2,0,2,2,0,1,1,1,0,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,1 1,0,7,1,0,7,2,0,1,1,1,1,1,0 0,0,0,3,0,4,2,1,1,1,1,1,1,1 0,0,0,3,0,5,2,0,1,1,1,1,1,1 1,0,3,2,0,1,2,0,1,1,1,0,1,0 2,1,3,2,0,3,2,0,1,1,1,2,1,0 1,0,1,2,0,3,2,0,1,1,1,1,1,1 1,0,1,2,2,8,3,0,1,1,1,0,1,0 1,1,3,2,0,10,2,0,1,1,1,1,1,1 2,0,12,1,0,10,2,0,1,1,1,0,1,0 0,0,1,2,2,8,3,0,1,1,1,1,1,0 0,0,3,2,2,2,4,0,1,1,1,2,1,0 2,0,3,2,3,1,5,0,1,1,1,0,1,0 3,4,5,2,0,8,2,1,1,1,1,2,1,0 0,0,1,2,1,8,3,0,0,1,1,2,1,0 1,0,3,2,1,8,5,0,0,1,1,2,1,0 0,0,5,2,0,5,2,0,1,1,1,1,1,0 0,0,3,2,2,4,3,0,0,1,1,0,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 1,0,2,1,0,10,2,0,1,1,1,0,1,0 2,0,3,2,1,4,3,0,0,1,1,0,1,0 0,5,1,2,0,5,0,4,0,1,1,0,1,0 2,0,0,3,0,3,2,0,1,1,1,0,1,1 2,4,13,3,1,5,3,0,0,1,1,0,1,0 1,0,1,2,1,2,3,0,0,1,1,0,1,0 0,0,3,2,1,12,3,4,1,1,1,1,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 1,2,3,2,0,4,2,0,1,1,1,0,1,0 0,3,5,2,2,2,1,0,1,1,1,2,1,0 1,1,3,2,0,10,2,0,1,1,1,0,1,0 0,0,3,2,0,7,2,0,1,1,1,1,1,0 0,0,9,1,2,6,1,2,1,1,1,2,1,0 1,4,0,3,1,5,5,0,0,1,1,2,1,0 1,4,10,3,2,5,3,0,1,1,1,2,1,1 0,0,10,3,2,8,3,0,0,1,1,1,1,0 1,0,3,2,0,10,0,0,0,1,1,0,1,0 0,0,3,2,2,1,1,0,1,1,1,0,1,0 1,2,1,2,0,1,2,0,1,1,1,1,1,1 0,0,3,2,2,6,3,0,1,1,1,0,1,0 0,0,8,0,0,1,2,0,1,1,1,0,1,0 0,0,1,2,0,8,2,0,1,1,1,1,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,3,2,4,8,5,0,0,1,1,2,1,0 2,0,8,0,0,2,2,0,1,1,1,2,1,0 1,0,2,1,0,7,2,4,1,1,1,0,1,0 2,5,13,3,0,5,2,0,1,1,1,1,1,1 0,0,7,1,2,2,1,0,0,1,1,2,1,0 0,0,3,2,2,0,1,1,1,1,1,2,1,1 0,0,1,2,2,7,1,0,1,1,1,0,1,0 2,0,0,3,0,5,2,0,1,1,1,1,1,1 2,0,3,2,0,1,2,0,1,1,1,0,1,0 2,0,1,2,1,7,3,0,0,1,1,0,1,0 0,0,3,2,2,6,3,0,1,1,1,0,1,0 0,0,3,2,1,3,5,0,1,1,1,2,1,0 1,0,6,2,1,4,3,0,1,1,1,1,1,1 2,2,3,2,0,3,2,0,1,1,1,1,1,1 0,0,3,2,0,3,2,0,1,1,1,0,1,0 1,0,0,3,1,12,3,0,1,1,1,0,1,0 2,0,0,3,0,0,2,0,1,1,1,0,1,1 1,3,0,3,2,8,3,0,1,1,1,0,1,0 2,0,10,3,1,5,3,0,0,1,1,1,1,0 2,0,0,3,0,0,2,0,1,1,1,2,1,1 0,1,6,2,2,2,4,0,0,1,1,0,1,0 0,0,12,1,2,1,1,0,1,1,1,2,1,0 0,0,3,2,0,3,2,1,1,1,1,0,1,0 0,4,0,3,2,5,3,0,0,1,1,2,1,0 0,5,0,3,2,5,3,0,1,1,1,1,1,0 1,0,3,2,0,2,2,0,1,1,1,0,1,0 0,0,1,2,2,3,1,0,0,1,1,0,1,0 1,2,1,2,0,4,2,0,1,1,1,1,1,1 1,0,1,2,0,2,0,0,0,1,1,0,1,0 2,1,8,0,1,3,4,0,1,1,1,2,1,0 1,0,3,2,1,7,3,4,0,1,1,0,1,0 0,0,0,3,2,5,1,0,0,1,1,2,1,0 1,0,3,2,0,8,2,0,1,1,1,1,1,0 1,0,0,3,1,5,3,0,0,1,1,0,1,1 0,0,2,1,2,3,1,0,0,1,1,2,1,0 2,1,8,0,0,1,2,0,1,1,1,0,1,1 1,0,10,3,0,4,2,0,1,1,1,1,1,1 2,4,3,2,4,2,3,0,0,1,1,0,1,0 0,0,1,2,2,8,1,0,1,1,1,2,1,0 1,0,1,2,0,10,2,0,1,1,1,1,1,0 1,0,1,2,0,4,2,0,1,1,1,0,1,0 1,0,0,3,0,1,2,0,1,1,1,1,1,0 1,2,6,2,0,9,2,0,1,1,1,1,1,1 1,4,1,2,0,1,2,4,1,1,1,0,1,1 3,2,4,3,0,5,2,0,1,1,1,1,1,1 1,0,3,2,0,7,2,0,1,1,1,2,1,0 1,3,1,2,0,6,2,0,1,1,1,0,1,1 1,1,3,2,1,1,3,0,1,1,1,1,1,0 0,0,3,2,3,10,3,1,1,1,1,0,1,0 1,0,3,2,2,8,1,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,2,6,1,0,1,1,1,2,1,0 2,4,0,3,2,5,3,0,1,1,1,1,1,0 1,2,0,3,0,5,0,0,0,1,1,0,1,0 1,0,3,2,1,7,3,0,1,1,1,0,1,0 2,0,13,3,0,3,2,0,1,1,1,0,1,0 2,0,14,0,0,8,2,0,1,1,1,0,1,0 0,0,0,3,2,5,1,4,0,1,1,2,1,0 1,0,6,2,0,7,2,0,1,1,1,0,1,1 0,0,1,2,3,1,3,0,1,1,1,0,1,0 0,1,6,2,2,2,3,0,0,1,1,2,1,0 1,0,9,1,4,6,5,0,0,1,1,1,1,0 1,2,4,3,0,5,2,0,1,1,1,1,1,1 0,0,5,2,2,2,1,0,0,1,1,2,1,0 0,0,3,2,2,4,4,0,0,1,1,1,1,0 0,0,6,2,1,5,5,0,0,1,1,0,1,0 0,0,1,2,0,4,2,0,1,1,1,1,1,1 1,0,7,1,0,7,2,0,1,1,1,0,1,0 1,0,2,1,0,1,2,0,1,1,1,0,1,1 2,0,0,3,0,4,2,0,1,1,1,0,1,1 0,0,3,2,0,6,2,0,1,1,1,0,1,0 0,0,1,2,2,2,3,0,0,1,1,2,1,0 0,1,3,2,1,4,3,0,1,1,1,1,1,1 0,0,1,2,2,2,3,0,1,1,1,0,1,0 0,0,2,1,2,8,3,0,1,1,1,0,1,0 1,2,0,3,0,4,2,0,1,1,1,1,1,0 1,5,10,3,0,5,0,1,0,1,1,2,1,1 0,0,0,3,2,4,1,0,0,1,1,2,1,0 0,2,3,2,0,4,2,0,1,1,1,1,1,0 0,1,8,0,0,5,2,0,1,1,1,1,1,0 1,3,10,3,0,5,2,0,1,1,1,0,1,1 1,0,3,2,2,1,5,4,0,1,1,0,1,0 0,0,2,1,0,7,2,0,1,1,1,1,1,1 1,0,7,1,0,4,2,0,1,1,1,0,1,0 1,2,0,3,0,4,2,0,1,1,1,1,1,1 0,0,1,2,0,4,2,0,1,1,1,1,1,0 0,2,12,1,2,2,1,4,1,1,1,2,1,0 2,1,4,3,0,5,2,0,1,1,1,1,1,1 1,0,3,2,1,8,5,0,0,1,1,0,1,0 2,4,12,1,0,1,2,0,1,1,1,1,1,0 1,1,3,2,0,10,2,0,1,1,1,2,1,1 2,3,12,1,1,1,5,0,1,1,1,0,1,0 0,0,0,3,2,5,1,1,0,1,1,1,1,0 1,0,3,2,4,2,5,4,0,1,1,0,1,0 2,0,1,2,2,8,3,4,0,1,1,2,1,0 1,3,3,2,4,4,3,0,0,1,1,1,1,0 1,0,10,3,0,5,2,0,1,1,1,1,1,1 2,4,3,2,0,2,2,0,1,1,1,0,1,0 1,0,1,2,0,8,2,0,1,1,1,1,1,0 1,0,0,3,0,1,2,0,1,1,1,0,1,0 1,0,7,1,3,6,1,0,1,1,1,2,1,0 1,0,1,2,0,7,2,1,1,1,1,1,1,1 2,2,0,3,0,1,2,0,1,1,1,1,1,0 0,0,3,2,1,8,1,0,0,1,1,0,1,0 1,0,4,3,2,4,3,0,1,1,1,1,1,1 0,0,1,2,0,4,0,0,0,1,1,2,1,0 0,0,12,1,2,3,3,0,0,1,1,2,1,0 0,0,10,3,2,8,1,0,1,1,1,0,1,0 0,0,1,2,0,8,0,0,0,1,1,2,1,0 1,0,5,2,1,8,5,0,0,1,1,2,1,0 1,0,6,2,0,9,2,0,1,1,1,1,1,0 1,0,3,2,0,6,2,0,1,1,1,0,1,0 0,0,7,1,2,6,5,4,1,1,1,0,1,0 0,0,3,2,5,1,5,0,1,1,1,1,1,0 0,0,1,2,0,8,2,0,1,1,1,0,1,0 0,0,6,2,2,2,3,0,1,1,1,2,1,0 0,0,0,3,0,3,2,0,1,1,1,1,1,1 1,0,14,0,0,10,2,0,1,1,1,0,1,0 0,0,1,2,2,8,1,0,0,1,1,2,1,0 1,0,1,2,1,3,5,0,0,1,1,1,1,0 0,0,0,3,2,0,3,1,0,1,1,0,1,0 0,0,2,1,2,6,3,0,1,1,1,2,1,0 1,0,10,3,0,5,2,0,1,1,1,0,1,1 1,0,1,2,4,3,3,0,0,1,1,2,1,0 1,3,3,2,1,1,3,0,1,1,1,0,1,0 0,0,6,2,2,1,1,0,1,1,1,2,1,0 0,0,3,2,2,10,3,0,1,1,1,0,1,0 1,0,0,3,0,2,2,0,1,1,1,1,1,0 1,0,0,3,0,4,2,4,1,1,1,0,1,1 3,0,11,0,0,2,4,4,0,1,1,2,1,0 1,1,0,3,1,5,3,0,1,1,1,1,1,1 2,0,0,3,1,4,3,0,0,1,1,1,1,0 1,0,3,2,1,3,3,0,0,1,1,0,1,0 1,0,1,2,0,0,2,0,1,1,1,0,1,0 0,0,1,2,2,5,3,4,1,1,1,2,1,0 3,1,3,2,2,2,3,0,0,1,1,2,1,0 1,0,3,2,1,8,3,0,0,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 0,0,3,2,2,8,1,4,1,1,1,2,1,0 1,3,1,2,1,6,3,1,1,1,1,0,1,0 1,0,3,2,3,3,5,4,0,1,1,2,1,0 1,0,0,3,0,5,2,0,1,1,1,0,1,1 2,2,0,3,1,3,3,0,1,1,1,1,1,0 1,0,1,2,0,5,2,0,1,1,1,2,1,1 1,4,10,3,1,4,5,0,0,1,1,1,1,1 1,4,0,3,2,5,3,0,0,1,1,1,1,0 0,0,1,2,2,8,4,0,0,1,1,0,1,0 0,0,1,2,0,3,2,0,1,1,1,1,1,0 0,3,0,3,2,12,3,0,0,1,1,1,1,1 1,0,0,3,5,8,3,0,0,1,1,0,1,0 0,0,3,2,0,10,2,0,1,1,1,1,1,1 0,0,3,2,2,2,5,0,0,1,1,2,1,0 0,0,12,1,0,1,2,0,1,1,1,0,1,0 2,0,3,2,0,7,2,0,1,1,1,0,1,1 0,0,0,3,2,9,3,0,1,1,1,1,1,0 0,0,3,2,0,1,2,0,1,1,1,2,1,0 1,0,1,2,0,3,2,0,1,1,1,1,1,0 2,0,10,3,0,5,0,0,0,1,1,0,1,1 0,2,3,2,0,3,2,0,1,1,1,1,1,0 0,0,1,2,2,1,3,0,1,1,1,0,1,0 0,0,1,2,2,3,1,4,0,1,1,2,1,0 1,0,4,3,0,5,2,0,1,1,1,2,1,1 1,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,2,3,3,0,1,1,1,0,1,0 1,2,1,2,0,3,2,0,1,1,1,1,1,1 0,0,1,2,2,2,1,0,1,1,1,2,1,0 0,0,3,2,2,2,1,0,1,1,1,0,1,0 0,0,3,2,2,7,1,1,1,1,1,0,1,0 0,3,3,2,2,10,1,0,1,1,1,0,1,0 0,1,1,2,0,1,2,0,1,1,1,1,1,0 0,0,5,2,2,8,1,0,0,1,1,2,1,0 2,4,3,2,2,8,3,0,0,1,1,2,1,0 1,2,10,3,2,5,3,0,0,1,1,0,1,0 0,0,0,3,2,5,3,0,0,1,1,0,1,0 3,2,3,2,0,8,2,0,1,1,1,2,1,0 0,1,3,2,2,7,4,4,1,1,1,2,1,0 1,0,0,3,1,3,3,0,0,1,1,1,1,0 2,1,0,3,0,1,2,0,1,1,1,1,1,1 1,0,3,2,0,7,2,0,1,1,1,0,1,0 2,4,0,3,2,5,3,0,0,1,1,2,1,0 0,3,5,2,0,4,0,0,0,1,1,0,1,0 0,0,3,2,2,2,4,0,0,1,1,2,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,6,2,0,5,2,0,1,1,1,1,1,1 1,0,3,2,0,4,2,0,1,1,1,1,1,0 0,0,3,2,2,10,3,0,1,1,1,1,1,0 0,0,3,2,2,11,5,3,0,1,1,0,1,0 1,4,10,3,2,4,3,0,0,1,1,1,1,1 1,4,1,2,2,1,3,0,1,1,1,0,1,0 1,1,0,3,0,5,2,0,1,1,1,1,1,1 1,2,3,2,0,9,2,0,1,1,1,1,1,0 2,1,0,3,2,4,3,0,0,1,1,1,1,0 1,3,3,2,0,8,0,0,0,1,1,0,1,1 1,1,3,2,1,4,3,1,0,1,1,1,1,1 0,0,3,2,0,1,2,0,1,1,1,2,1,0 1,0,0,3,0,6,1,0,1,1,1,0,1,1 0,0,2,1,2,7,1,4,1,1,1,1,1,0 1,0,3,2,1,2,3,0,1,1,1,0,1,0 1,0,0,3,0,0,2,0,1,1,1,1,1,1 1,4,3,2,2,2,3,0,1,1,1,0,1,0 0,0,6,2,2,1,1,0,1,1,1,0,1,0 0,0,0,3,2,5,3,0,0,1,1,0,1,0 0,0,1,2,2,8,1,0,1,1,1,2,1,0 2,0,3,2,0,5,2,0,1,1,1,0,1,1 0,0,3,2,0,10,2,0,1,1,1,0,1,0 0,0,3,2,2,7,1,4,1,1,1,0,1,0 2,0,10,3,0,4,2,0,1,1,1,1,1,1 0,0,12,1,2,6,1,0,0,1,1,2,1,0 0,0,0,3,2,5,3,0,1,1,1,2,1,0 0,0,6,2,0,7,2,0,1,1,1,0,1,0 1,5,13,3,0,4,2,0,1,1,1,0,1,1 2,0,3,2,0,3,2,0,1,1,1,2,1,0 1,0,3,2,2,1,3,0,1,1,1,0,1,0 0,0,3,2,2,2,3,0,1,1,1,0,1,0 0,0,3,2,0,7,2,4,1,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,2,1,0 2,0,12,1,0,10,2,0,1,1,1,2,1,0 1,5,3,2,1,12,3,0,1,1,1,0,1,1 0,0,0,3,2,0,3,0,0,1,1,2,1,0 1,0,9,1,1,10,5,0,1,1,1,1,1,0 0,0,3,2,0,1,2,0,1,1,1,1,1,0 0,0,1,2,2,1,1,0,1,1,1,0,1,0 0,0,6,2,0,7,2,0,1,1,1,0,1,1 0,0,3,2,0,2,2,0,1,1,1,2,1,0 1,2,3,2,0,4,2,0,1,1,1,1,1,0 0,0,0,3,2,8,3,0,1,1,1,0,1,0 1,0,6,2,0,1,2,0,1,1,1,0,1,0 1,1,3,2,2,1,3,0,1,1,1,0,1,1 0,0,2,1,0,10,2,0,1,1,1,1,1,0 0,0,7,1,2,3,3,0,1,1,1,1,1,1 0,0,1,2,0,8,0,2,0,1,1,1,1,0 0,5,1,2,0,12,2,0,1,1,1,0,1,0 0,0,3,2,2,0,3,0,1,1,1,0,1,0 0,0,0,3,0,0,2,0,1,1,1,0,1,0 1,4,3,2,0,1,2,0,1,1,1,0,1,1 1,2,10,3,0,1,2,0,1,1,1,1,1,0 0,0,3,2,2,2,5,4,0,1,1,2,1,0 0,0,1,2,1,4,5,0,0,1,1,2,1,0 0,0,3,2,2,8,3,0,0,1,1,0,1,0 0,1,1,2,2,10,1,0,1,1,1,2,1,0 1,2,5,2,0,1,2,0,1,1,1,0,1,1 0,0,1,2,2,2,1,0,1,1,1,2,1,0 1,0,2,1,0,10,2,0,1,1,1,1,1,0 0,0,1,2,3,4,5,4,0,1,1,0,1,0 0,0,1,2,2,8,1,0,1,1,1,2,1,0 0,0,1,2,2,3,1,0,1,1,1,2,1,0 0,0,0,3,2,4,1,0,1,1,1,0,1,0 0,0,0,3,2,3,1,0,0,1,1,0,1,0 0,0,1,2,2,5,5,0,0,1,1,2,1,0 0,0,3,2,0,2,0,0,0,1,1,0,1,0 0,0,7,1,2,7,5,0,1,1,1,0,1,0 1,4,0,3,0,12,2,0,1,1,1,0,1,1 0,0,3,2,0,8,0,0,0,1,1,0,1,0 0,0,0,3,2,3,1,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,0 1,0,0,3,2,8,3,0,0,1,1,2,1,0 1,4,10,3,1,5,1,0,0,1,1,1,1,0 1,4,1,2,0,0,2,0,1,1,1,0,1,1 1,0,3,2,0,1,2,0,1,1,1,1,1,1 0,1,3,2,2,9,3,0,1,1,1,0,1,0 1,4,5,2,2,8,3,4,1,1,1,0,1,0 0,0,6,2,0,5,0,0,0,1,1,0,1,1 0,0,2,1,2,3,1,4,0,1,1,2,1,0 1,5,0,3,0,4,2,0,1,1,1,0,1,1 0,4,3,2,0,12,2,0,1,1,1,1,1,0 1,5,13,3,0,5,2,0,1,1,1,1,1,0 0,0,3,2,2,3,3,0,1,1,1,1,1,0 2,3,1,2,0,8,0,0,0,1,1,2,1,0 0,0,3,2,0,10,2,0,1,1,1,0,1,0 2,0,3,2,3,7,4,0,0,1,1,0,1,0 1,0,0,3,3,1,3,0,1,1,1,0,1,0 0,0,3,2,1,3,5,0,0,1,1,0,1,0 0,4,14,0,2,2,5,3,0,1,1,0,1,0 0,0,3,2,0,8,0,0,0,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,1 0,0,0,3,2,8,4,1,0,1,1,0,1,0 0,0,6,2,2,0,3,0,1,1,1,0,1,0 1,0,1,2,1,8,5,0,0,1,1,0,1,0 2,3,1,2,0,8,2,0,1,1,1,0,1,1 0,0,3,2,2,5,1,0,0,1,1,2,1,0 0,0,6,2,1,0,5,0,0,1,1,0,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,1 0,3,1,2,1,8,3,0,0,1,1,1,1,0 1,0,12,1,2,1,3,0,1,1,1,0,1,0 0,0,3,2,2,4,5,0,1,1,1,0,1,0 2,0,7,1,0,1,2,0,1,1,1,0,1,0 2,0,3,2,1,1,5,0,1,1,1,2,1,0 0,0,3,2,2,3,5,0,0,1,1,2,1,0 0,0,14,0,2,11,3,0,0,1,1,1,1,0 1,5,1,2,1,10,3,0,1,1,1,1,1,0 0,0,3,2,2,3,5,4,0,1,1,2,1,0 1,0,1,2,4,3,3,0,0,1,1,0,1,0 2,1,3,2,0,9,2,0,1,1,1,1,1,0 0,0,1,2,2,8,3,1,1,1,1,2,1,0 0,1,3,2,0,7,2,0,1,1,1,0,1,0 0,0,3,2,2,10,3,4,1,1,1,1,1,0 1,0,3,2,2,2,5,4,0,1,1,2,1,0 1,1,3,2,0,9,2,0,1,1,1,1,1,1 1,0,2,1,0,10,2,0,1,1,1,0,1,0 1,1,0,3,0,4,0,0,0,1,1,0,1,1 0,2,12,1,2,1,1,0,1,1,1,0,1,0 0,0,2,1,5,6,3,0,0,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 1,1,3,2,0,1,2,0,1,1,1,0,1,0 2,0,1,2,3,3,3,0,1,1,1,1,1,1 1,0,10,3,2,5,3,0,1,1,1,0,1,0 0,0,7,1,2,7,1,0,1,1,1,0,1,0 0,0,10,3,2,4,1,0,0,1,1,0,1,0 1,0,6,2,2,9,3,0,1,1,1,1,1,0 1,0,0,3,0,3,2,0,1,1,1,0,1,1 0,0,3,2,2,8,4,0,0,1,1,2,1,0 0,4,3,2,2,2,1,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 1,0,5,2,0,3,2,0,1,1,1,1,1,0 2,0,2,1,4,3,4,0,0,1,1,2,1,0 2,2,0,3,0,5,2,0,1,1,1,1,1,1 1,0,3,2,2,2,5,4,0,1,1,2,1,0 1,0,8,0,0,2,2,1,1,1,1,0,1,0 0,0,12,1,0,6,2,0,1,1,1,0,1,0 0,4,1,2,0,12,2,0,1,1,1,0,1,1 0,2,1,2,0,3,2,0,1,1,1,0,1,0 0,1,3,2,0,9,2,0,1,1,1,1,1,0 0,4,1,2,0,12,2,0,1,1,1,0,1,1 2,0,3,2,4,2,3,0,0,1,1,2,1,0 1,3,1,2,0,8,2,0,1,1,1,0,1,0 1,0,3,2,1,1,5,0,1,1,1,0,1,0 0,0,7,1,2,1,1,0,0,1,1,2,1,0 1,4,14,0,0,6,4,0,1,1,1,0,1,0 1,4,10,3,0,5,2,0,1,1,1,0,1,1 1,1,3,2,2,3,4,0,0,1,1,2,1,0 1,0,12,1,0,7,2,0,1,1,1,1,1,0 1,1,1,2,0,4,2,0,1,1,1,1,1,1 0,0,0,3,2,4,3,0,0,1,1,2,1,0 2,0,10,3,2,3,3,0,1,1,1,1,1,0 1,1,2,1,1,5,5,4,0,1,1,2,1,0 2,0,0,3,1,3,3,0,1,1,1,1,1,1 0,1,2,1,0,1,1,0,1,1,1,1,1,0 0,0,7,1,2,1,3,3,1,1,1,1,1,0 0,0,1,2,2,3,3,1,1,1,1,2,1,0 1,1,13,3,2,5,5,0,0,1,1,1,1,1 2,2,0,3,0,4,2,0,1,1,1,1,1,0 0,0,3,2,0,4,2,0,1,1,1,1,1,1 1,0,3,2,2,9,3,0,1,1,1,2,1,0 1,0,5,2,0,3,2,0,1,1,1,2,1,0 2,0,4,3,5,5,5,0,1,1,1,1,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,0 1,0,1,2,1,8,3,0,0,1,1,1,1,0 2,5,3,2,4,8,3,0,0,1,1,2,1,0 1,0,0,3,1,5,5,0,0,1,1,1,1,0 0,0,3,2,1,8,3,0,1,1,1,0,1,0 2,1,0,3,0,5,2,0,1,1,1,1,1,1 0,0,0,3,2,3,3,1,1,1,1,2,1,0 2,2,4,3,0,5,2,0,1,1,1,1,1,1 0,0,1,2,1,4,4,0,1,1,1,1,1,0 0,4,0,3,2,4,3,0,0,1,1,2,1,0 2,0,10,3,0,4,2,0,1,1,1,1,1,1 2,0,12,1,4,10,3,0,0,1,1,2,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 2,2,4,3,2,5,3,0,1,1,1,0,1,1 0,0,1,2,2,2,1,0,1,1,1,2,1,0 1,4,0,3,0,4,2,4,1,1,1,0,1,1 0,0,1,2,0,2,0,0,0,1,1,2,1,0 0,5,10,3,0,5,2,0,1,1,1,2,1,0 1,1,0,3,0,9,2,0,1,1,1,1,1,0 1,0,3,2,2,2,1,0,0,1,1,0,1,0 1,0,1,2,0,5,0,3,0,1,1,2,1,0 0,0,0,3,2,4,1,0,0,1,1,1,1,0 1,0,3,2,0,3,2,0,1,1,1,0,1,1 1,0,3,2,2,10,1,0,1,1,1,0,1,0 1,1,1,2,0,3,2,0,1,1,1,1,1,1 1,0,0,3,0,0,2,0,1,1,1,1,1,1 1,0,3,2,1,8,5,0,0,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,1 1,0,3,2,0,2,0,1,0,1,1,1,1,0 0,0,0,3,2,4,3,0,1,1,1,1,1,1 1,1,0,3,5,4,3,0,1,1,1,1,1,0 3,0,1,2,4,8,3,0,0,1,1,2,1,0 2,0,2,1,0,10,2,0,1,1,1,0,1,0 2,0,1,2,0,1,2,0,1,1,1,1,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 0,0,3,2,2,1,5,0,1,1,1,0,1,0 1,3,1,2,0,1,2,0,1,1,1,0,1,1 0,0,0,3,2,4,1,0,0,1,1,1,1,0 2,5,3,2,0,1,2,4,1,1,1,0,1,0 1,0,2,1,0,2,0,0,0,1,1,2,1,0 1,3,3,2,2,13,3,0,1,1,1,1,1,0 0,0,0,3,2,8,1,0,0,1,1,2,1,0 2,3,0,3,4,8,3,0,0,1,1,0,1,0 0,0,3,2,2,3,1,0,0,1,1,2,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,3,2,1,8,3,0,0,1,1,0,1,0 2,1,5,2,0,9,0,0,0,1,1,0,1,0 0,0,1,2,2,2,3,0,0,1,1,2,1,0 0,0,1,2,0,10,2,0,1,1,1,0,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 1,0,0,3,2,5,1,0,1,1,1,0,1,1 0,0,3,2,5,9,1,0,0,1,1,0,1,0 1,4,1,2,0,12,2,0,1,1,1,0,1,1 1,0,5,2,0,6,2,0,1,1,1,1,1,0 0,5,1,2,0,1,2,0,1,1,1,2,1,1 2,0,1,2,0,1,2,0,1,1,1,0,1,1 0,0,0,3,2,4,3,0,1,1,1,2,1,0 0,0,6,2,2,2,1,4,0,1,1,2,1,0 0,4,6,2,2,8,1,0,0,1,1,2,1,0 0,0,3,2,0,3,0,0,0,1,1,0,1,0 1,0,1,2,1,4,5,0,0,1,1,0,1,0 0,5,10,3,2,5,3,0,1,1,1,0,1,0 1,4,3,2,3,10,1,0,1,1,1,0,1,0 0,4,0,3,2,5,3,0,1,1,1,1,1,0 1,0,5,2,0,3,2,0,1,1,1,2,1,0 0,0,0,3,2,4,3,0,1,1,1,0,1,0 0,5,5,2,2,5,3,4,1,1,1,0,1,1 0,0,3,2,0,2,1,0,1,1,1,1,1,0 2,0,8,0,0,12,2,0,1,1,1,1,1,0 0,3,3,2,1,4,3,3,0,1,1,0,1,0 1,0,1,2,0,4,0,0,0,1,1,1,1,1 0,0,0,3,0,8,0,0,0,1,1,2,1,0 0,0,6,2,2,7,5,0,0,1,1,0,1,0 2,5,1,2,0,7,2,4,1,1,1,0,1,1 0,0,3,2,2,6,3,0,0,1,1,2,1,0 1,1,10,3,0,4,2,0,1,1,1,1,1,1 1,4,3,2,1,0,3,4,0,1,1,0,1,0 1,1,0,3,0,3,0,0,0,1,1,1,1,1 0,0,5,2,2,3,1,0,0,1,1,2,1,0 0,0,3,2,2,6,1,0,1,1,1,0,1,0 0,0,3,2,0,8,0,0,0,1,1,0,1,1 1,0,10,3,0,4,2,0,1,1,1,1,1,1 0,0,1,2,1,0,3,0,0,1,1,0,1,0 1,1,0,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,2,1,3,0,1,1,1,0,1,0 1,0,3,2,1,6,5,0,1,1,1,0,1,0 1,4,10,3,0,5,2,0,1,1,1,1,1,1 2,0,2,1,0,4,2,0,1,1,1,1,1,0 0,1,1,2,2,1,1,0,1,1,1,2,1,0 2,0,1,2,4,1,5,0,0,1,1,1,1,0 1,0,0,3,0,8,2,0,1,1,1,0,1,1 0,0,3,2,2,8,3,0,0,1,1,0,1,0 0,0,0,3,1,1,5,0,0,1,1,2,1,0 0,0,0,3,0,5,2,0,1,1,1,0,1,1 0,0,1,2,2,8,3,0,0,1,1,1,1,0 0,0,3,2,2,10,3,0,1,1,1,2,1,0 1,0,3,2,0,2,2,4,1,1,1,0,1,1 1,4,10,3,2,5,1,0,0,1,1,0,1,0 2,2,1,2,0,5,2,0,1,1,1,0,1,0 1,0,1,2,1,8,3,0,0,1,1,1,1,0 2,0,3,2,0,4,2,0,1,1,1,0,1,1 0,1,7,1,0,1,2,0,1,1,1,1,1,0 1,0,3,2,2,4,3,0,0,1,1,1,1,0 0,0,3,2,1,3,3,0,0,1,1,2,1,0 0,1,3,2,0,4,2,0,1,1,1,0,1,0 1,1,3,2,0,5,2,0,1,1,1,1,1,0 0,3,1,2,0,8,2,4,1,1,1,0,1,0 1,3,0,3,1,5,5,4,0,1,1,0,1,0 0,0,3,2,0,10,2,0,1,1,1,1,1,1 1,0,10,3,4,0,5,1,0,1,1,0,1,0 0,0,3,2,0,3,2,0,1,1,1,1,1,1 2,0,5,2,0,4,2,0,1,1,1,1,1,1 3,0,6,2,3,2,5,0,0,1,1,2,1,0 0,0,3,2,2,8,3,0,0,1,1,0,1,0 0,0,8,0,0,2,0,0,0,1,1,0,1,0 0,0,1,2,0,1,2,0,1,1,1,0,1,0 1,1,1,2,1,2,5,0,0,1,1,1,1,0 1,0,1,2,0,5,2,0,1,1,1,1,1,1 0,0,12,1,0,6,2,0,1,1,1,0,1,0 0,0,1,2,2,4,3,0,1,1,1,1,1,0 1,0,10,3,1,3,3,0,1,1,1,2,1,0 1,0,3,2,0,4,2,0,1,1,1,1,1,1 0,0,0,3,2,4,3,0,1,1,1,1,1,0 1,0,3,2,0,0,2,0,1,1,1,1,1,1 1,0,3,2,0,4,2,0,1,1,1,0,1,1 1,0,1,2,1,8,5,3,0,1,1,0,1,0 1,5,3,2,0,8,0,1,0,1,1,2,1,0 2,0,12,1,3,3,5,0,0,1,1,1,1,0 2,0,3,2,2,1,3,0,1,1,1,0,1,0 1,0,13,3,0,4,2,0,1,1,1,1,1,0 0,0,3,2,2,4,1,4,0,1,1,2,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,1,3,2,1,2,3,0,0,1,1,0,1,0 3,4,6,2,4,8,3,0,0,1,1,2,1,0 1,0,0,3,2,5,1,0,1,1,1,1,1,0 2,4,10,3,1,8,3,0,0,1,1,0,1,0 0,0,0,3,0,5,2,0,1,1,1,0,1,1 0,0,6,2,2,4,3,0,1,1,1,1,1,1 0,0,1,2,0,0,2,0,1,1,1,1,1,0 1,5,4,3,1,5,5,0,0,1,1,0,1,0 0,0,2,1,2,2,1,2,0,1,1,2,1,0 2,0,14,0,0,10,2,0,1,1,1,0,1,0 0,0,9,1,1,10,1,0,1,1,1,0,1,0 0,0,8,0,2,8,1,0,1,1,1,0,1,0 0,0,7,1,0,6,2,4,1,1,1,1,1,0 0,0,0,3,2,4,3,0,1,1,1,1,1,1 2,0,3,2,1,6,3,4,0,1,1,0,1,0 1,5,4,3,0,5,2,0,1,1,1,1,1,1 1,5,1,2,2,8,5,4,0,1,1,1,1,0 1,0,3,2,2,4,3,0,1,1,1,0,1,0 1,4,1,2,5,8,5,4,0,1,1,2,1,0 1,0,1,2,0,1,2,2,1,1,1,0,1,0 1,3,1,2,0,10,2,0,1,1,1,1,1,1 0,0,3,2,0,1,2,0,1,1,1,1,1,0 0,1,4,3,2,5,1,0,1,1,1,0,1,0 1,0,1,2,1,5,3,0,1,1,1,1,1,1 1,4,3,2,0,1,2,0,1,1,1,0,1,1 0,0,0,3,2,5,3,0,0,1,1,1,1,1 1,2,0,3,0,4,0,0,0,1,1,2,1,1 0,0,1,2,2,8,1,1,0,1,1,2,1,0 0,0,3,2,0,4,2,0,1,1,1,0,1,1 0,0,3,2,2,8,3,0,1,1,1,2,1,0 1,0,10,3,1,4,3,0,0,1,1,2,1,0 0,0,3,2,0,4,2,0,1,1,1,1,1,0 1,0,3,2,1,1,3,0,1,1,1,0,1,0 0,0,1,2,0,10,2,0,1,1,1,0,1,0 0,0,0,3,2,3,3,0,1,1,1,0,1,0 1,0,13,3,0,4,0,0,0,1,1,2,1,1 0,0,6,2,2,3,5,0,1,1,1,2,1,0 0,0,6,2,2,8,3,1,0,1,1,1,1,0 2,0,3,2,1,8,5,0,0,1,1,0,1,0 1,0,3,2,2,8,3,0,0,1,1,2,1,0 0,0,1,2,2,8,1,0,0,1,1,2,1,0 3,0,3,2,4,4,3,0,0,1,1,2,1,0 1,3,0,3,0,12,2,0,1,1,1,1,1,1 0,0,1,2,2,1,3,4,1,1,1,0,1,0 1,0,6,2,3,5,5,0,0,1,1,2,1,0 1,0,0,3,0,5,2,0,1,1,1,0,1,1 1,0,0,3,0,8,2,0,1,1,1,0,1,1 0,0,3,2,0,1,1,1,1,1,1,0,1,0 1,4,3,2,0,12,2,0,1,1,1,1,1,0 1,4,6,2,1,4,5,0,0,1,1,0,1,0 1,0,2,1,0,10,2,0,1,1,1,1,1,0 0,0,0,3,2,5,3,0,1,1,1,0,1,0 1,0,3,2,1,2,5,0,0,1,1,1,1,0 0,4,6,2,5,1,3,0,1,1,1,0,1,0 0,0,2,1,2,1,3,0,1,1,1,1,1,0 1,4,1,2,1,8,3,0,0,1,1,0,1,0 0,0,3,2,2,8,3,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,1 1,0,10,3,0,5,2,0,1,1,1,0,1,1 1,5,3,2,0,10,2,2,1,1,1,0,1,0 0,0,2,1,0,10,2,0,1,1,1,1,1,0 0,0,1,2,0,7,2,0,1,1,1,0,1,0 1,0,3,2,2,7,3,4,1,1,1,0,1,0 1,5,10,3,0,5,4,3,0,1,1,2,1,1 0,0,3,2,0,5,2,0,1,1,1,0,1,0 1,0,10,3,0,4,0,0,0,1,1,2,1,1 2,0,3,2,1,3,5,0,0,1,1,2,1,0 1,1,6,2,3,4,3,0,1,1,1,1,1,0 0,0,0,3,2,3,3,0,0,1,1,0,1,0 0,0,2,1,2,6,1,0,1,1,1,2,1,0 0,0,14,0,0,1,2,0,1,1,1,0,1,0 1,0,6,2,0,8,0,4,0,1,1,1,1,1 0,4,0,3,2,3,1,0,0,1,1,0,1,0 0,0,5,2,2,8,3,0,0,1,1,2,1,0 0,0,12,1,2,1,4,0,1,1,1,1,1,0 2,0,3,2,0,3,2,0,1,1,1,0,1,1 0,0,3,2,2,2,5,0,0,1,1,2,1,0 1,0,0,3,0,4,2,4,1,1,1,0,1,1 1,3,0,3,1,0,5,4,0,1,1,0,1,0 2,0,3,2,0,1,2,0,1,1,1,1,1,1 1,0,0,3,0,10,2,0,1,1,1,1,1,1 1,0,3,2,0,8,2,0,1,1,1,2,1,0 0,0,3,2,2,1,3,0,1,1,1,2,1,0 0,0,3,2,0,8,2,0,1,1,1,0,1,0 1,0,5,2,0,0,2,4,1,1,1,0,1,0 2,0,3,2,2,6,1,0,1,1,1,2,1,0 1,0,6,2,0,3,2,0,1,1,1,0,1,1 2,1,10,3,4,2,3,0,0,1,1,2,1,0 0,0,6,2,0,1,2,0,1,1,1,1,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 1,0,3,2,1,7,3,0,1,1,1,0,1,0 0,0,3,2,1,12,3,0,1,1,1,1,1,0 1,0,0,3,2,5,3,0,0,1,1,1,1,0 2,0,3,2,4,2,3,0,0,1,1,2,1,0 1,4,6,2,2,4,5,2,0,1,1,0,1,0 1,0,1,2,0,5,2,0,1,1,1,0,1,0 1,1,12,1,0,1,2,0,1,1,1,2,1,0 0,0,3,2,2,2,3,0,0,1,1,2,1,0 2,1,12,1,0,3,2,0,1,1,1,1,1,1 1,1,4,3,0,3,2,0,1,1,1,2,1,1 1,0,0,3,3,5,5,1,0,1,1,0,1,1 0,0,1,2,2,8,5,0,0,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,1,1,3,0,1,1,1,2,1,0 0,0,1,2,0,2,2,0,1,1,1,1,1,0 2,0,10,3,1,5,3,0,0,1,1,0,1,1 0,0,10,3,0,4,2,0,1,1,1,1,1,1 1,0,2,1,4,7,3,0,0,1,1,0,1,0 1,0,1,2,1,8,5,4,0,1,1,0,1,0 0,0,6,2,2,0,3,0,1,1,1,0,1,0 2,0,1,2,0,10,2,4,1,1,1,0,1,0 0,0,0,3,0,5,2,0,1,1,1,0,1,1 0,0,3,2,0,3,2,0,1,1,1,1,1,0 1,0,6,2,1,3,5,0,0,1,1,0,1,0 2,2,3,2,0,8,0,0,0,1,1,2,1,1 1,2,10,3,0,2,2,0,1,1,1,0,1,0 2,4,2,1,0,10,2,0,1,1,1,2,1,0 0,0,3,2,2,6,3,0,1,1,1,0,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,0 1,0,4,3,0,5,2,0,1,1,1,1,1,1 3,1,1,2,0,3,2,0,1,1,1,2,1,1 0,0,1,2,2,0,3,0,0,1,1,1,1,0 0,2,3,2,0,9,2,0,1,1,1,1,1,1 1,3,10,3,0,12,2,0,1,1,1,2,1,1 0,0,3,2,2,1,3,4,1,1,1,2,1,0 0,0,1,2,3,10,3,0,1,1,1,2,1,0 2,0,0,3,0,0,2,0,1,1,1,1,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 2,5,1,2,0,8,0,0,0,1,1,2,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 1,0,0,3,0,4,2,0,1,1,1,0,1,0 1,0,10,3,2,5,3,0,1,1,1,1,1,1 0,0,3,2,0,10,2,0,1,1,1,0,1,0 2,0,1,2,4,11,5,0,0,1,1,0,1,0 0,1,3,2,2,2,1,0,1,1,1,2,1,0 0,2,7,1,2,3,1,0,0,1,1,0,1,0 0,0,1,2,2,8,3,0,0,1,1,1,1,0 1,0,3,2,1,1,3,0,1,1,1,0,1,0 0,0,12,1,0,4,0,0,0,1,1,2,1,0 2,0,13,3,0,5,2,0,1,1,1,1,1,1 1,0,0,3,0,0,2,0,1,1,1,0,1,1 0,3,3,2,1,8,1,0,0,1,1,0,1,0 2,0,1,2,0,4,2,0,1,1,1,0,1,1 0,0,3,2,0,3,2,0,1,1,1,1,1,0 1,0,6,2,0,7,2,0,1,1,1,1,1,1 1,2,1,2,0,3,2,0,1,1,1,1,1,1 0,0,1,2,2,8,1,0,1,1,1,0,1,0 1,2,0,3,0,3,2,0,1,1,1,0,1,1 0,0,3,2,0,3,2,0,1,1,1,1,1,1 0,0,3,2,2,2,1,0,0,1,1,0,1,0 0,0,0,3,2,6,4,0,1,1,1,2,1,0 1,1,3,2,0,1,2,0,1,1,1,1,1,1 0,0,6,2,1,1,1,0,1,1,1,0,1,0 1,0,5,2,0,3,2,4,1,1,1,1,1,0 0,0,1,2,0,8,0,0,0,1,1,0,1,1 0,3,1,2,0,12,2,4,1,1,1,0,1,0 0,0,3,2,0,7,2,4,1,1,1,0,1,1 2,0,11,0,1,1,3,3,1,1,1,2,1,0 0,0,0,3,0,8,0,0,0,1,1,0,1,0 1,4,8,0,0,10,2,0,1,1,1,0,1,0 0,0,1,2,2,8,1,0,0,1,1,2,1,0 1,0,0,3,1,0,5,0,1,1,1,2,1,0 0,0,0,3,0,8,2,1,1,1,1,0,1,1 1,0,0,3,1,8,1,0,1,1,1,2,1,1 3,1,8,0,0,9,2,0,1,1,1,2,1,0 3,0,0,3,0,12,2,0,1,1,1,2,1,0 0,0,1,2,2,4,1,0,1,1,1,0,1,0 1,0,2,1,2,12,3,4,1,1,1,0,1,1 1,0,1,2,0,6,2,0,1,1,1,2,1,0 0,0,3,2,1,8,3,0,0,1,1,0,1,0 0,0,10,3,2,2,1,0,0,1,1,0,1,0 0,0,0,3,2,3,3,0,0,1,1,1,1,0 1,0,14,0,0,2,2,4,1,1,1,0,1,0 1,0,0,3,1,4,3,0,0,1,1,1,1,1 0,3,14,0,2,1,3,0,1,1,1,0,1,0 0,0,2,1,2,10,1,0,1,1,1,2,1,0 1,0,1,2,0,1,2,0,1,1,1,1,1,1 1,0,3,2,0,10,2,0,1,1,1,1,1,0 0,4,3,2,0,2,2,2,1,1,1,0,1,0 2,0,8,0,0,1,2,0,1,1,1,0,1,0 0,0,1,2,0,10,2,0,1,1,1,0,1,0 0,0,5,2,1,5,5,0,0,1,1,2,1,0 3,2,3,2,0,4,2,0,1,1,1,0,1,1 0,0,0,3,2,5,3,4,1,1,1,0,1,0 2,0,2,1,1,3,1,0,0,1,1,2,1,0 2,5,10,3,0,5,2,0,1,1,1,1,1,0 0,0,0,3,2,5,1,0,0,1,1,0,1,0 0,0,2,1,2,3,1,1,0,1,1,2,1,0 1,0,14,0,5,9,3,0,1,1,1,2,1,0 0,0,6,2,0,8,2,0,1,1,1,0,1,0 1,0,3,2,1,2,5,0,0,1,1,2,1,0 2,0,14,0,0,9,4,0,0,1,1,1,1,0 0,0,0,3,2,3,3,0,0,1,1,0,1,0 1,1,6,2,0,1,2,0,1,1,1,0,1,0 1,0,0,3,0,8,2,0,1,1,1,1,1,1 0,0,13,3,0,5,2,0,1,1,1,1,1,0 2,0,3,2,1,12,3,0,1,1,1,2,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,3,2,0,8,2,0,1,1,1,0,1,0 0,1,1,2,0,9,2,0,1,1,1,1,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,1 0,0,8,0,2,2,1,0,0,1,1,0,1,0 1,3,1,2,4,4,5,2,0,1,1,2,1,0 0,0,1,2,0,2,2,0,1,1,1,0,1,1 0,0,1,2,2,3,1,0,0,1,1,2,1,0 1,2,1,2,0,4,2,1,1,1,1,1,1,0 0,0,0,3,0,5,2,0,1,1,1,0,1,0 1,0,1,2,0,4,2,0,1,1,1,0,1,1 0,4,1,2,0,10,2,0,1,1,1,0,1,0 1,2,13,3,3,5,3,0,1,1,1,2,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,0,3,2,1,3,0,1,1,1,2,1,0 0,0,6,2,0,3,2,0,1,1,1,2,1,0 0,5,14,0,2,10,3,0,1,1,1,2,1,0 0,0,12,1,3,7,1,0,1,1,1,0,1,0 1,0,3,2,0,2,0,4,0,1,1,2,1,0 1,5,13,3,0,5,2,0,1,1,1,1,1,1 1,1,1,2,0,10,2,0,1,1,1,1,1,0 2,0,7,1,0,6,2,4,1,1,1,1,1,0 1,0,3,2,0,3,2,0,1,1,1,1,1,1 0,0,3,2,0,2,2,0,1,1,1,1,1,0 0,1,3,2,0,1,2,0,1,1,1,0,1,0 0,4,1,2,1,8,3,0,0,1,1,2,1,0 0,0,1,2,2,2,5,0,0,1,1,2,1,0 1,1,10,3,0,1,2,0,1,1,1,1,1,1 1,0,4,3,0,5,0,0,0,1,1,1,1,1 1,0,12,1,0,1,2,0,1,1,1,0,1,1 0,0,2,1,2,2,1,0,1,1,1,2,1,0 0,0,1,2,1,8,3,0,1,1,1,1,1,0 2,0,0,3,1,2,3,0,0,1,1,2,1,0 0,0,5,2,2,12,3,0,1,1,1,0,1,0 2,0,9,1,4,3,5,0,0,1,1,0,1,0 2,0,3,2,0,4,2,0,1,1,1,1,1,1 0,0,1,2,2,2,1,0,1,1,1,0,1,0 1,4,10,3,0,5,2,0,1,1,1,1,1,1 0,0,3,2,2,3,3,0,1,1,1,1,1,0 0,5,10,3,0,5,2,0,1,1,1,1,1,1 0,0,0,3,0,3,2,4,1,1,1,1,1,0 0,0,3,2,1,10,3,0,0,1,1,1,1,1 1,0,4,3,0,5,0,0,0,1,1,0,1,0 0,0,0,3,2,8,3,0,0,1,1,1,1,0 0,0,6,2,1,0,3,0,1,1,1,1,1,0 0,0,3,2,2,6,3,0,1,1,1,0,1,0 0,0,3,2,2,6,3,0,1,1,1,0,1,0 1,0,3,2,0,7,2,4,1,1,1,0,1,1 2,0,2,1,0,1,2,0,1,1,1,0,1,0 1,0,3,2,2,3,1,0,0,1,1,0,1,0 1,0,3,2,0,2,2,0,1,1,1,1,1,0 0,0,14,0,2,2,4,0,1,1,1,0,1,0 0,0,6,2,0,10,2,0,1,1,1,0,1,0 0,0,3,2,2,2,1,4,0,1,1,2,1,0 0,5,1,2,2,2,4,4,1,1,1,2,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 0,0,3,2,3,2,3,0,0,1,1,2,1,0 2,0,3,2,0,3,0,0,0,1,1,1,1,0 0,0,0,3,0,3,2,0,1,1,1,1,1,0 1,4,1,2,5,1,4,0,1,1,1,1,1,0 0,0,0,3,2,2,3,0,0,1,1,0,1,0 1,4,10,3,1,5,3,0,0,1,1,1,1,0 1,1,3,2,0,9,2,0,1,1,1,1,1,0 1,0,3,2,2,7,3,0,0,1,1,0,1,0 0,0,3,2,2,5,3,0,0,1,1,1,1,0 0,0,0,3,2,12,3,0,0,1,1,0,1,0 1,5,13,3,0,5,2,0,1,1,1,1,1,1 1,2,3,2,0,4,2,0,1,1,1,1,1,1 1,0,0,3,0,8,2,0,1,1,1,0,1,1 1,0,0,3,2,5,1,0,0,1,1,2,1,1 0,0,0,3,2,5,1,0,0,1,1,2,1,0 1,0,1,2,1,8,5,0,0,1,1,2,1,0 0,0,1,2,0,10,2,0,1,1,1,0,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,0,1,2,0,1,1,1,0,1,0 1,5,0,3,0,4,2,0,1,1,1,2,1,1 0,0,1,2,0,10,2,0,1,1,1,1,1,0 1,0,10,3,0,5,2,0,1,1,1,1,1,1 1,0,6,2,0,1,2,0,1,1,1,0,1,0 0,0,5,2,0,3,2,0,1,1,1,1,1,0 1,0,6,2,1,5,3,0,1,1,1,0,1,1 0,0,0,3,2,4,1,1,0,1,1,1,1,0 1,2,0,3,0,3,2,0,1,1,1,1,1,1 1,0,0,3,2,4,3,0,0,1,1,0,1,0 0,0,11,0,0,9,2,0,1,1,1,1,1,0 0,0,0,3,2,0,3,0,1,1,1,0,1,0 0,0,3,2,2,3,1,4,0,1,1,2,1,0 0,0,1,2,2,12,1,0,1,1,1,0,1,0 0,0,3,2,2,10,1,0,1,1,1,1,1,0 0,0,1,2,2,8,3,4,0,1,1,2,1,0 1,0,0,3,0,0,2,0,1,1,1,0,1,1 2,0,3,2,1,11,5,4,0,1,1,1,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,0 1,0,0,3,0,3,2,0,1,1,1,0,1,1 0,0,0,3,2,3,3,0,1,1,1,1,1,0 2,0,14,0,0,7,2,0,1,1,1,0,1,0 1,3,0,3,2,5,3,0,0,1,1,1,1,0 0,0,1,2,2,2,4,0,0,1,1,2,1,0 1,0,2,1,2,6,3,4,1,1,1,0,1,0 0,0,2,1,0,7,2,0,1,1,1,0,1,0 0,1,3,2,1,1,3,0,1,1,1,1,1,0 2,1,8,0,0,1,2,0,1,1,1,2,1,0 0,4,1,2,2,8,1,0,0,1,1,2,1,0 0,0,3,2,2,1,1,0,1,1,1,0,1,0 1,4,1,2,1,8,3,0,0,1,1,1,1,0 0,0,1,2,1,8,3,0,0,1,1,0,1,1 1,0,13,3,0,4,2,0,1,1,1,1,1,1 1,0,9,1,0,10,2,0,1,1,1,1,1,1 1,1,0,3,1,2,5,1,0,1,1,1,1,1 0,0,1,2,2,8,1,0,0,1,1,2,1,0 0,0,3,2,0,7,0,0,0,1,1,0,1,0 0,5,3,2,0,12,1,0,1,1,1,2,1,0 1,0,0,3,2,8,3,0,0,1,1,0,1,0 0,0,3,2,2,8,5,0,1,1,1,0,1,0 0,0,3,2,0,7,2,1,1,1,1,0,1,0 1,3,1,2,3,8,5,4,0,1,1,1,1,0 0,0,1,2,2,4,5,4,0,1,1,2,1,0 0,0,2,1,2,7,3,0,1,1,1,0,1,0 0,0,3,2,2,8,3,0,0,1,1,2,1,0 0,0,1,2,2,3,1,0,0,1,1,0,1,0 0,2,10,3,2,10,1,0,1,1,1,0,1,0 1,3,3,2,0,8,0,0,0,1,1,0,1,0 0,0,1,2,0,3,2,0,1,1,1,0,1,0 1,0,3,2,1,4,3,0,1,1,1,2,1,0 0,0,3,2,0,1,2,0,1,1,1,1,1,0 0,0,10,3,2,5,3,0,0,1,1,2,1,0 1,0,3,2,1,3,3,0,0,1,1,1,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,1 0,0,3,2,2,2,3,0,0,1,1,2,1,0 0,0,3,2,0,1,2,0,1,1,1,1,1,0 0,0,3,2,1,3,3,0,0,1,1,2,1,0 0,1,1,2,0,2,0,0,0,1,1,2,1,0 1,0,6,2,3,2,3,0,1,1,1,0,1,0 1,0,1,2,0,0,2,0,1,1,1,1,1,0 0,0,1,2,2,8,3,0,0,1,1,1,1,0 0,0,12,1,1,7,3,4,0,1,1,2,1,0 1,4,1,2,4,8,3,0,0,1,1,0,1,0 0,4,0,3,0,5,0,0,0,1,1,2,1,1 1,0,0,3,0,8,2,0,1,1,1,2,1,1 1,0,3,2,3,4,3,0,1,1,1,0,1,1 2,0,0,3,0,3,2,0,1,1,1,2,1,0 0,0,0,3,2,2,3,0,1,1,1,2,1,0 1,3,0,3,0,4,2,0,1,1,1,0,1,1 1,4,10,3,0,5,2,0,1,1,1,2,1,1 0,0,3,2,2,3,3,0,0,1,1,2,1,0 1,2,5,2,0,3,2,0,1,1,1,1,1,1 0,0,0,3,2,0,3,0,1,1,1,0,1,0 0,0,1,2,2,1,1,0,1,1,1,0,1,0 1,0,3,2,0,8,0,0,0,1,1,2,1,0 0,0,3,2,2,5,4,0,0,1,1,0,1,0 1,4,6,2,0,4,2,0,1,1,1,0,1,1 2,0,0,3,4,2,3,0,0,1,1,0,1,0 1,0,0,3,2,5,3,0,1,1,1,0,1,0 2,4,0,3,0,12,2,0,1,1,1,1,1,1 0,0,3,2,2,1,3,0,1,1,1,2,1,0 2,0,0,3,0,3,2,0,1,1,1,1,1,1 1,0,3,2,1,3,3,0,0,1,1,2,1,0 1,0,0,3,0,3,2,0,1,1,1,1,1,1 1,0,6,2,0,5,2,0,1,1,1,0,1,0 0,0,3,2,2,7,1,0,1,1,1,0,1,0 0,0,1,2,2,8,1,0,1,1,1,0,1,0 0,0,0,3,2,5,4,0,1,1,1,0,1,0 1,0,2,1,0,1,2,0,1,1,1,0,1,0 1,0,3,2,0,4,2,0,1,1,1,1,1,1 0,0,1,2,2,0,1,0,1,1,1,2,1,0 0,0,0,3,2,8,3,0,0,1,1,0,1,0 2,1,0,3,0,3,2,0,1,1,1,2,1,0 2,1,6,2,0,2,2,0,1,1,1,1,1,0 2,2,0,3,1,3,3,0,1,1,1,0,1,1 1,1,5,2,0,3,2,0,1,1,1,2,1,1 3,4,1,2,4,8,3,0,0,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,0 1,2,3,2,0,1,2,0,1,1,1,1,1,1 1,2,1,2,1,3,1,0,1,1,1,1,1,1 1,0,8,0,0,10,2,4,1,1,1,0,1,0 1,4,0,3,2,4,1,0,1,1,1,2,1,0 1,4,10,3,0,5,2,0,1,1,1,0,1,1 1,0,2,1,0,7,2,0,1,1,1,0,1,0 0,0,6,2,0,8,2,0,1,1,1,0,1,0 1,0,1,2,0,5,2,0,1,1,1,0,1,0 1,3,3,2,1,1,5,0,1,1,1,0,1,0 0,0,12,1,4,2,3,4,0,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,0,5,2,0,1,1,1,1,1,0 2,0,6,2,4,1,3,0,0,1,1,2,1,0 1,0,1,2,1,4,3,0,1,1,1,1,1,1 0,0,0,3,0,4,2,0,1,1,1,1,1,0 0,0,0,3,0,3,2,0,1,1,1,0,1,1 0,5,1,2,0,8,2,0,1,1,1,2,1,0 2,0,3,2,0,8,2,0,1,1,1,1,1,1 2,1,13,3,0,5,2,0,1,1,1,2,1,0 0,0,7,1,2,1,1,0,1,1,1,1,1,0 1,0,12,1,2,7,3,1,1,1,1,0,1,0 1,0,1,2,0,7,2,0,1,1,1,1,1,1 0,0,0,3,2,2,1,0,1,1,1,2,1,0 1,2,1,2,0,4,2,0,1,1,1,0,1,1 1,0,14,0,3,8,4,0,1,1,1,0,1,0 0,0,6,2,2,6,3,0,1,1,1,1,1,0 1,3,0,3,1,0,3,2,1,1,1,0,1,0 0,0,0,3,2,4,3,0,0,1,1,1,1,1 1,0,2,1,0,2,2,4,1,1,1,0,1,1 0,3,3,2,2,8,4,0,0,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,3,2,0,10,2,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,2,2,1,4,1,1,1,0,1,0 0,1,1,2,0,1,2,0,1,1,1,2,1,0 0,1,13,3,2,5,3,0,1,1,1,1,1,1 0,0,3,2,0,2,2,0,1,1,1,0,1,0 1,0,1,2,0,2,0,0,0,1,1,2,1,1 0,0,6,2,2,2,3,0,0,1,1,0,1,0 0,0,3,2,0,9,2,4,1,1,1,0,1,0 1,4,0,3,0,5,0,0,0,1,1,0,1,1 0,5,3,2,3,8,5,4,0,1,1,0,1,0 0,0,2,1,2,2,1,0,1,1,1,2,1,0 0,4,10,3,2,5,1,4,0,1,1,0,1,0 0,0,1,2,0,1,2,0,1,1,1,0,1,0 0,3,5,2,0,8,2,0,1,1,1,0,1,0 0,0,0,3,2,3,1,0,1,1,1,0,1,1 0,0,3,2,3,6,3,0,0,1,1,0,1,0 1,3,1,2,1,8,5,0,0,1,1,0,1,0 1,0,1,2,2,3,3,0,0,1,1,0,1,0 0,0,6,2,2,2,3,0,0,1,1,0,1,0 0,0,3,2,2,2,3,0,0,1,1,0,1,0 2,0,3,2,1,1,3,0,1,1,1,0,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,1 1,0,8,0,3,9,3,4,1,1,1,0,1,0 0,0,1,2,2,9,1,0,1,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 2,4,3,2,0,10,2,0,1,1,1,2,1,1 1,0,3,2,0,2,2,0,1,1,1,2,1,0 1,0,3,2,1,2,4,4,0,1,1,2,1,0 0,5,0,3,2,5,3,0,1,1,1,0,1,0 0,1,12,1,1,1,3,0,1,1,1,0,1,0 0,0,1,2,2,3,3,0,1,1,1,2,1,0 2,0,14,0,3,7,3,0,0,1,1,0,1,0 0,0,0,3,0,5,0,0,0,1,1,2,1,1 0,0,3,2,0,3,2,0,1,1,1,1,1,0 0,0,0,3,2,5,3,0,0,1,1,1,1,0 0,0,0,3,2,8,3,0,0,1,1,2,1,0 1,1,3,2,0,9,2,1,1,1,1,1,1,0 0,0,3,2,2,7,1,0,1,1,1,1,1,0 2,0,0,3,0,4,2,0,1,1,1,0,1,0 0,0,2,1,2,2,3,0,1,1,1,1,1,0 0,0,7,1,2,6,1,4,0,1,1,2,1,0 0,0,1,2,2,1,1,0,1,1,1,0,1,0 0,0,6,2,2,3,1,1,1,1,1,0,1,0 1,5,3,2,1,2,3,0,1,1,1,0,1,0 0,0,3,2,2,3,5,4,0,1,1,2,1,0 1,0,10,3,2,5,3,0,0,1,1,1,1,1 1,0,1,2,0,4,2,0,1,1,1,1,1,1 1,0,10,3,0,4,2,0,1,1,1,1,1,1 0,0,1,2,2,4,1,4,1,1,1,2,1,0 2,0,5,2,0,2,2,0,1,1,1,1,1,0 1,0,10,3,1,4,3,0,1,1,1,1,1,1 0,0,3,2,0,11,0,0,0,1,1,0,1,0 0,5,3,2,2,2,1,0,1,1,1,2,1,0 2,0,1,2,4,2,3,0,0,1,1,2,1,0 0,0,6,2,1,10,3,0,1,1,1,1,1,0 0,0,12,1,1,1,5,0,1,1,1,0,1,0 1,3,1,2,0,5,0,0,0,1,1,0,1,1 0,0,12,1,2,7,5,4,0,1,1,0,1,0 2,0,1,2,0,0,2,0,1,1,1,2,1,0 1,0,6,2,0,7,2,0,1,1,1,0,1,0 0,0,3,2,2,6,1,0,1,1,1,0,1,0 0,0,13,3,2,5,3,0,0,1,1,1,1,1 0,0,6,2,2,2,3,0,1,1,1,0,1,0 0,0,1,2,2,7,1,0,1,1,1,2,1,0 0,0,3,2,2,2,4,4,1,1,1,0,1,0 0,0,1,2,2,8,1,0,1,1,1,2,1,0 0,5,0,3,2,12,3,4,1,1,1,0,1,0 0,1,1,2,2,1,1,0,1,1,1,1,1,0 1,0,6,2,2,8,3,0,1,1,1,1,1,1 0,0,0,3,2,1,3,2,1,1,1,0,1,0 0,0,0,3,0,8,0,0,0,1,1,1,1,0 0,0,3,2,2,2,3,0,0,1,1,0,1,0 0,0,0,3,2,5,1,0,0,1,1,2,1,0 0,1,3,2,2,2,3,0,1,1,1,2,1,0 0,0,3,2,2,7,3,0,1,1,1,0,1,0 0,0,3,2,0,4,2,0,1,1,1,1,1,0 1,0,1,2,0,4,0,0,0,1,1,2,1,0 1,0,3,2,0,2,2,1,1,1,1,0,1,0 0,0,5,2,1,3,5,0,0,1,1,1,1,0 0,0,3,2,2,8,3,0,1,1,1,1,1,0 2,2,0,3,0,4,2,0,1,1,1,1,1,1 1,0,6,2,1,5,5,0,0,1,1,0,1,0 0,5,4,3,2,5,3,0,1,1,1,1,1,0 1,0,1,2,0,3,0,4,0,1,1,0,1,0 1,3,1,2,0,8,2,0,1,1,1,0,1,1 2,0,3,2,0,3,2,0,1,1,1,1,1,1 0,5,0,3,2,5,4,0,1,1,1,2,1,0 2,0,3,2,0,10,2,0,1,1,1,1,1,1 1,1,3,2,1,4,5,0,1,1,1,1,1,0 0,0,3,2,2,8,3,0,0,1,1,0,1,0 0,0,0,3,0,2,0,0,0,1,1,2,1,0 0,0,3,2,2,6,1,0,1,1,1,0,1,0 0,0,1,2,2,3,3,0,0,1,1,2,1,0 1,1,1,2,0,1,2,0,1,1,1,0,1,1 1,0,1,2,0,7,2,0,1,1,1,0,1,0 1,0,9,1,1,1,3,0,1,1,1,0,1,0 1,0,6,2,0,0,0,0,0,1,1,2,1,1 1,0,3,2,1,7,1,0,1,1,1,1,1,0 1,0,1,2,0,3,2,0,1,1,1,0,1,1 1,1,1,2,1,2,3,0,1,1,1,1,1,0 0,0,7,1,0,7,0,0,0,1,1,2,1,0 1,0,3,2,0,8,2,0,1,1,1,0,1,0 1,0,0,3,0,5,2,0,1,1,1,0,1,1 1,0,3,2,2,3,5,4,0,1,1,0,1,0 2,0,0,3,0,12,2,0,1,1,1,0,1,1 1,0,11,0,0,2,2,4,1,1,1,2,1,0 1,4,10,3,1,5,5,0,0,1,1,1,1,0 0,0,10,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,2,1,3,0,1,1,1,0,1,0 0,0,3,2,3,7,3,4,1,1,1,0,1,0 1,0,10,3,2,4,3,0,0,1,1,1,1,1 1,0,1,2,0,1,2,0,1,1,1,1,1,0 2,0,0,3,1,4,3,0,0,1,1,0,1,1 2,0,7,1,3,7,5,0,0,1,1,0,1,0 1,0,0,3,2,4,3,0,1,1,1,1,1,1 1,3,0,3,0,1,2,0,1,1,1,0,1,0 1,0,7,1,0,1,2,0,1,1,1,0,1,0 3,4,1,2,2,5,4,0,0,1,1,2,1,0 2,0,3,2,1,2,5,4,0,1,1,2,1,0 0,0,1,2,2,6,1,4,1,1,1,0,1,0 0,5,1,2,0,5,0,0,0,1,1,1,1,0 2,0,3,2,4,8,3,0,0,1,1,2,1,0 2,0,3,2,0,8,0,0,0,1,1,0,1,0 1,0,1,2,0,8,2,0,1,1,1,0,1,1 0,0,3,2,2,3,1,4,1,1,1,0,1,0 0,0,0,3,0,1,2,0,1,1,1,0,1,0 0,0,6,2,2,5,3,0,0,1,1,2,1,0 0,0,0,3,0,0,2,0,1,1,1,0,1,1 0,0,3,2,2,1,3,2,1,1,1,1,1,0 0,0,3,2,2,2,5,4,0,1,1,2,1,0 1,0,1,2,0,1,2,0,1,1,1,1,1,1 1,2,13,3,0,5,2,0,1,1,1,1,1,1 0,0,5,2,0,3,2,0,1,1,1,0,1,0 0,0,3,2,2,10,1,4,1,1,1,0,1,0 1,0,2,1,1,10,3,0,1,1,1,0,1,0 2,1,0,3,0,9,2,0,1,1,1,1,1,0 2,4,1,2,3,12,3,0,1,1,1,0,1,1 2,0,1,2,2,8,3,0,1,1,1,1,1,0 0,0,5,2,2,8,1,0,0,1,1,2,1,0 1,0,3,2,1,7,3,0,0,1,1,0,1,0 1,0,5,2,0,3,0,0,0,1,1,0,1,0 0,0,0,3,0,5,2,0,1,1,1,0,1,1 1,0,8,0,0,1,2,0,1,1,1,0,1,0 0,0,2,1,5,6,3,0,1,1,1,0,1,0 0,0,3,2,0,10,2,0,1,1,1,1,1,0 0,0,3,2,2,2,1,0,1,1,1,0,1,0 2,1,5,2,0,3,2,0,1,1,1,1,1,1 1,1,3,2,2,4,3,0,1,1,1,1,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,0 0,0,3,2,0,8,2,0,1,1,1,1,1,0 2,0,3,2,1,4,5,0,0,1,1,1,1,0 1,0,1,2,2,10,5,0,1,1,1,0,1,0 0,0,1,2,2,7,1,0,1,1,1,0,1,0 0,0,3,2,2,8,1,0,0,1,1,1,1,0 0,0,7,1,2,2,5,4,0,1,1,2,1,0 2,0,3,2,1,8,5,0,0,1,1,1,1,0 0,0,10,3,2,3,3,0,0,1,1,2,1,0 1,0,3,2,1,7,5,0,1,1,1,0,1,0 0,0,1,2,2,5,3,0,1,1,1,2,1,0 1,0,1,2,0,7,2,4,1,1,1,0,1,1 0,0,2,1,2,2,3,4,1,1,1,0,1,0 2,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,2,8,4,0,0,1,1,2,1,0 2,5,13,3,0,5,2,0,1,1,1,1,1,1 0,0,1,2,2,7,1,0,0,1,1,0,1,0 1,0,1,2,4,8,4,0,0,1,1,2,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,1,2,2,6,3,0,1,1,1,0,1,0 1,0,13,3,1,4,3,0,0,1,1,1,1,1 0,0,3,2,2,1,3,0,1,1,1,0,1,0 1,3,5,2,0,2,2,0,1,1,1,0,1,0 0,0,10,3,2,4,3,4,1,1,1,1,1,0 0,0,1,2,2,3,3,0,1,1,1,0,1,0 1,0,1,2,0,4,2,0,1,1,1,1,1,0 0,4,10,3,0,5,2,0,1,1,1,1,1,0 0,0,0,3,2,4,3,0,0,1,1,1,1,0 1,1,3,2,1,1,5,0,1,1,1,2,1,0 0,0,3,2,2,2,1,0,0,1,1,2,1,0 2,0,1,2,0,1,2,0,1,1,1,1,1,0 2,0,0,3,4,4,3,0,1,1,1,1,1,1 0,0,0,3,2,6,1,0,1,1,1,0,1,0 0,0,3,2,2,2,1,4,0,1,1,0,1,0 0,1,4,3,0,5,2,0,1,1,1,1,1,1 1,0,0,3,0,5,2,0,1,1,1,1,1,1 0,0,12,1,2,7,5,0,0,1,1,0,1,0 1,0,3,2,2,2,1,0,1,1,1,0,1,0 1,0,1,2,4,3,5,4,0,1,1,0,1,0 1,0,0,3,2,5,3,4,1,1,1,0,1,0 0,0,0,3,2,5,3,0,1,1,1,2,1,0 0,0,10,3,0,3,2,0,1,1,1,1,1,1 0,0,14,0,2,7,3,0,1,1,1,1,1,0 1,0,10,3,0,5,2,0,1,1,1,0,1,1 0,0,2,1,2,3,1,0,0,1,1,2,1,0 2,1,10,3,0,0,2,0,1,1,1,2,1,1 0,0,6,2,2,8,3,0,0,1,1,2,1,0 0,0,10,3,0,4,2,0,1,1,1,0,1,1 0,0,7,1,2,9,1,0,1,1,1,0,1,0 1,3,0,3,0,5,2,0,1,1,1,1,1,1 1,5,3,2,2,1,5,0,1,1,1,0,1,0 2,1,0,3,5,5,3,0,0,1,1,0,1,1 0,0,3,2,0,1,0,0,0,1,1,0,1,0 0,3,3,2,2,8,1,0,0,1,1,0,1,0 1,0,1,2,2,7,3,0,1,1,1,1,1,0 3,0,3,2,4,10,5,0,1,1,1,1,1,0 0,0,2,1,3,7,3,4,1,1,1,2,1,0 0,0,3,2,2,2,3,4,0,1,1,0,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,0 1,3,1,2,2,8,3,4,1,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,1,1,0 1,0,0,3,4,0,5,0,0,1,1,2,1,0 0,0,14,0,0,2,4,0,1,1,1,0,1,0 0,0,6,2,0,0,2,0,1,1,1,0,1,0 0,0,0,3,6,5,0,0,0,1,1,0,1,1 0,0,3,2,0,1,2,0,1,1,1,1,1,0 0,0,1,2,2,5,3,0,0,1,1,2,1,0 0,1,4,3,2,5,3,0,1,1,1,0,1,0 1,2,3,2,0,4,2,0,1,1,1,1,1,1 1,0,3,2,0,7,2,0,1,1,1,0,1,1 2,4,3,2,0,10,2,0,1,1,1,0,1,0 2,4,1,2,0,12,2,0,1,1,1,1,1,0 0,0,2,1,2,3,1,0,0,1,1,2,1,0 0,1,1,2,2,1,1,0,1,1,1,1,1,0 1,4,3,2,0,12,2,0,1,1,1,0,1,1 2,1,3,2,1,4,3,0,1,1,1,1,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 2,0,1,2,4,5,3,0,0,1,1,2,1,0 0,0,3,2,2,2,5,0,1,1,1,0,1,0 0,0,7,1,0,7,2,0,1,1,1,0,1,0 1,0,3,2,0,8,2,0,1,1,1,1,1,1 1,0,10,3,0,5,2,0,1,1,1,1,1,1 2,0,0,3,4,9,1,1,1,1,1,0,1,0 1,4,3,2,0,12,2,0,1,1,1,1,1,1 0,0,3,2,0,1,2,0,1,1,1,1,1,0 1,0,1,2,1,4,5,0,0,1,1,0,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,1 0,0,0,3,2,3,3,0,1,1,1,0,1,1 2,4,3,2,0,10,2,0,1,1,1,1,1,0 2,0,1,2,0,1,2,0,1,1,1,0,1,1 0,0,3,2,2,8,3,0,0,1,1,1,1,0 1,4,10,3,4,4,5,4,0,1,1,2,1,0 0,0,3,2,2,9,1,0,1,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,0,1,2,0,1,1,1,2,1,0 1,0,2,1,1,10,1,0,1,1,1,0,1,0 1,0,6,2,0,3,2,0,1,1,1,1,1,0 0,5,1,2,2,8,1,0,1,1,1,2,1,0 0,0,1,2,2,9,3,0,1,1,1,1,1,0 1,0,1,2,1,10,5,0,1,1,1,1,1,0 0,0,3,2,1,1,5,0,1,1,1,0,1,0 0,4,3,2,3,8,5,0,0,1,1,2,1,0 0,0,1,2,2,7,5,1,1,1,1,0,1,0 1,0,3,2,1,1,3,0,1,1,1,1,1,0 1,4,3,2,0,12,2,0,1,1,1,0,1,0 0,0,3,2,2,7,3,0,1,1,1,1,1,0 0,0,6,2,1,5,5,0,0,1,1,0,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,1 2,0,6,2,0,4,2,0,1,1,1,1,1,1 0,0,1,2,0,7,2,0,1,1,1,0,1,0 1,4,5,2,0,12,2,0,1,1,1,0,1,1 1,0,6,2,2,0,3,0,0,1,1,2,1,0 1,5,3,2,2,1,3,0,1,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,0,1,1 0,0,3,2,2,1,3,0,1,1,1,0,1,0 1,1,5,2,1,10,5,4,0,1,1,2,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,0,3,2,7,5,4,0,1,1,0,1,0 2,2,1,2,0,0,2,0,1,1,1,1,1,1 0,0,6,2,0,3,2,0,1,1,1,0,1,0 1,0,3,2,3,7,3,0,1,1,1,2,1,0 0,0,12,1,2,2,1,0,1,1,1,0,1,0 0,2,0,3,0,4,2,0,1,1,1,1,1,1 0,0,1,2,2,7,3,0,1,1,1,0,1,0 0,0,3,2,2,6,1,0,1,1,1,0,1,0 1,0,3,2,0,4,0,0,0,1,1,0,1,0 0,0,1,2,2,3,3,0,0,1,1,2,1,0 0,0,1,2,0,10,2,4,1,1,1,1,1,1 1,0,1,2,0,8,2,0,1,1,1,0,1,0 0,0,0,3,1,4,5,0,0,1,1,0,1,0 0,0,5,2,1,3,5,0,0,1,1,0,1,0 1,0,0,3,0,3,2,0,1,1,1,1,1,1 0,0,13,3,0,5,2,0,1,1,1,1,1,1 0,0,3,2,0,9,2,0,1,1,1,1,1,0 0,0,3,2,2,7,4,0,0,1,1,0,1,0 0,0,6,2,1,8,3,0,1,1,1,0,1,0 2,0,12,1,1,7,3,0,0,1,1,0,1,0 2,1,0,3,1,5,3,0,1,1,1,0,1,0 0,0,3,2,1,7,3,0,1,1,1,0,1,0 0,0,3,2,0,7,2,1,1,1,1,0,1,0 0,0,0,3,2,8,1,0,1,1,1,2,1,0 1,3,6,2,1,0,3,0,1,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,1 0,0,4,3,0,5,2,0,1,1,1,1,1,0 0,0,3,2,2,2,1,0,0,1,1,2,1,0 0,1,0,3,0,4,0,0,0,1,1,0,1,1 0,0,3,2,2,8,3,0,0,1,1,0,1,0 2,0,3,2,1,2,3,0,0,1,1,2,1,0 1,5,3,2,0,8,0,0,0,1,1,0,1,1 1,0,1,2,2,8,3,0,0,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,1 0,1,1,2,2,2,1,0,0,1,1,0,1,0 0,0,3,2,2,3,1,4,0,1,1,2,1,0 2,0,7,1,1,8,3,0,1,1,1,0,1,0 0,0,1,2,2,8,3,0,1,1,1,1,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,1 2,4,0,3,4,5,3,0,0,1,1,2,1,0 1,0,5,2,0,3,2,0,1,1,1,1,1,1 0,0,3,2,2,7,5,4,0,1,1,0,1,0 1,3,1,2,1,4,3,0,0,1,1,0,1,0 0,2,1,2,0,4,2,1,1,1,1,0,1,1 0,0,0,3,2,5,3,0,1,1,1,1,1,1 0,0,9,1,5,2,3,4,0,1,1,0,1,0 2,0,3,2,0,7,2,0,1,1,1,0,1,0 1,0,6,2,0,4,0,0,0,1,1,2,1,1 2,4,3,2,4,4,4,0,0,1,1,2,1,0 0,0,2,1,2,10,1,0,1,1,1,0,1,0 0,0,3,2,2,7,1,0,1,1,1,2,1,0 2,0,1,2,0,5,2,0,1,1,1,1,1,1 0,5,0,3,0,4,0,0,0,1,1,0,1,0 1,0,7,1,2,2,5,4,0,1,1,0,1,0 0,0,3,2,2,8,3,0,1,1,1,0,1,0 1,0,1,2,0,4,0,0,0,1,1,0,1,1 0,0,3,2,1,7,3,0,1,1,1,0,1,0 1,0,3,2,1,11,5,4,0,1,1,2,1,0 1,1,4,3,0,5,2,0,1,1,1,0,1,0 1,0,3,2,2,4,5,0,0,1,1,0,1,0 1,0,0,3,0,5,2,0,1,1,1,0,1,1 1,0,1,2,0,1,2,0,1,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,3,2,1,7,3,0,1,1,1,0,1,0 0,0,3,2,2,2,3,0,0,1,1,0,1,0 1,1,3,2,0,9,2,0,1,1,1,0,1,0 2,2,3,2,0,10,2,0,1,1,1,0,1,0 2,0,4,3,0,5,2,0,1,1,1,1,1,1 1,0,0,3,0,5,2,0,1,1,1,0,1,1 2,0,3,2,4,8,3,0,0,1,1,2,1,1 2,0,13,3,0,5,2,0,1,1,1,0,1,1 2,4,8,0,2,2,5,4,0,1,1,0,1,0 0,3,3,2,2,8,3,0,1,1,1,0,1,0 0,0,12,1,2,2,5,4,0,1,1,2,1,0 0,5,1,2,2,8,1,0,0,1,1,2,1,0 1,0,3,2,0,8,0,4,0,1,1,0,1,0 0,0,0,3,2,5,1,0,1,1,1,0,1,0 1,0,3,2,0,9,2,0,1,1,1,2,1,0 1,0,1,2,1,2,5,0,0,1,1,0,1,0 1,0,3,2,0,3,2,0,1,1,1,1,1,1 0,0,0,3,2,3,3,0,1,1,1,1,1,1 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,5,1,2,2,12,3,0,1,1,1,0,1,0 0,0,1,2,2,8,3,0,0,1,1,2,1,0 0,0,1,2,2,4,1,0,1,1,1,2,1,0 1,3,3,2,0,1,2,0,1,1,1,0,1,1 1,5,1,2,0,4,2,0,1,1,1,0,1,0 1,0,0,3,0,0,2,0,1,1,1,0,1,1 2,0,1,2,1,8,5,0,0,1,1,2,1,0 1,0,0,3,0,4,2,0,1,1,1,0,1,1 0,0,2,1,0,2,2,0,1,1,1,0,1,0 0,0,1,2,2,3,3,0,1,1,1,0,1,0 0,0,3,2,2,4,1,0,0,1,1,0,1,0 2,1,0,3,0,3,2,0,1,1,1,0,1,0 0,0,3,2,2,1,1,0,1,1,1,0,1,0 1,0,1,2,1,3,5,0,0,1,1,1,1,1 0,0,0,3,2,4,3,0,1,1,1,2,1,0 0,0,3,2,0,6,2,0,1,1,1,0,1,0 0,0,2,1,2,2,1,2,1,1,1,2,1,0 1,1,3,2,0,4,2,0,1,1,1,2,1,0 0,0,0,3,2,3,3,0,1,1,1,0,1,0 1,0,1,2,2,2,1,0,1,1,1,0,1,0 0,6,3,2,2,1,1,4,1,1,1,0,1,0 0,0,3,2,1,2,5,0,0,1,1,1,1,0 2,0,1,2,0,5,2,0,1,1,1,2,1,0 0,0,1,2,2,4,3,4,1,1,1,1,1,0 0,2,1,2,2,4,3,0,1,1,1,2,1,0 1,0,3,2,0,4,0,0,0,1,1,0,1,1 0,0,3,2,3,10,5,4,0,1,1,1,1,0 1,1,12,1,2,1,3,0,1,1,1,2,1,0 1,2,1,2,1,4,3,0,1,1,1,0,1,0 2,0,0,3,0,1,2,0,1,1,1,1,1,1 0,0,1,2,2,4,1,4,1,1,1,0,1,0 1,0,3,2,4,3,3,0,0,1,1,2,1,0 1,2,10,3,0,3,2,0,1,1,1,0,1,1 1,0,9,1,5,6,3,3,1,1,1,1,1,0 1,0,3,2,0,7,2,4,1,1,1,1,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,1 0,0,0,3,0,2,0,0,0,1,1,2,1,0 1,0,4,3,0,4,2,0,1,1,1,1,1,1 0,0,1,2,2,3,1,0,1,1,1,0,1,0 1,0,3,2,0,2,2,0,1,1,1,1,1,1 1,0,10,3,0,3,2,0,1,1,1,0,1,1 0,0,7,1,0,9,0,0,0,1,1,1,1,0 1,0,0,3,0,5,2,0,1,1,1,0,1,1 1,1,14,0,0,10,2,0,1,1,1,2,1,0 1,0,3,2,0,1,2,4,1,1,1,0,1,0 1,2,0,3,0,3,2,0,1,1,1,1,1,1 0,4,0,3,2,0,3,4,1,1,1,1,1,1 0,0,0,3,2,8,1,0,0,1,1,2,1,0 0,0,1,2,2,2,3,0,0,1,1,0,1,0 1,2,3,2,0,3,2,0,1,1,1,1,1,1 0,3,1,2,0,12,2,0,1,1,1,1,1,0 2,5,2,1,4,2,5,0,0,1,1,2,1,1 0,0,3,2,0,9,2,0,1,1,1,0,1,0 0,0,3,2,5,0,1,4,1,1,1,0,1,0 1,0,3,2,3,1,5,0,1,1,1,0,1,0 1,3,1,2,0,4,2,0,1,1,1,0,1,0 0,0,3,2,1,8,3,0,0,1,1,0,1,0 1,0,8,0,0,10,2,0,1,1,1,0,1,0 3,0,11,0,0,10,2,4,1,1,1,2,1,0 1,0,1,2,0,3,2,0,1,1,1,0,1,0 3,1,4,3,0,5,2,0,1,1,1,1,1,1 1,4,0,3,0,5,0,0,0,1,1,0,1,1 1,0,2,1,0,1,2,0,1,1,1,0,1,0 0,0,0,3,0,4,0,0,0,1,1,0,1,1 0,0,1,2,2,8,3,0,0,1,1,2,1,0 1,0,5,2,3,2,5,4,0,1,1,2,1,0 1,3,1,2,1,8,5,0,0,1,1,0,1,0 1,0,5,2,0,5,0,4,0,1,1,0,1,1 1,0,3,2,2,0,5,4,0,1,1,2,1,0 2,2,3,2,1,1,3,0,1,1,1,0,1,0 0,0,10,3,2,5,3,4,1,1,1,2,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,1 1,4,10,3,0,5,0,0,0,1,1,2,1,1 1,0,1,2,0,0,2,0,1,1,1,0,1,1 1,0,7,1,5,7,5,4,1,1,1,1,1,0 1,1,10,3,0,4,2,0,1,1,1,0,1,1 0,0,5,2,1,7,3,0,0,1,1,1,1,0 0,0,3,2,1,4,5,4,0,1,1,0,1,0 2,1,0,3,1,2,3,0,0,1,1,2,1,0 0,0,5,2,0,4,2,0,1,1,1,1,1,1 0,0,0,3,2,5,3,0,1,1,1,0,1,0 1,0,0,3,1,3,1,0,1,1,1,1,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 1,1,12,1,3,7,3,0,1,1,1,0,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,3,2,2,8,5,0,0,1,1,0,1,0 0,0,0,3,2,5,1,0,0,1,1,0,1,1 0,0,5,2,1,5,5,0,0,1,1,2,1,0 0,0,3,2,2,3,3,0,1,1,1,1,1,0 2,0,1,2,0,0,2,0,1,1,1,0,1,1 1,0,1,2,2,1,1,0,1,1,1,0,1,0 1,0,0,3,2,4,3,0,1,1,1,0,1,0 1,0,1,2,1,11,5,0,0,1,1,2,1,0 1,4,4,3,0,5,2,0,1,1,1,1,1,1 1,0,0,3,0,3,2,4,1,1,1,0,1,1 1,0,1,2,0,2,2,0,1,1,1,1,1,0 1,0,3,2,0,4,2,0,1,1,1,0,1,1 2,0,3,2,0,3,2,0,1,1,1,0,1,0 1,0,1,2,1,4,3,0,0,1,1,2,1,0 0,0,0,3,1,2,5,3,0,1,1,0,1,0 2,4,3,2,0,1,2,0,1,1,1,0,1,0 2,0,4,3,2,5,3,0,1,1,1,1,1,0 2,0,0,3,0,4,2,0,1,1,1,0,1,1 0,0,12,1,2,1,3,0,1,1,1,0,1,0 0,0,0,3,0,3,2,0,1,1,1,1,1,1 0,0,0,3,0,7,2,0,1,1,1,1,1,1 1,5,3,2,0,4,2,0,1,1,1,0,1,1 2,0,6,2,0,1,2,0,1,1,1,1,1,1 2,0,10,3,0,5,2,0,1,1,1,1,1,1 0,0,1,2,0,1,2,0,1,1,1,0,1,0 1,0,3,2,4,1,3,0,0,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,1 1,0,1,2,0,1,2,4,1,1,1,0,1,0 1,0,4,3,1,4,3,0,1,1,1,1,1,0 0,0,1,2,2,8,1,0,1,1,1,2,1,0 0,0,3,2,0,6,2,4,1,1,1,1,1,0 2,1,4,3,0,9,2,0,1,1,1,2,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,1 0,0,10,3,0,4,2,1,1,1,1,1,1,1 0,0,1,2,1,6,1,0,1,1,1,0,1,0 0,0,3,2,2,1,3,4,0,1,1,1,1,0 1,0,6,2,1,1,5,0,1,1,1,1,1,1 0,1,1,2,0,3,2,0,1,1,1,1,1,0 1,3,6,2,3,8,3,4,1,1,1,0,1,0 2,1,1,2,1,10,3,0,0,1,1,2,1,0 1,0,0,3,0,1,2,0,1,1,1,1,1,1 2,0,3,2,0,5,2,0,1,1,1,0,1,0 1,0,3,2,2,8,1,0,0,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,6,2,0,3,2,0,1,1,1,0,1,0 0,0,0,3,0,3,2,0,1,1,1,1,1,0 0,0,3,2,2,2,5,0,0,1,1,2,1,0 1,3,1,2,0,8,2,0,1,1,1,1,1,0 0,4,0,3,2,12,3,0,1,1,1,0,1,0 1,2,1,2,1,4,3,0,1,1,1,1,1,1 1,0,0,3,1,9,3,0,1,1,1,0,1,0 3,0,3,2,4,2,3,0,0,1,1,2,1,0 0,3,1,2,2,2,3,0,0,1,1,2,1,0 1,3,4,3,0,5,2,0,1,1,1,1,1,1 0,0,3,2,2,3,3,0,0,1,1,2,1,0 1,0,0,3,0,5,2,0,1,1,1,0,1,1 2,0,3,2,4,11,3,0,0,1,1,2,1,0 2,3,10,3,0,8,2,0,1,1,1,0,1,1 0,0,0,3,0,4,2,4,1,1,1,0,1,1 0,0,0,3,0,1,2,0,1,1,1,0,1,1 1,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,0,3,2,0,1,0,0,1,1,0,1,0 1,0,1,2,1,8,1,0,0,1,1,0,1,0 0,0,3,2,2,6,4,0,1,1,1,0,1,0 1,0,3,2,0,4,0,0,0,1,1,0,1,0 1,4,10,3,0,5,2,0,1,1,1,1,1,1 0,0,1,2,2,3,1,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,2,9,3,0,1,1,1,0,1,0 1,4,1,2,1,8,5,0,0,1,1,0,1,0 2,1,3,2,3,2,3,4,1,1,1,1,1,0 1,0,3,2,0,7,2,0,1,1,1,1,1,0 0,0,3,2,5,1,4,0,1,1,1,0,1,0 1,1,5,2,1,1,3,0,1,1,1,0,1,0 1,0,6,2,0,4,2,0,1,1,1,1,1,1 2,0,3,2,2,2,3,4,1,1,1,1,1,0 1,0,10,3,0,5,2,0,1,1,1,0,1,1 2,1,3,2,0,9,2,0,1,1,1,0,1,0 0,0,1,2,2,2,3,0,1,1,1,2,1,0 0,6,3,2,2,6,1,0,1,1,1,0,1,0 0,0,3,2,2,7,3,0,1,1,1,1,1,0 0,0,10,3,0,5,2,1,1,1,1,0,1,0 2,0,3,2,1,1,3,0,1,1,1,1,1,0 1,0,3,2,0,2,2,0,1,1,1,1,1,0 0,0,1,2,0,4,2,0,1,1,1,1,1,0 0,0,3,2,2,3,3,0,0,1,1,0,1,0 1,0,12,1,4,7,3,4,1,1,1,0,1,0 0,0,0,3,2,4,3,0,0,1,1,0,1,0 0,1,1,2,2,1,3,0,1,1,1,2,1,0 2,1,10,3,1,3,3,0,1,1,1,1,1,0 0,1,3,2,0,1,2,0,1,1,1,0,1,0 1,2,13,3,0,5,2,4,1,1,1,1,1,1 1,1,3,2,0,4,2,0,1,1,1,1,1,0 0,1,2,1,2,1,3,0,1,1,1,1,1,1 0,0,3,2,1,1,3,0,1,1,1,1,1,0 0,0,0,3,2,8,3,0,1,1,1,0,1,1 0,2,0,3,2,4,3,0,1,1,1,0,1,0 1,0,5,2,0,2,2,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,1,2,1,3,5,0,0,1,1,0,1,0 1,0,3,2,4,7,5,0,0,1,1,2,1,0 2,0,3,2,0,4,2,0,1,1,1,0,1,1 2,1,3,2,0,2,2,0,1,1,1,0,1,0 1,1,3,2,5,1,3,0,1,1,1,0,1,0 1,0,3,2,0,5,0,0,0,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,3,2,1,7,5,0,1,1,1,0,1,0 1,0,3,2,2,3,3,0,0,1,1,2,1,0 0,0,3,2,2,10,3,0,1,1,1,2,1,0 1,0,5,2,0,4,2,0,1,1,1,1,1,1 1,5,13,3,0,5,2,0,1,1,1,1,1,1 0,0,1,2,2,6,1,4,1,1,1,0,1,0 0,0,0,3,0,3,0,0,0,1,1,1,1,0 1,4,10,3,2,5,3,0,0,1,1,0,1,0 1,2,3,2,0,3,2,0,1,1,1,1,1,1 1,1,1,2,2,2,3,0,0,1,1,2,1,0 0,0,0,3,2,5,3,0,1,1,1,0,1,0 1,3,3,2,1,1,3,0,1,1,1,0,1,0 0,3,10,3,0,10,2,4,1,1,1,0,1,0 0,2,3,2,0,3,2,4,1,1,1,0,1,1 0,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,10,3,0,5,2,0,1,1,1,1,1,0 1,4,3,2,1,2,1,4,0,1,1,0,1,0 1,3,5,2,0,2,2,0,1,1,1,0,1,1 0,0,3,2,2,2,3,0,1,1,1,2,1,0 1,0,6,2,0,5,2,0,1,1,1,0,1,1 1,2,13,3,1,4,3,0,1,1,1,1,1,1 0,0,0,3,0,3,2,0,1,1,1,0,1,1 0,0,6,2,2,1,3,0,1,1,1,0,1,0 2,0,3,2,0,8,2,0,1,1,1,0,1,0 1,3,0,3,0,5,2,0,1,1,1,0,1,1 1,0,3,2,0,10,2,0,1,1,1,0,1,0 0,0,1,2,2,8,1,0,1,1,1,2,1,0 1,0,6,2,0,1,2,0,1,1,1,0,1,0 1,0,3,2,0,4,2,0,1,1,1,0,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,1 2,0,2,1,0,1,2,0,1,1,1,0,1,0 0,0,3,2,2,10,3,4,1,1,1,0,1,0 2,4,10,3,1,5,3,0,1,1,1,0,1,1 0,0,0,3,2,3,3,0,1,1,1,1,1,0 1,0,6,2,0,7,2,0,1,1,1,0,1,0 1,5,10,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,0,6,2,0,1,1,1,1,1,0 1,4,3,2,0,8,0,1,0,1,1,0,1,1 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,7,1,3,8,3,0,1,1,1,1,1,0 0,0,1,2,0,5,2,0,1,1,1,0,1,0 1,0,2,1,0,6,2,0,1,1,1,0,1,0 0,0,0,3,0,3,2,0,1,1,1,1,1,1 1,0,0,3,5,5,4,1,0,1,1,2,1,1 1,4,10,3,1,5,3,0,0,1,1,0,1,0 1,0,3,2,1,4,3,0,0,1,1,0,1,0 0,0,7,1,2,2,1,0,1,1,1,2,1,0 0,0,8,0,2,1,1,0,1,1,1,0,1,0 1,0,1,2,0,8,2,0,1,1,1,0,1,1 1,1,0,3,0,3,2,0,1,1,1,1,1,1 1,2,0,3,4,5,5,0,0,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,1 1,5,3,2,1,4,3,0,1,1,1,0,1,0 0,4,5,2,0,1,2,0,1,1,1,1,1,0 1,0,12,1,2,1,1,0,1,1,1,2,1,0 1,3,13,3,3,5,5,4,0,1,1,2,1,1 0,0,1,2,2,8,3,0,0,1,1,0,1,0 1,0,4,3,0,5,2,0,1,1,1,1,1,1 1,1,3,2,0,9,2,0,1,1,1,1,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,1 2,0,8,0,0,1,2,0,1,1,1,0,1,0 1,0,0,3,5,1,3,4,1,1,1,0,1,0 1,1,10,3,2,4,3,4,1,1,1,2,1,0 1,0,6,2,0,0,2,0,1,1,1,0,1,0 1,0,3,2,2,2,1,4,1,1,1,2,1,0 0,0,1,2,0,8,2,4,1,1,1,0,1,0 1,1,3,2,0,9,2,0,1,1,1,1,1,0 0,0,3,2,2,2,3,0,0,1,1,2,1,0 0,0,7,1,2,2,1,0,0,1,1,1,1,0 1,0,3,2,2,1,3,0,1,1,1,0,1,0 0,0,1,2,2,8,3,0,0,1,1,2,1,0 1,0,3,2,2,7,3,0,0,1,1,0,1,0 0,0,6,2,0,1,2,0,1,1,1,1,1,0 1,4,1,2,1,4,3,0,1,1,1,1,1,0 0,0,5,2,2,3,1,0,0,1,1,2,1,0 1,0,3,2,2,4,3,0,1,1,1,1,1,1 1,4,3,2,1,8,3,0,0,1,1,2,1,0 1,2,5,2,0,5,2,0,1,1,1,1,1,1 0,0,3,2,2,1,1,0,1,1,1,0,1,0 0,0,3,2,1,8,1,0,1,1,1,0,1,0 2,1,3,2,0,3,2,0,1,1,1,1,1,1 1,0,3,2,0,1,2,0,1,1,1,1,1,0 0,0,3,2,2,2,1,0,1,1,1,0,1,0 1,0,0,3,0,5,0,0,0,1,1,2,1,1 0,3,4,3,0,5,2,0,1,1,1,1,1,1 1,5,3,2,1,10,3,0,1,1,1,1,1,0 0,0,3,2,0,7,2,4,1,1,1,1,1,0 0,0,5,2,0,1,2,0,1,1,1,1,1,0 1,0,1,2,0,1,2,0,1,1,1,1,1,1 2,0,1,2,1,1,3,0,1,1,1,0,1,0 0,0,3,2,2,9,1,0,1,1,1,0,1,0 0,0,0,3,0,8,1,2,0,1,1,2,1,0 0,0,3,2,0,8,2,0,1,1,1,0,1,0 0,0,5,2,2,8,1,0,0,1,1,2,1,0 0,0,1,2,2,1,3,0,1,1,1,0,1,0 1,0,0,3,1,3,4,0,0,1,1,2,1,0 0,0,9,1,0,7,2,0,1,1,1,0,1,0 2,0,1,2,4,2,5,0,0,1,1,2,1,0 1,1,3,2,2,9,5,0,1,1,1,1,1,0 2,0,8,0,5,7,3,0,1,1,1,0,1,0 1,0,3,2,0,1,0,0,0,1,1,0,1,1 1,0,3,2,0,1,2,0,1,1,1,1,1,1 1,0,10,3,2,5,3,0,1,1,1,1,1,1 2,5,13,3,0,5,2,0,1,1,1,0,1,1 0,0,1,2,2,3,1,0,0,1,1,0,1,0 0,0,10,3,0,7,3,0,1,1,1,0,1,0 0,0,3,2,2,8,3,0,0,1,1,0,1,0 1,0,0,3,1,5,5,0,0,1,1,1,1,0 1,0,11,0,5,9,3,0,1,1,1,2,1,0 0,0,3,2,2,4,5,0,0,1,1,0,1,0 0,0,2,1,0,10,2,0,1,1,1,0,1,1 0,0,12,1,0,7,2,0,1,1,1,0,1,0 0,0,3,2,2,8,3,0,0,1,1,0,1,0 0,0,3,2,2,2,1,0,0,1,1,2,1,0 0,0,8,0,0,10,2,0,1,1,1,2,1,0 2,1,3,2,1,4,3,0,1,1,1,1,1,0 1,0,3,2,2,8,3,0,0,1,1,2,1,0 1,4,10,3,0,5,2,4,1,1,1,2,1,1 1,4,2,1,2,2,5,0,0,1,1,2,1,0 1,0,3,2,5,7,5,0,0,1,1,0,1,0 0,0,2,1,2,3,1,0,1,1,1,2,1,0 0,0,1,2,2,4,3,0,1,1,1,1,1,0 0,0,1,2,0,3,2,0,1,1,1,0,1,1 1,0,3,2,1,2,3,4,1,1,1,0,1,0 0,0,1,2,2,5,1,0,1,1,1,1,1,0 0,0,5,2,2,5,1,0,0,1,1,0,1,0 1,1,0,3,0,5,2,0,1,1,1,2,1,0 2,1,1,2,0,3,2,0,1,1,1,0,1,1 1,0,3,2,0,3,2,0,1,1,1,0,1,0 0,0,0,3,2,8,1,0,0,1,1,0,1,0 0,0,3,2,2,3,1,0,0,1,1,2,1,0 0,0,3,2,2,6,4,0,1,1,1,2,1,0 0,1,3,2,0,4,2,0,1,1,1,1,1,0 0,0,1,2,2,8,1,0,0,1,1,0,1,0 0,5,3,2,2,2,1,0,0,1,1,2,1,0 1,5,0,3,0,5,4,0,1,1,1,0,1,0 0,3,3,2,2,8,3,1,1,1,1,0,1,0 2,1,6,2,0,1,2,0,1,1,1,0,1,1 1,0,6,2,0,4,2,0,1,1,1,1,1,1 1,5,0,3,1,5,3,0,1,1,1,0,1,0 2,0,3,2,0,1,2,0,1,1,1,0,1,1 0,0,1,2,1,4,3,4,1,1,1,0,1,0 2,0,3,2,0,8,2,0,1,1,1,1,1,1 1,5,0,3,2,8,4,0,0,1,1,0,1,0 1,0,0,3,0,4,2,1,1,1,1,0,1,0 1,0,4,3,0,5,2,0,1,1,1,1,1,1 1,0,3,2,0,10,2,0,1,1,1,0,1,0 2,0,0,3,0,5,2,0,1,1,1,1,1,1 0,0,3,2,2,8,1,0,0,1,1,0,1,0 1,0,3,2,4,4,3,4,0,1,1,2,1,0 0,0,3,2,2,2,1,0,1,1,1,0,1,0 0,0,3,2,5,7,1,0,0,1,1,0,1,0 1,0,3,2,0,0,0,0,0,1,1,0,1,0 0,1,1,2,2,9,1,0,1,1,1,2,1,0 0,0,5,2,2,8,3,0,0,1,1,0,1,1 1,0,2,1,2,6,4,4,0,1,1,0,1,0 1,3,0,3,0,6,2,0,1,1,1,1,1,0 2,0,1,2,0,3,2,0,1,1,1,1,1,0 3,0,8,0,0,3,2,0,1,1,1,2,1,1 3,0,0,3,0,4,0,0,0,1,1,0,1,1 2,3,3,2,0,8,2,0,1,1,1,2,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,2,3,3,0,1,1,1,1,1,0 0,0,3,2,2,1,3,0,1,1,1,2,1,0 0,0,9,1,2,6,1,4,0,1,1,1,1,0 0,0,1,2,2,2,1,4,1,1,1,1,1,0 0,3,0,3,2,5,1,0,1,1,1,2,1,0 0,0,3,2,2,8,1,0,0,1,1,2,1,0 1,3,5,2,1,8,5,1,1,1,1,0,1,0 0,4,3,2,2,2,5,4,0,1,1,2,1,0 1,4,12,1,0,6,2,0,1,1,1,0,1,1 2,1,3,2,0,9,2,0,1,1,1,2,1,0 2,0,12,1,0,3,2,0,1,1,1,0,1,0 0,0,0,3,1,3,3,2,1,1,1,1,1,1 0,4,3,2,2,2,1,0,0,1,1,1,1,0 2,0,10,3,0,5,2,0,1,1,1,0,1,1 0,0,1,2,0,5,2,0,1,1,1,0,1,0 0,0,3,2,1,1,3,0,1,1,1,0,1,0 0,0,3,2,2,3,1,4,0,1,1,1,1,0 2,0,5,2,1,8,3,0,1,1,1,0,1,0 0,1,5,2,0,8,0,0,0,1,1,2,1,1 0,0,1,2,2,8,1,0,0,1,1,2,1,0 0,0,1,2,0,0,2,0,1,1,1,0,1,0 2,0,1,2,0,8,2,0,1,1,1,0,1,0 0,0,1,2,2,4,3,0,0,1,1,2,1,0 0,0,0,3,0,3,2,0,1,1,1,0,1,1 0,0,1,2,0,5,2,0,1,1,1,2,1,1 0,0,9,1,0,1,2,0,1,1,1,0,1,0 1,0,1,2,0,0,2,0,1,1,1,1,1,1 3,0,12,1,4,8,3,0,0,1,1,2,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 1,0,0,3,2,1,3,0,1,1,1,0,1,0 2,0,3,2,1,2,3,0,0,1,1,0,1,0 2,0,10,3,1,8,3,0,0,1,1,1,1,0 0,0,0,3,2,5,1,0,1,1,1,0,1,0 2,0,1,2,4,8,3,0,0,1,1,2,1,0 2,0,12,1,4,3,3,0,0,1,1,2,1,0 0,1,3,2,2,2,3,0,0,1,1,2,1,0 0,0,3,2,2,7,5,0,1,1,1,1,1,0 0,0,1,2,2,8,1,0,0,1,1,0,1,0 0,5,3,2,2,2,1,4,1,1,1,1,1,0 1,1,3,2,0,3,2,0,1,1,1,1,1,0 0,0,12,1,0,1,2,0,1,1,1,0,1,0 1,5,13,3,3,5,5,0,0,1,1,0,1,1 2,0,6,2,0,4,2,0,1,1,1,0,1,0 1,0,12,1,3,8,5,0,1,1,1,0,1,0 0,0,3,2,0,6,2,0,1,1,1,1,1,0 2,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,0,7,2,0,1,1,1,1,1,0 0,3,3,2,2,8,1,0,0,1,1,2,1,0 0,4,1,2,0,10,2,0,1,1,1,0,1,0 2,5,13,3,2,4,3,0,0,1,1,1,1,1 1,0,8,0,0,9,2,0,1,1,1,2,1,0 2,1,1,2,1,4,3,0,1,1,1,1,1,0 0,0,3,2,0,8,0,0,0,1,1,2,1,0 0,0,0,3,2,3,1,4,0,1,1,2,1,0 1,0,4,3,0,5,2,0,1,1,1,1,1,1 1,0,3,2,0,10,2,0,1,1,1,0,1,1 2,0,1,2,0,1,2,0,1,1,1,0,1,1 0,0,1,2,2,5,3,0,0,1,1,1,1,0 0,1,1,2,2,4,3,4,1,1,1,1,1,0 2,1,3,2,1,5,3,0,0,1,1,2,1,0 1,4,0,3,0,5,2,0,1,1,1,0,1,1 0,0,3,2,2,1,3,0,1,1,1,0,1,0 1,0,8,0,0,9,2,0,1,1,1,0,1,0 2,0,0,3,1,5,5,0,0,1,1,0,1,0 1,0,10,3,1,5,1,0,0,1,1,0,1,0 0,0,3,2,3,2,5,0,0,1,1,1,1,1 0,0,3,2,0,12,2,1,1,1,1,0,1,0 1,0,1,2,0,3,2,0,1,1,1,0,1,1 0,0,3,2,2,2,1,0,1,1,1,2,1,0 0,0,3,2,0,1,2,0,1,1,1,1,1,0 2,1,1,2,0,4,2,0,1,1,1,1,1,1 0,0,1,2,2,3,3,0,0,1,1,2,1,0 1,0,1,2,0,10,2,0,1,1,1,1,1,0 1,0,0,3,1,10,1,4,1,1,1,0,1,0 2,0,1,2,2,12,3,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,3,2,1,3,3,0,0,1,1,0,1,0 0,0,1,2,2,4,1,1,1,1,1,0,1,0 1,0,9,1,0,4,2,0,1,1,1,1,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 3,1,3,2,0,3,2,0,1,1,1,1,1,0 1,0,3,2,2,4,3,0,0,1,1,0,1,0 0,0,1,2,0,7,0,0,0,1,1,0,1,0 2,4,3,2,0,9,2,0,1,1,1,0,1,0 1,0,3,2,0,6,2,0,1,1,1,1,1,1 1,0,1,2,1,8,3,0,0,1,1,0,1,0 0,0,12,1,2,2,4,0,0,1,1,0,1,0 0,0,1,2,2,2,1,0,1,1,1,0,1,0 0,1,7,1,2,5,3,0,1,1,1,2,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,3,2,3,6,3,3,1,1,1,2,1,0 1,4,3,2,0,1,2,0,1,1,1,0,1,0 1,0,0,3,0,1,2,0,1,1,1,0,1,0 2,0,3,2,4,7,4,4,0,1,1,0,1,0 2,1,3,2,0,9,2,0,1,1,1,1,1,0 2,2,3,2,4,2,5,0,0,1,1,2,1,0 1,3,1,2,0,4,2,4,1,1,1,0,1,1 0,0,1,2,0,5,2,0,1,1,1,1,1,1 0,0,0,3,2,5,3,0,1,1,1,0,1,0 1,0,0,3,1,4,5,0,0,1,1,0,1,0 1,0,1,2,1,2,1,0,0,1,1,1,1,0 2,0,3,2,4,2,5,0,0,1,1,0,1,0 0,0,0,3,2,8,1,1,0,1,1,2,1,0 0,5,10,3,2,5,3,0,0,1,1,0,1,0 0,5,0,3,3,4,3,0,1,1,1,1,1,0 1,0,3,2,0,3,2,0,1,1,1,2,1,0 1,0,5,2,0,3,0,0,0,1,1,0,1,0 1,0,3,2,1,8,3,0,0,1,1,0,1,0 1,0,0,3,2,3,3,0,1,1,1,1,1,1 1,0,1,2,4,8,5,4,0,1,1,1,1,0 0,0,8,0,0,3,2,0,1,1,1,0,1,0 2,0,3,2,1,1,3,0,1,1,1,0,1,0 0,0,3,2,2,6,3,0,1,1,1,0,1,0 1,0,5,2,0,4,2,4,1,1,1,1,1,1 2,0,3,2,0,1,2,0,1,1,1,0,1,1 2,0,8,0,1,7,5,4,0,1,1,0,1,0 0,0,3,2,2,2,3,4,0,1,1,0,1,0 1,0,3,2,0,2,2,0,1,1,1,0,1,0 0,0,3,2,2,8,3,4,1,1,1,0,1,0 2,0,1,2,3,3,3,0,0,1,1,0,1,0 1,1,0,3,0,4,2,1,1,1,1,1,1,1 1,0,3,2,0,1,2,0,1,1,1,1,1,0 1,1,1,2,1,6,1,0,0,1,1,0,1,0 1,4,1,2,5,4,5,4,0,1,1,2,1,0 0,5,0,3,2,5,3,0,0,1,1,1,1,0 0,0,3,2,2,7,1,0,1,1,1,0,1,0 0,0,3,2,5,2,5,4,0,1,1,2,1,0 1,0,1,2,0,1,2,0,1,1,1,1,1,1 1,0,3,2,1,7,3,0,1,1,1,0,1,0 1,0,3,2,0,8,0,0,0,1,1,0,1,1 1,0,3,2,2,4,3,0,0,1,1,1,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,2,1,2,8,3,0,0,1,1,0,1,0 1,4,1,2,0,8,2,0,1,1,1,0,1,1 0,1,3,2,2,1,3,0,1,1,1,1,1,1 0,0,1,2,2,8,1,4,0,1,1,2,1,0 0,3,0,3,2,4,3,0,1,1,1,0,1,0 0,0,5,2,2,5,1,0,0,1,1,0,1,0 2,0,3,2,1,3,4,0,0,1,1,2,1,0 0,2,6,2,2,3,3,0,1,1,1,1,1,0 2,0,3,2,4,3,3,0,0,1,1,2,1,1 0,0,2,1,2,2,1,0,1,1,1,2,1,0 2,0,8,0,0,12,2,0,1,1,1,0,1,0 1,0,3,2,1,8,5,0,0,1,1,0,1,0 1,2,1,2,0,3,2,0,1,1,1,1,1,1 2,0,4,3,2,5,4,0,0,1,1,1,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,1 2,0,10,3,0,3,2,0,1,1,1,1,1,1 1,5,3,2,2,12,3,0,1,1,1,0,1,1 1,0,1,2,0,8,0,0,0,1,1,0,1,0 1,0,1,2,2,8,3,0,0,1,1,1,1,0 0,0,1,2,2,6,1,0,1,1,1,0,1,0 1,1,3,2,0,0,2,0,1,1,1,1,1,0 0,0,3,2,3,8,1,0,0,1,1,2,1,0 2,4,0,3,4,5,3,0,0,1,1,1,1,0 0,0,3,2,2,1,3,0,1,1,1,0,1,0 0,0,1,2,0,5,2,0,1,1,1,1,1,1 1,0,0,3,2,4,3,0,0,1,1,2,1,0 0,0,0,3,0,7,2,0,1,1,1,1,1,0 2,0,3,2,5,2,5,0,0,1,1,2,1,0 0,0,3,2,2,7,3,1,1,1,1,0,1,0 1,0,3,2,0,4,2,0,1,1,1,0,1,0 0,0,3,2,2,6,3,0,1,1,1,2,1,0 2,5,3,2,0,1,2,0,1,1,1,0,1,0 1,0,1,2,1,10,3,0,1,1,1,1,1,0 0,1,2,1,0,10,2,0,1,1,1,1,1,0 1,0,1,2,1,4,5,0,0,1,1,1,1,0 1,0,0,3,1,10,3,0,1,1,1,0,1,0 2,0,11,0,0,6,2,0,1,1,1,2,1,0 1,0,0,3,2,5,3,0,1,1,1,2,1,0 0,0,0,3,0,5,2,0,1,1,1,2,1,1 0,0,1,2,2,4,3,0,1,1,1,1,1,0 1,5,1,2,0,8,0,0,0,1,1,0,1,1 1,1,13,3,0,5,2,0,1,1,1,1,1,0 0,0,1,2,2,2,1,0,1,1,1,2,1,0 0,5,8,0,2,0,5,0,0,1,1,2,1,0 1,0,9,1,0,8,0,0,0,1,1,0,1,0 1,0,3,2,1,7,3,0,1,1,1,1,1,0 2,0,1,2,1,7,3,0,1,1,1,1,1,0 0,0,1,2,2,5,3,0,0,1,1,0,1,0 1,0,12,1,5,8,5,4,0,1,1,2,1,0 1,0,1,2,1,4,5,0,0,1,1,1,1,0 2,5,0,3,0,5,0,0,0,1,1,2,1,1 2,4,0,3,0,5,0,0,0,1,1,1,1,1 0,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,2,7,1,0,1,1,1,0,1,0 0,0,12,1,2,3,1,0,0,1,1,2,1,0 1,0,1,2,1,5,5,0,0,1,1,2,1,0 1,0,1,2,1,6,3,0,1,1,1,0,1,0 0,0,3,2,0,6,2,0,1,1,1,1,1,0 0,3,0,3,2,0,3,0,1,1,1,1,1,0 2,0,3,2,1,6,3,0,1,1,1,0,1,0 1,0,1,2,1,6,3,0,1,1,1,1,1,1 0,0,3,2,0,4,2,0,1,1,1,1,1,0 0,5,0,3,2,5,3,0,0,1,1,0,1,0 1,0,5,2,0,10,2,0,1,1,1,1,1,0 1,0,0,3,0,6,2,0,1,1,1,0,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,1 0,0,1,2,2,2,1,0,1,1,1,2,1,0 0,3,0,3,2,13,3,0,1,1,1,0,1,0 2,0,1,2,0,8,0,0,0,1,1,2,1,0 2,0,10,3,0,5,2,0,1,1,1,0,1,1 2,0,8,0,0,1,2,0,1,1,1,0,1,0 0,0,1,2,0,9,2,0,1,1,1,0,1,0 1,0,3,2,0,10,2,0,1,1,1,0,1,1 0,5,1,2,1,8,5,4,1,1,1,0,1,0 0,0,1,2,1,2,1,0,0,1,1,2,1,0 2,4,0,3,1,1,3,4,1,1,1,2,1,0 0,0,3,2,2,3,3,0,1,1,1,1,1,0 0,0,3,2,0,10,2,0,1,1,1,1,1,0 1,0,3,2,0,12,2,0,1,1,1,0,1,0 0,0,12,1,2,2,1,4,1,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 1,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,2,8,1,0,0,1,1,0,1,0 0,0,9,1,2,2,1,0,0,1,1,2,1,0 1,0,5,2,1,10,3,4,1,1,1,0,1,0 0,4,0,3,2,8,4,4,0,1,1,0,1,0 2,0,10,3,2,2,3,0,0,1,1,2,1,0 0,0,3,2,2,7,1,4,0,1,1,0,1,0 1,0,5,2,0,7,2,0,1,1,1,0,1,0 2,0,8,0,4,3,4,0,0,1,1,2,1,0 2,1,1,2,0,9,2,0,1,1,1,0,1,1 0,0,3,2,0,7,4,3,0,1,1,2,1,0 1,3,10,3,2,5,3,0,1,1,1,0,1,0 0,0,3,2,2,2,3,0,1,1,1,2,1,0 1,0,10,3,0,3,2,0,1,1,1,0,1,0 1,0,6,2,1,0,3,0,0,1,1,0,1,0 0,2,3,2,2,8,1,0,0,1,1,2,1,0 1,0,12,1,1,7,3,0,0,1,1,2,1,0 0,0,1,2,2,7,1,1,1,1,1,2,1,0 1,0,10,3,2,3,3,0,1,1,1,1,1,1 1,0,0,3,2,3,3,0,1,1,1,1,1,0 1,0,3,2,2,6,3,0,0,1,1,0,1,0 1,1,1,2,1,3,3,0,0,1,1,0,1,0 0,0,3,2,0,8,2,0,1,1,1,0,1,0 0,0,2,1,0,7,1,0,0,1,1,0,1,0 2,0,3,2,0,10,2,0,1,1,1,2,1,0 2,3,3,2,4,8,5,0,0,1,1,0,1,0 0,0,0,3,0,3,2,0,1,1,1,0,1,0 0,1,7,1,0,1,2,0,1,1,1,0,1,0 0,0,3,2,3,1,3,0,1,1,1,0,1,0 2,2,1,2,0,3,2,0,1,1,1,1,1,1 1,0,3,2,0,4,2,4,1,1,1,1,1,1 1,0,3,2,0,10,2,0,1,1,1,1,1,0 1,0,3,2,0,3,2,0,1,1,1,1,1,1 1,0,0,3,2,5,3,0,1,1,1,1,1,1 2,0,8,0,0,10,2,0,1,1,1,0,1,0 1,0,0,3,1,4,5,0,0,1,1,1,1,1 0,0,1,2,2,7,3,0,1,1,1,0,1,1 1,0,3,2,3,8,5,0,0,1,1,2,1,0 1,0,0,3,0,5,2,0,1,1,1,0,1,1 1,0,6,2,1,0,3,0,1,1,1,0,1,0 1,1,4,3,0,5,2,0,1,1,1,1,1,1 1,0,10,3,0,5,2,0,1,1,1,0,1,1 2,0,3,2,1,8,4,2,0,1,1,2,1,0 1,0,1,2,0,6,2,4,1,1,1,0,1,1 2,4,3,2,0,2,2,0,1,1,1,0,1,0 2,0,3,2,0,1,2,0,1,1,1,0,1,1 1,0,8,0,0,4,2,2,1,1,1,1,1,0 0,0,0,3,2,5,3,0,0,1,1,2,1,0 0,0,3,2,2,9,1,4,1,1,1,2,1,0 1,3,3,2,2,4,5,4,0,1,1,0,1,0 2,0,0,3,0,4,2,0,1,1,1,0,1,1 0,0,2,1,2,8,3,0,0,1,1,2,1,0 1,0,0,3,2,4,3,0,1,1,1,0,1,1 1,0,3,2,2,8,3,0,0,1,1,0,1,0 0,0,0,3,2,5,3,1,0,1,1,0,1,0 0,0,6,2,2,0,1,0,0,1,1,2,1,0 0,0,10,3,2,8,3,0,1,1,1,0,1,0 0,0,2,1,2,3,5,0,1,1,1,2,1,0 2,0,8,0,4,2,5,2,0,1,1,2,1,0 2,0,3,2,0,3,2,0,1,1,1,0,1,0 0,0,3,2,2,9,1,0,1,1,1,0,1,0 0,5,1,2,2,8,4,0,0,1,1,2,1,0 1,0,3,2,0,5,2,0,1,1,1,0,1,0 0,0,1,2,2,8,4,0,1,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,1 1,0,1,2,0,7,2,0,1,1,1,0,1,1 0,0,1,2,0,1,2,0,1,1,1,0,1,1 0,0,3,2,0,7,2,0,1,1,1,1,1,0 1,4,0,3,1,5,3,0,1,1,1,2,1,0 0,0,1,2,0,8,2,0,1,1,1,1,1,0 2,0,7,1,0,2,2,0,1,1,1,0,1,0 0,0,10,3,2,5,3,0,1,1,1,0,1,0 0,0,3,2,2,3,1,2,1,1,1,0,1,0 0,0,0,3,2,3,3,0,0,1,1,1,1,0 1,0,3,2,2,6,3,0,1,1,1,0,1,0 0,0,3,2,2,2,4,3,1,1,1,0,1,0 1,0,1,2,0,4,0,0,0,1,1,2,1,1 0,0,1,2,2,6,1,0,1,1,1,2,1,0 0,0,3,2,2,7,3,0,1,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,3,2,2,3,1,4,1,1,1,0,1,0 0,1,2,1,2,9,1,4,1,1,1,0,1,0 0,1,1,2,2,1,3,0,1,1,1,0,1,0 2,0,7,1,0,1,2,4,1,1,1,0,1,1 0,0,2,1,2,3,1,0,1,1,1,2,1,0 2,0,3,2,0,1,2,0,1,1,1,0,1,1 0,0,3,2,0,7,2,4,1,1,1,0,1,0 1,0,10,3,2,5,3,0,1,1,1,0,1,0 0,0,3,2,3,7,5,0,0,1,1,0,1,0 0,0,1,2,2,2,1,0,1,1,1,2,1,0 1,1,3,2,2,1,3,0,1,1,1,2,1,0 1,0,3,2,0,7,2,4,1,1,1,0,1,1 2,0,7,1,2,2,3,4,1,1,1,1,1,0 0,0,6,2,2,7,3,0,1,1,1,0,1,0 1,3,3,2,0,7,2,0,1,1,1,0,1,0 2,0,1,2,0,1,2,0,1,1,1,0,1,1 1,1,1,2,0,9,2,0,1,1,1,1,1,0 1,0,6,2,2,1,3,0,1,1,1,1,1,0 0,0,6,2,1,4,3,0,1,1,1,1,1,1 1,1,3,2,3,2,4,0,0,1,1,2,1,0 2,1,0,3,0,4,2,0,1,1,1,1,1,0 0,0,3,2,0,1,2,0,1,1,1,1,1,0 1,0,5,2,0,3,2,0,1,1,1,0,1,0 0,2,4,3,0,5,2,0,1,1,1,1,1,1 1,0,6,2,1,1,3,0,1,1,1,2,1,0 1,0,3,2,0,8,2,0,1,1,1,1,1,0 0,0,3,2,1,10,3,0,1,1,1,0,1,0 0,0,7,1,2,1,1,0,1,1,1,0,1,0 2,1,5,2,0,3,2,0,1,1,1,1,1,0 2,0,3,2,0,4,0,0,0,1,1,2,1,1 0,0,3,2,1,6,5,0,1,1,1,2,1,0 1,0,1,2,0,3,2,0,1,1,1,1,1,0 2,0,2,1,4,0,5,0,0,1,1,2,1,0 0,0,12,1,5,1,5,0,1,1,1,0,1,0 0,0,3,2,2,8,3,0,0,1,1,1,1,0 1,0,3,2,3,8,3,0,1,1,1,0,1,0 1,1,0,3,0,1,2,0,1,1,1,0,1,1 2,0,0,3,0,4,2,0,1,1,1,1,1,1 0,4,1,2,2,12,1,0,1,1,1,0,1,0 1,0,3,2,0,3,2,0,1,1,1,1,1,0 1,2,5,2,0,4,2,0,1,1,1,1,1,1 2,4,10,3,4,5,3,0,0,1,1,0,1,0 0,3,0,3,2,5,1,0,0,1,1,0,1,0 1,1,4,3,0,5,2,0,1,1,1,1,1,1 1,1,4,3,0,5,2,0,1,1,1,1,1,1 2,0,8,0,4,2,3,4,0,1,1,2,1,0 0,0,6,2,2,10,1,0,1,1,1,1,1,0 2,0,1,2,0,5,2,0,1,1,1,0,1,0 1,0,6,2,0,4,2,0,1,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,0 1,0,3,2,1,3,3,0,0,1,1,2,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,1,2,1,5,3,4,1,1,1,0,1,1 0,0,0,3,2,3,3,0,0,1,1,0,1,0 0,0,6,2,2,1,1,0,1,1,1,1,1,0 0,0,3,2,2,6,1,0,1,1,1,0,1,0 2,0,6,2,0,4,2,0,1,1,1,0,1,0 1,0,3,2,0,4,2,0,1,1,1,0,1,1 0,0,3,2,0,8,0,0,0,1,1,0,1,1 1,1,5,2,0,3,2,0,1,1,1,0,1,1 2,0,9,1,0,5,2,0,1,1,1,0,1,1 1,0,5,2,0,7,2,0,1,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,1 0,4,0,3,0,5,2,0,1,1,1,0,1,0 1,0,3,2,1,3,3,0,1,1,1,1,1,0 0,0,3,2,2,12,1,0,1,1,1,0,1,0 1,0,1,2,0,7,2,0,1,1,1,1,1,0 0,0,9,1,2,8,3,0,0,1,1,2,1,0 1,0,3,2,0,7,2,0,1,1,1,1,1,1 0,0,3,2,2,8,1,0,1,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,0 0,0,10,3,1,4,1,0,0,1,1,1,1,1 3,1,3,2,4,4,3,0,1,1,1,2,1,0 0,0,1,2,0,0,2,0,1,1,1,0,1,1 1,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,4,8,5,0,0,1,1,0,1,0 0,0,3,2,0,8,0,4,0,1,1,0,1,1 1,0,3,2,0,1,2,0,1,1,1,1,1,0 0,0,1,2,2,2,3,0,1,1,1,2,1,0 1,0,3,2,0,0,2,0,1,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 0,5,10,3,2,5,3,0,1,1,1,1,1,0 0,0,2,1,2,2,1,0,0,1,1,2,1,0 0,0,0,3,2,4,3,0,0,1,1,1,1,0 1,4,3,2,1,8,5,4,0,1,1,0,1,0 0,0,3,2,3,6,3,0,1,1,1,0,1,0 0,0,0,3,2,5,1,0,0,1,1,2,1,0 0,0,7,1,2,2,1,4,1,1,1,2,1,0 0,0,3,2,2,2,1,4,1,1,1,1,1,0 0,0,3,2,2,6,3,4,1,1,1,0,1,0 1,0,1,2,0,3,2,0,1,1,1,0,1,1 2,0,3,2,1,7,3,4,0,1,1,0,1,0 1,0,1,2,1,3,4,0,0,1,1,2,1,0 2,4,1,2,4,2,3,0,0,1,1,0,1,0 2,0,3,2,0,8,2,0,1,1,1,0,1,0 0,0,6,2,0,1,2,0,1,1,1,1,1,0 1,0,0,3,0,4,2,1,1,1,1,0,1,1 1,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,2,1,1,0,1,1,1,0,1,0 1,4,0,3,0,4,2,4,1,1,1,0,1,0 1,3,6,2,0,1,2,4,1,1,1,0,1,1 0,0,6,2,2,3,3,0,1,1,1,1,1,0 1,0,10,3,0,5,0,0,0,1,1,0,1,0 1,0,13,3,1,5,3,0,1,1,1,1,1,0 1,1,0,3,0,3,2,0,1,1,1,1,1,0 1,0,10,3,0,5,2,1,1,1,1,1,1,0 1,0,3,2,0,8,0,0,0,1,1,0,1,1 1,1,3,2,2,9,3,0,1,1,1,1,1,0 0,5,0,3,2,5,1,0,1,1,1,1,1,0 1,0,1,2,0,5,0,0,0,1,1,0,1,0 2,0,1,2,4,3,3,0,0,1,1,2,1,0 1,0,1,2,0,4,0,0,0,1,1,0,1,1 1,0,6,2,1,5,3,0,1,1,1,1,1,0 0,0,1,2,2,4,3,0,1,1,1,1,1,0 2,0,3,2,4,4,3,0,0,1,1,2,1,1 1,5,0,3,0,5,2,0,1,1,1,2,1,0 2,0,3,2,2,8,4,0,0,1,1,0,1,0 1,0,3,2,1,8,3,0,0,1,1,2,1,0 2,0,10,3,0,3,2,0,1,1,1,0,1,0 0,0,5,2,2,3,1,0,0,1,1,0,1,0 2,0,0,3,0,3,2,0,1,1,1,1,1,1 1,0,3,2,2,5,3,0,1,1,1,0,1,0 0,0,2,1,3,11,5,0,0,1,1,2,1,0 0,0,0,3,2,5,1,0,0,1,1,2,1,0 1,0,3,2,2,8,5,4,0,1,1,0,1,0 0,0,10,3,2,5,3,4,1,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,1,1,0 0,1,3,2,0,1,2,0,1,1,1,1,1,0 0,0,0,3,2,3,1,0,0,1,1,0,1,0 0,0,0,3,2,11,3,0,0,1,1,0,1,0 2,4,3,2,3,12,4,4,0,1,1,0,1,0 1,0,0,3,0,8,2,0,1,1,1,2,1,0 2,0,14,0,3,2,4,0,0,1,1,2,1,0 2,0,9,1,0,2,0,0,0,1,1,0,1,0 1,0,6,2,1,0,5,0,0,1,1,0,1,0 0,0,14,0,0,7,2,0,1,1,1,0,1,0 1,0,3,2,1,6,3,0,1,1,1,0,1,0 0,1,2,1,1,6,3,0,1,1,1,2,1,0 0,4,10,3,0,5,2,4,1,1,1,0,1,0 1,0,1,2,0,2,2,0,1,1,1,1,1,0 2,0,1,2,0,6,2,0,1,1,1,2,1,1 1,0,5,2,4,5,5,0,0,1,1,2,1,0 0,0,3,2,0,3,0,0,0,1,1,0,1,0 1,0,3,2,0,10,2,0,1,1,1,0,1,0 0,0,0,3,0,5,2,3,1,1,1,0,1,0 2,1,0,3,1,4,3,0,1,1,1,1,1,0 0,0,3,2,1,2,5,4,1,1,1,0,1,0 0,0,0,3,2,4,3,0,0,1,1,0,1,0 1,0,1,2,1,8,3,0,0,1,1,1,1,0 0,0,3,2,2,2,1,0,1,1,1,0,1,0 0,0,0,3,0,5,2,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,0 0,0,2,1,2,1,1,0,0,1,1,2,1,0 0,0,3,2,1,3,3,0,0,1,1,2,1,0 1,0,0,3,0,1,2,0,1,1,1,0,1,0 1,4,5,2,0,12,2,0,1,1,1,1,1,1 0,0,3,2,2,2,3,4,1,1,1,0,1,0 2,0,10,3,2,4,3,0,1,1,1,0,1,0 0,0,0,3,1,4,3,0,0,1,1,1,1,1 1,4,0,3,3,5,3,4,1,1,1,2,1,0 0,0,0,3,2,8,1,0,0,1,1,2,1,0 0,0,3,2,2,6,5,0,1,1,1,1,1,0 1,0,3,2,1,8,5,0,0,1,1,1,1,0 0,0,8,0,2,7,4,0,0,1,1,0,1,0 1,3,1,2,5,8,3,4,1,1,1,0,1,0 0,0,3,2,2,2,1,0,0,1,1,2,1,0 0,0,3,2,2,1,3,0,1,1,1,1,1,0 2,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,0,10,2,0,1,1,1,0,1,0 0,1,6,2,0,1,2,0,1,1,1,1,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 0,5,1,2,2,5,1,0,1,1,1,2,1,0 1,1,0,3,0,3,2,0,1,1,1,0,1,1 2,0,12,1,0,10,2,0,1,1,1,1,1,0 1,0,1,2,0,8,2,4,1,1,1,0,1,0 1,0,3,2,0,8,2,0,1,1,1,2,1,0 1,0,3,2,0,6,2,0,1,1,1,0,1,0 1,0,0,3,2,4,3,0,1,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,1,1,1 1,0,0,3,0,3,2,0,1,1,1,0,1,1 1,0,3,2,0,10,2,0,1,1,1,2,1,0 0,0,3,2,1,1,4,4,0,1,1,1,1,0 1,3,5,2,1,4,3,0,0,1,1,0,1,0 1,2,4,3,0,5,2,0,1,1,1,1,1,1 2,0,3,2,1,8,5,2,0,1,1,1,1,0 1,0,3,2,2,7,1,0,1,1,1,0,1,0 2,0,3,2,1,8,3,0,0,1,1,0,1,0 2,0,2,1,0,10,2,0,1,1,1,0,1,0 0,1,9,1,2,1,3,4,1,1,1,2,1,0 0,0,0,3,0,0,2,0,1,1,1,0,1,1 1,0,3,2,2,2,5,0,1,1,1,0,1,0 2,5,3,2,0,4,2,0,1,1,1,0,1,1 0,0,1,2,2,4,3,4,0,1,1,0,1,0 0,0,2,1,2,3,3,0,0,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,0 0,0,3,2,0,1,2,3,1,1,1,0,1,0 0,0,1,2,2,8,1,0,1,1,1,2,1,0 1,0,0,3,2,8,1,0,1,1,1,0,1,0 1,0,3,2,1,2,5,0,0,1,1,0,1,0 2,1,6,2,2,4,3,0,1,1,1,2,1,1 1,0,12,1,0,4,2,0,1,1,1,0,1,0 0,0,5,2,2,1,3,0,1,1,1,0,1,0 0,0,3,2,2,6,3,0,1,1,1,1,1,0 1,5,10,3,2,5,1,0,0,1,1,2,1,0 0,0,3,2,2,4,3,0,0,1,1,1,1,0 1,0,12,1,1,2,4,0,0,1,1,2,1,0 1,1,0,3,0,3,2,0,1,1,1,1,1,0 0,0,0,3,2,4,1,1,0,1,1,0,1,0 1,1,10,3,1,4,5,0,0,1,1,0,1,0 0,0,6,2,0,6,2,0,1,1,1,0,1,1 1,0,3,2,1,8,5,0,0,1,1,2,1,0 0,0,11,0,0,9,2,0,1,1,1,1,1,0 0,0,3,2,0,2,2,0,1,1,1,0,1,0 1,0,3,2,0,3,0,0,0,1,1,2,1,0 0,0,1,2,2,8,3,0,0,1,1,0,1,0 2,0,0,3,0,5,2,0,1,1,1,0,1,1 1,3,3,2,4,4,3,0,0,1,1,2,1,0 0,0,3,2,0,3,0,0,0,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,2,1,1 2,0,1,2,0,5,2,0,1,1,1,1,1,0 1,5,10,3,0,5,2,0,1,1,1,0,1,1 0,0,2,1,2,2,1,0,1,1,1,1,1,0 2,4,8,0,4,2,3,0,0,1,1,2,1,0 1,1,2,1,0,10,2,0,1,1,1,0,1,0 1,3,6,2,1,9,3,0,0,1,1,0,1,0 0,0,0,3,2,5,3,0,1,1,1,0,1,0 0,1,1,2,2,4,3,0,1,1,1,1,1,1 0,0,2,1,2,3,1,0,0,1,1,2,1,0 1,4,3,2,0,10,2,4,1,1,1,0,1,1 2,0,13,3,2,5,3,0,1,1,1,1,1,0 0,0,5,2,2,2,1,4,1,1,1,1,1,0 1,0,3,2,1,2,1,0,0,1,1,2,1,0 2,1,4,3,0,5,2,0,1,1,1,2,1,1 1,0,3,2,2,1,3,0,1,1,1,1,1,0 2,4,7,1,0,2,2,0,1,1,1,0,1,0 1,0,12,1,1,2,5,0,0,1,1,2,1,0 0,1,8,0,0,1,2,0,1,1,1,0,1,0 0,0,1,2,5,8,1,4,0,1,1,1,1,0 0,0,1,2,2,1,1,0,1,1,1,0,1,0 0,0,0,3,2,4,3,0,0,1,1,0,1,0 1,2,13,3,0,5,2,0,1,1,1,1,1,1 0,0,3,2,0,1,2,0,1,1,1,1,1,0 1,0,0,3,0,10,2,0,1,1,1,0,1,1 1,5,0,3,0,4,2,0,1,1,1,2,1,0 1,0,0,3,0,9,2,0,1,1,1,0,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,1,2,0,10,2,0,1,1,1,1,1,1 0,0,0,3,2,6,1,0,1,1,1,0,1,0 2,1,0,3,0,4,2,0,1,1,1,1,1,1 0,0,1,2,2,5,3,0,1,1,1,1,1,0 2,0,14,0,4,2,4,1,0,1,1,2,1,0 0,0,7,1,3,2,3,0,1,1,1,0,1,0 1,0,10,3,0,3,2,0,1,1,1,1,1,1 3,0,15,0,2,11,3,1,0,1,1,1,1,0 1,0,1,2,1,3,5,0,0,1,1,1,1,0 2,0,3,2,0,3,2,0,1,1,1,2,1,0 1,3,3,2,2,8,5,4,0,1,1,0,1,0 0,0,13,3,0,5,2,0,1,1,1,1,1,1 0,5,1,2,2,5,3,0,0,1,1,2,1,0 0,0,0,3,2,5,4,0,0,1,1,0,1,0 1,0,14,0,0,10,2,2,1,1,1,0,1,0 0,0,1,2,2,8,1,0,0,1,1,2,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,0 1,5,3,2,0,8,0,0,0,1,1,0,1,0 1,0,3,2,1,8,3,0,0,1,1,2,1,0 0,5,3,2,0,12,2,0,1,1,1,2,1,0 0,1,3,2,0,1,2,0,1,1,1,1,1,0 0,0,3,2,0,4,2,0,1,1,1,2,1,0 3,1,1,2,5,1,3,0,1,1,1,2,1,0 2,0,2,1,4,6,5,0,0,1,1,0,1,0 1,0,1,2,1,1,3,0,1,1,1,1,1,1 0,0,3,2,2,2,1,0,1,1,1,2,1,0 1,0,3,2,0,8,2,0,1,1,1,0,1,1 0,4,0,3,2,5,3,0,0,1,1,0,1,0 2,0,10,3,0,3,2,0,1,1,1,1,1,0 1,0,10,3,0,8,2,0,1,1,1,1,1,0 0,4,1,2,2,8,5,4,0,1,1,0,1,0 1,0,3,2,1,2,4,4,0,1,1,2,1,0 1,2,13,3,0,5,2,0,1,1,1,1,1,0 0,0,0,3,2,4,3,0,1,1,1,0,1,0 1,2,1,2,0,4,2,0,1,1,1,0,1,1 1,0,3,2,4,2,5,1,0,1,1,2,1,0 0,0,9,1,2,2,3,0,0,1,1,2,1,0 0,0,8,0,0,6,2,0,1,1,1,0,1,0 1,0,1,2,0,3,2,4,1,1,1,2,1,0 0,0,2,1,2,2,4,4,0,1,1,2,1,0 0,0,3,2,2,1,4,0,1,1,1,0,1,0 0,0,3,2,2,10,1,0,1,1,1,1,1,0 0,0,3,2,2,8,1,0,1,1,1,2,1,0 1,0,3,2,1,2,5,0,0,1,1,0,1,0 0,0,1,2,2,8,1,0,0,1,1,0,1,0 1,0,0,3,0,5,2,0,1,1,1,0,1,1 0,0,3,2,2,6,1,0,1,1,1,0,1,0 0,1,3,2,0,4,2,0,1,1,1,1,1,0 0,0,10,3,0,5,2,0,1,1,1,1,1,0 2,1,4,3,0,5,2,0,1,1,1,2,1,1 0,0,1,2,2,4,1,4,0,1,1,0,1,0 0,0,1,2,2,8,1,0,0,1,1,0,1,0 0,0,6,2,1,1,3,0,1,1,1,0,1,0 1,0,3,2,4,7,5,0,0,1,1,1,1,0 0,0,0,3,2,1,1,0,1,1,1,0,1,0 0,0,3,2,4,2,1,0,0,1,1,0,1,0 0,0,5,2,2,2,3,4,0,1,1,0,1,0 0,0,1,2,1,3,5,0,0,1,1,1,1,0 0,0,3,2,2,6,5,4,0,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 0,0,7,1,0,1,2,3,1,1,1,0,1,0 1,1,8,0,2,9,3,0,1,1,1,1,1,0 2,1,3,2,0,1,2,0,1,1,1,2,1,0 0,0,0,3,0,8,0,0,0,1,1,0,1,1 1,0,5,2,0,1,2,0,1,1,1,1,1,0 1,0,1,2,0,7,2,0,1,1,1,0,1,0 0,0,3,2,2,2,1,4,0,1,1,0,1,0 0,4,0,3,2,5,3,0,1,1,1,2,1,0 1,0,15,0,0,7,0,0,0,1,1,0,1,0 0,0,3,2,2,3,1,0,1,1,1,2,1,0 0,0,1,2,2,0,3,1,1,1,1,0,1,0 0,0,6,2,2,1,3,0,1,1,1,0,1,0 0,0,3,2,0,10,2,0,1,1,1,1,1,0 0,0,3,2,3,1,3,0,1,1,1,0,1,0 2,4,3,2,0,2,2,1,1,1,1,2,1,1 0,0,3,2,2,2,1,1,0,1,1,2,1,0 2,0,2,1,0,1,2,0,1,1,1,0,1,0 1,5,3,2,1,12,5,4,0,1,1,0,1,0 0,0,13,3,2,5,3,0,0,1,1,2,1,0 0,0,14,0,2,7,4,0,0,1,1,0,1,0 0,0,3,2,2,2,5,0,0,1,1,2,1,0 1,2,1,2,0,1,2,1,1,1,1,1,1,1 0,0,9,1,0,7,2,0,1,1,1,0,1,0 1,4,10,3,2,5,5,0,0,1,1,0,1,0 0,0,9,1,2,3,1,0,0,1,1,2,1,0 0,0,1,2,0,6,2,0,1,1,1,0,1,0 0,0,3,2,2,4,1,0,1,1,1,0,1,0 0,0,0,3,2,1,3,4,1,1,1,1,1,0 0,0,1,2,2,2,1,4,0,1,1,1,1,0 1,0,0,3,0,5,2,0,1,1,1,0,1,1 1,0,3,2,3,7,3,4,1,1,1,0,1,0 1,5,0,3,1,1,3,0,1,1,1,0,1,0 2,1,0,3,0,5,2,0,1,1,1,2,1,1 0,0,10,3,2,4,5,0,0,1,1,1,1,0 0,0,5,2,1,8,3,4,1,1,1,0,1,0 2,0,1,2,0,4,2,0,1,1,1,1,1,0 1,0,3,2,3,10,5,4,1,1,1,0,1,0 2,1,3,2,0,4,2,0,1,1,1,0,1,1 2,1,8,0,0,1,2,0,1,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,1 0,5,0,3,0,5,2,0,1,1,1,1,1,1 0,0,2,1,2,2,4,0,1,1,1,2,1,0 0,0,7,1,2,1,5,0,1,1,1,0,1,0 0,0,1,2,2,8,3,0,1,1,1,2,1,0 1,4,0,3,0,12,2,4,1,1,1,0,1,1 0,0,5,2,1,8,1,0,0,1,1,0,1,0 3,1,8,0,0,9,2,0,1,1,1,1,1,1 1,1,8,0,0,1,2,0,1,1,1,2,1,0 0,0,2,1,2,8,5,4,1,1,1,2,1,0 1,0,0,3,0,3,2,0,1,1,1,1,1,1 1,0,0,3,0,4,2,0,1,1,1,0,1,1 0,0,1,2,0,6,2,0,1,1,1,0,1,0 1,0,3,2,1,1,1,4,1,1,1,0,1,0 1,0,3,2,0,9,2,0,1,1,1,1,1,0 0,0,0,3,2,0,3,0,1,1,1,2,1,0 1,0,0,3,1,4,5,0,1,1,1,0,1,0 1,1,13,3,0,5,2,0,1,1,1,1,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 1,1,3,2,0,1,2,0,1,1,1,1,1,0 1,5,6,2,0,1,2,0,1,1,1,0,1,0 0,5,1,2,2,5,1,0,0,1,1,2,1,0 1,0,10,3,2,8,3,0,1,1,1,1,1,1 0,0,0,3,2,0,3,1,0,1,1,0,1,0 1,3,0,3,1,4,5,4,0,1,1,1,1,1 1,4,1,2,1,10,3,0,1,1,1,1,1,1 0,0,10,3,0,4,0,0,0,1,1,0,1,0 0,0,3,2,1,8,1,3,0,1,1,1,1,0 2,0,3,2,2,1,3,4,1,1,1,1,1,0 1,0,1,2,0,7,2,0,1,1,1,1,1,0 1,1,4,3,0,5,2,0,1,1,1,0,1,1 0,0,1,2,2,3,3,0,1,1,1,1,1,0 1,0,0,3,0,12,2,0,1,1,1,0,1,0 1,5,0,3,2,5,3,1,0,1,1,2,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,1 0,1,3,2,2,9,3,0,1,1,1,0,1,0 1,0,1,2,0,4,2,0,1,1,1,0,1,0 2,1,3,2,0,9,2,0,1,1,1,1,1,0 1,0,3,2,2,4,5,4,0,1,1,2,1,0 2,4,10,3,0,5,2,0,1,1,1,1,1,1 0,0,0,3,2,4,3,0,0,1,1,0,1,0 1,0,1,2,2,7,3,0,1,1,1,0,1,0 0,2,5,2,0,8,0,0,0,1,1,2,1,0 0,0,1,2,2,8,4,4,1,1,1,2,1,0 1,0,6,2,0,1,2,0,1,1,1,0,1,1 1,5,3,2,1,8,3,0,0,1,1,0,1,0 1,4,0,3,1,4,5,0,0,1,1,0,1,0 0,0,3,2,2,7,3,0,1,1,1,1,1,0 1,0,2,1,3,6,5,0,1,1,1,0,1,0 1,4,0,3,0,5,2,0,1,1,1,0,1,1 0,0,0,3,2,5,1,0,1,1,1,0,1,0 2,0,3,2,0,1,2,0,1,1,1,1,1,0 0,0,3,2,1,2,3,0,0,1,1,2,1,0 0,5,10,3,2,8,3,4,0,1,1,2,1,0 0,0,1,2,2,3,1,0,1,1,1,0,1,0 1,4,0,3,0,12,2,1,1,1,1,0,1,1 1,0,1,2,0,10,2,0,1,1,1,0,1,1 0,1,13,3,0,5,2,0,1,1,1,1,1,1 0,0,0,3,2,4,5,0,0,1,1,2,1,0 0,0,0,3,2,4,3,0,1,1,1,1,1,0 0,0,1,2,2,2,3,0,0,1,1,2,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,1 0,0,0,3,0,3,2,0,1,1,1,0,1,1 0,4,1,2,2,10,1,0,1,1,1,0,1,0 2,0,1,2,0,12,2,0,1,1,1,0,1,0 0,0,2,1,0,9,2,0,1,1,1,1,1,0 1,2,4,3,0,5,2,0,1,1,1,2,1,1 1,1,5,2,0,10,2,0,1,1,1,1,1,1 1,0,3,2,0,10,2,0,1,1,1,1,1,1 1,2,5,2,0,4,2,0,1,1,1,1,1,1 0,0,3,2,0,5,2,0,1,1,1,0,1,0 1,0,12,1,0,1,2,4,1,1,1,0,1,0 1,0,1,2,0,1,2,1,1,1,1,0,1,1 0,0,1,2,2,3,3,0,1,1,1,0,1,0 1,0,3,2,0,8,2,0,1,1,1,0,1,0 0,0,3,2,1,10,3,4,1,1,1,1,1,0 0,0,1,2,2,0,3,0,1,1,1,1,1,0 1,0,1,2,3,10,3,0,1,1,1,2,1,0 0,5,1,2,2,4,1,0,1,1,1,1,1,0 0,1,12,1,0,9,2,0,1,1,1,0,1,0 3,2,0,3,0,4,2,0,1,1,1,1,1,1 1,0,3,2,0,1,2,0,1,1,1,0,1,1 1,0,6,2,0,5,2,0,1,1,1,0,1,1 2,0,1,2,0,4,2,0,1,1,1,0,1,1 0,0,3,2,2,6,3,0,1,1,1,0,1,0 0,0,1,2,2,8,1,0,1,1,1,2,1,0 1,1,1,2,0,1,2,0,1,1,1,2,1,0 0,4,0,3,0,2,2,0,1,1,1,2,1,1 1,1,1,2,0,6,2,0,1,1,1,1,1,1 1,4,3,2,1,5,3,0,0,1,1,0,1,0 0,0,3,2,1,7,3,0,1,1,1,1,1,0 0,0,3,2,0,8,2,0,1,1,1,0,1,0 2,0,3,2,0,1,2,0,1,1,1,0,1,1 1,0,6,2,2,0,1,0,0,1,1,0,1,0 1,5,10,3,0,4,2,0,1,1,1,0,1,0 2,1,1,2,1,4,3,0,1,1,1,1,1,1 1,5,0,3,2,4,1,0,1,1,1,0,1,0 1,2,0,3,0,5,2,0,1,1,1,1,1,1 1,0,10,3,0,5,2,0,1,1,1,0,1,1 1,0,3,2,0,7,2,4,1,1,1,2,1,1 1,0,10,3,0,4,2,0,1,1,1,1,1,1 0,0,1,2,0,7,2,0,1,1,1,0,1,1 0,0,6,2,2,5,1,0,0,1,1,0,1,0 2,1,3,2,1,5,3,0,1,1,1,2,1,0 1,0,0,3,0,4,2,0,1,1,1,0,1,0 0,4,0,3,0,5,2,0,1,1,1,1,1,0 1,0,4,3,0,5,2,0,1,1,1,1,1,0 1,0,3,2,1,10,3,0,1,1,1,1,1,0 0,0,2,1,2,2,1,4,1,1,1,2,1,0 0,0,1,2,2,3,3,0,0,1,1,2,1,0 2,0,1,2,4,3,3,0,0,1,1,2,1,0 1,0,3,2,1,8,5,0,0,1,1,0,1,0 1,0,3,2,2,2,1,0,0,1,1,0,1,0 1,0,3,2,1,3,3,0,1,1,1,1,1,0 2,1,10,3,0,5,2,0,1,1,1,0,1,1 0,0,0,3,2,8,1,0,0,1,1,0,1,0 0,0,1,2,2,6,1,0,1,1,1,0,1,0 1,0,10,3,0,4,2,0,1,1,1,0,1,1 1,1,1,2,0,1,2,0,1,1,1,1,1,0 0,0,1,2,0,3,2,0,1,1,1,1,1,1 0,0,6,2,2,3,3,0,0,1,1,0,1,0 0,5,1,2,2,8,1,0,0,1,1,2,1,0 0,0,3,2,2,3,3,0,1,1,1,1,1,0 0,0,3,2,1,8,3,0,0,1,1,1,1,0 0,0,1,2,0,1,3,0,1,1,1,0,1,0 1,1,3,2,0,1,2,0,1,1,1,2,1,0 1,0,0,3,0,1,2,1,1,1,1,0,1,1 1,0,12,1,0,4,2,0,1,1,1,0,1,0 0,0,0,3,1,4,3,0,0,1,1,0,1,0 0,0,3,2,2,6,3,0,1,1,1,0,1,0 0,0,7,1,0,1,2,0,1,1,1,2,1,0 0,0,12,1,2,2,1,0,0,1,1,2,1,0 1,4,3,2,2,8,5,0,0,1,1,0,1,0 1,0,0,3,0,5,2,0,1,1,1,0,1,0 0,0,1,2,2,7,3,0,0,1,1,2,1,0 1,0,6,2,1,2,3,0,0,1,1,2,1,0 1,2,13,3,0,5,2,0,1,1,1,1,1,1 0,4,3,2,0,2,0,0,0,1,1,2,1,0 0,0,0,3,2,8,3,0,1,1,1,1,1,1 1,0,0,3,1,3,3,0,0,1,1,1,1,0 0,0,3,2,1,6,1,0,1,1,1,2,1,0 0,0,1,2,2,6,4,0,0,1,1,2,1,0 1,0,0,3,5,5,3,0,1,1,1,2,1,1 0,0,3,2,2,8,5,4,0,1,1,0,1,0 2,1,7,1,3,10,3,0,1,1,1,1,1,0 1,0,10,3,0,5,2,0,1,1,1,0,1,1 0,0,3,2,2,10,1,0,1,1,1,0,1,0 0,4,0,3,2,5,3,0,0,1,1,2,1,0 0,0,12,1,2,2,4,0,1,1,1,2,1,0 1,3,1,2,0,4,2,0,1,1,1,0,1,1 1,0,12,1,0,1,2,0,1,1,1,0,1,1 0,0,0,3,0,3,2,0,1,1,1,1,1,1 1,0,6,2,0,1,2,4,1,1,1,0,1,0 2,0,3,2,0,4,2,0,1,1,1,0,1,1 1,0,2,1,4,2,5,4,0,1,1,0,1,0 0,0,0,3,0,5,2,0,1,1,1,0,1,1 0,0,3,2,1,8,5,0,0,1,1,0,1,0 1,0,3,2,2,7,5,4,0,1,1,2,1,0 0,0,3,2,2,10,1,0,1,1,1,0,1,0 0,5,1,2,2,8,3,0,1,1,1,2,1,0 0,0,2,1,3,1,4,0,1,1,1,1,1,0 0,0,6,2,2,2,3,0,1,1,1,0,1,0 1,0,1,2,2,1,5,0,0,1,1,0,1,0 1,0,3,2,1,10,3,0,1,1,1,0,1,0 1,0,3,2,1,4,5,0,0,1,1,0,1,0 0,0,9,1,2,2,1,0,1,1,1,2,1,0 2,0,3,2,4,2,3,0,0,1,1,2,1,0 1,0,3,2,2,8,1,4,0,1,1,0,1,0 1,0,10,3,0,4,2,1,1,1,1,0,1,1 0,4,0,3,2,5,1,0,0,1,1,0,1,0 1,0,1,2,2,4,3,0,1,1,1,0,1,0 0,1,2,1,0,1,2,0,1,1,1,1,1,0 1,0,0,3,0,10,2,0,1,1,1,1,1,1 0,2,0,3,2,4,3,0,1,1,1,1,1,0 1,0,8,0,0,1,2,0,1,1,1,0,1,0 1,0,5,2,0,5,2,0,1,1,1,0,1,1 0,0,3,2,2,7,1,0,1,1,1,0,1,0 0,0,2,1,2,3,1,0,1,1,1,2,1,0 2,2,13,3,0,4,2,0,1,1,1,1,1,1 0,4,0,3,0,12,2,0,1,1,1,1,1,1 1,0,0,3,0,5,2,0,1,1,1,1,1,1 0,5,3,2,2,12,3,0,1,1,1,0,1,0 0,0,1,2,2,3,3,0,0,1,1,0,1,0 1,0,2,1,0,1,2,0,1,1,1,0,1,0 2,0,3,2,2,4,1,0,0,1,1,0,1,0 1,0,6,2,0,4,2,0,1,1,1,1,1,1 1,2,0,3,0,3,2,0,1,1,1,1,1,1 0,0,3,2,2,4,3,0,0,1,1,2,1,0 2,0,10,3,0,5,2,0,1,1,1,2,1,0 2,0,3,2,0,10,2,0,1,1,1,1,1,0 1,4,10,3,0,5,2,0,1,1,1,0,1,1 1,1,3,2,3,2,3,0,0,1,1,2,1,0 1,3,3,2,0,0,2,0,1,1,1,0,1,1 1,0,3,2,0,7,2,0,1,1,1,0,1,1 0,0,1,2,2,8,1,0,1,1,1,0,1,0 0,0,0,3,2,5,3,0,1,1,1,1,1,1 0,0,1,2,0,1,2,0,1,1,1,1,1,0 1,4,0,3,0,5,0,0,0,1,1,0,1,1 1,6,3,2,0,7,0,0,0,1,1,2,1,0 0,0,14,0,3,2,5,0,0,1,1,0,1,0 1,0,6,2,0,8,2,0,1,1,1,0,1,0 0,0,3,2,2,2,1,4,0,1,1,0,1,0 1,4,0,3,1,5,5,0,0,1,1,1,1,0 2,5,3,2,0,0,0,0,0,1,1,0,1,1 0,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,1,2,1,8,5,0,0,1,1,0,1,0 0,0,3,2,2,4,1,0,0,1,1,0,1,0 1,0,1,2,3,8,5,0,0,1,1,2,1,0 1,1,3,2,0,1,2,0,1,1,1,0,1,1 0,0,1,2,2,8,3,0,0,1,1,1,1,0 1,0,3,2,1,8,3,0,0,1,1,0,1,0 0,0,3,2,0,4,0,0,0,1,1,0,1,0 0,0,9,1,2,2,1,0,1,1,1,2,1,0 1,5,0,3,0,4,2,0,1,1,1,0,1,1 0,0,3,2,0,3,2,0,1,1,1,1,1,0 1,0,3,2,2,10,4,0,0,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,3,2,0,1,2,0,1,1,1,0,1,1 0,0,0,3,2,5,3,0,0,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,0 1,0,10,3,2,5,3,0,0,1,1,0,1,0 1,0,1,2,1,0,3,0,1,1,1,0,1,0 0,0,3,2,2,3,1,0,0,1,1,2,1,0 1,0,1,2,1,5,3,0,1,1,1,0,1,0 0,0,12,1,0,1,2,0,1,1,1,0,1,0 1,5,6,2,0,0,2,1,1,1,1,2,1,0 1,0,0,3,2,5,3,0,0,1,1,0,1,0 0,0,3,2,0,6,2,4,1,1,1,0,1,0 0,0,3,2,1,2,3,0,0,1,1,0,1,0 0,0,2,1,2,1,3,2,1,1,1,1,1,1 1,0,0,3,4,5,5,0,0,1,1,1,1,1 1,0,10,3,0,5,2,0,1,1,1,1,1,0 0,0,1,2,0,8,2,0,1,1,1,0,1,0 0,0,3,2,2,10,1,0,1,1,1,0,1,0 1,0,1,2,2,8,1,0,0,1,1,0,1,0 0,0,0,3,2,8,3,0,0,1,1,1,1,0 0,0,9,1,2,7,5,4,0,1,1,0,1,0 0,0,3,2,2,7,1,0,1,1,1,0,1,0 2,0,8,0,4,4,3,0,1,1,1,0,1,1 0,0,3,2,3,2,3,0,1,1,1,0,1,0 0,4,1,2,2,8,5,4,0,1,1,0,1,0 0,0,3,2,2,8,1,0,0,1,1,0,1,0 0,0,3,2,2,2,4,0,1,1,1,2,1,0 2,0,1,2,0,3,2,0,1,1,1,2,1,0 0,0,0,3,0,3,2,0,1,1,1,0,1,0 1,0,0,3,2,3,3,0,1,1,1,1,1,1 1,0,6,2,0,0,2,0,1,1,1,0,1,1 1,0,3,2,1,10,3,0,1,1,1,1,1,0 1,0,6,2,0,8,2,0,1,1,1,0,1,0 1,0,5,2,0,4,2,0,1,1,1,1,1,0 1,0,1,2,0,8,2,0,1,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,0,1,1 0,0,3,2,2,7,1,0,1,1,1,0,1,0 1,0,3,2,2,2,3,0,0,1,1,0,1,0 0,4,10,3,2,5,3,0,0,1,1,0,1,0 1,0,1,2,0,2,2,0,1,1,1,0,1,1 1,0,3,2,1,8,3,0,0,1,1,0,1,0 1,0,1,2,1,6,1,0,1,1,1,0,1,0 1,5,4,3,1,4,3,0,0,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,2,2,1,0,0,1,1,0,1,0 0,0,1,2,0,1,2,0,1,1,1,1,1,0 0,0,3,2,2,1,1,0,1,1,1,0,1,0 0,0,3,2,2,1,5,0,0,1,1,1,1,0 0,0,0,3,2,0,3,4,0,1,1,1,1,0 1,0,1,2,3,3,3,0,1,1,1,1,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 2,0,9,1,0,1,2,0,1,1,1,0,1,0 1,1,10,3,0,3,2,0,1,1,1,1,1,0 0,0,5,2,1,5,3,0,1,1,1,1,1,0 0,3,1,2,2,8,1,4,0,1,1,0,1,0 1,0,1,2,2,2,1,0,1,1,1,1,1,0 0,0,3,2,2,5,1,0,1,1,1,0,1,0 2,4,7,1,0,2,2,0,1,1,1,0,1,0 1,1,0,3,1,3,3,0,1,1,1,1,1,0 2,5,0,3,0,4,2,0,1,1,1,0,1,0 0,0,2,1,2,2,1,0,1,1,1,2,1,0 1,0,3,2,0,4,2,0,1,1,1,1,1,1 0,0,0,3,2,3,1,0,1,1,1,0,1,0 0,0,3,2,3,3,1,0,0,1,1,2,1,0 0,0,2,1,0,1,2,0,1,1,1,2,1,0 3,1,2,1,0,4,2,0,1,1,1,2,1,0 1,0,3,2,1,10,3,0,1,1,1,1,1,0 1,3,0,3,0,8,2,0,1,1,1,1,1,1 1,0,12,1,3,7,1,0,0,1,1,1,1,0 2,0,3,2,0,6,2,0,1,1,1,2,1,0 0,0,5,2,0,0,2,0,1,1,1,1,1,1 2,3,0,3,0,4,2,0,1,1,1,0,1,1 1,1,10,3,0,4,2,0,1,1,1,1,1,1 0,2,13,3,0,5,2,0,1,1,1,2,1,1 0,0,3,2,2,2,3,0,1,1,1,0,1,0 0,0,1,2,2,7,1,0,1,1,1,0,1,0 1,0,1,2,0,3,2,0,1,1,1,1,1,0 0,3,0,3,0,5,2,0,1,1,1,0,1,1 0,4,0,3,0,5,2,0,1,1,1,1,1,0 2,0,3,2,4,2,3,0,0,1,1,2,1,0 1,0,3,2,2,6,1,0,1,1,1,0,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,1 1,0,0,3,0,4,0,0,0,1,1,0,1,1 0,0,0,3,0,4,2,4,1,1,1,1,1,1 0,1,7,1,0,1,2,0,1,1,1,0,1,0 1,0,0,3,0,0,2,0,1,1,1,1,1,1 1,0,6,2,0,2,2,1,1,1,1,1,1,1 0,1,0,3,0,1,2,1,1,1,1,1,1,1 1,0,1,2,0,4,2,0,1,1,1,0,1,0 1,0,1,2,1,8,5,4,0,1,1,0,1,0 0,0,3,2,2,6,4,0,0,1,1,2,1,0 0,0,0,3,2,4,1,0,0,1,1,2,1,0 0,0,3,2,0,1,2,0,1,1,1,1,1,0 1,0,1,2,0,10,2,0,1,1,1,1,1,1 0,0,1,2,0,5,2,0,1,1,1,1,1,0 0,0,12,1,2,6,3,3,1,1,1,0,1,0 1,0,3,2,0,2,2,0,1,1,1,0,1,0 1,1,5,2,1,1,1,2,1,1,1,2,1,0 0,0,12,1,2,7,1,0,1,1,1,0,1,0 1,0,0,3,0,3,2,0,1,1,1,0,1,1 0,0,1,2,2,6,1,0,1,1,1,2,1,0 1,4,0,3,0,5,2,0,1,1,1,0,1,1 0,0,1,2,2,3,1,4,1,1,1,2,1,0 0,0,2,1,2,2,3,0,0,1,1,2,1,0 1,0,0,3,2,4,3,0,1,1,1,1,1,0 2,0,7,1,0,7,2,4,1,1,1,0,1,0 1,0,1,2,2,1,3,0,1,1,1,0,1,0 1,0,5,2,0,5,2,0,1,1,1,0,1,1 0,0,6,2,0,5,0,0,0,1,1,0,1,1 2,0,0,3,0,4,2,0,1,1,1,0,1,1 0,0,1,2,0,10,2,0,1,1,1,0,1,0 0,0,0,3,2,5,3,0,0,1,1,2,1,0 0,0,3,2,2,3,1,0,1,1,1,2,1,0 2,0,3,2,1,8,3,0,0,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,3,2,2,8,1,4,0,1,1,2,1,0 1,0,5,2,0,3,2,0,1,1,1,0,1,1 1,4,1,2,0,10,2,0,1,1,1,0,1,0 0,0,3,2,2,8,5,0,1,1,1,0,1,0 0,0,5,2,1,8,3,4,0,1,1,1,1,0 0,0,11,0,3,6,5,0,1,1,1,2,1,0 1,0,1,2,1,1,3,0,1,1,1,2,1,0 0,0,7,1,0,1,2,0,1,1,1,2,1,0 2,0,1,2,0,4,2,0,1,1,1,1,1,1 0,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,10,3,0,4,2,0,1,1,1,0,1,0 1,0,0,3,0,6,2,0,1,1,1,0,1,0 1,4,10,3,0,5,0,0,0,1,1,1,1,1 1,0,1,2,0,10,2,0,1,1,1,1,1,1 0,0,1,2,5,9,1,0,1,1,1,0,1,0 1,0,8,0,0,10,2,0,1,1,1,0,1,0 1,0,5,2,2,0,3,0,1,1,1,1,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 2,1,0,3,0,4,2,0,1,1,1,2,1,1 0,5,3,2,3,8,5,0,0,1,1,2,1,0 0,0,5,2,0,3,2,0,1,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,1 0,0,0,3,2,8,1,0,0,1,1,0,1,0 1,0,7,1,0,7,0,0,0,1,1,0,1,0 2,0,10,3,0,3,2,0,1,1,1,1,1,1 2,1,8,0,0,9,2,0,1,1,1,1,1,0 2,0,7,1,4,3,5,0,0,1,1,2,1,0 1,0,9,1,0,1,2,0,1,1,1,1,1,0 0,0,3,2,2,1,3,0,1,1,1,0,1,0 2,0,2,1,5,1,3,0,1,1,1,0,1,0 0,0,7,1,2,1,3,0,1,1,1,0,1,0 1,0,0,3,1,3,3,0,1,1,1,0,1,1 0,0,3,2,2,4,1,0,0,1,1,0,1,0 1,0,10,3,0,5,2,0,1,1,1,0,1,1 0,0,6,2,2,1,3,0,1,1,1,1,1,0 1,4,0,3,0,5,0,0,0,1,1,1,1,1 0,0,8,0,0,1,2,0,1,1,1,1,1,0 2,0,3,2,4,8,3,0,0,1,1,2,1,0 0,0,2,1,2,2,1,4,1,1,1,2,1,0 1,0,6,2,0,2,2,0,1,1,1,0,1,0 0,0,1,2,2,1,3,0,1,1,1,1,1,0 0,0,1,2,2,2,1,4,1,1,1,2,1,0 1,1,13,3,2,5,3,0,1,1,1,0,1,1 0,0,9,1,2,6,1,0,1,1,1,0,1,0 1,0,10,3,0,5,2,0,1,1,1,1,1,1 1,0,1,2,0,3,2,0,1,1,1,0,1,1 1,0,0,3,0,8,2,0,1,1,1,1,1,1 1,4,0,3,0,5,0,0,0,1,1,1,1,1 1,0,3,2,0,3,2,0,1,1,1,0,1,0 1,0,12,1,2,9,1,0,1,1,1,0,1,0 3,2,1,2,0,3,2,0,1,1,1,2,1,0 0,0,1,2,2,3,1,4,0,1,1,2,1,0 1,4,1,2,2,5,1,0,1,1,1,0,1,0 0,0,3,2,2,2,3,0,1,1,1,0,1,0 0,0,3,2,2,1,3,0,1,1,1,2,1,0 0,0,3,2,2,8,1,0,0,1,1,0,1,0 0,0,2,1,2,2,1,0,0,1,1,0,1,0 1,0,0,3,0,3,2,0,1,1,1,0,1,1 1,3,1,2,0,4,2,4,1,1,1,0,1,0 1,0,10,3,2,4,3,0,0,1,1,0,1,0 1,0,0,3,0,3,2,0,1,1,1,0,1,1 1,2,10,3,0,9,2,0,1,1,1,1,1,1 0,0,0,3,2,8,1,0,0,1,1,0,1,0 0,0,3,2,2,6,1,0,1,1,1,0,1,0 1,0,4,3,0,4,2,0,1,1,1,0,1,1 0,0,0,3,2,5,1,0,1,1,1,2,1,0 1,0,1,2,0,8,2,0,1,1,1,1,1,1 0,0,3,2,2,12,3,1,1,1,1,0,1,0 1,0,3,2,1,1,1,0,1,1,1,0,1,0 3,2,3,2,4,3,3,0,1,1,1,1,1,1 1,0,6,2,0,0,0,0,0,1,1,2,1,1 0,5,1,2,3,4,1,0,0,1,1,0,1,0 0,0,9,1,0,1,2,0,1,1,1,0,1,0 1,3,6,2,0,0,2,0,1,1,1,0,1,0 1,0,1,2,0,3,2,0,1,1,1,1,1,0 0,0,7,1,2,10,1,0,1,1,1,0,1,0 1,0,5,2,3,2,3,4,0,1,1,0,1,0 0,0,3,2,0,0,2,0,1,1,1,0,1,0 1,0,3,2,2,1,3,0,1,1,1,0,1,0 0,0,6,2,2,8,3,0,0,1,1,0,1,0 0,4,3,2,2,2,1,0,1,1,1,0,1,0 0,0,0,3,0,3,2,0,1,1,1,1,1,1 1,0,1,2,1,5,3,0,1,1,1,1,1,0 0,0,2,1,5,6,5,0,0,1,1,0,1,0 2,5,1,2,0,10,2,0,1,1,1,0,1,0 2,4,1,2,1,4,3,0,0,1,1,0,1,0 2,0,2,1,0,7,2,0,1,1,1,0,1,0 2,3,0,3,0,4,0,0,0,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 2,1,3,2,0,4,2,0,1,1,1,1,1,0 2,2,1,2,0,3,2,0,1,1,1,2,1,1 1,0,10,3,1,4,5,0,1,1,1,1,1,1 0,0,10,3,0,5,2,0,1,1,1,0,1,1 2,1,3,2,2,4,3,4,1,1,1,1,1,1 0,0,1,2,0,5,2,0,1,1,1,0,1,0 2,1,2,1,0,2,0,0,0,1,1,0,1,0 1,0,2,1,4,2,5,0,0,1,1,0,1,0 0,0,5,2,2,4,3,0,1,1,1,1,1,1 1,1,1,2,0,4,2,2,1,1,1,0,1,0 2,0,7,1,0,6,2,0,1,1,1,0,1,0 1,0,6,2,2,0,3,0,0,1,1,0,1,0 0,0,0,3,2,4,1,0,0,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 0,0,1,2,2,3,1,0,0,1,1,2,1,0 0,0,3,2,2,2,1,0,1,1,1,0,1,0 0,0,3,2,0,7,2,0,1,1,1,1,1,0 0,0,3,2,0,8,0,0,0,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,2,1,0 2,3,0,3,2,5,3,0,0,1,1,0,1,0 0,5,6,2,2,5,3,0,0,1,1,0,1,0 0,0,3,2,0,7,2,4,1,1,1,0,1,0 0,0,3,2,2,2,1,0,0,1,1,0,1,0 1,3,0,3,5,0,3,1,1,1,1,0,1,0 0,0,7,1,2,10,3,0,1,1,1,2,1,0 1,1,12,1,4,10,4,0,0,1,1,0,1,0 1,0,3,2,0,3,2,0,1,1,1,0,1,1 2,2,0,3,0,3,2,0,1,1,1,1,1,1 0,0,0,3,2,3,3,0,1,1,1,2,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,1 1,0,3,2,2,7,3,4,0,1,1,0,1,0 0,0,6,2,2,7,1,0,1,1,1,0,1,0 0,0,3,2,2,11,3,0,0,1,1,1,1,0 0,0,6,2,2,8,1,0,0,1,1,2,1,0 1,0,8,0,0,1,2,0,1,1,1,0,1,0 0,0,3,2,0,10,2,0,1,1,1,0,1,1 1,0,3,2,1,8,3,0,0,1,1,0,1,0 1,0,2,1,2,1,1,0,1,1,1,0,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,2,2,1,0,0,1,1,2,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,14,0,2,9,4,0,1,1,1,0,1,0 1,0,3,2,0,0,2,0,1,1,1,0,1,1 1,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,0,3,2,3,1,0,1,1,1,0,1,0 1,0,3,2,0,12,0,4,0,1,1,0,1,0 0,0,3,2,1,7,5,0,0,1,1,2,1,0 0,0,1,2,2,3,1,0,1,1,1,0,1,0 1,0,12,1,3,10,1,0,1,1,1,2,1,0 1,4,5,2,1,0,1,0,1,1,1,0,1,0 2,4,0,3,0,5,2,0,1,1,1,1,1,0 0,0,3,2,1,4,5,0,0,1,1,1,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 0,0,12,1,2,8,1,0,1,1,1,1,1,0 0,0,3,2,2,8,1,0,0,1,1,0,1,0 2,4,1,2,4,8,3,0,0,1,1,2,1,0 0,0,3,2,2,8,5,4,0,1,1,0,1,0 1,0,0,3,0,3,2,1,1,1,1,1,1,1 1,0,0,3,1,8,5,0,0,1,1,0,1,0 1,0,10,3,1,4,5,0,0,1,1,1,1,0 2,0,3,2,4,3,3,0,0,1,1,2,1,0 1,0,3,2,4,7,5,0,0,1,1,0,1,0 1,0,1,2,0,4,2,0,1,1,1,1,1,1 1,1,0,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,0,10,2,0,1,1,1,1,1,0 0,0,1,2,2,3,3,0,1,1,1,0,1,0 1,0,3,2,1,6,3,0,0,1,1,1,1,0 1,0,1,2,0,1,2,0,1,1,1,1,1,1 2,0,1,2,0,10,2,0,1,1,1,1,1,1 0,3,4,3,0,5,0,0,0,1,1,0,1,1 1,0,3,2,1,4,3,0,0,1,1,0,1,0 1,0,10,3,0,4,2,0,1,1,1,0,1,0 0,0,5,2,2,4,3,0,1,1,1,0,1,0 1,0,10,3,0,3,2,0,1,1,1,1,1,1 1,0,3,2,1,3,3,0,1,1,1,1,1,0 0,0,3,2,0,6,2,0,1,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,0 2,0,0,3,0,5,2,0,1,1,1,0,1,1 0,0,1,2,2,3,1,0,0,1,1,2,1,0 0,0,3,2,2,2,1,0,0,1,1,2,1,0 0,3,13,3,2,5,3,2,0,1,1,1,1,1 0,0,0,3,0,2,0,1,0,1,1,1,1,1 1,0,1,2,0,12,2,4,1,1,1,1,1,1 1,2,3,2,0,3,2,0,1,1,1,1,1,0 0,0,7,1,2,1,1,0,1,1,1,2,1,0 0,0,7,1,2,2,3,0,1,1,1,1,1,0 1,0,1,2,1,8,3,0,0,1,1,2,1,0 0,0,3,2,2,11,1,0,0,1,1,2,1,0 0,0,10,3,0,4,2,1,1,1,1,0,1,0 1,1,6,2,0,5,2,0,1,1,1,0,1,0 0,1,3,2,0,1,2,0,1,1,1,1,1,0 1,0,3,2,2,5,3,0,0,1,1,2,1,0 2,4,3,2,4,2,3,0,0,1,1,2,1,0 1,0,0,3,0,5,0,0,0,1,1,2,1,0 1,4,1,2,1,8,5,4,0,1,1,0,1,0 1,0,3,2,1,2,1,4,0,1,1,0,1,0 1,0,0,3,1,5,5,0,0,1,1,1,1,0 1,0,2,1,0,6,2,0,1,1,1,1,1,0 0,0,3,2,2,10,1,0,1,1,1,0,1,0 1,0,0,3,0,8,2,0,1,1,1,0,1,1 1,0,10,3,0,4,2,0,1,1,1,1,1,1 0,0,1,2,0,3,2,0,1,1,1,1,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 1,1,3,2,0,4,0,0,0,1,1,0,1,0 0,0,1,2,1,2,1,0,0,1,1,2,1,0 1,0,0,3,2,8,1,0,0,1,1,0,1,0 1,0,3,2,0,0,2,0,1,1,1,0,1,1 0,0,1,2,2,2,1,0,0,1,1,2,1,0 0,4,0,3,2,6,1,0,1,1,1,0,1,0 1,2,3,2,0,3,2,1,1,1,1,0,1,1 0,0,6,2,2,1,3,0,1,1,1,1,1,0 1,2,1,2,0,4,2,0,1,1,1,1,1,0 1,0,3,2,1,1,3,0,1,1,1,0,1,0 1,4,1,2,0,10,2,0,1,1,1,0,1,0 1,0,6,2,3,3,3,4,1,1,1,1,1,0 1,0,0,3,2,4,3,0,1,1,1,2,1,0 0,0,2,1,2,3,1,0,0,1,1,2,1,0 2,2,4,3,0,5,2,1,1,1,1,1,1,1 2,4,0,3,0,4,2,1,1,1,1,0,1,1 1,0,0,3,1,5,5,0,0,1,1,0,1,0 0,0,1,2,2,3,3,0,1,1,1,2,1,0 1,0,1,2,0,2,0,0,0,1,1,0,1,0 0,0,1,2,2,10,5,0,1,1,1,0,1,0 0,0,0,3,2,8,3,0,1,1,1,0,1,0 1,0,10,3,0,4,2,0,1,1,1,0,1,1 1,0,1,2,1,3,1,0,1,1,1,1,1,0 1,0,0,3,0,5,2,0,1,1,1,0,1,1 2,0,3,2,3,7,3,0,1,1,1,0,1,0 1,4,3,2,1,12,3,0,1,1,1,0,1,0 0,0,0,3,2,3,1,4,1,1,1,2,1,0 0,0,6,2,0,2,2,0,1,1,1,1,1,0 1,0,1,2,1,4,3,0,0,1,1,0,1,1 2,3,3,2,1,8,5,4,0,1,1,0,1,0 2,0,12,1,4,9,5,0,1,1,1,2,1,0 0,0,10,3,2,5,3,0,0,1,1,1,1,0 0,0,1,2,2,8,1,0,0,1,1,0,1,0 0,0,12,1,1,2,3,2,1,1,1,0,1,0 0,0,3,2,2,2,1,0,1,1,1,2,1,0 0,0,3,2,2,6,4,4,1,1,1,0,1,0 0,0,1,2,2,11,1,0,0,1,1,2,1,0 2,0,0,3,0,3,2,0,1,1,1,1,1,1 2,0,3,2,0,4,2,0,1,1,1,1,1,1 2,1,3,2,0,10,2,0,1,1,1,0,1,1 0,0,0,3,5,8,3,0,1,1,1,0,1,0 1,0,0,3,0,9,2,0,1,1,1,1,1,1 0,0,0,3,2,0,1,0,0,1,1,0,1,0 0,0,3,2,1,2,5,0,0,1,1,2,1,0 0,0,1,2,2,2,1,0,1,1,1,2,1,0 0,0,1,2,2,1,1,0,1,1,1,2,1,0 1,0,2,1,0,5,0,0,0,1,1,2,1,1 1,0,1,2,0,3,2,1,1,1,1,1,1,1 1,0,3,2,0,10,2,0,1,1,1,1,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 2,4,1,2,4,8,5,0,0,1,1,0,1,0 2,1,8,0,0,9,2,0,1,1,1,0,1,0 2,0,10,3,1,5,3,0,1,1,1,2,1,0 0,0,1,2,0,0,2,0,1,1,1,0,1,0 1,0,3,2,2,8,5,0,0,1,1,1,1,0 0,4,5,2,0,6,2,0,1,1,1,0,1,0 0,0,1,2,0,10,2,0,1,1,1,1,1,0 1,0,3,2,2,10,3,0,1,1,1,0,1,0 0,0,3,2,2,1,1,0,1,1,1,0,1,0 1,0,1,2,0,1,1,1,1,1,1,0,1,0 0,2,0,3,2,4,1,0,0,1,1,0,1,0 1,0,3,2,0,10,2,0,1,1,1,0,1,0 0,0,3,2,2,6,1,0,1,1,1,0,1,0 1,3,0,3,0,4,2,0,1,1,1,0,1,1 1,0,2,1,0,10,2,0,1,1,1,0,1,0 0,5,0,3,0,4,0,0,0,1,1,2,1,1 2,1,1,2,0,2,2,0,1,1,1,1,1,1 1,4,10,3,1,5,3,0,1,1,1,0,1,0 1,1,1,2,1,1,3,0,1,1,1,1,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 2,4,8,0,0,1,2,0,1,1,1,0,1,0 1,0,1,2,0,8,2,0,1,1,1,0,1,0 0,0,3,2,1,2,3,0,0,1,1,0,1,0 2,0,3,2,1,8,5,0,0,1,1,1,1,0 1,0,8,0,4,7,3,0,0,1,1,0,1,0 0,0,1,2,0,6,2,0,1,1,1,0,1,0 2,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,1,2,0,10,2,0,1,1,1,1,1,1 0,0,0,3,2,5,3,0,0,1,1,1,1,0 1,0,10,3,0,0,2,0,1,1,1,1,1,0 1,2,3,2,0,1,2,0,1,1,1,0,1,1 0,2,3,2,1,8,5,0,0,1,1,0,1,0 1,2,3,2,1,1,5,0,1,1,1,1,1,0 2,4,1,2,1,1,5,0,1,1,1,1,1,0 1,0,3,2,0,3,2,0,1,1,1,1,1,1 0,4,3,2,2,12,5,0,1,1,1,1,1,0 2,0,3,2,0,3,2,0,1,1,1,2,1,1 0,0,0,3,2,8,3,0,1,1,1,0,1,0 0,0,8,0,2,7,5,0,1,1,1,0,1,0 0,0,1,2,2,1,3,0,1,1,1,0,1,0 1,0,6,2,2,2,3,0,0,1,1,1,1,0 0,0,3,2,2,9,1,0,1,1,1,1,1,0 2,3,13,3,1,4,3,0,0,1,1,1,1,1 1,0,14,0,2,11,5,0,0,1,1,2,1,0 0,0,3,2,2,3,3,0,0,1,1,1,1,0 0,0,1,2,3,7,3,0,1,1,1,0,1,0 0,0,3,2,2,2,1,4,1,1,1,2,1,0 2,2,4,3,0,5,2,1,1,1,1,1,1,1 2,5,0,3,1,0,3,0,1,1,1,0,1,0 0,0,0,3,2,4,1,0,1,1,1,1,1,1 0,0,8,0,0,3,4,0,1,1,1,0,1,0 0,0,1,2,0,7,2,0,1,1,1,0,1,0 1,1,2,1,0,4,2,0,1,1,1,1,1,1 1,0,5,2,0,9,2,0,1,1,1,1,1,1 0,0,6,2,2,5,3,0,0,1,1,2,1,0 0,0,3,2,0,1,2,0,1,1,1,2,1,0 1,0,9,1,0,1,2,3,1,1,1,0,1,0 3,1,3,2,0,9,2,1,1,1,1,0,1,0 0,0,3,2,2,2,1,0,1,1,1,0,1,0 0,4,0,3,0,4,2,4,1,1,1,0,1,1 0,0,1,2,0,5,2,0,1,1,1,0,1,0 2,3,3,2,3,8,4,4,0,1,1,2,1,0 2,0,12,1,4,10,3,4,0,1,1,2,1,0 0,0,12,1,0,1,2,0,1,1,1,0,1,0 1,1,10,3,0,5,2,0,1,1,1,1,1,1 0,0,1,2,2,5,3,3,1,1,1,1,1,0 1,0,1,2,1,0,5,0,0,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,2,2,1,0,0,1,1,0,1,0 2,5,1,2,0,4,2,0,1,1,1,0,1,0 0,0,3,2,2,3,5,4,0,1,1,0,1,0 0,1,1,2,1,7,3,0,1,1,1,1,1,0 2,2,10,3,0,4,2,0,1,1,1,1,1,1 2,0,3,2,0,10,2,0,1,1,1,0,1,1 1,0,3,2,0,7,2,0,1,1,1,1,1,0 1,0,3,2,1,8,3,0,0,1,1,1,1,0 0,0,3,2,2,2,1,0,1,1,1,0,1,0 1,1,3,2,0,1,2,0,1,1,1,2,1,0 0,0,3,2,2,2,1,0,1,1,1,2,1,0 2,0,3,2,0,3,2,0,1,1,1,1,1,0 1,0,3,2,0,7,2,0,1,1,1,1,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 0,0,3,2,2,3,1,0,0,1,1,2,1,0 0,0,0,3,2,3,3,0,1,1,1,0,1,0 1,1,3,2,3,2,3,0,0,1,1,2,1,0 1,5,5,2,1,5,5,1,0,1,1,2,1,0 0,0,1,2,2,6,1,0,1,1,1,2,1,0 2,0,3,2,0,2,2,0,1,1,1,0,1,0 0,0,2,1,2,10,1,0,1,1,1,0,1,0 0,0,2,1,0,7,2,0,1,1,1,0,1,0 1,0,1,2,2,4,3,0,0,1,1,1,1,0 0,0,0,3,2,4,3,0,0,1,1,1,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 2,1,13,3,1,4,3,0,0,1,1,2,1,0 0,0,1,2,2,8,4,4,0,1,1,2,1,0 0,0,8,0,2,11,3,0,0,1,1,2,1,0 0,0,3,2,2,2,1,0,1,1,1,2,1,0 0,0,1,2,2,1,1,0,1,1,1,0,1,0 0,4,1,2,0,12,2,0,1,1,1,1,1,0 2,4,10,3,0,12,2,0,1,1,1,2,1,1 1,0,10,3,1,5,5,0,0,1,1,2,1,0 0,0,3,2,2,3,3,0,0,1,1,0,1,0 1,4,4,3,0,5,2,0,1,1,1,0,1,1 0,0,0,3,2,4,3,0,1,1,1,1,1,0 1,0,6,2,3,1,3,0,0,1,1,1,1,0 1,2,3,2,0,3,2,0,1,1,1,1,1,0 1,3,6,2,0,5,2,0,1,1,1,1,1,0 1,5,1,2,1,8,1,0,1,1,1,0,1,0 0,1,1,2,0,5,2,0,1,1,1,2,1,0 1,0,0,3,0,4,2,0,1,1,1,0,1,1 0,0,2,1,2,10,1,0,1,1,1,1,1,0 0,0,3,2,0,3,2,0,1,1,1,0,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,1 1,0,0,3,0,5,2,0,1,1,1,0,1,1 1,0,3,2,0,3,2,0,1,1,1,1,1,0 1,0,3,2,0,3,2,0,1,1,1,1,1,0 1,0,12,1,0,7,2,0,1,1,1,0,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,1 2,0,6,2,0,1,2,0,1,1,1,0,1,1 1,0,0,3,0,5,2,0,1,1,1,0,1,1 0,0,3,2,0,3,2,0,1,1,1,1,1,0 0,0,0,3,2,1,3,0,1,1,1,1,1,1 0,0,3,2,0,10,2,0,1,1,1,0,1,1 1,0,1,2,2,6,1,1,0,1,1,0,1,0 0,0,3,2,1,1,3,0,0,1,1,0,1,0 1,0,3,2,1,2,3,0,0,1,1,1,1,0 1,0,14,0,0,3,2,0,1,1,1,0,1,0 2,0,6,2,0,8,0,0,0,1,1,0,1,0 2,1,1,2,0,4,2,0,1,1,1,0,1,1 1,0,0,3,3,7,5,4,0,1,1,2,1,0 0,0,1,2,2,3,3,0,1,1,1,1,1,0 0,4,3,2,2,12,1,4,0,1,1,0,1,0 1,3,5,2,0,8,2,0,1,1,1,1,1,1 0,0,3,2,2,8,1,4,0,1,1,0,1,0 0,0,1,2,0,6,2,0,1,1,1,2,1,0 0,0,1,2,2,8,1,0,0,1,1,2,1,0 0,0,6,2,2,1,3,0,1,1,1,0,1,0 1,5,3,2,2,10,3,0,1,1,1,1,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,0 1,0,10,3,0,5,2,0,1,1,1,1,1,0 0,3,0,3,2,8,1,0,1,1,1,2,1,0 0,0,0,3,0,4,2,0,1,1,1,0,1,1 0,0,0,3,2,0,3,0,1,1,1,0,1,0 0,0,2,1,0,1,2,0,1,1,1,0,1,0 0,0,3,2,0,0,2,0,1,1,1,0,1,0 1,0,0,3,0,5,2,0,1,1,1,0,1,1 0,0,3,2,0,2,0,0,0,1,1,1,1,0 1,0,1,2,0,10,2,0,1,1,1,0,1,1 1,0,10,3,0,4,2,0,1,1,1,0,1,1 2,0,0,3,0,3,2,0,1,1,1,1,1,1 0,0,3,2,0,3,0,0,0,1,1,2,1,0 1,4,10,3,3,4,5,4,1,1,1,1,1,1 0,1,3,2,0,4,2,0,1,1,1,1,1,0 0,0,1,2,2,1,3,0,1,1,1,0,1,0 0,0,0,3,0,4,2,0,1,1,1,0,1,0 2,0,3,2,0,6,2,0,1,1,1,0,1,0 0,0,3,2,0,10,2,0,1,1,1,0,1,0 0,0,1,2,2,6,1,0,1,1,1,2,1,0 1,1,10,3,0,5,0,0,0,1,1,2,1,1 0,0,1,2,0,3,2,2,1,1,1,0,1,0 1,4,6,2,1,8,5,0,0,1,1,1,1,0 0,0,3,2,2,7,1,0,1,1,1,0,1,0 0,0,1,2,2,1,3,1,1,1,1,1,1,0 0,0,7,1,2,2,1,4,1,1,1,2,1,0 1,0,11,0,0,2,0,0,0,1,1,0,1,0 1,5,3,2,3,8,5,0,0,1,1,2,1,0 0,0,1,2,2,5,1,2,0,1,1,2,1,0 0,0,0,3,2,5,3,0,1,1,1,1,1,1 1,0,10,3,2,3,3,0,1,1,1,1,1,1 1,0,3,2,3,10,4,4,1,1,1,0,1,0 0,0,14,0,0,1,4,0,1,1,1,0,1,0 2,0,3,2,4,8,3,0,0,1,1,0,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,1 1,0,1,2,1,2,3,0,0,1,1,0,1,0 0,0,3,2,1,4,3,0,1,1,1,1,1,0 2,0,3,2,0,9,2,0,1,1,1,2,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,1 0,0,3,2,0,7,2,2,1,1,1,1,1,0 0,0,2,1,2,1,1,0,1,1,1,1,1,0 1,0,3,2,0,0,2,0,1,1,1,0,1,0 0,4,1,2,0,2,0,0,0,1,1,0,1,0 1,0,0,3,1,8,3,0,0,1,1,2,1,0 1,0,2,1,1,8,5,0,0,1,1,2,1,0 1,1,12,1,0,3,2,0,1,1,1,0,1,1 0,0,0,3,2,8,1,0,0,1,1,0,1,0 1,0,7,1,0,2,2,0,1,1,1,0,1,0 2,0,12,1,1,2,5,0,0,1,1,0,1,0 0,3,0,3,2,4,3,0,0,1,1,1,1,0 1,0,0,3,0,5,0,0,0,1,1,2,1,1 1,0,3,2,2,1,3,0,1,1,1,0,1,0 1,0,3,2,0,10,2,0,1,1,1,0,1,0 0,0,3,2,2,10,5,0,1,1,1,1,1,0 1,4,3,2,0,2,0,0,0,1,1,2,1,1 2,0,3,2,1,8,3,0,0,1,1,0,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,0,3,0,3,2,0,1,1,1,0,1,0 0,1,0,3,2,5,4,0,1,1,1,0,1,0 2,0,5,2,1,5,3,4,0,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,10,3,0,5,2,0,1,1,1,1,1,1 0,4,1,2,2,9,1,0,1,1,1,0,1,0 1,0,3,2,0,3,2,0,1,1,1,1,1,0 0,4,3,2,2,8,3,0,0,1,1,2,1,0 1,1,0,3,0,8,0,0,0,1,1,2,1,1 0,0,3,2,0,8,4,0,1,1,1,0,1,0 0,0,3,2,5,3,1,0,0,1,1,2,1,0 1,0,0,3,0,3,2,0,1,1,1,0,1,1 0,4,3,2,0,10,2,0,1,1,1,0,1,0 0,1,3,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,0,3,2,0,1,1,1,0,1,0 1,0,1,2,1,3,1,0,1,1,1,1,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,0 2,1,8,0,2,9,4,0,1,1,1,2,1,0 1,2,3,2,0,1,2,0,1,1,1,1,1,1 1,0,1,2,1,1,3,0,1,1,1,0,1,0 1,3,0,3,0,9,2,0,1,1,1,0,1,1 1,0,3,2,1,2,3,0,1,1,1,0,1,0 0,1,2,1,1,4,5,0,0,1,1,1,1,0 0,0,3,2,1,1,1,0,1,1,1,0,1,0 0,0,0,3,2,5,1,0,0,1,1,2,1,0 2,0,1,2,4,3,3,0,0,1,1,0,1,0 0,0,0,3,0,4,0,0,0,1,1,0,1,0 1,0,11,0,0,12,4,0,1,1,1,0,1,0 1,0,0,3,0,0,2,0,1,1,1,0,1,1 0,0,1,2,2,6,1,1,1,1,1,0,1,0 0,0,3,2,2,1,3,0,1,1,1,0,1,0 0,0,1,2,2,2,5,0,0,1,1,2,1,0 0,0,3,2,2,2,1,4,1,1,1,0,1,0 2,0,1,2,0,0,2,0,1,1,1,2,1,0 1,0,12,1,0,6,2,0,1,1,1,1,1,0 1,0,3,2,0,8,0,0,0,1,1,0,1,1 0,0,12,1,0,4,2,0,1,1,1,0,1,0 0,0,3,2,0,3,2,0,1,1,1,1,1,0 0,5,1,2,1,8,3,0,0,1,1,2,1,0 2,1,1,2,0,3,2,0,1,1,1,1,1,0 0,0,0,3,2,0,1,0,0,1,1,0,1,0 0,0,3,2,2,7,1,3,1,1,1,1,1,0 0,0,1,2,0,3,2,0,1,1,1,1,1,0 0,0,3,2,0,10,2,0,1,1,1,1,1,1 2,2,3,2,0,4,2,0,1,1,1,2,1,0 1,0,3,2,0,7,0,0,0,1,1,0,1,0 1,0,1,2,0,8,0,0,0,1,1,2,1,1 1,4,2,1,2,1,5,0,1,1,1,0,1,0 0,0,1,2,2,2,3,4,0,1,1,2,1,0 0,0,1,2,3,0,5,4,0,1,1,0,1,0 1,0,1,2,1,8,5,0,0,1,1,2,1,0 0,0,8,0,0,2,0,0,0,1,1,0,1,0 1,0,1,2,1,6,3,0,1,1,1,0,1,0 0,0,8,0,2,9,4,3,1,1,1,0,1,0 1,0,1,2,1,3,5,0,0,1,1,0,1,0 2,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,12,1,1,2,5,4,0,1,1,2,1,0 0,0,3,2,2,2,1,4,0,1,1,0,1,0 0,0,1,2,2,3,4,4,0,1,1,0,1,0 2,4,13,3,0,4,2,0,1,1,1,0,1,0 0,4,0,3,0,12,2,0,1,1,1,1,1,0 1,0,1,2,0,1,2,0,1,1,1,1,1,0 1,0,10,3,0,5,2,4,1,1,1,0,1,1 0,0,12,1,2,3,1,0,1,1,1,2,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,3,2,0,3,2,0,1,1,1,2,1,0 2,0,4,3,0,5,2,0,1,1,1,2,1,1 2,0,14,0,0,7,2,0,1,1,1,0,1,0 0,0,3,2,2,3,1,0,0,1,1,2,1,0 0,0,1,2,0,8,2,0,1,1,1,0,1,1 0,2,1,2,0,4,2,0,1,1,1,0,1,1 2,0,7,1,0,7,0,0,0,1,1,0,1,0 0,0,3,2,2,8,3,0,0,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 2,0,3,2,0,1,2,0,1,1,1,0,1,1 0,0,6,2,2,8,1,0,0,1,1,0,1,0 1,1,10,3,0,4,2,0,1,1,1,0,1,1 2,5,1,2,0,12,2,0,1,1,1,0,1,1 1,2,10,3,1,3,3,0,1,1,1,1,1,1 1,0,3,2,3,8,5,0,0,1,1,2,1,0 1,0,3,2,2,6,1,0,1,1,1,1,1,0 0,0,3,2,2,5,1,0,0,1,1,2,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 1,0,0,3,0,4,2,0,1,1,1,0,1,1 1,0,3,2,1,7,3,0,1,1,1,1,1,0 1,0,0,3,0,1,1,0,1,1,1,0,1,1 1,0,3,2,1,1,5,0,0,1,1,0,1,0 0,3,0,3,2,12,3,0,0,1,1,2,1,0 1,3,3,2,0,8,2,0,1,1,1,0,1,1 0,0,0,3,2,5,1,0,1,1,1,2,1,0 1,0,3,2,1,1,3,0,1,1,1,0,1,0 2,0,3,2,0,8,2,0,1,1,1,2,1,0 1,4,1,2,0,4,2,0,1,1,1,0,1,0 1,0,3,2,0,3,2,0,1,1,1,0,1,1 1,0,1,2,2,2,3,4,1,1,1,2,1,0 0,1,13,3,2,5,1,0,0,1,1,1,1,0 0,0,1,2,0,1,2,0,1,1,1,1,1,0 0,0,3,2,2,6,1,0,0,1,1,0,1,0 1,0,1,2,4,7,5,0,0,1,1,2,1,0 0,3,0,3,2,0,3,3,1,1,1,1,1,0 0,4,0,3,2,5,3,0,0,1,1,1,1,0 1,0,3,2,0,0,2,0,1,1,1,1,1,0 0,3,0,3,2,5,3,0,0,1,1,0,1,0 1,0,0,3,1,0,3,0,0,1,1,0,1,0 1,5,0,3,1,5,3,0,1,1,1,0,1,0 1,0,3,2,1,2,3,0,0,1,1,2,1,0 1,0,12,1,0,2,2,0,1,1,1,2,1,0 0,4,3,2,0,1,2,0,1,1,1,0,1,0 1,0,3,2,1,10,3,0,1,1,1,1,1,0 2,0,12,1,0,8,2,0,1,1,1,0,1,0 0,0,1,2,2,8,1,0,0,1,1,0,1,0 1,3,4,3,2,5,3,1,0,1,1,1,1,1 1,4,10,3,1,12,3,4,1,1,1,1,1,1 1,0,13,3,0,5,2,1,1,1,1,0,1,1 2,0,3,2,0,10,2,0,1,1,1,1,1,0 1,0,0,3,2,8,3,0,0,1,1,2,1,0 1,0,2,1,1,9,3,0,1,1,1,0,1,0 1,1,3,2,0,9,2,0,1,1,1,1,1,1 0,0,5,2,2,8,3,0,0,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,0 1,0,3,2,0,3,2,0,1,1,1,2,1,0 2,3,5,2,0,4,2,0,1,1,1,1,1,1 1,0,3,2,1,8,5,0,0,1,1,1,1,0 0,5,1,2,0,5,2,0,1,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,0,7,0,0,0,1,1,0,1,0 0,0,1,2,2,1,3,0,1,1,1,1,1,0 0,0,10,3,1,5,1,0,0,1,1,1,1,1 0,0,1,2,0,8,2,0,1,1,1,0,1,0 0,0,0,3,2,3,3,4,0,1,1,0,1,0 2,4,0,3,0,5,2,4,1,1,1,0,1,0 0,0,1,2,0,8,2,0,1,1,1,1,1,0 1,0,3,2,3,2,5,4,0,1,1,2,1,0 0,0,3,2,3,2,3,4,0,1,1,0,1,0 0,0,14,0,2,6,4,0,1,1,1,2,1,0 1,0,0,3,1,5,5,0,0,1,1,0,1,0 2,0,0,3,2,1,3,0,1,1,1,1,1,1 1,0,12,1,1,8,5,0,0,1,1,0,1,0 1,0,12,1,1,3,3,0,0,1,1,0,1,0 1,0,9,1,0,5,2,0,1,1,1,0,1,1 1,0,0,3,0,5,2,0,1,1,1,1,1,1 1,0,3,2,0,7,0,1,0,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,0,3,1,0,5,0,0,1,1,2,1,0 2,5,3,2,0,3,2,0,1,1,1,0,1,0 0,0,6,2,2,8,1,0,0,1,1,2,1,0 1,4,1,2,0,4,2,0,1,1,1,0,1,1 3,0,0,3,4,5,3,0,0,1,1,2,1,0 1,4,12,1,2,2,3,0,1,1,1,0,1,0 0,4,1,2,0,12,2,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,1 0,0,3,2,0,8,0,0,0,1,1,0,1,1 1,2,3,2,0,1,2,0,1,1,1,0,1,0 1,0,2,1,0,10,2,0,1,1,1,1,1,0 1,1,1,2,1,4,3,2,0,1,1,0,1,0 1,2,1,2,2,1,3,0,1,1,1,1,1,0 1,0,3,2,3,5,5,0,0,1,1,0,1,0 0,0,1,2,0,0,2,0,1,1,1,0,1,0 1,0,3,2,1,4,3,0,0,1,1,0,1,0 1,0,1,2,1,5,3,0,0,1,1,0,1,0 0,5,3,2,2,2,3,4,0,1,1,0,1,0 1,4,3,2,2,1,4,2,1,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,1,1,0 2,0,3,2,0,7,2,0,1,1,1,0,1,1 2,0,1,2,1,5,3,0,0,1,1,0,1,0 0,0,3,2,0,2,2,0,1,1,1,0,1,0 0,0,1,2,2,8,5,1,0,1,1,2,1,0 2,0,3,2,0,3,2,0,1,1,1,0,1,0 1,0,0,3,0,3,2,0,1,1,1,1,1,1 0,0,5,2,2,3,1,0,0,1,1,1,1,0 2,2,0,3,1,3,3,0,0,1,1,1,1,0 1,0,3,2,2,4,3,0,0,1,1,1,1,0 0,0,6,2,0,3,2,0,1,1,1,1,1,0 2,5,5,2,4,5,3,0,0,1,1,0,1,0 1,4,3,2,0,8,2,0,1,1,1,2,1,0 1,1,3,2,0,1,2,0,1,1,1,0,1,1 0,0,3,2,2,0,3,0,1,1,1,1,1,0 0,0,1,2,2,2,3,0,1,1,1,1,1,0 0,0,3,2,0,8,0,0,0,1,1,1,1,1 1,1,3,2,0,9,2,0,1,1,1,1,1,0 3,2,9,1,4,3,3,0,1,1,1,1,1,1 2,0,8,0,2,2,3,0,1,1,1,1,1,0 0,1,8,0,2,2,4,0,0,1,1,1,1,0 2,2,0,3,0,4,2,0,1,1,1,1,1,1 1,2,3,2,1,12,3,0,1,1,1,1,1,0 0,0,3,2,0,1,2,0,1,1,1,1,1,1 0,0,3,2,1,7,1,0,1,1,1,0,1,0 0,4,12,1,0,1,2,0,1,1,1,1,1,0 1,0,3,2,1,2,5,0,0,1,1,0,1,0 0,0,3,2,3,2,5,0,0,1,1,2,1,0 0,0,8,0,1,2,5,0,0,1,1,0,1,0 1,0,1,2,0,5,2,0,1,1,1,2,1,1 0,0,10,3,2,6,5,0,1,1,1,2,1,0 1,0,13,3,0,5,2,0,1,1,1,1,1,1 0,0,0,3,2,0,3,0,1,1,1,0,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,0 0,0,0,3,0,5,2,0,1,1,1,1,1,1 0,0,0,3,2,4,3,0,1,1,1,1,1,1 1,0,2,1,0,7,2,3,1,1,1,0,1,0 0,0,0,3,2,5,3,0,0,1,1,1,1,0 0,0,3,2,0,6,2,0,1,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,1,1,0 1,0,3,2,4,2,3,0,0,1,1,1,1,0 2,1,8,0,0,3,2,0,1,1,1,2,1,0 1,1,5,2,2,5,1,4,0,1,1,2,1,0 0,0,14,0,2,2,3,0,0,1,1,0,1,0 0,0,1,2,2,2,3,0,0,1,1,2,1,0 1,3,0,3,0,4,2,0,1,1,1,0,1,1 1,5,1,2,1,8,5,0,0,1,1,2,1,0 2,1,1,2,0,2,2,0,1,1,1,1,1,0 2,3,3,2,4,4,3,0,0,1,1,0,1,0 1,0,3,2,1,3,3,0,1,1,1,1,1,1 1,0,3,2,2,9,3,0,1,1,1,0,1,0 1,0,0,3,0,5,0,0,0,1,1,2,1,1 0,5,1,2,2,5,1,0,0,1,1,2,1,0 0,0,0,3,0,8,2,0,1,1,1,0,1,1 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,0,3,0,4,2,0,1,1,1,0,1,0 0,0,0,3,0,3,2,0,1,1,1,1,1,1 2,0,10,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,2,7,3,0,0,1,1,0,1,0 1,0,1,2,0,0,2,0,1,1,1,0,1,1 1,0,6,2,2,2,3,0,1,1,1,0,1,0 1,5,1,2,1,8,3,4,0,1,1,0,1,0 0,1,3,2,0,4,2,0,1,1,1,0,1,0 0,0,1,2,0,10,2,4,1,1,1,1,1,0 0,0,6,2,0,10,2,0,1,1,1,1,1,0 0,0,0,3,0,5,2,0,1,1,1,1,1,0 1,0,0,3,2,5,3,0,0,1,1,0,1,0 2,0,0,3,0,2,2,0,1,1,1,2,1,0 2,1,1,2,0,3,2,0,1,1,1,1,1,1 2,0,3,2,1,2,3,0,0,1,1,2,1,0 0,0,1,2,2,2,1,0,1,1,1,2,1,0 1,4,9,1,0,6,2,0,1,1,1,0,1,0 1,0,1,2,2,1,3,0,1,1,1,0,1,0 0,0,3,2,0,2,2,0,1,1,1,0,1,0 1,4,0,3,0,5,0,0,0,1,1,1,1,1 2,2,4,3,0,5,2,0,1,1,1,0,1,1 0,0,3,2,2,9,3,0,1,1,1,0,1,0 1,5,3,2,2,4,5,4,1,1,1,1,1,0 2,1,1,2,0,3,2,0,1,1,1,0,1,1 2,0,2,1,4,3,3,0,0,1,1,2,1,0 1,0,1,2,0,4,2,0,1,1,1,1,1,0 1,4,10,3,1,5,3,0,0,1,1,1,1,0 0,0,5,2,1,8,5,0,0,1,1,2,1,0 0,0,3,2,2,2,1,0,1,1,1,0,1,0 0,0,1,2,2,3,3,0,1,1,1,2,1,0 1,0,3,2,0,3,2,0,1,1,1,1,1,0 1,0,3,2,1,8,5,4,0,1,1,0,1,0 1,0,1,2,1,4,3,0,1,1,1,1,1,0 1,4,10,3,0,4,2,0,1,1,1,1,1,1 0,0,5,2,2,8,1,0,0,1,1,0,1,0 0,0,0,3,2,8,1,4,0,1,1,0,1,0 1,0,8,0,0,7,0,3,0,1,1,0,1,0 1,0,1,2,0,6,2,0,1,1,1,0,1,1 0,4,10,3,2,5,3,0,0,1,1,1,1,0 1,0,14,0,5,9,3,0,1,1,1,2,1,0 1,2,6,2,0,1,2,0,1,1,1,1,1,1 2,0,1,2,3,0,5,4,0,1,1,2,1,0 1,0,3,2,0,0,2,0,1,1,1,0,1,1 0,0,12,1,2,6,1,0,1,1,1,2,1,0 0,0,3,2,2,2,4,4,1,1,1,2,1,0 1,0,3,2,1,8,3,0,0,1,1,0,1,0 1,0,3,2,1,3,3,0,0,1,1,2,1,0 0,0,3,2,0,3,0,0,0,1,1,2,1,0 0,1,3,2,0,3,2,0,1,1,1,1,1,1 0,0,1,2,0,8,2,0,1,1,1,0,1,1 2,2,0,3,0,4,2,0,1,1,1,1,1,1 0,0,0,3,2,5,3,0,1,1,1,2,1,0 0,5,10,3,2,5,3,4,0,1,1,0,1,0 0,0,6,2,0,5,0,0,0,1,1,0,1,0 1,0,3,2,0,10,2,0,1,1,1,0,1,0 2,0,5,2,0,11,4,0,0,1,1,2,1,0 1,0,10,3,0,5,2,0,1,1,1,0,1,1 0,0,3,2,2,1,3,0,1,1,1,1,1,0 1,0,3,2,0,6,2,0,1,1,1,0,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 0,0,6,2,0,5,2,0,1,1,1,0,1,1 1,0,3,2,0,1,2,0,1,1,1,1,1,1 0,4,3,2,2,2,5,0,0,1,1,0,1,0 1,0,3,2,1,7,1,0,0,1,1,0,1,0 0,0,3,2,2,1,1,0,1,1,1,0,1,0 0,0,10,3,2,5,1,0,0,1,1,0,1,1 2,4,1,2,0,2,2,0,1,1,1,0,1,0 0,0,2,1,2,2,1,0,0,1,1,2,1,0 2,0,3,2,4,6,5,0,0,1,1,0,1,0 0,0,9,1,0,7,4,3,1,1,1,0,1,0 0,4,6,2,2,0,1,0,0,1,1,2,1,0 0,0,5,2,1,1,5,0,1,1,1,1,1,1 1,0,6,2,0,0,0,0,0,1,1,0,1,1 0,5,3,2,0,0,2,0,1,1,1,0,1,0 0,0,3,2,2,1,1,0,1,1,1,0,1,0 2,2,1,2,0,3,0,0,0,1,1,1,1,1 1,0,0,3,0,5,2,2,1,1,1,1,1,1 1,1,1,2,0,5,0,0,0,1,1,1,1,0 0,0,1,2,2,11,3,0,0,1,1,1,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,8,0,0,6,2,0,1,1,1,1,1,0 1,0,7,1,1,3,3,0,0,1,1,0,1,0 1,0,1,2,1,1,5,0,1,1,1,0,1,0 1,0,5,2,0,5,2,0,1,1,1,0,1,0 1,0,0,3,0,10,2,0,1,1,1,1,1,1 0,0,1,2,2,3,1,0,0,1,1,2,1,0 1,0,1,2,0,3,2,0,1,1,1,1,1,1 1,0,13,3,0,4,2,0,1,1,1,1,1,1 2,0,6,2,0,5,2,0,1,1,1,1,1,1 0,0,2,1,3,1,3,0,1,1,1,1,1,0 1,0,0,3,0,5,2,0,1,1,1,0,1,1 2,0,1,2,3,10,3,2,0,1,1,2,1,0 0,0,9,1,2,7,5,0,1,1,1,0,1,0 0,0,3,2,2,6,1,0,1,1,1,0,1,0 0,0,11,0,2,7,3,0,1,1,1,2,1,0 1,0,0,3,0,5,2,0,1,1,1,0,1,0 0,0,10,3,0,4,2,0,1,1,1,1,1,1 1,4,4,3,0,4,2,0,1,1,1,1,1,1 1,0,3,2,0,7,2,0,1,1,1,1,1,1 1,4,0,3,2,0,1,0,0,1,1,1,1,0 1,1,4,3,0,5,2,0,1,1,1,1,1,1 2,0,0,3,0,2,2,0,1,1,1,0,1,1 1,0,6,2,3,7,3,4,0,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 0,0,3,2,2,1,3,0,1,1,1,0,1,0 2,0,3,2,4,4,5,0,1,1,1,2,1,1 0,0,1,2,2,3,1,0,0,1,1,2,1,0 1,0,0,3,2,5,3,0,0,1,1,1,1,0 1,2,3,2,0,4,2,0,1,1,1,1,1,1 1,1,1,2,0,2,2,4,1,1,1,0,1,0 2,0,3,2,0,3,2,0,1,1,1,0,1,1 1,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,3,2,2,2,5,4,0,1,1,0,1,0 2,1,1,2,4,9,3,0,0,1,1,2,1,0 0,0,1,2,2,6,1,0,1,1,1,0,1,0 0,0,3,2,2,6,4,4,1,1,1,1,1,0 1,0,3,2,0,4,2,0,1,1,1,0,1,1 0,0,1,2,1,8,3,4,1,1,1,0,1,0 0,0,6,2,1,5,5,0,0,1,1,2,1,0 1,0,13,3,5,5,5,2,0,1,1,0,1,0 1,0,3,2,1,1,5,0,1,1,1,0,1,0 0,0,3,2,2,10,5,0,1,1,1,0,1,0 0,0,7,1,0,2,2,0,1,1,1,0,1,0 1,0,3,2,1,6,5,4,0,1,1,0,1,0 1,0,6,2,0,1,2,0,1,1,1,1,1,1 1,0,13,3,0,5,2,0,1,1,1,1,1,1 0,0,6,2,2,7,5,4,0,1,1,0,1,0 1,1,4,3,0,5,2,0,1,1,1,1,1,1 0,0,3,2,2,8,1,0,0,1,1,2,1,0 1,0,0,3,0,0,2,0,1,1,1,0,1,1 0,0,3,2,0,6,2,0,1,1,1,0,1,0 0,0,1,2,0,1,2,0,1,1,1,0,1,0 2,0,11,0,4,7,3,0,0,1,1,2,1,0 1,0,1,2,0,4,2,0,1,1,1,1,1,1 1,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,2,1,1,2,1,1,1,0,1,0 1,0,5,2,0,5,2,0,1,1,1,0,1,1 0,0,3,2,2,6,5,0,1,1,1,0,1,0 1,0,6,2,0,7,2,0,1,1,1,0,1,1 1,0,3,2,3,10,3,0,1,1,1,0,1,0 0,0,1,2,3,9,4,0,0,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 2,4,10,3,1,5,3,0,0,1,1,2,1,0 1,4,10,3,2,5,3,0,0,1,1,1,1,0 0,4,1,2,2,5,3,0,1,1,1,2,1,0 0,0,1,2,2,8,1,0,0,1,1,2,1,0 1,0,0,3,1,4,3,4,0,1,1,1,1,1 1,0,14,0,1,11,5,0,0,1,1,0,1,0 1,0,3,2,0,10,2,0,1,1,1,2,1,1 0,0,3,2,0,10,0,0,0,1,1,2,1,1 1,0,3,2,1,7,4,0,0,1,1,0,1,0 1,1,1,2,0,9,2,0,1,1,1,1,1,0 2,0,3,2,1,2,5,0,0,1,1,2,1,0 2,0,3,2,1,8,3,0,0,1,1,2,1,0 1,0,5,2,1,4,5,4,0,1,1,2,1,0 1,0,0,3,1,5,3,0,0,1,1,2,1,0 2,1,3,2,4,1,3,0,1,1,1,2,1,0 2,2,4,3,0,5,2,0,1,1,1,0,1,0 0,4,5,2,0,12,2,0,1,1,1,1,1,0 1,1,4,3,0,5,2,1,1,1,1,1,1,1 1,0,3,2,0,1,2,0,1,1,1,0,1,0 2,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,1,2,2,2,1,4,0,1,1,0,1,0 0,0,4,3,2,5,3,0,0,1,1,2,1,0 2,4,0,3,0,4,2,0,1,1,1,0,1,0 0,0,0,3,2,0,3,0,0,1,1,0,1,0 1,0,1,2,2,3,3,0,1,1,1,1,1,0 2,3,5,2,0,2,2,4,1,1,1,0,1,0 2,4,8,0,4,2,3,0,0,1,1,2,1,0 1,0,5,2,0,7,2,4,1,1,1,1,1,0 0,1,3,2,5,10,4,1,1,1,1,1,1,1 0,0,0,3,2,8,1,1,0,1,1,0,1,0 0,0,0,3,1,5,3,0,0,1,1,1,1,0 0,0,1,2,2,8,1,0,1,1,1,0,1,0 1,0,3,2,2,2,1,4,1,1,1,0,1,0 0,0,1,2,0,6,2,0,1,1,1,1,1,1 1,2,1,2,0,9,2,0,1,1,1,1,1,0 2,2,3,2,0,4,2,0,1,1,1,1,1,1 2,4,0,3,0,4,2,0,1,1,1,1,1,0 1,0,1,2,2,7,3,0,0,1,1,1,1,0 1,2,10,3,0,4,2,0,1,1,1,1,1,1 1,2,0,3,0,3,2,0,1,1,1,1,1,1 0,0,3,2,2,2,3,0,0,1,1,2,1,0 1,0,6,2,3,5,4,0,0,1,1,0,1,0 1,1,3,2,2,1,4,2,1,1,1,0,1,0 1,0,5,2,1,2,5,4,0,1,1,0,1,0 0,0,1,2,0,8,2,0,1,1,1,0,1,0 0,0,0,3,0,7,2,3,1,1,1,2,1,0 0,0,0,3,2,8,3,4,0,1,1,0,1,0 1,1,0,3,0,4,2,0,1,1,1,1,1,0 1,4,0,3,1,0,3,0,0,1,1,0,1,1 2,0,3,2,0,2,2,0,1,1,1,0,1,0 0,0,3,2,2,2,3,0,0,1,1,2,1,0 0,0,1,2,2,3,3,0,1,1,1,1,1,0 0,0,9,1,2,10,3,0,1,1,1,1,1,0 0,0,0,3,2,4,3,0,1,1,1,0,1,0 0,0,8,0,2,6,1,0,1,1,1,1,1,0 0,0,3,2,0,3,2,0,1,1,1,1,1,1 0,0,1,2,2,6,4,0,1,1,1,2,1,0 0,0,9,1,0,9,2,3,1,1,1,1,1,0 1,5,1,2,0,9,2,0,1,1,1,0,1,0 0,0,3,2,2,2,1,0,0,1,1,2,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 1,4,3,2,0,4,2,0,1,1,1,1,1,1 1,0,14,0,5,11,3,0,0,1,1,2,1,0 0,0,0,3,2,3,3,0,1,1,1,2,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,3,2,1,4,3,0,1,1,1,1,1,0 0,0,3,2,2,6,5,0,0,1,1,0,1,0 0,4,1,2,2,9,3,0,1,1,1,0,1,0 0,0,8,0,1,7,5,0,0,1,1,0,1,0 2,0,7,1,0,7,4,1,1,1,1,0,1,0 0,0,3,2,2,2,3,0,1,1,1,2,1,0 0,5,9,1,0,0,0,0,0,1,1,0,1,1 0,5,2,1,2,2,1,0,1,1,1,2,1,0 2,0,3,2,4,3,3,0,0,1,1,2,1,0 1,4,1,2,2,4,5,4,0,1,1,1,1,0 1,0,4,3,0,5,2,0,1,1,1,1,1,1 2,1,3,2,0,8,0,0,0,1,1,2,1,1 0,0,3,2,2,3,1,4,0,1,1,2,1,0 0,0,12,1,2,6,1,0,1,1,1,0,1,0 0,0,3,2,2,6,1,0,0,1,1,2,1,0 1,1,3,2,1,2,3,0,0,1,1,0,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,3,2,2,8,3,0,0,1,1,0,1,0 1,0,3,2,0,2,2,0,1,1,1,1,1,0 0,0,3,2,0,6,2,0,1,1,1,0,1,0 1,1,9,1,0,4,2,1,1,1,1,1,1,0 2,0,3,2,1,4,3,0,0,1,1,1,1,0 0,0,6,2,0,1,2,0,1,1,1,0,1,0 2,0,1,2,0,1,0,0,0,1,1,0,1,0 1,4,1,2,2,8,3,0,0,1,1,1,1,0 1,0,3,2,1,2,3,0,1,1,1,2,1,0 2,2,0,3,0,1,2,0,1,1,1,1,1,1 2,5,3,2,1,8,5,0,0,1,1,0,1,0 0,4,1,2,2,5,4,0,1,1,1,2,1,0 1,0,1,2,1,7,3,0,1,1,1,0,1,0 0,0,2,1,2,5,1,0,0,1,1,2,1,0 2,0,3,2,4,1,5,0,1,1,1,1,1,1 1,0,14,0,1,2,3,0,1,1,1,2,1,0 0,0,1,2,2,4,3,0,1,1,1,0,1,0 0,0,12,1,1,7,3,0,1,1,1,0,1,0 1,1,1,2,0,1,2,0,1,1,1,1,1,0 0,1,0,3,0,4,2,0,1,1,1,2,1,0 0,4,6,2,0,0,2,0,1,1,1,1,1,0 0,5,3,2,2,2,5,4,0,1,1,0,1,0 1,0,0,3,2,5,3,0,0,1,1,1,1,0 0,0,0,3,2,1,1,0,1,1,1,0,1,0 1,3,3,2,1,8,3,0,1,1,1,0,1,0 1,0,0,3,2,0,3,0,1,1,1,0,1,0 2,0,12,1,0,3,2,0,1,1,1,2,1,0 1,0,4,3,0,3,2,0,1,1,1,1,1,1 0,0,2,1,2,3,1,0,1,1,1,2,1,0 1,0,3,2,1,7,4,3,0,1,1,2,1,0 1,0,10,3,0,5,2,0,1,1,1,1,1,0 0,0,1,2,0,3,2,0,1,1,1,1,1,0 0,0,3,2,1,1,5,0,1,1,1,0,1,0 0,1,3,2,0,5,2,0,1,1,1,1,1,0 0,0,3,2,0,2,0,0,0,1,1,0,1,0 0,0,1,2,2,3,1,0,1,1,1,2,1,0 1,5,1,2,0,12,2,0,1,1,1,1,1,0 1,0,1,2,1,2,3,0,1,1,1,0,1,0 2,0,3,2,4,3,4,0,0,1,1,2,1,0 1,0,8,0,0,1,2,0,1,1,1,2,1,0 1,4,10,3,0,4,2,0,1,1,1,1,1,0 0,0,0,3,2,8,3,0,0,1,1,0,1,0 0,2,0,3,0,3,2,0,1,1,1,1,1,1 1,0,14,0,1,9,5,0,1,1,1,0,1,0 1,0,1,2,0,8,0,0,0,1,1,0,1,1 0,0,1,2,2,2,3,0,1,1,1,2,1,0 0,0,1,2,0,0,2,0,1,1,1,1,1,0 2,0,12,1,1,8,5,4,0,1,1,2,1,0 0,0,3,2,1,3,5,0,0,1,1,0,1,0 1,3,3,2,1,8,5,0,0,1,1,0,1,0 0,4,0,3,2,5,1,4,0,1,1,1,1,0 2,0,5,2,0,7,2,4,1,1,1,0,1,1 0,0,0,3,2,8,1,0,1,1,1,0,1,0 1,0,1,2,1,3,3,1,0,1,1,2,1,0 0,0,1,2,2,3,1,0,1,1,1,2,1,0 0,5,1,2,3,4,1,0,1,1,1,0,1,0 2,2,3,2,0,4,2,0,1,1,1,0,1,0 0,5,1,2,2,5,1,0,0,1,1,2,1,0 1,0,3,2,0,6,2,0,1,1,1,0,1,0 0,0,3,2,0,6,2,4,1,1,1,0,1,0 2,0,0,3,2,5,3,0,0,1,1,1,1,0 0,1,0,3,0,4,2,0,1,1,1,1,1,0 1,0,3,2,3,3,5,4,0,1,1,2,1,0 2,4,0,3,0,4,2,0,1,1,1,0,1,1 0,2,3,2,4,3,5,0,0,1,1,0,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 0,0,3,2,3,8,5,4,0,1,1,0,1,0 1,0,3,2,2,6,5,4,0,1,1,2,1,0 1,0,3,2,0,7,2,0,1,1,1,1,1,0 0,0,1,2,2,0,3,4,1,1,1,2,1,0 0,0,2,1,2,4,1,0,0,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 1,1,0,3,0,5,2,0,1,1,1,0,1,0 1,0,1,2,1,5,5,0,0,1,1,0,1,0 1,0,0,3,0,5,0,0,0,1,1,1,1,1 2,0,0,3,0,3,2,0,1,1,1,1,1,1 0,1,3,2,0,3,0,0,0,1,1,0,1,0 0,0,3,2,1,3,3,0,1,1,1,1,1,0 1,0,3,2,1,10,3,0,1,1,1,0,1,0 0,0,3,2,0,0,2,0,1,1,1,0,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,1 0,0,2,1,5,6,1,0,1,1,1,0,1,0 0,0,0,3,2,5,3,0,0,1,1,1,1,0 1,0,3,2,2,8,4,0,0,1,1,0,1,0 0,0,9,1,2,6,1,0,1,1,1,2,1,0 0,0,0,3,2,3,3,0,0,1,1,2,1,0 1,0,1,2,1,7,1,0,0,1,1,2,1,0 2,1,3,2,0,10,2,0,1,1,1,1,1,0 0,0,3,2,0,2,0,0,0,1,1,2,1,0 0,0,12,1,1,1,3,0,1,1,1,2,1,0 1,2,0,3,0,8,0,1,0,1,1,1,1,0 1,5,1,2,0,4,2,0,1,1,1,0,1,0 2,0,3,2,0,4,2,0,1,1,1,1,1,0 2,0,3,2,0,10,2,0,1,1,1,1,1,0 2,1,1,2,1,3,3,0,0,1,1,2,1,0 1,0,3,2,1,5,3,0,1,1,1,0,1,0 0,0,1,2,2,8,3,0,0,1,1,2,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,1 1,0,3,2,1,2,5,0,0,1,1,0,1,0 0,0,1,2,2,4,1,0,1,1,1,1,1,0 1,5,3,2,0,2,2,2,1,1,1,0,1,0 0,5,5,2,2,8,5,4,0,1,1,0,1,0 0,0,0,3,2,3,1,0,1,1,1,2,1,0 0,0,7,1,0,1,2,0,1,1,1,0,1,0 1,0,3,2,2,2,3,0,1,1,1,2,1,0 0,0,0,3,0,3,2,0,1,1,1,1,1,0 0,0,3,2,0,1,2,0,1,1,1,1,1,0 1,0,0,3,2,4,3,0,1,1,1,0,1,1 0,1,3,2,3,1,1,0,1,1,1,2,1,0 0,3,4,3,2,5,3,4,0,1,1,0,1,0 1,5,3,2,0,2,2,4,1,1,1,0,1,1 1,0,1,2,0,8,0,4,0,1,1,1,1,1 2,2,0,3,0,3,2,0,1,1,1,2,1,1 1,0,12,1,0,6,2,0,1,1,1,0,1,0 1,3,0,3,0,8,2,0,1,1,1,1,1,1 1,4,1,2,4,8,5,0,0,1,1,2,1,0 1,0,13,3,0,5,2,0,1,1,1,1,1,0 1,0,0,3,0,10,2,0,1,1,1,1,1,1 1,0,5,2,0,4,2,0,1,1,1,1,1,1 2,1,0,3,0,4,2,0,1,1,1,1,1,1 1,0,1,2,0,7,2,0,1,1,1,1,1,1 0,0,0,3,2,10,1,0,1,1,1,2,1,0 0,0,0,3,2,8,3,0,0,1,1,2,1,0 1,4,10,3,1,5,3,0,0,1,1,2,1,0 2,0,1,2,0,4,2,0,1,1,1,1,1,1 0,0,1,2,2,3,1,0,0,1,1,2,1,0 2,4,10,3,0,5,2,0,1,1,1,1,1,0 0,0,3,2,0,1,2,0,1,1,1,1,1,0 0,0,1,2,2,2,3,0,1,1,1,2,1,0 0,0,7,1,0,1,2,0,1,1,1,2,1,0 2,0,0,3,4,5,3,0,0,1,1,2,1,0 1,0,5,2,0,4,2,0,1,1,1,1,1,1 1,1,6,2,4,5,5,0,0,1,1,0,1,0 0,0,3,2,0,10,2,0,1,1,1,1,1,0 1,0,3,2,1,8,3,1,0,1,1,0,1,0 1,1,12,1,0,9,2,0,1,1,1,2,1,0 0,4,3,2,4,2,5,0,0,1,1,0,1,0 0,3,9,1,0,13,2,0,1,1,1,0,1,0 0,0,3,2,2,10,3,0,1,1,1,1,1,0 3,1,3,2,2,4,3,0,1,1,1,2,1,0 0,0,5,2,1,2,3,0,0,1,1,2,1,0 1,0,3,2,0,1,2,4,1,1,1,0,1,1 1,4,0,3,0,5,2,0,1,1,1,0,1,0 2,0,3,2,0,7,2,0,1,1,1,1,1,0 1,0,1,2,0,4,2,0,1,1,1,0,1,1 0,0,4,3,0,5,2,0,1,1,1,0,1,1 1,4,0,3,0,4,2,0,1,1,1,1,1,1 0,0,1,2,0,4,0,4,0,1,1,0,1,0 0,1,3,2,2,1,1,0,1,1,1,1,1,0 1,1,10,3,0,3,2,0,1,1,1,1,1,0 0,0,3,2,2,0,1,0,1,1,1,0,1,0 1,1,7,1,0,9,2,0,1,1,1,0,1,0 1,0,3,2,0,8,0,0,0,1,1,0,1,1 1,0,14,0,4,2,5,0,0,1,1,0,1,0 2,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,4,3,0,5,2,0,1,1,1,1,1,1 1,0,0,3,0,3,2,0,1,1,1,1,1,1 0,0,3,2,2,0,3,1,1,1,1,1,1,0 0,0,1,2,2,8,3,0,0,1,1,0,1,0 1,2,8,0,2,1,5,4,1,1,1,0,1,0 0,0,1,2,2,8,1,0,0,1,1,2,1,0 2,4,10,3,0,4,2,0,1,1,1,1,1,0 2,0,3,2,2,6,3,0,1,1,1,2,1,0 1,0,13,3,0,5,2,0,1,1,1,1,1,1 0,2,12,1,2,3,1,0,1,1,1,2,1,0 0,0,0,3,0,4,0,0,0,1,1,1,1,1 1,0,1,2,0,10,2,0,1,1,1,0,1,1 0,0,0,3,2,4,1,0,0,1,1,0,1,0 1,3,1,2,0,4,2,0,1,1,1,1,1,1 1,0,3,2,1,6,3,0,0,1,1,1,1,0 0,0,3,2,2,3,3,0,0,1,1,2,1,0 0,0,7,1,2,2,5,0,1,1,1,2,1,0 0,0,10,3,2,5,3,0,1,1,1,0,1,0 3,0,13,3,2,5,3,0,1,1,1,2,1,0 0,3,1,2,6,8,0,0,0,1,1,0,1,1 2,0,3,2,2,1,4,1,1,1,1,0,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,1 0,0,3,2,2,7,5,0,1,1,1,0,1,0 0,0,1,2,2,8,4,0,1,1,1,0,1,0 0,0,3,2,2,6,3,0,1,1,1,0,1,0 1,0,4,3,0,5,2,0,1,1,1,1,1,1 0,0,1,2,2,2,3,0,1,1,1,0,1,0 0,1,0,3,2,3,3,0,1,1,1,1,1,0 1,0,10,3,2,8,3,0,0,1,1,1,1,1 0,0,5,2,0,8,2,0,1,1,1,2,1,0 1,0,0,3,0,5,2,0,1,1,1,2,1,1 0,0,1,2,2,6,1,1,1,1,1,0,1,0 1,4,0,3,0,12,2,0,1,1,1,1,1,1 1,0,3,2,0,2,0,4,0,1,1,2,1,0 0,0,1,2,2,2,3,0,1,1,1,0,1,0 0,0,3,2,2,3,3,0,1,1,1,2,1,0 0,3,1,2,0,0,2,0,1,1,1,0,1,1 1,4,6,2,2,2,5,4,0,1,1,2,1,0 1,0,5,2,1,8,3,0,1,1,1,0,1,0 2,0,1,2,2,8,3,0,0,1,1,0,1,0 0,4,1,2,2,8,3,1,0,1,1,0,1,0 3,1,3,2,0,3,2,0,1,1,1,2,1,0 1,3,1,2,0,8,2,4,1,1,1,2,1,0 0,4,3,2,0,2,2,4,1,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,3,2,0,2,2,0,1,1,1,0,1,1 2,0,1,2,4,4,3,0,1,1,1,1,1,0 0,1,6,2,0,9,2,0,1,1,1,0,1,0 1,0,3,2,1,11,3,0,0,1,1,0,1,0 0,0,0,3,2,2,3,0,0,1,1,2,1,0 0,5,5,2,0,0,2,0,1,1,1,0,1,1 1,0,3,2,0,7,2,0,1,1,1,2,1,0 1,0,0,3,0,4,2,0,1,1,1,0,1,1 2,1,3,2,0,1,2,0,1,1,1,2,1,0 0,0,0,3,2,8,3,4,0,1,1,0,1,0 2,0,1,2,0,0,2,0,1,1,1,1,1,1 1,3,1,2,0,4,2,0,1,1,1,1,1,1 1,0,0,3,2,8,3,0,0,1,1,2,1,0 1,0,2,1,0,2,2,4,1,1,1,1,1,0 0,5,0,3,2,4,3,0,1,1,1,1,1,0 1,0,12,1,0,10,2,0,1,1,1,1,1,0 1,0,3,2,1,1,3,0,1,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,0 2,1,6,2,0,9,2,0,1,1,1,2,1,0 0,0,1,2,2,6,1,0,1,1,1,2,1,0 1,4,1,2,0,12,2,0,1,1,1,0,1,1 0,0,3,2,0,8,2,0,1,1,1,1,1,0 1,3,10,3,0,4,2,0,1,1,1,0,1,1 0,0,7,1,3,2,5,3,0,1,1,0,1,0 0,1,6,2,0,9,2,0,1,1,1,1,1,0 1,1,3,2,1,4,3,0,0,1,1,2,1,1 1,0,3,2,1,7,5,0,1,1,1,0,1,0 1,0,3,2,2,1,3,0,1,1,1,0,1,0 1,0,6,2,0,8,2,0,1,1,1,1,1,1 1,0,3,2,1,8,5,0,0,1,1,1,1,0 1,0,6,2,1,8,3,0,0,1,1,0,1,0 0,1,4,3,0,5,2,0,1,1,1,1,1,1 0,0,3,2,2,3,3,0,0,1,1,0,1,0 0,0,3,2,0,6,2,0,1,1,1,0,1,0 0,0,0,3,2,2,4,0,1,1,1,0,1,0 0,1,5,2,0,1,2,0,1,1,1,0,1,0 0,0,4,3,2,5,4,0,1,1,1,1,1,0 1,0,5,2,3,1,3,0,1,1,1,0,1,0 1,1,1,2,1,2,5,0,1,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,1,1,1 3,1,6,2,0,3,2,0,1,1,1,2,1,1 1,0,0,3,0,4,2,4,1,1,1,1,1,1 1,0,1,2,0,1,2,0,1,1,1,1,1,1 0,0,3,2,0,7,2,0,1,1,1,2,1,0 0,0,0,3,2,8,3,0,0,1,1,1,1,0 1,1,0,3,0,3,2,0,1,1,1,0,1,1 2,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,5,2,1,4,3,0,1,1,1,1,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,1 0,0,1,2,2,8,3,0,1,1,1,1,1,0 1,5,3,2,2,10,3,0,0,1,1,0,1,1 1,3,3,2,0,7,2,0,1,1,1,0,1,0 0,0,0,3,0,3,0,0,0,1,1,0,1,1 0,0,3,2,0,12,2,0,1,1,1,2,1,0 2,0,0,3,0,4,2,0,1,1,1,1,1,1 0,3,0,3,2,5,3,0,0,1,1,0,1,0 2,0,1,2,0,9,2,0,1,1,1,0,1,0 0,0,0,3,2,2,3,0,0,1,1,2,1,0 1,0,13,3,0,5,2,1,1,1,1,0,1,1 1,0,1,2,1,8,3,1,0,1,1,2,1,0 1,1,3,2,0,7,2,0,1,1,1,2,1,0 0,4,5,2,2,8,1,4,0,1,1,2,1,0 0,0,2,1,2,6,1,0,1,1,1,0,1,0 0,4,12,1,0,10,2,0,1,1,1,0,1,0 1,4,0,3,0,5,2,0,1,1,1,2,1,1 1,0,2,1,0,11,4,0,0,1,1,0,1,0 1,5,3,2,0,8,0,0,0,1,1,0,1,0 1,0,1,2,1,8,5,0,0,1,1,0,1,0 1,0,1,2,3,6,3,0,1,1,1,0,1,0 1,3,1,2,2,5,5,0,0,1,1,0,1,0 1,1,3,2,0,1,2,0,1,1,1,1,1,0 0,4,12,1,0,1,2,0,1,1,1,0,1,0 2,0,3,2,0,6,2,0,1,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 2,1,8,0,0,9,2,0,1,1,1,1,1,0 0,1,3,2,1,3,3,0,0,1,1,2,1,0 0,0,0,3,0,0,2,0,1,1,1,1,1,0 0,0,3,2,0,3,2,0,1,1,1,1,1,0 1,0,3,2,3,5,5,0,0,1,1,1,1,0 1,0,13,3,0,5,2,0,1,1,1,1,1,1 0,0,3,2,2,2,1,0,0,1,1,0,1,0 0,0,1,2,1,7,3,0,1,1,1,0,1,0 1,0,3,2,1,1,3,0,1,1,1,0,1,0 1,0,1,2,5,3,5,0,0,1,1,0,1,0 0,2,3,2,0,4,2,0,1,1,1,1,1,0 1,0,4,3,0,3,0,2,0,1,1,0,1,1 1,5,1,2,0,0,2,0,1,1,1,1,1,0 2,0,3,2,1,8,4,4,0,1,1,0,1,0 0,0,1,2,1,8,5,0,0,1,1,2,1,0 1,0,10,3,0,5,2,0,1,1,1,1,1,1 1,0,1,2,1,4,5,0,0,1,1,0,1,0 0,0,1,2,0,4,2,0,1,1,1,0,1,1 2,4,3,2,1,12,3,4,1,1,1,2,1,0 0,1,1,2,0,3,2,0,1,1,1,1,1,0 0,0,3,2,0,5,2,0,1,1,1,1,1,0 0,0,1,2,2,7,3,0,1,1,1,1,1,0 1,0,3,2,1,1,3,0,1,1,1,0,1,0 2,1,3,2,0,3,2,0,1,1,1,2,1,1 2,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,1,2,2,3,3,0,1,1,1,0,1,0 1,0,6,2,0,1,2,0,1,1,1,0,1,1 1,0,0,3,5,4,5,0,0,1,1,0,1,0 0,0,3,2,2,9,1,0,1,1,1,0,1,0 1,0,3,2,0,10,2,0,1,1,1,0,1,0 0,0,1,2,0,1,2,0,1,1,1,1,1,1 0,0,1,2,2,3,1,0,0,1,1,0,1,0 0,0,1,2,2,8,3,0,0,1,1,0,1,0 0,0,1,2,2,8,1,1,0,1,1,0,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,1 1,5,6,2,0,5,2,0,1,1,1,0,1,1 2,0,3,2,0,8,2,0,1,1,1,1,1,0 0,0,0,3,0,3,2,0,1,1,1,1,1,1 1,5,3,2,5,4,5,0,0,1,1,0,1,0 1,0,6,2,1,2,1,0,0,1,1,0,1,0 1,1,0,3,0,3,2,0,1,1,1,1,1,0 2,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,2,3,3,0,1,1,1,1,1,0 1,0,0,3,0,4,2,0,1,1,1,2,1,0 0,0,1,2,3,3,3,0,1,1,1,1,1,0 2,0,3,2,0,4,2,0,1,1,1,2,1,0 1,1,0,3,0,9,2,0,1,1,1,1,1,0 2,1,3,2,0,3,2,0,1,1,1,1,1,0 1,0,3,2,2,1,4,0,1,1,1,1,1,0 1,1,4,3,0,5,2,0,1,1,1,2,1,1 1,0,6,2,0,10,2,0,1,1,1,1,1,1 0,0,3,2,2,2,3,0,0,1,1,2,1,0 0,0,0,3,0,5,2,1,1,1,1,0,1,0 2,0,8,0,0,1,2,0,1,1,1,1,1,0 2,0,10,3,2,8,3,0,0,1,1,2,1,1 3,2,1,2,0,4,2,0,1,1,1,2,1,1 0,0,3,2,2,8,1,0,1,1,1,0,1,0 1,0,3,2,1,8,5,4,0,1,1,0,1,0 1,1,12,1,0,2,2,0,1,1,1,1,1,0 0,0,5,2,2,8,1,0,1,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,0,1,0 1,0,1,2,0,0,2,1,1,1,1,1,1,1 0,0,3,2,1,7,5,0,1,1,1,0,1,0 0,0,0,3,2,3,3,0,1,1,1,1,1,1 2,4,10,3,0,4,2,0,1,1,1,1,1,1 0,0,5,2,0,3,0,3,0,1,1,1,1,1 0,0,1,2,2,3,4,0,1,1,1,2,1,0 0,0,7,1,2,1,3,0,1,1,1,0,1,0 0,0,0,3,0,5,0,0,0,1,1,0,1,0 0,0,1,2,2,6,1,0,1,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,1 1,0,5,2,1,4,5,0,0,1,1,0,1,0 0,0,3,2,2,1,1,0,1,1,1,0,1,0 0,0,0,3,0,5,2,0,1,1,1,1,1,1 0,0,0,3,2,4,1,0,0,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,0 1,0,12,1,0,4,2,0,1,1,1,0,1,1 2,0,3,2,1,8,3,0,0,1,1,1,1,0 0,0,1,2,0,8,0,0,0,1,1,2,1,0 0,0,0,3,2,4,1,0,1,1,1,1,1,0 0,0,1,2,2,8,3,0,0,1,1,2,1,0 0,4,1,2,2,12,1,0,0,1,1,0,1,1 1,2,3,2,0,3,2,0,1,1,1,0,1,0 3,0,13,3,0,5,2,0,1,1,1,2,1,0 0,5,1,2,2,2,3,0,1,1,1,1,1,0 1,0,1,2,0,4,2,0,1,1,1,0,1,1 1,0,0,3,0,3,2,0,1,1,1,0,1,1 1,0,3,2,1,3,3,0,1,1,1,1,1,0 2,0,1,2,0,3,2,0,1,1,1,1,1,0 3,0,3,2,0,4,0,0,0,1,1,1,1,0 2,0,1,2,4,8,3,0,0,1,1,0,1,0 1,0,12,1,1,1,3,0,1,1,1,0,1,0 1,5,3,2,0,8,0,0,0,1,1,0,1,0 1,0,6,2,0,1,2,0,1,1,1,0,1,0 1,0,1,2,0,4,2,0,1,1,1,1,1,1 1,0,3,2,0,3,2,0,1,1,1,1,1,1 2,0,5,2,0,4,2,0,1,1,1,0,1,1 1,0,10,3,2,3,3,0,1,1,1,1,1,1 0,0,8,0,0,1,2,0,1,1,1,0,1,0 1,0,3,2,0,9,2,0,1,1,1,2,1,0 0,0,1,2,2,1,3,0,1,1,1,2,1,0 0,0,6,2,0,1,2,0,1,1,1,1,1,0 2,0,3,2,1,6,3,0,1,1,1,0,1,0 0,0,3,2,2,6,1,0,1,1,1,0,1,0 0,0,1,2,2,8,3,0,1,1,1,2,1,0 1,0,1,2,1,2,3,0,0,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 0,4,3,2,2,2,5,2,1,1,1,0,1,0 0,0,1,2,2,8,3,0,0,1,1,0,1,0 1,5,13,3,0,5,2,0,1,1,1,0,1,1 0,5,1,2,2,2,1,0,0,1,1,1,1,0 0,0,14,0,0,1,2,0,1,1,1,1,1,0 2,1,3,2,0,3,2,0,1,1,1,1,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,1 0,0,1,2,2,2,1,4,1,1,1,2,1,0 0,0,1,2,1,8,5,4,0,1,1,2,1,0 0,0,14,0,1,6,5,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,2,1,0,1,2,0,1,1,1,0,1,1 0,1,12,1,2,9,1,0,1,1,1,0,1,0 1,1,1,2,0,4,2,0,1,1,1,0,1,1 1,0,8,0,1,4,3,0,1,1,1,1,1,0 2,0,3,2,0,7,2,0,1,1,1,0,1,0 2,0,9,1,0,10,2,4,1,1,1,0,1,1 1,4,0,3,2,8,3,0,0,1,1,0,1,1 0,0,3,2,2,8,4,0,1,1,1,0,1,0 0,0,0,3,2,2,4,0,1,1,1,2,1,0 1,2,3,2,1,1,5,0,1,1,1,1,1,0 0,0,2,1,0,1,2,0,1,1,1,0,1,0 1,0,0,3,0,4,0,0,0,1,1,0,1,0 1,1,2,1,0,9,2,0,1,1,1,1,1,1 1,1,13,3,0,5,0,0,0,1,1,2,1,1 0,0,0,3,2,8,1,0,0,1,1,0,1,0 0,0,3,2,1,10,5,4,0,1,1,2,1,0 0,3,1,2,0,3,2,0,1,1,1,2,1,0 0,0,3,2,1,1,3,0,1,1,1,0,1,0 1,0,7,1,0,2,2,0,1,1,1,0,1,1 1,0,1,2,1,4,5,0,0,1,1,0,1,0 0,0,3,2,0,3,2,0,1,1,1,0,1,0 1,4,0,3,0,5,2,0,1,1,1,1,1,1 1,3,3,2,0,1,2,0,1,1,1,0,1,0 1,3,6,2,1,1,3,0,1,1,1,0,1,0 0,1,1,2,2,9,3,0,1,1,1,1,1,0 2,5,0,3,0,4,2,0,1,1,1,2,1,0 0,0,0,3,2,8,3,1,1,1,1,0,1,0 0,0,1,2,2,8,5,3,1,1,1,0,1,0 1,0,14,0,0,2,4,0,0,1,1,2,1,0 1,0,6,2,0,4,2,0,1,1,1,1,1,1 0,0,3,2,2,7,1,0,1,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,2,10,1,0,1,1,1,0,1,0 1,5,3,2,1,0,3,0,0,1,1,0,1,0 0,5,1,2,2,12,3,0,1,1,1,2,1,0 0,0,12,1,3,2,5,0,0,1,1,2,1,0 0,0,1,2,2,3,1,0,1,1,1,2,1,0 1,4,10,3,0,5,2,0,1,1,1,2,1,1 0,0,1,2,2,8,3,0,1,1,1,0,1,0 1,0,0,3,0,8,2,0,1,1,1,0,1,1 1,0,1,2,1,2,3,0,0,1,1,1,1,0 1,0,3,2,4,3,5,0,0,1,1,1,1,0 1,0,3,2,3,6,5,4,0,1,1,1,1,0 1,0,13,3,1,5,4,0,1,1,1,1,1,1 0,0,0,3,2,5,3,0,1,1,1,0,1,0 1,0,0,3,2,4,3,0,1,1,1,1,1,0 0,0,3,2,2,3,1,0,1,1,1,2,1,0 0,0,3,2,2,8,1,0,0,1,1,0,1,0 0,1,3,2,0,4,2,0,1,1,1,1,1,1 3,1,4,3,1,5,4,0,1,1,1,0,1,0 2,1,1,2,0,9,2,0,1,1,1,1,1,0 0,0,6,2,0,1,2,0,1,1,1,0,1,0 0,4,0,3,1,8,5,1,0,1,1,1,1,0 0,0,2,1,0,6,2,0,1,1,1,1,1,0 0,4,6,2,1,12,5,0,1,1,1,1,1,0 0,0,2,1,2,6,1,0,1,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,1 1,5,1,2,0,12,2,0,1,1,1,1,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 0,0,3,2,0,10,2,0,1,1,1,2,1,0 0,4,1,2,0,12,2,0,1,1,1,0,1,0 1,0,4,3,1,5,3,0,1,1,1,1,1,1 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,0,0,2,0,1,1,1,0,1,0 1,5,0,3,4,4,5,0,0,1,1,1,1,0 0,0,3,2,2,3,3,0,1,1,1,2,1,0 0,0,12,1,0,1,2,0,1,1,1,0,1,0 1,0,0,3,0,4,2,1,1,1,1,1,1,1 1,4,0,3,0,4,2,0,1,1,1,0,1,1 1,0,3,2,2,2,5,0,0,1,1,2,1,0 0,4,2,1,2,5,1,0,0,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,3,2,2,7,5,4,0,1,1,0,1,0 0,2,1,2,2,9,1,0,1,1,1,1,1,0 2,0,2,1,1,8,3,0,1,1,1,0,1,1 1,0,0,3,1,5,3,0,1,1,1,1,1,1 1,4,0,3,1,5,3,4,0,1,1,0,1,0 1,1,3,2,0,9,2,0,1,1,1,1,1,0 0,0,3,2,1,8,5,0,0,1,1,0,1,0 0,2,3,2,0,1,2,0,1,1,1,1,1,0 1,2,0,3,0,3,2,0,1,1,1,0,1,0 0,2,3,2,2,3,3,0,1,1,1,1,1,0 1,4,10,3,0,5,0,0,0,1,1,2,1,1 0,0,0,3,0,5,2,0,1,1,1,1,1,0 1,0,0,3,0,1,2,0,1,1,1,1,1,1 0,0,3,2,2,2,1,0,1,1,1,2,1,0 1,0,12,1,0,10,2,0,1,1,1,0,1,1 1,0,3,2,0,10,2,0,1,1,1,0,1,0 0,0,3,2,2,8,3,0,0,1,1,1,1,0 1,2,4,3,0,5,2,0,1,1,1,1,1,1 1,1,3,2,0,9,2,0,1,1,1,1,1,0 0,0,0,3,2,1,3,0,1,1,1,0,1,0 3,0,0,3,2,5,1,0,0,1,1,2,1,0 1,0,4,3,0,4,0,0,0,1,1,1,1,1 0,0,15,0,2,9,3,0,1,1,1,2,1,0 0,0,1,2,2,9,1,0,1,1,1,1,1,0 0,0,1,2,2,2,3,0,0,1,1,1,1,0 0,0,3,2,0,8,0,0,0,1,1,1,1,1 0,0,0,3,2,8,4,0,1,1,1,0,1,0 1,0,0,3,3,4,5,0,0,1,1,0,1,0 0,4,1,2,2,8,1,0,0,1,1,2,1,0 1,0,7,1,3,1,1,0,1,1,1,2,1,0 1,0,3,2,0,10,2,0,1,1,1,0,1,0 0,0,3,2,2,8,3,0,0,1,1,0,1,0 2,0,3,2,4,3,3,0,0,1,1,2,1,0 0,0,3,2,1,1,5,0,1,1,1,0,1,0 1,0,6,2,0,3,2,0,1,1,1,0,1,0 0,1,1,2,2,9,1,0,1,1,1,1,1,0 0,0,3,2,2,2,3,2,1,1,1,2,1,0 0,2,10,3,2,4,3,0,0,1,1,1,1,1 0,0,3,2,0,3,2,0,1,1,1,0,1,1 1,0,3,2,2,7,3,0,1,1,1,2,1,0 1,1,3,2,0,10,2,0,1,1,1,1,1,1 2,0,3,2,1,2,5,0,0,1,1,2,1,0 1,1,3,2,0,1,2,0,1,1,1,2,1,0 0,3,1,2,0,0,0,0,0,1,1,0,1,0 1,4,10,3,0,5,2,0,1,1,1,1,1,0 2,0,3,2,3,1,5,0,1,1,1,0,1,0 2,3,3,2,0,0,2,0,1,1,1,0,1,1 0,0,3,2,1,1,3,0,1,1,1,0,1,0 0,0,1,2,0,5,2,2,1,1,1,0,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,1 1,1,1,2,0,9,2,0,1,1,1,1,1,0 1,0,3,2,2,1,3,0,1,1,1,0,1,0 0,4,5,2,1,2,5,0,0,1,1,2,1,0 0,0,3,2,2,6,1,0,1,1,1,0,1,0 2,0,12,1,3,10,5,4,1,1,1,1,1,1 0,0,3,2,0,1,2,0,1,1,1,1,1,0 1,2,0,3,0,3,2,1,1,1,1,1,1,1 2,0,12,1,0,7,2,0,1,1,1,1,1,0 2,0,0,3,1,3,3,4,1,1,1,1,1,1 1,3,0,3,0,4,2,0,1,1,1,0,1,0 1,1,10,3,0,9,2,0,1,1,1,1,1,0 1,0,3,2,1,5,5,0,0,1,1,0,1,1 0,0,3,2,2,2,3,0,1,1,1,0,1,0 2,1,4,3,0,5,2,0,1,1,1,2,1,1 2,2,3,2,3,9,3,0,1,1,1,1,1,1 0,0,1,2,2,8,3,0,0,1,1,0,1,0 0,0,1,2,2,3,1,4,0,1,1,0,1,0 1,0,12,1,0,1,1,3,1,1,1,1,1,1 3,0,4,3,0,5,2,0,1,1,1,1,1,1 1,0,1,2,1,3,3,0,0,1,1,0,1,0 2,0,3,2,1,2,4,0,0,1,1,2,1,0 1,0,2,1,3,2,5,4,0,1,1,2,1,0 0,0,6,2,0,5,2,0,1,1,1,1,1,1 0,0,12,1,2,2,1,0,1,1,1,2,1,0 1,0,1,2,0,10,2,0,1,1,1,1,1,0 0,0,5,2,1,8,5,0,0,1,1,0,1,0 2,0,0,3,0,3,2,0,1,1,1,0,1,1 0,0,1,2,2,8,1,0,0,1,1,2,1,0 0,0,1,2,2,5,1,0,1,1,1,2,1,0 0,0,3,2,0,2,2,0,1,1,1,1,1,0 0,0,1,2,2,3,1,0,1,1,1,2,1,0 0,0,8,0,0,7,2,0,1,1,1,0,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,1 0,0,1,2,2,1,3,4,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,1 0,4,6,2,0,0,0,0,0,1,1,2,1,1 0,0,13,3,2,5,3,0,1,1,1,1,1,0 1,0,1,2,0,4,2,0,1,1,1,0,1,0 2,2,1,2,0,1,2,0,1,1,1,0,1,0 0,0,0,3,2,5,3,0,1,1,1,0,1,0 0,0,3,2,1,7,5,0,0,1,1,2,1,0 1,0,3,2,1,1,3,0,1,1,1,0,1,0 2,1,0,3,0,3,2,0,1,1,1,0,1,1 0,0,3,2,2,5,1,0,1,1,1,2,1,0 2,0,6,2,1,5,5,0,0,1,1,0,1,0 2,1,1,2,0,10,2,0,1,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 1,0,1,2,1,5,3,0,1,1,1,1,1,1 1,2,6,2,0,1,2,0,1,1,1,1,1,0 1,2,1,2,0,4,2,0,1,1,1,1,1,1 2,0,7,1,4,2,5,4,0,1,1,2,1,0 1,0,1,2,0,2,2,0,1,1,1,0,1,0 2,4,3,2,0,6,2,0,1,1,1,0,1,0 2,0,3,2,4,3,3,0,0,1,1,2,1,0 0,0,12,1,0,7,2,0,1,1,1,0,1,0 1,0,2,1,1,4,3,0,0,1,1,2,1,0 0,5,1,2,2,12,5,4,0,1,1,0,1,0 0,3,3,2,2,6,3,2,1,1,1,0,1,0 1,0,1,2,0,7,2,0,1,1,1,1,1,0 0,4,1,2,0,4,2,0,1,1,1,1,1,0 1,0,3,2,0,2,2,4,1,1,1,0,1,1 0,0,3,2,1,2,4,1,0,1,1,0,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 0,0,4,3,0,4,0,0,0,1,1,0,1,1 0,0,1,2,2,8,3,0,1,1,1,1,1,0 0,0,2,1,2,8,5,4,0,1,1,2,1,0 2,0,8,0,4,2,3,0,0,1,1,2,1,0 0,0,1,2,2,2,1,4,1,1,1,1,1,0 0,0,2,1,2,2,1,0,1,1,1,2,1,0 0,0,1,2,2,9,1,0,1,1,1,0,1,0 0,0,1,2,2,2,4,4,1,1,1,2,1,0 2,3,1,2,0,4,2,0,1,1,1,0,1,1 0,0,5,2,0,4,2,0,1,1,1,0,1,0 0,0,0,3,0,3,2,0,1,1,1,1,1,0 1,0,10,3,0,4,2,0,1,1,1,0,1,0 0,0,0,3,2,4,3,0,0,1,1,0,1,0 1,0,3,2,1,7,3,0,1,1,1,1,1,0 0,0,1,2,2,2,3,0,1,1,1,0,1,0 0,0,0,3,2,5,3,0,0,1,1,2,1,0 1,5,1,2,0,12,2,0,1,1,1,0,1,1 1,0,3,2,0,1,2,0,1,1,1,0,1,1 0,1,5,2,1,1,3,0,1,1,1,1,1,0 1,0,1,2,0,1,2,0,1,1,1,1,1,1 0,3,0,3,0,5,2,1,1,1,1,1,1,1 2,1,2,1,0,1,2,0,1,1,1,2,1,0 1,0,1,2,1,6,5,4,0,1,1,0,1,0 0,0,3,2,2,1,3,0,1,1,1,1,1,1 1,0,14,0,0,1,2,3,1,1,1,0,1,1 1,0,7,1,2,7,3,0,1,1,1,0,1,0 1,0,0,3,0,5,2,1,1,1,1,1,1,1 1,0,3,2,2,3,3,0,0,1,1,0,1,0 1,0,7,1,0,7,2,0,1,1,1,1,1,1 2,2,3,2,0,5,0,0,0,1,1,2,1,1 0,0,0,3,2,3,5,4,1,1,1,0,1,0 1,0,3,2,1,3,3,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,2,2,3,0,0,1,1,0,1,0 1,0,1,2,1,4,5,4,0,1,1,2,1,0 0,0,3,2,2,7,4,4,0,1,1,2,1,0 0,0,3,2,2,4,1,4,1,1,1,0,1,0 2,3,3,2,4,8,5,0,0,1,1,2,1,0 1,0,0,3,0,0,2,0,1,1,1,0,1,0 0,0,1,2,2,6,1,3,1,1,1,2,1,0 1,0,3,2,0,10,0,0,0,1,1,0,1,0 1,2,10,3,1,4,3,0,0,1,1,1,1,0 0,5,0,3,2,5,3,1,1,1,1,2,1,0 2,1,13,3,0,5,2,0,1,1,1,1,1,0 0,0,1,2,0,3,2,0,1,1,1,0,1,0 1,0,3,2,1,1,3,0,1,1,1,0,1,0 0,0,1,2,0,7,2,4,1,1,1,0,1,0 2,0,7,1,0,10,2,0,1,1,1,0,1,0 0,0,1,2,2,7,1,0,1,1,1,2,1,0 1,2,3,2,0,3,2,0,1,1,1,1,1,0 2,3,5,2,0,2,2,1,1,1,1,0,1,1 0,0,0,3,2,10,3,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,0 3,0,3,2,0,9,2,1,1,1,1,0,1,0 0,0,0,3,2,5,3,4,0,1,1,0,1,0 1,0,1,2,0,10,2,0,1,1,1,1,1,1 2,0,0,3,1,3,3,0,1,1,1,0,1,0 1,4,1,2,0,1,2,0,1,1,1,0,1,1 0,0,1,2,2,1,1,0,1,1,1,2,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,1,2,2,4,1,3,0,1,1,0,1,0 0,0,3,2,0,4,4,0,0,1,1,0,1,0 1,0,0,3,2,2,1,0,0,1,1,2,1,0 0,0,3,2,2,1,3,0,1,1,1,0,1,0 0,0,9,1,2,2,1,0,0,1,1,2,1,0 1,0,3,2,0,7,2,4,1,1,1,0,1,0 0,0,0,3,2,8,1,0,1,1,1,0,1,0 0,0,7,1,2,3,5,0,0,1,1,0,1,0 2,0,10,3,0,4,0,0,0,1,1,1,1,1 0,0,1,2,2,4,3,0,0,1,1,1,1,0 1,2,3,2,0,3,2,0,1,1,1,1,1,1 1,0,7,1,2,11,3,0,0,1,1,2,1,0 0,0,8,0,0,2,2,0,1,1,1,0,1,0 2,2,9,1,0,4,2,0,1,1,1,0,1,0 0,0,2,1,2,1,1,0,1,1,1,0,1,0 0,0,2,1,2,2,1,4,0,1,1,2,1,0 1,0,3,2,4,8,5,0,0,1,1,1,1,0 2,0,6,2,0,0,2,0,1,1,1,0,1,0 2,3,0,3,5,4,3,0,0,1,1,0,1,0 2,3,3,2,0,1,2,0,1,1,1,0,1,1 1,1,4,3,0,5,2,0,1,1,1,0,1,1 0,0,3,2,2,1,1,0,1,1,1,1,1,0 0,0,3,2,0,2,0,0,0,1,1,0,1,1 0,1,6,2,1,2,5,0,0,1,1,1,1,0 0,5,1,2,2,12,3,0,1,1,1,0,1,0 0,0,1,2,2,8,1,0,1,1,1,2,1,0 2,0,3,2,4,2,3,0,0,1,1,1,1,0 1,0,12,1,2,3,5,3,0,1,1,2,1,0 0,0,3,2,2,10,1,0,1,1,1,2,1,0 1,3,9,1,2,2,5,4,0,1,1,0,1,0 0,0,3,2,1,1,3,0,1,1,1,1,1,0 0,0,0,3,4,5,5,0,0,1,1,1,1,1 0,0,3,2,0,6,2,0,1,1,1,0,1,0 0,0,1,2,2,2,3,0,0,1,1,2,1,0 0,0,6,2,3,8,1,4,0,1,1,1,1,0 0,0,3,2,2,2,3,4,0,1,1,2,1,0 2,0,3,2,3,1,3,0,0,1,1,2,1,0 2,1,1,2,4,4,3,0,1,1,1,2,1,0 1,0,3,2,3,3,3,0,0,1,1,2,1,0 2,0,2,1,4,7,3,0,0,1,1,0,1,0 0,0,6,2,2,8,1,0,0,1,1,0,1,1 1,0,1,2,0,4,2,0,1,1,1,1,1,1 0,4,1,2,2,12,1,0,1,1,1,2,1,0 0,0,3,2,1,1,3,0,1,1,1,0,1,0 2,0,7,1,0,4,2,0,1,1,1,0,1,0 1,0,3,2,1,1,5,0,0,1,1,1,1,0 1,1,0,3,0,5,0,0,0,1,1,2,1,0 0,0,9,1,2,7,1,0,1,1,1,0,1,0 1,0,3,2,2,8,1,0,0,1,1,0,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,1 1,1,0,3,0,4,2,0,1,1,1,0,1,1 1,0,5,2,2,8,3,4,0,1,1,0,1,0 1,0,12,1,0,1,2,0,1,1,1,2,1,0 0,0,5,2,2,8,3,1,0,1,1,0,1,0 1,5,0,3,0,4,2,0,1,1,1,0,1,1 1,0,3,2,1,3,5,4,0,1,1,2,1,0 2,0,2,1,0,1,2,0,1,1,1,0,1,0 1,0,3,2,2,8,3,4,0,1,1,0,1,0 2,0,0,3,0,1,2,0,1,1,1,2,1,0 1,0,0,3,0,4,2,0,1,1,1,0,1,0 0,3,6,2,0,0,2,0,1,1,1,0,1,1 0,3,1,2,2,13,4,0,1,1,1,0,1,0 0,0,1,2,2,6,1,0,1,1,1,2,1,0 1,0,14,0,1,7,5,3,0,1,1,0,1,0 0,4,3,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,0,8,2,0,1,1,1,1,1,1 2,4,10,3,4,5,3,0,0,1,1,0,1,0 0,4,0,3,2,8,3,0,1,1,1,2,1,0 1,0,1,2,0,8,0,0,0,1,1,2,1,1 0,0,2,1,2,6,1,0,1,1,1,2,1,0 0,0,1,2,0,3,2,0,1,1,1,1,1,1 1,0,13,3,0,5,2,0,1,1,1,1,1,1 0,0,1,2,2,8,5,0,0,1,1,0,1,0 1,0,3,2,0,2,2,1,1,1,1,1,1,1 0,0,3,2,2,1,3,0,1,1,1,1,1,0 0,3,0,3,2,5,3,4,1,1,1,0,1,0 2,0,0,3,0,8,2,0,1,1,1,1,1,1 0,1,3,2,1,9,3,0,1,1,1,0,1,0 2,4,3,2,1,1,3,0,1,1,1,0,1,1 0,0,3,2,0,8,2,0,1,1,1,2,1,0 1,0,3,2,1,7,3,0,1,1,1,0,1,0 1,0,0,3,0,0,2,0,1,1,1,1,1,1 1,3,3,2,1,7,3,0,1,1,1,0,1,0 0,0,3,2,2,9,3,4,0,1,1,1,1,0 0,0,3,2,0,8,4,0,0,1,1,2,1,0 1,4,1,2,0,5,2,0,1,1,1,1,1,1 0,4,3,2,2,7,1,0,1,1,1,1,1,0 1,0,12,1,0,1,2,0,1,1,1,1,1,0 0,0,5,2,0,5,2,0,1,1,1,0,1,1 0,4,10,3,0,5,0,0,0,1,1,0,1,0 0,1,1,2,0,8,0,0,0,1,1,2,1,1 0,0,1,2,2,7,3,0,1,1,1,1,1,0 2,1,10,3,0,4,2,0,1,1,1,2,1,1 0,0,7,1,2,10,1,0,1,1,1,0,1,0 0,0,0,3,0,3,2,0,1,1,1,0,1,1 1,0,5,2,0,4,2,0,1,1,1,1,1,1 1,1,9,1,0,10,2,0,1,1,1,1,1,0 1,0,8,0,2,7,1,0,0,1,1,2,1,0 2,2,1,2,0,4,2,0,1,1,1,1,1,1 1,1,3,2,2,9,5,0,1,1,1,1,1,0 1,0,0,3,0,4,2,1,1,1,1,1,1,0 1,0,1,2,0,4,2,0,1,1,1,1,1,0 3,4,14,0,0,5,2,0,1,1,1,2,1,0 0,4,10,3,2,5,3,0,0,1,1,0,1,0 0,0,3,2,0,3,2,0,1,1,1,1,1,0 1,4,3,2,0,10,2,2,1,1,1,0,1,0 0,0,3,2,2,7,5,0,0,1,1,1,1,0 2,0,1,2,0,2,2,3,1,1,1,0,1,0 0,0,1,2,2,2,1,0,1,1,1,2,1,0 1,0,9,1,0,3,2,0,1,1,1,0,1,1 2,0,12,1,0,1,2,0,1,1,1,0,1,0 2,0,1,2,0,1,2,2,1,1,1,0,1,0 0,0,3,2,0,0,2,0,1,1,1,0,1,0 0,0,3,2,2,7,1,0,0,1,1,2,1,0 0,4,0,3,2,5,4,4,1,1,1,2,1,0 0,0,4,3,0,5,2,0,1,1,1,0,1,1 3,3,1,2,4,0,3,0,0,1,1,0,1,0 0,0,10,3,0,5,2,0,1,1,1,1,1,0 1,1,6,2,2,9,1,0,1,1,1,1,1,0 3,1,3,2,0,3,2,0,1,1,1,0,1,0 1,3,6,2,0,0,2,0,1,1,1,0,1,1 1,4,3,2,2,8,3,0,1,1,1,0,1,0 2,1,3,2,0,9,2,0,1,1,1,1,1,1 1,0,2,1,0,2,2,0,1,1,1,1,1,0 2,4,3,2,0,9,2,0,1,1,1,0,1,0 0,0,0,3,2,4,3,0,1,1,1,1,1,0 0,0,6,2,2,5,3,4,1,1,1,0,1,0 0,0,0,3,2,3,5,0,1,1,1,1,1,0 0,0,2,1,0,4,2,0,1,1,1,1,1,1 0,4,1,2,0,2,2,0,1,1,1,0,1,0 0,0,1,2,2,7,3,1,1,1,1,0,1,0 1,0,1,2,0,0,2,0,1,1,1,1,1,1 0,4,3,2,1,8,5,0,0,1,1,0,1,0 0,0,9,1,2,11,3,0,0,1,1,2,1,0 1,0,0,3,0,5,2,4,1,1,1,0,1,0 0,0,0,3,2,5,1,0,0,1,1,0,1,0 0,0,3,2,2,5,1,0,0,1,1,1,1,0 3,4,3,2,0,2,2,0,1,1,1,0,1,0 0,0,1,2,2,8,1,0,0,1,1,0,1,0 0,0,0,3,3,0,1,0,1,1,1,1,1,0 2,4,0,3,1,5,3,0,0,1,1,1,1,0 1,0,10,3,0,4,2,0,1,1,1,0,1,1 0,0,3,2,2,4,3,0,1,1,1,0,1,0 1,4,0,3,1,5,3,0,0,1,1,1,1,0 1,4,3,2,0,1,2,0,1,1,1,0,1,1 0,0,3,2,2,3,3,0,1,1,1,1,1,0 2,4,3,2,0,4,2,0,1,1,1,2,1,0 2,1,3,2,0,4,2,0,1,1,1,0,1,0 0,0,3,2,2,8,1,0,1,1,1,2,1,0 2,1,0,3,0,9,2,0,1,1,1,2,1,0 1,3,1,2,0,12,2,0,1,1,1,1,1,1 1,2,3,2,0,9,2,0,1,1,1,1,1,0 0,0,12,1,2,2,3,0,1,1,1,0,1,0 1,0,0,3,1,7,5,3,0,1,1,0,1,0 1,0,3,2,0,2,2,0,1,1,1,0,1,0 1,3,1,2,3,8,5,0,0,1,1,0,1,0 1,0,7,1,2,7,5,4,0,1,1,0,1,0 1,0,1,2,1,8,3,0,0,1,1,0,1,0 0,2,12,1,2,3,1,0,1,1,1,2,1,0 0,0,1,2,2,3,1,0,1,1,1,0,1,0 0,0,1,2,2,5,3,0,0,1,1,2,1,0 0,0,1,2,1,2,5,0,0,1,1,0,1,0 0,0,0,3,2,0,3,0,1,1,1,0,1,0 0,0,3,2,2,1,3,0,1,1,1,2,1,0 2,0,12,1,0,7,2,0,1,1,1,0,1,0 0,0,1,2,0,3,1,0,0,1,1,2,1,0 1,0,14,0,3,11,5,3,0,1,1,2,1,0 0,1,3,2,0,1,2,0,1,1,1,1,1,0 0,4,3,2,2,2,1,0,1,1,1,0,1,0 1,0,7,1,1,2,5,0,0,1,1,0,1,0 1,0,1,2,1,1,3,0,0,1,1,1,1,0 0,0,3,2,2,5,1,0,1,1,1,0,1,0 1,3,10,3,0,5,2,0,1,1,1,0,1,1 1,2,10,3,1,4,3,4,0,1,1,1,1,0 0,3,3,2,2,6,1,0,1,1,1,1,1,0 0,0,3,2,2,1,1,0,1,1,1,2,1,0 1,0,1,2,2,8,3,0,0,1,1,0,1,0 0,4,1,2,2,12,1,0,1,1,1,0,1,0 0,3,3,2,0,13,4,2,1,1,1,1,1,0 0,0,2,1,2,2,3,0,1,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 1,1,3,2,1,3,3,0,1,1,1,1,1,0 1,5,0,3,0,4,2,0,1,1,1,1,1,1 0,5,0,3,2,8,3,0,1,1,1,0,1,0 0,0,7,1,2,2,5,0,1,1,1,2,1,0 1,0,1,2,1,3,5,0,0,1,1,1,1,0 2,0,2,1,1,1,1,0,0,1,1,1,1,1 1,0,3,2,0,1,2,0,1,1,1,0,1,1 1,0,0,3,2,4,3,0,1,1,1,1,1,1 0,0,0,3,2,5,5,4,0,1,1,2,1,0 1,4,4,3,0,5,2,0,1,1,1,2,1,0 1,0,3,2,2,2,1,0,1,1,1,2,1,0 0,1,1,2,0,3,2,2,1,1,1,1,1,0 0,0,12,1,2,2,3,0,0,1,1,2,1,0 0,0,3,2,0,3,2,0,1,1,1,1,1,0 0,0,3,2,2,11,3,0,0,1,1,0,1,0 1,0,3,2,5,1,3,0,1,1,1,1,1,0 2,1,12,1,0,10,2,0,1,1,1,1,1,0 1,0,1,2,0,8,2,0,1,1,1,0,1,0 1,0,3,2,2,6,3,2,1,1,1,2,1,0 0,4,1,2,2,4,1,0,0,1,1,0,1,0 1,0,1,2,0,5,2,0,1,1,1,1,1,0 0,1,3,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,2,1,1,0,1,1,1,2,1,0 2,0,3,2,0,8,2,0,1,1,1,0,1,0 1,0,4,3,1,5,3,0,1,1,1,0,1,1 0,0,3,2,2,2,1,0,1,1,1,2,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 0,0,12,1,0,3,1,0,0,1,1,2,1,0 0,4,3,2,2,2,3,0,0,1,1,0,1,0 0,0,3,2,4,8,5,0,1,1,1,2,1,0 0,0,5,2,2,5,3,0,0,1,1,0,1,0 0,0,5,2,3,10,3,0,1,1,1,1,1,0 2,1,3,2,0,3,2,0,1,1,1,0,1,0 0,0,3,2,2,8,1,0,0,1,1,0,1,0 1,0,3,2,1,8,3,1,0,1,1,0,1,0 1,2,0,3,0,4,2,0,1,1,1,0,1,1 0,0,12,1,1,6,3,0,0,1,1,2,1,0 1,0,2,1,4,2,5,0,0,1,1,0,1,0 1,2,10,3,0,4,2,0,1,1,1,1,1,1 1,5,3,2,1,8,5,1,0,1,1,0,1,0 1,1,4,3,0,5,2,0,1,1,1,1,1,1 0,0,3,2,0,3,2,0,1,1,1,1,1,0 1,1,3,2,1,3,3,0,1,1,1,1,1,0 2,2,0,3,0,4,2,0,1,1,1,2,1,1 0,0,5,2,1,0,1,0,0,1,1,2,1,0 1,0,6,2,2,1,5,0,1,1,1,0,1,0 2,0,1,2,2,1,3,0,1,1,1,1,1,0 0,0,1,2,0,6,2,0,1,1,1,0,1,0 1,0,0,3,2,8,3,0,0,1,1,1,1,0 0,0,8,0,1,6,3,0,1,1,1,2,1,0 0,0,1,2,2,5,1,0,0,1,1,0,1,0 0,0,3,2,0,7,2,0,1,1,1,1,1,1 1,4,1,2,0,12,2,0,1,1,1,1,1,1 0,0,3,2,0,3,2,0,1,1,1,1,1,1 1,0,0,3,1,8,3,0,1,1,1,1,1,1 0,0,1,2,2,2,1,0,0,1,1,0,1,0 0,0,6,2,2,1,1,0,1,1,1,1,1,0 0,0,3,2,0,10,2,0,1,1,1,0,1,0 3,0,10,3,2,4,1,0,0,1,1,0,1,0 1,0,3,2,3,2,4,4,1,1,1,0,1,0 0,5,0,3,2,5,3,0,1,1,1,1,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,1,2,2,2,1,0,0,1,1,2,1,0 0,0,12,1,2,1,3,0,1,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 2,1,5,2,0,1,2,0,1,1,1,2,1,0 1,0,1,2,0,0,2,0,1,1,1,1,1,0 1,0,14,0,0,6,2,0,1,1,1,0,1,0 0,1,8,0,2,1,1,0,1,1,1,0,1,0 0,5,5,2,4,4,3,0,0,1,1,0,1,0 0,4,0,3,2,5,3,0,1,1,1,0,1,0 0,0,3,2,0,10,2,4,1,1,1,0,1,0 3,0,6,2,4,5,3,0,1,1,1,1,1,1 0,4,1,2,0,4,2,0,1,1,1,0,1,0 1,0,3,2,2,6,3,0,1,1,1,0,1,0 0,1,1,2,0,2,0,0,0,1,1,1,1,0 0,0,3,2,2,8,3,0,1,1,1,1,1,0 1,0,0,3,1,6,3,0,1,1,1,1,1,1 1,0,0,3,0,3,0,0,0,1,1,2,1,1 1,0,11,0,4,2,4,0,0,1,1,2,1,0 0,4,3,2,1,0,5,0,0,1,1,0,1,0 1,0,2,1,1,10,3,0,1,1,1,1,1,0 0,4,0,3,2,0,1,0,1,1,1,0,1,0 1,0,1,2,0,4,2,0,1,1,1,0,1,0 1,4,10,3,0,5,0,0,0,1,1,0,1,0 0,0,0,3,2,0,3,0,0,1,1,1,1,1 1,4,1,2,1,2,3,0,0,1,1,0,1,0 1,1,3,2,0,1,2,0,1,1,1,1,1,0 1,5,3,2,1,1,5,0,1,1,1,0,1,0 1,0,0,3,0,6,2,0,1,1,1,1,1,0 0,0,1,2,2,2,1,0,1,1,1,2,1,0 0,0,3,2,0,9,2,0,1,1,1,1,1,0 1,4,12,1,0,2,2,0,1,1,1,0,1,0 0,0,3,2,0,10,2,0,1,1,1,2,1,1 0,0,0,3,2,8,3,0,0,1,1,1,1,0 0,0,3,2,2,3,4,4,0,1,1,2,1,0 1,0,6,2,0,1,2,0,1,1,1,0,1,1 0,0,1,2,0,8,2,0,1,1,1,1,1,0 0,0,5,2,2,4,3,0,0,1,1,0,1,1 1,0,3,2,0,6,0,0,0,1,1,2,1,0 1,1,10,3,0,5,2,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,0 0,0,9,1,2,3,1,4,0,1,1,2,1,0 1,0,3,2,0,6,2,0,1,1,1,0,1,1 1,0,0,3,0,1,2,0,1,1,1,0,1,1 0,0,3,2,1,6,5,4,0,1,1,2,1,0 1,0,3,2,0,10,2,1,1,1,1,1,1,0 1,0,4,3,0,5,2,0,1,1,1,1,1,1 0,0,1,2,0,1,2,0,1,1,1,0,1,1 0,0,0,3,2,2,3,0,1,1,1,0,1,0 1,3,1,2,1,8,3,0,0,1,1,0,1,0 2,0,3,2,0,3,2,0,1,1,1,1,1,0 1,0,1,2,0,8,2,4,1,1,1,0,1,1 1,4,1,2,0,12,2,0,1,1,1,0,1,1 0,0,1,2,2,8,3,1,1,1,1,2,1,0 2,2,4,3,0,5,2,0,1,1,1,1,1,1 1,3,1,2,3,8,3,4,1,1,1,0,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,1 1,4,10,3,0,5,2,0,1,1,1,0,1,1 0,0,3,2,2,8,1,4,0,1,1,0,1,0 0,0,3,2,6,2,0,0,0,1,1,0,1,1 1,0,3,2,1,4,5,1,0,1,1,0,1,0 0,4,1,2,3,6,3,4,1,1,1,0,1,0 1,0,9,1,0,1,2,0,1,1,1,0,1,1 2,1,3,2,0,4,0,0,0,1,1,2,1,1 1,0,3,2,5,10,3,3,1,1,1,2,1,0 0,0,6,2,3,5,5,0,0,1,1,0,1,0 2,1,3,2,0,4,2,0,1,1,1,2,1,0 0,4,0,3,2,5,1,4,0,1,1,0,1,0 0,4,0,3,2,5,1,0,0,1,1,0,1,0 1,0,11,0,0,7,2,0,1,1,1,0,1,0 1,0,0,3,1,4,3,0,1,1,1,1,1,0 2,0,3,2,1,3,3,0,0,1,1,2,1,0 1,0,2,1,0,1,2,0,1,1,1,1,1,1 1,0,3,2,0,3,2,0,1,1,1,2,1,0 0,1,3,2,0,1,2,0,1,1,1,0,1,1 2,4,6,2,0,12,2,0,1,1,1,2,1,1 0,1,10,3,3,0,3,0,0,1,1,2,1,0 0,2,0,3,0,4,2,0,1,1,1,1,1,1 1,0,3,2,0,1,2,0,1,1,1,0,1,1 1,0,6,2,0,5,2,0,1,1,1,0,1,1 1,5,1,2,1,8,5,0,0,1,1,1,1,0 1,0,3,2,1,7,3,0,0,1,1,0,1,0 1,0,12,1,2,2,5,0,0,1,1,2,1,0 0,4,1,2,2,8,5,0,0,1,1,2,1,0 2,0,1,2,2,8,3,0,0,1,1,0,1,0 1,0,3,2,3,5,4,3,0,1,1,0,1,0 0,0,1,2,0,2,0,0,0,1,1,0,1,1 0,0,1,2,0,1,2,0,1,1,1,0,1,0 1,4,0,3,3,5,5,0,0,1,1,0,1,0 2,0,0,3,0,3,2,0,1,1,1,2,1,1 2,0,8,0,0,10,2,0,1,1,1,1,1,1 0,0,1,2,5,10,3,0,0,1,1,2,1,0 1,2,6,2,0,4,4,0,1,1,1,1,1,1 0,0,3,2,2,8,3,0,0,1,1,1,1,0 0,0,9,1,2,6,1,0,1,1,1,2,1,0 1,3,1,2,1,4,5,0,1,1,1,1,1,1 1,1,3,2,0,1,2,0,1,1,1,1,1,0 2,0,3,2,4,8,5,0,0,1,1,0,1,0 1,0,1,2,0,8,2,0,1,1,1,1,1,1 1,5,10,3,2,5,3,0,1,1,1,0,1,1 1,3,1,2,1,8,5,4,0,1,1,0,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 0,0,6,2,2,4,3,0,1,1,1,0,1,0 1,0,6,2,0,1,2,0,1,1,1,1,1,1 1,4,3,2,0,4,2,0,1,1,1,0,1,1 1,0,12,1,0,8,2,0,1,1,1,0,1,0 0,0,0,3,2,0,3,0,0,1,1,0,1,0 1,0,3,2,0,10,2,0,1,1,1,0,1,0 2,1,0,3,0,9,2,0,1,1,1,2,1,0 1,5,6,2,0,5,2,0,1,1,1,0,1,0 1,1,0,3,0,1,2,0,1,1,1,1,1,1 0,0,3,2,2,9,1,0,1,1,1,2,1,0 0,0,3,2,0,3,0,0,0,1,1,2,1,0 1,0,1,2,1,8,5,0,0,1,1,1,1,0 1,0,3,2,0,10,2,0,1,1,1,0,1,0 1,1,0,3,2,3,3,0,1,1,1,1,1,1 0,0,1,2,0,1,2,0,1,1,1,0,1,1 1,0,1,2,0,3,2,0,1,1,1,0,1,1 0,0,1,2,1,2,3,0,0,1,1,2,1,0 1,0,1,2,1,0,3,0,0,1,1,1,1,0 1,1,6,2,0,12,2,0,1,1,1,2,1,0 0,0,3,2,2,7,3,0,1,1,1,2,1,0 0,0,2,1,5,3,1,1,1,1,1,2,1,0 1,0,3,2,1,3,5,0,0,1,1,0,1,0 0,0,3,2,2,8,1,4,0,1,1,2,1,0 0,0,0,3,2,4,3,0,1,1,1,1,1,1 0,0,11,0,2,6,3,0,1,1,1,1,1,0 1,0,3,2,0,6,2,0,1,1,1,0,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 2,1,1,2,0,9,2,0,1,1,1,1,1,0 0,0,0,3,3,4,3,0,0,1,1,0,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,0 1,0,0,3,4,8,3,0,0,1,1,2,1,0 1,0,3,2,1,1,3,0,1,1,1,0,1,0 1,0,3,2,2,3,3,0,1,1,1,1,1,1 0,0,0,3,2,6,1,0,1,1,1,2,1,0 0,0,0,3,2,3,3,0,1,1,1,1,1,0 2,0,3,2,0,10,2,0,1,1,1,2,1,0 1,4,10,3,1,5,5,0,0,1,1,0,1,0 0,1,1,2,2,1,1,0,1,1,1,1,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,1 0,4,3,2,2,6,1,2,1,1,1,2,1,0 2,0,0,3,0,3,2,0,1,1,1,0,1,1 0,0,3,2,1,12,1,0,0,1,1,0,1,0 0,4,0,3,2,5,3,0,0,1,1,1,1,0 2,0,1,2,1,2,5,0,0,1,1,2,1,0 1,0,5,2,1,3,5,0,0,1,1,2,1,0 2,0,0,3,1,4,3,0,1,1,1,2,1,0 2,0,3,2,4,2,5,0,0,1,1,0,1,0 1,3,0,3,2,8,3,0,1,1,1,1,1,1 0,0,0,3,2,4,5,0,1,1,1,0,1,1 0,4,3,2,1,9,1,1,1,1,1,1,1,0 1,0,3,2,0,0,2,0,1,1,1,0,1,1 1,0,4,3,0,5,2,0,1,1,1,1,1,1 0,0,2,1,2,8,4,0,0,1,1,2,1,0 0,0,12,1,2,5,5,4,0,1,1,0,1,0 1,0,0,3,2,5,3,0,0,1,1,0,1,1 1,0,3,2,0,3,2,0,1,1,1,1,1,1 2,0,9,1,4,2,5,4,0,1,1,0,1,0 1,0,3,2,0,6,2,0,1,1,1,0,1,0 0,0,8,0,2,7,3,3,0,1,1,0,1,0 0,3,1,2,2,0,3,0,1,1,1,0,1,0 2,1,14,0,0,9,2,0,1,1,1,2,1,0 1,0,1,2,0,5,2,0,1,1,1,1,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,0,3,0,5,2,0,1,1,1,1,1,1 1,0,3,2,0,4,2,0,1,1,1,1,1,0 0,4,12,1,2,10,4,0,1,1,1,0,1,0 0,1,0,3,0,3,1,0,1,1,1,2,1,0 1,1,3,2,1,2,5,0,0,1,1,0,1,0 0,0,3,2,2,4,1,0,0,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,6,2,2,2,1,0,1,1,1,2,1,0 1,1,0,3,0,5,2,0,1,1,1,2,1,1 1,0,1,2,2,5,3,0,1,1,1,2,1,1 0,0,3,2,2,7,3,0,1,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,1,1,1 0,0,3,2,2,8,3,0,0,1,1,0,1,0 1,3,0,3,0,8,0,1,0,1,1,0,1,1 2,0,1,2,0,8,2,0,1,1,1,0,1,1 0,0,0,3,0,5,2,1,1,1,1,0,1,1 0,0,1,2,2,3,3,0,1,1,1,0,1,0 2,0,9,1,0,3,2,0,1,1,1,0,1,1 0,0,1,2,0,2,2,0,1,1,1,1,1,0 0,5,5,2,2,0,1,0,1,1,1,2,1,0 1,0,3,2,1,2,5,0,0,1,1,2,1,0 0,0,0,3,2,4,3,1,1,1,1,2,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,1 1,0,3,2,0,6,2,1,1,1,1,2,1,0 1,1,0,3,0,3,2,0,1,1,1,0,1,0 1,0,3,2,0,5,0,0,0,1,1,0,1,0 0,0,0,3,2,5,3,0,1,1,1,0,1,0 0,0,1,2,2,1,5,4,1,1,1,0,1,0 0,0,1,2,2,5,1,0,0,1,1,2,1,0 3,5,11,0,4,2,3,0,0,1,1,2,1,0 1,0,12,1,1,7,3,1,0,1,1,0,1,0 0,0,1,2,2,4,3,0,0,1,1,2,1,0 0,4,3,2,0,1,2,0,1,1,1,0,1,0 0,0,0,3,2,4,3,0,0,1,1,0,1,0 1,0,3,2,2,2,3,0,0,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,0 0,0,3,2,2,10,3,0,1,1,1,1,1,0 2,0,0,3,2,5,3,0,0,1,1,1,1,0 1,5,1,2,1,8,1,0,0,1,1,2,1,0 1,0,3,2,1,1,3,0,1,1,1,2,1,0 1,0,3,2,1,7,3,0,0,1,1,0,1,0 2,0,3,2,1,3,3,0,0,1,1,2,1,0 0,0,9,1,2,2,1,0,1,1,1,0,1,0 1,0,3,2,0,4,2,0,1,1,1,1,1,1 1,1,1,2,1,5,3,0,0,1,1,2,1,0 0,0,8,0,3,1,3,0,0,1,1,0,1,0 0,0,0,3,0,5,2,0,1,1,1,2,1,0 1,4,3,2,0,8,2,0,1,1,1,0,1,0 0,0,1,2,2,3,1,0,1,1,1,2,1,0 2,0,13,3,0,5,2,0,1,1,1,1,1,1 2,3,1,2,0,8,0,0,0,1,1,0,1,1 1,0,14,0,0,1,4,0,0,1,1,0,1,0 2,0,1,2,2,8,3,0,0,1,1,0,1,0 1,0,1,2,0,3,2,0,1,1,1,1,1,1 0,4,3,2,0,1,2,0,1,1,1,1,1,0 1,0,3,2,0,4,2,0,1,1,1,0,1,1 2,5,0,3,0,5,2,0,1,1,1,0,1,0 2,4,3,2,4,2,5,0,0,1,1,2,1,0 2,4,0,3,0,5,0,0,0,1,1,1,1,1 0,3,1,2,2,6,3,0,1,1,1,0,1,0 1,0,1,2,0,3,2,0,1,1,1,1,1,1 0,0,1,2,2,8,1,0,0,1,1,2,1,0 1,0,3,2,0,6,2,0,1,1,1,1,1,0 2,4,3,2,0,6,2,0,1,1,1,0,1,0 1,1,0,3,0,8,0,0,0,1,1,2,1,1 3,0,0,3,0,4,2,0,1,1,1,0,1,0 0,0,1,2,2,6,3,0,1,1,1,2,1,0 0,1,0,3,2,1,3,0,1,1,1,1,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 2,3,1,2,4,5,5,2,0,1,1,0,1,0 0,0,9,1,2,8,1,0,0,1,1,2,1,0 1,0,1,2,1,4,4,0,0,1,1,1,1,0 1,4,1,2,2,5,4,0,1,1,1,2,1,0 0,0,1,2,2,3,1,1,1,1,1,2,1,0 1,0,3,2,1,6,3,4,1,1,1,2,1,0 0,0,1,2,2,2,1,0,1,1,1,2,1,0 2,4,13,3,4,5,5,0,0,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,6,2,2,0,3,0,1,1,1,0,1,0 0,0,3,2,2,3,1,0,0,1,1,2,1,0 2,0,3,2,0,2,0,0,0,1,1,0,1,0 0,0,3,2,2,3,1,3,1,1,1,0,1,0 0,0,5,2,0,6,2,0,1,1,1,2,1,0 0,0,3,2,2,8,1,0,0,1,1,0,1,0 1,0,1,2,0,4,2,0,1,1,1,1,1,1 0,0,1,2,2,2,1,0,0,1,1,2,1,0 1,0,3,2,1,5,3,0,0,1,1,0,1,0 1,4,0,3,0,12,2,0,1,1,1,1,1,0 0,0,12,1,2,2,1,0,0,1,1,2,1,0 1,0,1,2,5,3,5,4,0,1,1,0,1,0 0,0,1,2,2,4,1,0,0,1,1,0,1,0 2,1,11,0,1,1,3,0,0,1,1,2,1,0 0,0,9,1,0,7,2,0,1,1,1,0,1,0 3,0,3,2,1,2,3,0,0,1,1,2,1,0 1,0,1,2,0,2,2,0,1,1,1,0,1,0 0,0,1,2,0,3,2,0,1,1,1,0,1,1 1,0,3,2,0,5,0,0,0,1,1,2,1,0 1,0,3,2,0,10,2,0,1,1,1,0,1,0 1,4,6,2,1,12,1,0,0,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,1 1,2,1,2,0,4,2,0,1,1,1,1,1,1 1,3,3,2,1,8,3,0,0,1,1,0,1,0 0,0,3,2,2,11,3,0,0,1,1,1,1,0 2,0,3,2,4,0,3,0,0,1,1,2,1,0 0,0,1,2,2,4,1,0,1,1,1,2,1,0 2,0,1,2,0,1,2,0,1,1,1,1,1,0 1,0,6,2,3,5,3,0,1,1,1,0,1,0 1,0,6,2,1,1,3,0,1,1,1,2,1,0 2,0,1,2,1,4,3,0,0,1,1,1,1,0 2,0,5,2,0,4,2,0,1,1,1,1,1,1 1,0,3,2,1,8,5,0,0,1,1,0,1,0 2,0,1,2,0,0,2,0,1,1,1,2,1,0 0,0,2,1,2,9,1,0,1,1,1,2,1,0 0,0,1,2,0,0,2,0,1,1,1,1,1,0 1,0,3,2,3,5,5,2,0,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,1,1,0 1,0,1,2,1,5,3,0,1,1,1,0,1,0 1,0,2,1,1,10,3,0,1,1,1,1,1,1 2,0,8,0,0,2,0,0,0,1,1,1,1,0 1,0,1,2,0,6,2,0,1,1,1,0,1,0 1,4,13,3,1,5,3,0,0,1,1,0,1,1 1,0,3,2,1,3,5,0,0,1,1,0,1,0 0,0,1,2,2,3,3,0,0,1,1,0,1,0 1,4,7,1,0,1,2,0,1,1,1,0,1,0 1,5,3,2,0,2,0,0,0,1,1,2,1,0 0,0,0,3,2,1,1,0,1,1,1,0,1,0 0,0,1,2,2,1,1,0,1,1,1,0,1,0 1,0,3,2,1,10,3,0,1,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,0 2,0,3,2,0,4,2,0,1,1,1,0,1,0 0,0,0,3,0,5,2,0,1,1,1,1,1,1 0,0,1,2,0,6,2,0,1,1,1,2,1,0 1,0,10,3,0,5,0,0,0,1,1,0,1,1 0,0,3,2,0,9,2,0,1,1,1,0,1,0 0,0,1,2,2,6,3,0,1,1,1,0,1,0 1,0,12,1,1,7,3,4,0,1,1,0,1,0 1,1,1,2,0,3,2,0,1,1,1,1,1,0 0,4,3,2,2,10,1,0,1,1,1,0,1,0 1,0,7,1,0,7,2,4,1,1,1,0,1,0 0,0,3,2,2,1,1,0,1,1,1,1,1,0 1,0,0,3,2,3,3,0,1,1,1,0,1,0 2,1,1,2,0,9,2,0,1,1,1,2,1,0 1,0,3,2,0,3,2,0,1,1,1,1,1,1 1,3,3,2,2,10,5,1,0,1,1,0,1,0 1,5,10,3,1,5,3,1,0,1,1,0,1,0 0,0,13,3,2,8,1,0,1,1,1,2,1,0 3,2,3,2,1,3,3,0,1,1,1,2,1,0 0,0,2,1,2,2,1,0,1,1,1,2,1,0 0,0,6,2,2,1,3,0,1,1,1,0,1,0 0,1,6,2,2,9,3,0,1,1,1,1,1,0 1,0,1,2,2,8,3,0,0,1,1,0,1,0 0,0,5,2,0,3,0,0,0,1,1,2,1,0 1,4,2,1,0,6,2,4,1,1,1,0,1,0 1,0,11,0,0,2,2,0,1,1,1,1,1,0 0,0,3,2,2,4,3,0,0,1,1,1,1,0 1,0,3,2,0,2,2,0,1,1,1,1,1,1 0,0,0,3,2,8,3,0,0,1,1,2,1,0 0,0,3,2,2,1,3,0,1,1,1,1,1,0 0,0,0,3,5,3,3,0,0,1,1,1,1,0 0,0,8,0,2,7,1,4,0,1,1,0,1,0 2,0,0,3,0,3,2,0,1,1,1,2,1,1 0,0,2,1,2,1,3,0,1,1,1,0,1,0 0,0,3,2,0,7,2,4,1,1,1,0,1,0 0,0,9,1,2,6,1,0,1,1,1,2,1,0 0,0,3,2,2,7,3,0,1,1,1,0,1,0 0,0,4,3,2,5,3,0,1,1,1,1,1,0 1,4,0,3,0,12,0,4,0,1,1,0,1,1 2,0,3,2,0,10,2,0,1,1,1,2,1,0 2,2,3,2,4,3,3,0,0,1,1,2,1,0 0,0,1,2,0,3,2,0,1,1,1,0,1,0 1,0,3,2,3,7,5,0,1,1,1,0,1,0 1,0,13,3,0,5,2,0,1,1,1,0,1,1 0,0,3,2,1,8,1,0,0,1,1,0,1,0 0,0,0,3,2,5,1,1,1,1,1,0,1,0 1,4,1,2,4,8,3,0,0,1,1,2,1,0 1,0,1,2,0,8,0,0,0,1,1,0,1,1 0,0,3,2,0,1,2,2,1,1,1,0,1,0 1,0,1,2,0,4,2,0,1,1,1,0,1,1 0,0,3,2,2,10,3,3,1,1,1,0,1,0 0,0,12,1,2,2,1,0,0,1,1,2,1,0 1,5,1,2,2,2,1,4,0,1,1,0,1,0 1,0,0,3,1,4,3,0,1,1,1,0,1,1 0,0,1,2,2,5,1,0,0,1,1,2,1,0 0,1,3,2,0,2,0,0,0,1,1,0,1,0 0,0,2,1,2,2,1,0,1,1,1,2,1,0 3,0,1,2,1,3,5,4,0,1,1,2,1,0 0,0,1,2,2,1,3,0,1,1,1,0,1,0 1,0,0,3,0,5,2,0,1,1,1,0,1,1 0,1,1,2,2,9,1,0,1,1,1,1,1,0 2,0,3,2,0,10,2,0,1,1,1,0,1,0 0,3,5,2,2,4,5,0,0,1,1,2,1,0 0,0,1,2,2,0,3,0,1,1,1,1,1,0 1,0,5,2,0,3,2,0,1,1,1,1,1,1 2,0,3,2,0,3,2,0,1,1,1,2,1,0 0,4,1,2,2,12,3,4,1,1,1,0,1,0 1,0,3,2,3,8,5,0,0,1,1,0,1,0 3,0,3,2,4,2,4,0,0,1,1,2,1,0 0,0,14,0,2,7,4,0,1,1,1,0,1,0 0,0,10,3,2,4,3,0,1,1,1,0,1,1 1,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 2,0,3,2,1,2,5,0,0,1,1,0,1,0 0,0,1,2,2,2,5,4,0,1,1,0,1,0 1,5,3,2,1,2,3,4,0,1,1,1,1,0 0,0,1,2,2,5,1,0,0,1,1,0,1,0 0,0,3,2,2,8,5,4,0,1,1,0,1,0 0,2,1,2,3,3,1,0,0,1,1,0,1,0 0,0,12,1,2,2,1,0,0,1,1,2,1,0 0,0,1,2,2,1,3,0,0,1,1,0,1,0 0,0,2,1,2,2,1,0,0,1,1,2,1,0 0,0,1,2,2,3,3,0,1,1,1,2,1,0 0,5,1,2,2,2,3,0,0,1,1,0,1,0 2,0,3,2,2,2,3,4,0,1,1,0,1,0 1,0,1,2,3,2,5,0,0,1,1,2,1,0 1,0,1,2,1,4,3,0,1,1,1,0,1,0 1,0,1,2,4,4,5,0,0,1,1,0,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,1 0,0,2,1,2,6,1,0,1,1,1,1,1,0 1,0,0,3,5,4,3,0,1,1,1,0,1,1 2,2,1,2,0,10,2,0,1,1,1,0,1,1 1,0,1,2,1,4,3,0,0,1,1,0,1,0 1,4,3,2,0,10,2,4,1,1,1,0,1,1 1,4,0,3,1,4,3,0,0,1,1,0,1,1 1,2,0,3,0,1,2,0,1,1,1,0,1,0 1,5,10,3,2,5,3,0,1,1,1,0,1,0 0,1,5,2,2,3,3,0,1,1,1,1,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,0,3,2,9,1,0,1,1,1,1,1,0 0,0,0,3,2,3,3,0,0,1,1,0,1,0 2,0,0,3,1,5,5,4,0,1,1,1,1,0 2,4,10,3,0,4,2,0,1,1,1,0,1,1 1,0,3,2,0,7,2,0,1,1,1,1,1,0 1,0,8,0,1,7,3,0,0,1,1,0,1,0 0,5,1,2,2,8,1,0,0,1,1,2,1,0 0,0,3,2,2,11,4,0,0,1,1,2,1,0 1,0,1,2,1,3,3,0,0,1,1,1,1,0 2,2,3,2,0,4,2,0,1,1,1,1,1,1 0,0,3,2,2,6,3,0,1,1,1,1,1,0 0,0,0,3,0,3,2,0,1,1,1,1,1,1 0,0,2,1,2,8,4,1,0,1,1,2,1,0 1,4,10,3,1,5,5,4,0,1,1,0,1,0 2,0,2,1,0,3,2,0,1,1,1,0,1,0 0,0,3,2,2,3,3,0,0,1,1,2,1,0 1,0,1,2,1,5,3,0,0,1,1,0,1,0 0,0,3,2,2,6,4,0,1,1,1,2,1,0 0,0,1,2,1,7,5,2,1,1,1,0,1,0 1,1,3,2,1,4,5,0,0,1,1,2,1,1 2,0,12,1,0,1,2,0,1,1,1,0,1,1 1,0,10,3,0,5,2,0,1,1,1,1,1,1 2,1,3,2,0,9,2,0,1,1,1,1,1,0 1,5,3,2,3,8,5,0,0,1,1,2,1,0 0,0,3,2,2,8,3,0,1,1,1,0,1,0 0,0,3,2,2,3,3,0,0,1,1,2,1,0 1,0,10,3,2,4,3,0,1,1,1,0,1,0 0,0,1,2,1,4,5,0,0,1,1,2,1,0 0,0,3,2,2,6,1,0,0,1,1,2,1,0 1,1,4,3,0,5,2,0,1,1,1,1,1,1 1,4,10,3,0,5,2,0,1,1,1,1,1,1 1,0,3,2,3,8,4,0,0,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 0,0,0,3,2,12,1,0,0,1,1,0,1,0 2,1,3,2,0,4,2,0,1,1,1,2,1,0 0,0,3,2,1,4,3,0,0,1,1,0,1,0 2,1,3,2,0,9,2,0,1,1,1,1,1,1 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,1,5,5,0,0,1,1,0,1,0 1,2,1,2,0,4,2,0,1,1,1,0,1,0 0,0,7,1,2,2,1,0,1,1,1,0,1,0 2,3,0,3,1,8,3,4,0,1,1,0,1,0 1,4,1,2,3,12,1,3,1,1,1,1,1,0 1,1,3,2,1,3,3,0,1,1,1,0,1,0 0,0,2,1,2,7,1,0,1,1,1,1,1,0 0,4,3,2,1,4,3,0,1,1,1,0,1,0 1,0,5,2,0,5,2,0,1,1,1,1,1,0 1,5,10,3,0,5,2,0,1,1,1,1,1,1 0,0,5,2,2,3,3,0,1,1,1,0,1,0 0,4,3,2,2,2,5,4,0,1,1,0,1,0 0,5,6,2,0,12,2,0,1,1,1,0,1,1 0,0,1,2,2,2,5,0,0,1,1,2,1,0 1,0,0,3,2,5,3,0,1,1,1,0,1,0 1,0,3,2,2,6,3,0,1,1,1,1,1,0 0,0,3,2,2,3,5,0,0,1,1,1,1,0 1,1,0,3,2,3,1,1,1,1,1,1,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,1 2,0,5,2,1,4,3,0,0,1,1,1,1,0 2,3,6,2,1,5,5,0,1,1,1,0,1,1 1,0,9,1,3,1,3,4,1,1,1,0,1,0 1,0,3,2,1,1,4,0,1,1,1,0,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 1,0,6,2,0,1,2,0,1,1,1,0,1,0 0,4,1,2,2,8,1,0,0,1,1,2,1,0 0,0,7,1,0,1,2,0,1,1,1,1,1,0 2,2,0,3,0,4,2,0,1,1,1,1,1,1 0,5,10,3,0,5,2,0,1,1,1,1,1,0 1,0,1,2,0,4,2,0,1,1,1,1,1,1 1,5,3,2,3,8,5,0,0,1,1,2,1,0 0,0,3,2,2,2,1,0,0,1,1,2,1,0 2,4,3,2,1,10,4,0,1,1,1,0,1,0 0,0,1,2,2,10,1,0,0,1,1,2,1,0 1,0,1,2,0,8,0,0,0,1,1,0,1,1 0,0,1,2,0,3,2,0,1,1,1,1,1,0 0,0,5,2,5,3,1,4,0,1,1,2,1,0 0,1,3,2,2,3,5,1,0,1,1,0,1,0 1,0,1,2,0,1,2,4,1,1,1,1,1,1 2,0,0,3,0,6,2,0,1,1,1,0,1,1 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,1,1,0 0,0,5,2,0,2,0,0,0,1,1,0,1,0 2,1,10,3,4,5,3,0,1,1,1,2,1,1 2,0,0,3,1,5,3,0,0,1,1,1,1,1 1,2,0,3,0,5,2,0,1,1,1,1,1,1 0,1,3,2,0,10,2,0,1,1,1,1,1,1 0,0,0,3,2,5,3,0,0,1,1,1,1,0 1,0,3,2,1,0,5,0,0,1,1,1,1,0 0,0,1,2,2,8,3,0,0,1,1,0,1,0 0,0,2,1,1,1,5,0,0,1,1,1,1,0 1,0,6,2,0,1,2,0,1,1,1,1,1,0 0,0,1,2,2,0,1,0,1,1,1,2,1,0 0,0,0,3,0,3,2,0,1,1,1,1,1,1 0,1,1,2,0,5,0,0,0,1,1,1,1,1 1,0,3,2,1,2,3,4,0,1,1,2,1,0 1,0,3,2,1,1,5,0,1,1,1,0,1,0 1,4,4,3,0,5,2,0,1,1,1,1,1,1 1,1,3,2,0,10,2,0,1,1,1,0,1,1 2,0,0,3,2,0,3,0,1,1,1,0,1,1 2,0,3,2,0,1,2,0,1,1,1,0,1,1 0,0,0,3,2,4,1,0,0,1,1,2,1,0 0,1,3,2,2,2,5,0,1,1,1,1,1,0 0,0,5,2,0,4,2,0,1,1,1,1,1,0 0,0,0,3,2,3,1,0,0,1,1,2,1,0 1,0,3,2,1,10,3,0,1,1,1,1,1,0 0,0,3,2,3,2,3,0,0,1,1,0,1,0 0,0,3,2,2,7,3,0,0,1,1,0,1,0 1,0,10,3,0,5,0,0,0,1,1,2,1,1 1,0,1,2,0,10,2,0,1,1,1,1,1,0 0,0,12,1,2,2,1,0,1,1,1,2,1,0 1,1,9,1,0,1,2,0,1,1,1,1,1,0 2,0,5,2,0,1,2,0,1,1,1,0,1,1 2,1,3,2,2,1,1,0,1,1,1,2,1,0 1,4,6,2,2,1,3,0,1,1,1,1,1,0 1,1,3,2,0,1,2,0,1,1,1,2,1,0 2,1,10,3,0,4,2,0,1,1,1,1,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 2,0,7,1,2,11,3,4,0,1,1,2,1,0 0,0,6,2,0,1,2,0,1,1,1,2,1,0 0,0,2,1,0,1,2,0,1,1,1,0,1,0 0,0,3,2,2,4,3,0,1,1,1,1,1,0 1,0,3,2,1,8,5,0,0,1,1,0,1,0 1,4,3,2,2,1,3,0,1,1,1,0,1,0 2,4,9,1,0,9,2,0,1,1,1,0,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,6,2,2,5,3,0,0,1,1,0,1,0 1,0,1,2,1,4,5,0,0,1,1,1,1,0 0,0,0,3,2,0,3,0,0,1,1,0,1,0 1,2,1,2,1,1,3,0,1,1,1,1,1,0 2,2,1,2,4,3,3,0,0,1,1,2,1,0 0,1,6,2,1,7,3,0,0,1,1,0,1,0 0,0,3,2,3,2,3,0,0,1,1,0,1,0 0,0,3,2,2,8,1,0,1,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,1,1,0 1,0,3,2,2,8,3,0,1,1,1,2,1,0 0,0,3,2,2,6,1,0,1,1,1,0,1,0 0,0,0,3,2,2,1,0,0,1,1,2,1,0 1,0,11,0,3,2,3,0,0,1,1,0,1,0 0,0,3,2,2,6,1,0,1,1,1,1,1,0 0,0,0,3,0,3,2,0,1,1,1,1,1,1 0,0,1,2,2,8,5,0,0,1,1,2,1,0 1,4,1,2,1,12,5,0,0,1,1,0,1,0 0,0,1,2,2,6,1,0,1,1,1,1,1,0 0,0,1,2,2,8,3,0,1,1,1,0,1,0 1,0,3,2,0,5,0,0,0,1,1,0,1,1 1,0,10,3,0,4,0,0,0,1,1,2,1,1 0,0,1,2,1,5,3,0,0,1,1,0,1,0 0,0,13,3,2,5,3,0,0,1,1,1,1,1 1,1,3,2,1,5,3,0,1,1,1,2,1,0 0,0,3,2,2,7,3,4,1,1,1,0,1,0 1,4,10,3,1,5,5,0,0,1,1,0,1,0 0,0,0,3,2,2,1,0,1,1,1,0,1,0 0,0,6,2,2,5,5,0,0,1,1,1,1,0 0,0,0,3,0,4,0,0,0,1,1,0,1,0 0,0,0,3,5,8,3,0,0,1,1,0,1,0 0,4,5,2,2,5,1,0,0,1,1,2,1,0 1,0,7,1,2,11,5,0,0,1,1,0,1,0 1,4,1,2,0,1,2,0,1,1,1,1,1,0 0,0,3,2,2,1,3,0,1,1,1,0,1,0 0,0,3,2,2,8,1,0,1,1,1,0,1,0 0,0,3,2,2,2,3,0,1,1,1,0,1,0 2,0,10,3,5,4,3,0,1,1,1,1,1,1 1,0,12,1,1,7,3,4,1,1,1,0,1,0 0,0,6,2,0,0,2,0,1,1,1,0,1,1 1,0,1,2,0,4,2,0,1,1,1,1,1,1 0,0,5,2,2,12,1,0,1,1,1,1,1,0 0,5,1,2,2,4,1,0,1,1,1,2,1,0 1,0,1,2,0,6,2,0,1,1,1,1,1,0 1,4,5,2,0,5,2,0,1,1,1,1,1,0 1,4,1,2,0,8,2,2,1,1,1,0,1,0 0,3,1,2,0,8,2,0,1,1,1,1,1,1 1,0,3,2,0,3,2,0,1,1,1,0,1,1 0,1,3,2,0,1,2,0,1,1,1,1,1,0 1,4,6,2,2,12,5,0,1,1,1,1,1,0 0,0,3,2,0,3,2,0,1,1,1,0,1,0 1,0,10,3,2,3,3,0,1,1,1,1,1,0 1,2,10,3,0,5,2,0,1,1,1,1,1,1 1,0,3,2,0,10,2,0,1,1,1,1,1,1 1,0,0,3,1,5,3,0,1,1,1,0,1,0 0,5,1,2,0,4,2,0,1,1,1,2,1,0 0,2,0,3,2,5,3,0,1,1,1,1,1,1 0,0,3,2,0,1,2,0,1,1,1,1,1,0 1,0,3,2,4,1,5,4,0,1,1,0,1,0 1,0,6,2,0,4,2,0,1,1,1,0,1,0 2,0,3,2,0,6,2,0,1,1,1,0,1,1 0,0,12,1,0,3,2,0,1,1,1,0,1,0 2,0,3,2,0,3,2,0,1,1,1,0,1,0 1,0,10,3,0,5,2,0,1,1,1,1,1,1 0,0,3,2,2,1,1,0,0,1,1,0,1,0 1,4,3,2,0,8,0,0,0,1,1,2,1,1 1,2,0,3,0,4,2,0,1,1,1,1,1,0 0,0,12,1,2,6,4,0,1,1,1,2,1,0 1,0,3,2,1,2,3,0,0,1,1,2,1,0 1,0,3,2,1,4,5,0,0,1,1,0,1,1 0,0,3,2,0,1,2,0,1,1,1,2,1,0 2,0,3,2,1,1,3,0,0,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,0 2,0,0,3,0,5,2,0,1,1,1,1,1,1 1,5,4,3,0,5,2,4,1,1,1,0,1,0 1,0,0,3,0,0,2,0,1,1,1,1,1,1 1,0,3,2,1,8,5,0,0,1,1,0,1,0 1,0,0,3,1,5,3,0,1,1,1,1,1,0 2,0,13,3,0,5,2,0,1,1,1,1,1,1 1,4,5,2,0,4,2,0,1,1,1,1,1,1 0,0,0,3,2,5,3,0,0,1,1,2,1,0 1,1,1,2,3,5,3,0,1,1,1,2,1,0 1,0,0,3,0,8,2,0,1,1,1,0,1,1 1,0,3,2,2,7,5,2,1,1,1,1,1,0 1,3,10,3,2,5,3,0,0,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,1 0,0,3,2,0,7,2,0,1,1,1,2,1,1 0,0,6,2,1,4,5,0,0,1,1,0,1,0 3,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,6,2,2,5,1,1,1,1,1,0,1,0 0,0,6,2,2,8,3,0,0,1,1,0,1,0 1,0,1,2,0,8,0,3,0,1,1,2,1,1 3,2,12,1,0,4,0,0,0,1,1,2,1,0 0,0,12,1,2,2,1,4,0,1,1,2,1,0 2,0,6,2,0,0,2,0,1,1,1,0,1,1 2,3,12,1,0,1,2,0,1,1,1,0,1,0 1,0,0,3,0,8,2,0,1,1,1,1,1,1 0,0,3,2,0,6,2,0,1,1,1,0,1,0 1,0,0,3,0,5,0,1,0,1,1,2,1,1 0,0,6,2,0,0,0,0,0,1,1,2,1,1 0,0,3,2,2,2,4,0,1,1,1,2,1,0 0,3,1,2,0,8,2,0,1,1,1,0,1,1 0,0,3,2,2,8,3,0,1,1,1,1,1,0 1,0,10,3,0,5,2,0,1,1,1,1,1,1 1,5,0,3,0,4,2,4,1,1,1,0,1,1 0,0,3,2,0,10,2,0,1,1,1,1,1,0 2,0,1,2,0,1,2,0,1,1,1,0,1,0 0,0,2,1,0,6,2,1,1,1,1,0,1,0 1,0,1,2,4,2,5,4,0,1,1,0,1,0 1,0,3,2,1,1,1,0,1,1,1,0,1,0 0,0,3,2,2,1,3,0,1,1,1,1,1,0 3,4,3,2,4,2,5,2,0,1,1,2,1,0 0,0,3,2,0,6,2,0,1,1,1,1,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 0,1,3,2,0,3,2,0,1,1,1,2,1,0 2,0,1,2,0,7,2,0,1,1,1,0,1,0 2,0,0,3,0,8,2,0,1,1,1,0,1,0 0,0,3,2,2,6,1,0,1,1,1,0,1,0 1,5,3,2,0,8,0,4,0,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,2,3,1,0,1,1,1,2,1,0 1,0,12,1,0,7,2,0,1,1,1,1,1,1 0,4,0,3,2,0,5,1,0,1,1,0,1,0 0,0,1,2,3,8,5,4,0,1,1,2,1,0 0,0,3,2,2,4,3,0,0,1,1,0,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,0 0,4,0,3,0,12,2,0,1,1,1,0,1,0 1,2,3,2,0,4,2,0,1,1,1,0,1,1 0,0,1,2,2,4,3,0,0,1,1,0,1,0 1,0,3,2,2,8,4,0,0,1,1,0,1,0 0,1,3,2,2,1,3,0,1,1,1,1,1,0 1,0,1,2,0,12,2,3,1,1,1,2,1,0 0,4,0,3,2,5,3,0,1,1,1,1,1,0 0,0,1,2,2,3,1,1,1,1,1,2,1,0 0,4,9,1,2,6,5,4,0,1,1,2,1,0 0,0,6,2,2,5,3,0,1,1,1,0,1,0 1,0,6,2,1,7,3,4,1,1,1,1,1,0 1,0,3,2,0,1,2,1,1,1,1,0,1,0 1,2,5,2,0,3,2,0,1,1,1,0,1,1 0,0,0,3,2,5,3,0,1,1,1,2,1,0 0,0,1,2,2,9,1,0,1,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,1 1,0,1,2,0,1,2,0,1,1,1,1,1,1 2,0,12,1,0,7,2,0,1,1,1,0,1,0 1,0,1,2,1,8,5,0,0,1,1,0,1,0 1,1,1,2,2,8,5,0,1,1,1,2,1,0 0,0,0,3,2,3,3,0,0,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,1 1,0,12,1,1,7,3,0,0,1,1,0,1,0 1,3,6,2,2,5,3,0,0,1,1,0,1,1 1,0,2,1,2,10,3,0,1,1,1,1,1,0 1,3,1,2,2,4,3,4,1,1,1,0,1,1 0,5,1,2,2,8,1,0,0,1,1,0,1,0 2,0,12,1,0,2,0,4,0,1,1,0,1,0 1,0,10,3,0,5,2,0,1,1,1,1,1,1 1,4,3,2,1,4,5,2,0,1,1,0,1,0 0,0,3,2,1,12,3,0,1,1,1,0,1,0 2,0,5,2,0,3,2,0,1,1,1,1,1,0 1,0,1,2,0,5,2,0,1,1,1,0,1,1 1,0,0,3,0,3,2,0,1,1,1,1,1,1 1,0,1,2,0,2,2,0,1,1,1,1,1,1 1,0,1,2,2,8,5,0,0,1,1,2,1,0 2,1,14,0,0,9,2,0,1,1,1,0,1,0 0,0,3,2,2,3,1,2,0,1,1,2,1,0 0,0,1,2,2,8,1,4,0,1,1,2,1,0 2,4,10,3,0,5,2,0,1,1,1,0,1,1 1,0,1,2,3,3,4,4,0,1,1,2,1,0 1,1,11,0,0,4,2,0,1,1,1,1,1,1 1,4,10,3,0,5,0,0,0,1,1,0,1,1 0,3,0,3,2,12,3,0,1,1,1,1,1,0 0,4,1,2,2,10,5,4,0,1,1,0,1,0 1,4,3,2,2,4,1,2,0,1,1,0,1,0 1,5,3,2,1,4,5,0,0,1,1,0,1,0 0,0,0,3,2,3,4,0,0,1,1,0,1,0 0,4,6,2,2,12,3,0,1,1,1,1,1,0 2,1,14,0,0,9,2,0,1,1,1,1,1,0 1,4,1,2,0,9,2,0,1,1,1,0,1,1 0,0,3,2,2,10,1,0,1,1,1,0,1,0 2,0,3,2,0,5,2,0,1,1,1,2,1,0 0,0,2,1,1,7,5,0,0,1,1,0,1,0 1,0,1,2,1,8,3,0,0,1,1,2,1,0 0,0,1,2,0,1,2,0,1,1,1,0,1,0 1,0,0,3,2,5,3,0,0,1,1,0,1,0 0,4,3,2,0,1,2,0,1,1,1,0,1,0 1,0,3,2,1,7,3,0,1,1,1,0,1,0 1,1,0,3,1,1,1,0,1,1,1,0,1,0 1,0,0,3,0,8,0,0,0,1,1,2,1,1 1,0,1,2,1,5,5,4,0,1,1,2,1,0 0,0,3,2,2,1,3,0,0,1,1,0,1,0 2,0,1,2,0,5,0,0,0,1,1,0,1,0 2,1,3,2,1,1,3,0,1,1,1,0,1,0 2,0,6,2,4,5,3,0,0,1,1,0,1,0 0,0,1,2,3,11,3,0,0,1,1,2,1,0 1,0,3,2,1,3,5,0,0,1,1,1,1,0 1,0,3,2,1,2,3,0,1,1,1,2,1,0 0,4,6,2,0,12,2,0,1,1,1,1,1,0 1,0,3,2,1,10,3,0,1,1,1,0,1,0 1,0,8,0,3,2,3,0,0,1,1,2,1,0 0,0,1,2,0,1,2,0,1,1,1,1,1,1 0,0,0,3,2,5,3,0,1,1,1,2,1,0 0,0,1,2,2,7,4,0,0,1,1,0,1,0 0,0,3,2,2,0,3,0,0,1,1,0,1,0 1,0,1,2,0,3,0,1,0,1,1,0,1,0 0,1,3,2,2,9,1,1,1,1,1,0,1,0 1,0,3,2,1,8,5,4,0,1,1,1,1,0 1,0,3,2,2,0,4,0,1,1,1,0,1,0 2,0,1,2,0,3,2,0,1,1,1,1,1,1 2,0,0,3,0,4,2,0,1,1,1,1,1,1 1,4,10,3,2,5,3,0,0,1,1,0,1,0 0,0,3,2,2,2,1,0,1,1,1,2,1,0 1,0,6,2,0,3,2,0,1,1,1,1,1,0 1,0,3,2,1,7,5,0,0,1,1,0,1,0 1,0,1,2,0,5,0,0,0,1,1,0,1,1 0,0,12,1,2,2,1,0,0,1,1,2,1,0 0,0,2,1,2,1,1,0,1,1,1,2,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,1 1,5,1,2,1,4,3,0,0,1,1,2,1,0 0,0,3,2,2,6,3,0,1,1,1,0,1,0 0,0,0,3,2,3,3,0,0,1,1,1,1,0 0,0,0,3,0,5,2,0,1,1,1,0,1,1 1,0,2,1,1,2,1,0,1,1,1,0,1,0 2,0,1,2,4,2,3,0,0,1,1,0,1,0 0,0,12,1,1,2,5,0,0,1,1,0,1,0 1,0,4,3,0,5,2,0,1,1,1,1,1,1 1,0,3,2,0,7,2,0,1,1,1,0,1,1 1,0,3,2,2,10,5,0,1,1,1,0,1,0 0,0,3,2,2,4,5,0,0,1,1,2,1,0 1,3,3,2,5,8,3,4,0,1,1,0,1,0 0,1,3,2,0,9,2,0,1,1,1,0,1,0 0,0,12,1,2,2,3,0,1,1,1,2,1,0 0,0,1,2,2,4,3,0,0,1,1,1,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,1 1,0,3,2,0,1,2,0,1,1,1,0,1,1 1,0,0,3,0,1,2,0,1,1,1,1,1,0 0,0,3,2,2,10,3,0,1,1,1,1,1,0 0,0,3,2,0,1,2,0,1,1,1,1,1,0 1,0,12,1,2,9,5,0,1,1,1,2,1,0 0,0,3,2,2,3,5,4,0,1,1,2,1,0 1,2,1,2,4,4,3,0,1,1,1,0,1,1 0,0,3,2,2,12,3,0,1,1,1,0,1,0 0,0,3,2,2,10,3,0,1,1,1,0,1,0 2,0,3,2,0,10,2,0,1,1,1,2,1,0 0,0,1,2,0,3,2,0,1,1,1,1,1,0 0,0,0,3,2,4,4,0,1,1,1,1,1,1 0,0,10,3,2,8,1,0,1,1,1,0,1,0 0,0,2,1,0,1,2,0,1,1,1,1,1,0 0,0,3,2,0,3,2,0,1,1,1,1,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 0,0,2,1,2,6,3,4,1,1,1,0,1,0 0,5,1,2,2,8,3,0,0,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,1,2,0,5,2,0,1,1,1,0,1,0 1,0,3,2,1,2,4,0,1,1,1,2,1,0 0,4,3,2,2,2,1,4,1,1,1,2,1,0 0,1,12,1,2,1,3,0,1,1,1,1,1,0 1,0,3,2,0,7,2,0,1,1,1,1,1,0 0,0,2,1,2,1,4,0,1,1,1,2,1,0 1,1,3,2,0,1,2,0,1,1,1,1,1,0 0,0,2,1,2,6,1,0,1,1,1,2,1,0 2,0,3,2,4,6,3,0,0,1,1,2,1,0 1,4,0,3,1,5,5,0,0,1,1,0,1,0 0,0,3,2,3,0,3,0,1,1,1,1,1,0 1,0,1,2,0,7,2,0,1,1,1,1,1,0 0,4,10,3,0,5,2,0,1,1,1,0,1,0 1,0,1,2,1,8,5,0,0,1,1,2,1,0 0,0,3,2,0,3,2,0,1,1,1,1,1,0 0,0,8,0,0,1,2,0,1,1,1,0,1,0 0,0,0,3,0,1,2,0,1,1,1,1,1,0 0,0,0,3,2,5,3,0,0,1,1,0,1,0 1,0,1,2,0,7,2,4,1,1,1,0,1,0 0,0,12,1,2,2,1,0,0,1,1,2,1,0 1,0,12,1,0,1,2,0,1,1,1,0,1,0 0,1,1,2,2,2,3,4,1,1,1,0,1,0 1,0,3,2,2,8,1,0,0,1,1,0,1,0 2,4,3,2,0,10,2,0,1,1,1,0,1,0 3,1,3,2,0,9,2,0,1,1,1,2,1,0 1,1,1,2,0,9,0,0,0,1,1,2,1,0 1,5,3,2,0,12,2,4,1,1,1,0,1,1 0,4,0,3,2,5,1,4,1,1,1,2,1,0 1,0,3,2,1,2,1,1,0,1,1,0,1,0 1,0,0,3,2,4,3,0,0,1,1,1,1,0 1,2,6,2,0,4,2,4,1,1,1,0,1,1 0,0,5,2,1,8,3,0,0,1,1,2,1,0 0,0,1,2,0,1,2,0,1,1,1,0,1,0 1,4,1,2,1,2,5,0,0,1,1,2,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 2,0,3,2,1,10,3,4,1,1,1,0,1,0 0,0,0,3,2,5,1,0,0,1,1,0,1,1 0,1,3,2,0,3,2,0,1,1,1,1,1,1 0,0,2,1,2,2,1,0,1,1,1,2,1,0 1,0,1,2,3,5,5,0,0,1,1,0,1,0 1,1,6,2,0,9,2,0,1,1,1,1,1,0 2,2,8,0,0,1,2,0,1,1,1,0,1,1 2,1,10,3,1,5,5,0,0,1,1,2,1,0 0,4,12,1,2,1,5,4,1,1,1,1,1,0 2,0,2,1,1,2,5,0,0,1,1,2,1,0 0,4,0,3,0,1,2,0,1,1,1,0,1,0 0,0,1,2,2,5,1,0,0,1,1,0,1,0 1,0,3,2,2,8,5,4,0,1,1,0,1,0 1,1,0,3,0,3,2,0,1,1,1,1,1,1 1,1,3,2,0,3,2,0,1,1,1,0,1,0 0,1,0,3,0,1,2,0,1,1,1,1,1,0 1,0,3,2,1,8,5,0,0,1,1,0,1,0 1,0,3,2,3,7,5,0,0,1,1,1,1,0 1,0,1,2,0,3,2,0,1,1,1,1,1,0 1,4,0,3,0,5,2,0,1,1,1,1,1,1 0,0,1,2,2,4,3,0,0,1,1,0,1,0 1,0,10,3,2,8,5,0,0,1,1,0,1,0 1,1,0,3,0,5,2,1,1,1,1,1,1,1 1,1,3,2,0,0,2,0,1,1,1,2,1,1 0,0,3,2,2,7,4,0,1,1,1,1,1,0 1,3,5,2,0,5,2,0,1,1,1,0,1,1 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,3,13,3,2,5,3,0,0,1,1,1,1,0 0,0,10,3,2,8,3,0,1,1,1,1,1,0 2,3,0,3,3,5,3,0,1,1,1,0,1,1 0,0,1,2,2,8,1,0,0,1,1,0,1,0 1,0,3,2,2,1,3,0,1,1,1,1,1,0 1,0,3,2,2,4,1,0,0,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,0,7,2,0,1,1,1,0,1,0 0,0,12,1,2,3,1,0,0,1,1,2,1,0 1,0,3,2,2,1,4,2,1,1,1,1,1,1 1,0,3,2,1,10,3,0,1,1,1,1,1,0 1,0,8,0,3,2,3,0,0,1,1,2,1,0 1,2,0,3,0,4,2,1,1,1,1,1,1,1 2,0,3,2,3,3,3,2,0,1,1,2,1,0 1,4,1,2,0,12,2,0,1,1,1,1,1,1 1,0,3,2,0,9,2,0,1,1,1,0,1,0 3,0,8,0,0,7,2,0,1,1,1,0,1,0 2,0,8,0,4,2,3,4,0,1,1,2,1,0 0,1,3,2,0,9,0,0,0,1,1,2,1,0 0,0,3,2,2,1,1,1,1,1,1,2,1,0 0,0,3,2,0,12,2,0,1,1,1,1,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,0,3,2,5,3,4,1,1,1,1,1,1 0,2,6,2,0,4,2,0,1,1,1,0,1,0 0,0,1,2,0,1,2,1,1,1,1,0,1,0 0,1,1,2,0,3,2,0,1,1,1,1,1,0 1,0,3,2,0,2,2,0,1,1,1,0,1,0 0,1,3,2,2,12,3,0,1,1,1,2,1,0 0,4,3,2,2,12,3,2,1,1,1,0,1,0 0,0,6,2,0,2,0,4,0,1,1,0,1,1 0,0,1,2,0,4,2,0,1,1,1,0,1,0 1,0,3,2,3,2,5,4,0,1,1,2,1,0 0,5,13,3,0,5,0,0,0,1,1,1,1,1 1,0,0,3,0,5,2,0,1,1,1,0,1,1 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,4,2,1,2,12,1,0,1,1,1,2,1,0 1,0,8,0,1,2,5,0,0,1,1,2,1,0 2,0,3,2,0,3,2,0,1,1,1,0,1,0 0,1,3,2,1,2,5,0,0,1,1,1,1,0 2,0,3,2,0,1,2,0,1,1,1,0,1,1 1,1,1,2,0,4,2,0,1,1,1,0,1,0 0,4,0,3,2,5,1,0,0,1,1,2,1,0 0,0,2,1,2,6,3,0,1,1,1,0,1,0 1,0,6,2,0,4,2,0,1,1,1,1,1,1 2,0,1,2,4,4,3,0,0,1,1,2,1,0 0,0,1,2,2,4,3,0,0,1,1,0,1,0 2,0,5,2,5,8,4,0,0,1,1,2,1,0 1,0,3,2,2,8,3,4,0,1,1,0,1,0 1,5,1,2,1,8,3,4,0,1,1,2,1,0 2,0,7,1,0,1,2,0,1,1,1,1,1,0 0,0,0,3,2,7,3,0,1,1,1,2,1,0 0,1,4,3,0,5,2,0,1,1,1,1,1,1 2,0,0,3,0,7,2,0,1,1,1,0,1,0 1,4,1,2,1,4,3,0,1,1,1,1,1,1 1,0,0,3,1,2,3,0,1,1,1,0,1,0 1,0,3,2,0,1,2,4,1,1,1,1,1,1 0,1,1,2,0,1,2,0,1,1,1,1,1,1 2,0,5,2,0,3,2,0,1,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 2,0,0,3,4,4,5,0,1,1,1,0,1,1 1,0,0,3,2,5,3,0,1,1,1,2,1,0 0,0,3,2,2,4,1,0,1,1,1,0,1,0 0,1,3,2,2,1,3,0,1,1,1,0,1,0 1,0,1,2,1,2,5,0,0,1,1,2,1,0 0,0,1,2,2,8,3,0,0,1,1,1,1,0 0,0,9,1,2,1,3,0,1,1,1,0,1,0 1,2,3,2,0,4,2,0,1,1,1,1,1,1 0,0,1,2,0,4,2,0,1,1,1,1,1,1 1,0,3,2,1,7,3,4,1,1,1,0,1,0 1,0,0,3,0,0,0,0,0,1,1,0,1,1 0,0,3,2,2,7,5,4,0,1,1,0,1,0 0,0,6,2,0,4,0,0,0,1,1,1,1,1 1,4,13,3,0,5,0,0,0,1,1,1,1,1 1,0,1,2,0,2,2,0,1,1,1,0,1,0 0,0,0,3,0,8,2,0,1,1,1,0,1,1 1,0,5,2,1,8,5,4,1,1,1,2,1,0 0,0,0,3,2,4,3,0,1,1,1,0,1,0 1,2,1,2,0,4,2,0,1,1,1,1,1,1 0,0,1,2,2,6,1,0,1,1,1,1,1,0 0,0,10,3,2,0,3,0,1,1,1,1,1,0 0,0,6,2,0,1,2,0,1,1,1,0,1,1 0,0,0,3,2,4,3,0,0,1,1,0,1,0 0,5,3,2,0,8,2,0,1,1,1,0,1,0 2,0,10,3,4,8,5,0,0,1,1,2,1,0 0,0,1,2,2,2,3,0,0,1,1,2,1,0 0,0,0,3,2,8,1,0,0,1,1,2,1,0 3,0,8,0,4,11,3,0,0,1,1,2,1,0 2,0,10,3,0,4,2,0,1,1,1,0,1,1 2,0,3,2,1,0,5,0,0,1,1,0,1,0 1,0,5,2,1,1,3,4,1,1,1,0,1,0 1,0,3,2,1,10,3,0,1,1,1,0,1,0 0,5,1,2,2,8,1,0,1,1,1,0,1,0 1,0,0,3,2,2,3,0,1,1,1,0,1,0 0,0,3,2,0,7,0,0,0,1,1,0,1,0 1,0,1,2,1,5,5,4,0,1,1,0,1,0 0,1,1,2,0,10,2,0,1,1,1,1,1,0 0,0,3,2,2,12,1,2,1,1,1,0,1,0 0,0,6,2,2,7,3,3,1,1,1,0,1,0 2,0,1,2,1,8,5,4,0,1,1,0,1,0 1,0,10,3,2,8,1,0,0,1,1,0,1,0 1,3,1,2,0,8,0,0,0,1,1,0,1,0 0,5,10,3,2,4,3,0,1,1,1,0,1,0 0,4,0,3,2,5,1,0,1,1,1,2,1,0 0,2,3,2,0,1,2,0,1,1,1,1,1,0 0,0,1,2,3,3,5,0,0,1,1,2,1,0 2,0,13,3,2,5,3,0,0,1,1,1,1,1 1,0,3,2,0,10,2,0,1,1,1,1,1,1 0,0,3,2,2,2,1,0,1,1,1,0,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,0 0,0,1,2,2,4,3,0,1,1,1,0,1,0 0,0,0,3,2,4,3,0,1,1,1,1,1,1 1,0,1,2,1,8,5,0,0,1,1,1,1,0 0,0,5,2,2,5,3,0,0,1,1,0,1,1 1,0,2,1,0,2,2,0,1,1,1,0,1,0 0,0,0,3,0,2,2,0,1,1,1,2,1,1 0,0,3,2,2,7,3,0,1,1,1,1,1,0 3,2,13,3,0,9,2,0,1,1,1,0,1,1 0,1,10,3,0,9,2,0,1,1,1,1,1,0 1,1,7,1,0,9,2,0,1,1,1,1,1,0 0,0,3,2,3,1,3,4,1,1,1,0,1,0 2,0,3,2,1,3,3,0,0,1,1,2,1,0 1,1,10,3,0,3,2,0,1,1,1,1,1,1 0,0,3,2,0,1,2,0,1,1,1,0,1,0 2,0,3,2,1,2,3,0,0,1,1,0,1,0 0,0,3,2,2,3,3,0,0,1,1,1,1,0 3,0,7,1,0,11,0,4,0,1,1,2,1,0 1,1,1,2,2,1,3,0,1,1,1,0,1,0 1,0,3,2,0,8,4,0,0,1,1,0,1,0 0,1,5,2,1,3,5,4,1,1,1,1,1,0 1,4,3,2,5,10,4,0,0,1,1,2,1,0 0,0,3,2,1,3,3,0,1,1,1,1,1,0 0,0,1,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,2,8,1,0,0,1,1,2,1,0 0,0,0,3,5,2,5,0,0,1,1,2,1,0 0,0,6,2,2,8,3,0,0,1,1,0,1,0 0,0,1,2,2,8,5,4,0,1,1,0,1,0 0,0,9,1,2,2,1,0,0,1,1,2,1,0 0,0,3,2,0,3,2,0,1,1,1,1,1,0 0,0,14,0,0,6,2,0,1,1,1,0,1,0 0,0,0,3,2,5,3,0,0,1,1,0,1,0 1,0,3,2,1,10,3,0,1,1,1,1,1,0 0,0,0,3,2,4,3,0,0,1,1,0,1,0 2,0,1,2,0,10,2,0,1,1,1,0,1,1 0,0,12,1,3,3,5,4,0,1,1,2,1,0 0,0,6,2,1,10,3,0,1,1,1,0,1,0 0,0,0,3,0,3,2,0,1,1,1,0,1,1 1,0,3,2,1,11,3,0,0,1,1,2,1,0 0,2,3,2,0,4,2,0,1,1,1,1,1,1 0,4,1,2,2,8,3,0,1,1,1,2,1,0 1,2,10,3,0,4,2,0,1,1,1,0,1,1 0,0,3,2,0,8,0,0,0,1,1,0,1,0 1,0,1,2,0,5,2,0,1,1,1,1,1,1 2,0,0,3,1,8,3,0,1,1,1,0,1,0 2,2,0,3,0,3,2,0,1,1,1,1,1,1 1,5,13,3,0,5,2,0,1,1,1,1,1,1 0,0,12,1,2,2,1,0,1,1,1,2,1,0 0,0,3,2,2,1,1,0,1,1,1,0,1,0 0,0,10,3,2,3,5,0,1,1,1,1,1,1 1,0,1,2,1,8,3,0,0,1,1,0,1,0 0,0,0,3,2,8,3,0,1,1,1,0,1,0 0,5,3,2,2,12,1,0,1,1,1,0,1,0 0,0,1,2,2,4,4,0,1,1,1,0,1,0 2,0,8,0,0,7,2,4,1,1,1,1,1,0 1,0,3,2,1,4,5,0,1,1,1,1,1,0 0,0,3,2,2,8,3,0,1,1,1,1,1,0 2,0,0,3,4,0,5,0,0,1,1,2,1,0 0,0,5,2,1,8,5,0,0,1,1,0,1,0 0,4,0,3,2,5,3,0,0,1,1,0,1,0 0,0,3,2,0,10,2,0,1,1,1,1,1,0 0,0,1,2,2,8,1,0,0,1,1,2,1,0 0,0,12,1,0,10,2,0,1,1,1,0,1,0 0,0,5,2,2,2,1,0,1,1,1,2,1,0 2,2,0,3,0,5,2,0,1,1,1,0,1,1 2,4,10,3,0,5,2,0,1,1,1,0,1,1 2,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,0,10,2,0,1,1,1,0,1,0 0,0,2,1,0,6,2,0,1,1,1,0,1,1 1,0,2,1,0,7,2,0,1,1,1,2,1,0 0,1,0,3,0,3,2,0,1,1,1,1,1,1 0,0,4,3,2,5,3,1,1,1,1,2,1,0 2,0,3,2,1,8,5,0,1,1,1,2,1,0 1,0,3,2,3,10,5,0,1,1,1,1,1,0 0,0,9,1,2,10,3,0,1,1,1,1,1,0 2,0,3,2,4,1,3,0,1,1,1,2,1,0 0,1,6,2,0,4,2,0,1,1,1,1,1,1 1,0,12,1,1,10,3,0,1,1,1,0,1,0 0,0,1,2,2,8,1,4,0,1,1,0,1,0 0,0,1,2,5,8,1,3,0,1,1,2,1,0 0,0,3,2,2,8,1,0,0,1,1,0,1,0 2,0,3,2,0,3,2,0,1,1,1,0,1,0 2,0,12,1,0,10,2,0,1,1,1,0,1,0 0,0,0,3,0,3,2,0,1,1,1,1,1,1 0,0,6,2,0,7,2,0,1,1,1,0,1,0 1,0,3,2,1,7,5,0,0,1,1,2,1,0 1,0,3,2,1,2,3,0,1,1,1,0,1,0 2,0,0,3,1,4,3,0,0,1,1,2,1,0 2,4,12,1,0,1,2,0,1,1,1,0,1,0 0,0,5,2,2,2,3,0,0,1,1,1,1,1 2,1,1,2,5,9,3,0,0,1,1,2,1,1 0,0,3,2,1,4,5,0,0,1,1,1,1,0 2,0,12,1,4,9,5,0,0,1,1,1,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,0 1,3,1,2,0,5,2,0,1,1,1,1,1,1 0,0,1,2,2,6,1,4,0,1,1,2,1,0 1,0,12,1,0,3,2,0,1,1,1,1,1,0 0,1,6,2,0,9,2,0,1,1,1,1,1,0 0,0,3,2,2,6,1,0,1,1,1,0,1,0 0,0,3,2,2,3,1,0,1,1,1,2,1,0 0,0,0,3,2,8,3,0,0,1,1,2,1,0 2,1,3,2,0,9,2,0,1,1,1,1,1,0 0,0,3,2,2,1,1,0,1,1,1,0,1,0 1,0,7,1,0,6,2,1,1,1,1,0,1,0 1,0,3,2,2,8,3,0,1,1,1,0,1,0 1,4,13,3,5,5,5,0,0,1,1,2,1,0 0,3,0,3,0,8,2,1,1,1,1,2,1,0 0,0,0,3,2,0,3,0,0,1,1,2,1,0 0,0,0,3,0,4,2,1,1,1,1,0,1,1 2,0,2,1,3,2,3,4,0,1,1,0,1,0 0,0,3,2,2,2,1,0,0,1,1,0,1,0 1,0,8,0,0,1,2,0,1,1,1,0,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,1 0,0,1,2,2,8,1,0,0,1,1,0,1,0 0,1,3,2,0,9,2,0,1,1,1,1,1,0 0,0,0,3,0,4,4,0,1,1,1,1,1,0 1,4,10,3,2,5,3,0,0,1,1,0,1,0 0,0,0,3,2,4,3,0,1,1,1,0,1,0 0,0,1,2,2,4,4,0,0,1,1,1,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,0 0,0,0,3,2,3,3,0,0,1,1,1,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,0 0,0,1,2,2,5,3,0,0,1,1,2,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,0 0,0,14,0,0,1,2,0,1,1,1,1,1,0 1,0,0,3,2,0,3,0,1,1,1,2,1,0 0,4,3,2,0,1,2,0,1,1,1,0,1,0 2,4,3,2,0,2,2,0,1,1,1,0,1,0 1,0,2,1,0,7,2,0,1,1,1,0,1,0 0,0,9,1,2,0,3,0,1,1,1,0,1,0 1,5,6,2,0,12,2,0,1,1,1,0,1,0 1,2,0,3,0,3,2,0,1,1,1,1,1,1 1,0,1,2,2,1,3,1,1,1,1,0,1,0 0,0,6,2,2,4,1,0,0,1,1,0,1,0 0,0,1,2,2,8,1,0,1,1,1,2,1,0 1,0,0,3,0,5,2,0,1,1,1,2,1,0 0,0,3,2,2,8,1,0,1,1,1,0,1,0 0,0,0,3,2,5,3,0,0,1,1,0,1,0 1,1,3,2,0,1,2,0,1,1,1,1,1,1 0,0,9,1,0,2,2,0,1,1,1,0,1,0 2,0,1,2,0,4,2,0,1,1,1,1,1,1 0,0,3,2,0,1,2,0,1,1,1,0,1,1 2,0,3,2,0,7,2,4,1,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,0,3,2,4,3,0,1,1,1,1,1,0 2,0,3,2,1,1,3,0,1,1,1,0,1,0 1,0,1,2,0,5,2,0,1,1,1,1,1,1 1,0,3,2,2,7,5,4,0,1,1,0,1,0 1,0,5,2,0,5,2,0,1,1,1,0,1,1 1,0,0,3,2,5,3,0,1,1,1,0,1,1 0,0,3,2,0,10,2,3,1,1,1,0,1,0 0,0,3,2,2,8,1,0,0,1,1,0,1,0 0,0,3,2,1,2,5,0,0,1,1,2,1,0 2,0,0,3,0,4,2,0,1,1,1,0,1,0 2,1,11,0,2,4,3,2,1,1,1,1,1,0 0,2,1,2,2,3,1,0,0,1,1,2,1,0 0,1,0,3,2,5,1,0,0,1,1,0,1,0 2,0,6,2,0,8,2,0,1,1,1,0,1,0 1,5,0,3,1,5,3,0,0,1,1,1,1,0 0,0,9,1,2,3,1,4,0,1,1,2,1,0 0,0,1,2,5,3,1,4,0,1,1,2,1,0 0,4,3,2,0,10,2,0,1,1,1,0,1,0 1,0,9,1,0,7,2,0,1,1,1,1,1,1 1,0,3,2,0,1,2,0,1,1,1,1,1,0 1,0,0,3,1,5,3,0,0,1,1,0,1,0 0,0,3,2,0,4,2,0,1,1,1,0,1,1 1,0,3,2,1,8,3,0,0,1,1,0,1,0 0,0,1,2,0,7,2,4,1,1,1,0,1,0 0,0,5,2,0,0,2,0,1,1,1,0,1,0 1,1,0,3,2,9,3,0,1,1,1,1,1,0 2,1,7,1,0,1,2,0,1,1,1,1,1,0 2,2,10,3,4,4,5,0,0,1,1,1,1,0 0,0,1,2,2,3,1,0,1,1,1,2,1,0 1,0,13,3,0,5,2,0,1,1,1,1,1,1 0,0,1,2,2,10,3,4,1,1,1,1,1,0 0,0,0,3,2,3,3,0,1,1,1,0,1,0 2,1,3,2,0,9,2,0,1,1,1,1,1,1 0,0,3,2,0,3,2,0,1,1,1,1,1,0 2,1,3,2,0,4,2,0,1,1,1,2,1,0 0,0,0,3,0,8,2,0,1,1,1,1,1,0 1,0,10,3,0,4,2,0,1,1,1,0,1,1 1,4,10,3,0,5,0,0,0,1,1,0,1,1 0,0,6,2,2,0,3,0,1,1,1,1,1,0 2,0,1,2,2,9,3,0,1,1,1,0,1,0 0,4,1,2,5,5,3,0,1,1,1,1,1,0 2,0,10,3,1,4,3,0,1,1,1,1,1,1 0,0,10,3,2,5,3,0,1,1,1,1,1,1 0,0,5,2,1,4,3,0,0,1,1,1,1,0 0,0,3,2,2,3,1,0,1,1,1,0,1,0 1,0,3,2,0,5,2,0,1,1,1,0,1,1 1,1,3,2,3,1,3,0,1,1,1,0,1,0 2,4,3,2,0,4,2,0,1,1,1,0,1,1 1,0,1,2,2,3,3,0,1,1,1,1,1,0 1,0,3,2,2,1,3,0,1,1,1,0,1,0 0,0,0,3,2,0,1,0,0,1,1,2,1,0 2,0,1,2,5,10,3,0,1,1,1,0,1,0 0,0,2,1,1,2,5,0,0,1,1,0,1,0 0,0,0,3,2,5,3,0,1,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,1,2,1,8,5,0,0,1,1,2,1,0 2,1,3,2,0,10,2,0,1,1,1,1,1,0 0,4,0,3,2,12,1,0,1,1,1,0,1,0 1,0,1,2,1,1,5,0,1,1,1,0,1,1 0,0,0,3,3,3,3,0,0,1,1,1,1,1 2,6,3,2,0,10,2,0,1,1,1,2,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,1 1,4,6,2,1,4,3,0,0,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 0,0,12,1,0,1,2,0,1,1,1,0,1,0 1,0,3,2,4,6,4,0,0,1,1,1,1,0 2,3,0,3,0,4,2,0,1,1,1,0,1,1 1,0,6,2,0,1,2,0,1,1,1,0,1,0 2,0,0,3,0,4,2,0,1,1,1,0,1,0 2,3,10,3,2,4,3,0,1,1,1,0,1,0 2,4,3,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,2,2,1,4,1,1,1,2,1,0 0,0,2,1,0,4,2,0,1,1,1,0,1,0 1,0,3,2,2,2,5,0,0,1,1,0,1,0 0,0,1,2,2,8,1,0,0,1,1,0,1,0 1,2,8,0,0,1,2,0,1,1,1,1,1,1 1,5,10,3,0,5,2,0,1,1,1,1,1,1 2,1,3,2,0,1,2,0,1,1,1,2,1,0 0,5,3,2,2,10,3,2,1,1,1,2,1,1 0,0,1,2,2,3,1,0,1,1,1,2,1,0 0,0,10,3,0,5,2,0,1,1,1,0,1,1 1,1,5,2,0,4,2,0,1,1,1,0,1,0 0,0,5,2,0,5,2,0,1,1,1,0,1,1 1,0,6,2,1,2,3,2,0,1,1,0,1,0 0,0,10,3,0,3,2,0,1,1,1,1,1,1 2,0,8,0,0,1,2,0,1,1,1,0,1,0 2,4,6,2,0,10,2,4,1,1,1,0,1,0 1,0,8,0,2,2,1,0,1,1,1,2,1,0 0,0,1,2,2,8,1,4,0,1,1,0,1,0 1,0,0,3,2,4,3,1,0,1,1,0,1,0 1,0,3,2,1,1,3,0,1,1,1,0,1,1 2,0,3,2,0,7,2,0,1,1,1,0,1,0 1,0,1,2,1,1,3,0,1,1,1,0,1,0 1,0,6,2,2,11,3,0,1,1,1,2,1,0 1,3,3,2,3,8,5,0,0,1,1,0,1,0 0,0,9,1,0,6,2,0,1,1,1,0,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 0,0,1,2,2,8,3,0,0,1,1,2,1,0 1,0,3,2,1,8,5,0,0,1,1,0,1,0 1,0,8,0,0,7,2,0,1,1,1,0,1,0 0,0,3,2,0,3,0,0,0,1,1,2,1,0 2,1,3,2,2,2,5,0,0,1,1,2,1,0 1,0,1,2,1,1,3,0,1,1,1,1,1,0 0,4,3,2,0,12,2,0,1,1,1,0,1,0 2,4,10,3,4,5,5,4,0,1,1,0,1,1 1,3,1,2,2,8,5,0,0,1,1,0,1,0 1,0,8,0,2,6,3,0,1,1,1,1,1,0 0,0,3,2,2,7,1,0,0,1,1,0,1,0 1,1,0,3,1,0,3,0,1,1,1,2,1,0 2,0,10,3,2,5,3,0,1,1,1,1,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,2,3,3,0,1,1,1,0,1,1 1,0,3,2,0,3,2,0,1,1,1,1,1,0 1,0,6,2,0,3,2,0,1,1,1,0,1,1 1,4,0,3,1,5,5,0,1,1,1,0,1,0 0,0,0,3,1,2,3,0,0,1,1,1,1,0 1,3,3,2,0,10,2,4,1,1,1,0,1,1 0,0,3,2,2,2,3,0,0,1,1,2,1,0 1,0,4,3,0,1,2,0,1,1,1,0,1,1 1,0,6,2,1,5,3,0,0,1,1,0,1,1 1,0,6,2,0,1,2,0,1,1,1,0,1,1 2,0,12,1,0,3,0,1,0,1,1,2,1,1 0,0,7,1,2,10,4,0,1,1,1,0,1,0 0,4,0,3,2,5,3,0,0,1,1,1,1,0 1,0,1,2,2,8,3,0,0,1,1,0,1,1 0,0,1,2,2,6,1,0,1,1,1,0,1,0 0,0,0,3,2,5,3,4,0,1,1,1,1,1 0,0,6,2,2,4,1,0,1,1,1,0,1,0 1,3,1,2,1,5,5,0,0,1,1,0,1,1 2,1,1,2,0,4,2,4,1,1,1,2,1,0 0,0,1,2,1,4,5,0,0,1,1,2,1,0 1,0,3,2,0,8,2,4,1,1,1,0,1,1 1,4,0,3,0,4,2,0,1,1,1,0,1,0 0,0,1,2,2,5,3,0,1,1,1,2,1,0 1,0,10,3,0,4,2,0,1,1,1,0,1,0 1,0,1,2,1,1,5,0,1,1,1,0,1,0 1,2,0,3,0,3,2,0,1,1,1,1,1,1 1,0,6,2,1,1,5,0,1,1,1,0,1,0 0,0,1,2,2,8,1,0,1,1,1,0,1,0 0,5,5,2,2,8,3,0,0,1,1,0,1,0 0,0,3,2,2,7,1,0,0,1,1,0,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 1,0,8,0,0,1,2,0,1,1,1,0,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,1 1,2,4,3,0,3,2,0,1,1,1,0,1,1 1,2,0,3,0,4,2,0,1,1,1,1,1,1 1,0,1,2,0,3,2,0,1,1,1,1,1,1 1,0,0,3,0,3,2,0,1,1,1,1,1,1 0,0,0,3,2,0,4,1,1,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,1,1,0 2,1,10,3,0,5,2,0,1,1,1,0,1,0 1,0,5,2,0,0,2,0,1,1,1,1,1,1 2,1,4,3,0,5,2,0,1,1,1,0,1,1 0,0,11,0,2,2,4,0,1,1,1,2,1,0 2,0,8,0,0,2,2,1,1,1,1,0,1,0 2,4,6,2,1,1,3,0,1,1,1,0,1,0 0,0,3,2,2,6,1,0,1,1,1,0,1,0 0,0,0,3,2,8,3,0,1,1,1,0,1,0 2,1,10,3,0,9,2,0,1,1,1,1,1,0 1,0,3,2,1,2,3,0,0,1,1,2,1,0 0,0,3,2,2,10,3,0,1,1,1,2,1,0 2,0,8,0,0,1,2,0,1,1,1,0,1,0 2,0,12,1,1,2,5,0,0,1,1,0,1,0 2,4,3,2,0,2,2,0,1,1,1,0,1,0 0,0,2,1,2,6,1,0,1,1,1,2,1,0 0,4,3,2,1,8,3,0,0,1,1,0,1,0 1,4,3,2,0,8,0,0,0,1,1,0,1,0 1,3,3,2,2,4,3,0,0,1,1,0,1,0 1,1,12,1,2,1,1,0,1,1,1,1,1,0 2,0,3,2,4,5,3,0,0,1,1,1,1,0 0,0,1,2,2,3,1,0,1,1,1,2,1,0 1,5,1,2,1,2,5,4,0,1,1,2,1,0 1,0,1,2,0,7,2,0,1,1,1,0,1,0 1,0,13,3,0,5,2,3,1,1,1,1,1,1 1,0,3,2,0,2,2,1,1,1,1,0,1,0 0,0,1,2,0,8,2,0,1,1,1,2,1,0 1,2,5,2,1,3,5,0,0,1,1,0,1,0 0,0,0,3,2,4,3,0,0,1,1,0,1,0 0,0,3,2,2,3,3,0,1,1,1,2,1,0 0,0,1,2,0,8,2,4,1,1,1,2,1,1 1,0,10,3,0,8,2,0,1,1,1,1,1,1 1,1,4,3,1,5,3,0,1,1,1,1,1,1 0,1,5,2,2,5,3,0,0,1,1,2,1,0 0,0,3,2,2,3,1,0,0,1,1,2,1,0 1,0,3,2,1,3,5,4,1,1,1,0,1,0 0,0,1,2,2,8,1,0,0,1,1,0,1,0 0,2,0,3,0,3,2,0,1,1,1,1,1,0 1,5,1,2,0,8,2,0,1,1,1,0,1,0 1,5,0,3,0,4,2,0,1,1,1,2,1,1 1,0,3,2,0,1,2,0,1,1,1,2,1,0 1,1,0,3,0,9,2,0,1,1,1,1,1,1 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,0,3,2,8,1,0,0,1,1,2,1,0 1,0,1,2,2,8,5,0,1,1,1,1,1,0 1,3,1,2,0,8,2,0,1,1,1,0,1,1 0,5,13,3,2,5,3,0,0,1,1,1,1,0 0,0,0,3,2,10,1,0,1,1,1,2,1,0 0,0,1,2,1,2,3,4,1,1,1,0,1,0 1,0,3,2,1,7,5,4,0,1,1,0,1,0 1,0,3,2,1,2,3,0,0,1,1,0,1,0 1,4,10,3,0,5,2,0,1,1,1,1,1,0 0,0,3,2,2,7,3,0,1,1,1,0,1,0 1,0,4,3,0,5,2,0,1,1,1,1,1,1 0,0,2,1,2,3,1,0,1,1,1,2,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,1 0,0,1,2,2,8,1,0,1,1,1,0,1,0 0,0,0,3,0,1,2,1,1,1,1,0,1,1 0,0,1,2,2,3,1,0,0,1,1,2,1,0 2,0,12,1,1,2,3,0,1,1,1,1,1,0 1,0,0,3,1,8,3,4,0,1,1,0,1,0 1,0,1,2,3,4,3,4,0,1,1,0,1,0 2,1,3,2,0,2,0,4,0,1,1,1,1,0 0,0,1,2,2,3,1,0,1,1,1,2,1,0 0,0,3,2,2,9,1,0,1,1,1,0,1,0 0,0,2,1,2,9,5,0,1,1,1,0,1,0 0,0,1,2,2,6,3,0,1,1,1,0,1,0 1,0,1,2,1,8,3,0,0,1,1,1,1,0 1,0,0,3,0,1,2,0,1,1,1,1,1,1 2,5,3,2,0,8,2,0,1,1,1,0,1,1 1,0,3,2,0,7,2,0,1,1,1,0,1,1 1,0,10,3,3,4,3,0,1,1,1,1,1,1 0,0,9,1,2,7,1,0,1,1,1,0,1,0 1,5,3,2,1,4,3,0,0,1,1,0,1,0 2,1,7,1,0,1,2,0,1,1,1,1,1,0 1,4,0,3,1,5,5,0,0,1,1,0,1,0 1,3,1,2,0,10,0,0,0,1,1,0,1,1 3,0,6,2,0,1,2,0,1,1,1,2,1,0 2,5,12,1,0,9,2,0,1,1,1,0,1,0 1,0,2,1,0,1,2,0,1,1,1,0,1,1 1,0,0,3,0,4,2,0,1,1,1,1,1,1 2,1,1,2,5,5,3,4,1,1,1,1,1,0 2,4,3,2,4,8,3,4,0,1,1,2,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,0,4,2,0,1,1,1,0,1,0 0,2,3,2,0,4,2,0,1,1,1,1,1,1 1,0,1,2,0,4,2,0,1,1,1,0,1,1 1,4,3,2,5,6,5,0,1,1,1,0,1,0 1,0,1,2,1,2,5,0,0,1,1,2,1,0 2,0,3,2,4,8,3,0,0,1,1,2,1,0 1,0,6,2,3,1,4,0,1,1,1,1,1,1 0,0,3,2,1,3,3,0,1,1,1,0,1,0 1,0,1,2,1,8,5,0,0,1,1,0,1,0 0,0,12,1,2,7,3,0,0,1,1,0,1,0 0,0,2,1,2,3,1,0,0,1,1,2,1,0 1,0,0,3,0,1,2,0,1,1,1,1,1,1 0,0,1,2,2,6,3,0,1,1,1,0,1,0 2,0,1,2,4,3,4,0,0,1,1,1,1,0 1,1,1,2,0,1,2,0,1,1,1,0,1,1 0,0,3,2,2,6,4,0,1,1,1,2,1,0 1,0,1,2,5,3,3,0,1,1,1,1,1,0 1,4,10,3,0,5,0,0,0,1,1,1,1,1 1,0,2,1,0,10,2,0,1,1,1,0,1,1 1,4,6,2,0,12,2,0,1,1,1,0,1,1 0,0,1,2,2,2,1,0,1,1,1,2,1,0 1,0,3,2,2,2,3,4,0,1,1,0,1,0 0,0,3,2,0,2,2,4,1,1,1,2,1,0 1,3,0,3,0,4,2,0,1,1,1,0,1,0 1,5,10,3,0,3,2,0,1,1,1,1,1,1 2,2,13,3,0,4,2,0,1,1,1,0,1,1 1,0,3,2,1,10,3,0,1,1,1,0,1,0 1,0,1,2,1,5,3,0,0,1,1,0,1,0 0,0,0,3,0,0,0,0,0,1,1,0,1,1 1,0,7,1,2,1,4,4,1,1,1,1,1,0 1,0,3,2,0,1,2,4,1,1,1,0,1,1 1,0,0,3,0,2,0,1,0,1,1,1,1,1 1,0,2,1,1,1,1,0,1,1,1,2,1,0 0,0,3,2,2,8,3,0,1,1,1,2,1,0 0,0,1,2,2,8,4,0,0,1,1,2,1,0 0,0,1,2,2,12,1,0,0,1,1,2,1,0 1,4,0,3,1,5,3,0,0,1,1,2,1,1 1,0,0,3,0,5,2,0,1,1,1,1,1,1 0,0,12,1,2,5,1,3,0,1,1,2,1,0 1,0,3,2,0,7,2,4,1,1,1,0,1,0 0,0,3,2,3,1,3,0,1,1,1,0,1,0 0,0,3,2,2,2,3,0,1,1,1,0,1,0 0,0,1,2,0,4,2,0,1,1,1,1,1,0 1,3,1,2,0,4,2,0,1,1,1,1,1,1 0,1,3,2,2,5,1,4,0,1,1,0,1,0 1,1,6,2,0,3,2,0,1,1,1,0,1,1 0,0,3,2,0,7,2,0,1,1,1,0,1,0 2,3,0,3,0,4,2,4,1,1,1,0,1,1 1,0,3,2,0,1,2,0,1,1,1,1,1,0 1,1,8,0,0,3,2,0,1,1,1,2,1,1 0,0,1,2,2,8,3,0,0,1,1,0,1,0 0,0,1,2,2,4,1,0,1,1,1,1,1,0 1,0,12,1,1,7,5,0,0,1,1,0,1,0 1,4,3,2,1,4,3,0,0,1,1,0,1,0 1,0,0,3,1,4,5,4,0,1,1,0,1,0 1,0,0,3,0,9,2,0,1,1,1,1,1,0 1,0,8,0,1,2,4,0,0,1,1,0,1,0 1,0,3,2,5,9,4,4,1,1,1,0,1,0 0,0,3,2,2,6,3,0,1,1,1,0,1,0 0,3,5,2,2,8,3,0,1,1,1,0,1,0 2,0,10,3,1,3,3,0,1,1,1,2,1,0 0,0,2,1,2,10,1,0,1,1,1,2,1,0 0,0,0,3,2,7,4,0,1,1,1,0,1,0 2,0,3,2,1,1,3,0,1,1,1,0,1,0 2,0,0,3,1,5,5,0,0,1,1,2,1,0 1,4,0,3,0,5,2,0,1,1,1,0,1,0 1,0,0,3,2,8,4,4,0,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,2,1,0,7,2,0,1,1,1,0,1,0 0,0,10,3,2,7,3,0,0,1,1,0,1,0 1,0,3,2,0,8,2,0,1,1,1,1,1,1 0,0,0,3,2,5,5,0,0,1,1,0,1,0 1,4,3,2,4,2,3,0,0,1,1,2,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 2,0,1,2,0,3,2,0,1,1,1,0,1,1 0,0,1,2,2,2,1,0,0,1,1,1,1,0 1,0,14,0,0,2,2,0,1,1,1,0,1,0 1,0,1,2,0,4,2,0,1,1,1,1,1,1 3,1,3,2,0,1,2,0,1,1,1,2,1,0 0,0,1,2,2,2,3,0,0,1,1,2,1,0 0,0,1,2,0,5,2,4,1,1,1,0,1,1 2,0,1,2,1,1,3,0,1,1,1,0,1,0 0,0,0,3,2,8,3,0,0,1,1,0,1,0 1,4,8,0,1,6,3,0,1,1,1,0,1,0 0,0,1,2,1,8,5,4,0,1,1,0,1,0 0,0,9,1,2,6,1,2,1,1,1,0,1,0 1,1,3,2,0,9,2,0,1,1,1,1,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 0,5,1,2,2,8,1,0,0,1,1,2,1,0 1,3,3,2,0,8,2,0,1,1,1,0,1,1 2,0,3,2,2,7,3,0,1,1,1,0,1,0 0,0,2,1,0,1,2,0,1,1,1,0,1,0 1,0,1,2,2,9,3,0,1,1,1,0,1,0 1,1,3,2,1,5,3,1,0,1,1,1,1,0 0,2,3,2,2,3,1,0,1,1,1,1,1,0 1,4,1,2,0,0,2,0,1,1,1,1,1,1 1,0,1,2,0,5,2,0,1,1,1,0,1,1 1,0,1,2,1,4,5,4,0,1,1,1,1,0 1,0,3,2,1,8,3,3,0,1,1,0,1,0 1,0,4,3,0,5,0,0,0,1,1,2,1,1 0,0,0,3,0,4,2,0,1,1,1,1,1,0 1,4,0,3,0,8,2,0,1,1,1,0,1,1 1,2,0,3,1,4,3,0,1,1,1,0,1,0 2,0,0,3,0,1,2,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,7,1,0,7,2,0,1,1,1,1,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 0,1,2,1,2,8,1,0,0,1,1,2,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,0 1,1,4,3,1,5,5,0,0,1,1,1,1,1 1,0,1,2,0,4,2,0,1,1,1,0,1,1 0,0,1,2,0,7,2,0,1,1,1,0,1,0 2,0,2,1,0,2,2,0,1,1,1,0,1,1 0,0,1,2,2,8,1,0,0,1,1,0,1,0 0,0,0,3,0,2,2,0,1,1,1,1,1,1 2,0,3,2,0,8,0,0,0,1,1,0,1,1 0,0,0,3,5,5,3,1,0,1,1,0,1,0 0,0,6,2,2,8,3,4,0,1,1,0,1,0 0,4,5,2,2,8,3,0,1,1,1,0,1,0 1,0,10,3,0,5,2,0,1,1,1,0,1,1 0,0,0,3,0,3,2,0,1,1,1,1,1,1 1,1,1,2,1,7,5,0,1,1,1,0,1,0 1,1,6,2,2,2,3,0,1,1,1,1,1,0 2,0,1,2,0,0,2,0,1,1,1,0,1,1 1,4,1,2,0,12,2,0,1,1,1,0,1,1 0,0,2,1,2,3,3,0,0,1,1,0,1,0 2,3,10,3,0,4,2,0,1,1,1,1,1,1 1,0,3,2,0,7,2,0,1,1,1,0,1,0 1,0,5,2,2,1,3,0,1,1,1,0,1,0 0,0,3,2,1,2,5,0,0,1,1,2,1,0 0,0,9,1,2,4,3,0,1,1,1,1,1,0 0,0,3,2,3,3,5,0,0,1,1,1,1,0 1,1,1,2,3,2,5,4,0,1,1,1,1,0 0,0,3,2,3,4,1,0,0,1,1,0,1,0 1,0,0,3,0,5,2,0,1,1,1,0,1,0 0,0,14,0,2,9,5,0,1,1,1,1,1,0 0,0,3,2,0,1,2,0,1,1,1,1,1,0 0,0,6,2,2,1,5,0,1,1,1,1,1,0 2,0,10,3,0,4,2,0,1,1,1,1,1,1 1,3,3,2,1,8,5,4,0,1,1,0,1,0 1,0,1,2,0,8,2,0,1,1,1,0,1,0 0,0,3,2,2,7,3,0,1,1,1,0,1,0 1,1,4,3,0,1,2,0,1,1,1,1,1,0 2,2,7,1,1,3,3,0,1,1,1,1,1,0 1,4,10,3,2,5,1,0,0,1,1,1,1,0 2,0,0,3,0,3,2,0,1,1,1,0,1,0 1,0,5,2,1,4,3,4,0,1,1,0,1,0 2,0,8,0,1,7,5,0,0,1,1,0,1,0 1,2,10,3,1,4,5,1,1,1,1,1,1,1 0,0,12,1,1,6,3,0,1,1,1,0,1,0 2,0,2,1,0,6,2,0,1,1,1,2,1,0 0,1,3,2,0,1,4,0,1,1,1,2,1,0 3,0,14,0,4,2,5,0,1,1,1,2,1,0 1,1,1,2,0,10,2,0,1,1,1,1,1,1 1,0,13,3,0,4,2,1,1,1,1,0,1,1 2,0,10,3,2,8,3,0,0,1,1,2,1,0 1,0,3,2,0,2,2,0,1,1,1,0,1,0 0,0,3,2,2,8,3,0,0,1,1,2,1,0 2,0,1,2,0,6,2,4,1,1,1,0,1,0 0,0,1,2,2,6,1,0,1,1,1,0,1,0 1,1,1,2,0,9,2,0,1,1,1,1,1,0 0,0,7,1,2,2,1,0,0,1,1,2,1,0 1,1,3,2,1,10,3,0,1,1,1,1,1,0 2,0,1,2,0,0,2,0,1,1,1,0,1,1 1,0,3,2,0,6,2,0,1,1,1,0,1,0 2,2,3,2,0,3,2,0,1,1,1,2,1,1 0,0,3,2,2,3,5,4,0,1,1,2,1,0 0,0,3,2,2,8,1,0,0,1,1,0,1,0 0,0,9,1,2,2,1,0,0,1,1,2,1,0 2,0,15,0,0,5,2,3,1,1,1,2,1,0 1,0,4,3,1,5,3,0,1,1,1,1,1,1 0,0,4,3,0,5,2,0,1,1,1,1,1,1 0,0,1,2,2,5,1,0,1,1,1,2,1,0 1,0,10,3,0,5,2,0,1,1,1,1,1,1 0,0,1,2,2,3,1,0,0,1,1,0,1,0 0,0,1,2,2,6,4,0,1,1,1,2,1,0 1,0,1,2,0,1,2,0,1,1,1,1,1,0 0,0,2,1,2,7,5,0,0,1,1,0,1,0 0,0,3,2,1,7,1,4,0,1,1,0,1,0 1,1,3,2,0,1,2,4,1,1,1,2,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 0,5,1,2,0,5,2,4,1,1,1,0,1,1 1,0,1,2,2,10,5,0,0,1,1,2,1,0 1,3,3,2,1,8,3,0,0,1,1,0,1,0 0,0,7,1,2,9,4,0,1,1,1,1,1,0 1,1,3,2,0,9,2,0,1,1,1,1,1,1 2,0,3,2,0,3,2,0,1,1,1,1,1,0 2,2,3,2,0,1,2,0,1,1,1,2,1,0 0,4,0,3,0,8,0,0,0,1,1,0,1,0 0,5,12,1,0,2,2,0,1,1,1,0,1,0 2,0,0,3,2,4,3,0,0,1,1,2,1,0 2,4,1,2,1,4,3,2,0,1,1,0,1,0 3,1,3,2,4,3,3,0,0,1,1,1,1,0 1,0,4,3,0,5,2,1,1,1,1,1,1,1 0,0,1,2,2,1,1,0,1,1,1,1,1,0 2,0,1,2,0,1,2,0,1,1,1,0,1,1 2,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,6,2,1,5,5,0,0,1,1,2,1,0 0,0,2,1,1,3,5,0,0,1,1,2,1,0 1,0,1,2,0,5,2,0,1,1,1,0,1,1 0,0,3,2,2,12,5,2,0,1,1,0,1,0 1,3,0,3,0,5,2,0,1,1,1,0,1,0 0,0,3,2,2,2,1,0,0,1,1,2,1,0 0,0,3,2,2,4,3,0,1,1,1,2,1,0 0,0,0,3,2,3,3,0,1,1,1,1,1,1 0,0,3,2,2,2,3,0,0,1,1,0,1,0 2,1,6,2,0,9,2,0,1,1,1,1,1,0 0,0,2,1,0,1,2,0,1,1,1,0,1,0 3,0,3,2,5,8,3,0,0,1,1,2,1,0 3,4,13,3,4,5,5,0,0,1,1,0,1,0 2,1,0,3,0,4,2,0,1,1,1,0,1,1 1,0,0,3,1,0,3,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 1,0,3,2,1,2,3,0,1,1,1,2,1,0 0,0,3,2,0,4,0,0,0,1,1,0,1,1 1,0,6,2,0,1,2,0,1,1,1,0,1,0 1,4,10,3,1,4,3,0,0,1,1,1,1,1 1,2,0,3,0,3,2,0,1,1,1,1,1,1 2,0,1,2,4,4,3,0,0,1,1,1,1,0 0,5,0,3,0,5,0,0,0,1,1,1,1,1 1,0,0,3,0,1,2,1,1,1,1,0,1,1 0,0,3,2,2,3,1,4,0,1,1,0,1,0 0,0,3,2,0,10,2,0,1,1,1,1,1,0 2,1,12,1,0,1,2,0,1,1,1,0,1,0 0,0,1,2,2,7,1,0,1,1,1,1,1,0 1,2,0,3,2,5,3,0,0,1,1,1,1,0 1,0,2,1,2,2,4,0,1,1,1,0,1,0 1,0,3,2,3,2,4,0,0,1,1,2,1,0 0,0,1,2,0,1,2,0,1,1,1,1,1,0 2,1,14,0,0,9,2,0,1,1,1,2,1,0 1,0,6,2,0,6,2,0,1,1,1,1,1,0 1,0,3,2,1,7,4,0,0,1,1,1,1,0 1,0,0,3,0,5,2,0,1,1,1,0,1,1 1,0,3,2,3,4,3,0,0,1,1,0,1,0 1,0,11,0,5,9,4,0,1,1,1,1,1,0 1,4,6,2,0,12,2,0,1,1,1,1,1,1 1,0,12,1,0,1,2,0,1,1,1,1,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,1 1,5,10,3,0,5,2,0,1,1,1,1,1,1 0,5,1,2,0,12,2,0,1,1,1,0,1,0 0,1,3,2,2,1,3,0,1,1,1,1,1,0 2,0,3,2,4,3,5,0,0,1,1,2,1,0 1,0,3,2,0,1,2,2,1,1,1,0,1,0 2,0,12,1,0,10,2,0,1,1,1,1,1,1 0,0,2,1,0,6,1,0,1,1,1,0,1,0 0,0,3,2,1,2,3,0,1,1,1,0,1,0 0,0,3,2,5,8,5,4,0,1,1,0,1,0 0,0,5,2,0,1,2,0,1,1,1,1,1,1 0,0,0,3,0,3,2,0,1,1,1,0,1,1 1,3,3,2,1,8,3,0,1,1,1,0,1,0 1,3,3,2,2,8,1,4,0,1,1,0,1,0 0,0,1,2,2,8,1,0,0,1,1,0,1,0 1,0,3,2,3,1,1,0,1,1,1,0,1,0 1,0,1,2,0,7,2,0,1,1,1,0,1,1 1,0,2,1,0,12,2,0,1,1,1,1,1,0 1,0,6,2,3,5,3,0,0,1,1,0,1,0 1,1,6,2,1,4,3,0,0,1,1,1,1,0 0,4,3,2,0,12,2,4,1,1,1,2,1,1 1,4,0,3,1,5,5,4,0,1,1,1,1,0 2,3,0,3,0,5,2,0,1,1,1,0,1,1 1,4,3,2,0,8,4,0,0,1,1,0,1,0 0,0,3,2,2,2,1,0,1,1,1,0,1,0 2,0,12,1,4,1,5,4,0,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,2,1,0 0,0,3,2,3,8,5,4,0,1,1,0,1,0 0,0,13,3,0,5,2,1,1,1,1,1,1,1 1,2,4,3,0,5,2,0,1,1,1,1,1,1 1,1,0,3,0,9,2,0,1,1,1,1,1,1 0,0,3,2,2,7,3,3,1,1,1,1,1,0 0,3,6,2,0,6,2,0,1,1,1,2,1,0 0,0,0,3,0,9,2,0,1,1,1,1,1,1 0,0,1,2,2,2,1,0,1,1,1,2,1,0 0,4,0,3,0,12,2,4,1,1,1,1,1,1 0,3,0,3,2,4,4,1,0,1,1,1,1,0 0,0,1,2,2,12,1,0,1,1,1,2,1,0 1,4,0,3,0,8,0,0,0,1,1,2,1,1 1,0,1,2,0,5,2,0,1,1,1,0,1,0 0,0,10,3,0,4,2,0,1,1,1,1,1,1 0,0,6,2,0,1,2,0,1,1,1,1,1,0 0,0,1,2,0,5,2,4,1,1,1,0,1,0 1,0,1,2,1,12,5,4,0,1,1,2,1,0 1,0,3,2,0,2,2,1,1,1,1,1,1,0 1,1,0,3,0,5,2,0,1,1,1,2,1,0 0,5,0,3,2,8,1,4,0,1,1,0,1,0 0,0,2,1,0,10,2,0,1,1,1,0,1,0 1,0,3,2,0,2,0,0,0,1,1,2,1,0 0,0,1,2,2,12,3,0,1,1,1,2,1,0 3,0,0,3,0,5,2,0,1,1,1,0,1,1 0,0,1,2,0,1,2,0,1,1,1,0,1,1 0,0,3,2,2,7,4,4,1,1,1,1,1,0 0,0,9,1,2,1,1,0,1,1,1,2,1,0 0,0,0,3,0,6,2,0,1,1,1,2,1,1 0,0,1,2,3,3,5,0,0,1,1,1,1,0 0,0,1,2,0,6,2,0,1,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,1,1,0 1,4,3,2,0,8,0,0,0,1,1,0,1,0 0,0,1,2,0,7,2,0,1,1,1,1,1,1 1,0,3,2,0,10,2,0,1,1,1,1,1,1 0,5,3,2,0,8,4,0,0,1,1,2,1,0 0,0,0,3,0,5,2,0,1,1,1,1,1,0 2,1,0,3,1,10,3,0,1,1,1,1,1,0 2,0,3,2,1,9,3,0,1,1,1,2,1,0 2,1,0,3,0,3,2,0,1,1,1,2,1,0 1,0,3,2,1,2,3,4,0,1,1,2,1,0 2,2,0,3,4,2,5,0,0,1,1,2,1,0 0,0,3,2,0,8,0,3,0,1,1,2,1,0 0,4,3,2,3,2,1,0,0,1,1,1,1,0 0,4,0,3,0,8,2,0,1,1,1,0,1,0 0,0,1,2,2,8,3,0,0,1,1,0,1,0 0,0,1,2,1,7,5,0,1,1,1,0,1,0 2,0,3,2,0,1,2,0,1,1,1,0,1,1 0,1,3,2,0,9,2,0,1,1,1,1,1,1 0,0,2,1,2,2,1,0,1,1,1,2,1,0 0,0,2,1,0,9,2,0,1,1,1,1,1,0 0,0,12,1,2,1,3,0,1,1,1,1,1,0 1,0,0,3,0,5,0,0,0,1,1,2,1,1 1,0,5,2,0,0,2,0,1,1,1,0,1,1 1,0,1,2,0,0,2,0,1,1,1,0,1,1 1,0,5,2,0,0,0,0,0,1,1,1,1,0 1,0,0,3,0,8,0,0,0,1,1,0,1,1 1,1,0,3,0,1,2,0,1,1,1,1,1,1 0,0,1,2,2,2,1,0,0,1,1,0,1,0 0,0,8,0,0,10,2,0,1,1,1,0,1,0 1,1,3,2,0,1,2,0,1,1,1,1,1,0 0,0,1,2,0,1,2,0,1,1,1,1,1,1 0,0,6,2,0,10,2,0,1,1,1,2,1,1 3,0,10,3,0,5,0,0,0,1,1,0,1,1 0,1,0,3,2,5,1,0,0,1,1,0,1,0 0,1,3,2,2,1,3,0,1,1,1,1,1,1 0,4,3,2,2,5,1,4,0,1,1,0,1,0 0,1,2,1,0,4,2,0,1,1,1,1,1,0 0,0,3,2,2,1,3,0,1,1,1,0,1,0 1,0,3,2,2,8,1,0,0,1,1,1,1,0 1,4,10,3,3,5,5,4,0,1,1,2,1,0 0,0,3,2,0,10,2,0,1,1,1,1,1,0 1,1,6,2,0,2,0,0,0,1,1,2,1,0 1,0,5,2,0,9,2,1,1,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,2,1,3,0,1,1,1,0,1,0 0,0,2,1,0,3,2,0,1,1,1,1,1,0 1,0,1,2,0,4,2,0,1,1,1,1,1,0 0,5,0,3,2,5,3,0,0,1,1,0,1,0 0,0,3,2,0,10,2,0,1,1,1,0,1,0 0,0,0,3,2,5,1,0,0,1,1,0,1,0 1,4,0,3,2,5,1,0,1,1,1,1,1,1 0,0,1,2,0,2,2,1,1,1,1,0,1,0 1,0,3,2,4,8,3,0,0,1,1,0,1,0 0,0,0,3,2,8,3,0,1,1,1,0,1,0 1,0,6,2,1,4,3,0,1,1,1,1,1,0 1,0,0,3,1,5,3,0,1,1,1,0,1,0 0,0,3,2,1,1,3,0,1,1,1,1,1,0 1,0,1,2,2,4,3,4,1,1,1,0,1,0 1,1,3,2,0,6,2,0,1,1,1,0,1,1 0,1,1,2,0,2,2,0,1,1,1,0,1,0 1,2,0,3,0,3,2,0,1,1,1,1,1,1 1,0,5,2,0,5,0,0,0,1,1,2,1,1 1,0,3,2,1,2,5,0,0,1,1,0,1,0 2,0,9,1,2,2,3,0,0,1,1,0,1,0 1,0,0,3,0,3,2,0,1,1,1,1,1,1 1,0,6,2,2,0,3,0,0,1,1,0,1,0 1,4,3,2,0,1,2,0,1,1,1,0,1,0 0,0,6,2,0,4,2,0,1,1,1,1,1,1 1,0,2,1,0,7,2,0,1,1,1,0,1,0 2,2,6,2,0,3,2,0,1,1,1,1,1,1 0,3,3,2,0,0,2,0,1,1,1,0,1,0 0,0,3,2,2,2,3,0,0,1,1,2,1,0 2,1,1,2,3,3,3,0,1,1,1,2,1,0 2,0,12,1,2,10,3,0,1,1,1,1,1,0 2,0,0,3,0,3,2,0,1,1,1,1,1,1 0,0,3,2,2,8,1,4,1,1,1,0,1,0 2,2,6,2,0,4,2,0,1,1,1,0,1,1 2,0,0,3,0,5,2,0,1,1,1,1,1,1 0,0,0,3,2,5,5,3,1,1,1,0,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 1,0,0,3,0,8,2,0,1,1,1,1,1,0 0,0,0,3,1,4,3,0,0,1,1,0,1,0 1,3,1,2,1,5,3,4,0,1,1,0,1,0 0,0,6,2,2,9,1,0,1,1,1,0,1,0 1,3,3,2,0,8,2,0,1,1,1,0,1,0 0,0,12,1,2,2,3,0,1,1,1,0,1,0 1,4,1,2,1,4,5,0,0,1,1,2,1,0 1,0,9,1,1,7,5,0,0,1,1,0,1,0 0,0,3,2,0,9,2,0,1,1,1,0,1,0 0,1,3,2,5,9,3,0,1,1,1,1,1,0 1,3,1,2,2,8,5,4,0,1,1,0,1,0 0,0,1,2,2,8,3,0,0,1,1,2,1,0 0,0,1,2,2,2,1,0,1,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,0 2,0,13,3,2,5,3,0,1,1,1,2,1,0 2,0,6,2,0,8,2,0,1,1,1,0,1,0 2,0,3,2,2,3,3,0,0,1,1,2,1,0 1,0,0,3,0,5,2,0,1,1,1,0,1,1 1,0,10,3,0,4,2,0,1,1,1,1,1,1 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,3,2,0,12,2,0,1,1,1,0,1,0 1,0,1,2,0,5,2,0,1,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,2,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,3,2,1,7,5,0,0,1,1,0,1,0 2,0,3,2,0,2,2,1,1,1,1,2,1,0 0,0,3,2,1,1,3,0,1,1,1,1,1,0 1,0,0,3,0,3,2,0,1,1,1,1,1,1 1,5,5,2,0,10,2,0,1,1,1,0,1,0 0,0,1,2,2,1,3,0,1,1,1,1,1,0 0,5,9,1,2,10,1,4,1,1,1,2,1,0 0,0,0,3,2,2,3,1,0,1,1,2,1,0 0,0,0,3,0,5,2,0,1,1,1,0,1,1 0,0,3,2,1,2,5,0,0,1,1,0,1,0 2,0,1,2,1,3,3,0,0,1,1,1,1,0 2,0,10,3,2,3,3,0,0,1,1,1,1,1 1,0,3,2,0,1,1,0,0,1,1,0,1,0 2,0,5,2,0,8,2,0,1,1,1,0,1,1 0,4,6,2,0,0,2,0,1,1,1,0,1,0 1,0,0,3,2,5,3,0,0,1,1,1,1,0 0,1,1,2,2,5,1,0,1,1,1,2,1,0 0,4,0,3,2,5,3,0,0,1,1,1,1,0 0,5,10,3,2,5,3,1,1,1,1,2,1,0 0,0,9,1,2,9,3,4,1,1,1,1,1,0 1,0,3,2,5,1,5,0,0,1,1,0,1,0 1,0,0,3,1,5,3,0,0,1,1,1,1,0 2,5,0,3,0,5,2,0,1,1,1,2,1,0 1,0,3,2,0,7,2,0,1,1,1,1,1,0 0,0,3,2,1,10,3,0,1,1,1,1,1,0 0,4,0,3,2,5,3,0,1,1,1,2,1,0 1,0,0,3,1,1,3,0,1,1,1,1,1,0 0,0,1,2,2,8,1,0,0,1,1,2,1,0 1,0,14,0,0,6,2,0,1,1,1,0,1,0 0,0,3,2,2,8,5,0,1,1,1,0,1,0 0,2,1,2,0,10,2,4,1,1,1,2,1,0 1,0,3,2,0,3,2,0,1,1,1,1,1,1 1,0,1,2,0,4,2,0,1,1,1,1,1,1 0,0,1,2,2,8,1,0,0,1,1,2,1,0 0,0,1,2,2,3,1,4,0,1,1,2,1,0 1,2,1,2,0,4,2,0,1,1,1,1,1,0 1,0,1,2,1,8,5,0,0,1,1,2,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 0,0,0,3,2,4,1,0,0,1,1,0,1,1 1,0,1,2,1,0,3,0,1,1,1,1,1,0 0,0,5,2,0,8,0,0,0,1,1,0,1,0 1,0,3,2,0,4,2,0,1,1,1,0,1,0 1,5,4,3,0,5,0,0,0,1,1,2,1,1 1,0,10,3,0,8,2,0,1,1,1,0,1,1 2,0,7,1,4,3,5,0,0,1,1,0,1,0 0,0,1,2,2,6,3,0,1,1,1,1,1,0 2,4,3,2,1,8,5,0,1,1,1,0,1,0 0,0,3,2,2,1,4,0,1,1,1,0,1,0 1,0,3,2,1,1,3,0,1,1,1,0,1,0 2,1,0,3,0,10,2,0,1,1,1,1,1,0 0,0,0,3,2,5,3,0,1,1,1,2,1,0 1,2,1,2,1,1,3,0,1,1,1,1,1,0 0,4,8,0,2,9,1,0,1,1,1,0,1,0 0,0,7,1,2,9,4,4,1,1,1,0,1,0 0,5,3,2,0,0,2,0,1,1,1,0,1,0 1,0,3,2,2,10,3,0,1,1,1,0,1,0 1,4,3,2,1,8,5,0,0,1,1,0,1,0 1,0,1,2,0,7,2,0,1,1,1,1,1,0 1,0,3,2,0,9,2,0,1,1,1,0,1,0 1,1,3,2,0,1,2,0,1,1,1,1,1,0 1,1,3,2,0,1,2,0,1,1,1,2,1,0 0,0,1,2,2,6,3,0,0,1,1,2,1,0 1,0,10,3,0,4,0,0,0,1,1,0,1,0 1,0,3,2,0,8,0,4,0,1,1,1,1,0 1,0,3,2,1,1,5,0,1,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,0 1,0,10,3,2,5,3,0,1,1,1,0,1,1 0,5,1,2,2,1,3,0,1,1,1,0,1,0 0,0,0,3,1,1,3,0,1,1,1,0,1,0 0,3,0,3,2,5,3,0,1,1,1,0,1,0 2,0,7,1,0,9,2,0,1,1,1,0,1,0 2,0,8,0,0,8,2,0,1,1,1,1,1,0 0,0,1,2,0,4,2,4,1,1,1,0,1,0 0,0,0,3,2,8,3,0,1,1,1,1,1,1 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,0,3,2,0,1,1,1,1,1,0 0,0,3,2,2,8,1,0,1,1,1,0,1,0 2,0,2,1,2,11,3,0,0,1,1,1,1,0 0,0,1,2,2,3,3,0,0,1,1,0,1,0 1,0,3,2,0,9,2,0,1,1,1,0,1,0 0,0,5,2,0,7,2,0,1,1,1,2,1,0 0,0,5,2,2,5,3,0,1,1,1,0,1,0 0,0,10,3,0,5,2,1,1,1,1,0,1,1 0,0,1,2,2,2,3,0,1,1,1,2,1,0 0,0,12,1,2,2,1,0,0,1,1,2,1,0 0,0,1,2,2,10,3,0,1,1,1,1,1,0 1,0,3,2,1,8,3,0,0,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 0,0,3,2,2,9,5,0,1,1,1,1,1,0 1,0,5,2,2,8,3,0,0,1,1,0,1,0 2,0,7,1,4,7,5,0,0,1,1,0,1,0 0,5,0,3,2,7,3,0,1,1,1,2,1,0 0,0,9,1,2,6,3,0,1,1,1,0,1,0 0,0,1,2,2,3,3,0,1,1,1,2,1,0 1,0,1,2,0,4,2,0,1,1,1,1,1,0 0,4,3,2,0,12,2,0,1,1,1,0,1,0 1,5,0,3,0,4,2,0,1,1,1,0,1,1 0,0,3,2,2,7,3,0,1,1,1,0,1,0 1,3,1,2,0,1,2,0,1,1,1,0,1,0 1,0,1,2,0,5,2,2,1,1,1,0,1,1 2,0,3,2,0,8,2,0,1,1,1,0,1,1 1,2,0,3,0,5,2,0,1,1,1,1,1,0 3,0,14,0,2,6,3,0,1,1,1,2,1,0 0,0,0,3,0,3,2,0,1,1,1,1,1,1 0,0,3,2,2,6,1,0,0,1,1,0,1,0 2,2,0,3,0,4,2,0,1,1,1,0,1,1 2,1,3,2,0,3,2,0,1,1,1,0,1,0 0,0,1,2,2,3,1,0,1,1,1,2,1,0 0,0,1,2,2,6,1,0,1,1,1,2,1,0 1,0,3,2,3,8,3,0,0,1,1,2,1,0 0,0,0,3,2,5,1,0,1,1,1,1,1,1 0,0,3,2,2,7,1,0,0,1,1,1,1,0 0,0,3,2,0,10,2,0,1,1,1,1,1,0 2,3,1,2,3,2,3,4,1,1,1,0,1,0 1,0,9,1,0,7,2,0,1,1,1,0,1,0 1,3,0,3,0,4,2,1,1,1,1,0,1,1 2,0,3,2,0,1,2,0,1,1,1,0,1,1 2,1,3,2,0,3,2,0,1,1,1,0,1,0 0,0,0,3,2,5,3,0,1,1,1,1,1,1 0,4,3,2,0,12,2,0,1,1,1,1,1,1 1,0,3,2,2,10,5,4,0,1,1,2,1,0 1,2,1,2,3,4,5,0,0,1,1,1,1,0 0,3,1,2,0,8,2,4,1,1,1,0,1,1 0,0,6,2,2,1,1,0,1,1,1,2,1,0 1,0,2,1,2,7,5,4,0,1,1,0,1,0 2,0,14,0,0,1,2,0,1,1,1,0,1,0 0,0,10,3,2,5,3,4,1,1,1,1,1,0 1,0,3,2,1,1,5,0,0,1,1,1,1,0 1,0,0,3,2,4,5,0,0,1,1,0,1,0 0,5,0,3,2,8,3,0,0,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,1 1,0,5,2,0,5,2,0,1,1,1,1,1,0 1,0,1,2,2,5,3,4,1,1,1,0,1,1 2,4,0,3,0,4,2,0,1,1,1,0,1,0 0,0,3,2,2,8,4,0,1,1,1,2,1,0 0,0,3,2,2,7,4,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,2,1,0 1,0,3,2,1,4,3,0,1,1,1,1,1,0 1,0,3,2,1,3,3,0,0,1,1,0,1,0 1,0,1,2,2,8,3,0,0,1,1,1,1,1 1,0,1,2,0,3,2,0,1,1,1,0,1,0 1,0,3,2,1,7,3,0,1,1,1,0,1,0 0,0,0,3,2,0,3,0,0,1,1,1,1,0 1,0,3,2,0,3,2,0,1,1,1,1,1,1 3,0,8,0,4,11,3,0,0,1,1,0,1,0 1,1,0,3,0,3,2,0,1,1,1,0,1,1 0,0,1,2,2,6,1,4,1,1,1,0,1,0 0,0,3,2,0,3,2,0,1,1,1,0,1,0 2,1,4,3,0,5,2,0,1,1,1,1,1,1 1,0,0,3,0,5,2,0,1,1,1,0,1,1 0,0,1,2,0,1,2,0,1,1,1,0,1,0 0,4,0,3,2,5,3,0,0,1,1,2,1,0 1,0,3,2,0,4,2,0,1,1,1,1,1,0 2,0,12,1,0,10,2,0,1,1,1,0,1,0 1,0,7,1,0,2,0,4,0,1,1,2,1,0 1,0,1,2,0,7,2,0,1,1,1,0,1,1 2,1,3,2,4,3,3,0,1,1,1,0,1,0 1,0,1,2,0,3,2,0,1,1,1,1,1,1 1,0,1,2,1,7,3,0,1,1,1,1,1,0 1,5,0,3,0,8,2,0,1,1,1,1,1,1 2,0,0,3,0,5,2,0,1,1,1,1,1,1 0,0,1,2,2,3,3,0,1,1,1,0,1,0 0,4,1,2,0,4,2,0,1,1,1,0,1,1 1,0,3,2,0,4,2,0,1,1,1,1,1,1 1,4,6,2,2,0,3,0,1,1,1,0,1,0 2,0,8,0,4,2,3,0,0,1,1,1,1,0 1,4,10,3,2,5,3,0,0,1,1,1,1,0 1,0,1,2,0,4,2,0,1,1,1,0,1,0 1,0,1,2,1,3,3,4,1,1,1,0,1,0 1,0,3,2,3,4,5,4,0,1,1,0,1,0 1,0,10,3,0,5,2,0,1,1,1,2,1,1 2,1,5,2,5,4,3,0,0,1,1,1,1,0 1,3,3,2,0,8,2,4,1,1,1,0,1,1 1,0,3,2,2,1,3,0,1,1,1,2,1,0 2,0,3,2,0,4,2,0,1,1,1,1,1,0 0,0,1,2,2,5,1,0,0,1,1,0,1,0 1,3,3,2,0,10,2,4,1,1,1,1,1,1 0,0,3,2,2,2,1,0,0,1,1,2,1,0 0,0,12,1,0,1,2,0,1,1,1,0,1,0 0,0,1,2,2,8,1,0,0,1,1,0,1,0 1,4,0,3,0,8,2,0,1,1,1,0,1,1 1,0,1,2,1,8,5,0,0,1,1,0,1,1 0,1,3,2,0,1,2,0,1,1,1,1,1,1 2,0,1,2,2,8,1,0,0,1,1,2,1,0 1,0,1,2,5,1,3,1,1,1,1,0,1,0 1,4,6,2,0,12,2,0,1,1,1,1,1,1 0,0,3,2,2,2,1,0,1,1,1,2,1,0 0,0,3,2,2,8,1,0,0,1,1,2,1,0 1,0,0,3,0,1,2,0,1,1,1,0,1,0 0,1,3,2,0,4,2,0,1,1,1,0,1,0 0,3,3,2,2,8,3,4,0,1,1,0,1,0 0,0,1,2,0,6,2,0,1,1,1,2,1,0 0,1,3,2,0,5,2,0,1,1,1,1,1,1 0,0,3,2,2,8,3,0,0,1,1,2,1,0 0,0,5,2,0,0,2,0,1,1,1,2,1,0 0,0,9,1,0,6,1,0,1,1,1,0,1,0 0,0,3,2,0,8,2,0,1,1,1,1,1,0 0,0,0,3,2,5,3,1,0,1,1,0,1,0 2,0,3,2,0,8,2,0,1,1,1,0,1,1 1,0,1,2,0,1,2,0,1,1,1,1,1,0 2,0,1,2,0,0,2,0,1,1,1,0,1,0 3,1,1,2,4,8,3,0,0,1,1,2,1,0 1,0,10,3,0,4,2,0,1,1,1,0,1,1 1,0,3,2,0,1,2,0,1,1,1,0,1,1 1,0,1,2,0,7,2,0,1,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,0,2,2,0,1,1,1,0,1,0 0,0,1,2,2,1,3,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 0,0,1,2,2,1,1,0,1,1,1,0,1,0 0,0,3,2,2,2,3,0,0,1,1,2,1,0 0,4,3,2,2,2,1,0,0,1,1,1,1,0 0,0,1,2,1,1,3,0,1,1,1,1,1,0 1,0,3,2,0,6,2,0,1,1,1,1,1,1 0,0,4,3,4,2,3,0,1,1,1,2,1,0 0,0,7,1,2,2,1,0,0,1,1,2,1,0 0,0,3,2,2,3,3,0,1,1,1,0,1,0 0,0,0,3,2,6,1,0,1,1,1,0,1,0 1,0,1,2,0,4,2,0,1,1,1,1,1,1 1,0,1,2,0,0,0,0,0,1,1,0,1,1 2,0,3,2,0,4,2,0,1,1,1,1,1,0 0,0,3,2,0,1,2,0,1,1,1,1,1,0 2,0,12,1,0,6,2,0,1,1,1,0,1,0 0,0,1,2,2,2,3,4,0,1,1,2,1,0 0,0,6,2,1,5,5,0,0,1,1,0,1,0 1,4,0,3,4,5,5,1,0,1,1,2,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,1,2,2,3,1,0,1,1,1,2,1,0 0,0,1,2,0,1,1,0,1,1,1,0,1,0 1,0,1,2,3,5,5,4,0,1,1,0,1,0 0,0,3,2,1,3,1,0,0,1,1,0,1,0 1,0,3,2,0,6,2,0,1,1,1,0,1,0 0,0,2,1,2,8,1,0,0,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,2,1,1 0,0,6,2,0,0,2,0,1,1,1,0,1,0 1,1,3,2,1,10,3,0,1,1,1,1,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,0 1,0,1,2,1,1,5,0,0,1,1,0,1,0 2,5,0,3,1,7,3,4,1,1,1,2,1,0 0,5,1,2,2,8,3,0,0,1,1,2,1,0 0,0,1,2,2,8,1,0,0,1,1,2,1,0 1,0,2,1,3,7,3,4,1,1,1,2,1,0 1,1,0,3,0,9,2,0,1,1,1,1,1,0 0,0,3,2,1,8,5,0,0,1,1,0,1,0 1,0,3,2,5,8,3,0,0,1,1,1,1,0 1,0,3,2,3,10,5,0,0,1,1,1,1,0 0,0,3,2,0,10,2,0,1,1,1,0,1,0 0,0,3,2,0,9,2,4,1,1,1,0,1,0 0,0,1,2,2,7,1,0,1,1,1,0,1,0 1,4,10,3,0,4,2,0,1,1,1,0,1,1 0,1,1,2,3,1,3,0,1,1,1,2,1,0 1,0,3,2,1,2,3,0,1,1,1,2,1,0 0,0,1,2,2,8,1,0,0,1,1,0,1,0 0,0,3,2,2,6,1,0,1,1,1,0,1,0 0,0,10,3,2,5,3,0,1,1,1,1,1,0 0,0,3,2,2,8,1,0,0,1,1,0,1,0 0,0,2,1,3,5,1,0,1,1,1,2,1,0 0,0,0,3,2,3,3,0,1,1,1,0,1,0 0,0,3,2,2,6,1,0,1,1,1,2,1,0 0,0,3,2,2,7,1,0,1,1,1,0,1,0 2,5,1,2,0,12,2,0,1,1,1,2,1,0 0,0,0,3,2,0,3,0,0,1,1,1,1,0 0,0,3,2,2,7,1,0,0,1,1,0,1,0 1,0,10,3,2,5,3,0,1,1,1,1,1,1 0,0,1,2,2,0,3,0,0,1,1,0,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,1 1,4,6,2,1,5,5,0,0,1,1,0,1,0 1,4,5,2,1,2,3,0,0,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,0,1,1 0,0,7,1,2,2,1,0,1,1,1,1,1,0 0,3,1,2,0,0,0,0,0,1,1,0,1,0 1,0,3,2,0,3,2,0,1,1,1,1,1,1 1,0,3,2,0,10,2,0,1,1,1,1,1,0 0,0,1,2,2,8,4,0,1,1,1,2,1,0 2,0,3,2,1,8,5,0,0,1,1,2,1,0 1,0,2,1,0,2,2,2,1,1,1,2,1,0 2,1,3,2,0,9,2,0,1,1,1,1,1,1 0,4,10,3,2,5,3,0,1,1,1,1,1,0 2,0,1,2,0,3,2,0,1,1,1,0,1,0 0,0,3,2,2,1,3,0,1,1,1,0,1,0 0,1,1,2,0,4,4,0,1,1,1,1,1,1 1,4,3,2,2,2,5,4,0,1,1,1,1,0 1,4,3,2,0,10,2,0,1,1,1,2,1,0 2,0,12,1,4,7,3,0,1,1,1,1,1,0 1,0,1,2,0,8,2,0,1,1,1,0,1,0 0,0,2,1,2,7,3,0,1,1,1,2,1,0 1,0,0,3,0,5,2,0,1,1,1,0,1,0 0,0,1,2,0,4,2,0,1,1,1,1,1,0 1,0,3,2,0,2,0,4,0,1,1,0,1,0 1,0,3,2,0,4,2,0,1,1,1,0,1,1 0,0,1,2,2,3,3,0,1,1,1,0,1,0 2,0,1,2,1,8,5,0,0,1,1,1,1,0 0,0,0,3,2,5,3,0,0,1,1,1,1,0 0,0,7,1,0,1,2,0,1,1,1,0,1,0 1,1,2,1,1,4,3,0,1,1,1,1,1,0 0,0,7,1,2,6,4,0,1,1,1,0,1,0 0,0,3,2,2,1,1,0,1,1,1,1,1,0 0,0,10,3,0,5,2,0,1,1,1,0,1,1 1,3,0,3,0,4,2,0,1,1,1,1,1,1 1,0,3,2,0,4,0,0,0,1,1,2,1,1 1,0,3,2,0,8,2,0,1,1,1,1,1,1 0,1,3,2,0,10,2,0,1,1,1,1,1,0 0,0,3,2,2,8,3,0,0,1,1,1,1,0 1,4,3,2,0,1,2,0,1,1,1,0,1,1 0,0,3,2,2,3,4,0,1,1,1,1,1,0 0,4,3,2,3,8,3,0,0,1,1,0,1,0 0,1,0,3,1,3,3,0,1,1,1,0,1,0 0,0,0,3,1,12,3,4,1,1,1,1,1,1 1,0,0,3,2,5,3,0,1,1,1,1,1,1 0,0,3,2,2,2,3,0,0,1,1,1,1,0 1,0,2,1,1,6,5,4,0,1,1,0,1,0 1,4,13,3,0,5,2,0,1,1,1,1,1,1 0,0,12,1,2,2,3,0,0,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,0,1,1 1,0,14,0,0,9,2,0,1,1,1,0,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 0,0,0,3,2,5,3,0,0,1,1,0,1,0 1,0,4,3,3,5,3,0,1,1,1,1,1,1 1,1,1,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,0,3,2,4,3,0,1,1,1,0,1,0 2,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,0,3,0,1,2,0,1,1,1,1,1,1 0,0,0,3,0,5,2,0,1,1,1,1,1,1 0,0,6,2,2,4,1,0,0,1,1,1,1,0 0,0,0,3,2,5,3,0,0,1,1,0,1,0 0,0,1,2,2,1,1,0,1,1,1,0,1,0 2,2,1,2,0,4,2,0,1,1,1,0,1,1 1,1,10,3,0,9,2,0,1,1,1,1,1,0 0,0,10,3,2,3,1,0,0,1,1,0,1,0 2,1,1,2,0,2,2,0,1,1,1,1,1,0 0,0,11,0,0,2,1,1,0,1,1,2,1,0 2,0,1,2,1,1,5,0,1,1,1,2,1,0 0,0,0,3,0,12,2,0,1,1,1,0,1,1 0,0,0,3,0,4,2,0,1,1,1,0,1,0 0,0,3,2,2,2,3,0,1,1,1,0,1,0 0,0,6,2,1,0,5,0,0,1,1,0,1,0 0,0,0,3,0,1,2,0,1,1,1,0,1,0 2,0,1,2,1,8,5,0,0,1,1,2,1,0 2,4,3,2,0,1,2,0,1,1,1,1,1,0 0,0,3,2,2,3,4,4,0,1,1,2,1,0 1,1,3,2,0,9,2,0,1,1,1,1,1,1 0,0,2,1,1,10,3,0,1,1,1,1,1,0 1,4,1,2,1,4,3,0,0,1,1,0,1,0 1,0,1,2,1,4,1,4,0,1,1,0,1,0 2,5,0,3,0,1,2,0,1,1,1,1,1,1 1,0,8,0,2,6,3,4,1,1,1,0,1,0 0,0,1,2,0,4,2,0,1,1,1,1,1,1 1,1,5,2,0,10,2,0,1,1,1,1,1,0 0,0,5,2,0,2,0,0,0,1,1,2,1,1 1,3,1,2,1,4,5,4,0,1,1,0,1,1 0,0,9,1,2,7,4,0,1,1,1,2,1,0 0,0,1,2,2,8,1,0,1,1,1,2,1,0 0,4,0,3,2,5,3,4,0,1,1,0,1,0 2,3,0,3,2,10,3,4,1,1,1,1,1,0 1,0,5,2,1,2,3,0,0,1,1,0,1,0 0,0,2,1,2,6,1,0,1,1,1,2,1,0 0,0,3,2,2,7,3,4,0,1,1,0,1,0 1,3,5,2,2,8,3,0,1,1,1,0,1,0 1,0,3,2,0,5,2,0,1,1,1,1,1,1 0,0,3,2,0,2,2,0,1,1,1,0,1,0 1,4,10,3,0,5,0,0,0,1,1,1,1,1 1,0,5,2,0,10,2,0,1,1,1,1,1,0 1,0,3,2,0,3,2,0,1,1,1,1,1,0 0,0,1,2,2,8,1,4,0,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 2,4,0,3,0,12,2,4,1,1,1,2,1,0 0,0,3,2,0,2,1,0,1,1,1,0,1,0 1,0,1,2,0,6,2,0,1,1,1,0,1,1 2,0,0,3,0,4,2,0,1,1,1,2,1,0 0,0,3,2,2,7,1,0,1,1,1,1,1,0 0,0,1,2,0,10,2,0,1,1,1,0,1,1 3,4,3,2,0,12,2,0,1,1,1,2,1,0 0,0,3,2,3,1,1,0,1,1,1,0,1,0 1,0,5,2,2,2,1,0,0,1,1,1,1,0 1,4,0,3,1,5,5,4,0,1,1,0,1,0 0,0,9,1,2,7,1,0,0,1,1,0,1,0 2,0,8,0,1,7,5,0,0,1,1,0,1,0 2,0,11,0,0,1,2,4,1,1,1,0,1,1 0,0,1,2,2,3,3,0,0,1,1,0,1,0 0,3,3,2,2,8,1,0,1,1,1,0,1,0 0,0,0,3,2,5,1,0,0,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,0,1,2,0,1,1,1,0,1,0 0,0,14,0,2,6,3,0,1,1,1,1,1,0 2,5,13,3,0,4,2,0,1,1,1,1,1,1 0,0,2,1,2,6,1,0,1,1,1,2,1,0 1,0,3,2,2,8,5,0,0,1,1,0,1,0 0,0,9,1,1,1,3,0,1,1,1,1,1,0 1,3,1,2,1,8,3,0,1,1,1,0,1,1 2,1,3,2,0,2,2,4,1,1,1,1,1,0 1,0,3,2,2,7,3,4,0,1,1,1,1,0 0,0,1,2,3,0,3,2,1,1,1,0,1,0 2,4,8,0,0,8,2,0,1,1,1,0,1,0 0,0,0,3,2,4,1,0,1,1,1,0,1,0 0,0,3,2,0,2,2,0,1,1,1,0,1,1 0,0,12,1,2,11,1,4,0,1,1,2,1,0 0,0,3,2,2,1,1,0,1,1,1,2,1,0 1,3,3,2,1,0,5,0,1,1,1,0,1,0 0,0,1,2,2,8,3,0,0,1,1,0,1,0 2,1,1,2,0,2,2,0,1,1,1,2,1,0 0,0,1,2,3,2,5,0,0,1,1,2,1,0 0,0,1,2,0,10,2,0,1,1,1,0,1,0 2,0,1,2,0,5,2,4,1,1,1,1,1,1 0,0,1,2,0,1,2,0,1,1,1,0,1,0 0,0,10,3,0,5,2,1,1,1,1,1,1,1 0,0,1,2,2,2,3,0,1,1,1,2,1,0 1,0,0,3,2,0,5,1,0,1,1,0,1,0 2,0,8,0,4,2,3,3,0,1,1,2,1,0 1,0,6,2,0,5,2,0,1,1,1,2,1,1 2,0,8,0,0,10,2,4,1,1,1,0,1,0 2,2,3,2,0,2,2,0,1,1,1,0,1,1 2,0,3,2,1,4,3,0,0,1,1,0,1,0 0,0,1,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,0,1,2,0,1,1,1,1,1,0 0,0,3,2,2,7,1,0,0,1,1,2,1,0 0,1,1,2,0,1,2,0,1,1,1,0,1,0 0,3,1,2,2,4,3,0,1,1,1,0,1,0 1,0,5,2,2,4,3,0,0,1,1,1,1,0 1,0,3,2,2,8,5,0,0,1,1,2,1,0 1,1,8,0,0,9,2,0,1,1,1,0,1,0 1,0,1,2,0,9,2,0,1,1,1,1,1,1 2,0,8,0,1,10,3,0,1,1,1,0,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 1,0,1,2,0,7,2,0,1,1,1,0,1,1 2,2,12,1,0,9,2,0,1,1,1,1,1,0 1,0,1,2,1,3,5,0,0,1,1,0,1,0 0,0,12,1,2,7,5,0,1,1,1,0,1,0 1,0,5,2,2,5,3,0,1,1,1,1,1,0 2,0,1,2,0,1,2,0,1,1,1,0,1,1 2,0,3,2,2,2,4,0,1,1,1,2,1,0 2,0,1,2,0,10,2,0,1,1,1,2,1,1 1,0,3,2,0,1,2,0,1,1,1,1,1,0 0,0,10,3,0,4,2,0,1,1,1,1,1,0 1,2,0,3,1,5,5,0,1,1,1,1,1,0 1,0,5,2,0,3,2,0,1,1,1,1,1,1 1,4,1,2,0,10,2,0,1,1,1,2,1,0 1,0,3,2,0,4,2,0,1,1,1,0,1,0 1,4,1,2,2,4,3,0,0,1,1,2,1,0 1,0,5,2,1,10,5,0,0,1,1,0,1,0 1,0,9,1,0,10,2,0,1,1,1,0,1,0 1,0,3,2,4,8,3,0,0,1,1,2,1,0 0,0,3,2,2,6,1,4,1,1,1,2,1,0 0,0,6,2,0,8,0,0,0,1,1,2,1,0 2,0,1,2,0,3,2,0,1,1,1,0,1,1 1,0,3,2,1,9,3,4,1,1,1,0,1,0 1,4,3,2,0,2,2,4,1,1,1,0,1,0 3,5,1,2,3,3,3,0,1,1,1,2,1,0 1,0,0,3,0,5,2,0,1,1,1,0,1,1 0,5,14,0,2,7,1,0,0,1,1,2,1,0 1,0,1,2,0,3,0,0,0,1,1,0,1,1 1,1,0,3,0,3,2,0,1,1,1,0,1,1 0,4,1,2,2,12,5,3,1,1,1,0,1,0 2,0,3,2,0,3,2,0,1,1,1,2,1,0 0,4,1,2,2,8,1,4,0,1,1,2,1,0 1,0,1,2,0,1,2,4,1,1,1,0,1,0 0,1,3,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,0,2,2,0,1,1,1,0,1,0 1,0,4,3,0,5,2,0,1,1,1,1,1,1 1,0,0,3,1,3,5,0,1,1,1,1,1,1 1,4,10,3,2,5,3,0,0,1,1,0,1,1 1,0,13,3,3,4,5,0,1,1,1,0,1,1 1,0,0,3,1,3,3,0,1,1,1,1,1,0 1,0,0,3,0,4,2,0,1,1,1,0,1,1 0,0,3,2,2,3,1,0,1,1,1,0,1,0 0,0,12,1,2,2,1,0,0,1,1,2,1,0 0,0,1,2,0,2,2,0,1,1,1,0,1,0 2,2,1,2,0,4,2,0,1,1,1,1,1,1 0,0,0,3,0,5,2,0,1,1,1,1,1,0 0,0,12,1,2,2,1,0,1,1,1,2,1,0 0,0,3,2,0,10,2,0,1,1,1,1,1,1 0,0,1,2,2,7,3,0,0,1,1,2,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,1,2,0,1,2,0,1,1,1,0,1,0 1,4,5,2,0,4,2,4,1,1,1,1,1,1 1,0,10,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,0,8,0,0,0,1,1,0,1,0 0,0,3,2,2,6,3,4,0,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,1 0,2,3,2,0,4,2,0,1,1,1,0,1,1 0,0,1,2,2,3,1,0,0,1,1,2,1,0 0,0,0,3,2,8,1,0,0,1,1,2,1,0 2,0,3,2,0,4,2,0,1,1,1,1,1,1 1,3,0,3,5,4,3,0,1,1,1,1,1,1 1,2,1,2,0,4,2,0,1,1,1,1,1,1 1,5,0,3,0,4,2,0,1,1,1,1,1,1 0,0,0,3,2,4,1,0,1,1,1,0,1,0 0,0,3,2,0,8,0,1,0,1,1,2,1,0 1,0,3,2,0,4,2,0,1,1,1,1,1,1 0,0,1,2,2,2,3,0,0,1,1,2,1,0 1,1,1,2,1,2,3,0,0,1,1,1,1,0 2,0,1,2,4,3,5,0,0,1,1,2,1,0 1,1,3,2,0,3,1,0,0,1,1,0,1,1 2,2,0,3,0,5,2,0,1,1,1,1,1,1 2,0,1,2,4,8,3,0,0,1,1,0,1,0 2,0,3,2,4,7,3,0,0,1,1,0,1,0 1,0,3,2,3,2,5,0,0,1,1,0,1,0 0,0,3,2,0,8,0,0,0,1,1,2,1,0 0,0,3,2,2,8,1,0,0,1,1,0,1,0 2,1,3,2,0,1,2,0,1,1,1,1,1,0 1,1,3,2,0,10,2,0,1,1,1,1,1,0 1,1,0,3,2,3,3,0,1,1,1,2,1,0 2,0,0,3,4,3,3,0,1,1,1,2,1,1 0,0,3,2,0,2,0,3,0,1,1,0,1,0 1,0,7,1,0,6,2,0,1,1,1,1,1,0 1,0,5,2,1,4,3,0,0,1,1,1,1,0 0,0,3,2,2,2,1,0,0,1,1,0,1,0 1,0,3,2,0,9,2,3,1,1,1,0,1,0 1,0,4,3,0,5,2,0,1,1,1,0,1,1 1,1,7,1,0,1,2,0,1,1,1,0,1,1 1,4,0,3,0,8,0,0,0,1,1,0,1,1 1,0,0,3,0,4,2,0,1,1,1,0,1,1 2,0,7,1,1,2,3,0,1,1,1,0,1,0 0,0,3,2,0,4,2,0,1,1,1,1,1,0 2,1,2,1,0,2,2,0,1,1,1,0,1,0 0,0,6,2,0,10,2,0,1,1,1,1,1,1 0,4,0,3,0,5,2,0,1,1,1,1,1,1 0,0,5,2,2,8,3,0,0,1,1,0,1,0 0,1,0,3,1,5,4,0,1,1,1,2,1,1 1,0,3,2,1,3,3,0,1,1,1,0,1,0 1,0,2,1,0,1,2,0,1,1,1,1,1,0 1,2,10,3,0,3,2,0,1,1,1,0,1,1 0,0,6,2,2,3,3,4,1,1,1,1,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,0 2,0,3,2,2,10,3,0,1,1,1,0,1,1 0,0,10,3,2,0,3,0,0,1,1,0,1,0 2,4,0,3,4,5,3,0,0,1,1,0,1,1 1,0,6,2,0,1,2,0,1,1,1,0,1,1 0,0,1,2,2,2,1,0,0,1,1,2,1,0 2,0,8,0,0,1,2,0,1,1,1,0,1,0 0,0,1,2,2,8,1,0,1,1,1,2,1,0 0,0,2,1,2,1,1,0,1,1,1,2,1,0 0,0,1,2,0,2,2,0,1,1,1,0,1,0 0,0,1,2,1,0,5,0,0,1,1,0,1,0 0,0,10,3,2,5,3,0,0,1,1,1,1,0 1,0,1,2,0,3,2,0,1,1,1,1,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,1 0,0,12,1,4,8,5,0,0,1,1,2,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 1,0,8,0,0,1,2,0,1,1,1,0,1,0 0,0,1,2,2,0,1,0,1,1,1,2,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 1,4,0,3,0,5,0,0,0,1,1,1,1,1 1,3,10,3,0,5,2,0,1,1,1,0,1,1 2,2,0,3,0,9,2,0,1,1,1,1,1,1 2,0,3,2,0,0,2,0,1,1,1,0,1,1 1,1,4,3,0,5,2,0,1,1,1,1,1,1 0,0,2,1,2,1,1,0,1,1,1,0,1,0 1,0,7,1,0,7,2,0,1,1,1,0,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 0,0,2,1,2,8,1,0,0,1,1,2,1,0 0,0,1,2,0,1,2,0,1,1,1,0,1,0 1,1,0,3,0,5,2,0,1,1,1,1,1,0 1,2,0,3,0,3,2,0,1,1,1,0,1,1 2,2,10,3,0,3,2,0,1,1,1,2,1,0 0,0,3,2,1,2,3,4,1,1,1,0,1,0 0,0,0,3,2,8,3,0,0,1,1,1,1,0 0,0,3,2,2,0,1,0,1,1,1,1,1,0 0,0,10,3,2,5,3,0,0,1,1,1,1,0 1,0,6,2,1,8,5,0,0,1,1,0,1,0 0,0,0,3,0,8,0,4,0,1,1,2,1,0 0,0,1,2,2,4,3,4,0,1,1,2,1,0 0,0,3,2,0,2,2,0,1,1,1,0,1,0 0,0,0,3,0,5,0,0,0,1,1,2,1,1 0,0,0,3,0,5,0,0,0,1,1,2,1,0 0,0,3,2,3,1,3,0,1,1,1,1,1,0 0,0,12,1,3,1,5,0,0,1,1,0,1,0 0,0,2,1,2,2,1,4,1,1,1,2,1,0 0,0,6,2,2,3,3,4,0,1,1,2,1,0 1,5,0,3,0,5,2,0,1,1,1,1,1,1 0,0,9,1,2,2,1,0,0,1,1,2,1,0 1,0,7,1,0,1,2,0,1,1,1,0,1,0 0,0,6,2,2,2,3,0,0,1,1,1,1,0 1,5,3,2,0,12,2,0,1,1,1,1,1,1 2,0,1,2,1,2,3,0,0,1,1,2,1,0 0,0,1,2,0,7,2,0,1,1,1,1,1,0 0,0,1,2,0,8,2,0,1,1,1,0,1,1 0,0,0,3,0,0,0,0,0,1,1,0,1,1 1,0,3,2,0,7,2,0,1,1,1,1,1,1 1,0,3,2,1,8,3,0,0,1,1,2,1,0 0,0,3,2,2,8,3,0,0,1,1,1,1,0 1,2,3,2,0,4,2,0,1,1,1,1,1,1 0,4,5,2,0,5,2,0,1,1,1,1,1,0 1,1,3,2,0,3,2,0,1,1,1,1,1,0 0,0,14,0,2,9,4,4,1,1,1,0,1,0 0,5,1,2,2,6,3,0,1,1,1,2,1,0 1,0,5,2,2,5,3,0,1,1,1,1,1,1 0,0,1,2,2,2,1,0,0,1,1,2,1,0 0,0,3,2,0,4,2,0,1,1,1,1,1,0 1,3,1,2,0,1,2,0,1,1,1,0,1,1 1,0,3,2,2,10,1,0,1,1,1,0,1,0 0,0,1,2,2,8,3,0,1,1,1,1,1,0 1,0,6,2,0,8,2,0,1,1,1,2,1,0 0,0,3,2,2,8,1,0,1,1,1,2,1,0 0,0,0,3,0,4,0,0,0,1,1,1,1,1 0,0,3,2,2,10,1,0,1,1,1,1,1,0 1,1,3,2,1,1,1,0,1,1,1,2,1,0 0,0,1,2,2,6,3,0,1,1,1,0,1,0 1,4,10,3,1,5,5,0,0,1,1,1,1,0 0,4,1,2,0,12,2,0,1,1,1,1,1,1 0,0,3,2,2,3,4,0,1,1,1,0,1,0 2,0,2,1,0,10,2,2,1,1,1,0,1,0 2,1,1,2,0,4,2,0,1,1,1,0,1,0 0,0,10,3,0,5,2,0,1,1,1,1,1,0 3,0,0,3,0,3,2,0,1,1,1,0,1,0 1,4,10,3,0,5,0,4,0,1,1,2,1,1 2,0,8,0,0,7,2,0,1,1,1,0,1,0 0,0,3,2,0,6,2,0,1,1,1,1,1,0 0,0,0,3,0,5,2,0,1,1,1,2,1,1 0,0,3,2,5,2,5,0,0,1,1,1,1,0 0,0,2,1,2,5,4,0,1,1,1,2,1,0 1,1,6,2,0,5,0,0,0,1,1,2,1,1 0,0,7,1,0,3,2,0,1,1,1,0,1,0 0,0,3,2,2,8,1,0,0,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,2,8,1,0,0,1,1,2,1,0 1,3,10,3,0,4,2,0,1,1,1,0,1,1 1,0,1,2,1,4,3,0,1,1,1,1,1,1 0,0,0,3,2,5,3,0,1,1,1,1,1,0 1,0,2,1,1,6,5,0,0,1,1,0,1,0 1,0,7,1,3,2,3,0,1,1,1,0,1,0 0,0,5,2,0,5,2,0,1,1,1,1,1,0 1,1,5,2,1,3,3,0,1,1,1,1,1,0 1,0,3,2,3,3,5,0,1,1,1,1,1,0 0,0,3,2,2,6,3,0,1,1,1,0,1,0 0,0,0,3,2,3,3,0,1,1,1,0,1,0 2,5,0,3,0,4,2,0,1,1,1,0,1,0 1,0,1,2,0,5,2,0,1,1,1,1,1,0 0,0,1,2,2,1,3,0,1,1,1,0,1,0 2,0,15,0,5,2,3,1,1,1,1,0,1,0 0,0,0,3,2,0,3,0,1,1,1,1,1,0 0,3,4,3,2,5,3,0,0,1,1,1,1,0 1,0,10,3,1,3,3,0,0,1,1,1,1,0 1,3,3,2,0,1,2,0,1,1,1,0,1,1 0,0,0,3,0,5,2,0,1,1,1,1,1,1 2,0,6,2,1,3,3,0,0,1,1,0,1,0 2,0,1,2,4,7,5,0,0,1,1,0,1,0 0,0,0,3,2,4,3,0,1,1,1,1,1,0 0,0,0,3,2,3,3,0,0,1,1,0,1,0 2,0,8,0,0,7,0,0,0,1,1,0,1,0 0,0,1,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,2,1,3,0,1,1,1,0,1,0 0,0,1,2,2,8,1,0,1,1,1,2,1,0 1,0,0,3,0,3,2,0,1,1,1,0,1,1 0,0,0,3,2,4,3,0,1,1,1,0,1,0 2,1,0,3,0,3,2,0,1,1,1,1,1,0 0,0,15,0,2,7,1,0,0,1,1,2,1,0 0,0,1,2,2,2,1,0,1,1,1,2,1,0 2,2,0,3,0,4,2,0,1,1,1,1,1,1 1,0,3,2,2,7,3,0,1,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,1,2,0,3,2,0,1,1,1,2,1,0 0,1,3,2,1,1,1,2,1,1,1,2,1,0 1,3,10,3,0,5,2,0,1,1,1,0,1,0 1,3,0,3,0,4,0,0,0,1,1,0,1,1 0,2,0,3,1,5,3,0,0,1,1,1,1,0 0,0,3,2,2,0,3,0,1,1,1,0,1,0 1,2,0,3,0,5,2,0,1,1,1,1,1,1 2,2,3,2,1,4,3,4,1,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,3,2,0,8,0,0,0,1,1,0,1,0 1,0,3,2,0,9,2,0,1,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,0 0,0,6,2,2,11,3,0,0,1,1,2,1,0 2,2,2,1,0,10,2,0,1,1,1,0,1,1 0,0,1,2,0,1,2,0,1,1,1,0,1,0 2,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,2,1,0,7,2,0,1,1,1,0,1,0 1,2,4,3,0,5,2,0,1,1,1,0,1,1 0,1,1,2,0,2,2,0,1,1,1,1,1,0 1,4,1,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 0,0,6,2,0,12,2,0,1,1,1,0,1,0 2,1,8,0,0,9,2,0,1,1,1,1,1,0 0,0,2,1,2,2,1,0,1,1,1,2,1,0 1,0,3,2,0,10,2,2,1,1,1,0,1,1 0,0,0,3,2,5,3,0,1,1,1,0,1,0 0,4,1,2,0,12,0,0,0,1,1,0,1,1 2,0,3,2,0,1,2,0,1,1,1,0,1,0 1,5,1,2,2,0,5,4,0,1,1,0,1,0 2,0,3,2,0,8,2,0,1,1,1,0,1,1 0,0,10,3,2,4,3,0,0,1,1,1,1,1 1,4,13,3,0,4,2,0,1,1,1,0,1,1 1,0,3,2,5,3,5,4,0,1,1,2,1,0 1,3,3,2,2,4,5,0,0,1,1,1,1,0 2,1,3,2,0,4,2,0,1,1,1,1,1,1 2,3,0,3,1,5,5,0,1,1,1,0,1,0 2,1,3,2,0,10,2,0,1,1,1,1,1,1 0,0,3,2,0,2,2,0,1,1,1,0,1,0 0,0,3,2,0,8,1,2,0,1,1,0,1,0 1,3,0,3,5,4,3,0,0,1,1,0,1,0 0,0,5,2,1,4,3,0,1,1,1,0,1,0 0,1,0,3,1,1,5,1,1,1,1,1,1,0 0,0,6,2,2,7,5,4,0,1,1,0,1,0 0,0,3,2,1,1,5,0,1,1,1,0,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 1,0,3,2,5,2,3,0,1,1,1,2,1,0 0,0,3,2,5,2,3,0,0,1,1,2,1,0 1,5,3,2,0,10,2,4,1,1,1,0,1,0 1,0,3,2,0,4,2,0,1,1,1,1,1,1 0,0,3,2,0,8,0,0,0,1,1,2,1,1 0,0,0,3,2,8,1,4,1,1,1,2,1,0 1,2,10,3,0,3,2,0,1,1,1,1,1,1 1,1,3,2,5,1,3,1,1,1,1,0,1,0 1,0,3,2,1,3,3,0,0,1,1,0,1,0 1,0,10,3,1,0,5,4,0,1,1,2,1,1 1,0,1,2,0,7,2,0,1,1,1,0,1,0 1,2,3,2,1,3,5,0,1,1,1,1,1,0 0,0,3,2,2,10,3,0,1,1,1,1,1,0 0,0,2,1,2,6,1,0,1,1,1,2,1,0 1,0,12,1,3,2,3,4,0,1,1,0,1,0 0,0,0,3,2,8,1,4,0,1,1,2,1,0 1,0,0,3,1,8,3,0,0,1,1,0,1,0 0,0,6,2,0,1,2,0,1,1,1,1,1,1 0,5,1,2,1,12,5,0,0,1,1,2,1,0 1,2,13,3,0,5,2,0,1,1,1,1,1,1 1,0,10,3,1,4,5,4,0,1,1,1,1,1 2,2,0,3,0,5,2,0,1,1,1,0,1,0 2,1,8,0,2,2,4,0,0,1,1,1,1,0 1,0,3,2,2,9,3,0,1,1,1,1,1,0 0,0,3,2,1,1,5,0,1,1,1,0,1,0 3,1,13,3,5,5,3,0,1,1,1,2,1,1 1,1,3,2,4,9,3,0,1,1,1,1,1,0 2,1,2,1,4,2,5,0,0,1,1,1,1,1 0,0,0,3,2,5,3,0,0,1,1,0,1,1 0,0,5,2,2,7,1,4,1,1,1,1,1,0 2,0,9,1,0,8,2,4,1,1,1,0,1,0 0,0,3,2,0,5,2,0,1,1,1,0,1,0 0,0,3,2,2,1,5,0,1,1,1,0,1,0 2,0,3,2,0,1,2,0,1,1,1,0,1,1 0,0,0,3,2,4,3,0,1,1,1,1,1,1 0,0,1,2,2,2,1,0,0,1,1,2,1,0 1,0,1,2,2,3,5,4,0,1,1,1,1,0 0,0,1,2,2,8,5,4,0,1,1,0,1,0 0,0,1,2,2,0,3,0,0,1,1,2,1,0 2,0,0,3,0,5,0,0,0,1,1,2,1,1 0,3,0,3,2,5,3,0,0,1,1,2,1,0 0,0,3,2,0,7,2,0,1,1,1,1,1,0 0,1,3,2,1,1,3,0,1,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,0 0,3,1,2,2,3,3,0,0,1,1,2,1,0 1,0,3,2,0,7,2,0,1,1,1,1,1,1 0,0,9,1,2,1,1,4,1,1,1,0,1,0 0,0,1,2,0,2,2,0,1,1,1,1,1,0 1,4,0,3,1,5,3,0,1,1,1,1,1,0 3,0,3,2,0,4,2,0,1,1,1,2,1,1 1,0,3,2,4,7,5,3,1,1,1,0,1,0 0,0,3,2,2,7,3,1,1,1,1,0,1,0 2,1,0,3,4,5,3,0,0,1,1,1,1,1 1,4,0,3,0,4,2,0,1,1,1,1,1,1 1,0,3,2,0,1,2,0,1,1,1,2,1,0 0,0,1,2,2,7,1,4,1,1,1,0,1,0 0,0,5,2,2,8,5,0,0,1,1,0,1,0 1,0,11,0,2,2,3,0,1,1,1,0,1,0 1,2,1,2,0,4,2,0,1,1,1,1,1,1 0,0,3,2,0,3,2,0,1,1,1,1,1,0 0,0,0,3,0,3,2,0,1,1,1,1,1,1 0,4,1,2,2,1,3,0,1,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,0,1,1 0,0,3,2,1,8,5,0,0,1,1,0,1,0 0,0,0,3,0,0,2,0,1,1,1,1,1,1 2,0,1,2,1,2,3,0,1,1,1,2,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,6,2,0,1,2,1,1,1,1,0,1,0 1,0,3,2,3,1,4,4,1,1,1,0,1,0 0,0,2,1,1,7,5,0,0,1,1,0,1,0 1,2,10,3,0,4,2,0,1,1,1,1,1,1 0,0,2,1,2,10,1,0,1,1,1,2,1,0 1,0,12,1,0,1,2,0,1,1,1,1,1,0 1,0,4,3,0,5,2,4,1,1,1,0,1,1 1,3,0,3,0,4,2,0,1,1,1,0,1,1 2,0,0,3,0,5,2,0,1,1,1,1,1,1 0,2,1,2,1,8,1,0,0,1,1,1,1,0 1,5,3,2,4,0,5,4,0,1,1,0,1,0 0,0,9,1,2,6,1,4,1,1,1,2,1,0 0,0,7,1,2,1,3,0,1,1,1,0,1,0 0,0,0,3,2,5,3,0,0,1,1,0,1,0 1,1,3,2,0,9,2,0,1,1,1,1,1,0 1,0,3,2,2,1,5,0,1,1,1,0,1,0 1,0,1,2,1,8,5,0,0,1,1,2,1,1 0,0,2,1,2,3,1,0,0,1,1,2,1,0 1,4,9,1,0,1,2,0,1,1,1,0,1,0 0,1,6,2,0,2,0,0,0,1,1,1,1,0 0,0,3,2,2,8,1,0,0,1,1,0,1,0 1,1,6,2,0,9,2,0,1,1,1,1,1,0 2,0,3,2,0,1,2,0,1,1,1,0,1,1 0,0,1,2,0,0,2,0,1,1,1,0,1,0 1,3,0,3,0,5,2,0,1,1,1,2,1,1 0,0,1,2,2,3,1,0,0,1,1,2,1,0 0,0,3,2,0,4,0,0,0,1,1,0,1,0 0,0,0,3,2,4,3,0,0,1,1,1,1,1 1,5,1,2,5,8,5,2,0,1,1,0,1,0 1,0,6,2,0,1,2,0,1,1,1,0,1,1 0,3,1,2,2,8,1,0,0,1,1,2,1,0 1,0,1,2,1,1,3,0,1,1,1,0,1,0 0,0,3,2,2,10,5,0,0,1,1,1,1,0 2,0,2,1,0,2,2,0,1,1,1,2,1,0 1,3,0,3,0,4,2,4,1,1,1,1,1,0 0,0,0,3,1,3,3,0,1,1,1,1,1,0 1,0,1,2,0,3,2,0,1,1,1,1,1,1 0,0,8,0,0,5,2,0,1,1,1,1,1,0 1,3,6,2,0,12,2,0,1,1,1,1,1,1 1,4,5,2,1,2,5,0,0,1,1,1,1,0 2,0,3,2,4,8,5,0,0,1,1,0,1,0 0,0,10,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,1,7,3,0,1,1,1,0,1,0 0,0,3,2,2,6,1,0,1,1,1,0,1,0 0,0,0,3,0,5,2,0,1,1,1,0,1,0 1,0,13,3,0,5,2,0,1,1,1,1,1,1 0,0,5,2,1,0,3,0,0,1,1,1,1,0 1,0,3,2,0,7,2,0,1,1,1,1,1,0 0,0,3,2,0,4,2,0,1,1,1,1,1,0 1,1,3,2,0,1,2,0,1,1,1,0,1,0 1,1,4,3,0,5,2,0,1,1,1,2,1,1 0,0,5,2,2,3,3,0,1,1,1,1,1,0 0,0,2,1,2,3,1,0,0,1,1,2,1,0 0,0,0,3,2,3,1,0,0,1,1,1,1,0 0,0,3,2,0,10,2,0,1,1,1,1,1,1 0,0,1,2,2,3,1,0,1,1,1,2,1,0 0,0,3,2,0,6,2,0,1,1,1,0,1,0 0,0,0,3,2,8,3,0,0,1,1,0,1,0 0,0,6,2,2,4,3,0,1,1,1,1,1,1 1,0,3,2,0,4,2,0,1,1,1,1,1,1 1,0,6,2,0,5,2,0,1,1,1,1,1,1 0,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,3,2,3,7,3,0,0,1,1,0,1,0 1,0,3,2,1,10,3,0,1,1,1,0,1,0 0,1,3,2,2,1,3,0,1,1,1,1,1,0 0,0,1,2,2,8,3,0,1,1,1,1,1,0 1,0,3,2,0,8,0,0,0,1,1,2,1,0 0,0,5,2,2,4,1,0,1,1,1,0,1,0 1,1,3,2,0,3,0,0,0,1,1,2,1,1 0,0,3,2,0,10,2,4,1,1,1,0,1,0 1,2,13,3,0,5,2,0,1,1,1,0,1,1 0,0,1,2,0,4,2,0,1,1,1,1,1,1 0,0,3,2,2,1,1,0,1,1,1,0,1,0 1,0,10,3,0,4,2,4,1,1,1,0,1,1 0,0,2,1,1,9,3,0,1,1,1,1,1,0 1,4,1,2,4,10,3,4,0,1,1,1,1,0 0,0,0,3,0,4,0,0,0,1,1,1,1,1 1,0,6,2,0,1,2,0,1,1,1,1,1,1 0,0,0,3,2,4,3,0,1,1,1,1,1,0 0,0,1,2,2,2,3,0,1,1,1,0,1,0 0,0,3,2,2,5,3,0,0,1,1,1,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,1 0,0,6,2,2,8,1,1,0,1,1,0,1,0 0,0,3,2,2,2,3,0,0,1,1,2,1,0 1,0,1,2,1,4,3,0,1,1,1,1,1,0 2,0,0,3,0,5,2,0,1,1,1,1,1,1 0,0,0,3,2,3,1,0,0,1,1,0,1,0 2,0,3,2,1,8,5,0,0,1,1,0,1,0 0,0,1,2,2,3,4,0,0,1,1,0,1,0 2,0,7,1,0,9,2,0,1,1,1,1,1,0 1,0,5,2,1,1,1,0,1,1,1,0,1,0 1,5,3,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,1 1,0,1,2,0,5,2,0,1,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,0 1,2,3,2,0,3,2,0,1,1,1,1,1,1 0,0,3,2,2,1,3,0,1,1,1,0,1,0 0,0,5,2,2,3,3,0,1,1,1,0,1,0 0,0,3,2,1,0,5,0,0,1,1,0,1,0 0,0,1,2,1,5,5,0,0,1,1,2,1,0 2,0,4,3,0,4,2,0,1,1,1,2,1,0 0,5,3,2,1,5,5,0,0,1,1,0,1,0 0,3,3,2,1,5,5,0,0,1,1,0,1,0 1,0,3,2,0,12,2,0,1,1,1,0,1,0 0,1,6,2,2,1,1,0,1,1,1,0,1,0 1,0,11,0,4,2,5,0,0,1,1,2,1,0 2,1,5,2,1,3,3,0,0,1,1,0,1,0 1,0,0,3,0,3,2,0,1,1,1,1,1,0 0,0,6,2,0,8,0,4,0,1,1,0,1,0 0,5,1,2,2,0,3,4,1,1,1,0,1,0 1,0,13,3,0,4,2,0,1,1,1,2,1,1 1,0,1,2,1,7,1,0,0,1,1,2,1,0 0,0,1,2,0,3,0,0,0,1,1,2,1,0 1,5,0,3,0,5,2,0,1,1,1,0,1,0 1,0,1,2,1,2,5,0,0,1,1,0,1,0 1,0,0,3,1,5,3,4,0,1,1,0,1,0 1,2,1,2,0,3,2,0,1,1,1,1,1,1 0,0,1,2,0,4,0,0,0,1,1,0,1,1 1,0,3,2,2,1,3,0,1,1,1,1,1,0 0,0,3,2,2,8,3,0,1,1,1,0,1,0 0,1,3,2,0,2,0,0,0,1,1,0,1,1 1,4,0,3,0,1,2,0,1,1,1,0,1,0 2,4,1,2,1,4,5,0,0,1,1,2,1,0 0,0,5,2,2,3,1,0,1,1,1,2,1,0 1,0,3,2,1,9,5,0,1,1,1,1,1,0 2,1,1,2,0,1,2,0,1,1,1,1,1,1 1,0,10,3,0,5,2,0,1,1,1,0,1,1 1,0,6,2,1,1,5,0,1,1,1,0,1,0 0,5,3,2,2,6,3,4,1,1,1,0,1,0 0,0,3,2,2,3,1,0,0,1,1,0,1,0 0,0,1,2,2,2,3,0,0,1,1,2,1,0 2,0,3,2,0,10,2,0,1,1,1,0,1,0 0,0,3,2,0,8,2,0,1,1,1,1,1,0 0,0,1,2,2,3,3,4,1,1,1,1,1,0 1,4,3,2,1,4,1,0,1,1,1,1,1,0 1,0,10,3,1,5,3,0,0,1,1,0,1,1 1,0,9,1,2,2,5,0,0,1,1,2,1,0 1,1,3,2,0,9,2,0,1,1,1,1,1,0 2,0,3,2,0,2,4,1,1,1,1,0,1,0 0,0,1,2,2,7,1,0,0,1,1,0,1,0 0,0,1,2,2,4,3,0,1,1,1,0,1,0 0,0,5,2,0,1,2,0,1,1,1,0,1,0 1,0,0,3,1,4,4,0,1,1,1,0,1,0 0,0,3,2,2,2,3,0,0,1,1,0,1,0 0,5,1,2,2,2,1,0,0,1,1,2,1,0 0,0,1,2,2,8,5,4,0,1,1,0,1,0 0,0,10,3,0,3,2,0,1,1,1,1,1,1 0,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,2,8,3,4,1,1,1,0,1,0 1,0,3,2,1,1,3,0,1,1,1,1,1,0 0,4,3,2,0,12,2,0,1,1,1,1,1,0 0,0,7,1,2,1,1,2,1,1,1,2,1,0 2,4,1,2,1,8,3,0,0,1,1,2,1,0 0,1,6,2,2,9,3,2,1,1,1,1,1,0 0,0,0,3,2,0,4,0,1,1,1,1,1,0 0,3,3,2,2,8,3,4,0,1,1,0,1,0 0,4,10,3,0,5,2,0,1,1,1,1,1,0 0,0,1,2,2,3,3,0,0,1,1,0,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,1 0,0,1,2,2,3,1,0,0,1,1,2,1,0 1,0,3,2,0,3,2,0,1,1,1,0,1,0 1,3,3,2,0,8,2,4,1,1,1,0,1,0 0,0,3,2,2,8,1,0,1,1,1,0,1,0 1,0,1,2,3,5,5,0,0,1,1,0,1,0 1,0,3,2,1,8,5,0,0,1,1,0,1,0 0,0,0,3,0,8,0,0,0,1,1,0,1,1 0,0,1,2,2,8,3,0,0,1,1,0,1,0 0,0,2,1,1,2,3,0,0,1,1,1,1,0 0,1,3,2,0,10,2,0,1,1,1,1,1,0 0,0,10,3,2,5,3,1,0,1,1,0,1,1 2,0,3,2,0,1,2,0,1,1,1,1,1,1 1,0,3,2,0,8,2,0,1,1,1,2,1,0 1,0,1,2,3,7,5,4,0,1,1,0,1,0 0,0,0,3,2,4,1,0,1,1,1,2,1,0 2,0,3,2,0,4,2,0,1,1,1,0,1,1 0,0,3,2,2,1,1,0,1,1,1,0,1,0 0,0,0,3,2,7,1,0,1,1,1,1,1,0 0,4,1,2,0,12,2,0,1,1,1,1,1,0 0,0,7,1,2,2,4,0,1,1,1,1,1,0 1,0,5,2,0,1,2,0,1,1,1,1,1,1 0,0,3,2,2,1,3,0,1,1,1,0,1,0 1,0,3,2,1,2,3,4,0,1,1,2,1,0 0,0,3,2,2,2,5,3,1,1,1,2,1,0 0,0,0,3,1,2,3,0,1,1,1,0,1,0 1,0,0,3,3,0,3,0,1,1,1,0,1,0 1,0,6,2,1,2,3,0,0,1,1,2,1,0 0,0,0,3,0,3,2,0,1,1,1,1,1,1 1,3,3,2,0,8,0,0,0,1,1,0,1,1 1,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,2,8,3,0,1,1,1,0,1,0 0,0,0,3,2,2,1,0,1,1,1,0,1,0 2,0,0,3,0,5,2,0,1,1,1,0,1,1 0,0,12,1,2,2,1,0,1,1,1,2,1,0 1,1,0,3,2,4,3,0,0,1,1,0,1,0 1,0,6,2,1,4,3,0,1,1,1,0,1,1 0,0,1,2,0,3,2,0,1,1,1,0,1,1 1,5,1,2,1,5,3,0,0,1,1,2,1,0 1,0,1,2,0,1,2,0,1,1,1,1,1,1 0,0,3,2,2,2,4,0,0,1,1,0,1,0 0,4,1,2,2,2,3,0,0,1,1,0,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 2,0,2,1,1,2,3,4,0,1,1,2,1,0 0,0,12,1,0,1,2,0,1,1,1,1,1,0 0,0,10,3,2,2,3,0,0,1,1,2,1,0 0,0,3,2,0,10,2,0,1,1,1,1,1,1 0,0,3,2,1,2,5,0,0,1,1,0,1,0 1,3,3,2,0,1,2,0,1,1,1,0,1,1 2,0,1,2,0,3,2,0,1,1,1,2,1,0 0,0,5,2,2,3,3,3,1,1,1,2,1,0 1,0,3,2,0,10,2,3,1,1,1,0,1,0 3,0,3,2,0,3,2,0,1,1,1,2,1,0 0,0,1,2,2,8,1,0,0,1,1,2,1,0 1,0,1,2,0,9,2,0,1,1,1,1,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 0,0,1,2,2,5,3,0,1,1,1,2,1,0 1,2,1,2,0,4,2,0,1,1,1,1,1,1 0,0,0,3,2,8,3,0,1,1,1,2,1,0 0,0,2,1,0,7,2,0,1,1,1,0,1,0 0,0,1,2,0,8,2,0,1,1,1,0,1,0 1,0,3,2,1,1,3,0,1,1,1,0,1,0 0,0,3,2,2,2,3,0,0,1,1,0,1,0 1,0,12,1,1,3,3,0,1,1,1,1,1,0 2,0,3,2,1,12,3,0,1,1,1,0,1,0 3,4,0,3,0,8,2,0,1,1,1,2,1,0 2,0,1,2,1,2,3,0,0,1,1,1,1,0 0,0,1,2,2,1,1,0,1,1,1,2,1,0 1,0,1,2,1,8,3,0,0,1,1,0,1,0 0,0,2,1,2,6,1,0,1,1,1,2,1,0 1,3,10,3,2,8,3,0,0,1,1,0,1,1 0,0,3,2,2,1,3,0,1,1,1,2,1,0 0,3,0,3,2,5,3,0,1,1,1,0,1,0 0,2,3,2,2,1,4,0,1,1,1,1,1,0 1,2,1,2,0,4,0,0,0,1,1,1,1,0 0,0,12,1,2,2,3,0,0,1,1,0,1,0 0,5,1,2,2,8,5,4,0,1,1,0,1,0 2,1,3,2,0,9,2,0,1,1,1,0,1,0 2,0,14,0,0,7,2,0,1,1,1,0,1,0 0,0,1,2,2,2,1,0,0,1,1,0,1,0 1,0,14,0,5,2,5,1,0,1,1,0,1,0 1,4,13,3,0,4,2,0,1,1,1,1,1,1 0,0,1,2,2,8,1,0,0,1,1,0,1,0 0,0,0,3,2,3,5,1,1,1,1,1,1,0 2,0,1,2,0,3,2,0,1,1,1,2,1,0 0,0,1,2,0,8,0,0,0,1,1,0,1,0 0,0,3,2,2,9,1,0,1,1,1,0,1,0 1,0,1,2,0,3,2,0,1,1,1,0,1,1 0,0,8,0,2,3,1,0,1,1,1,2,1,0 0,0,2,1,2,1,3,0,1,1,1,1,1,0 0,0,3,2,2,10,4,4,1,1,1,1,1,0 0,0,10,3,1,4,5,4,0,1,1,0,1,0 0,0,5,2,5,7,5,0,1,1,1,0,1,0 1,0,3,2,0,3,2,0,1,1,1,1,1,0 0,0,3,2,0,3,2,0,1,1,1,1,1,1 0,0,3,2,2,7,3,0,1,1,1,1,1,0 1,4,15,0,2,6,1,0,0,1,1,2,1,0 0,0,1,2,2,8,1,0,0,1,1,2,1,0 1,1,0,3,0,3,2,0,1,1,1,1,1,1 1,1,0,3,1,4,3,0,1,1,1,0,1,0 1,0,14,0,0,7,0,1,0,1,1,2,1,0 0,4,3,2,0,6,4,0,1,1,1,2,1,0 1,0,1,2,1,3,3,0,1,1,1,0,1,0 0,0,0,3,2,5,1,0,0,1,1,0,1,0 0,0,1,2,0,7,2,0,1,1,1,0,1,0 2,5,3,2,0,9,2,0,1,1,1,0,1,1 0,0,1,2,2,2,3,0,0,1,1,2,1,0 0,0,1,2,2,7,3,0,1,1,1,0,1,0 1,1,3,2,1,1,3,0,1,1,1,0,1,0 0,0,6,2,2,12,3,0,1,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,2,1,2,3,1,0,1,1,1,2,1,0 2,0,2,1,1,12,3,0,1,1,1,0,1,0 0,0,1,2,2,6,1,0,1,1,1,2,1,0 1,4,1,2,2,12,3,4,0,1,1,0,1,1 0,0,3,2,0,8,2,0,1,1,1,0,1,0 1,0,1,2,1,8,3,0,0,1,1,0,1,0 0,0,3,2,2,3,1,4,1,1,1,1,1,0 1,0,1,2,0,6,2,4,1,1,1,1,1,0 0,0,3,2,0,2,2,0,1,1,1,1,1,0 0,0,1,2,0,10,2,0,1,1,1,1,1,0 0,5,0,3,0,5,2,0,1,1,1,1,1,0 0,0,6,2,2,2,3,0,0,1,1,1,1,0 1,0,1,2,0,4,2,0,1,1,1,1,1,1 0,0,12,1,0,9,2,0,1,1,1,0,1,0 2,1,3,2,0,9,2,0,1,1,1,1,1,1 2,0,8,0,0,6,2,0,1,1,1,0,1,0 0,0,0,3,1,4,3,0,1,1,1,1,1,1 1,0,0,3,2,5,3,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 2,0,3,2,0,9,2,0,1,1,1,1,1,1 3,1,4,3,0,4,2,0,1,1,1,0,1,0 2,1,1,2,0,4,2,0,1,1,1,2,1,0 1,1,10,3,3,4,5,0,0,1,1,2,1,0 0,0,1,2,2,3,1,0,0,1,1,1,1,0 1,0,3,2,0,7,0,4,0,1,1,2,1,0 2,0,13,3,0,5,2,0,1,1,1,1,1,0 1,1,3,2,1,10,3,0,1,1,1,1,1,0 2,1,1,2,0,3,2,0,1,1,1,0,1,0 0,0,1,2,0,1,2,0,1,1,1,1,1,0 0,0,1,2,2,9,3,0,0,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,2,1,1,1,1,1,1,0,1,0 0,0,1,2,2,9,3,0,0,1,1,2,1,0 0,0,1,2,2,6,1,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 0,1,3,2,0,9,2,0,1,1,1,1,1,0 0,0,8,0,0,6,2,0,1,1,1,0,1,0 0,3,1,2,1,2,3,4,1,1,1,0,1,0 1,2,4,3,1,5,5,0,1,1,1,2,1,1 0,0,1,2,1,2,5,4,0,1,1,0,1,0 1,0,2,1,0,10,2,0,1,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,1,1,0 1,1,3,2,0,4,2,0,1,1,1,2,1,0 1,5,4,3,1,5,5,4,1,1,1,2,1,1 0,0,14,0,2,7,4,0,1,1,1,0,1,0 0,0,6,2,2,0,1,0,0,1,1,2,1,0 2,0,2,1,0,3,2,0,1,1,1,2,1,0 0,0,3,2,0,1,2,4,1,1,1,1,1,1 0,1,0,3,0,4,0,0,0,1,1,0,1,0 1,0,6,2,0,4,0,0,0,1,1,1,1,1 1,0,3,2,2,2,3,0,1,1,1,2,1,0 1,1,3,2,1,9,3,0,0,1,1,2,1,0 1,0,11,0,0,9,2,0,1,1,1,0,1,0 0,0,0,3,2,6,3,4,1,1,1,0,1,0 0,0,1,2,2,8,5,4,1,1,1,0,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,1 0,4,0,3,0,3,2,1,1,1,1,0,1,1 0,0,1,2,1,4,3,0,0,1,1,0,1,0 1,0,1,2,1,1,3,0,1,1,1,1,1,0 2,0,0,3,1,8,3,0,0,1,1,0,1,0 0,0,0,3,2,2,1,0,0,1,1,0,1,0 0,3,5,2,2,5,3,0,0,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,0 2,1,3,2,0,3,2,0,1,1,1,1,1,1 2,0,10,3,0,4,2,4,1,1,1,0,1,1 1,0,0,3,0,4,0,0,0,1,1,1,1,1 1,0,1,2,1,8,3,4,0,1,1,0,1,0 0,1,3,2,0,4,2,0,1,1,1,0,1,1 0,0,9,1,2,6,1,0,1,1,1,2,1,0 1,0,1,2,1,7,3,0,0,1,1,0,1,0 0,0,10,3,2,5,3,0,0,1,1,0,1,0 1,0,1,2,0,5,2,0,1,1,1,0,1,1 0,0,10,3,2,4,3,0,0,1,1,1,1,0 0,0,0,3,0,5,2,0,1,1,1,0,1,1 2,4,10,3,4,4,3,0,1,1,1,2,1,0 0,0,0,3,2,8,1,0,0,1,1,0,1,0 0,0,3,2,0,8,4,0,1,1,1,0,1,0 1,0,3,2,0,2,2,0,1,1,1,2,1,0 2,0,1,2,4,8,3,0,0,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 0,0,3,2,2,3,1,4,0,1,1,2,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,1 1,0,2,1,0,1,2,0,1,1,1,0,1,0 1,0,3,2,0,2,2,4,1,1,1,0,1,0 1,5,3,2,3,2,1,0,0,1,1,2,1,0 0,1,11,0,0,3,4,0,1,1,1,0,1,0 2,0,3,2,0,10,2,4,1,1,1,0,1,0 1,0,1,2,0,4,2,0,1,1,1,1,1,1 0,0,1,2,2,1,5,0,1,1,1,0,1,0 1,0,9,1,1,8,5,0,0,1,1,0,1,0 1,5,4,3,1,5,1,1,0,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,1,1,1 1,0,2,1,1,7,5,4,0,1,1,1,1,0 1,0,12,1,0,10,2,0,1,1,1,1,1,0 2,4,3,2,1,8,3,0,0,1,1,2,1,0 2,0,9,1,0,1,2,0,1,1,1,0,1,0 0,1,1,2,2,9,1,0,1,1,1,2,1,0 2,1,8,0,0,1,2,0,1,1,1,0,1,0 1,2,3,2,0,2,0,0,0,1,1,2,1,0 0,0,2,1,0,2,4,0,1,1,1,2,1,0 1,0,2,1,1,2,4,0,0,1,1,2,1,0 0,0,3,2,2,7,3,0,1,1,1,0,1,0 1,0,12,1,0,7,2,0,1,1,1,0,1,0 0,0,3,2,2,6,3,0,1,1,1,1,1,0 0,0,1,2,0,5,0,1,0,1,1,2,1,1 1,0,3,2,1,7,5,0,0,1,1,0,1,0 1,0,3,2,1,10,3,0,1,1,1,1,1,0 0,0,3,2,2,7,3,0,0,1,1,0,1,0 1,0,1,2,1,1,5,0,1,1,1,0,1,0 1,0,2,1,2,7,5,0,0,1,1,0,1,0 2,0,1,2,1,8,3,0,1,1,1,2,1,0 2,0,1,2,1,8,3,0,0,1,1,0,1,0 1,4,0,3,1,5,5,0,0,1,1,1,1,0 0,0,12,1,2,9,1,0,1,1,1,2,1,0 0,0,3,2,2,2,3,4,0,1,1,2,1,0 1,2,1,2,0,4,2,0,1,1,1,1,1,1 0,0,3,2,2,8,1,0,0,1,1,0,1,0 0,0,3,2,0,10,2,0,1,1,1,0,1,0 0,0,3,2,0,2,2,0,1,1,1,2,1,0 1,3,3,2,1,5,5,0,0,1,1,0,1,0 0,0,12,1,2,8,1,0,0,1,1,2,1,0 1,6,3,2,0,8,0,0,0,1,1,2,1,0 0,0,10,3,2,5,3,0,0,1,1,0,1,1 1,0,4,3,0,5,2,0,1,1,1,1,1,0 1,0,7,1,2,2,3,0,0,1,1,2,1,0 1,0,0,3,0,8,2,1,1,1,1,2,1,1 0,2,0,3,0,3,2,0,1,1,1,1,1,1 0,1,9,1,0,8,0,0,0,1,1,2,1,0 0,0,2,1,2,2,1,0,0,1,1,2,1,0 0,0,1,2,2,2,1,4,1,1,1,0,1,0 0,0,1,2,0,6,2,0,1,1,1,0,1,0 0,0,1,2,2,1,3,0,1,1,1,0,1,0 1,5,3,2,0,8,2,0,1,1,1,2,1,1 0,5,0,3,2,5,5,0,1,1,1,1,1,0 1,0,10,3,2,8,3,0,1,1,1,0,1,0 1,0,3,2,0,2,0,1,0,1,1,1,1,0 2,0,1,2,0,4,2,0,1,1,1,1,1,1 0,0,3,2,2,7,3,4,1,1,1,0,1,0 0,0,3,2,2,1,3,0,1,1,1,1,1,0 0,0,3,2,1,9,3,0,1,1,1,0,1,0 1,0,0,3,1,2,3,0,1,1,1,0,1,0 0,0,1,2,2,5,1,0,1,1,1,2,1,0 0,0,6,2,0,8,2,4,1,1,1,0,1,0 0,0,1,2,1,2,3,0,0,1,1,2,1,0 2,0,3,2,1,7,3,0,0,1,1,0,1,0 1,3,1,2,0,9,2,0,1,1,1,0,1,0 0,0,0,3,2,7,3,0,0,1,1,2,1,0 0,0,10,3,2,5,3,0,0,1,1,0,1,0 2,0,1,2,4,3,3,0,0,1,1,2,1,0 0,0,3,2,0,2,2,0,1,1,1,1,1,0 0,0,3,2,2,1,1,0,1,1,1,1,1,0 2,0,3,2,0,1,2,1,1,1,1,0,1,0 0,1,4,3,0,5,2,0,1,1,1,2,1,1 0,0,12,1,0,2,2,0,1,1,1,0,1,0 1,4,0,3,0,5,2,0,1,1,1,2,1,1 1,1,8,0,0,3,2,0,1,1,1,0,1,0 1,0,5,2,1,8,3,0,0,1,1,0,1,0 1,0,0,3,0,7,2,4,1,1,1,0,1,0 0,0,1,2,2,2,3,0,0,1,1,0,1,0 0,0,0,3,0,4,2,0,1,1,1,0,1,1 1,0,3,2,1,7,5,0,1,1,1,1,1,0 0,0,1,2,1,2,5,0,0,1,1,2,1,0 1,0,0,3,0,0,2,0,1,1,1,1,1,1 1,0,1,2,1,6,4,4,1,1,1,0,1,0 2,0,3,2,1,2,3,0,0,1,1,2,1,0 1,0,7,1,1,1,1,0,1,1,1,2,1,0 1,0,6,2,3,5,5,0,0,1,1,0,1,0 0,0,3,2,0,6,2,0,1,1,1,0,1,0 2,1,0,3,0,5,2,0,1,1,1,1,1,1 2,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,2,1,1,0,1,1,1,2,1,0 0,0,14,0,3,1,3,3,1,1,1,2,1,0 0,0,3,2,2,6,1,0,1,1,1,2,1,0 0,0,3,2,1,7,5,0,0,1,1,0,1,0 2,0,0,3,2,4,3,0,0,1,1,1,1,1 0,0,0,3,2,8,1,1,0,1,1,0,1,0 1,1,4,3,0,5,2,0,1,1,1,1,1,1 0,0,3,2,0,2,2,0,1,1,1,2,1,0 3,1,1,2,0,3,2,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,0,4,0,0,0,1,1,1,1,1 1,0,3,2,0,5,2,0,1,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,1,2,0,7,2,0,1,1,1,1,1,0 0,0,1,2,0,5,0,0,0,1,1,2,1,1 1,5,13,3,0,5,2,0,1,1,1,0,1,0 0,0,1,2,2,4,3,0,1,1,1,1,1,0 2,0,0,3,0,6,2,0,1,1,1,2,1,0 0,0,1,2,2,2,1,0,1,1,1,2,1,0 0,0,1,2,2,3,3,0,1,1,1,1,1,0 1,0,3,2,0,2,2,4,1,1,1,1,1,1 1,4,3,2,0,1,2,0,1,1,1,2,1,1 0,0,1,2,2,5,3,0,1,1,1,1,1,0 0,0,3,2,2,1,1,0,1,1,1,0,1,0 1,4,0,3,2,5,3,0,1,1,1,1,1,0 0,0,3,2,2,0,4,1,1,1,1,0,1,0 0,0,1,2,1,4,3,0,0,1,1,1,1,0 1,0,0,3,4,3,5,4,1,1,1,1,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,1 0,0,1,2,2,7,1,4,1,1,1,0,1,0 0,5,13,3,0,0,2,1,1,1,1,2,1,0 0,0,6,2,2,10,1,1,1,1,1,0,1,0 0,4,10,3,0,5,2,0,1,1,1,0,1,1 2,4,10,3,4,5,5,0,0,1,1,1,1,0 0,0,10,3,2,5,3,0,0,1,1,0,1,0 1,0,10,3,2,5,3,0,1,1,1,1,1,0 1,0,3,2,0,10,2,2,1,1,1,0,1,1 1,0,1,2,3,4,3,0,1,1,1,1,1,0 0,0,0,3,2,3,3,0,1,1,1,1,1,0 0,0,0,3,2,3,1,0,1,1,1,2,1,0 0,1,8,0,2,1,1,0,1,1,1,0,1,0 0,5,0,3,2,5,3,0,1,1,1,0,1,1 1,1,0,3,0,3,2,0,1,1,1,0,1,1 0,0,3,2,2,2,1,0,0,1,1,2,1,0 1,0,1,2,1,8,5,0,0,1,1,2,1,0 0,0,3,2,2,3,3,0,0,1,1,1,1,0 2,2,3,2,0,3,2,0,1,1,1,1,1,1 0,0,3,2,2,8,3,0,1,1,1,0,1,0 0,0,6,2,2,9,1,0,1,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,1,1,1 1,0,10,3,0,5,2,0,1,1,1,0,1,1 0,0,3,2,2,2,4,0,0,1,1,2,1,0 1,0,1,2,0,4,2,0,1,1,1,1,1,0 0,0,0,3,2,3,1,0,0,1,1,2,1,0 0,0,3,2,2,7,3,0,0,1,1,1,1,0 1,0,1,2,0,8,2,1,1,1,1,2,1,0 0,5,3,2,0,10,2,4,1,1,1,0,1,0 2,0,0,3,0,5,2,0,1,1,1,0,1,1 0,0,0,3,2,8,1,0,1,1,1,2,1,0 0,0,3,2,0,6,2,2,1,1,1,0,1,0 0,0,5,2,0,8,0,4,0,1,1,2,1,0 2,4,1,2,0,7,2,0,1,1,1,0,1,0 2,0,14,0,0,10,2,0,1,1,1,0,1,1 1,0,1,2,0,4,2,0,1,1,1,1,1,0 0,0,9,1,2,6,1,0,1,1,1,2,1,0 0,0,6,2,0,1,2,0,1,1,1,0,1,0 1,0,1,2,2,1,3,4,0,1,1,0,1,0 0,0,4,3,2,0,1,0,0,1,1,2,1,0 1,4,3,2,1,4,5,0,0,1,1,0,1,0 2,0,3,2,1,0,5,0,1,1,1,1,1,1 1,0,2,1,0,1,2,0,1,1,1,0,1,0 0,0,3,2,1,3,5,0,0,1,1,1,1,0 0,0,3,2,2,6,1,0,1,1,1,0,1,0 0,0,0,3,2,2,3,1,1,1,1,2,1,0 1,0,6,2,1,3,5,4,0,1,1,2,1,0 1,0,3,2,0,3,2,0,1,1,1,0,1,1 0,0,3,2,0,8,2,1,1,1,1,0,1,0 1,0,5,2,1,8,5,0,0,1,1,0,1,0 1,0,3,2,2,2,3,0,0,1,1,0,1,0 0,0,1,2,0,1,2,0,1,1,1,1,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,1,7,3,0,0,1,1,0,1,0 1,0,1,2,0,4,2,0,1,1,1,0,1,1 1,0,1,2,0,3,2,0,1,1,1,1,1,0 1,5,3,2,0,2,0,2,0,1,1,2,1,1 0,0,1,2,0,4,1,0,1,1,1,1,1,0 0,0,3,2,2,8,1,0,0,1,1,0,1,0 1,2,3,2,0,9,2,0,1,1,1,1,1,0 0,0,3,2,2,1,1,0,1,1,1,2,1,0 0,5,3,2,2,8,1,0,0,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,10,3,2,5,1,0,0,1,1,1,1,0 1,0,2,1,0,1,2,0,1,1,1,1,1,0 0,0,1,2,2,2,5,0,0,1,1,1,1,0 1,3,0,3,0,5,2,0,1,1,1,0,1,0 0,5,1,2,2,0,3,0,0,1,1,0,1,0 1,0,3,2,2,1,3,0,1,1,1,0,1,0 0,5,3,2,0,2,2,0,1,1,1,0,1,0 1,1,3,2,1,1,3,4,1,1,1,0,1,0 0,0,1,2,2,3,1,0,1,1,1,2,1,0 0,5,1,2,2,8,1,0,1,1,1,2,1,0 0,0,12,1,2,2,4,0,1,1,1,0,1,0 1,0,1,2,2,8,3,0,0,1,1,0,1,0 1,4,1,2,1,0,3,0,0,1,1,0,1,0 2,0,3,2,1,4,3,0,1,1,1,1,1,1 0,0,0,3,2,3,3,0,0,1,1,0,1,0 0,0,3,2,1,2,5,0,0,1,1,0,1,0 1,0,3,2,0,3,2,0,1,1,1,2,1,0 1,0,3,2,1,4,5,0,0,1,1,0,1,0 1,0,1,2,2,4,3,0,0,1,1,0,1,0 1,0,6,2,1,4,5,4,0,1,1,0,1,0 0,0,12,1,2,6,5,0,1,1,1,1,1,0 0,5,1,2,2,2,1,0,0,1,1,2,1,0 0,0,1,2,1,1,5,0,1,1,1,2,1,1 2,1,1,2,0,3,2,0,1,1,1,1,1,0 0,0,6,2,2,8,3,0,0,1,1,0,1,0 0,0,0,3,0,3,2,0,1,1,1,0,1,1 2,0,2,1,0,3,2,0,1,1,1,1,1,0 1,0,8,0,1,9,5,0,0,1,1,0,1,0 1,0,3,2,3,1,1,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 2,1,10,3,0,5,2,0,1,1,1,0,1,1 1,4,1,2,0,12,2,0,1,1,1,1,1,1 1,1,5,2,1,4,3,0,1,1,1,2,1,0 0,3,3,2,0,8,2,0,1,1,1,0,1,1 2,3,1,2,1,8,3,4,0,1,1,0,1,0 0,0,1,2,2,5,3,0,0,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,2,3,1,0,1,1,1,1,1,0 0,0,6,2,0,0,2,0,1,1,1,1,1,1 0,0,3,2,2,7,3,0,1,1,1,0,1,0 1,1,3,2,0,9,0,0,0,1,1,1,1,0 1,1,0,3,0,0,2,0,1,1,1,0,1,1 1,0,10,3,2,5,3,0,0,1,1,0,1,1 0,3,0,3,0,8,2,0,1,1,1,2,1,1 0,0,0,3,2,4,3,0,0,1,1,1,1,0 2,3,1,2,1,8,1,0,1,1,1,0,1,0 1,0,7,1,0,3,1,0,1,1,1,1,1,1 0,0,0,3,0,3,2,0,1,1,1,1,1,1 0,0,3,2,0,1,2,0,1,1,1,1,1,0 0,0,1,2,2,1,3,0,1,1,1,1,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 1,4,3,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,2,8,1,0,1,1,1,0,1,0 0,0,3,2,0,4,2,0,1,1,1,1,1,1 2,0,10,3,0,0,2,0,1,1,1,0,1,1 1,0,6,2,3,5,5,0,0,1,1,0,1,0 0,0,6,2,1,2,5,0,0,1,1,1,1,0 1,4,3,2,0,12,2,0,1,1,1,1,1,1 0,0,5,2,1,4,3,0,0,1,1,1,1,0 1,0,3,2,0,6,2,0,1,1,1,0,1,1 0,0,0,3,2,2,1,0,1,1,1,0,1,0 0,0,1,2,1,5,1,0,0,1,1,2,1,0 1,0,0,3,1,8,5,0,1,1,1,2,1,0 0,0,3,2,0,10,2,0,1,1,1,1,1,0 0,5,1,2,2,2,1,0,0,1,1,2,1,0 2,0,3,2,0,4,2,0,1,1,1,2,1,1 2,0,3,2,1,10,3,0,1,1,1,0,1,0 1,0,15,0,2,2,3,0,0,1,1,2,1,0 0,0,1,2,2,8,1,4,1,1,1,1,1,0 1,0,0,3,5,5,3,0,1,1,1,2,1,1 0,5,3,2,0,12,2,4,1,1,1,0,1,0 1,0,0,3,3,4,5,0,1,1,1,1,1,1 0,0,6,2,2,2,1,0,0,1,1,2,1,0 1,0,0,3,0,4,2,1,1,1,1,0,1,1 0,2,10,3,0,8,2,0,1,1,1,1,1,0 0,0,1,2,2,3,1,0,1,1,1,2,1,0 1,0,3,2,1,8,3,0,0,1,1,0,1,0 1,0,1,2,2,7,3,0,0,1,1,0,1,0 1,0,3,2,3,8,5,4,0,1,1,0,1,0 1,4,0,3,0,5,2,0,1,1,1,1,1,0 0,0,0,3,0,8,0,0,0,1,1,0,1,1 1,1,3,2,0,4,2,0,1,1,1,0,1,0 2,0,7,1,0,7,2,0,1,1,1,0,1,0 0,4,1,2,2,2,3,0,1,1,1,1,1,0 0,0,9,1,2,3,1,0,0,1,1,2,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 2,0,1,2,0,4,2,0,1,1,1,2,1,0 1,0,1,2,5,8,5,2,0,1,1,0,1,0 1,5,0,3,0,5,2,4,1,1,1,0,1,1 0,0,3,2,5,2,3,0,0,1,1,1,1,0 0,0,0,3,2,3,3,0,1,1,1,1,1,0 0,0,2,1,2,6,1,0,1,1,1,2,1,0 1,0,1,2,0,4,2,0,1,1,1,1,1,1 2,0,0,3,0,8,2,0,1,1,1,0,1,1 1,0,0,3,1,6,3,0,1,1,1,1,1,0 1,0,3,2,0,3,0,0,0,1,1,2,1,0 1,1,0,3,0,4,2,1,1,1,1,1,1,1 1,0,1,2,0,10,2,0,1,1,1,1,1,0 1,0,3,2,3,8,4,0,0,1,1,0,1,0 2,0,8,0,1,7,3,0,0,1,1,2,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,3,2,2,8,1,4,0,1,1,0,1,0 0,4,12,1,2,12,1,0,0,1,1,2,1,0 0,0,3,2,0,1,2,0,1,1,1,1,1,1 1,0,1,2,1,8,5,0,0,1,1,0,1,0 1,2,0,3,0,1,2,0,1,1,1,2,1,0 2,0,1,2,1,12,3,0,1,1,1,0,1,0 0,1,3,2,0,1,0,4,0,1,1,0,1,1 0,0,3,2,2,7,1,0,1,1,1,0,1,0 2,5,0,3,0,4,2,0,1,1,1,0,1,1 0,0,3,2,2,8,1,0,1,1,1,0,1,0 1,4,3,2,1,8,5,4,0,1,1,0,1,0 0,0,12,1,3,6,3,0,1,1,1,0,1,0 1,0,10,3,0,5,2,0,1,1,1,0,1,1 0,6,3,2,2,9,1,0,1,1,1,2,1,0 1,0,1,2,1,1,5,0,1,1,1,1,1,0 1,1,3,2,0,1,2,4,1,1,1,1,1,0 1,0,3,2,1,8,5,0,0,1,1,1,1,0 0,0,1,2,0,1,2,0,1,1,1,0,1,0 3,0,0,3,2,5,3,1,1,1,1,0,1,0 0,0,3,2,2,3,1,4,0,1,1,0,1,0 1,0,1,2,1,12,3,0,1,1,1,1,1,0 1,0,3,2,0,3,2,4,1,1,1,0,1,1 1,4,10,3,2,5,3,0,1,1,1,1,1,0 1,0,3,2,0,9,2,0,1,1,1,2,1,0 1,5,10,3,0,4,2,0,1,1,1,1,1,1 2,0,0,3,0,5,2,0,1,1,1,0,1,1 0,0,2,1,2,6,1,0,1,1,1,2,1,0 1,0,1,2,1,0,3,0,0,1,1,2,1,0 0,0,0,3,2,8,3,4,1,1,1,2,1,0 1,0,1,2,2,0,3,0,0,1,1,0,1,0 1,0,2,1,1,6,3,0,0,1,1,0,1,0 0,0,0,3,2,4,3,0,0,1,1,0,1,0 1,1,5,2,0,3,2,0,1,1,1,1,1,0 2,0,3,2,1,2,3,0,0,1,1,1,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,3,2,2,7,3,0,1,1,1,1,1,0 1,0,3,2,0,9,2,0,1,1,1,2,1,0 1,0,5,2,0,8,2,0,1,1,1,0,1,0 0,0,9,1,2,3,3,4,0,1,1,0,1,0 0,0,0,3,2,4,1,2,0,1,1,0,1,0 1,0,3,2,0,6,2,4,1,1,1,0,1,0 0,0,1,2,0,8,0,0,0,1,1,2,1,1 2,4,0,3,1,8,5,4,0,1,1,2,1,0 0,1,1,2,0,4,2,0,1,1,1,2,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 0,0,3,2,2,8,1,0,1,1,1,2,1,0 1,0,3,2,0,7,2,0,1,1,1,1,1,1 1,4,10,3,0,4,2,0,1,1,1,1,1,1 0,0,9,1,2,2,1,0,1,1,1,2,1,0 0,0,3,2,2,8,3,0,0,1,1,1,1,0 0,0,1,2,2,5,3,0,0,1,1,0,1,0 1,0,4,3,0,5,2,0,1,1,1,1,1,1 0,0,12,1,2,3,1,0,0,1,1,2,1,0 2,0,3,2,4,8,3,0,0,1,1,0,1,0 0,4,10,3,2,5,3,0,1,1,1,1,1,0 1,0,3,2,1,10,3,0,1,1,1,0,1,0 0,0,3,2,2,7,1,0,1,1,1,0,1,0 0,0,9,1,2,9,1,0,1,1,1,0,1,0 1,0,13,3,0,5,2,0,1,1,1,0,1,0 2,0,1,2,0,1,2,0,1,1,1,0,1,1 1,0,3,2,2,9,5,0,0,1,1,1,1,0 2,0,3,2,1,2,3,0,0,1,1,2,1,0 1,0,0,3,0,5,0,0,0,1,1,1,1,0 0,0,3,2,2,6,4,3,0,1,1,1,1,0 2,1,1,2,0,9,2,0,1,1,1,1,1,0 0,0,0,3,0,8,2,0,1,1,1,1,1,1 2,3,10,3,4,5,5,0,0,1,1,0,1,0 1,0,3,2,1,2,3,0,0,1,1,2,1,0 1,1,3,2,0,1,2,0,1,1,1,1,1,1 1,0,1,2,1,4,3,0,1,1,1,1,1,1 0,1,3,2,0,10,2,0,1,1,1,1,1,0 0,0,1,2,1,8,5,0,0,1,1,1,1,0 1,2,1,2,0,9,2,0,1,1,1,0,1,1 2,5,13,3,0,5,2,0,1,1,1,0,1,1 1,3,3,2,0,0,2,0,1,1,1,2,1,1 2,0,1,2,3,8,5,0,1,1,1,0,1,0 2,2,13,3,0,5,2,0,1,1,1,1,1,1 1,0,1,2,0,4,2,0,1,1,1,1,1,1 1,0,0,3,0,3,2,0,1,1,1,2,1,0 0,0,1,2,2,4,1,0,0,1,1,2,1,0 2,3,1,2,0,4,2,0,1,1,1,0,1,1 1,1,10,3,2,4,3,1,1,1,1,1,1,1 0,4,3,2,1,0,3,0,0,1,1,1,1,0 0,0,3,2,4,4,5,0,0,1,1,2,1,0 0,0,3,2,2,6,1,0,1,1,1,1,1,0 1,1,0,3,0,9,2,0,1,1,1,1,1,1 0,0,10,3,2,5,3,0,1,1,1,0,1,0 2,1,10,3,1,3,5,0,0,1,1,1,1,0 0,0,0,3,2,5,3,0,0,1,1,2,1,0 0,0,3,2,2,2,3,0,0,1,1,2,1,0 0,0,2,1,2,11,1,0,0,1,1,2,1,0 0,4,1,2,3,8,5,2,0,1,1,0,1,0 1,5,6,2,0,12,2,0,1,1,1,0,1,1 1,0,3,2,2,2,4,4,1,1,1,0,1,0 0,0,3,2,2,6,1,0,1,1,1,2,1,0 0,0,5,2,2,8,3,0,0,1,1,1,1,0 1,0,1,2,1,8,5,0,0,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,2,1,1 1,1,0,3,4,4,5,1,0,1,1,1,1,0 0,0,1,2,2,6,1,0,1,1,1,0,1,0 0,5,1,2,0,5,0,4,0,1,1,0,1,1 1,0,3,2,3,3,5,0,0,1,1,1,1,0 0,0,3,2,2,2,1,4,0,1,1,0,1,0 1,1,2,1,2,9,1,0,1,1,1,2,1,0 0,1,12,1,0,9,2,0,1,1,1,1,1,0 0,4,3,2,2,9,1,0,1,1,1,2,1,0 1,0,1,2,0,3,2,0,1,1,1,0,1,0 1,4,3,2,0,10,2,0,1,1,1,0,1,0 0,0,3,2,5,6,4,0,1,1,1,0,1,0 1,0,3,2,0,10,2,0,1,1,1,0,1,0 1,4,10,3,2,5,3,0,0,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,1,2,0,6,2,0,1,1,1,0,1,0 0,0,0,3,0,4,0,0,0,1,1,0,1,1 0,0,0,3,0,4,0,1,0,1,1,0,1,0 2,1,3,2,0,10,2,4,1,1,1,0,1,0 1,0,14,0,0,6,2,0,1,1,1,0,1,0 0,0,5,2,2,7,5,4,0,1,1,0,1,0 2,0,3,2,0,7,0,0,0,1,1,0,1,1 2,4,4,3,0,8,2,1,1,1,1,0,1,1 2,0,1,2,4,8,3,0,0,1,1,2,1,0 0,0,3,2,0,10,2,0,1,1,1,0,1,1 1,0,1,2,0,1,2,0,1,1,1,0,1,1 1,1,2,1,0,9,2,0,1,1,1,1,1,0 1,3,0,3,0,5,2,0,1,1,1,1,1,1 1,0,0,3,0,5,0,0,0,1,1,2,1,1 0,0,2,1,1,8,1,0,0,1,1,0,1,0 0,4,0,3,0,12,2,4,1,1,1,1,1,1 0,0,10,3,0,3,2,0,1,1,1,0,1,1 0,0,14,0,3,9,4,0,1,1,1,1,1,0 1,0,3,2,2,4,4,0,0,1,1,0,1,0 0,0,3,2,0,3,2,0,1,1,1,1,1,0 1,4,10,3,2,5,3,0,0,1,1,1,1,0 2,0,1,2,4,4,3,0,0,1,1,2,1,0 0,5,1,2,2,12,1,0,1,1,1,0,1,0 2,0,14,0,5,3,3,0,1,1,1,2,1,0 0,0,3,2,0,1,2,0,1,1,1,1,1,0 0,0,1,2,2,3,1,0,0,1,1,0,1,0 0,0,3,2,2,7,1,0,1,1,1,0,1,0 0,0,3,2,2,7,3,0,1,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,1,1,0 0,4,3,2,2,12,5,0,1,1,1,1,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 1,0,3,2,0,7,0,0,0,1,1,0,1,0 1,0,7,1,3,2,5,3,0,1,1,0,1,0 0,0,3,2,0,3,1,4,1,1,1,2,1,0 1,0,1,2,2,6,3,0,1,1,1,1,1,0 1,0,13,3,0,5,2,0,1,1,1,1,1,1 1,4,1,2,0,10,2,0,1,1,1,0,1,0 1,0,1,2,1,8,3,0,0,1,1,2,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,7,1,2,10,3,0,1,1,1,1,1,0 1,1,0,3,0,4,2,0,1,1,1,1,1,0 0,0,0,3,2,8,3,0,0,1,1,0,1,0 0,5,4,3,0,5,2,0,1,1,1,1,1,1 1,0,8,0,2,2,4,0,1,1,1,2,1,0 1,0,10,3,2,5,3,0,0,1,1,0,1,0 0,0,3,2,3,8,3,0,1,1,1,1,1,0 1,0,1,2,1,4,3,0,0,1,1,0,1,0 1,4,1,2,0,12,2,0,1,1,1,1,1,1 0,0,3,2,5,2,3,3,0,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 0,1,0,3,2,12,1,0,1,1,1,0,1,0 1,0,3,2,4,8,5,0,0,1,1,0,1,0 1,0,2,1,1,7,3,4,0,1,1,2,1,0 0,0,3,2,2,9,4,0,1,1,1,2,1,0 0,1,0,3,0,5,2,0,1,1,1,0,1,1 1,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,5,2,0,1,2,0,1,1,1,1,1,1 1,1,3,2,0,9,2,0,1,1,1,1,1,1 1,0,10,3,0,1,2,0,1,1,1,1,1,1 1,0,8,0,0,9,2,0,1,1,1,1,1,0 1,4,3,2,0,1,2,4,1,1,1,2,1,0 2,0,1,2,1,7,3,3,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 0,4,0,3,2,5,1,4,0,1,1,2,1,0 1,0,12,1,1,2,3,0,1,1,1,1,1,0 1,5,10,3,0,5,0,0,0,1,1,2,1,1 1,0,0,3,0,8,2,0,1,1,1,1,1,1 0,0,3,2,3,3,5,4,0,1,1,2,1,0 1,3,10,3,2,0,3,0,0,1,1,0,1,0 1,5,13,3,0,5,2,0,1,1,1,0,1,1 2,1,1,2,0,4,2,0,1,1,1,1,1,0 0,0,3,2,0,6,2,4,1,1,1,0,1,0 0,0,3,2,0,6,2,0,1,1,1,1,1,0 1,0,3,2,1,4,3,0,1,1,1,1,1,1 0,0,3,2,1,5,5,0,1,1,1,0,1,0 0,5,10,3,2,4,3,0,1,1,1,0,1,0 1,0,1,2,1,10,3,4,0,1,1,0,1,0 2,0,3,2,4,7,3,0,0,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,0 2,0,3,2,0,0,2,0,1,1,1,2,1,0 1,0,5,2,0,4,2,0,1,1,1,1,1,1 0,5,0,3,2,5,1,0,0,1,1,2,1,0 1,0,3,2,0,2,2,0,1,1,1,0,1,0 1,2,1,2,0,5,2,2,1,1,1,2,1,0 1,2,3,2,2,4,3,0,1,1,1,0,1,1 0,0,3,2,0,7,2,0,1,1,1,1,1,0 0,0,1,2,0,3,2,0,1,1,1,1,1,1 0,4,3,2,0,1,2,0,1,1,1,1,1,1 0,0,12,1,2,2,1,0,1,1,1,2,1,0 1,0,3,2,0,8,0,0,0,1,1,0,1,1 0,0,9,1,0,11,0,3,0,1,1,0,1,0 0,0,2,1,2,3,1,0,0,1,1,2,1,0 0,0,0,3,0,10,2,1,1,1,1,0,1,1 1,0,2,1,0,1,2,0,1,1,1,0,1,1 1,4,10,3,0,4,2,0,1,1,1,0,1,1 2,0,12,1,5,12,3,1,1,1,1,0,1,0 1,1,3,2,0,4,2,0,1,1,1,1,1,1 1,0,3,2,0,7,2,4,1,1,1,0,1,0 1,0,10,3,1,5,3,0,1,1,1,0,1,0 0,0,3,2,2,7,3,0,0,1,1,0,1,0 0,0,0,3,0,5,2,0,1,1,1,1,1,0 0,0,3,2,1,0,5,0,0,1,1,2,1,0 0,0,3,2,0,1,2,0,1,1,1,1,1,0 0,0,0,3,0,4,2,0,1,1,1,0,1,1 1,0,5,2,2,4,5,0,1,1,1,1,1,0 1,2,6,2,0,1,2,0,1,1,1,0,1,1 0,0,3,2,2,1,3,0,1,1,1,0,1,0 1,0,3,2,0,10,2,0,1,1,1,0,1,1 1,0,1,2,0,10,2,0,1,1,1,0,1,0 1,0,8,0,5,7,5,0,0,1,1,0,1,0 1,0,2,1,5,7,5,1,0,1,1,0,1,0 1,3,3,2,0,9,2,0,1,1,1,0,1,1 1,0,4,3,2,5,3,0,0,1,1,1,1,1 1,0,3,2,0,10,2,0,1,1,1,0,1,1 0,0,3,2,2,10,1,4,1,1,1,0,1,0 0,0,4,3,0,5,2,0,1,1,1,1,1,1 1,0,1,2,0,1,2,0,1,1,1,1,1,1 0,0,1,2,2,8,3,0,0,1,1,0,1,0 2,1,0,3,0,10,2,0,1,1,1,0,1,0 1,0,3,2,0,3,2,0,1,1,1,1,1,1 0,0,3,2,0,3,0,0,0,1,1,0,1,1 0,0,1,2,2,2,1,0,0,1,1,2,1,0 1,1,1,2,0,2,0,0,0,1,1,2,1,1 0,0,2,1,0,1,2,0,1,1,1,0,1,0 1,0,3,2,1,3,3,0,1,1,1,1,1,0 0,0,1,2,2,5,1,0,0,1,1,2,1,0 2,2,6,2,4,3,3,0,0,1,1,1,1,1 0,0,3,2,2,1,3,4,1,1,1,0,1,0 0,0,2,1,2,9,5,0,1,1,1,0,1,0 0,0,0,3,2,4,1,0,0,1,1,1,1,0 1,0,3,2,0,6,2,0,1,1,1,1,1,0 1,0,0,3,5,4,3,0,0,1,1,1,1,1 1,1,3,2,0,3,2,0,1,1,1,1,1,0 1,3,0,3,2,12,3,4,0,1,1,0,1,0 0,0,3,2,0,3,2,0,1,1,1,1,1,1 1,0,6,2,0,4,2,0,1,1,1,1,1,0 0,0,0,3,2,5,1,4,0,1,1,1,1,0 0,0,1,2,0,2,2,4,1,1,1,1,1,0 1,2,0,3,0,4,2,0,1,1,1,2,1,1 2,4,3,2,1,8,5,0,0,1,1,0,1,0 0,0,12,1,2,9,5,2,1,1,1,0,1,0 1,0,1,2,0,7,2,0,1,1,1,0,1,0 0,0,2,1,2,3,1,0,0,1,1,2,1,0 0,0,7,1,2,1,1,0,1,1,1,0,1,0 3,2,1,2,4,3,3,0,1,1,1,2,1,0 1,0,5,2,1,5,5,0,0,1,1,2,1,0 0,0,1,2,2,3,3,4,1,1,1,2,1,0 1,0,1,2,1,10,3,0,1,1,1,0,1,0 0,0,12,1,0,10,2,0,1,1,1,0,1,0 2,0,12,1,0,6,2,0,1,1,1,2,1,1 1,0,0,3,1,3,3,1,1,1,1,0,1,0 1,1,3,2,0,1,2,0,1,1,1,0,1,0 1,1,3,2,0,3,2,0,1,1,1,1,1,0 0,0,3,2,2,3,1,0,1,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,1 2,1,0,3,0,5,2,0,1,1,1,2,1,0 2,0,3,2,4,2,3,0,0,1,1,2,1,0 0,0,2,1,2,3,1,0,0,1,1,2,1,0 0,0,12,1,0,6,2,0,1,1,1,2,1,0 1,3,0,3,0,6,2,0,1,1,1,0,1,0 1,2,0,3,0,5,2,0,1,1,1,1,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,7,1,2,7,1,0,1,1,1,0,1,0 2,4,0,3,0,4,0,0,0,1,1,2,1,1 1,0,3,2,1,10,5,0,1,1,1,0,1,0 1,4,1,2,1,4,5,0,1,1,1,1,1,1 1,0,6,2,1,3,3,0,1,1,1,1,1,1 0,1,3,2,0,1,2,0,1,1,1,1,1,0 0,0,1,2,2,6,1,0,1,1,1,0,1,0 0,0,0,3,2,0,3,0,0,1,1,2,1,0 1,0,3,2,1,2,3,0,0,1,1,0,1,0 1,0,11,0,0,6,2,0,1,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,1,1,1 1,4,10,3,1,5,3,0,0,1,1,0,1,0 1,0,5,2,0,6,2,4,1,1,1,1,1,1 1,0,3,2,0,1,2,0,1,1,1,0,1,1 0,0,1,2,2,5,3,0,0,1,1,2,1,0 2,2,5,2,0,3,2,0,1,1,1,1,1,1 1,0,3,2,0,8,0,0,0,1,1,0,1,1 1,0,3,2,0,1,2,0,1,1,1,1,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,1 1,0,1,2,1,4,5,0,0,1,1,1,1,0 0,0,3,2,2,1,3,0,1,1,1,0,1,0 1,0,1,2,0,8,2,0,1,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,5,2,0,5,2,0,1,1,1,0,1,1 1,0,4,3,1,5,3,0,1,1,1,2,1,1 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,0,3,2,4,1,0,0,1,1,0,1,0 0,0,3,2,2,8,1,0,1,1,1,0,1,0 1,0,15,0,5,8,1,0,1,1,1,0,1,0 2,1,3,2,0,1,2,0,1,1,1,1,1,0 1,0,7,1,0,7,2,0,1,1,1,0,1,0 0,0,6,2,2,2,1,0,0,1,1,2,1,0 1,0,2,1,4,1,3,0,1,1,1,0,1,0 2,4,10,3,0,4,2,0,1,1,1,1,1,1 1,0,13,3,0,5,2,0,1,1,1,1,1,1 0,0,3,2,0,7,2,0,1,1,1,1,1,0 0,0,3,2,0,3,2,0,1,1,1,0,1,0 1,0,7,1,0,1,2,0,1,1,1,2,1,0 1,0,4,3,0,5,2,0,1,1,1,1,1,0 0,4,10,3,0,5,0,0,0,1,1,2,1,1 2,0,4,3,0,1,2,0,1,1,1,1,1,1 1,0,6,2,0,1,2,0,1,1,1,0,1,1 1,0,0,3,0,4,2,0,1,1,1,2,1,1 1,0,5,2,0,3,2,0,1,1,1,0,1,0 0,0,1,2,2,2,3,0,1,1,1,2,1,0 1,0,3,2,3,2,5,0,0,1,1,2,1,0 0,0,3,2,2,4,1,0,1,1,1,2,1,0 0,0,1,2,2,4,3,0,1,1,1,0,1,0 0,0,6,2,0,5,2,0,1,1,1,1,1,0 0,0,1,2,2,2,3,0,1,1,1,0,1,0 1,2,4,3,0,5,2,0,1,1,1,1,1,1 2,1,1,2,0,10,2,0,1,1,1,1,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 2,1,3,2,0,9,2,0,1,1,1,2,1,0 0,0,1,2,2,3,1,0,1,1,1,2,1,0 1,0,3,2,0,3,0,0,0,1,1,2,1,0 0,0,3,2,2,2,1,0,0,1,1,0,1,0 0,0,10,3,0,5,0,1,0,1,1,0,1,1 1,0,9,1,2,2,3,3,0,1,1,2,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,0 1,0,3,2,1,11,3,0,0,1,1,2,1,0 1,0,2,1,1,4,5,0,0,1,1,2,1,0 0,0,0,3,0,4,0,0,0,1,1,2,1,1 1,2,10,3,0,4,2,0,1,1,1,1,1,1 1,4,11,0,0,2,2,0,1,1,1,2,1,0 0,0,1,2,2,4,3,0,1,1,1,1,1,0 1,3,6,2,0,8,2,0,1,1,1,0,1,1 2,0,5,2,4,4,3,0,0,1,1,0,1,1 1,0,0,3,1,4,5,1,1,1,1,1,1,0 0,0,8,0,3,6,3,4,1,1,1,2,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,0 1,2,10,3,0,3,2,0,1,1,1,0,1,1 1,0,1,2,1,8,5,0,0,1,1,0,1,0 2,0,3,2,0,10,2,0,1,1,1,1,1,1 1,1,3,2,0,10,2,0,1,1,1,1,1,0 0,0,2,1,2,3,1,0,0,1,1,2,1,0 0,0,1,2,2,6,5,2,0,1,1,2,1,0 0,0,3,2,2,10,3,0,1,1,1,1,1,0 1,3,3,2,1,1,3,4,1,1,1,0,1,0 2,2,3,2,0,4,2,0,1,1,1,2,1,1 2,5,3,2,1,2,1,4,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,0 1,4,1,2,1,8,5,4,0,1,1,2,1,0 1,0,0,3,0,1,0,0,0,1,1,2,1,1 1,0,0,3,1,4,3,0,0,1,1,1,1,1 1,2,13,3,0,4,0,0,0,1,1,0,1,1 1,0,0,3,0,0,2,0,1,1,1,2,1,0 0,0,5,2,0,5,2,0,1,1,1,0,1,0 1,0,5,2,1,1,3,4,1,1,1,1,1,0 1,1,3,2,0,1,2,0,1,1,1,1,1,1 0,0,1,2,3,3,5,0,0,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,1,1,0 1,3,3,2,0,8,2,0,1,1,1,1,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,0 2,2,3,2,0,2,2,0,1,1,1,0,1,0 1,0,0,3,1,0,5,0,0,1,1,0,1,0 0,4,1,2,2,2,3,0,1,1,1,0,1,0 0,4,3,2,2,10,1,0,0,1,1,2,1,0 1,5,1,2,0,12,2,4,1,1,1,1,1,0 0,0,3,2,1,2,3,4,0,1,1,2,1,0 0,0,9,1,2,3,4,0,1,1,1,0,1,0 0,0,6,2,0,8,2,4,1,1,1,1,1,1 1,0,3,2,4,7,3,0,0,1,1,1,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,0 1,0,4,3,2,5,3,0,0,1,1,1,1,1 1,1,0,3,0,1,2,0,1,1,1,1,1,0 1,0,10,3,2,4,3,0,1,1,1,1,1,1 0,0,0,3,2,3,3,0,0,1,1,0,1,0 0,5,1,2,2,5,1,0,1,1,1,2,1,0 0,0,14,0,2,6,4,0,1,1,1,0,1,0 1,0,0,3,5,8,3,2,1,1,1,0,1,0 0,0,3,2,2,8,1,4,0,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,1,2,0,12,2,0,1,1,1,0,1,0 2,0,1,2,1,2,3,0,1,1,1,2,1,0 2,1,2,1,0,9,2,0,1,1,1,2,1,0 0,0,3,2,1,3,1,0,1,1,1,0,1,0 0,0,0,3,2,4,3,4,0,1,1,2,1,0 1,0,6,2,2,7,3,0,1,1,1,0,1,0 1,0,6,2,2,8,3,3,0,1,1,2,1,0 1,0,0,3,2,4,3,0,1,1,1,1,1,0 1,0,3,2,1,0,3,0,0,1,1,2,1,0 1,1,4,3,1,3,3,0,1,1,1,1,1,1 2,1,3,2,0,9,2,0,1,1,1,0,1,1 0,0,1,2,0,1,2,0,1,1,1,0,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,1 1,0,0,3,3,5,3,0,1,1,1,0,1,0 0,0,3,2,2,2,3,0,1,1,1,0,1,0 1,1,10,3,1,4,3,0,1,1,1,1,1,1 0,0,6,2,1,8,3,0,0,1,1,0,1,0 1,0,10,3,0,5,2,0,1,1,1,1,1,1 0,0,9,1,2,8,1,0,0,1,1,0,1,0 0,0,1,2,2,4,3,0,1,1,1,1,1,0 2,0,1,2,0,4,2,0,1,1,1,1,1,1 0,0,1,2,0,8,2,0,1,1,1,0,1,0 0,2,6,2,2,1,3,0,1,1,1,1,1,0 1,2,0,3,1,3,3,0,1,1,1,1,1,0 1,0,3,2,1,8,4,0,0,1,1,0,1,0 1,0,1,2,0,7,2,0,1,1,1,1,1,0 1,0,0,3,1,5,3,0,0,1,1,2,1,0 2,0,7,1,0,2,2,0,1,1,1,0,1,0 0,0,1,2,0,3,4,1,0,1,1,0,1,0 1,0,1,2,1,2,3,0,1,1,1,0,1,0 0,0,3,2,0,6,2,0,1,1,1,0,1,0 1,0,3,2,0,8,0,0,0,1,1,0,1,1 1,5,0,3,2,8,3,0,0,1,1,2,1,0 1,0,3,2,0,0,2,0,1,1,1,0,1,0 2,0,3,2,2,2,4,0,0,1,1,2,1,0 0,0,1,2,2,3,3,0,0,1,1,2,1,0 0,0,3,2,2,9,1,0,0,1,1,0,1,0 0,3,5,2,0,0,2,0,1,1,1,1,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,0 0,0,3,2,2,12,3,0,1,1,1,2,1,0 1,3,1,2,0,8,2,4,1,1,1,0,1,1 0,0,1,2,2,8,1,0,1,1,1,2,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 1,4,10,3,0,5,2,0,1,1,1,2,1,1 1,0,3,2,0,5,2,1,1,1,1,0,1,0 0,0,7,1,2,3,1,0,0,1,1,1,1,0 0,2,0,3,0,3,2,0,1,1,1,1,1,1 1,0,3,2,0,5,2,0,1,1,1,0,1,0 0,0,2,1,2,3,1,0,1,1,1,2,1,0 0,0,3,2,2,7,1,0,1,1,1,1,1,0 1,0,1,2,1,1,3,0,1,1,1,0,1,1 1,0,3,2,1,2,5,4,0,1,1,2,1,0 0,0,1,2,2,4,1,0,1,1,1,0,1,0 1,1,3,2,0,9,2,0,1,1,1,2,1,0 0,4,1,2,0,2,2,0,1,1,1,0,1,0 1,4,1,2,2,2,1,0,0,1,1,2,1,0 1,1,10,3,1,5,3,0,0,1,1,2,1,0 1,0,1,2,2,7,3,0,1,1,1,2,1,0 2,0,10,3,0,5,2,0,1,1,1,0,1,1 3,4,7,1,0,2,2,0,1,1,1,2,1,0 0,0,8,0,2,3,3,0,1,1,1,1,1,0 0,0,9,1,2,10,1,0,1,1,1,2,1,0 1,0,6,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,0,10,2,0,1,1,1,0,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 0,0,1,2,2,3,3,0,1,1,1,1,1,0 1,0,3,2,2,3,1,0,1,1,1,0,1,0 1,5,1,2,0,12,2,0,1,1,1,0,1,0 0,0,9,1,3,8,5,0,0,1,1,0,1,0 0,0,0,3,0,5,2,1,1,1,1,1,1,1 1,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,0,3,2,8,1,0,0,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,5,2,0,8,2,0,1,1,1,0,1,0 1,5,10,3,1,5,3,0,0,1,1,0,1,0 1,3,0,3,0,4,2,0,1,1,1,1,1,0 1,4,3,2,0,4,2,0,1,1,1,0,1,1 1,0,1,2,0,5,2,0,1,1,1,0,1,1 1,0,3,2,1,7,5,0,0,1,1,0,1,0 0,0,0,3,2,3,1,0,1,1,1,0,1,0 0,4,12,1,2,12,1,0,0,1,1,0,1,0 1,4,10,3,0,5,0,0,0,1,1,0,1,1 0,0,1,2,2,3,1,0,1,1,1,0,1,0 0,0,0,3,2,5,1,1,1,1,1,1,1,1 0,5,0,3,0,5,2,0,1,1,1,0,1,0 0,0,1,2,2,8,3,0,0,1,1,0,1,0 2,0,0,3,0,3,2,0,1,1,1,0,1,1 0,0,3,2,0,6,2,0,1,1,1,1,1,0 1,5,3,2,0,0,2,0,1,1,1,0,1,0 1,0,0,3,0,3,2,0,1,1,1,1,1,1 0,4,1,2,2,2,1,4,0,1,1,2,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,1 0,0,0,3,2,3,3,0,1,1,1,1,1,0 1,0,4,3,0,3,2,0,1,1,1,1,1,1 0,4,2,1,2,5,1,4,1,1,1,2,1,0 1,0,13,3,2,5,3,0,1,1,1,0,1,1 0,0,0,3,0,3,2,0,1,1,1,0,1,1 1,1,0,3,1,5,3,0,1,1,1,1,1,0 0,0,3,2,2,8,1,0,0,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,0,3,2,3,3,0,0,1,1,0,1,0 0,1,0,3,2,5,3,0,0,1,1,2,1,0 0,2,2,1,2,3,1,0,1,1,1,2,1,0 1,0,3,2,2,5,3,0,1,1,1,0,1,1 0,0,0,3,0,3,2,0,1,1,1,0,1,1 1,0,10,3,2,5,3,0,1,1,1,0,1,1 0,0,0,3,2,3,3,0,1,1,1,0,1,0 1,4,10,3,0,4,0,2,0,1,1,1,1,1 0,5,10,3,2,5,5,0,0,1,1,0,1,0 0,0,6,2,0,3,2,0,1,1,1,1,1,1 0,0,0,3,0,4,2,0,1,1,1,0,1,1 0,0,0,3,0,4,2,0,1,1,1,0,1,0 0,0,3,2,2,3,1,4,1,1,1,0,1,0 0,0,1,2,2,8,1,0,0,1,1,0,1,0 1,0,3,2,0,12,2,0,1,1,1,0,1,0 1,1,3,2,0,1,2,0,1,1,1,1,1,0 1,1,5,2,0,9,2,0,1,1,1,1,1,0 1,0,0,3,2,4,4,4,1,1,1,1,1,0 0,0,3,2,1,10,5,0,0,1,1,0,1,0 1,1,10,3,0,3,0,0,0,1,1,2,1,1 2,0,0,3,0,4,2,0,1,1,1,0,1,1 1,0,0,3,2,3,3,0,1,1,1,1,1,0 0,0,1,2,2,12,3,0,1,1,1,0,1,0 0,0,1,2,2,4,3,0,0,1,1,0,1,0 2,0,3,2,0,3,2,0,1,1,1,1,1,0 0,4,0,3,2,8,3,0,0,1,1,0,1,0 0,0,8,0,0,1,2,0,1,1,1,1,1,0 1,1,4,3,0,1,2,0,1,1,1,1,1,0 2,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,1,2,0,7,2,0,1,1,1,0,1,0 1,0,0,3,0,1,2,0,1,1,1,0,1,1 0,0,4,3,1,5,3,0,0,1,1,1,1,1 0,0,3,2,2,8,1,0,0,1,1,2,1,0 1,0,1,2,2,1,3,0,1,1,1,2,1,0 2,1,3,2,0,3,2,0,1,1,1,1,1,0 2,0,2,1,1,7,4,0,1,1,1,0,1,0 1,0,1,2,0,3,2,0,1,1,1,1,1,1 1,4,3,2,1,4,3,0,1,1,1,0,1,0 0,0,3,2,0,10,2,0,1,1,1,0,1,0 1,0,0,3,1,4,5,0,0,1,1,1,1,0 0,0,2,1,0,3,0,0,0,1,1,0,1,0 1,2,7,1,0,3,0,0,0,1,1,1,1,0 0,0,3,2,0,1,2,0,1,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,2,2,1,0,0,1,1,1,1,0 0,4,3,2,2,10,1,4,0,1,1,0,1,0 0,0,1,2,1,1,5,0,0,1,1,0,1,0 0,0,3,2,2,8,3,2,0,1,1,2,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,1 1,0,3,2,4,3,3,0,0,1,1,2,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,1 1,2,10,3,2,5,3,4,1,1,1,1,1,0 0,0,3,2,1,8,5,4,0,1,1,1,1,0 1,0,3,2,3,1,5,4,1,1,1,0,1,0 2,3,1,2,0,8,2,0,1,1,1,0,1,0 0,0,1,2,2,10,1,0,1,1,1,0,1,0 1,2,10,3,0,4,2,0,1,1,1,1,1,1 0,0,0,3,0,4,2,0,1,1,1,1,1,0 1,0,3,2,0,10,2,4,1,1,1,0,1,1 0,0,1,2,2,3,1,0,0,1,1,2,1,0 2,1,3,2,0,2,2,0,1,1,1,1,1,0 0,0,1,2,2,5,4,1,0,1,1,2,1,0 0,1,1,2,2,2,3,0,0,1,1,2,1,0 0,0,6,2,0,10,2,0,1,1,1,1,1,1 0,0,3,2,3,1,5,4,0,1,1,0,1,0 1,0,1,2,0,7,2,0,1,1,1,0,1,0 1,1,1,2,1,3,5,0,1,1,1,1,1,0 1,0,0,3,1,11,3,0,0,1,1,1,1,0 0,0,1,2,2,2,5,4,0,1,1,2,1,0 1,0,6,2,0,1,2,4,1,1,1,0,1,1 1,0,1,2,0,3,2,0,1,1,1,2,1,0 1,3,1,2,0,8,2,0,1,1,1,1,1,0 0,0,3,2,1,1,5,0,1,1,1,1,1,0 0,0,3,2,2,10,1,0,1,1,1,1,1,0 0,0,1,2,2,8,1,0,0,1,1,2,1,1 1,0,0,3,0,5,2,0,1,1,1,0,1,1 0,3,5,2,2,8,3,0,1,1,1,0,1,0 0,0,3,2,2,7,1,0,1,1,1,2,1,0 0,0,7,1,1,1,5,0,1,1,1,1,1,0 1,0,1,2,1,8,5,0,0,1,1,0,1,0 0,0,6,2,0,4,0,0,0,1,1,0,1,1 0,0,1,2,1,8,5,0,0,1,1,2,1,0 0,4,1,2,2,8,5,4,0,1,1,0,1,0 0,0,0,3,0,5,2,0,1,1,1,0,1,1 0,0,1,2,2,2,1,0,1,1,1,2,1,0 0,5,3,2,1,12,5,0,0,1,1,0,1,0 0,0,3,2,3,5,4,4,0,1,1,0,1,0 0,0,3,2,2,2,3,0,0,1,1,2,1,0 0,0,3,2,2,7,4,0,1,1,1,0,1,0 1,3,0,3,0,5,2,0,1,1,1,0,1,1 0,0,3,2,0,7,2,0,1,1,1,0,1,0 2,3,4,3,0,5,2,0,1,1,1,1,1,1 1,0,10,3,2,5,3,0,0,1,1,0,1,0 0,0,9,1,0,8,0,0,0,1,1,0,1,0 0,5,1,2,2,5,1,4,0,1,1,0,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 2,0,3,2,1,4,3,0,0,1,1,0,1,0 0,0,6,2,2,2,3,0,0,1,1,2,1,0 0,0,3,2,2,2,1,4,1,1,1,0,1,0 2,4,10,3,2,5,3,0,1,1,1,2,1,0 1,0,3,2,0,6,2,0,1,1,1,0,1,0 2,0,1,2,0,3,2,0,1,1,1,1,1,1 0,0,3,2,3,6,5,4,0,1,1,0,1,0 2,0,3,2,0,8,0,0,0,1,1,0,1,0 2,1,0,3,0,3,2,0,1,1,1,2,1,0 2,0,10,3,1,4,3,0,1,1,1,1,1,1 1,0,5,2,0,4,2,0,1,1,1,1,1,1 1,0,1,2,0,3,2,0,1,1,1,1,1,1 0,0,2,1,0,1,2,0,1,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,1 0,0,3,2,0,8,0,0,0,1,1,2,1,0 0,0,1,2,2,0,1,0,1,1,1,2,1,0 0,0,0,3,1,2,5,0,0,1,1,1,1,1 1,0,6,2,0,8,2,0,1,1,1,0,1,0 0,0,1,2,2,10,3,0,1,1,1,0,1,0 2,0,1,2,1,1,3,0,1,1,1,1,1,0 0,4,9,1,2,8,1,0,0,1,1,2,1,0 1,4,0,3,2,5,3,0,0,1,1,1,1,0 0,5,6,2,1,8,1,0,1,1,1,0,1,0 0,0,3,2,3,10,3,4,1,1,1,2,1,0 1,1,1,2,0,4,0,0,0,1,1,2,1,0 1,5,0,3,0,2,2,0,1,1,1,0,1,0 0,0,3,2,2,2,3,0,0,1,1,0,1,0 2,0,3,2,0,2,2,0,1,1,1,0,1,0 2,0,14,0,0,9,2,0,1,1,1,1,1,0 0,3,13,3,0,5,2,0,1,1,1,0,1,1 2,0,3,2,0,1,2,0,1,1,1,0,1,1 1,0,10,3,2,5,3,0,0,1,1,0,1,0 1,0,9,1,0,1,2,0,1,1,1,1,1,1 1,4,3,2,2,12,3,0,1,1,1,1,1,0 0,0,2,1,0,1,2,0,1,1,1,0,1,0 0,0,2,1,2,10,1,0,1,1,1,0,1,0 1,1,1,2,0,3,2,0,1,1,1,1,1,0 0,0,3,2,2,8,3,0,0,1,1,0,1,0 2,0,0,3,0,8,2,1,1,1,1,0,1,0 0,2,0,3,2,4,3,0,1,1,1,1,1,0 0,1,8,0,0,9,2,0,1,1,1,0,1,0 0,0,1,2,2,7,1,0,1,1,1,0,1,0 1,0,9,1,0,8,2,4,1,1,1,0,1,0 0,0,1,2,2,8,3,0,1,1,1,2,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,1 1,0,3,2,2,7,3,4,1,1,1,0,1,0 0,0,14,0,2,2,1,0,1,1,1,0,1,0 0,0,3,2,2,0,3,0,1,1,1,0,1,0 1,1,0,3,1,5,3,0,0,1,1,1,1,0 0,0,3,2,2,8,4,4,1,1,1,0,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,2,10,1,0,1,1,1,0,1,0 0,2,0,3,2,4,1,0,1,1,1,0,1,0 0,0,6,2,0,4,0,0,0,1,1,0,1,0 1,5,3,2,1,0,5,0,0,1,1,0,1,0 3,0,1,2,1,8,5,0,0,1,1,0,1,0 0,0,2,1,2,8,1,2,0,1,1,2,1,0 0,0,3,2,2,4,3,0,1,1,1,1,1,0 1,0,12,1,0,9,2,4,1,1,1,0,1,0 1,0,1,2,0,1,2,1,1,1,1,0,1,0 0,2,3,2,0,1,2,0,1,1,1,1,1,0 2,0,3,2,4,8,5,2,1,1,1,0,1,0 0,4,3,2,0,1,2,0,1,1,1,0,1,0 1,0,3,2,2,1,1,4,1,1,1,0,1,0 1,0,4,3,0,5,2,0,1,1,1,1,1,1 1,4,10,3,0,5,2,0,1,1,1,0,1,1 0,0,1,2,5,4,5,0,0,1,1,1,1,0 0,4,10,3,0,5,2,0,1,1,1,0,1,0 0,2,0,3,2,4,1,0,1,1,1,1,1,0 0,4,1,2,2,12,1,0,1,1,1,0,1,1 1,1,4,3,0,5,2,0,1,1,1,1,1,1 1,0,1,2,1,4,3,0,1,1,1,1,1,0 0,0,5,2,2,8,3,0,1,1,1,0,1,0 2,0,3,2,0,1,2,0,1,1,1,1,1,0 0,0,3,2,2,3,1,0,0,1,1,2,1,0 2,0,3,2,4,7,3,0,0,1,1,0,1,0 2,5,4,3,0,8,2,0,1,1,1,2,1,1 0,0,3,2,2,3,1,0,1,1,1,0,1,0 0,0,3,2,2,3,1,4,1,1,1,2,1,0 2,5,5,2,0,5,2,0,1,1,1,2,1,0 2,0,1,2,4,0,3,0,0,1,1,2,1,0 1,2,6,2,0,4,2,0,1,1,1,1,1,1 1,0,5,2,0,4,2,0,1,1,1,1,1,1 1,0,12,1,1,1,3,4,0,1,1,2,1,0 0,0,1,2,1,0,3,0,0,1,1,0,1,0 1,0,1,2,1,0,5,0,0,1,1,0,1,0 3,1,3,2,4,9,3,0,0,1,1,2,1,0 0,5,0,3,0,4,2,4,1,1,1,0,1,1 0,0,3,2,2,2,3,4,1,1,1,2,1,0 2,2,4,3,0,5,2,0,1,1,1,2,1,1 0,0,2,1,2,10,1,0,1,1,1,2,1,0 1,0,3,2,0,9,2,0,1,1,1,0,1,0 1,0,0,3,0,3,2,0,1,1,1,0,1,0 1,0,1,2,1,5,3,0,0,1,1,1,1,1 1,0,3,2,4,7,1,0,0,1,1,2,1,0 1,5,3,2,0,6,2,0,1,1,1,0,1,0 0,0,15,0,2,9,3,0,1,1,1,2,1,0 1,0,3,2,0,8,2,0,1,1,1,1,1,0 1,0,3,2,0,10,2,0,1,1,1,0,1,0 0,1,3,2,0,5,2,0,1,1,1,2,1,1 1,0,6,2,0,6,2,0,1,1,1,1,1,0 2,0,12,1,0,6,2,0,1,1,1,0,1,0 1,3,3,2,1,8,3,4,0,1,1,1,1,0 1,0,2,1,0,6,2,4,1,1,1,0,1,1 1,3,0,3,0,4,2,0,1,1,1,0,1,1 1,0,3,2,1,5,3,0,1,1,1,1,1,0 0,0,1,2,2,4,1,0,0,1,1,2,1,0 0,0,1,2,0,9,2,0,1,1,1,0,1,0 2,0,0,3,0,4,2,0,1,1,1,0,1,1 0,0,0,3,2,5,3,0,0,1,1,1,1,0 2,1,3,2,0,10,2,0,1,1,1,1,1,0 0,5,10,3,0,5,2,1,1,1,1,2,1,0 0,0,2,1,2,8,1,0,0,1,1,2,1,0 0,1,2,1,2,2,1,0,0,1,1,2,1,0 0,0,2,1,0,9,2,0,1,1,1,0,1,0 0,0,3,2,2,7,1,4,1,1,1,2,1,0 1,1,3,2,1,1,1,0,1,1,1,1,1,0 0,1,1,2,0,1,2,0,1,1,1,1,1,0 0,0,1,2,2,3,3,0,0,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,1 1,0,8,0,0,10,2,0,1,1,1,0,1,0 0,0,3,2,0,10,2,0,1,1,1,1,1,0 0,0,0,3,3,4,3,0,1,1,1,0,1,0 1,3,0,3,0,5,2,0,1,1,1,0,1,1 1,5,4,3,0,5,2,0,1,1,1,1,1,1 1,3,3,2,0,10,2,0,1,1,1,0,1,1 1,0,3,2,0,5,2,0,1,1,1,1,1,1 1,0,3,2,0,12,2,0,1,1,1,0,1,0 0,0,2,1,2,6,1,4,1,1,1,0,1,0 0,0,1,2,3,7,5,4,0,1,1,1,1,0 0,0,3,2,0,1,2,0,1,1,1,1,1,0 1,0,3,2,1,3,3,0,0,1,1,0,1,0 0,0,10,3,3,5,3,0,1,1,1,0,1,1 0,0,1,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,2,8,3,0,0,1,1,1,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 2,0,0,3,0,5,2,0,1,1,1,1,1,1 1,0,0,3,0,1,2,0,1,1,1,0,1,1 0,0,1,2,2,4,1,0,0,1,1,2,1,0 2,4,3,2,0,2,2,0,1,1,1,0,1,1 0,0,0,3,2,3,3,0,0,1,1,2,1,0 1,3,0,3,3,8,5,4,0,1,1,0,1,0 0,0,3,2,0,3,2,0,1,1,1,0,1,0 1,0,10,3,0,4,2,0,1,1,1,0,1,1 1,0,1,2,2,1,3,0,1,1,1,0,1,0 0,0,1,2,0,7,2,0,1,1,1,0,1,0 1,0,7,1,0,10,2,0,1,1,1,2,1,0 2,0,3,2,0,10,2,0,1,1,1,0,1,1 0,0,10,3,2,4,3,0,1,1,1,2,1,0 1,0,1,2,2,4,3,0,1,1,1,1,1,0 0,0,0,3,2,6,5,0,1,1,1,2,1,0 1,0,3,2,4,7,5,0,0,1,1,0,1,0 0,0,14,0,2,2,1,0,0,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,2,7,1,0,1,1,1,1,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,0 1,4,5,2,0,1,2,4,1,1,1,0,1,1 1,0,6,2,0,5,2,0,1,1,1,0,1,0 0,4,2,1,0,1,2,0,1,1,1,0,1,0 2,1,10,3,0,1,2,0,1,1,1,0,1,1 0,0,3,2,0,8,2,0,1,1,1,1,1,1 1,2,4,3,2,2,3,0,1,1,1,1,1,1 2,2,11,0,0,3,2,0,1,1,1,2,1,0 0,0,7,1,0,7,2,0,1,1,1,0,1,0 1,4,3,2,2,10,3,0,1,1,1,0,1,0 1,0,0,3,0,3,2,0,1,1,1,0,1,1 1,0,0,3,0,3,2,0,1,1,1,1,1,1 1,0,1,2,0,0,2,0,1,1,1,0,1,0 0,0,1,2,0,8,2,0,1,1,1,1,1,1 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,0,3,1,3,4,1,0,1,1,0,1,0 0,1,0,3,0,3,2,1,1,1,1,1,1,0 0,0,0,3,2,5,3,0,1,1,1,2,1,0 0,0,1,2,2,8,3,0,0,1,1,0,1,0 0,0,1,2,2,8,1,0,0,1,1,2,1,0 1,0,1,2,4,8,5,0,0,1,1,0,1,0 2,0,8,0,2,9,5,0,1,1,1,0,1,0 0,3,5,2,1,4,5,0,1,1,1,1,1,1 2,1,1,2,0,7,2,0,1,1,1,2,1,1 0,4,3,2,2,2,1,0,1,1,1,1,1,0 0,0,0,3,2,5,3,0,0,1,1,1,1,0 0,0,3,2,2,6,4,0,1,1,1,0,1,0 0,4,3,2,2,5,1,0,1,1,1,0,1,0 1,0,1,2,1,10,3,0,1,1,1,1,1,1 1,1,5,2,0,10,2,0,1,1,1,0,1,0 0,0,3,2,2,9,1,0,1,1,1,1,1,0 0,1,3,2,3,10,3,0,1,1,1,1,1,0 0,0,1,2,2,8,1,0,0,1,1,0,1,0 1,0,10,3,0,5,2,0,1,1,1,1,1,1 0,0,1,2,0,0,2,0,1,1,1,0,1,1 0,0,12,1,2,6,3,0,1,1,1,0,1,0 0,0,0,3,2,8,3,0,1,1,1,0,1,0 1,2,1,2,0,9,2,0,1,1,1,1,1,0 0,0,1,2,0,1,2,0,1,1,1,0,1,1 1,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,7,1,0,1,2,0,1,1,1,0,1,0 0,0,2,1,2,3,1,0,1,1,1,2,1,0 2,0,0,3,2,4,3,0,1,1,1,0,1,0 1,1,0,3,2,4,1,0,0,1,1,0,1,0 2,0,12,1,0,2,2,4,1,1,1,0,1,0 2,0,0,3,0,4,2,0,1,1,1,0,1,1 2,1,1,2,1,2,3,0,0,1,1,0,1,0 2,3,3,2,1,5,3,0,0,1,1,0,1,0 0,0,0,3,0,5,2,0,1,1,1,1,1,1 1,3,3,2,2,8,5,4,0,1,1,2,1,0 1,0,3,2,1,8,5,0,0,1,1,2,1,0 1,0,0,3,0,4,2,0,1,1,1,0,1,0 1,0,1,2,3,8,5,4,0,1,1,0,1,0 1,0,3,2,1,1,5,0,1,1,1,0,1,0 1,0,0,3,0,0,2,0,1,1,1,1,1,1 1,0,5,2,2,0,5,0,0,1,1,1,1,0 0,0,1,2,2,8,3,0,0,1,1,0,1,0 1,0,0,3,2,5,3,0,0,1,1,2,1,0 1,0,0,3,2,8,3,0,1,1,1,1,1,0 0,0,3,2,2,7,3,4,1,1,1,0,1,0 1,0,1,2,4,3,5,0,0,1,1,2,1,0 0,0,0,3,1,7,3,0,0,1,1,1,1,0 1,1,14,0,0,1,2,0,1,1,1,0,1,0 0,0,3,2,2,6,4,0,1,1,1,0,1,0 0,0,14,0,2,9,5,0,1,1,1,2,1,0 0,0,5,2,1,5,3,0,0,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,0 1,0,3,2,1,2,3,0,0,1,1,2,1,0 0,0,3,2,2,1,1,0,1,1,1,2,1,0 2,4,3,2,1,4,3,0,0,1,1,0,1,0 1,0,13,3,0,5,2,0,1,1,1,1,1,1 1,0,3,2,0,10,2,0,1,1,1,1,1,0 1,0,6,2,0,4,2,0,1,1,1,0,1,1 1,0,5,2,3,8,5,0,0,1,1,1,1,0 1,1,3,2,0,2,2,0,1,1,1,1,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,0 1,0,3,2,0,3,2,0,1,1,1,0,1,0 0,0,3,2,2,4,3,0,0,1,1,1,1,0 1,0,6,2,0,5,0,0,0,1,1,2,1,0 1,0,13,3,0,5,0,0,0,1,1,2,1,1 3,1,6,2,4,4,3,0,0,1,1,2,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,1 1,3,5,2,1,8,5,0,0,1,1,0,1,0 1,0,3,2,4,7,3,4,0,1,1,0,1,0 0,0,3,2,1,2,1,0,1,1,1,0,1,0 0,0,1,2,0,3,2,0,1,1,1,0,1,0 0,0,6,2,2,2,3,0,1,1,1,1,1,0 1,1,1,2,2,3,3,0,1,1,1,1,1,0 0,0,1,2,2,2,1,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,0 1,0,12,1,0,1,2,0,1,1,1,1,1,0 2,0,7,1,1,9,3,4,1,1,1,2,1,0 1,0,0,3,0,3,2,0,1,1,1,0,1,1 0,0,1,2,2,8,1,0,0,1,1,2,1,0 1,4,10,3,1,5,3,0,0,1,1,0,1,1 0,0,0,3,2,3,3,0,1,1,1,1,1,0 2,3,6,2,2,0,3,0,1,1,1,0,1,0 2,2,3,2,0,4,2,0,1,1,1,1,1,1 1,0,3,2,1,2,3,0,0,1,1,0,1,0 0,4,1,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,0,1,2,3,1,1,1,1,1,1 2,4,9,1,2,6,3,0,1,1,1,0,1,0 0,0,3,2,2,6,1,0,1,1,1,2,1,0 1,4,0,3,0,5,2,0,1,1,1,2,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 0,0,1,2,2,8,3,0,1,1,1,0,1,0 1,4,0,3,2,5,1,0,1,1,1,1,1,0 0,5,1,2,2,3,1,4,0,1,1,2,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,0 0,0,2,1,2,2,1,0,0,1,1,2,1,0 0,0,7,1,2,10,1,0,1,1,1,0,1,0 1,4,1,2,0,2,2,2,1,1,1,2,1,0 1,1,0,3,1,3,5,0,1,1,1,1,1,0 0,0,11,0,0,7,2,0,1,1,1,0,1,0 1,0,1,2,1,10,5,0,1,1,1,0,1,1 0,0,4,3,1,5,3,0,0,1,1,2,1,0 2,4,1,2,2,10,5,0,1,1,1,0,1,0 0,3,6,2,2,5,1,0,1,1,1,0,1,0 1,0,10,3,0,4,2,4,1,1,1,1,1,0 1,1,0,3,0,3,2,0,1,1,1,2,1,1 0,0,1,2,1,0,3,0,1,1,1,2,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,0 2,2,8,0,0,3,2,0,1,1,1,1,1,0 0,0,2,1,2,2,1,0,0,1,1,2,1,0 1,0,12,1,1,8,1,4,1,1,1,0,1,0 0,0,3,2,2,8,1,0,0,1,1,0,1,0 0,0,3,2,2,2,3,0,1,1,1,2,1,0 1,1,0,3,1,4,3,0,1,1,1,1,1,0 1,0,3,2,0,3,2,0,1,1,1,0,1,0 2,0,6,2,1,4,3,0,0,1,1,0,1,0 0,0,3,2,2,2,3,0,1,1,1,0,1,0 0,0,12,1,0,2,2,0,1,1,1,2,1,0 1,0,3,2,1,1,3,0,1,1,1,0,1,0 0,0,1,2,2,2,5,0,0,1,1,2,1,0 0,0,1,2,2,7,3,0,0,1,1,0,1,0 0,5,1,2,2,2,3,4,1,1,1,2,1,0 1,0,1,2,0,10,2,0,1,1,1,0,1,0 0,0,3,2,2,6,1,0,1,1,1,2,1,0 1,0,6,2,0,10,2,0,1,1,1,0,1,0 1,0,3,2,2,1,5,0,1,1,1,0,1,0 0,0,1,2,0,8,2,4,1,1,1,0,1,1 0,0,3,2,0,2,2,0,1,1,1,0,1,0 1,4,5,2,2,12,3,0,1,1,1,0,1,0 0,0,1,2,1,8,5,4,0,1,1,0,1,0 3,4,3,2,0,4,2,0,1,1,1,2,1,0 0,0,3,2,2,3,1,0,0,1,1,0,1,0 2,0,6,2,1,5,3,0,0,1,1,2,1,0 1,0,3,2,1,12,3,4,0,1,1,0,1,0 0,0,3,2,1,5,5,0,0,1,1,0,1,0 0,0,5,2,2,8,3,0,1,1,1,1,1,0 1,0,10,3,2,5,3,0,0,1,1,0,1,0 2,0,1,2,0,0,2,0,1,1,1,1,1,1 1,0,9,1,1,6,5,0,1,1,1,0,1,0 0,0,5,2,2,8,3,0,0,1,1,2,1,0 1,2,3,2,0,4,2,0,1,1,1,0,1,0 0,0,3,2,2,3,3,0,1,1,1,0,1,0 1,0,14,0,3,7,3,0,0,1,1,0,1,0 0,0,2,1,2,10,1,0,0,1,1,2,1,0 1,4,8,0,1,2,3,0,1,1,1,0,1,0 1,0,1,2,0,7,2,4,1,1,1,0,1,1 1,0,14,0,0,7,2,3,1,1,1,0,1,0 1,0,7,1,3,1,5,0,0,1,1,0,1,0 1,4,4,3,0,8,2,1,1,1,1,0,1,1 1,1,8,0,0,3,2,0,1,1,1,0,1,0 0,0,3,2,2,9,3,0,1,1,1,1,1,0 0,0,8,0,0,8,2,0,1,1,1,1,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,1 2,1,3,2,0,9,2,0,1,1,1,2,1,0 1,4,3,2,0,1,2,0,1,1,1,0,1,1 0,0,1,2,0,1,2,0,1,1,1,0,1,0 0,0,0,3,4,4,3,0,0,1,1,1,1,0 0,0,3,2,2,1,1,0,1,1,1,0,1,0 0,0,1,2,2,8,3,0,1,1,1,0,1,0 0,0,1,2,2,8,4,0,0,1,1,2,1,0 1,5,2,1,0,10,2,0,1,1,1,0,1,0 1,3,10,3,0,5,2,0,1,1,1,0,1,1 0,0,0,3,2,3,3,0,1,1,1,1,1,1 0,0,1,2,2,0,1,0,1,1,1,1,1,0 1,5,13,3,0,5,2,0,1,1,1,1,1,0 0,5,1,2,0,8,2,4,1,1,1,2,1,0 1,1,4,3,0,5,2,0,1,1,1,1,1,1 0,0,3,2,0,5,2,0,1,1,1,1,1,0 1,0,1,2,1,8,5,0,0,1,1,0,1,0 0,0,3,2,2,7,4,3,1,1,1,2,1,0 0,1,6,2,0,9,2,0,1,1,1,1,1,0 0,0,0,3,2,4,1,0,1,1,1,1,1,0 0,0,3,2,3,1,5,4,1,1,1,0,1,0 0,0,3,2,3,2,1,4,0,1,1,2,1,0 0,0,3,2,2,2,3,0,0,1,1,0,1,0 0,5,3,2,0,1,2,0,1,1,1,0,1,1 0,0,3,2,2,1,1,0,1,1,1,2,1,0 1,4,8,0,0,10,2,0,1,1,1,0,1,0 0,0,3,2,2,8,3,0,1,1,1,1,1,0 0,4,3,2,1,12,1,0,0,1,1,2,1,0 1,0,1,2,0,8,2,0,1,1,1,0,1,0 1,0,3,2,0,7,0,0,0,1,1,0,1,0 0,0,3,2,2,6,1,0,1,1,1,2,1,0 1,1,3,2,0,1,2,0,1,1,1,1,1,0 2,0,8,0,0,10,2,0,1,1,1,1,1,0 2,0,9,1,4,7,5,0,0,1,1,0,1,0 0,0,3,2,5,2,1,0,0,1,1,2,1,0 0,0,5,2,2,8,3,0,1,1,1,2,1,0 1,0,3,2,2,5,3,0,1,1,1,0,1,0 1,0,0,3,1,8,3,1,0,1,1,2,1,0 0,0,1,2,2,3,1,0,1,1,1,2,1,0 1,2,3,2,0,4,2,0,1,1,1,0,1,1 0,0,6,2,0,3,2,0,1,1,1,0,1,0 1,0,0,3,1,8,5,0,1,1,1,1,1,1 1,1,0,3,0,1,2,0,1,1,1,1,1,0 1,1,5,2,1,4,5,0,0,1,1,1,1,0 1,0,12,1,1,4,3,2,0,1,1,1,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,0 1,3,1,2,4,2,5,4,0,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 2,0,3,2,0,10,2,0,1,1,1,0,1,0 3,0,0,3,1,3,3,0,1,1,1,2,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 1,0,3,2,1,2,5,2,0,1,1,0,1,0 0,0,2,1,2,7,3,0,0,1,1,0,1,0 1,0,1,2,5,6,5,0,1,1,1,0,1,0 0,0,3,2,2,6,1,0,1,1,1,2,1,0 0,0,3,2,2,3,3,0,1,1,1,1,1,0 0,0,3,2,2,1,1,0,0,1,1,0,1,0 2,0,3,2,0,9,2,0,1,1,1,1,1,1 0,0,9,1,2,1,1,0,1,1,1,0,1,0 2,0,3,2,0,4,2,0,1,1,1,2,1,0 0,0,3,2,2,8,1,4,0,1,1,0,1,0 2,0,0,3,0,5,2,0,1,1,1,2,1,0 1,4,5,2,0,4,2,0,1,1,1,0,1,1 1,0,3,2,1,4,1,0,0,1,1,0,1,0 1,0,6,2,3,0,5,0,0,1,1,2,1,0 0,0,3,2,1,2,5,0,0,1,1,1,1,0 0,0,3,2,0,3,0,0,0,1,1,0,1,0 0,0,3,2,1,4,1,0,1,1,1,0,1,0 1,1,13,3,0,5,2,0,1,1,1,1,1,1 2,0,0,3,0,3,2,0,1,1,1,0,1,1 2,1,3,2,0,1,2,0,1,1,1,2,1,0 0,2,3,2,0,4,2,0,1,1,1,1,1,0 0,1,3,2,0,1,2,0,1,1,1,2,1,0 1,0,0,3,0,4,0,0,0,1,1,1,1,1 1,0,7,1,0,3,2,0,1,1,1,0,1,0 1,0,1,2,0,4,2,0,1,1,1,0,1,1 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,2,2,1,0,1,1,1,2,1,0 0,0,3,2,1,7,5,0,0,1,1,0,1,0 2,1,13,3,0,3,2,0,1,1,1,2,1,1 1,0,3,2,0,1,2,0,1,1,1,2,1,0 0,0,0,3,1,4,5,0,0,1,1,0,1,0 0,0,3,2,0,3,2,0,1,1,1,1,1,0 0,0,1,2,1,4,1,0,0,1,1,0,1,0 0,0,3,2,2,8,1,0,0,1,1,0,1,0 0,0,1,2,2,2,1,0,1,1,1,2,1,1 1,0,1,2,0,1,2,0,1,1,1,1,1,1 0,0,5,2,2,10,1,0,1,1,1,2,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,1,2,3,2,5,4,0,1,1,2,1,0 1,0,4,3,1,5,3,0,1,1,1,1,1,1 1,0,10,3,1,3,3,0,0,1,1,0,1,1 1,2,0,3,0,4,2,0,1,1,1,1,1,1 2,5,4,3,0,2,2,0,1,1,1,2,1,0 0,0,3,2,2,2,4,4,1,1,1,2,1,0 2,2,3,2,0,3,2,0,1,1,1,1,1,1 1,0,14,0,0,9,2,0,1,1,1,0,1,0 1,0,1,2,1,4,3,0,0,1,1,1,1,0 2,4,3,2,0,10,2,0,1,1,1,0,1,0 0,0,7,1,2,2,5,0,0,1,1,2,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 1,1,3,2,1,1,5,2,1,1,1,2,1,0 0,0,9,1,2,2,1,0,1,1,1,2,1,0 0,0,3,2,1,2,1,0,0,1,1,0,1,0 2,0,3,2,2,4,3,0,1,1,1,0,1,0 1,1,3,2,1,9,3,0,1,1,1,1,1,1 0,0,3,2,0,10,2,0,1,1,1,0,1,0 0,0,5,2,2,7,5,0,1,1,1,0,1,0 0,0,9,1,0,1,2,0,1,1,1,0,1,0 0,0,6,2,2,8,4,0,0,1,1,2,1,0 0,0,1,2,2,6,1,0,0,1,1,2,1,0 1,0,0,3,1,3,3,0,1,1,1,1,1,1 2,0,3,2,0,10,2,0,1,1,1,1,1,0 2,0,10,3,0,4,2,0,1,1,1,0,1,1 2,4,3,2,4,8,5,0,0,1,1,2,1,1 1,0,6,2,0,5,0,0,0,1,1,2,1,1 0,0,1,2,1,1,1,0,1,1,1,0,1,0 0,5,0,3,1,4,3,1,0,1,1,0,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,1 2,0,3,2,4,4,5,0,0,1,1,1,1,0 2,0,10,3,0,5,2,0,1,1,1,0,1,1 1,2,3,2,5,3,3,0,1,1,1,1,1,0 1,2,0,3,0,9,2,0,1,1,1,1,1,1 2,0,6,2,0,1,2,4,1,1,1,0,1,1 0,0,10,3,2,4,3,0,0,1,1,1,1,0 0,1,6,2,2,9,1,0,1,1,1,1,1,0 0,0,0,3,0,5,2,0,1,1,1,0,1,1 1,1,6,2,0,9,2,0,1,1,1,1,1,1 1,0,1,2,0,3,2,0,1,1,1,0,1,1 2,4,13,3,1,5,3,0,0,1,1,2,1,0 0,0,1,2,2,3,1,0,1,1,1,2,1,0 0,0,1,2,2,2,3,4,1,1,1,2,1,0 0,4,0,3,1,5,3,0,1,1,1,0,1,0 1,0,0,3,0,5,0,0,0,1,1,2,1,1 1,0,3,2,1,1,3,0,1,1,1,0,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 2,5,3,2,0,8,2,0,1,1,1,0,1,0 0,3,3,2,2,6,1,0,0,1,1,0,1,0 1,0,9,1,2,10,3,4,1,1,1,2,1,0 0,0,3,2,0,6,2,0,1,1,1,0,1,0 0,0,3,2,2,6,1,0,1,1,1,2,1,0 1,3,3,2,0,8,2,0,1,1,1,0,1,1 0,0,1,2,2,2,1,0,0,1,1,2,1,0 0,0,1,2,2,3,3,0,0,1,1,0,1,0 0,0,3,2,2,1,1,0,1,1,1,0,1,0 0,5,10,3,0,5,2,0,1,1,1,2,1,0 0,0,1,2,3,2,3,0,0,1,1,2,1,0 1,0,3,2,1,4,3,0,1,1,1,1,1,1 1,2,1,2,0,3,2,0,1,1,1,1,1,1 2,1,10,3,0,5,2,0,1,1,1,2,1,1 0,0,3,2,2,6,3,0,0,1,1,2,1,0 0,0,1,2,0,4,1,4,0,1,1,0,1,0 0,0,5,2,2,3,5,0,1,1,1,1,1,0 0,0,1,2,2,4,3,0,1,1,1,0,1,0 0,0,0,3,2,4,3,0,0,1,1,0,1,0 0,0,1,2,2,8,3,0,0,1,1,0,1,0 0,0,3,2,2,3,1,0,1,1,1,1,1,0 3,0,0,3,0,8,2,0,1,1,1,1,1,1 0,0,9,1,2,6,1,0,1,1,1,0,1,0 1,0,12,1,0,1,2,0,1,1,1,0,1,0 0,1,1,2,2,5,3,1,1,1,1,2,1,1 1,0,0,3,0,1,2,0,1,1,1,0,1,1 0,0,0,3,0,5,2,0,1,1,1,2,1,0 0,0,0,3,2,8,3,0,0,1,1,1,1,0 1,0,3,2,0,7,2,0,1,1,1,1,1,1 0,0,1,2,2,6,1,0,1,1,1,2,1,0 0,4,2,1,0,6,2,0,1,1,1,0,1,0 0,0,1,2,2,2,3,3,0,1,1,0,1,0 2,0,5,2,2,5,4,0,0,1,1,2,1,0 1,4,10,3,0,5,2,0,1,1,1,1,1,1 0,0,1,2,0,8,1,0,0,1,1,0,1,0 1,4,10,3,0,5,2,4,1,1,1,0,1,1 0,0,4,3,2,5,3,4,1,1,1,1,1,0 0,0,5,2,0,4,2,0,1,1,1,1,1,1 3,0,0,3,2,5,3,0,0,1,1,2,1,0 0,0,3,2,2,0,1,0,1,1,1,0,1,0 1,0,0,3,2,4,3,0,1,1,1,1,1,0 0,4,1,2,2,8,5,4,0,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 1,4,3,2,0,4,2,0,1,1,1,1,1,0 0,0,3,2,2,9,3,0,1,1,1,0,1,0 0,0,3,2,0,8,2,0,1,1,1,1,1,1 2,3,10,3,0,4,2,4,1,1,1,0,1,1 1,0,4,3,0,4,0,0,0,1,1,1,1,1 0,0,1,2,1,10,3,0,1,1,1,2,1,0 0,3,3,2,0,8,2,0,1,1,1,0,1,1 1,5,1,2,2,10,1,4,1,1,1,0,1,0 0,0,0,3,2,3,1,0,0,1,1,1,1,0 1,0,1,2,3,8,5,0,0,1,1,1,1,0 1,0,3,2,0,7,2,0,1,1,1,1,1,1 0,0,3,2,2,10,1,0,1,1,1,0,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,1 0,0,2,1,1,7,5,0,0,1,1,0,1,0 1,3,1,2,2,8,3,0,0,1,1,1,1,0 0,0,12,1,2,2,1,0,0,1,1,2,1,0 0,0,3,2,0,0,2,0,1,1,1,1,1,0 1,0,1,2,0,10,2,0,1,1,1,1,1,0 2,0,0,3,0,11,4,0,1,1,1,1,1,0 2,1,3,2,4,3,3,0,1,1,1,1,1,0 1,0,8,0,0,2,2,0,1,1,1,2,1,0 0,0,3,2,2,6,3,0,1,1,1,2,1,0 0,0,3,2,0,7,0,0,0,1,1,0,1,1 1,0,4,3,0,4,2,0,1,1,1,1,1,1 1,2,3,2,0,4,2,0,1,1,1,0,1,1 1,0,3,2,2,7,3,4,0,1,1,1,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,2,9,3,0,1,1,1,0,1,0 0,5,1,2,2,8,1,0,0,1,1,2,1,0 1,0,3,2,0,11,0,0,0,1,1,0,1,0 1,0,12,1,0,6,2,4,1,1,1,0,1,0 0,5,13,3,0,5,2,0,1,1,1,1,1,1 1,0,3,2,1,1,5,0,0,1,1,1,1,0 1,0,3,2,4,8,5,0,0,1,1,2,1,0 1,0,2,1,3,4,3,0,0,1,1,2,1,0 1,1,8,0,0,4,2,0,1,1,1,1,1,1 1,0,2,1,0,4,2,0,1,1,1,1,1,1 1,0,8,0,0,4,0,0,0,1,1,1,1,0 1,0,13,3,0,5,2,0,1,1,1,0,1,1 2,0,0,3,0,4,2,0,1,1,1,1,1,1 1,2,4,3,0,5,2,0,1,1,1,0,1,1 0,0,1,2,0,5,2,0,1,1,1,0,1,1 2,5,10,3,1,5,3,0,0,1,1,2,1,0 0,0,3,2,0,4,2,0,1,1,1,1,1,0 2,1,12,1,0,3,2,0,1,1,1,2,1,0 0,0,3,2,2,0,5,0,0,1,1,0,1,0 0,0,3,2,2,1,3,0,1,1,1,0,1,0 1,0,6,2,0,5,0,0,0,1,1,0,1,1 1,2,3,2,0,1,2,0,1,1,1,1,1,0 0,4,1,2,2,12,3,0,1,1,1,1,1,0 0,0,12,1,0,2,2,4,1,1,1,0,1,0 0,4,6,2,2,12,3,0,1,1,1,1,1,0 0,3,0,3,2,5,3,0,0,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,1,1,0 0,0,2,1,2,5,1,0,1,1,1,2,1,0 0,0,2,1,2,3,1,0,0,1,1,2,1,0 1,5,10,3,0,5,2,0,1,1,1,1,1,1 1,0,4,3,0,4,2,0,1,1,1,0,1,1 1,0,3,2,0,7,2,0,1,1,1,0,1,0 1,4,8,0,5,2,3,0,0,1,1,2,1,0 0,0,0,3,2,3,3,0,1,1,1,0,1,0 0,0,3,2,2,6,5,0,1,1,1,2,1,0 0,0,3,2,0,4,2,0,1,1,1,1,1,1 0,0,1,2,2,6,1,0,1,1,1,2,1,0 0,0,8,0,2,9,1,0,0,1,1,2,1,0 0,0,0,3,2,8,3,1,0,1,1,2,1,0 1,0,1,2,1,8,5,0,0,1,1,1,1,0 1,0,3,2,1,3,5,0,0,1,1,0,1,0 1,3,3,2,0,8,2,0,1,1,1,0,1,1 1,0,1,2,2,2,1,4,0,1,1,0,1,0 1,0,3,2,2,6,3,0,1,1,1,0,1,0 2,0,0,3,4,7,4,1,1,1,1,2,1,0 0,0,3,2,2,8,3,0,0,1,1,0,1,0 0,4,0,3,2,5,3,0,0,1,1,0,1,0 0,0,6,2,2,8,1,1,0,1,1,2,1,0 3,2,12,1,0,9,2,0,1,1,1,1,1,1 2,0,13,3,0,5,2,0,1,1,1,0,1,1 1,0,3,2,2,8,5,4,0,1,1,0,1,0 0,0,0,3,2,4,3,0,0,1,1,0,1,0 2,0,1,2,1,8,3,0,0,1,1,0,1,0 2,0,3,2,0,4,2,0,1,1,1,1,1,1 2,5,3,2,4,8,5,1,0,1,1,0,1,0 1,1,10,3,0,3,2,0,1,1,1,1,1,1 0,0,3,2,2,3,1,0,1,1,1,1,1,0 0,0,6,2,0,5,2,0,1,1,1,0,1,0 0,0,0,3,2,5,3,0,1,1,1,1,1,1 0,0,1,2,2,8,3,0,1,1,1,0,1,0 1,0,1,2,3,2,3,0,0,1,1,1,1,0 2,5,13,3,0,5,2,1,1,1,1,0,1,1 1,0,3,2,0,10,2,0,1,1,1,1,1,0 2,1,3,2,4,9,3,0,1,1,1,1,1,0 0,0,1,2,2,8,3,0,0,1,1,0,1,0 0,5,1,2,2,8,3,0,0,1,1,1,1,0 1,4,1,2,0,4,2,0,1,1,1,1,1,0 1,0,3,2,5,2,5,0,0,1,1,0,1,0 0,0,3,2,3,1,1,0,1,1,1,1,1,0 1,1,3,2,1,4,3,4,1,1,1,1,1,0 2,0,3,2,1,2,3,1,1,1,1,0,1,0 1,0,0,3,1,1,3,0,0,1,1,1,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,0 1,0,5,2,1,4,5,0,1,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,1,1,0 1,0,6,2,0,9,2,0,1,1,1,1,1,0 1,0,12,1,0,10,2,0,1,1,1,0,1,1 0,0,7,1,2,3,3,0,0,1,1,1,1,0 1,0,1,2,0,3,2,0,1,1,1,1,1,1 1,0,0,3,2,9,3,0,1,1,1,2,1,0 0,0,3,2,2,3,3,0,1,1,1,1,1,0 0,0,12,1,2,2,1,4,0,1,1,2,1,0 2,0,14,0,0,1,2,4,1,1,1,0,1,0 1,0,3,2,1,10,1,0,1,1,1,1,1,0 2,5,1,2,0,12,2,0,1,1,1,0,1,0 1,5,10,3,0,4,2,0,1,1,1,1,1,1 1,5,3,2,0,8,2,0,1,1,1,0,1,0 0,0,3,2,0,2,2,0,1,1,1,0,1,0 0,0,6,2,6,9,2,0,1,1,1,1,1,1 1,0,3,2,0,10,2,4,1,1,1,0,1,0 0,4,0,3,0,5,2,0,1,1,1,0,1,1 1,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,2,1,2,6,1,0,0,1,1,2,1,0 0,0,3,2,2,2,1,0,0,1,1,2,1,0 0,0,0,3,2,2,3,1,1,1,1,2,1,0 2,0,3,2,0,9,2,0,1,1,1,0,1,1 0,0,11,0,2,2,4,0,0,1,1,0,1,0 1,2,10,3,0,4,2,0,1,1,1,1,1,1 2,0,0,3,2,5,3,0,0,1,1,1,1,0 0,0,6,2,2,5,3,0,0,1,1,2,1,0 0,0,3,2,2,2,5,4,0,1,1,0,1,0 3,0,3,2,4,8,3,0,1,1,1,2,1,0 1,0,3,2,1,4,5,0,0,1,1,1,1,0 0,0,8,0,1,2,5,0,0,1,1,1,1,0 1,0,1,2,0,0,0,0,0,1,1,0,1,0 1,4,3,2,0,12,2,0,1,1,1,1,1,1 0,3,1,2,2,8,3,0,0,1,1,0,1,0 0,0,6,2,0,6,2,0,1,1,1,0,1,0 0,0,3,2,2,2,5,0,1,1,1,0,1,0 0,0,0,3,2,8,3,0,1,1,1,0,1,1 0,0,3,2,2,2,3,0,0,1,1,2,1,0 1,0,1,2,2,10,3,4,1,1,1,1,1,0 0,0,3,2,2,10,4,3,1,1,1,0,1,0 2,0,6,2,0,0,2,0,1,1,1,0,1,1 3,3,3,2,0,8,2,0,1,1,1,0,1,1 1,2,1,2,0,9,2,0,1,1,1,1,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 0,0,0,3,2,2,1,0,1,1,1,0,1,0 0,0,0,3,2,4,3,0,1,1,1,1,1,0 2,0,7,1,0,2,2,0,1,1,1,2,1,0 0,0,2,1,2,1,1,0,1,1,1,2,1,0 0,0,1,2,0,3,2,0,1,1,1,1,1,0 0,0,3,2,3,2,3,0,0,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,0 0,4,1,2,2,2,1,0,0,1,1,2,1,0 0,5,1,2,1,8,5,4,1,1,1,0,1,0 0,4,1,2,0,12,2,0,1,1,1,0,1,1 1,1,3,2,0,4,2,0,1,1,1,1,1,1 1,0,1,2,0,4,2,0,1,1,1,1,1,0 1,0,3,2,2,7,5,0,0,1,1,0,1,0 0,0,0,3,0,4,0,0,0,1,1,0,1,1 2,5,10,3,2,5,3,0,0,1,1,1,1,1 2,0,3,2,0,4,2,0,1,1,1,0,1,1 2,2,1,2,0,4,2,0,1,1,1,0,1,1 1,0,10,3,0,4,2,0,1,1,1,1,1,1 1,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,1,2,2,10,1,0,1,1,1,2,1,0 0,0,3,2,2,7,1,0,1,1,1,0,1,0 1,5,3,2,1,8,5,0,1,1,1,2,1,0 0,0,3,2,0,4,2,0,1,1,1,1,1,0 0,0,4,3,2,5,3,0,1,1,1,1,1,0 1,1,1,2,0,10,2,0,1,1,1,0,1,0 0,0,3,2,3,8,5,0,0,1,1,0,1,0 2,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,10,3,0,5,2,0,1,1,1,1,1,1 0,2,3,2,2,2,5,1,1,1,1,0,1,0 0,0,1,2,2,2,1,0,1,1,1,2,1,0 1,2,0,3,0,4,2,0,1,1,1,1,1,1 1,0,1,2,1,1,3,0,1,1,1,0,1,1 0,0,0,3,0,0,2,0,1,1,1,2,1,1 1,4,10,3,0,5,2,0,1,1,1,1,1,1 1,4,10,3,0,4,2,4,1,1,1,0,1,1 0,0,1,2,2,8,1,0,0,1,1,2,1,0 2,0,3,2,1,2,3,0,0,1,1,2,1,0 0,0,1,2,2,3,5,0,0,1,1,2,1,0 1,4,1,2,0,2,2,0,1,1,1,0,1,0 0,0,0,3,2,4,3,0,0,1,1,2,1,0 1,0,1,2,1,8,3,0,0,1,1,0,1,0 2,0,0,3,0,3,2,0,1,1,1,0,1,1 0,0,12,1,2,1,3,0,1,1,1,0,1,0 1,1,0,3,0,5,2,0,1,1,1,1,1,0 1,3,0,3,2,5,3,0,0,1,1,0,1,0 0,0,6,2,0,4,2,0,1,1,1,1,1,1 0,4,3,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 2,0,3,2,0,3,2,0,1,1,1,1,1,1 1,0,3,2,0,2,2,0,1,1,1,0,1,0 1,0,1,2,2,4,3,0,1,1,1,1,1,1 0,0,3,2,2,6,1,0,1,1,1,1,1,0 2,0,0,3,1,4,5,0,1,1,1,1,1,1 2,2,13,3,0,4,2,1,1,1,1,0,1,1 0,0,2,1,2,2,1,0,0,1,1,2,1,0 0,0,6,2,2,1,3,0,1,1,1,0,1,0 1,0,3,2,3,2,3,4,0,1,1,2,1,0 2,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,0,12,4,0,1,1,1,2,1,0 2,0,1,2,1,4,5,0,0,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 1,3,10,3,4,3,5,0,1,1,1,1,1,1 1,0,1,2,0,8,0,4,0,1,1,0,1,1 1,4,5,2,3,4,3,0,1,1,1,0,1,0 0,5,1,2,1,8,5,0,0,1,1,0,1,0 0,0,6,2,2,1,1,4,1,1,1,0,1,0 1,0,1,2,1,4,5,0,0,1,1,0,1,0 0,0,1,2,2,5,1,0,0,1,1,2,1,0 0,0,3,2,2,3,1,0,0,1,1,2,1,0 2,0,3,2,0,11,4,1,0,1,1,1,1,0 0,0,3,2,2,8,5,0,0,1,1,0,1,0 0,0,1,2,2,3,3,0,0,1,1,2,1,0 1,5,6,2,0,12,2,0,1,1,1,0,1,0 1,0,3,2,1,7,1,0,1,1,1,0,1,0 0,0,3,2,0,4,0,0,0,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,0,1,1 0,0,0,3,2,5,3,0,1,1,1,1,1,0 1,0,11,0,0,2,2,0,1,1,1,0,1,0 2,2,10,3,1,5,3,0,0,1,1,2,1,0 0,0,1,2,2,8,1,4,0,1,1,2,1,0 1,5,10,3,0,5,2,0,1,1,1,0,1,1 0,0,3,2,0,1,2,0,1,1,1,0,1,1 1,4,6,2,1,8,3,0,0,1,1,0,1,0 2,0,1,2,0,3,2,0,1,1,1,2,1,0 1,0,0,3,3,3,3,0,1,1,1,0,1,0 2,1,1,2,1,3,5,0,0,1,1,1,1,0 0,0,6,2,2,0,3,0,1,1,1,0,1,0 0,1,3,2,0,1,2,0,1,1,1,1,1,0 0,4,3,2,2,1,5,4,1,1,1,0,1,0 0,0,0,3,2,5,3,0,1,1,1,0,1,1 3,1,1,2,0,9,2,0,1,1,1,1,1,0 1,4,9,1,0,10,2,0,1,1,1,0,1,0 0,0,5,2,1,5,5,4,0,1,1,2,1,0 1,0,1,2,3,8,1,0,1,1,1,0,1,0 0,0,9,1,2,2,1,0,1,1,1,2,1,0 1,0,12,1,4,10,5,4,1,1,1,0,1,0 1,3,6,2,1,8,1,4,0,1,1,0,1,0 0,0,3,2,2,1,1,0,1,1,1,1,1,0 1,0,1,2,0,8,0,0,0,1,1,0,1,0 2,4,1,2,0,8,0,0,0,1,1,2,1,0 0,0,3,2,0,1,2,4,1,1,1,0,1,0 2,5,4,3,0,5,2,0,1,1,1,0,1,1 1,5,0,3,5,5,3,0,1,1,1,0,1,0 1,0,2,1,1,8,5,0,0,1,1,0,1,0 1,2,3,2,0,4,2,0,1,1,1,0,1,0 0,0,1,2,2,7,1,0,1,1,1,2,1,0 1,0,14,0,0,2,2,0,1,1,1,1,1,0 1,3,1,2,1,4,5,1,0,1,1,0,1,0 1,0,3,2,1,4,3,0,0,1,1,0,1,0 1,0,1,2,0,3,2,4,1,1,1,1,1,1 2,0,3,2,0,4,2,1,1,1,1,1,1,0 2,0,0,3,0,12,2,0,1,1,1,0,1,1 0,0,9,1,2,1,1,0,1,1,1,0,1,0 1,0,3,2,0,10,2,0,1,1,1,2,1,0 0,2,0,3,1,9,3,0,1,1,1,1,1,0 0,4,0,3,1,5,4,0,0,1,1,0,1,0 0,0,3,2,2,7,1,0,0,1,1,0,1,0 1,0,1,2,2,4,3,0,0,1,1,0,1,0 1,0,1,2,1,3,5,0,1,1,1,1,1,0 1,0,3,2,0,2,2,0,1,1,1,1,1,0 0,0,12,1,2,1,3,0,1,1,1,2,1,0 2,0,6,2,0,7,2,0,1,1,1,1,1,1 1,0,3,2,1,8,5,0,0,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,0 2,0,3,2,0,3,2,0,1,1,1,1,1,1 2,0,3,2,0,7,2,0,1,1,1,0,1,0 0,4,1,2,1,8,1,0,0,1,1,2,1,0 0,0,3,2,2,3,1,0,1,1,1,0,1,0 1,4,3,2,0,12,2,0,1,1,1,1,1,0 0,0,1,2,2,6,1,0,1,1,1,2,1,0 2,4,3,2,0,10,2,0,1,1,1,0,1,1 1,0,0,3,0,5,2,0,1,1,1,0,1,1 1,1,14,0,0,3,2,0,1,1,1,1,1,0 0,0,1,2,2,6,1,0,1,1,1,0,1,0 0,0,3,2,2,1,1,4,1,1,1,0,1,0 0,5,1,2,5,9,1,0,1,1,1,1,1,0 3,0,7,1,4,2,5,4,0,1,1,2,1,0 2,1,4,3,0,5,2,0,1,1,1,0,1,1 0,0,1,2,2,8,4,0,1,1,1,2,1,0 0,4,0,3,2,1,1,0,1,1,1,2,1,0 2,0,1,2,0,3,2,0,1,1,1,1,1,1 1,0,10,3,2,5,3,0,0,1,1,1,1,1 2,0,0,3,1,4,5,0,0,1,1,2,1,0 0,0,0,3,2,0,1,0,1,1,1,0,1,0 1,0,6,2,0,0,0,0,0,1,1,2,1,1 1,0,12,1,0,4,2,0,1,1,1,0,1,1 0,0,5,2,1,8,5,0,0,1,1,0,1,0 1,2,0,3,0,3,1,1,0,1,1,0,1,1 1,0,3,2,2,1,1,0,1,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,0,3,2,5,3,0,0,1,1,0,1,0 0,0,3,2,2,4,1,0,0,1,1,0,1,0 1,0,6,2,0,1,2,0,1,1,1,0,1,0 1,0,12,1,0,7,2,0,1,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,1,1,0 0,0,3,2,2,8,5,0,0,1,1,1,1,0 0,0,0,3,2,4,3,0,1,1,1,0,1,0 0,0,3,2,3,3,5,4,0,1,1,2,1,0 0,0,3,2,0,8,2,0,1,1,1,1,1,0 0,0,0,3,0,3,2,4,1,1,1,1,1,1 0,0,1,2,5,5,3,0,1,1,1,0,1,0 1,0,0,3,1,4,3,0,0,1,1,1,1,0 1,0,6,2,0,1,2,0,1,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,0,1,1 0,0,1,2,2,8,3,0,1,1,1,2,1,0 1,3,3,2,0,4,2,0,1,1,1,0,1,1 2,3,1,2,0,4,2,0,1,1,1,0,1,1 0,0,3,2,2,8,1,0,0,1,1,2,1,0 2,0,0,3,0,8,2,0,1,1,1,1,1,0 0,4,0,3,0,12,2,0,1,1,1,0,1,0 1,0,1,2,1,4,5,0,0,1,1,2,1,0 0,0,5,2,2,5,3,0,1,1,1,1,1,1 0,0,3,2,0,7,2,0,1,1,1,0,1,1 1,5,0,3,2,5,3,0,1,1,1,0,1,0 1,0,1,2,1,1,3,0,1,1,1,0,1,0 1,0,1,2,0,10,2,0,1,1,1,0,1,0 0,0,0,3,2,4,3,0,1,1,1,0,1,0 0,0,0,3,2,5,3,1,1,1,1,0,1,1 2,0,14,0,0,7,2,0,1,1,1,0,1,0 0,0,1,2,2,0,1,0,1,1,1,2,1,0 0,0,3,2,0,7,0,2,0,1,1,0,1,0 1,0,3,2,0,4,2,0,1,1,1,1,1,1 2,0,6,2,0,1,2,0,1,1,1,0,1,1 0,0,6,2,2,2,1,0,0,1,1,2,1,0 1,0,5,2,3,4,3,0,1,1,1,0,1,0 1,0,9,1,1,10,3,0,0,1,1,0,1,0 2,0,8,0,0,9,2,0,1,1,1,1,1,0 0,0,6,2,0,7,2,0,1,1,1,0,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,1,2,0,1,2,0,1,1,1,0,1,0 2,0,0,3,0,4,2,1,1,1,1,0,1,1 0,0,13,3,0,5,2,0,1,1,1,1,1,1 1,5,8,0,2,2,3,4,0,1,1,0,1,0 0,1,3,2,0,2,0,0,0,1,1,2,1,0 1,2,3,2,0,1,2,0,1,1,1,0,1,0 2,4,3,2,1,2,3,0,0,1,1,2,1,0 2,5,10,3,0,5,2,1,1,1,1,2,1,1 2,0,3,2,1,3,3,0,0,1,1,2,1,0 0,0,3,2,2,3,5,4,0,1,1,2,1,0 1,0,12,1,0,1,2,0,1,1,1,1,1,1 0,5,3,2,2,8,3,0,0,1,1,2,1,0 0,0,1,2,2,2,3,0,0,1,1,2,1,0 1,0,3,2,1,4,5,0,0,1,1,0,1,0 0,0,13,3,0,5,0,0,0,1,1,1,1,0 2,0,1,2,0,4,0,0,0,1,1,1,1,0 0,0,3,2,2,7,3,0,0,1,1,0,1,0 1,5,10,3,0,5,2,0,1,1,1,0,1,1 1,0,3,2,0,7,2,0,1,1,1,0,1,0 0,4,1,2,0,12,2,0,1,1,1,0,1,0 0,0,0,3,0,3,2,0,1,1,1,1,1,1 0,0,1,2,2,1,3,0,1,1,1,1,1,0 3,2,2,1,2,4,3,0,1,1,1,1,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 1,0,3,2,0,9,2,0,1,1,1,0,1,0 0,0,1,2,2,5,3,0,1,1,1,0,1,0 1,0,10,3,2,4,3,0,0,1,1,0,1,1 1,0,3,2,1,3,3,0,0,1,1,2,1,0 1,4,0,3,2,12,3,4,1,1,1,0,1,0 0,0,3,2,2,2,1,0,1,1,1,2,1,0 0,0,3,2,2,4,3,0,0,1,1,0,1,0 0,0,10,3,0,3,2,0,1,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,1,1,1 1,5,5,2,1,5,3,0,0,1,1,0,1,0 0,0,3,2,2,2,1,0,1,1,1,2,1,0 2,4,1,2,1,8,3,4,0,1,1,2,1,0 1,0,6,2,2,8,3,0,0,1,1,1,1,0 2,0,2,1,0,7,2,0,1,1,1,0,1,0 0,4,3,2,2,12,3,4,1,1,1,0,1,0 0,0,1,2,2,2,5,4,0,1,1,2,1,0 1,0,1,2,1,4,3,0,0,1,1,1,1,0 2,0,8,0,0,2,2,0,1,1,1,2,1,0 0,0,1,2,0,6,2,0,1,1,1,0,1,0 0,0,3,2,2,6,3,0,1,1,1,1,1,0 1,0,8,0,0,7,2,0,1,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,1 2,0,1,2,0,3,2,0,1,1,1,0,1,1 0,0,0,3,2,8,3,0,1,1,1,0,1,0 0,0,1,2,2,6,1,4,0,1,1,2,1,0 0,0,0,3,2,4,1,0,0,1,1,0,1,0 0,0,14,0,0,2,2,0,1,1,1,0,1,0 1,4,3,2,0,0,0,0,0,1,1,0,1,1 1,4,7,1,0,2,0,0,0,1,1,0,1,0 1,0,3,2,1,6,3,0,1,1,1,0,1,0 1,3,0,3,0,5,2,0,1,1,1,1,1,1 0,0,1,2,2,0,1,0,0,1,1,2,1,0 0,0,3,2,1,3,5,0,0,1,1,2,1,0 0,0,1,2,0,4,2,0,1,1,1,1,1,0 1,0,3,2,2,6,1,0,0,1,1,0,1,0 0,0,6,2,1,4,3,0,0,1,1,0,1,0 2,1,10,3,2,3,3,0,1,1,1,2,1,0 1,0,0,3,3,0,5,0,0,1,1,0,1,0 1,0,1,2,3,5,1,0,0,1,1,0,1,0 0,0,14,0,2,2,4,0,0,1,1,0,1,0 1,1,3,2,0,4,2,1,1,1,1,2,1,0 0,2,3,2,1,3,3,0,0,1,1,1,1,0 1,1,6,2,0,4,2,0,1,1,1,1,1,0 0,0,3,2,2,2,5,0,0,1,1,2,1,0 1,0,2,1,1,2,5,4,0,1,1,0,1,0 0,0,3,2,2,3,1,0,1,1,1,0,1,0 1,4,6,2,0,10,2,0,1,1,1,2,1,0 0,4,1,2,2,2,1,4,0,1,1,2,1,0 0,0,3,2,2,6,1,0,1,1,1,0,1,0 1,4,0,3,1,5,5,0,0,1,1,1,1,0 1,1,6,2,0,1,2,0,1,1,1,0,1,0 2,2,0,3,0,4,2,0,1,1,1,1,1,1 1,0,3,2,0,8,2,0,1,1,1,1,1,0 0,5,0,3,2,8,3,0,1,1,1,1,1,0 2,1,3,2,0,9,2,0,1,1,1,1,1,0 1,0,2,1,4,2,5,4,0,1,1,2,1,0 0,0,3,2,0,10,2,0,1,1,1,1,1,0 1,0,3,2,2,8,3,0,0,1,1,0,1,0 0,0,1,2,0,1,2,0,1,1,1,0,1,0 0,0,0,3,2,5,1,0,0,1,1,2,1,0 0,0,9,1,0,9,1,0,1,1,1,1,1,0 0,0,2,1,2,6,1,0,1,1,1,0,1,0 0,1,3,2,1,3,3,0,1,1,1,1,1,1 1,1,1,2,0,2,0,0,0,1,1,1,1,0 1,0,0,3,1,8,5,0,0,1,1,0,1,0 0,0,6,2,2,2,3,1,0,1,1,0,1,0 1,0,7,1,0,1,2,0,1,1,1,0,1,0 1,0,3,2,4,2,3,0,0,1,1,1,1,0 2,1,12,1,0,5,2,0,1,1,1,2,1,1 2,1,8,0,1,10,3,0,1,1,1,1,1,0 1,0,3,2,0,1,2,3,1,1,1,0,1,0 0,0,3,2,1,1,5,0,1,1,1,2,1,0 1,0,5,2,2,3,3,4,1,1,1,1,1,1 0,1,3,2,2,3,4,1,1,1,1,1,1,1 1,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,5,2,1,8,5,0,0,1,1,0,1,0 0,0,9,1,0,1,2,0,1,1,1,0,1,0 1,0,0,3,0,1,2,0,1,1,1,1,1,1 1,0,1,2,0,1,2,0,1,1,1,0,1,1 1,0,3,2,1,7,3,0,0,1,1,0,1,0 2,4,3,2,4,10,3,4,0,1,1,0,1,0 1,0,3,2,3,8,3,4,0,1,1,2,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,1 1,0,12,1,1,4,5,0,0,1,1,2,1,0 0,0,1,2,2,0,1,0,0,1,1,0,1,0 0,0,0,3,0,1,2,0,1,1,1,1,1,1 1,1,5,2,0,7,2,0,1,1,1,0,1,1 1,5,10,3,2,5,3,0,1,1,1,1,1,0 0,0,3,2,2,1,1,0,1,1,1,0,1,0 1,5,1,2,0,12,2,0,1,1,1,0,1,1 1,1,3,2,0,4,2,0,1,1,1,1,1,0 0,0,0,3,2,3,3,0,1,1,1,0,1,0 2,2,3,2,0,3,2,0,1,1,1,1,1,0 0,0,1,2,0,7,2,0,1,1,1,1,1,0 0,0,3,2,2,1,5,0,1,1,1,2,1,0 0,0,1,2,0,1,2,0,1,1,1,1,1,0 1,3,3,2,1,4,3,0,0,1,1,0,1,0 0,0,2,1,5,2,5,0,0,1,1,2,1,0 0,2,1,2,0,4,2,0,1,1,1,1,1,1 3,0,4,3,0,4,2,0,1,1,1,0,1,0 1,0,3,2,1,8,5,0,0,1,1,2,1,0 0,0,3,2,2,6,3,0,1,1,1,0,1,0 0,0,1,2,2,6,1,0,1,1,1,2,1,0 2,5,1,2,0,5,2,4,1,1,1,2,1,1 1,0,13,3,0,5,2,0,1,1,1,1,1,0 1,0,10,3,0,3,2,0,1,1,1,0,1,1 0,0,8,0,0,6,1,0,1,1,1,1,1,0 2,3,9,1,0,8,2,0,1,1,1,0,1,0 1,4,1,2,0,12,2,0,1,1,1,0,1,1 1,4,0,3,0,8,2,0,1,1,1,1,1,1 1,5,1,2,0,12,2,0,1,1,1,0,1,1 0,0,9,1,2,3,1,0,0,1,1,2,1,0 0,0,0,3,2,4,3,0,1,1,1,0,1,0 0,0,1,2,0,1,2,0,1,1,1,1,1,0 1,0,1,2,1,3,5,0,1,1,1,0,1,0 1,0,3,2,1,4,5,0,0,1,1,0,1,0 0,0,1,2,0,1,2,0,1,1,1,0,1,0 0,5,0,3,2,5,1,0,0,1,1,2,1,0 2,0,2,1,4,2,3,0,0,1,1,0,1,0 2,0,0,3,0,3,2,0,1,1,1,1,1,1 1,0,0,3,0,1,0,4,0,1,1,2,1,1 1,0,10,3,5,12,3,1,1,1,1,0,1,0 1,0,3,2,1,7,3,4,0,1,1,0,1,0 1,0,0,3,1,3,5,0,1,1,1,0,1,1 0,0,3,2,0,10,2,0,1,1,1,1,1,1 1,1,1,2,0,3,2,0,1,1,1,1,1,1 1,4,1,2,0,1,2,0,1,1,1,0,1,1 2,0,1,2,5,8,3,0,1,1,1,0,1,0 1,0,3,2,0,2,0,0,0,1,1,2,1,0 3,1,3,2,0,9,2,0,1,1,1,0,1,0 1,0,3,2,0,11,0,0,0,1,1,1,1,0 0,3,0,3,0,5,2,1,1,1,1,0,1,0 0,4,0,3,0,4,2,0,1,1,1,1,1,0 0,0,0,3,0,2,2,0,1,1,1,1,1,1 0,0,12,1,2,9,3,4,1,1,1,0,1,0 1,0,3,2,2,10,5,4,0,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,2,2,3,0,1,1,1,1,1,0 0,0,2,1,2,2,1,0,0,1,1,2,1,0 1,0,12,1,3,8,3,4,0,1,1,1,1,0 1,1,3,2,0,9,2,0,1,1,1,1,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,0 1,0,5,2,0,1,2,0,1,1,1,0,1,1 3,0,7,1,4,2,5,0,0,1,1,2,1,0 0,0,0,3,0,5,2,0,1,1,1,0,1,1 1,0,1,2,0,1,2,1,1,1,1,0,1,0 1,0,1,2,0,8,0,0,0,1,1,0,1,1 0,0,14,0,0,9,2,0,1,1,1,0,1,0 0,0,6,2,0,1,2,0,1,1,1,0,1,0 0,5,1,2,2,5,3,0,1,1,1,2,1,0 0,0,9,1,2,8,1,0,0,1,1,2,1,0 1,0,0,3,1,4,5,4,0,1,1,1,1,1 2,0,3,2,0,1,2,0,1,1,1,0,1,1 0,0,14,0,2,9,5,0,1,1,1,1,1,0 1,0,5,2,0,1,2,0,1,1,1,1,1,0 0,0,11,0,2,7,3,0,1,1,1,2,1,0 1,0,0,3,1,4,5,0,0,1,1,1,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,0 2,0,1,2,0,8,2,0,1,1,1,1,1,1 2,0,6,2,2,8,3,0,0,1,1,0,1,0 1,0,0,3,1,4,3,0,1,1,1,1,1,1 1,0,3,2,5,8,5,4,0,1,1,0,1,0 1,1,1,2,0,9,2,0,1,1,1,1,1,0 2,2,0,3,0,5,2,0,1,1,1,0,1,1 0,1,3,2,0,4,2,0,1,1,1,0,1,0 0,0,0,3,2,3,3,0,0,1,1,1,1,0 0,0,2,1,2,6,1,0,1,1,1,2,1,0 1,0,6,2,0,1,2,0,1,1,1,1,1,1 2,4,9,1,4,4,3,0,1,1,1,1,1,0 0,0,12,1,2,1,1,0,1,1,1,1,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 0,1,3,2,2,9,1,0,1,1,1,0,1,0 0,0,1,2,2,3,1,1,0,1,1,2,1,0 3,0,3,2,4,8,3,0,0,1,1,2,1,0 0,0,6,2,0,0,2,0,1,1,1,0,1,0 1,4,1,2,0,10,2,0,1,1,1,2,1,0 0,1,3,2,0,10,2,0,1,1,1,1,1,0 2,0,13,3,0,5,2,0,1,1,1,1,1,1 0,0,1,2,2,1,1,0,1,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,1,1,1 2,1,3,2,0,3,2,0,1,1,1,1,1,0 0,3,1,2,2,2,3,0,0,1,1,0,1,1 2,0,3,2,0,1,2,0,1,1,1,1,1,1 0,0,1,2,2,8,1,0,0,1,1,2,1,0 1,0,3,2,0,9,2,0,1,1,1,0,1,0 2,5,10,3,0,4,2,0,1,1,1,0,1,1 1,0,10,3,0,4,2,0,1,1,1,0,1,1 0,0,3,2,2,3,5,0,1,1,1,2,1,0 1,1,3,2,0,4,2,0,1,1,1,1,1,0 1,0,10,3,0,5,2,0,1,1,1,1,1,1 0,0,1,2,2,1,1,0,1,1,1,0,1,0 1,0,3,2,0,4,0,0,0,1,1,2,1,1 1,0,10,3,0,5,0,0,0,1,1,1,1,1 0,0,1,2,2,3,3,0,0,1,1,0,1,0 1,0,0,3,0,5,2,0,1,1,1,0,1,1 0,0,5,2,0,8,2,0,1,1,1,0,1,0 1,0,10,3,1,5,5,0,0,1,1,0,1,0 1,0,2,1,0,1,2,0,1,1,1,0,1,1 1,0,3,2,0,9,2,0,1,1,1,1,1,0 1,0,0,3,1,3,5,4,0,1,1,2,1,1 0,0,5,2,0,10,2,0,1,1,1,0,1,0 1,0,1,2,0,9,2,0,1,1,1,1,1,1 1,0,3,2,1,8,1,0,0,1,1,0,1,0 1,0,1,2,0,5,2,0,1,1,1,0,1,0 2,5,3,2,0,2,2,0,1,1,1,0,1,0 0,0,0,3,2,4,3,0,0,1,1,1,1,1 2,0,0,3,0,1,2,4,1,1,1,1,1,1 0,0,1,2,2,3,1,0,0,1,1,1,1,0 0,0,5,2,2,5,1,0,0,1,1,2,1,0 0,0,1,2,0,4,2,0,1,1,1,1,1,1 1,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,0,3,2,0,1,1,1,1,1,1 1,4,10,3,0,5,2,0,1,1,1,1,1,0 0,1,5,2,0,2,0,0,0,1,1,2,1,1 2,0,6,2,1,2,3,0,1,1,1,0,1,0 1,0,3,2,0,5,0,0,0,1,1,2,1,0 0,4,0,3,2,5,3,4,0,1,1,1,1,0 1,0,12,1,0,7,2,4,1,1,1,0,1,1 2,1,10,3,0,3,2,0,1,1,1,1,1,1 1,0,3,2,3,2,5,0,0,1,1,2,1,0 0,0,0,3,2,5,3,0,0,1,1,0,1,0 2,3,1,2,0,8,2,0,1,1,1,0,1,1 1,2,0,3,0,4,2,0,1,1,1,1,1,1 0,0,2,1,2,3,1,3,0,1,1,2,1,0 0,0,3,2,2,7,1,0,1,1,1,0,1,0 1,0,3,2,1,1,5,0,0,1,1,1,1,0 1,0,3,2,3,6,5,0,0,1,1,0,1,0 1,0,3,2,1,10,3,0,1,1,1,1,1,0 0,5,10,3,2,5,5,1,0,1,1,2,1,0 0,0,1,2,2,5,3,0,1,1,1,0,1,1 1,1,4,3,0,5,2,0,1,1,1,1,1,1 0,0,2,1,2,6,1,0,1,1,1,2,1,0 1,2,10,3,0,4,2,0,1,1,1,0,1,1 0,0,2,1,2,0,1,0,0,1,1,2,1,0 0,0,1,2,2,10,3,0,1,1,1,0,1,0 0,0,1,2,2,5,3,0,1,1,1,0,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,2,6,1,0,1,1,1,2,1,0 2,5,8,0,4,2,4,0,0,1,1,2,1,0 1,1,1,2,0,0,2,0,1,1,1,1,1,1 0,0,12,1,2,6,1,0,1,1,1,2,1,0 0,0,3,2,2,2,1,0,1,1,1,2,1,0 1,0,4,3,2,5,3,0,0,1,1,0,1,0 0,0,0,3,2,3,3,0,0,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,1 0,0,6,2,0,8,0,0,0,1,1,2,1,0 1,4,5,2,1,4,3,0,1,1,1,1,1,1 1,4,3,2,0,1,2,0,1,1,1,0,1,1 3,0,10,3,2,8,3,0,0,1,1,0,1,0 1,0,6,2,0,5,0,0,0,1,1,1,1,1 1,1,2,1,0,6,2,0,1,1,1,1,1,0 1,0,1,2,5,4,5,0,0,1,1,2,1,0 0,0,3,2,0,10,2,0,1,1,1,1,1,1 0,1,6,2,0,9,2,0,1,1,1,1,1,0 0,4,3,2,2,1,1,0,1,1,1,0,1,0 1,0,0,3,0,3,2,0,1,1,1,0,1,1 2,0,1,2,0,1,2,0,1,1,1,1,1,0 1,0,1,2,0,1,2,0,1,1,1,2,1,1 1,4,1,2,0,12,2,0,1,1,1,0,1,1 0,0,5,2,0,0,2,0,1,1,1,1,1,1 0,0,12,1,2,1,3,0,1,1,1,1,1,0 0,0,1,2,2,8,1,0,0,1,1,0,1,0 2,0,1,2,1,5,5,0,1,1,1,0,1,0 2,5,3,2,0,9,2,0,1,1,1,0,1,0 3,1,3,2,2,4,3,0,1,1,1,2,1,0 1,0,1,2,1,3,3,0,0,1,1,1,1,1 1,0,3,2,0,10,2,0,1,1,1,0,1,0 1,0,8,0,5,7,5,3,0,1,1,0,1,0 1,1,10,3,0,5,2,0,1,1,1,0,1,1 0,0,10,3,0,4,2,0,1,1,1,1,1,1 0,0,5,2,0,8,0,0,0,1,1,0,1,0 0,0,3,2,2,3,1,0,1,1,1,2,1,0 2,0,3,2,0,2,2,0,1,1,1,2,1,0 0,1,0,3,3,1,3,0,1,1,1,1,1,0 0,0,0,3,2,5,1,1,1,1,1,0,1,0 1,0,1,2,1,7,3,0,0,1,1,2,1,0 0,0,12,1,2,3,3,0,1,1,1,2,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 2,2,5,2,0,3,2,0,1,1,1,0,1,1 2,0,3,2,0,2,0,4,0,1,1,0,1,0 0,0,1,2,0,5,0,0,0,1,1,0,1,1 2,0,12,1,0,10,2,0,1,1,1,1,1,1 1,2,3,2,0,3,2,0,1,1,1,1,1,1 1,0,0,3,0,3,2,0,1,1,1,0,1,1 0,0,1,2,2,8,1,0,1,1,1,1,1,0 1,2,4,3,0,5,2,0,1,1,1,1,1,1 0,0,1,2,0,4,4,0,1,1,1,0,1,0 0,0,3,2,2,1,1,0,1,1,1,0,1,0 0,0,1,2,1,8,3,1,0,1,1,1,1,0 1,4,3,2,0,7,2,0,1,1,1,2,1,1 1,0,3,2,0,1,2,0,1,1,1,1,1,1 1,4,0,3,1,10,3,0,1,1,1,2,1,0 0,0,0,3,0,4,2,0,1,1,1,0,1,0 0,0,0,3,2,3,3,0,1,1,1,1,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 0,0,1,2,0,1,2,2,1,1,1,1,1,0 0,0,3,2,1,8,1,0,0,1,1,0,1,0 1,0,1,2,2,8,3,4,0,1,1,0,1,0 2,1,3,2,4,2,3,0,0,1,1,2,1,0 1,0,3,2,0,2,2,0,1,1,1,0,1,0 0,0,3,2,2,8,3,0,0,1,1,0,1,0 0,0,0,3,2,4,1,0,1,1,1,2,1,0 0,0,3,2,2,7,1,0,1,1,1,0,1,0 1,0,1,2,1,4,5,0,0,1,1,2,1,0 2,1,3,2,0,9,2,0,1,1,1,0,1,0 0,2,5,2,0,3,2,0,1,1,1,1,1,1 2,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,0,3,2,4,3,0,0,1,1,0,1,0 0,0,0,3,0,3,2,0,1,1,1,0,1,0 0,0,0,3,2,4,3,0,1,1,1,0,1,0 1,0,3,2,1,8,5,0,0,1,1,0,1,0 1,5,3,2,0,1,2,0,1,1,1,0,1,0 1,1,10,3,2,5,3,0,0,1,1,1,1,0 0,0,3,2,2,3,3,0,1,1,1,0,1,0 0,0,9,1,2,8,5,0,1,1,1,0,1,0 0,0,8,0,2,1,3,0,1,1,1,0,1,0 1,0,6,2,0,5,2,0,1,1,1,0,1,1 0,1,4,3,0,5,2,0,1,1,1,1,1,1 0,0,0,3,2,6,3,1,0,1,1,1,1,0 2,0,3,2,0,1,2,0,1,1,1,0,1,0 2,0,3,2,0,1,2,0,1,1,1,1,1,1 1,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,2,1,0,1,2,0,1,1,1,0,1,0 2,0,3,2,0,4,2,0,1,1,1,0,1,1 1,0,0,3,1,4,3,0,1,1,1,1,1,1 0,0,2,1,2,10,4,0,1,1,1,2,1,0 0,0,1,2,2,6,1,0,1,1,1,2,1,0 2,0,5,2,4,4,5,0,0,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,1 0,0,9,1,0,1,2,0,1,1,1,1,1,0 0,0,2,1,2,6,3,0,1,1,1,0,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 0,0,3,2,2,10,3,0,1,1,1,1,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 1,0,0,3,0,4,2,0,1,1,1,0,1,0 1,4,3,2,0,12,2,0,1,1,1,0,1,1 0,0,3,2,2,3,1,0,1,1,1,2,1,0 1,0,0,3,0,4,2,0,1,1,1,0,1,1 0,0,3,2,0,4,2,4,1,1,1,0,1,1 1,0,1,2,1,8,3,4,0,1,1,2,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,1 1,0,0,3,1,8,3,0,1,1,1,0,1,0 0,0,1,2,2,9,1,0,1,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,1,2,2,4,3,0,0,1,1,1,1,0 1,0,1,2,0,2,0,0,0,1,1,0,1,0 1,1,13,3,0,5,2,0,1,1,1,1,1,1 2,0,3,2,0,6,2,0,1,1,1,0,1,0 1,0,0,3,0,8,0,0,0,1,1,1,1,1 0,0,2,1,2,6,1,0,1,1,1,1,1,0 2,3,4,3,0,4,2,0,1,1,1,0,1,1 1,4,8,0,0,10,2,0,1,1,1,0,1,0 2,0,1,2,4,1,5,0,0,1,1,2,1,0 1,1,10,3,0,4,2,0,1,1,1,1,1,0 2,1,0,3,0,4,2,0,1,1,1,0,1,1 1,5,5,2,0,12,2,0,1,1,1,0,1,0 1,0,1,2,0,3,2,0,1,1,1,1,1,1 1,0,3,2,2,4,3,2,1,1,1,1,1,0 1,0,0,3,0,3,2,0,1,1,1,0,1,0 0,0,1,2,2,3,1,3,0,1,1,2,1,0 1,0,3,2,2,3,3,0,1,1,1,0,1,0 2,0,13,3,1,5,5,0,1,1,1,1,1,1 1,0,2,1,0,6,2,0,1,1,1,1,1,1 0,1,0,3,0,5,2,0,1,1,1,0,1,0 0,0,3,2,5,8,1,0,0,1,1,0,1,0 0,0,12,1,0,2,2,0,1,1,1,0,1,0 0,0,3,2,3,1,3,0,1,1,1,1,1,0 1,0,0,3,0,3,2,0,1,1,1,1,1,1 0,0,13,3,0,5,2,1,1,1,1,0,1,1 0,0,1,2,1,1,3,0,1,1,1,1,1,0 0,0,6,2,2,7,3,0,1,1,1,2,1,0 0,0,3,2,0,9,2,0,1,1,1,1,1,0 1,2,10,3,0,4,2,0,1,1,1,1,1,1 1,1,3,2,0,3,2,0,1,1,1,0,1,0 0,0,3,2,2,8,1,0,0,1,1,0,1,0 1,0,0,3,2,4,3,0,1,1,1,0,1,0 1,2,4,3,0,5,2,0,1,1,1,1,1,1 0,0,3,2,2,2,1,0,0,1,1,0,1,0 1,0,0,3,0,10,2,0,1,1,1,0,1,1 0,0,1,2,2,6,1,4,1,1,1,0,1,0 1,0,3,2,0,1,2,4,1,1,1,0,1,0 2,1,0,3,1,5,3,0,0,1,1,0,1,0 1,5,0,3,0,8,2,0,1,1,1,1,1,1 1,0,0,3,0,0,2,0,1,1,1,0,1,1 3,0,3,2,4,8,3,0,0,1,1,2,1,0 0,0,6,2,0,2,2,0,1,1,1,1,1,0 0,2,3,2,0,1,2,0,1,1,1,1,1,0 2,0,15,0,0,1,2,1,1,1,1,0,1,0 1,5,1,2,3,5,5,4,0,1,1,2,1,0 0,0,1,2,0,0,2,0,1,1,1,1,1,0 1,3,0,3,0,5,2,1,1,1,1,0,1,0 0,4,0,3,2,5,1,0,0,1,1,2,1,0 1,1,10,3,0,3,2,0,1,1,1,1,1,1 0,1,3,2,1,9,3,0,1,1,1,1,1,0 0,0,0,3,2,4,3,0,0,1,1,0,1,0 1,0,6,2,0,5,2,0,1,1,1,1,1,0 1,0,0,3,4,1,5,4,0,1,1,0,1,0 0,0,1,2,0,4,2,0,1,1,1,0,1,1 1,0,3,2,0,1,2,0,1,1,1,1,1,0 1,0,1,2,0,3,2,0,1,1,1,0,1,1 0,0,2,1,2,6,1,0,1,1,1,0,1,0 2,2,10,3,0,3,2,0,1,1,1,0,1,0 2,1,1,2,0,1,2,0,1,1,1,1,1,1 0,0,3,2,2,8,1,0,1,1,1,1,1,0 0,0,0,3,0,5,2,0,1,1,1,0,1,0 0,0,0,3,2,2,3,0,1,1,1,2,1,0 1,0,0,3,0,0,2,0,1,1,1,1,1,1 1,0,1,2,1,2,5,4,0,1,1,0,1,0 1,0,3,2,1,4,3,0,0,1,1,0,1,0 2,0,10,3,4,4,3,0,0,1,1,0,1,1 0,0,0,3,0,3,2,0,1,1,1,1,1,1 1,4,3,2,0,12,2,0,1,1,1,1,1,1 0,5,3,2,2,2,3,1,1,1,1,0,1,0 1,0,4,3,2,5,3,0,0,1,1,2,1,1 1,0,1,2,2,8,3,0,1,1,1,0,1,0 2,0,0,3,4,4,3,0,0,1,1,2,1,0 1,0,3,2,0,2,0,0,0,1,1,2,1,0 1,0,6,2,0,1,2,0,1,1,1,1,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 2,4,6,2,0,4,2,0,1,1,1,1,1,1 1,0,3,2,0,7,2,4,1,1,1,0,1,0 3,0,1,2,4,5,3,0,0,1,1,2,1,0 1,5,6,2,2,5,5,4,0,1,1,0,1,0 0,0,2,1,2,2,1,4,1,1,1,2,1,0 2,3,3,2,0,10,2,0,1,1,1,1,1,0 0,5,10,3,2,10,1,0,1,1,1,2,1,0 0,0,3,2,3,12,4,0,1,1,1,0,1,0 1,0,12,1,0,7,2,0,1,1,1,0,1,0 1,1,3,2,0,10,2,0,1,1,1,1,1,0 1,1,4,3,0,5,0,0,0,1,1,0,1,1 1,0,1,2,2,1,3,0,0,1,1,0,1,0 2,0,3,2,1,4,5,0,0,1,1,0,1,0 1,4,6,2,0,1,2,0,1,1,1,0,1,1 0,0,3,2,0,3,2,0,1,1,1,1,1,0 0,0,5,2,2,3,3,0,1,1,1,1,1,0 1,0,10,3,2,5,3,0,0,1,1,0,1,0 0,0,5,2,2,2,3,0,1,1,1,0,1,0 1,5,3,2,1,8,5,0,0,1,1,0,1,0 1,1,13,3,0,5,2,0,1,1,1,0,1,1 1,4,10,3,0,5,2,0,1,1,1,0,1,1 0,0,3,2,2,6,1,0,1,1,1,0,1,0 0,0,3,2,0,8,2,0,1,1,1,0,1,0 0,0,1,2,2,2,5,0,0,1,1,2,1,0 0,0,3,2,0,2,2,4,1,1,1,2,1,0 1,0,6,2,0,0,2,0,1,1,1,1,1,0 0,0,1,2,2,8,1,0,0,1,1,0,1,0 0,0,2,1,0,9,2,0,1,1,1,0,1,0 2,0,8,0,1,0,5,0,0,1,1,2,1,0 0,0,3,2,2,2,3,0,1,1,1,0,1,0 0,0,3,2,2,1,4,0,1,1,1,0,1,0 0,0,1,2,2,2,1,0,1,1,1,2,1,0 0,4,0,3,0,5,0,0,0,1,1,1,1,0 2,4,3,2,4,8,3,0,0,1,1,2,1,0 2,0,2,1,0,1,2,0,1,1,1,0,1,0 0,0,1,2,2,1,3,0,1,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,1,2,5,0,0,1,1,2,1,0 0,1,1,2,0,9,2,0,1,1,1,1,1,0 1,0,1,2,0,3,2,0,1,1,1,1,1,0 2,0,8,0,0,1,2,0,1,1,1,0,1,0 1,4,3,2,1,1,5,0,0,1,1,0,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,1 1,0,6,2,0,0,2,0,1,1,1,0,1,1 1,0,3,2,0,7,0,0,0,1,1,1,1,0 2,0,7,1,0,1,2,0,1,1,1,0,1,0 1,0,0,3,0,3,2,0,1,1,1,0,1,1 1,0,1,2,0,4,2,0,1,1,1,0,1,0 0,0,3,2,2,8,3,0,1,1,1,1,1,0 0,0,3,2,0,6,2,2,1,1,1,2,1,0 2,4,7,1,1,2,3,0,0,1,1,0,1,0 1,5,3,2,1,8,5,0,0,1,1,2,1,0 2,0,8,0,0,1,2,0,1,1,1,2,1,0 1,0,1,2,3,4,3,0,1,1,1,1,1,1 0,0,3,2,2,1,3,4,1,1,1,0,1,0 0,0,12,1,2,10,5,0,1,1,1,2,1,0 2,1,13,3,0,5,2,0,1,1,1,0,1,1 2,1,7,1,0,9,2,0,1,1,1,2,1,1 0,0,1,2,0,9,2,0,1,1,1,1,1,1 0,0,5,2,2,2,1,0,0,1,1,0,1,0 2,1,3,2,0,10,2,0,1,1,1,1,1,1 0,0,3,2,4,10,3,0,1,1,1,0,1,0 0,0,1,2,2,1,3,0,1,1,1,1,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,3,2,1,2,5,0,0,1,1,2,1,0 2,5,0,3,0,4,2,0,1,1,1,1,1,1 3,2,8,0,0,9,2,0,1,1,1,1,1,0 0,5,13,3,0,5,0,0,0,1,1,1,1,1 0,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,1,2,1,2,1,0,0,1,1,0,1,0 2,1,3,2,0,4,2,0,1,1,1,2,1,0 1,0,1,2,0,4,2,0,1,1,1,1,1,1 2,0,12,1,0,2,2,4,1,1,1,0,1,0 0,0,1,2,2,6,3,4,1,1,1,0,1,0 0,0,3,2,2,1,3,0,1,1,1,1,1,0 1,5,1,2,1,8,3,4,1,1,1,1,1,1 3,3,1,2,4,0,3,0,0,1,1,2,1,0 2,1,3,2,0,3,2,0,1,1,1,0,1,0 0,0,3,2,3,8,1,0,0,1,1,0,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,0 0,0,3,2,0,12,2,0,1,1,1,0,1,0 0,0,0,3,1,2,3,1,1,1,1,1,1,1 2,0,14,0,5,2,5,4,0,1,1,2,1,0 0,0,5,2,3,4,5,0,0,1,1,1,1,1 2,0,3,2,4,3,3,0,0,1,1,0,1,0 1,5,6,2,0,5,2,0,1,1,1,2,1,1 1,0,3,2,1,8,3,0,0,1,1,0,1,0 2,1,8,0,0,9,2,0,1,1,1,1,1,0 0,2,0,3,2,3,3,0,0,1,1,1,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,5,2,1,3,3,0,1,1,1,1,1,0 1,0,0,3,0,4,2,0,1,1,1,0,1,1 1,0,3,2,2,8,4,4,0,1,1,0,1,0 0,0,4,3,0,5,2,0,1,1,1,1,1,1 1,1,3,2,0,4,0,0,0,1,1,0,1,0 1,0,1,2,2,10,5,4,0,1,1,0,1,0 0,5,3,2,2,2,4,3,1,1,1,0,1,0 1,0,0,3,0,5,2,0,1,1,1,0,1,1 2,0,3,2,4,8,3,0,0,1,1,2,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,1 2,0,1,2,0,1,2,0,1,1,1,1,1,1 1,5,13,3,0,4,2,0,1,1,1,1,1,1 1,0,10,3,0,4,2,0,1,1,1,1,1,1 1,2,3,2,0,4,2,0,1,1,1,1,1,1 1,0,3,2,1,1,3,4,1,1,1,1,1,1 0,0,5,2,0,5,0,0,0,1,1,0,1,0 1,0,1,2,3,1,3,0,1,1,1,1,1,1 1,4,1,2,1,12,3,0,1,1,1,2,1,0 0,0,3,2,2,8,1,0,1,1,1,0,1,0 0,4,0,3,2,5,3,2,0,1,1,1,1,0 1,1,6,2,0,4,0,0,0,1,1,2,1,1 1,0,8,0,2,2,1,0,0,1,1,2,1,0 2,5,4,3,0,5,2,0,1,1,1,0,1,1 1,1,0,3,0,4,2,1,1,1,1,1,1,1 0,0,7,1,0,7,2,0,1,1,1,0,1,0 1,0,1,2,1,2,3,0,1,1,1,2,1,0 1,0,1,2,1,4,5,4,1,1,1,1,1,0 0,0,1,2,0,5,0,0,0,1,1,0,1,1 1,0,3,2,0,2,2,0,1,1,1,0,1,0 2,0,12,1,0,7,2,0,1,1,1,0,1,0 2,4,3,2,0,10,2,0,1,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,0 1,0,1,2,0,4,2,0,1,1,1,1,1,1 0,0,3,2,2,3,1,4,1,1,1,2,1,0 1,0,3,2,3,2,3,0,0,1,1,0,1,0 1,1,0,3,0,9,2,0,1,1,1,1,1,0 2,0,3,2,0,2,2,0,1,1,1,0,1,0 1,0,3,2,1,8,5,0,0,1,1,0,1,0 1,0,3,2,1,8,1,0,1,1,1,0,1,0 0,0,6,2,0,4,2,0,1,1,1,0,1,0 1,0,3,2,3,3,5,0,0,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 1,0,5,2,1,1,3,0,0,1,1,1,1,0 1,0,5,2,2,3,1,0,1,1,1,0,1,0 0,3,3,2,2,4,3,4,0,1,1,0,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 0,0,10,3,2,5,3,0,1,1,1,0,1,0 2,0,5,2,1,0,3,0,0,1,1,0,1,0 1,0,3,2,0,8,0,0,0,1,1,1,1,0 2,0,0,3,0,5,2,0,1,1,1,0,1,1 0,0,2,1,3,2,5,0,0,1,1,2,1,0 0,0,3,2,2,7,1,0,1,1,1,0,1,0 0,0,12,1,2,2,1,0,1,1,1,2,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 1,1,5,2,3,3,3,4,1,1,1,2,1,0 0,0,0,3,0,4,2,0,1,1,1,0,1,1 0,0,0,3,2,1,1,0,1,1,1,0,1,1 0,0,5,2,0,5,2,0,1,1,1,1,1,1 0,4,1,2,0,12,2,0,1,1,1,1,1,0 0,0,1,2,0,6,2,0,1,1,1,0,1,1 0,4,0,3,1,5,3,0,0,1,1,0,1,0 1,0,10,3,2,5,3,0,0,1,1,0,1,0 1,0,8,0,2,6,1,0,1,1,1,2,1,0 2,0,1,2,0,10,2,4,1,1,1,2,1,0 2,0,12,1,0,7,2,0,1,1,1,1,1,0 2,0,3,2,3,2,3,0,0,1,1,2,1,0 0,0,3,2,2,6,3,0,1,1,1,2,1,0 0,0,10,3,2,8,1,0,1,1,1,1,1,0 0,0,3,2,2,10,1,0,1,1,1,2,1,0 0,0,0,3,2,5,3,2,0,1,1,0,1,1 0,0,3,2,2,3,3,0,0,1,1,0,1,0 1,1,1,2,0,3,2,1,1,1,1,1,1,1 1,0,0,3,0,5,2,0,1,1,1,0,1,1 1,0,0,3,0,5,2,0,1,1,1,1,1,1 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,2,1,1,1,3,4,1,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,1,1,1 2,0,1,2,0,2,2,0,1,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,0 1,0,1,2,3,6,3,4,1,1,1,2,1,0 1,0,1,2,1,8,1,0,0,1,1,0,1,0 1,5,1,2,1,8,5,0,0,1,1,1,1,0 0,0,12,1,2,2,1,0,0,1,1,2,1,0 0,0,3,2,2,2,3,0,1,1,1,1,1,0 0,0,0,3,2,5,3,0,0,1,1,2,1,0 0,0,0,3,0,5,2,0,1,1,1,0,1,1 3,2,0,3,0,4,2,0,1,1,1,1,1,1 0,0,0,3,2,8,1,0,0,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,0 1,4,2,1,2,2,3,0,1,1,1,0,1,0 0,0,0,3,2,5,3,3,0,1,1,1,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,1 2,1,4,3,0,3,2,0,1,1,1,1,1,1 0,4,6,2,1,12,5,2,0,1,1,0,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 0,0,12,1,2,2,1,0,0,1,1,2,1,0 0,0,5,2,2,0,1,0,0,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,1 1,0,0,3,2,4,1,1,0,1,1,2,1,0 3,2,0,3,0,3,2,0,1,1,1,1,1,1 1,0,3,2,2,2,5,4,0,1,1,2,1,0 1,0,3,2,1,2,3,4,0,1,1,2,1,0 2,0,12,1,4,3,3,0,0,1,1,0,1,0 0,0,3,2,2,10,3,0,1,1,1,0,1,0 0,0,3,2,2,2,4,0,1,1,1,0,1,0 2,5,13,3,2,4,3,0,0,1,1,0,1,1 1,4,3,2,0,2,2,4,1,1,1,0,1,0 0,0,1,2,2,8,1,0,0,1,1,0,1,0 0,0,1,2,2,8,4,4,1,1,1,2,1,0 0,0,6,2,0,1,2,0,1,1,1,0,1,1 1,0,12,1,2,7,3,4,1,1,1,0,1,0 1,0,3,2,0,8,2,0,1,1,1,2,1,0 2,0,11,0,3,9,3,4,1,1,1,1,1,0 2,5,5,2,1,8,1,1,1,1,1,0,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,1,2,1,7,3,0,0,1,1,0,1,0 1,0,3,2,0,5,0,4,0,1,1,0,1,0 2,4,3,2,0,8,0,0,0,1,1,2,1,1 0,0,3,2,2,10,3,0,1,1,1,1,1,0 1,0,1,2,2,4,1,0,0,1,1,0,1,0 0,0,3,2,2,6,3,0,1,1,1,1,1,0 0,0,3,2,0,2,2,0,1,1,1,1,1,0 1,3,1,2,2,8,1,0,0,1,1,0,1,0 1,0,13,3,2,5,3,0,1,1,1,1,1,0 1,0,3,2,0,3,2,0,1,1,1,0,1,1 1,0,0,3,0,8,2,0,1,1,1,0,1,1 0,0,1,2,3,2,5,0,0,1,1,1,1,0 0,0,3,2,1,2,5,0,0,1,1,0,1,0 2,0,3,2,2,8,5,0,0,1,1,0,1,0 1,4,3,2,1,0,5,0,1,1,1,2,1,1 0,1,0,3,2,4,3,0,1,1,1,2,1,1 2,0,0,3,0,3,2,0,1,1,1,0,1,1 1,0,10,3,0,8,2,0,1,1,1,1,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,1,8,0,0,1,2,0,1,1,1,0,1,0 1,0,0,3,2,4,3,0,0,1,1,0,1,0 2,3,1,2,0,0,2,0,1,1,1,0,1,0 0,0,3,2,2,2,5,0,0,1,1,0,1,0 0,0,0,3,2,4,1,0,0,1,1,0,1,0 0,0,0,3,0,3,2,0,1,1,1,1,1,1 1,0,0,3,0,5,2,0,1,1,1,1,1,0 0,1,0,3,0,5,0,0,0,1,1,1,1,1 1,2,0,3,0,4,2,0,1,1,1,1,1,1 1,0,0,3,0,4,2,0,1,1,1,0,1,1 0,0,5,2,3,1,3,3,0,1,1,0,1,0 2,1,0,3,0,3,2,0,1,1,1,1,1,1 2,0,8,0,1,7,3,0,1,1,1,0,1,0 0,0,10,3,2,4,3,0,0,1,1,0,1,0 0,5,1,2,2,8,1,0,0,1,1,2,1,0 0,0,2,1,2,8,5,0,0,1,1,1,1,0 0,0,3,2,3,3,5,0,0,1,1,2,1,0 1,0,3,2,2,3,5,4,0,1,1,0,1,0 0,0,3,2,1,2,5,0,0,1,1,2,1,0 0,0,6,2,2,4,1,0,1,1,1,0,1,0 1,0,7,1,4,8,5,0,0,1,1,0,1,0 1,4,1,2,1,2,5,4,0,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,1,1,1 1,3,3,2,0,8,2,0,1,1,1,0,1,1 1,0,3,2,0,3,2,0,1,1,1,0,1,1 2,0,8,0,4,9,3,4,1,1,1,0,1,0 0,0,3,2,1,1,5,0,1,1,1,0,1,0 0,0,10,3,0,4,2,0,1,1,1,0,1,1 1,0,3,2,0,1,2,0,1,1,1,0,1,1 0,0,3,2,2,6,1,0,1,1,1,0,1,0 0,0,1,2,3,1,3,0,1,1,1,0,1,0 0,0,1,2,0,3,2,0,1,1,1,1,1,0 1,1,4,3,0,5,2,0,1,1,1,0,1,1 1,0,3,2,0,6,2,0,1,1,1,0,1,1 1,2,10,3,1,4,3,1,1,1,1,1,1,1 2,1,7,1,0,9,2,0,1,1,1,2,1,0 0,3,1,2,2,8,5,4,0,1,1,0,1,0 0,0,1,2,2,3,1,0,1,1,1,2,1,0 0,0,0,3,2,0,3,0,1,1,1,1,1,0 2,0,3,2,0,2,2,4,1,1,1,0,1,0 1,1,3,2,0,1,2,0,1,1,1,1,1,0 1,0,2,1,0,2,0,0,0,1,1,0,1,0 0,0,0,3,2,0,3,0,0,1,1,1,1,0 1,0,6,2,0,4,2,0,1,1,1,0,1,1 0,0,1,2,2,2,3,0,0,1,1,0,1,0 0,0,3,2,2,1,3,0,1,1,1,0,1,0 0,0,1,2,0,6,2,0,1,1,1,0,1,0 1,0,1,2,0,5,2,0,1,1,1,0,1,1 2,0,7,1,0,1,2,0,1,1,1,0,1,0 1,0,1,2,0,10,2,0,1,1,1,0,1,0 0,0,1,2,2,5,1,0,0,1,1,2,1,0 1,0,1,2,3,1,3,0,1,1,1,0,1,0 1,0,0,3,2,5,3,0,1,1,1,0,1,0 1,0,7,1,0,8,2,0,1,1,1,0,1,0 2,5,4,3,0,5,2,0,1,1,1,0,1,1 2,1,10,3,0,4,2,4,1,1,1,0,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 2,0,3,2,4,8,3,0,0,1,1,0,1,0 0,0,3,2,0,7,2,0,1,1,1,1,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,0 1,1,4,3,0,4,2,0,1,1,1,1,1,1 2,0,1,2,0,3,2,0,1,1,1,1,1,1 0,0,2,1,0,8,0,0,0,1,1,0,1,0 0,0,1,2,0,1,2,0,1,1,1,0,1,0 0,0,4,3,1,5,3,0,1,1,1,1,1,1 0,0,2,1,2,6,1,0,1,1,1,2,1,0 1,0,1,2,1,5,5,0,0,1,1,2,1,0 0,0,3,2,2,8,5,0,0,1,1,0,1,0 1,0,0,3,2,7,3,0,0,1,1,2,1,0 1,0,6,2,1,5,3,0,0,1,1,0,1,0 0,0,0,3,2,9,3,0,1,1,1,0,1,0 2,0,8,0,0,1,2,0,1,1,1,0,1,0 1,2,4,3,0,5,2,0,1,1,1,0,1,1 1,2,1,2,0,4,2,0,1,1,1,1,1,1 0,0,3,2,2,8,1,0,1,1,1,2,1,0 0,0,0,3,2,3,3,0,0,1,1,0,1,0 1,0,1,2,0,3,2,0,1,1,1,1,1,1 1,1,3,2,0,1,2,0,1,1,1,0,1,0 1,0,7,1,1,3,3,0,0,1,1,0,1,0 2,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,3,2,3,6,5,0,0,1,1,1,1,0 1,0,0,3,0,3,2,0,1,1,1,1,1,1 2,4,1,2,0,5,2,0,1,1,1,0,1,1 0,0,2,1,2,3,1,0,1,1,1,2,1,0 1,0,0,3,0,3,2,0,1,1,1,1,1,1 1,0,3,2,1,3,5,0,0,1,1,1,1,0 0,0,0,3,2,12,3,4,1,1,1,2,1,0 0,0,3,2,2,2,1,0,0,1,1,0,1,0 0,0,3,2,3,2,3,4,1,1,1,0,1,0 1,0,0,3,1,5,3,0,1,1,1,1,1,1 0,0,2,1,0,4,2,0,1,1,1,1,1,0 0,4,0,3,2,5,3,4,0,1,1,0,1,0 0,0,0,3,2,5,3,0,1,1,1,1,1,0 1,0,5,2,1,5,3,0,0,1,1,1,1,0 1,2,1,2,0,3,2,0,1,1,1,1,1,0 0,0,3,2,0,10,2,0,1,1,1,1,1,1 1,5,5,2,1,5,5,0,0,1,1,2,1,0 1,0,1,2,0,10,2,0,1,1,1,1,1,1 0,0,0,3,2,8,3,0,1,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,0 1,4,12,1,4,2,3,0,0,1,1,2,1,0 0,0,3,2,2,7,3,0,1,1,1,1,1,0 0,5,10,3,0,5,2,0,1,1,1,1,1,1 0,0,3,2,0,1,4,2,1,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,12,1,1,8,5,0,0,1,1,1,1,0 1,0,15,0,0,1,2,0,1,1,1,0,1,0 0,0,3,2,2,2,1,0,0,1,1,2,1,0 3,0,0,3,4,3,3,0,1,1,1,1,1,1 1,0,6,2,0,5,2,0,1,1,1,0,1,0 0,0,0,3,2,0,1,0,0,1,1,2,1,0 0,0,1,2,2,0,1,0,0,1,1,2,1,0 1,0,3,2,2,3,3,0,0,1,1,1,1,0 1,5,10,3,0,5,2,0,1,1,1,1,1,1 0,0,1,2,2,2,3,0,0,1,1,2,1,0 1,0,0,3,1,5,3,0,1,1,1,1,1,1 2,0,1,2,1,4,3,0,0,1,1,0,1,0 0,0,3,2,0,4,0,0,0,1,1,0,1,1 0,0,0,3,3,4,3,0,0,1,1,2,1,0 0,4,10,3,0,5,0,0,0,1,1,0,1,1 0,0,0,3,2,2,3,0,1,1,1,2,1,0 0,0,1,2,0,4,2,0,1,1,1,0,1,0 0,0,1,2,2,8,3,0,0,1,1,2,1,0 1,1,1,2,0,4,2,0,1,1,1,1,1,1 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,3,2,0,1,2,4,1,1,1,0,1,0 0,0,12,1,2,2,1,0,1,1,1,0,1,0 0,0,3,2,0,8,2,0,1,1,1,0,1,0 1,0,3,2,2,7,5,0,0,1,1,0,1,0 0,0,1,2,2,2,4,0,0,1,1,2,1,0 0,5,12,1,2,2,1,4,0,1,1,0,1,0 0,0,0,3,2,4,3,0,0,1,1,0,1,0 0,0,12,1,2,2,1,4,1,1,1,2,1,0 1,0,3,2,1,3,5,0,0,1,1,2,1,0 0,0,1,2,3,8,5,0,0,1,1,2,1,0 0,5,3,2,0,10,2,0,1,1,1,0,1,1 1,0,0,3,2,4,3,0,0,1,1,1,1,0 0,0,0,3,2,3,3,0,0,1,1,0,1,0 0,0,8,0,2,1,3,0,1,1,1,2,1,0 0,0,3,2,2,8,3,0,1,1,1,0,1,0 2,6,5,2,0,9,2,0,1,1,1,1,1,0 1,4,0,3,0,12,2,0,1,1,1,0,1,1 0,0,6,2,2,0,3,0,0,1,1,1,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,1 1,2,0,3,0,5,2,0,1,1,1,0,1,1 2,3,1,2,0,8,2,0,1,1,1,0,1,1 1,0,1,2,0,3,2,0,1,1,1,1,1,1 0,1,0,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,2,6,1,0,1,1,1,2,1,0 1,0,0,3,2,4,3,0,1,1,1,1,1,1 1,0,2,1,0,8,0,0,0,1,1,2,1,0 0,0,3,2,2,7,1,0,1,1,1,0,1,0 0,0,2,1,0,6,2,0,1,1,1,0,1,0 0,0,3,2,0,4,0,0,0,1,1,1,1,1 1,0,6,2,2,4,1,0,0,1,1,0,1,0 0,0,3,2,2,9,3,0,1,1,1,1,1,0 1,4,1,2,0,12,2,0,1,1,1,1,1,0 2,1,1,2,0,3,0,0,0,1,1,2,1,1 1,0,1,2,1,8,5,4,0,1,1,0,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,1 1,4,3,2,0,10,2,0,1,1,1,0,1,0 0,0,0,3,0,9,2,0,1,1,1,1,1,0 1,0,2,1,5,2,4,0,1,1,1,0,1,0 1,2,3,2,0,9,2,0,1,1,1,1,1,0 2,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,12,1,2,2,1,0,1,1,1,2,1,0 0,0,1,2,2,8,1,0,0,1,1,2,1,0 1,0,1,2,1,8,5,0,0,1,1,0,1,0 1,5,0,3,0,4,2,0,1,1,1,1,1,1 1,1,3,2,0,2,2,0,1,1,1,1,1,0 0,3,1,2,2,6,5,0,0,1,1,0,1,0 2,1,3,2,1,2,3,0,1,1,1,1,1,0 1,0,0,3,0,1,2,1,1,1,1,0,1,0 1,4,0,3,0,0,2,0,1,1,1,1,1,1 1,5,13,3,0,5,2,0,1,1,1,1,1,1 0,0,3,2,1,2,1,0,0,1,1,0,1,0 0,0,6,2,0,1,2,0,1,1,1,0,1,0 1,0,6,2,0,0,2,1,1,1,1,0,1,0 0,0,3,2,1,8,3,4,1,1,1,1,1,0 0,0,1,2,2,4,1,3,1,1,1,2,1,0 1,0,3,2,0,3,2,0,1,1,1,1,1,1 0,0,3,2,2,2,3,0,1,1,1,2,1,0 0,0,9,1,2,7,1,0,1,1,1,0,1,0 2,0,10,3,0,3,2,0,1,1,1,1,1,1 0,0,1,2,2,8,1,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,1 0,0,3,2,2,1,1,0,1,1,1,0,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,1,2,2,3,3,0,0,1,1,2,1,0 0,0,1,2,1,8,3,0,0,1,1,1,1,0 1,0,13,3,3,5,5,0,0,1,1,0,1,0 2,0,9,1,0,1,2,0,1,1,1,0,1,0 1,0,1,2,0,0,2,0,1,1,1,0,1,1 0,0,1,2,1,3,3,0,1,1,1,1,1,0 1,1,1,2,2,2,5,0,0,1,1,1,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,1 0,0,3,2,2,6,1,4,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,2,1,2,1,3,4,1,1,1,2,1,0 0,0,3,2,2,8,1,0,0,1,1,0,1,0 2,0,0,3,0,4,2,0,1,1,1,0,1,1 0,0,3,2,2,2,1,0,1,1,1,0,1,0 0,0,3,2,2,2,1,0,1,1,1,2,1,0 2,0,3,2,2,8,1,0,0,1,1,0,1,0 0,0,3,2,2,7,1,0,1,1,1,2,1,0 1,4,10,3,0,5,0,0,0,1,1,1,1,1 0,2,3,2,0,3,2,0,1,1,1,1,1,1 0,0,9,1,2,3,1,0,0,1,1,2,1,0 1,4,1,2,1,8,5,0,0,1,1,2,1,0 1,0,1,2,0,10,2,0,1,1,1,0,1,1 0,0,3,2,0,5,0,0,0,1,1,2,1,0 0,5,13,3,2,5,3,0,1,1,1,1,1,0 0,0,3,2,0,1,2,0,1,1,1,2,1,0 0,1,4,3,1,5,3,0,1,1,1,1,1,1 0,0,3,2,3,1,3,4,1,1,1,0,1,0 1,2,5,2,4,4,3,0,0,1,1,1,1,0 0,5,10,3,0,5,0,0,0,1,1,1,1,1 0,0,3,2,2,8,3,0,0,1,1,0,1,0 1,0,1,2,0,10,2,0,1,1,1,0,1,0 0,0,4,3,0,5,2,0,1,1,1,2,1,1 1,3,5,2,0,5,0,4,0,1,1,0,1,0 2,1,2,1,0,1,2,0,1,1,1,0,1,0 1,0,3,2,1,1,5,0,0,1,1,0,1,0 1,3,1,2,0,5,2,0,1,1,1,1,1,1 1,0,0,3,4,4,5,0,0,1,1,0,1,0 1,0,1,2,1,8,5,0,0,1,1,2,1,0 1,0,3,2,1,8,5,0,0,1,1,0,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 1,4,3,2,0,8,0,0,0,1,1,0,1,1 3,1,1,2,0,1,2,0,1,1,1,2,1,0 1,0,6,2,0,10,2,2,1,1,1,1,1,0 0,0,1,2,3,5,5,0,0,1,1,2,1,0 0,0,7,1,2,6,1,1,1,1,1,0,1,0 1,0,7,1,0,7,2,0,1,1,1,1,1,0 0,0,3,2,2,3,1,0,0,1,1,2,1,0 0,0,15,0,0,7,2,0,1,1,1,0,1,0 1,1,3,2,1,1,3,0,1,1,1,0,1,0 0,0,3,2,2,8,1,0,0,1,1,0,1,0 1,5,3,2,0,12,2,0,1,1,1,1,1,1 0,0,1,2,2,8,3,0,0,1,1,2,1,0 0,0,3,2,1,2,3,0,1,1,1,1,1,0 1,0,6,2,0,3,2,0,1,1,1,0,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,0 1,0,1,2,1,8,5,0,0,1,1,0,1,0 1,1,0,3,0,1,2,0,1,1,1,2,1,0 1,0,3,2,0,7,2,0,1,1,1,1,1,1 0,0,1,2,2,8,5,4,0,1,1,0,1,0 1,1,3,2,0,2,2,0,1,1,1,1,1,0 0,0,3,2,1,3,5,0,0,1,1,2,1,0 2,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,9,1,2,9,1,0,0,1,1,2,1,0 0,2,3,2,2,10,3,0,1,1,1,1,1,0 0,0,3,2,1,8,5,0,0,1,1,1,1,0 1,0,3,2,1,3,3,0,0,1,1,0,1,0 0,0,1,2,0,10,2,0,1,1,1,1,1,0 0,0,3,2,2,6,1,0,1,1,1,0,1,0 1,1,0,3,2,3,3,0,0,1,1,2,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,1,2,0,4,2,0,1,1,1,1,1,0 0,0,1,2,2,8,1,0,0,1,1,0,1,0 0,0,1,2,2,10,1,0,1,1,1,2,1,0 0,0,3,2,2,8,1,0,0,1,1,0,1,0 0,0,1,2,0,7,2,0,1,1,1,0,1,1 0,0,3,2,2,8,4,0,0,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,1 0,0,1,2,3,3,5,0,0,1,1,0,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,1 0,0,1,2,0,1,2,0,1,1,1,0,1,0 0,0,10,3,0,4,2,0,1,1,1,0,1,1 0,0,3,2,2,8,1,0,1,1,1,2,1,0 2,0,3,2,0,6,2,0,1,1,1,2,1,0 2,0,10,3,0,5,2,0,1,1,1,1,1,1 0,0,2,1,2,6,1,0,1,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 0,1,1,2,0,1,2,0,1,1,1,1,1,1 0,5,3,2,0,10,2,0,1,1,1,1,1,1 1,1,1,2,0,10,2,0,1,1,1,0,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,1 1,0,3,2,3,12,3,4,1,1,1,0,1,0 1,0,3,2,0,5,2,0,1,1,1,1,1,1 0,0,3,2,2,0,1,0,0,1,1,2,1,0 0,0,1,2,3,3,5,0,0,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,1,1,1 1,0,3,2,2,7,5,0,1,1,1,0,1,0 1,0,1,2,2,2,5,4,0,1,1,0,1,0 0,1,1,2,2,9,1,0,1,1,1,0,1,0 0,0,8,0,2,1,3,0,1,1,1,0,1,0 2,3,1,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,1,3,3,0,0,1,1,0,1,0 0,5,3,2,2,10,1,0,1,1,1,0,1,0 2,1,8,0,0,10,2,0,1,1,1,0,1,0 2,0,0,3,4,3,5,0,0,1,1,0,1,0 2,0,0,3,0,4,2,0,1,1,1,0,1,0 2,0,3,2,4,3,3,0,0,1,1,2,1,0 0,0,3,2,0,5,2,0,1,1,1,1,1,0 1,0,3,2,0,8,0,0,0,1,1,0,1,0 1,0,0,3,1,2,3,0,0,1,1,2,1,0 1,0,3,2,1,2,3,0,0,1,1,0,1,0 1,0,3,2,0,10,2,0,1,1,1,0,1,0 0,0,3,2,2,2,3,0,0,1,1,2,1,0 2,2,13,3,0,5,2,0,1,1,1,2,1,1 0,0,3,2,2,1,3,4,1,1,1,0,1,0 1,0,1,2,2,2,3,0,0,1,1,0,1,0 1,0,3,2,2,8,3,0,0,1,1,0,1,0 1,1,10,3,2,5,3,0,0,1,1,1,1,0 0,0,3,2,1,8,5,0,1,1,1,0,1,0 2,0,3,2,1,2,3,4,0,1,1,0,1,0 1,1,0,3,0,5,2,0,1,1,1,0,1,1 2,0,12,1,1,5,5,0,1,1,1,1,1,1 0,4,0,3,2,5,1,4,0,1,1,1,1,0 0,0,2,1,2,2,3,4,0,1,1,0,1,0 0,1,2,1,2,3,1,0,0,1,1,0,1,0 1,0,0,3,1,5,3,0,0,1,1,1,1,0 1,0,3,2,1,1,3,0,1,1,1,2,1,0 2,0,0,3,2,5,3,0,0,1,1,1,1,0 1,0,5,2,1,4,5,4,0,1,1,1,1,0 1,2,4,3,0,5,2,0,1,1,1,1,1,1 3,1,1,2,0,5,2,0,1,1,1,2,1,0 0,0,3,2,0,4,2,0,1,1,1,0,1,0 2,0,3,2,4,1,5,4,0,1,1,0,1,0 0,0,3,2,2,7,1,0,0,1,1,0,1,0 0,0,3,2,0,8,0,4,0,1,1,0,1,0 1,0,8,0,0,9,2,0,1,1,1,2,1,0 1,0,3,2,2,2,3,0,1,1,1,0,1,0 1,4,5,2,0,8,0,0,0,1,1,2,1,0 1,1,1,2,0,4,2,0,1,1,1,1,1,1 0,1,3,2,0,1,2,0,1,1,1,0,1,0 0,0,12,1,2,6,1,0,1,1,1,2,1,0 0,0,3,2,2,8,1,0,0,1,1,2,1,0 1,2,0,3,2,5,1,0,1,1,1,0,1,0 0,2,0,3,2,8,3,0,0,1,1,0,1,0 1,1,1,2,0,1,2,0,1,1,1,1,1,0 0,0,3,2,1,1,3,0,1,1,1,0,1,0 0,0,7,1,0,10,4,0,1,1,1,0,1,0 1,0,0,3,0,7,2,0,1,1,1,0,1,1 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,1,2,2,0,1,4,0,1,1,0,1,0 1,0,3,2,0,2,2,0,1,1,1,2,1,0 1,0,1,2,0,8,4,0,0,1,1,2,1,1 0,0,3,2,2,3,1,0,1,1,1,1,1,0 0,4,1,2,0,2,2,0,1,1,1,0,1,0 1,4,6,2,1,0,5,1,1,1,1,0,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 0,0,1,2,2,0,3,0,0,1,1,0,1,0 0,0,6,2,2,5,5,0,0,1,1,0,1,0 1,4,0,3,0,4,2,0,1,1,1,1,1,0 0,0,2,1,2,2,1,0,0,1,1,2,1,0 0,0,1,2,2,0,4,0,0,1,1,0,1,0 1,5,13,3,1,5,3,0,0,1,1,0,1,1 0,4,1,2,2,12,3,0,1,1,1,0,1,0 0,0,1,2,2,2,1,0,1,1,1,0,1,0 1,4,0,3,0,5,2,0,1,1,1,1,1,0 0,0,5,2,2,7,1,0,1,1,1,2,1,0 0,0,1,2,2,12,3,0,1,1,1,1,1,0 0,0,5,2,0,5,2,0,1,1,1,0,1,0 1,0,0,3,0,5,2,0,1,1,1,2,1,1 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,2,8,3,0,1,1,1,0,1,0 0,0,3,2,1,6,3,0,1,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,0,1,1 1,2,1,2,0,3,2,0,1,1,1,1,1,1 0,0,3,2,2,9,1,0,0,1,1,0,1,0 2,0,8,0,4,2,3,0,0,1,1,2,1,0 2,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,2,8,3,0,0,1,1,0,1,0 1,0,3,2,1,2,5,0,0,1,1,0,1,0 3,1,4,3,0,5,2,0,1,1,1,2,1,1 0,1,0,3,1,4,3,0,1,1,1,2,1,0 1,3,1,2,2,8,1,0,1,1,1,0,1,0 1,0,4,3,0,4,2,0,1,1,1,1,1,1 0,0,1,2,2,6,3,0,1,1,1,0,1,0 0,4,3,2,2,2,5,4,0,1,1,0,1,0 0,0,2,1,2,2,1,0,1,1,1,2,1,0 0,0,0,3,2,4,3,0,0,1,1,0,1,0 0,0,3,2,2,6,3,0,1,1,1,2,1,0 1,0,3,2,2,11,5,4,0,1,1,2,1,0 1,0,1,2,2,4,3,4,0,1,1,0,1,0 2,0,1,2,0,1,2,0,1,1,1,1,1,1 1,0,3,2,0,3,2,0,1,1,1,0,1,1 0,0,7,1,2,7,4,0,1,1,1,2,1,0 0,0,12,1,2,2,1,0,1,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 2,0,9,1,5,5,3,0,1,1,1,0,1,0 2,0,1,2,4,8,5,0,0,1,1,2,1,1 0,5,1,2,2,1,1,0,1,1,1,2,1,0 1,0,1,2,0,3,2,0,1,1,1,0,1,1 1,0,5,2,1,2,3,0,1,1,1,1,1,0 1,0,4,3,1,9,5,0,1,1,1,1,1,0 1,1,3,2,2,9,3,0,1,1,1,1,1,0 0,0,3,2,2,4,3,0,0,1,1,1,1,0 0,4,0,3,2,10,3,0,0,1,1,0,1,0 0,0,1,2,2,3,3,3,1,1,1,0,1,0 0,0,3,2,2,6,1,0,1,1,1,2,1,0 2,1,0,3,0,3,2,0,1,1,1,1,1,1 1,5,6,2,5,12,1,0,0,1,1,0,1,0 0,0,9,1,2,2,1,0,1,1,1,2,1,0 0,5,0,3,0,12,2,0,1,1,1,1,1,0 2,0,3,2,0,3,0,0,0,1,1,2,1,0 1,0,3,2,0,3,2,0,1,1,1,0,1,0 1,0,1,2,1,4,5,0,0,1,1,1,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,0 1,4,5,2,1,5,3,0,0,1,1,0,1,0 0,0,0,3,2,5,3,0,0,1,1,0,1,0 1,1,0,3,1,4,5,0,1,1,1,1,1,0 1,2,1,2,0,1,2,0,1,1,1,2,1,0 2,0,5,2,1,4,5,0,0,1,1,1,1,1 1,0,0,3,2,5,1,0,0,1,1,2,1,0 2,0,1,2,0,3,2,0,1,1,1,2,1,0 0,0,7,1,2,7,3,0,1,1,1,1,1,0 1,4,0,3,0,12,2,0,1,1,1,0,1,1 1,0,1,2,2,8,5,4,0,1,1,0,1,0 0,1,3,2,0,4,2,0,1,1,1,1,1,0 1,0,7,1,0,10,2,0,1,1,1,0,1,0 1,0,3,2,2,1,5,0,0,1,1,1,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,9,1,2,2,1,0,1,1,1,2,1,0 2,0,7,1,4,4,3,4,1,1,1,1,1,0 0,0,3,2,2,3,3,0,0,1,1,0,1,0 1,0,3,2,0,10,2,0,1,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,0,3,0,5,0,0,0,1,1,0,1,1 1,4,0,3,0,5,2,0,1,1,1,2,1,0 0,0,3,2,2,7,5,4,0,1,1,0,1,0 2,4,1,2,5,8,5,4,0,1,1,2,1,0 2,0,3,2,4,5,3,0,0,1,1,2,1,0 0,0,3,2,3,8,5,0,1,1,1,0,1,0 2,0,1,2,1,2,5,4,0,1,1,0,1,0 1,0,5,2,0,1,2,0,1,1,1,1,1,0 1,0,6,2,0,4,2,0,1,1,1,0,1,0 0,0,1,2,3,2,5,4,0,1,1,0,1,0 0,3,3,2,2,7,5,0,0,1,1,0,1,0 1,0,1,2,0,3,0,0,0,1,1,1,1,1 0,0,9,1,2,3,1,0,0,1,1,2,1,0 2,0,3,2,1,2,5,0,0,1,1,0,1,0 1,4,7,1,0,4,2,0,1,1,1,0,1,0 2,0,3,2,4,2,3,0,0,1,1,2,1,0 2,0,1,2,0,3,2,0,1,1,1,0,1,1 2,5,3,2,0,2,2,0,1,1,1,0,1,0 1,0,3,2,1,2,5,0,0,1,1,0,1,0 1,3,5,2,2,4,3,0,1,1,1,0,1,0 0,0,1,2,0,8,2,4,1,1,1,1,1,0 0,0,1,2,0,2,2,0,1,1,1,0,1,0 0,0,1,2,0,7,2,4,1,1,1,0,1,1 0,0,3,2,2,7,3,0,0,1,1,0,1,0 2,2,2,1,0,4,2,0,1,1,1,2,1,1 0,0,1,2,2,3,1,0,0,1,1,2,1,0 0,0,3,2,2,9,1,0,1,1,1,0,1,0 0,0,0,3,0,8,2,0,1,1,1,0,1,1 1,0,0,3,0,7,2,0,1,1,1,0,1,1 1,0,1,2,1,5,5,0,0,1,1,2,1,0 1,3,3,2,1,8,3,0,1,1,1,1,1,0 1,1,0,3,0,4,2,1,1,1,1,2,1,1 1,3,3,2,5,8,5,0,0,1,1,0,1,0 0,0,0,3,2,8,1,0,0,1,1,0,1,0 1,0,0,3,0,3,2,0,1,1,1,1,1,1 1,0,3,2,2,1,3,0,1,1,1,0,1,0 2,0,12,1,0,10,2,4,1,1,1,1,1,0 2,0,3,2,2,8,3,0,0,1,1,2,1,0 1,0,1,2,1,8,3,0,1,1,1,1,1,0 1,0,3,2,3,3,3,0,0,1,1,1,1,0 0,0,0,3,2,3,3,0,0,1,1,2,1,0 0,0,7,1,2,9,4,0,1,1,1,2,1,0 0,0,8,0,3,7,1,0,1,1,1,0,1,0 0,1,1,2,2,3,1,0,1,1,1,2,1,0 0,0,2,1,2,8,1,0,1,1,1,2,1,0 0,0,0,3,2,8,1,0,1,1,1,0,1,0 0,0,6,2,0,8,2,0,1,1,1,1,1,0 0,0,1,2,0,3,2,0,1,1,1,1,1,0 0,4,1,2,0,12,2,4,1,1,1,0,1,0 1,0,3,2,0,8,0,0,0,1,1,2,1,1 2,0,10,3,1,4,5,0,1,1,1,0,1,1 0,0,1,2,2,8,1,4,0,1,1,2,1,0 0,0,1,2,2,2,1,0,1,1,1,1,1,0 1,0,3,2,1,2,5,0,0,1,1,0,1,0 1,0,5,2,2,1,3,0,1,1,1,0,1,0 1,0,7,1,4,3,5,4,0,1,1,2,1,0 0,0,1,2,3,3,1,2,1,1,1,1,1,0 2,0,1,2,0,12,2,0,1,1,1,0,1,1 0,0,3,2,2,4,3,0,1,1,1,0,1,0 1,0,11,0,0,10,2,0,1,1,1,1,1,0 0,0,3,2,1,1,5,0,1,1,1,0,1,0 1,2,3,2,0,3,2,0,1,1,1,1,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 1,0,3,2,4,5,5,4,0,1,1,0,1,0 2,0,7,1,0,3,2,4,1,1,1,1,1,1 0,0,2,1,0,0,2,0,1,1,1,0,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 1,0,0,3,2,4,3,0,1,1,1,1,1,0 0,0,1,2,1,3,3,0,0,1,1,1,1,0 1,2,0,3,0,3,4,1,1,1,1,1,1,0 0,0,1,2,2,3,4,0,1,1,1,2,1,0 1,4,0,3,0,5,2,0,1,1,1,1,1,1 0,0,1,2,0,8,0,0,0,1,1,0,1,0 0,0,12,1,0,1,2,0,1,1,1,0,1,0 0,0,0,3,2,3,3,0,0,1,1,0,1,0 2,5,1,2,1,1,3,0,0,1,1,0,1,0 1,0,5,2,0,0,2,1,1,1,1,0,1,0 1,0,5,2,0,4,2,0,1,1,1,1,1,1 2,0,1,2,1,10,3,0,1,1,1,1,1,0 0,0,1,2,1,8,3,0,0,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,3,2,0,3,2,0,1,1,1,1,1,1 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,12,1,0,10,2,0,1,1,1,1,1,0 0,0,3,2,2,9,1,0,1,1,1,0,1,0 0,0,3,2,1,1,1,0,0,1,1,1,1,0 0,0,0,3,0,5,0,0,0,1,1,2,1,0 1,0,2,1,1,3,5,0,0,1,1,1,1,0 0,0,1,2,2,5,1,0,1,1,1,0,1,0 1,0,12,1,5,2,3,1,1,1,1,2,1,0 1,0,3,2,0,3,2,0,1,1,1,1,1,0 0,0,3,2,2,6,3,0,1,1,1,0,1,0 0,0,3,2,2,6,1,0,1,1,1,2,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,1 1,0,7,1,0,10,2,0,1,1,1,0,1,0 1,0,6,2,1,7,5,0,1,1,1,0,1,0 1,0,1,2,2,7,4,1,1,1,1,0,1,0 0,0,3,2,0,6,2,0,1,1,1,0,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,1 0,0,7,1,0,6,2,0,1,1,1,0,1,0 0,0,1,2,0,4,0,0,0,1,1,0,1,0 1,0,1,2,1,2,5,4,0,1,1,2,1,0 0,0,1,2,1,3,5,2,0,1,1,0,1,0 2,0,1,2,1,8,3,0,0,1,1,2,1,0 1,0,0,3,0,1,2,0,1,1,1,0,1,0 1,0,3,2,0,5,2,0,1,1,1,1,1,1 0,0,3,2,0,6,0,0,0,1,1,0,1,0 0,0,2,1,2,1,1,0,1,1,1,2,1,0 1,0,0,3,2,3,3,0,1,1,1,1,1,1 1,0,0,3,0,5,2,0,1,1,1,1,1,1 0,0,2,1,2,2,3,0,1,1,1,2,1,0 2,0,8,0,0,7,2,0,1,1,1,0,1,0 2,0,10,3,0,0,2,0,1,1,1,0,1,0 1,0,5,2,0,3,2,0,1,1,1,0,1,0 0,0,7,1,0,1,2,3,1,1,1,0,1,0 0,0,3,2,0,10,2,0,1,1,1,0,1,0 1,0,1,2,0,3,2,2,1,1,1,0,1,0 0,0,7,1,2,4,4,0,0,1,1,0,1,0 0,0,1,2,2,9,4,4,1,1,1,1,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,0 1,1,0,3,0,5,2,0,1,1,1,0,1,1 2,0,3,2,4,2,5,0,0,1,1,2,1,0 0,0,4,3,0,5,2,0,1,1,1,1,1,1 0,0,0,3,0,1,2,0,1,1,1,0,1,0 0,0,3,2,0,3,2,0,1,1,1,1,1,1 0,0,9,1,2,3,1,0,0,1,1,2,1,0 1,4,10,3,0,5,2,0,1,1,1,1,1,0 1,0,0,3,2,4,3,0,1,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,1,2,3,2,5,0,0,1,1,2,1,0 1,0,3,2,1,5,5,2,0,1,1,0,1,0 0,0,5,2,0,8,0,4,0,1,1,2,1,0 1,0,5,2,0,5,2,0,1,1,1,0,1,0 0,0,3,2,2,3,1,0,1,1,1,2,1,0 1,0,0,3,2,5,3,0,1,1,1,0,1,0 0,0,3,2,5,3,3,0,1,1,1,2,1,0 0,0,1,2,0,1,2,0,1,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,1 0,4,6,2,2,12,3,0,1,1,1,1,1,1 0,0,0,3,2,5,1,0,0,1,1,0,1,0 0,0,1,2,0,7,2,0,1,1,1,2,1,0 1,2,1,2,0,1,2,0,1,1,1,1,1,1 0,0,1,2,0,4,2,0,1,1,1,1,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 1,4,1,2,0,10,2,0,1,1,1,0,1,0 1,0,6,2,0,5,2,0,1,1,1,1,1,1 0,0,3,2,1,1,3,0,1,1,1,0,1,0 2,3,1,2,0,1,2,0,1,1,1,1,1,0 1,0,5,2,0,3,2,0,1,1,1,1,1,1 2,0,3,2,3,1,5,2,0,1,1,0,1,0 2,0,3,2,4,8,5,0,0,1,1,2,1,0 1,3,3,2,0,0,2,0,1,1,1,0,1,1 1,0,3,2,1,5,5,0,0,1,1,0,1,0 1,0,7,1,0,6,2,0,1,1,1,0,1,0 0,0,1,2,3,0,5,0,0,1,1,1,1,0 0,0,3,2,2,8,3,0,1,1,1,0,1,0 3,0,12,1,1,2,3,0,0,1,1,2,1,0 1,0,0,3,0,8,2,0,1,1,1,0,1,1 0,0,6,2,1,3,3,0,1,1,1,0,1,0 0,1,3,2,1,1,3,0,1,1,1,1,1,0 1,0,1,2,0,3,2,0,1,1,1,0,1,1 1,0,1,2,2,3,3,0,1,1,1,1,1,0 0,1,12,1,0,1,2,0,1,1,1,2,1,1 1,1,3,2,0,4,2,0,1,1,1,1,1,0 1,0,3,2,1,1,3,0,0,1,1,0,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,1 0,3,0,3,0,4,2,0,1,1,1,0,1,1 1,0,5,2,0,12,2,4,1,1,1,1,1,0 0,0,3,2,2,4,1,0,1,1,1,1,1,0 1,4,10,3,1,4,3,0,0,1,1,1,1,0 0,5,0,3,2,5,3,0,0,1,1,0,1,0 0,0,1,2,0,1,2,0,1,1,1,1,1,0 0,0,1,2,2,6,3,4,1,1,1,2,1,0 0,0,0,3,2,5,3,0,0,1,1,2,1,0 0,0,3,2,2,2,1,4,0,1,1,2,1,0 2,4,0,3,1,4,3,0,1,1,1,0,1,0 2,4,10,3,1,5,3,0,0,1,1,0,1,0 1,0,15,0,3,2,5,0,0,1,1,0,1,0 1,2,1,2,1,3,5,1,1,1,1,1,1,0 1,0,9,1,0,10,2,0,1,1,1,0,1,0 1,4,5,2,2,10,3,0,1,1,1,1,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,1 1,4,3,2,0,7,2,0,1,1,1,0,1,0 1,5,3,2,0,5,2,0,1,1,1,0,1,0 1,0,10,3,0,5,2,0,1,1,1,0,1,1 0,0,3,2,1,4,5,0,0,1,1,1,1,0 1,0,3,2,0,5,2,0,1,1,1,0,1,1 1,0,12,1,3,2,1,4,0,1,1,2,1,0 0,0,15,0,2,2,1,0,0,1,1,2,1,0 0,0,2,1,0,7,2,0,1,1,1,0,1,0 0,4,3,2,2,5,1,4,0,1,1,0,1,0 0,0,1,2,3,6,3,4,1,1,1,1,1,0 0,0,3,2,2,7,3,0,1,1,1,1,1,0 2,5,0,3,0,8,2,1,1,1,1,0,1,0 1,2,6,2,0,3,2,0,1,1,1,0,1,1 1,0,0,3,0,3,2,0,1,1,1,1,1,1 1,0,10,3,2,4,3,0,0,1,1,0,1,1 0,0,1,2,2,3,1,0,0,1,1,2,1,0 0,5,1,2,0,8,0,4,0,1,1,0,1,0 2,5,3,2,4,8,5,2,0,1,1,0,1,0 2,0,3,2,0,8,2,0,1,1,1,2,1,0 0,0,3,2,2,6,1,0,1,1,1,0,1,0 0,0,1,2,2,8,5,0,0,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,1 0,0,3,2,6,10,2,0,1,1,1,1,1,0 1,1,7,1,1,2,3,0,0,1,1,2,1,0 1,4,0,3,1,5,5,0,0,1,1,2,1,0 0,0,1,2,2,4,3,4,0,1,1,0,1,0 1,0,13,3,0,5,0,0,0,1,1,2,1,1 0,0,1,2,1,6,3,0,1,1,1,2,1,0 1,0,0,3,1,3,3,4,1,1,1,0,1,1 0,0,1,2,2,3,1,0,0,1,1,0,1,0 1,0,6,2,0,0,2,0,1,1,1,2,1,1 0,5,3,2,2,12,4,1,1,1,1,0,1,0 0,0,6,2,0,1,2,0,1,1,1,1,1,1 0,0,3,2,0,2,2,0,1,1,1,0,1,0 1,4,3,2,0,12,2,0,1,1,1,0,1,0 1,0,7,1,1,6,3,0,1,1,1,1,1,0 1,0,8,0,0,2,2,0,1,1,1,1,1,0 1,0,3,2,0,9,2,0,1,1,1,1,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,1 1,0,3,2,0,5,2,0,1,1,1,0,1,0 0,0,8,0,2,9,3,0,1,1,1,0,1,1 0,0,10,3,2,4,3,0,1,1,1,0,1,1 1,1,1,2,0,5,0,0,0,1,1,0,1,1 0,4,4,3,0,5,2,0,1,1,1,0,1,0 0,0,9,1,2,5,3,1,0,1,1,2,1,0 0,0,6,2,0,1,2,0,1,1,1,1,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,0 1,1,0,3,0,8,2,0,1,1,1,0,1,0 0,0,1,2,2,8,1,0,0,1,1,2,1,0 2,0,3,2,1,1,5,4,1,1,1,1,1,1 0,0,8,0,3,10,3,0,1,1,1,2,1,0 1,0,3,2,0,3,2,0,1,1,1,1,1,1 3,0,3,2,0,3,2,0,1,1,1,2,1,0 0,0,2,1,2,2,1,0,1,1,1,2,1,0 0,0,1,2,2,3,1,0,1,1,1,2,1,0 0,0,5,2,2,0,3,0,1,1,1,2,1,0 0,0,0,3,0,3,2,0,1,1,1,1,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 0,0,1,2,0,3,0,2,0,1,1,0,1,0 0,0,1,2,2,2,1,0,1,1,1,2,1,0 1,0,1,2,2,2,3,0,1,1,1,0,1,0 0,0,12,1,0,1,2,0,1,1,1,2,1,0 1,1,1,2,0,1,2,0,1,1,1,0,1,1 2,0,1,2,1,2,5,0,0,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 1,2,3,2,0,4,2,0,1,1,1,1,1,0 0,4,3,2,0,12,2,0,1,1,1,0,1,0 0,0,5,2,2,3,3,0,0,1,1,0,1,0 1,0,13,3,2,5,3,0,1,1,1,2,1,1 0,0,8,0,2,3,1,0,1,1,1,0,1,0 0,0,3,2,0,8,0,0,0,1,1,0,1,1 0,0,14,0,2,9,4,4,1,1,1,0,1,0 0,0,3,2,2,4,3,0,1,1,1,0,1,0 0,0,3,2,2,7,1,0,1,1,1,2,1,0 0,0,0,3,2,8,3,0,0,1,1,2,1,0 0,0,1,2,2,4,3,4,0,1,1,1,1,0 1,3,1,2,0,6,2,0,1,1,1,1,1,0 2,5,8,0,0,10,2,0,1,1,1,0,1,0 1,0,1,2,1,4,3,0,0,1,1,2,1,0 1,0,1,2,0,1,2,0,1,1,1,1,1,1 1,0,1,2,0,7,2,0,1,1,1,0,1,0 0,0,0,3,2,5,1,1,0,1,1,0,1,0 1,0,1,2,2,1,3,0,1,1,1,0,1,0 0,0,0,3,2,5,3,0,1,1,1,1,1,0 1,0,0,3,0,5,2,2,1,1,1,0,1,1 1,0,0,3,5,4,5,0,1,1,1,0,1,0 1,0,6,2,0,1,2,0,1,1,1,0,1,0 0,5,0,3,2,5,3,0,0,1,1,0,1,0 1,0,1,2,2,2,3,0,1,1,1,0,1,0 1,0,2,1,5,10,1,0,1,1,1,2,1,0 1,0,1,2,0,7,2,0,1,1,1,0,1,0 1,0,6,2,2,9,3,0,1,1,1,1,1,0 0,0,9,1,2,3,1,0,0,1,1,2,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,0 0,0,3,2,2,10,1,4,1,1,1,2,1,0 1,5,3,2,1,8,5,0,0,1,1,2,1,0 0,0,1,2,2,8,3,0,0,1,1,0,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,1 0,0,10,3,2,5,3,4,1,1,1,1,1,0 1,1,4,3,1,5,5,0,1,1,1,1,1,1 1,3,1,2,0,8,2,0,1,1,1,0,1,0 0,0,0,3,2,5,3,0,0,1,1,0,1,0 0,0,5,2,2,8,1,0,0,1,1,0,1,0 1,0,10,3,0,5,2,0,1,1,1,1,1,1 1,4,3,2,5,8,5,4,0,1,1,0,1,0 0,0,3,2,2,10,1,0,1,1,1,0,1,0 3,0,12,1,0,8,2,0,1,1,1,2,1,0 0,0,3,2,0,10,4,0,1,1,1,0,1,0 1,4,3,2,1,8,5,0,0,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,1,1,1 0,2,0,3,2,9,3,0,1,1,1,0,1,0 0,4,5,2,1,4,3,4,0,1,1,0,1,0 1,0,3,2,1,4,3,0,0,1,1,2,1,1 0,0,15,0,2,2,3,1,0,1,1,0,1,0 0,0,1,2,2,8,1,0,0,1,1,2,1,0 1,0,3,2,0,6,2,0,1,1,1,0,1,0 0,0,0,3,3,5,3,0,1,1,1,2,1,0 0,2,1,2,2,2,1,1,0,1,1,2,1,0 0,0,1,2,2,10,3,0,1,1,1,0,1,0 1,0,3,2,1,0,1,0,1,1,1,1,1,0 0,0,3,2,2,9,1,0,1,1,1,0,1,0 1,0,9,1,0,8,0,4,0,1,1,0,1,1 0,0,0,3,2,8,3,0,0,1,1,1,1,0 0,1,2,1,2,1,1,0,1,1,1,0,1,0 0,0,3,2,2,10,5,0,1,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,0 0,0,13,3,0,5,2,0,1,1,1,1,1,1 0,0,0,3,2,1,3,0,1,1,1,1,1,0 0,5,3,2,0,12,2,0,1,1,1,0,1,0 2,1,8,0,0,7,2,0,1,1,1,1,1,0 0,0,1,2,2,3,3,0,0,1,1,2,1,0 1,0,6,2,4,8,3,1,0,1,1,0,1,0 1,0,1,2,0,4,0,0,0,1,1,2,1,1 1,0,2,1,0,1,2,0,1,1,1,0,1,1 1,4,10,3,2,5,3,0,0,1,1,0,1,0 0,0,3,2,2,10,5,4,1,1,1,0,1,0 1,0,1,2,1,3,1,0,1,1,1,1,1,0 1,0,3,2,5,6,5,0,0,1,1,0,1,0 1,0,3,2,0,4,0,0,0,1,1,0,1,1 2,0,0,3,4,4,5,0,0,1,1,0,1,0 1,2,3,2,0,2,2,4,1,1,1,1,1,0 0,0,0,3,2,3,1,1,1,1,1,1,1,0 1,2,3,2,0,4,2,0,1,1,1,0,1,1 1,0,0,3,1,3,3,0,1,1,1,0,1,1 1,2,13,3,0,5,2,0,1,1,1,1,1,1 0,0,5,2,0,1,2,0,1,1,1,1,1,0 1,0,5,2,2,0,3,4,1,1,1,0,1,0 1,0,0,3,1,8,5,0,0,1,1,0,1,0 0,0,3,2,2,8,1,0,0,1,1,0,1,0 0,0,1,2,0,1,2,0,1,1,1,1,1,0 0,0,5,2,2,6,1,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,1 1,4,0,3,0,5,0,0,0,1,1,2,1,0 2,0,8,0,0,6,2,0,1,1,1,0,1,0 1,4,10,3,0,5,2,0,1,1,1,0,1,1 0,1,8,0,2,6,5,4,1,1,1,2,1,0 1,0,1,2,0,8,2,0,1,1,1,0,1,0 1,4,0,3,0,10,2,4,1,1,1,0,1,0 2,0,3,2,0,2,2,0,1,1,1,2,1,0 0,0,12,1,0,1,2,0,1,1,1,0,1,1 1,4,0,3,2,5,3,0,1,1,1,1,1,1 2,0,14,0,0,6,2,0,1,1,1,1,1,0 2,0,1,2,0,4,2,0,1,1,1,0,1,1 1,0,3,2,0,0,2,0,1,1,1,0,1,0 0,0,3,2,0,7,2,4,1,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,1,1,0 1,0,4,3,2,5,3,0,0,1,1,1,1,1 1,5,10,3,0,4,2,0,1,1,1,0,1,1 0,0,3,2,3,2,5,0,0,1,1,0,1,0 1,1,4,3,1,5,3,0,1,1,1,1,1,1 0,0,6,2,0,7,2,0,1,1,1,0,1,0 1,1,6,2,2,2,1,0,0,1,1,0,1,0 1,0,1,2,1,4,3,0,1,1,1,0,1,0 0,0,10,3,2,4,1,0,1,1,1,0,1,0 2,3,2,1,4,8,3,0,0,1,1,2,1,0 1,1,6,2,1,2,5,0,0,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 2,0,1,2,2,6,1,4,1,1,1,0,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,1 1,0,0,3,1,4,3,0,1,1,1,1,1,0 1,3,0,3,4,8,3,0,0,1,1,0,1,0 2,3,0,3,0,4,2,0,1,1,1,0,1,1 1,0,12,1,3,8,5,4,0,1,1,0,1,0 0,0,9,1,2,5,1,0,1,1,1,2,1,0 1,0,1,2,1,4,3,0,0,1,1,1,1,0 1,0,1,2,1,8,1,0,0,1,1,0,1,0 0,0,4,3,2,5,5,0,1,1,1,1,1,1 0,0,0,3,0,5,2,0,1,1,1,0,1,1 1,0,1,2,1,7,3,0,1,1,1,0,1,0 2,1,4,3,0,5,2,0,1,1,1,2,1,1 1,0,3,2,1,10,3,0,1,1,1,1,1,1 0,0,14,0,2,6,3,0,1,1,1,0,1,0 0,0,1,2,0,4,2,0,1,1,1,0,1,0 2,0,6,2,4,4,5,1,0,1,1,0,1,1 0,0,9,1,0,3,2,0,1,1,1,0,1,1 0,0,3,2,2,1,1,4,1,1,1,2,1,0 1,0,3,2,0,4,0,0,0,1,1,0,1,0 0,0,3,2,0,2,0,0,0,1,1,0,1,1 0,0,1,2,2,2,1,0,1,1,1,2,1,0 1,0,3,2,3,2,3,4,0,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,1,1,1 0,0,3,2,2,2,3,0,1,1,1,1,1,0 0,0,3,2,0,10,2,0,1,1,1,1,1,0 1,0,10,3,2,5,3,0,0,1,1,2,1,0 1,1,1,2,0,9,2,0,1,1,1,1,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,7,1,3,1,5,4,1,1,1,0,1,0 0,0,12,1,2,2,1,4,1,1,1,2,1,0 1,2,10,3,0,3,2,0,1,1,1,1,1,1 2,3,3,2,0,8,2,0,1,1,1,0,1,1 2,0,3,2,0,3,2,0,1,1,1,1,1,0 2,0,1,2,1,8,3,0,0,1,1,1,1,0 0,0,1,2,2,3,5,0,1,1,1,1,1,0 0,0,0,3,2,8,1,0,0,1,1,0,1,0 1,4,1,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,1,7,5,0,0,1,1,0,1,0 0,0,3,2,2,8,1,0,0,1,1,2,1,0 1,0,3,2,0,6,2,0,1,1,1,1,1,0 1,0,12,1,2,6,3,0,1,1,1,0,1,0 0,0,14,0,2,9,1,0,1,1,1,2,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,0 0,0,3,2,1,7,3,0,1,1,1,0,1,0 0,2,0,3,2,4,1,1,1,1,1,2,1,0 2,0,14,0,0,1,2,0,1,1,1,1,1,0 2,4,3,2,4,4,3,0,1,1,1,0,1,0 0,4,0,3,2,5,3,0,0,1,1,0,1,0 2,0,10,3,2,5,3,0,1,1,1,1,1,0 1,3,0,3,1,5,3,0,1,1,1,0,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,1 0,0,1,2,2,3,1,0,0,1,1,2,1,0 0,0,0,3,0,4,2,0,1,1,1,0,1,0 0,5,13,3,0,5,2,0,1,1,1,1,1,1 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,2,1,1,0,1,1,1,0,1,0 0,0,1,2,2,3,4,0,1,1,1,2,1,0 1,1,3,2,0,3,2,0,1,1,1,1,1,1 1,0,12,1,2,6,3,0,0,1,1,2,1,0 1,0,8,0,0,7,2,3,1,1,1,0,1,0 0,0,1,2,2,8,3,0,0,1,1,1,1,0 2,0,3,2,0,1,2,0,1,1,1,1,1,0 1,1,1,2,0,3,2,0,1,1,1,1,1,1 0,4,3,2,0,12,2,4,1,1,1,2,1,0 0,0,1,2,0,1,2,0,1,1,1,2,1,0 2,0,3,2,0,2,0,0,0,1,1,0,1,1 1,2,0,3,2,1,3,0,0,1,1,2,1,0 0,0,3,2,2,10,3,0,0,1,1,1,1,0 0,0,3,2,2,1,1,0,1,1,1,0,1,0 0,0,1,2,2,3,1,1,1,1,1,2,1,0 1,4,3,2,0,2,4,0,1,1,1,0,1,0 2,0,1,2,0,4,2,0,1,1,1,1,1,1 1,5,10,3,1,4,3,0,1,1,1,1,1,0 3,4,3,2,4,2,3,0,0,1,1,2,1,0 1,0,0,3,0,7,2,0,1,1,1,0,1,1 1,4,10,3,3,5,5,0,0,1,1,1,1,0 1,4,6,2,2,12,3,4,0,1,1,1,1,1 0,0,2,1,2,1,1,0,1,1,1,2,1,0 1,0,6,2,1,5,5,0,0,1,1,1,1,0 0,0,3,2,6,3,2,0,1,1,1,1,1,0 0,0,1,2,1,1,1,0,1,1,1,0,1,0 0,0,3,2,2,10,1,0,0,1,1,2,1,0 0,0,0,3,2,2,3,0,1,1,1,0,1,0 0,0,6,2,2,0,1,0,0,1,1,2,1,0 0,1,10,3,2,5,3,0,1,1,1,1,1,0 2,4,10,3,1,2,5,4,0,1,1,0,1,0 1,0,2,1,1,3,4,0,0,1,1,0,1,0 1,0,5,2,2,0,3,4,1,1,1,0,1,1 2,0,1,2,0,4,2,0,1,1,1,1,1,0 0,4,1,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,2,2,4,0,0,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,2,1,1 1,4,5,2,1,8,3,0,0,1,1,2,1,0 1,1,1,2,1,3,3,0,0,1,1,1,1,0 0,5,1,2,2,2,3,0,1,1,1,2,1,0 1,0,2,1,0,10,2,4,1,1,1,0,1,0 2,0,3,2,0,10,2,0,1,1,1,1,1,0 2,0,1,2,1,2,3,0,0,1,1,0,1,0 0,0,3,2,2,1,4,0,1,1,1,0,1,0 1,0,7,1,1,2,4,0,0,1,1,2,1,0 1,0,1,2,0,8,2,0,1,1,1,0,1,0 0,0,3,2,2,2,1,0,1,1,1,2,1,0 1,4,2,1,0,2,0,0,0,1,1,2,1,0 1,0,3,2,0,2,0,0,0,1,1,2,1,1 1,0,3,2,1,8,3,0,0,1,1,0,1,0 0,0,6,2,0,1,2,0,1,1,1,0,1,0 1,1,0,3,0,3,2,0,1,1,1,0,1,1 1,0,3,2,1,10,3,0,1,1,1,0,1,0 1,0,3,2,4,1,5,0,1,1,1,0,1,1 1,0,3,2,1,6,3,0,1,1,1,0,1,0 1,1,6,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 2,0,6,2,2,1,3,1,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,1 0,0,0,3,0,0,2,1,1,1,1,0,1,1 1,1,1,2,0,4,2,0,1,1,1,0,1,1 1,0,5,2,4,0,5,0,1,1,1,0,1,1 2,4,10,3,1,5,3,0,0,1,1,0,1,0 0,0,3,2,2,9,3,0,1,1,1,2,1,0 1,0,3,2,0,10,2,0,1,1,1,0,1,1 1,0,3,2,1,8,3,0,0,1,1,0,1,0 1,4,0,3,0,5,2,0,1,1,1,0,1,0 0,0,0,3,2,4,3,0,1,1,1,1,1,0 2,0,1,2,0,3,2,0,1,1,1,0,1,1 0,0,3,2,0,8,2,0,1,1,1,0,1,0 1,0,0,3,0,1,2,0,1,1,1,0,1,1 1,2,13,3,0,5,2,0,1,1,1,0,1,1 2,0,10,3,0,4,2,0,1,1,1,1,1,1 0,5,3,2,0,1,2,0,1,1,1,1,1,1 1,0,3,2,0,1,2,4,1,1,1,0,1,0 1,4,3,2,1,8,3,0,0,1,1,1,1,0 1,0,3,2,1,8,3,0,0,1,1,0,1,0 2,2,1,2,0,4,2,0,1,1,1,0,1,0 2,0,3,2,0,4,2,0,1,1,1,0,1,0 0,0,3,2,2,2,5,4,0,1,1,0,1,0 0,0,5,2,2,0,3,0,0,1,1,0,1,0 0,0,1,2,2,6,3,0,1,1,1,2,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,12,1,2,6,3,0,1,1,1,0,1,0 0,0,1,2,3,8,5,4,0,1,1,0,1,0 1,0,3,2,1,2,3,0,1,1,1,0,1,0 0,0,12,1,2,2,1,0,1,1,1,2,1,0 2,4,12,1,0,8,2,0,1,1,1,0,1,0 0,0,1,2,0,8,2,0,1,1,1,0,1,0 2,0,13,3,0,4,2,0,1,1,1,1,1,1 1,0,7,1,0,6,2,0,1,1,1,1,1,0 0,0,3,2,1,1,3,2,1,1,1,1,1,1 1,0,0,3,0,5,2,0,1,1,1,0,1,0 1,0,1,2,0,4,2,0,1,1,1,1,1,0 1,0,3,2,2,4,3,1,1,1,1,1,1,0 0,0,1,2,2,6,3,0,1,1,1,0,1,0 2,2,0,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,2,1,1,1,1,1,1,0,1,0 0,0,12,1,0,7,2,0,1,1,1,0,1,0 0,0,1,2,2,6,3,4,1,1,1,1,1,0 0,1,0,3,0,3,4,0,1,1,1,1,1,0 0,0,5,2,0,4,2,0,1,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,1,1,1 1,0,3,2,1,2,5,0,0,1,1,2,1,0 0,1,3,2,2,2,1,0,1,1,1,1,1,0 0,0,5,2,2,6,1,0,1,1,1,2,1,0 1,0,3,2,3,7,5,0,1,1,1,0,1,0 2,0,3,2,1,1,3,0,1,1,1,2,1,1 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,3,2,4,7,3,0,0,1,1,0,1,0 0,0,3,2,0,3,2,0,1,1,1,0,1,0 2,2,1,2,0,4,2,0,1,1,1,2,1,1 1,0,0,3,0,3,2,0,1,1,1,1,1,1 0,1,3,2,1,1,5,0,1,1,1,0,1,0 0,5,0,3,2,4,3,0,1,1,1,0,1,0 0,0,3,2,2,2,1,0,1,1,1,0,1,0 0,0,1,2,2,2,3,0,1,1,1,2,1,0 0,0,12,1,0,1,2,0,1,1,1,0,1,0 0,4,1,2,0,2,4,0,1,1,1,0,1,0 0,0,3,2,2,2,5,4,0,1,1,2,1,0 0,0,3,2,2,3,1,0,0,1,1,2,1,0 2,0,1,2,1,5,5,0,0,1,1,0,1,0 0,0,3,2,1,7,3,0,1,1,1,0,1,0 0,0,5,2,2,2,3,0,0,1,1,2,1,0 0,0,7,1,0,2,2,0,1,1,1,0,1,0 2,5,1,2,0,9,2,0,1,1,1,2,1,0 0,0,5,2,2,8,5,0,0,1,1,2,1,0 1,1,3,2,0,4,2,0,1,1,1,2,1,0 0,4,3,2,0,10,2,0,1,1,1,1,1,0 0,6,1,2,0,9,1,0,1,1,1,1,1,0 1,5,13,3,0,5,2,0,1,1,1,0,1,1 0,0,7,1,2,2,1,4,0,1,1,0,1,0 1,0,10,3,0,0,2,0,1,1,1,0,1,1 0,0,5,2,0,4,0,0,0,1,1,0,1,0 0,0,1,2,2,3,1,0,1,1,1,2,1,0 0,0,1,2,1,3,3,0,1,1,1,2,1,0 0,0,1,2,0,1,2,0,1,1,1,0,1,0 2,0,3,2,0,5,2,0,1,1,1,0,1,1 1,0,14,0,0,7,2,0,1,1,1,0,1,0 0,0,1,2,1,8,5,0,0,1,1,0,1,0 0,0,1,2,2,10,1,0,1,1,1,0,1,0 0,0,3,2,2,4,3,0,1,1,1,1,1,0 2,0,1,2,0,8,2,4,1,1,1,2,1,0 0,0,1,2,2,5,1,0,1,1,1,2,1,0 2,0,12,1,0,10,2,4,1,1,1,0,1,0 0,0,12,1,2,1,3,0,1,1,1,2,1,0 1,0,1,2,2,8,3,0,1,1,1,1,1,0 1,5,10,3,1,12,3,0,1,1,1,1,1,0 0,0,0,3,2,4,1,0,1,1,1,0,1,0 0,0,0,3,2,5,3,0,0,1,1,0,1,0 1,0,6,2,1,3,5,0,0,1,1,0,1,0 2,0,1,2,0,5,2,0,1,1,1,0,1,1 2,0,12,1,0,1,2,0,1,1,1,0,1,1 2,2,0,3,0,3,2,4,1,1,1,0,1,0 1,0,1,2,3,1,3,0,1,1,1,1,1,0 0,2,3,2,0,2,2,0,1,1,1,0,1,0 0,0,5,2,0,8,0,0,0,1,1,0,1,0 1,0,3,2,0,8,2,4,1,1,1,0,1,1 0,4,3,2,0,2,2,0,1,1,1,0,1,0 1,1,1,2,0,2,2,0,1,1,1,1,1,0 0,0,1,2,2,3,3,0,1,1,1,2,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,5,2,0,8,2,0,1,1,1,0,1,0 0,0,3,2,2,4,3,0,1,1,1,2,1,0 1,0,10,3,0,5,0,0,0,1,1,2,1,1 0,0,12,1,2,3,1,0,0,1,1,2,1,0 0,4,3,2,2,9,1,0,1,1,1,0,1,0 0,0,3,2,2,2,4,4,0,1,1,0,1,0 2,0,14,0,0,7,2,0,1,1,1,0,1,0 1,0,2,1,0,5,2,0,1,1,1,1,1,0 1,0,3,2,3,2,3,0,0,1,1,0,1,0 0,0,11,0,0,1,2,0,1,1,1,0,1,0 1,0,6,2,0,4,2,0,1,1,1,1,1,1 1,0,1,2,1,7,1,0,1,1,1,0,1,0 2,0,5,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,2,3,3,0,0,1,1,0,1,0 1,4,10,3,0,5,2,0,1,1,1,1,1,1 1,0,0,3,0,3,2,0,1,1,1,1,1,1 1,5,1,2,1,4,5,0,1,1,1,0,1,0 0,5,0,3,2,2,3,0,0,1,1,1,1,0 1,1,0,3,0,4,2,0,1,1,1,0,1,0 2,0,3,2,0,1,2,0,1,1,1,1,1,0 0,0,3,2,1,7,3,0,1,1,1,0,1,0 2,4,6,2,0,2,2,0,1,1,1,0,1,0 0,0,3,2,2,3,1,1,1,1,1,0,1,0 1,0,3,2,1,4,3,0,0,1,1,1,1,0 1,0,3,2,1,8,3,0,0,1,1,0,1,0 0,0,9,1,2,8,3,0,0,1,1,0,1,0 0,5,1,2,5,8,5,1,0,1,1,2,1,0 1,5,0,3,1,8,3,0,1,1,1,0,1,0 0,0,3,2,2,11,3,0,0,1,1,1,1,0 2,1,14,0,0,2,2,0,1,1,1,2,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,2,1,2,2,4,0,1,1,1,2,1,0 0,5,0,3,2,5,3,0,0,1,1,0,1,0 2,3,0,3,2,5,3,0,1,1,1,1,1,0 1,1,3,2,0,4,2,0,1,1,1,1,1,1 0,0,0,3,2,3,3,0,1,1,1,0,1,1 1,0,8,0,0,1,2,1,1,1,1,0,1,0 1,0,1,2,3,10,5,0,1,1,1,1,1,1 1,0,3,2,3,8,3,0,0,1,1,0,1,0 1,0,0,3,0,3,2,0,1,1,1,1,1,1 1,0,1,2,2,8,3,4,0,1,1,0,1,0 0,0,0,3,2,4,1,4,0,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,1,1,0 1,0,3,2,5,4,5,0,0,1,1,2,1,0 0,0,1,2,0,1,2,0,1,1,1,0,1,1 0,4,0,3,2,5,4,0,0,1,1,1,1,0 1,0,12,1,0,6,2,0,1,1,1,0,1,0 0,5,1,2,2,0,1,0,1,1,1,2,1,0 1,0,7,1,3,2,3,4,0,1,1,2,1,0 0,0,0,3,2,5,3,0,1,1,1,1,1,0 0,5,0,3,2,0,3,0,1,1,1,2,1,0 0,0,2,1,2,7,5,0,0,1,1,0,1,0 1,2,0,3,0,3,2,0,1,1,1,1,1,1 0,0,3,2,0,1,2,0,1,1,1,2,1,0 2,1,2,1,0,4,2,0,1,1,1,2,1,0 0,0,8,0,3,3,5,0,0,1,1,2,1,0 0,3,1,2,2,1,3,0,1,1,1,0,1,0 1,4,0,3,1,8,3,0,0,1,1,0,1,0 1,4,1,2,2,12,3,0,1,1,1,0,1,1 1,0,3,2,2,4,3,0,1,1,1,1,1,0 0,0,1,2,1,2,4,4,1,1,1,2,1,0 1,0,5,2,0,5,2,0,1,1,1,1,1,1 2,1,8,0,0,10,2,0,1,1,1,2,1,0 1,1,0,3,0,4,2,0,1,1,1,1,1,1 2,0,3,2,4,2,5,0,0,1,1,2,1,0 1,0,0,3,0,5,0,0,0,1,1,0,1,0 0,0,1,2,2,8,1,0,0,1,1,0,1,0 2,1,1,2,0,10,2,0,1,1,1,1,1,1 1,2,4,3,0,5,2,0,1,1,1,2,1,1 2,0,2,1,0,8,2,0,1,1,1,0,1,0 1,0,1,2,3,3,3,0,1,1,1,1,1,1 2,0,1,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,2,2,1,0,1,1,1,2,1,0 1,0,1,2,1,8,3,4,0,1,1,0,1,0 1,4,10,3,1,5,5,0,0,1,1,1,1,0 1,3,0,3,0,4,2,0,1,1,1,1,1,1 1,4,5,2,0,4,0,0,0,1,1,1,1,1 0,0,0,3,0,5,2,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 2,1,3,2,0,3,2,0,1,1,1,0,1,1 1,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,1 0,1,1,2,2,1,3,0,1,1,1,0,1,0 1,0,3,2,1,0,3,0,1,1,1,1,1,1 1,2,1,2,4,3,5,0,0,1,1,0,1,0 0,0,7,1,0,12,2,0,1,1,1,0,1,0 2,0,3,2,3,2,3,0,0,1,1,2,1,0 1,0,0,3,0,5,2,0,1,1,1,0,1,1 2,2,4,3,0,5,2,0,1,1,1,0,1,1 1,0,0,3,2,4,3,0,1,1,1,0,1,1 2,0,3,2,1,8,5,0,0,1,1,2,1,0 0,2,0,3,0,4,2,0,1,1,1,1,1,0 0,0,12,1,2,6,1,0,1,1,1,2,1,0 1,0,3,2,0,2,2,0,1,1,1,0,1,0 1,3,1,2,0,0,2,0,1,1,1,0,1,1 1,0,5,2,0,4,2,0,1,1,1,1,1,1 0,0,1,2,0,4,0,0,0,1,1,0,1,0 0,5,3,2,1,2,3,0,0,1,1,2,1,0 0,0,0,3,2,4,1,0,0,1,1,0,1,0 0,0,0,3,2,5,1,0,0,1,1,0,1,0 1,0,10,3,0,5,2,3,1,1,1,0,1,1 0,0,9,1,2,6,1,2,1,1,1,0,1,0 0,1,3,2,0,1,2,0,1,1,1,1,1,0 1,0,0,3,3,4,5,4,0,1,1,0,1,0 0,0,3,2,2,5,1,0,1,1,1,1,1,0 0,0,3,2,0,8,0,0,0,1,1,0,1,1 1,0,15,0,2,6,3,0,1,1,1,2,1,0 1,0,6,2,2,3,3,0,0,1,1,2,1,0 0,0,0,3,1,8,3,0,0,1,1,1,1,0 1,0,1,2,3,5,5,0,0,1,1,0,1,0 0,0,9,1,2,7,3,0,1,1,1,1,1,0 1,4,0,3,0,5,0,0,0,1,1,1,1,1 0,0,0,3,2,2,3,0,0,1,1,0,1,0 1,1,1,2,4,1,3,4,1,1,1,2,1,0 1,2,0,3,0,3,2,0,1,1,1,1,1,1 1,4,10,3,2,5,3,0,1,1,1,2,1,1 2,0,3,2,0,12,2,4,1,1,1,0,1,0 1,4,10,3,1,5,3,4,1,1,1,0,1,0 1,0,1,2,1,3,5,0,1,1,1,1,1,0 0,0,3,2,0,1,2,0,1,1,1,2,1,0 1,0,1,2,0,7,2,0,1,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,1,1,0 2,1,6,2,0,3,2,0,1,1,1,2,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,1,2,2,7,1,3,1,1,1,2,1,0 1,0,3,2,3,6,5,0,1,1,1,0,1,0 0,4,0,3,0,12,2,0,1,1,1,1,1,1 0,0,10,3,5,3,3,0,0,1,1,1,1,1 0,0,6,2,2,6,3,0,1,1,1,0,1,0 1,0,3,2,1,4,3,4,0,1,1,0,1,0 0,5,3,2,0,1,2,0,1,1,1,0,1,0 0,0,9,1,0,10,2,0,1,1,1,0,1,0 0,0,3,2,3,12,1,4,1,1,1,0,1,0 1,4,0,3,0,5,0,4,0,1,1,0,1,1 0,0,0,3,2,8,5,0,0,1,1,2,1,0 0,0,7,1,0,2,2,0,1,1,1,2,1,0 0,0,0,3,1,5,1,0,0,1,1,1,1,0 0,0,0,3,2,5,3,0,1,1,1,0,1,0 0,0,3,2,2,7,3,0,0,1,1,0,1,0 2,0,12,1,4,1,5,0,1,1,1,1,1,0 1,0,3,2,0,4,2,0,1,1,1,0,1,0 1,0,1,2,0,2,0,0,0,1,1,2,1,0 0,0,2,1,5,1,3,4,1,1,1,1,1,0 2,1,3,2,0,1,2,0,1,1,1,1,1,0 1,0,10,3,2,2,3,0,0,1,1,2,1,0 1,0,1,2,1,2,5,0,0,1,1,0,1,0 1,0,1,2,0,5,2,0,1,1,1,0,1,1 0,0,3,2,2,8,3,0,0,1,1,1,1,0 0,0,1,2,1,8,5,4,0,1,1,0,1,0 2,1,1,2,0,3,2,0,1,1,1,1,1,0 1,0,10,3,0,5,2,0,1,1,1,1,1,1 0,0,1,2,0,10,2,0,1,1,1,1,1,1 0,0,4,3,2,5,1,0,0,1,1,0,1,0 0,0,1,2,0,8,0,4,0,1,1,0,1,0 2,0,3,2,4,4,5,0,0,1,1,1,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 0,0,1,2,0,4,2,0,1,1,1,1,1,0 0,0,5,2,0,3,1,0,0,1,1,2,1,0 1,5,12,1,0,10,2,0,1,1,1,0,1,1 1,0,3,2,0,6,2,0,1,1,1,1,1,1 0,0,1,2,0,0,2,0,1,1,1,1,1,1 2,0,12,1,4,0,5,0,0,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 1,3,3,2,2,8,3,4,1,1,1,0,1,0 0,0,6,2,0,10,2,0,1,1,1,1,1,1 0,0,12,1,3,2,3,0,0,1,1,2,1,0 0,4,5,2,0,12,2,0,1,1,1,0,1,1 1,0,7,1,5,6,3,0,1,1,1,0,1,0 0,1,3,2,0,9,2,0,1,1,1,1,1,0 1,4,4,3,2,5,3,0,0,1,1,1,1,1 0,0,3,2,2,8,3,0,0,1,1,0,1,0 1,0,1,2,0,8,2,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,3,2,0,9,2,0,1,1,1,1,1,1 0,0,12,1,2,3,1,0,0,1,1,2,1,0 1,4,0,3,1,5,3,0,0,1,1,1,1,0 0,0,0,3,1,1,3,0,1,1,1,1,1,1 0,0,2,1,2,3,1,0,1,1,1,2,1,0 2,0,12,1,1,2,1,0,0,1,1,0,1,0 1,0,10,3,0,2,2,0,1,1,1,0,1,0 1,0,13,3,0,5,2,0,1,1,1,1,1,0 3,1,8,0,0,9,2,0,1,1,1,0,1,0 2,0,13,3,0,5,2,0,1,1,1,1,1,1 0,0,0,3,0,5,0,0,0,1,1,1,1,1 0,0,3,2,2,3,3,0,1,1,1,1,1,0 0,0,3,2,2,7,4,0,1,1,1,0,1,0 1,0,1,2,1,8,5,0,0,1,1,0,1,0 0,1,0,3,1,4,5,0,0,1,1,1,1,0 1,0,1,2,2,8,3,0,0,1,1,1,1,1 0,2,10,3,0,5,2,1,1,1,1,0,1,1 1,0,3,2,4,7,3,0,0,1,1,0,1,0 0,0,1,2,1,1,1,0,1,1,1,0,1,0 1,0,0,3,0,3,2,0,1,1,1,1,1,1 1,4,4,3,0,5,2,1,1,1,1,0,1,1 0,0,3,2,2,2,3,0,0,1,1,2,1,0 1,2,1,2,1,7,3,0,0,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,0,1,0 0,0,3,2,2,3,1,0,1,1,1,0,1,0 1,0,1,2,0,8,2,0,1,1,1,1,1,1 1,0,6,2,1,0,3,4,1,1,1,0,1,0 1,4,0,3,2,12,3,0,0,1,1,1,1,1 1,0,5,2,1,4,5,1,0,1,1,0,1,0 0,0,1,2,2,1,5,0,1,1,1,1,1,0 0,0,2,1,2,10,4,0,1,1,1,0,1,0 0,0,1,2,2,0,4,1,0,1,1,2,1,0 0,0,6,2,2,1,5,2,1,1,1,0,1,0 2,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,2,9,3,0,1,1,1,2,1,0 1,5,3,2,1,1,1,0,1,1,1,0,1,1 0,0,11,0,2,9,3,0,1,1,1,2,1,0 2,1,1,2,0,4,2,0,1,1,1,0,1,1 0,0,3,2,2,2,4,0,1,1,1,2,1,0 1,0,1,2,0,4,2,0,1,1,1,1,1,1 1,0,3,2,0,10,0,0,0,1,1,0,1,1 1,4,0,3,0,5,2,1,1,1,1,0,1,1 0,0,2,1,2,3,5,0,0,1,1,2,1,0 0,0,1,2,2,4,1,0,0,1,1,2,1,0 1,0,3,2,2,3,5,0,1,1,1,0,1,0 0,0,6,2,1,3,3,0,0,1,1,0,1,1 1,0,5,2,2,1,3,0,1,1,1,2,1,0 0,0,3,2,2,3,3,0,1,1,1,1,1,0 0,2,0,3,0,3,2,0,1,1,1,1,1,0 0,0,2,1,2,8,1,0,1,1,1,0,1,0 0,0,3,2,2,6,3,0,1,1,1,0,1,0 2,0,10,3,0,4,2,0,1,1,1,0,1,1 1,0,8,0,1,4,3,0,1,1,1,0,1,0 0,0,3,2,1,6,1,0,1,1,1,1,1,0 0,0,1,2,2,6,1,0,0,1,1,2,1,0 0,0,1,2,2,2,1,0,1,1,1,2,1,0 0,0,1,2,0,1,2,0,1,1,1,0,1,1 0,0,1,2,2,8,1,0,0,1,1,2,1,0 1,0,9,1,3,2,5,0,0,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 2,5,0,3,1,5,3,0,1,1,1,0,1,0 0,0,4,3,2,5,3,0,1,1,1,0,1,0 0,0,2,1,2,2,1,0,0,1,1,2,1,0 2,0,4,3,0,10,2,4,1,1,1,1,1,1 1,0,0,3,1,4,3,0,1,1,1,0,1,0 0,0,1,2,2,1,3,4,1,1,1,0,1,0 1,4,10,3,1,5,5,0,0,1,1,1,1,0 0,0,2,1,3,3,3,0,0,1,1,1,1,0 0,0,0,3,0,4,0,0,0,1,1,0,1,1 2,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,13,3,0,5,2,0,1,1,1,1,1,1 0,0,12,1,0,7,2,0,1,1,1,0,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 1,3,10,3,0,13,2,0,1,1,1,0,1,1 2,2,1,2,0,3,2,0,1,1,1,0,1,1 0,0,3,2,0,1,2,0,1,1,1,1,1,0 2,0,0,3,0,3,2,0,1,1,1,2,1,1 0,0,1,2,0,6,2,0,1,1,1,0,1,0 0,0,3,2,2,2,1,0,1,1,1,2,1,0 0,0,6,2,2,7,5,0,1,1,1,1,1,0 1,0,1,2,0,1,2,0,1,1,1,1,1,1 1,0,0,3,0,7,2,0,1,1,1,0,1,1 1,0,9,1,5,4,3,0,0,1,1,1,1,0 2,4,3,2,1,12,3,0,0,1,1,0,1,0 2,0,1,2,5,4,5,0,0,1,1,0,1,0 1,0,2,1,4,2,1,0,0,1,1,1,1,0 1,0,0,3,0,1,2,0,1,1,1,1,1,1 0,0,1,2,3,3,5,1,1,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 1,4,3,2,3,2,5,4,0,1,1,0,1,0 1,5,3,2,1,8,4,0,0,1,1,0,1,0 0,0,1,2,2,2,3,0,0,1,1,2,1,0 1,4,10,3,0,5,2,0,1,1,1,1,1,0 0,0,6,2,0,4,2,0,1,1,1,0,1,0 0,1,0,3,0,9,2,0,1,1,1,1,1,0 2,0,10,3,0,10,2,0,1,1,1,1,1,1 1,4,0,3,1,5,5,0,0,1,1,0,1,0 2,1,0,3,0,4,2,0,1,1,1,0,1,1 0,0,3,2,0,1,2,0,1,1,1,0,1,0 2,2,2,1,0,10,2,0,1,1,1,1,1,0 0,0,13,3,0,5,2,0,1,1,1,1,1,1 1,1,3,2,4,2,4,0,0,1,1,0,1,0 1,0,6,2,0,1,2,0,1,1,1,0,1,0 0,4,1,2,2,5,1,0,0,1,1,2,1,0 1,1,3,2,0,1,2,0,1,1,1,1,1,0 3,0,0,3,0,5,2,0,1,1,1,2,1,0 0,0,0,3,0,8,2,0,1,1,1,1,1,1 1,3,1,2,1,9,3,0,1,1,1,0,1,0 1,0,1,2,0,10,2,0,1,1,1,1,1,1 1,0,0,3,2,5,3,4,0,1,1,0,1,0 0,0,3,2,0,6,2,0,1,1,1,1,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 0,5,1,2,0,12,2,0,1,1,1,0,1,0 2,0,10,3,0,4,2,0,1,1,1,0,1,1 1,1,8,0,0,2,0,4,0,1,1,1,1,0 2,4,7,1,1,12,3,4,1,1,1,2,1,0 1,4,0,3,0,9,2,1,1,1,1,0,1,1 1,0,0,3,0,3,2,0,1,1,1,0,1,1 1,1,0,3,0,3,2,0,1,1,1,1,1,1 1,1,8,0,0,3,2,0,1,1,1,2,1,0 1,4,10,3,0,5,2,0,1,1,1,2,1,1 1,1,1,2,2,1,5,0,1,1,1,0,1,0 1,0,1,2,0,8,0,4,0,1,1,2,1,1 1,0,6,2,0,1,2,0,1,1,1,0,1,1 1,5,1,2,0,4,0,0,0,1,1,2,1,1 0,0,0,3,2,0,3,4,0,1,1,0,1,0 2,0,14,0,5,7,5,0,1,1,1,0,1,0 1,1,3,2,0,1,2,0,1,1,1,0,1,1 0,0,3,2,2,2,5,0,0,1,1,2,1,0 0,0,3,2,0,7,2,0,1,1,1,2,1,0 1,0,1,2,1,2,3,0,1,1,1,1,1,0 2,2,1,2,0,3,2,0,1,1,1,0,1,0 2,0,3,2,0,11,0,4,0,1,1,2,1,0 1,0,3,2,4,6,3,0,1,1,1,2,1,0 0,0,10,3,2,5,5,0,0,1,1,2,1,0 2,1,3,2,4,2,4,0,0,1,1,0,1,0 1,0,0,3,2,2,3,1,0,1,1,2,1,0 1,1,0,3,0,5,2,0,1,1,1,1,1,0 2,0,3,2,2,6,4,4,0,1,1,0,1,0 2,1,8,0,0,1,2,0,1,1,1,2,1,0 1,1,10,3,1,1,3,0,1,1,1,0,1,0 0,0,5,2,2,3,1,0,0,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,1,1,0 1,2,0,3,0,8,2,0,1,1,1,0,1,0 1,0,1,2,0,8,2,4,1,1,1,1,1,1 0,0,3,2,0,1,2,0,1,1,1,1,1,0 1,3,1,2,3,4,3,0,0,1,1,0,1,0 0,1,0,3,2,5,3,4,1,1,1,1,1,1 2,1,3,2,0,10,2,0,1,1,1,2,1,0 0,0,3,2,1,2,5,0,0,1,1,0,1,0 1,0,3,2,0,4,2,0,1,1,1,0,1,1 0,0,3,2,1,3,3,0,0,1,1,0,1,0 1,0,1,2,0,3,2,0,1,1,1,0,1,1 1,0,9,1,2,9,1,0,1,1,1,0,1,0 0,0,1,2,0,2,2,0,1,1,1,2,1,0 1,0,3,2,0,10,2,0,1,1,1,0,1,1 1,0,10,3,0,5,2,0,1,1,1,1,1,1 1,0,3,2,0,7,2,0,1,1,1,0,1,0 1,0,1,2,1,9,3,0,1,1,1,0,1,0 0,0,2,1,5,3,1,1,0,1,1,0,1,0 0,0,3,2,0,10,2,3,1,1,1,0,1,0 1,0,0,3,3,5,5,1,0,1,1,0,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 1,0,1,2,2,0,4,0,0,1,1,0,1,0 0,0,1,2,2,3,1,0,1,1,1,2,1,0 0,4,4,3,0,5,2,0,1,1,1,0,1,1 0,0,3,2,2,1,3,0,1,1,1,2,1,0 1,0,3,2,0,0,2,4,1,1,1,0,1,1 0,0,1,2,2,5,1,0,0,1,1,2,1,0 1,1,10,3,0,4,2,0,1,1,1,1,1,1 0,0,0,3,2,4,3,0,1,1,1,1,1,1 2,2,0,3,0,4,2,0,1,1,1,1,1,0 1,2,1,2,0,3,2,0,1,1,1,1,1,1 3,5,8,0,4,6,3,0,0,1,1,2,1,0 1,5,1,2,0,12,2,4,1,1,1,1,1,1 1,0,10,3,0,4,2,0,1,1,1,1,1,1 0,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,14,0,0,7,2,0,1,1,1,0,1,0 1,2,0,3,0,4,2,0,1,1,1,1,1,1 1,0,0,3,1,4,5,0,0,1,1,0,1,0 1,0,3,2,1,1,5,4,0,1,1,1,1,0 0,0,6,2,2,7,3,0,1,1,1,0,1,0 2,0,3,2,0,10,2,0,1,1,1,1,1,0 0,0,1,2,2,1,1,0,1,1,1,0,1,0 1,0,1,2,0,3,2,0,1,1,1,1,1,0 1,2,3,2,5,9,3,0,1,1,1,1,1,0 1,5,1,2,1,2,3,0,1,1,1,1,1,0 1,5,10,3,0,5,2,0,1,1,1,1,1,1 0,0,0,3,2,8,3,0,0,1,1,0,1,0 0,0,1,2,2,8,5,0,0,1,1,0,1,0 2,0,3,2,4,8,5,0,1,1,1,2,1,0 1,0,0,3,0,3,2,0,1,1,1,1,1,1 1,0,9,1,2,8,4,4,0,1,1,0,1,0 0,1,1,2,2,8,3,0,0,1,1,1,1,0 1,0,3,2,2,6,1,0,1,1,1,2,1,0 0,0,4,3,2,5,3,0,0,1,1,1,1,0 0,0,1,2,2,3,1,0,1,1,1,2,1,0 0,0,3,2,0,11,3,0,0,1,1,0,1,0 0,0,2,1,0,1,2,0,1,1,1,1,1,1 0,0,0,3,2,5,3,0,0,1,1,0,1,0 1,0,3,2,0,6,2,4,1,1,1,0,1,0 0,0,15,0,2,9,3,0,1,1,1,2,1,0 0,0,1,2,2,6,3,0,1,1,1,0,1,0 1,4,10,3,2,5,3,0,0,1,1,1,1,0 1,1,1,2,3,3,3,1,1,1,1,1,1,0 1,0,3,2,0,7,0,0,0,1,1,0,1,1 0,0,1,2,0,8,0,0,0,1,1,0,1,1 1,0,7,1,3,7,3,0,0,1,1,0,1,0 1,0,1,2,4,4,3,0,0,1,1,1,1,0 0,0,5,2,2,6,1,0,1,1,1,2,1,0 1,1,3,2,0,3,2,0,1,1,1,1,1,0 1,0,3,2,0,8,0,0,0,1,1,1,1,1 0,0,3,2,0,10,2,0,1,1,1,1,1,0 0,0,3,2,2,8,4,4,1,1,1,0,1,0 0,0,12,1,2,1,3,0,1,1,1,1,1,0 0,0,3,2,1,2,3,0,0,1,1,0,1,0 2,5,13,3,1,5,5,0,0,1,1,1,1,0 2,0,8,0,2,8,3,0,1,1,1,0,1,0 0,0,3,2,2,4,3,4,0,1,1,2,1,0 1,0,0,3,0,7,2,0,1,1,1,0,1,0 0,0,3,2,2,8,1,0,1,1,1,0,1,0 2,1,1,2,0,8,2,0,1,1,1,1,1,1 1,0,6,2,1,0,5,0,0,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,2,1,0 1,2,10,3,0,5,2,0,1,1,1,1,1,1 1,0,0,3,0,1,2,0,1,1,1,1,1,1 0,0,3,2,2,7,5,4,0,1,1,1,1,0 0,0,2,1,0,1,2,0,1,1,1,0,1,0 0,0,1,2,0,1,2,0,1,1,1,0,1,0 2,0,3,2,4,7,5,4,0,1,1,1,1,0 0,0,0,3,0,4,0,0,0,1,1,1,1,1 1,4,13,3,0,5,0,4,0,1,1,0,1,1 0,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,5,2,5,4,5,1,0,1,1,2,1,0 0,0,10,3,2,5,3,0,1,1,1,2,1,0 0,4,3,2,2,9,1,0,1,1,1,2,1,0 2,0,3,2,1,10,3,0,1,1,1,1,1,0 2,0,3,2,4,2,5,0,0,1,1,2,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,1 0,0,2,1,2,5,1,0,1,1,1,0,1,0 1,4,3,2,0,10,2,4,1,1,1,0,1,0 1,4,8,0,0,10,2,0,1,1,1,2,1,0 1,4,1,2,0,12,2,4,1,1,1,1,1,0 0,0,0,3,2,9,3,0,1,1,1,0,1,0 0,0,6,2,1,0,1,0,1,1,1,2,1,0 2,0,1,2,0,0,0,0,0,1,1,0,1,1 0,0,5,2,2,5,4,1,0,1,1,0,1,0 1,0,0,3,0,0,2,0,1,1,1,0,1,1 2,0,3,2,0,3,2,0,1,1,1,2,1,1 2,0,5,2,1,8,5,0,0,1,1,0,1,0 1,0,1,2,0,1,2,1,1,1,1,0,1,0 2,1,0,3,0,5,2,0,1,1,1,1,1,1 2,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,3,2,0,8,0,0,0,1,1,2,1,1 1,4,1,2,3,1,3,4,1,1,1,0,1,0 1,0,3,2,1,1,3,0,1,1,1,1,1,0 0,0,3,2,2,8,1,0,0,1,1,2,1,0 2,1,3,2,0,4,2,0,1,1,1,0,1,0 1,3,1,2,0,8,2,0,1,1,1,0,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,1 2,0,1,2,0,0,2,0,1,1,1,1,1,1 0,0,6,2,0,3,2,0,1,1,1,0,1,0 0,0,3,2,0,8,0,0,0,1,1,2,1,0 0,0,3,2,0,2,2,0,1,1,1,0,1,0 0,0,2,1,2,3,1,0,1,1,1,2,1,0 2,1,3,2,0,4,2,0,1,1,1,0,1,1 0,0,10,3,0,5,2,0,1,1,1,2,1,1 0,1,3,2,2,9,1,0,1,1,1,0,1,0 2,0,5,2,1,8,3,0,0,1,1,0,1,0 0,0,1,2,2,7,3,0,0,1,1,2,1,0 0,4,2,1,2,12,1,0,1,1,1,2,1,0 0,0,1,2,2,10,3,0,1,1,1,1,1,1 0,0,1,2,2,2,1,1,0,1,1,2,1,0 0,0,9,1,2,2,4,0,1,1,1,0,1,0 1,0,3,2,2,1,3,0,1,1,1,0,1,0 1,0,0,3,0,4,0,0,0,1,1,1,1,1 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,6,2,0,5,2,0,1,1,1,0,1,1 1,1,1,2,0,9,2,0,1,1,1,2,1,0 0,0,3,2,2,7,1,0,1,1,1,2,1,0 0,0,0,3,5,5,3,0,0,1,1,2,1,0 0,0,3,2,2,1,3,0,1,1,1,0,1,1 1,0,3,2,4,2,5,0,0,1,1,2,1,0 1,1,6,2,0,4,2,0,1,1,1,0,1,0 1,0,3,2,1,3,3,0,0,1,1,2,1,0 1,0,0,3,2,3,3,0,0,1,1,1,1,1 0,0,0,3,0,2,2,0,1,1,1,0,1,0 2,1,13,3,0,5,2,0,1,1,1,2,1,1 2,0,3,2,0,7,2,0,1,1,1,0,1,1 1,0,3,2,2,3,4,0,0,1,1,2,1,0 1,1,3,2,1,9,1,0,1,1,1,1,1,0 0,0,3,2,0,5,2,0,1,1,1,0,1,1 2,0,10,3,0,5,2,0,1,1,1,1,1,1 0,0,5,2,2,8,3,0,0,1,1,0,1,0 0,0,2,1,2,3,1,0,0,1,1,2,1,0 1,0,4,3,1,4,3,0,1,1,1,0,1,0 1,0,6,2,1,4,1,2,0,1,1,0,1,0 1,0,3,2,0,10,2,0,1,1,1,0,1,0 0,0,3,2,0,6,2,0,1,1,1,2,1,0 1,0,5,2,2,0,3,0,0,1,1,0,1,0 1,5,0,3,0,9,2,0,1,1,1,0,1,1 0,0,1,2,2,2,1,0,0,1,1,0,1,0 0,0,3,2,2,2,1,0,1,1,1,2,1,0 0,0,1,2,0,10,2,4,1,1,1,0,1,1 0,0,3,2,2,6,1,0,1,1,1,2,1,0 0,0,3,2,1,10,3,0,1,1,1,0,1,0 1,0,3,2,1,0,5,4,0,1,1,2,1,0 1,0,3,2,0,10,2,4,1,1,1,2,1,0 0,0,0,3,2,4,1,4,1,1,1,1,1,0 1,1,0,3,0,4,2,0,1,1,1,0,1,0 0,0,3,2,2,6,3,0,1,1,1,0,1,0 2,0,10,3,0,10,2,0,1,1,1,2,1,0 1,4,13,3,0,5,0,0,0,1,1,0,1,1 0,0,9,1,2,10,5,0,1,1,1,2,1,0 0,0,1,2,2,2,1,0,0,1,1,0,1,0 1,0,3,2,0,2,0,0,0,1,1,0,1,0 0,1,0,3,0,3,2,0,1,1,1,2,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,1 1,0,3,2,2,5,3,0,0,1,1,0,1,0 2,1,10,3,0,4,2,0,1,1,1,2,1,0 2,3,3,2,1,8,3,0,0,1,1,0,1,0 1,0,1,2,0,4,0,0,0,1,1,0,1,1 0,0,1,2,2,7,3,0,1,1,1,0,1,0 1,0,0,3,1,8,3,0,1,1,1,0,1,0 0,0,0,3,0,3,2,4,1,1,1,2,1,0 1,1,3,2,0,3,2,0,1,1,1,0,1,1 1,2,0,3,0,4,2,0,1,1,1,1,1,1 0,1,3,2,2,9,3,0,1,1,1,1,1,0 0,0,4,3,0,5,2,0,1,1,1,1,1,1 0,0,2,1,2,3,1,4,0,1,1,2,1,0 0,0,1,2,2,4,1,0,0,1,1,2,1,0 0,0,1,2,1,1,5,0,1,1,1,0,1,0 1,0,3,2,0,3,2,0,1,1,1,0,1,1 1,0,3,2,0,1,2,0,1,1,1,1,1,0 2,2,10,3,0,4,2,0,1,1,1,0,1,1 2,0,3,2,2,8,5,0,1,1,1,0,1,0 0,0,0,3,0,4,0,0,0,1,1,0,1,1 0,0,0,3,2,4,3,0,1,1,1,0,1,0 0,0,3,2,0,4,2,0,1,1,1,0,1,0 0,0,2,1,2,6,3,4,0,1,1,2,1,0 2,2,4,3,0,5,2,0,1,1,1,2,1,1 0,1,9,1,2,6,1,0,1,1,1,2,1,0 0,0,0,3,2,0,1,1,0,1,1,0,1,0 1,4,3,2,0,12,2,0,1,1,1,0,1,0 0,0,2,1,2,3,3,0,0,1,1,2,1,0 1,0,14,0,1,2,5,0,0,1,1,0,1,0 1,0,0,3,2,4,3,0,1,1,1,1,1,1 0,0,3,2,2,1,3,0,1,1,1,0,1,0 1,0,0,3,0,7,2,0,1,1,1,0,1,1 0,0,2,1,2,8,1,0,0,1,1,2,1,0 1,1,0,3,0,3,2,0,1,1,1,1,1,1 1,2,1,2,0,3,2,0,1,1,1,1,1,1 0,0,3,2,2,3,4,0,1,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,1,1,0 1,0,0,3,0,6,2,0,1,1,1,0,1,0 1,0,0,3,0,3,2,0,1,1,1,0,1,1 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,8,0,0,1,2,0,1,1,1,1,1,0 0,0,4,3,2,4,1,0,1,1,1,1,1,0 1,0,6,2,3,1,3,0,1,1,1,2,1,0 1,2,4,3,1,5,3,0,1,1,1,1,1,1 0,0,3,2,2,1,1,0,1,1,1,0,1,0 0,0,3,2,2,2,1,0,1,1,1,1,1,0 2,2,3,2,0,4,2,0,1,1,1,1,1,0 0,0,1,2,1,4,3,0,0,1,1,1,1,0 1,4,10,3,1,5,5,0,0,1,1,0,1,0 0,4,3,2,2,2,4,0,1,1,1,2,1,0 1,0,3,2,0,2,2,0,1,1,1,1,1,0 1,5,0,3,2,5,3,0,1,1,1,0,1,1 0,0,1,2,2,3,1,4,1,1,1,1,1,0 1,0,1,2,5,1,5,0,1,1,1,0,1,1 1,0,3,2,0,1,2,0,1,1,1,0,1,1 1,0,1,2,0,10,2,0,1,1,1,1,1,1 1,5,3,2,0,1,2,0,1,1,1,0,1,1 0,0,3,2,1,6,3,0,1,1,1,0,1,0 0,0,12,1,1,3,4,0,0,1,1,0,1,0 1,3,5,2,0,8,2,0,1,1,1,0,1,1 1,4,0,3,0,12,2,0,1,1,1,0,1,1 1,1,10,3,0,5,2,0,1,1,1,1,1,1 1,0,0,3,0,4,2,0,1,1,1,0,1,0 1,5,0,3,2,5,3,0,0,1,1,0,1,0 0,0,3,2,4,2,5,4,1,1,1,0,1,0 1,0,0,3,0,3,2,0,1,1,1,1,1,0 0,5,10,3,0,4,0,0,0,1,1,0,1,0 1,0,0,3,4,5,5,0,0,1,1,2,1,0 1,4,4,3,4,5,3,0,0,1,1,0,1,0 0,0,3,2,2,10,5,0,1,1,1,1,1,0 1,0,0,3,2,1,3,0,1,1,1,1,1,0 0,0,3,2,0,2,2,0,1,1,1,2,1,0 0,0,1,2,2,3,1,0,1,1,1,0,1,0 1,4,1,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,2,5,3,0,1,1,1,1,1,0 1,1,3,2,0,9,2,0,1,1,1,1,1,0 1,4,2,1,1,6,5,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 2,3,13,3,0,5,2,1,1,1,1,0,1,1 2,4,10,3,0,5,2,0,1,1,1,0,1,1 0,0,1,2,0,3,2,1,1,1,1,1,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 2,0,7,1,0,1,2,4,1,1,1,1,1,0 2,0,13,3,4,5,3,0,1,1,1,1,1,1 1,0,3,2,0,10,2,2,1,1,1,0,1,0 0,0,3,2,2,9,1,0,1,1,1,2,1,0 0,0,1,2,2,1,1,0,1,1,1,2,1,0 2,0,0,3,0,5,2,0,1,1,1,0,1,0 0,0,1,2,2,3,1,0,1,1,1,2,1,0 1,5,0,3,0,5,2,0,1,1,1,1,1,1 0,0,1,2,3,11,4,0,0,1,1,2,1,0 0,0,1,2,2,5,3,0,1,1,1,1,1,0 0,0,3,2,2,3,1,4,0,1,1,0,1,0 2,3,1,2,0,5,2,2,1,1,1,0,1,0 1,0,0,3,2,5,3,0,0,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,1 0,0,1,2,2,8,5,4,0,1,1,2,1,0 1,0,4,3,0,3,2,0,1,1,1,1,1,1 0,0,3,2,2,4,3,0,0,1,1,1,1,0 2,2,6,2,1,5,3,0,1,1,1,1,1,1 1,5,10,3,0,8,2,2,1,1,1,0,1,1 2,1,1,2,2,5,3,0,0,1,1,2,1,0 0,3,3,2,5,2,5,4,1,1,1,0,1,0 0,5,1,2,2,1,3,0,1,1,1,2,1,0 2,0,1,2,1,4,3,0,0,1,1,0,1,0 1,0,10,3,1,4,3,0,1,1,1,1,1,1 0,0,3,2,3,2,3,0,0,1,1,0,1,0 2,0,1,2,0,5,2,0,1,1,1,0,1,1 1,0,12,1,1,7,5,4,1,1,1,0,1,0 1,3,0,3,1,0,3,0,1,1,1,0,1,1 0,0,3,2,2,2,1,0,0,1,1,2,1,0 0,0,2,1,2,6,1,0,1,1,1,2,1,0 1,0,0,3,0,5,0,0,0,1,1,2,1,0 0,0,10,3,0,5,2,0,1,1,1,1,1,1 2,0,11,0,1,10,3,0,1,1,1,0,1,0 1,4,3,2,0,12,2,0,1,1,1,1,1,1 0,0,7,1,2,3,1,4,1,1,1,2,1,0 1,2,4,3,0,5,2,0,1,1,1,1,1,1 0,0,3,2,2,3,1,0,1,1,1,0,1,0 0,0,1,2,0,0,2,0,1,1,1,0,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,1 1,5,1,2,1,5,3,0,0,1,1,0,1,0 1,4,3,2,0,1,2,0,1,1,1,1,1,0 0,0,3,2,0,6,2,2,1,1,1,0,1,0 1,0,1,2,1,8,5,0,0,1,1,0,1,0 1,4,0,3,0,5,2,0,1,1,1,0,1,1 0,0,3,2,0,6,2,0,1,1,1,0,1,0 0,0,9,1,2,3,4,0,1,1,1,1,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,12,1,0,10,2,0,1,1,1,1,1,0 0,0,3,2,3,2,4,0,1,1,1,2,1,0 0,5,3,2,2,8,1,4,1,1,1,2,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,1 1,0,0,3,0,5,2,0,1,1,1,1,1,1 1,1,13,3,0,5,2,0,1,1,1,2,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,3,2,2,9,1,0,1,1,1,2,1,0 1,0,3,2,0,6,2,0,1,1,1,0,1,0 0,4,0,3,2,8,3,0,1,1,1,1,1,0 0,0,1,2,2,3,1,0,1,1,1,2,1,0 0,0,3,2,0,7,3,0,0,1,1,0,1,0 0,0,10,3,2,5,1,0,1,1,1,0,1,0 0,4,10,3,2,5,1,0,0,1,1,0,1,0 1,0,1,2,0,4,2,0,1,1,1,0,1,1 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,5,10,3,1,4,3,0,1,1,1,1,1,0 0,0,3,2,0,1,1,0,1,1,1,0,1,0 1,0,0,3,2,3,3,4,1,1,1,1,1,1 1,0,3,2,0,7,2,0,1,1,1,2,1,0 0,4,1,2,2,8,1,0,0,1,1,0,1,0 0,0,0,3,2,4,3,0,0,1,1,1,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,2,2,3,0,0,1,1,2,1,0 2,1,8,0,0,9,2,0,1,1,1,0,1,0 2,0,3,2,2,4,5,0,1,1,1,0,1,1 0,0,10,3,2,0,4,0,1,1,1,2,1,0 1,0,0,3,1,5,3,0,0,1,1,1,1,0 0,0,1,2,1,1,3,0,1,1,1,1,1,0 1,0,1,2,1,7,1,0,0,1,1,0,1,0 0,0,0,3,1,4,3,0,0,1,1,1,1,1 1,0,3,2,3,1,3,0,1,1,1,0,1,0 0,0,1,2,0,6,2,4,1,1,1,0,1,0 0,4,3,2,2,12,1,0,1,1,1,2,1,0 1,0,8,0,5,10,3,0,1,1,1,1,1,0 1,0,6,2,0,2,2,0,1,1,1,2,1,0 3,2,0,3,0,3,2,0,1,1,1,2,1,1 1,3,0,3,0,4,0,2,0,1,1,0,1,1 1,3,1,2,2,8,4,0,1,1,1,0,1,0 1,4,10,3,0,5,2,0,1,1,1,1,1,0 1,0,1,2,0,10,2,0,1,1,1,1,1,1 2,0,3,2,3,12,3,0,1,1,1,2,1,0 2,0,0,3,0,3,2,0,1,1,1,2,1,1 1,1,6,2,0,9,2,0,1,1,1,1,1,0 0,0,5,2,2,5,1,0,0,1,1,2,1,0 0,0,1,2,2,3,3,4,1,1,1,1,1,0 1,1,4,3,0,5,2,0,1,1,1,1,1,1 1,0,1,2,0,10,2,0,1,1,1,1,1,0 0,0,3,2,2,2,1,0,0,1,1,0,1,0 0,0,1,2,1,0,5,0,1,1,1,0,1,0 0,0,0,3,0,3,2,0,1,1,1,1,1,1 1,1,0,3,1,4,3,0,0,1,1,0,1,0 2,0,1,2,0,6,2,0,1,1,1,0,1,0 0,0,3,2,0,3,2,0,1,1,1,0,1,1 2,0,3,2,4,6,3,0,0,1,1,0,1,0 1,0,2,1,1,3,5,0,0,1,1,0,1,0 0,0,6,2,0,7,2,0,1,1,1,0,1,0 1,0,1,2,2,1,3,0,1,1,1,0,1,0 1,0,0,3,1,4,3,0,0,1,1,0,1,0 1,0,14,0,3,2,5,0,0,1,1,0,1,0 1,1,13,3,2,5,3,0,0,1,1,1,1,1 1,0,1,2,0,3,2,0,1,1,1,2,1,1 1,0,10,3,4,5,3,0,0,1,1,1,1,0 0,0,7,1,2,1,4,0,1,1,1,1,1,0 0,0,1,2,0,10,2,0,1,1,1,2,1,0 1,1,3,2,0,1,2,0,1,1,1,2,1,0 1,0,8,0,0,4,2,0,1,1,1,0,1,1 0,0,0,3,0,3,2,0,1,1,1,1,1,0 1,1,3,2,0,1,2,0,1,1,1,1,1,1 0,0,5,2,1,1,5,0,0,1,1,2,1,0 0,0,14,0,0,7,2,3,1,1,1,0,1,0 1,0,3,2,0,3,2,0,1,1,1,1,1,0 1,2,0,3,0,4,2,0,1,1,1,1,1,1 0,0,1,2,2,2,1,0,0,1,1,2,1,0 1,0,3,2,1,1,5,0,1,1,1,1,1,0 1,0,3,2,0,8,0,0,0,1,1,0,1,1 1,0,0,3,4,2,5,0,0,1,1,2,1,0 1,0,1,2,2,2,3,0,1,1,1,2,1,0 0,0,1,2,2,8,1,0,0,1,1,2,1,0 0,0,1,2,0,0,2,4,1,1,1,0,1,1 0,0,1,2,2,3,1,0,1,1,1,0,1,0 1,0,3,2,2,7,1,0,1,1,1,0,1,0 1,0,1,2,1,2,3,0,0,1,1,0,1,0 0,0,3,2,2,8,5,0,0,1,1,0,1,0 0,0,3,2,2,8,3,0,1,1,1,0,1,0 1,0,1,2,0,8,2,0,1,1,1,0,1,1 0,4,0,3,2,5,1,0,0,1,1,1,1,0 0,0,9,1,2,2,1,0,1,1,1,2,1,0 1,1,13,3,0,5,2,0,1,1,1,1,1,1 1,0,2,1,0,7,2,0,1,1,1,0,1,0 1,0,7,1,0,10,2,0,1,1,1,0,1,0 1,0,6,2,0,8,2,0,1,1,1,0,1,0 2,0,1,2,4,0,3,0,0,1,1,2,1,0 0,0,0,3,0,0,2,1,1,1,1,0,1,1 0,0,12,1,0,7,2,0,1,1,1,0,1,0 0,4,10,3,3,5,5,0,0,1,1,0,1,0 2,1,3,2,1,2,4,0,0,1,1,0,1,0 2,0,2,1,0,7,2,0,1,1,1,0,1,0 1,5,0,3,0,5,0,0,0,1,1,2,1,0 0,5,1,2,2,9,1,0,1,1,1,0,1,0 1,0,0,3,1,4,3,0,1,1,1,0,1,0 0,2,3,2,0,6,2,0,1,1,1,1,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 0,0,6,2,0,0,2,0,1,1,1,0,1,1 1,0,3,2,1,2,3,0,0,1,1,0,1,0 1,0,4,3,1,5,5,0,0,1,1,0,1,0 1,0,1,2,0,8,2,0,1,1,1,0,1,0 0,0,12,1,0,2,2,1,1,1,1,1,1,0 1,0,3,2,2,8,1,0,1,1,1,0,1,0 2,1,3,2,0,3,2,0,1,1,1,1,1,1 0,0,1,2,2,8,1,0,1,1,1,2,1,0 0,0,3,2,2,7,1,0,1,1,1,0,1,0 0,0,3,2,0,7,2,0,1,1,1,1,1,0 2,4,0,3,0,5,2,0,1,1,1,0,1,1 0,0,3,2,1,10,3,0,1,1,1,1,1,0 0,0,3,2,2,2,3,0,1,1,1,2,1,0 0,1,1,2,2,1,1,0,1,1,1,0,1,0 0,0,3,2,2,8,1,0,1,1,1,2,1,0 1,0,3,2,2,1,3,0,1,1,1,0,1,0 0,0,10,3,0,7,2,0,1,1,1,2,1,0 2,0,1,2,0,0,2,0,1,1,1,0,1,1 1,4,1,2,0,4,2,0,1,1,1,0,1,1 0,0,3,2,2,7,1,0,1,1,1,0,1,0 0,0,0,3,0,4,2,0,1,1,1,0,1,1 0,0,3,2,2,6,1,0,1,1,1,0,1,0 0,0,3,2,1,1,3,0,0,1,1,0,1,0 1,0,3,2,1,6,5,0,0,1,1,2,1,0 1,0,0,3,0,3,2,0,1,1,1,1,1,1 0,0,0,3,2,3,1,0,1,1,1,2,1,0 0,0,9,1,2,10,4,0,1,1,1,0,1,0 1,1,4,3,1,5,5,0,1,1,1,0,1,1 2,2,0,3,0,4,2,0,1,1,1,0,1,1 0,0,3,2,2,3,1,0,0,1,1,0,1,0 0,4,1,2,0,12,2,0,1,1,1,0,1,1 0,0,1,2,0,3,2,0,1,1,1,0,1,0 1,5,0,3,0,4,2,0,1,1,1,0,1,1 1,5,1,2,0,5,2,0,1,1,1,1,1,1 1,0,0,3,1,4,5,0,0,1,1,0,1,0 0,3,1,2,0,8,4,0,0,1,1,0,1,0 0,0,10,3,0,4,2,1,1,1,1,0,1,1 0,0,1,2,1,3,1,4,0,1,1,0,1,0 2,0,12,1,0,1,2,0,1,1,1,0,1,0 0,0,3,2,2,9,3,0,1,1,1,0,1,0 1,2,0,3,1,9,5,0,1,1,1,1,1,0 0,0,3,2,1,1,3,0,1,1,1,1,1,0 0,0,1,2,0,4,1,0,0,1,1,0,1,0 0,0,1,2,2,8,3,4,0,1,1,2,1,0 1,0,6,2,0,3,2,0,1,1,1,0,1,1 2,5,1,2,0,12,2,0,1,1,1,0,1,1 0,0,1,2,2,3,3,0,1,1,1,0,1,0 0,0,3,2,0,4,2,0,1,1,1,0,1,1 1,0,2,1,0,2,0,4,0,1,1,2,1,1 0,0,5,2,1,3,3,0,1,1,1,1,1,1 0,0,3,2,2,2,3,0,1,1,1,1,1,0 1,0,3,2,0,0,2,0,1,1,1,0,1,0 0,1,6,2,2,5,4,0,1,1,1,2,1,0 0,0,1,2,2,1,1,0,1,1,1,0,1,0 2,3,5,2,0,8,2,0,1,1,1,0,1,0 2,0,3,2,0,1,2,0,1,1,1,0,1,0 0,1,3,2,0,10,2,2,1,1,1,0,1,0 2,0,3,2,0,2,2,0,1,1,1,1,1,0 1,0,6,2,0,1,2,0,1,1,1,0,1,1 1,1,3,2,1,3,3,0,0,1,1,1,1,0 1,0,0,3,1,8,5,0,0,1,1,1,1,0 0,3,1,2,5,8,1,0,0,1,1,0,1,0 0,0,3,2,2,1,5,0,1,1,1,1,1,0 1,1,3,2,0,1,2,0,1,1,1,1,1,0 1,0,1,2,0,4,2,0,1,1,1,0,1,0 0,0,1,2,3,8,3,0,0,1,1,0,1,0 0,0,1,2,2,0,1,0,0,1,1,2,1,0 0,5,10,3,2,5,3,0,0,1,1,2,1,0 0,0,3,2,1,4,3,0,0,1,1,1,1,0 0,4,3,2,0,2,2,4,1,1,1,0,1,0 1,4,1,2,1,8,5,0,0,1,1,1,1,0 0,0,1,2,5,8,3,4,0,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,0,1,1 0,0,3,2,3,4,5,0,0,1,1,2,1,0 0,0,0,3,0,3,2,0,1,1,1,0,1,0 0,0,8,0,2,7,5,0,1,1,1,1,1,0 1,0,1,2,0,2,2,1,1,1,1,1,1,1 1,0,1,2,0,1,2,0,1,1,1,1,1,0 0,0,3,2,2,7,3,0,1,1,1,1,1,0 0,0,3,2,0,10,2,0,1,1,1,1,1,0 1,0,3,2,0,3,0,4,0,1,1,0,1,0 0,0,6,2,3,5,3,0,1,1,1,1,1,0 2,2,14,0,0,9,2,0,1,1,1,0,1,0 0,0,3,2,2,8,3,0,0,1,1,0,1,0 1,0,0,3,0,3,2,0,1,1,1,1,1,0 2,0,0,3,1,4,1,0,1,1,1,1,1,0 0,0,3,2,2,7,5,0,1,1,1,2,1,0 0,0,1,2,2,1,4,0,1,1,1,0,1,0 2,2,10,3,0,3,2,0,1,1,1,0,1,1 1,0,10,3,0,8,2,0,1,1,1,0,1,1 0,0,0,3,2,5,1,0,1,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,1,1,1 0,0,0,3,0,3,2,0,1,1,1,1,1,1 1,0,6,2,2,8,1,0,0,1,1,1,1,0 2,0,6,2,4,4,3,0,0,1,1,0,1,0 0,0,3,2,0,9,2,0,1,1,1,1,1,0 0,0,3,2,2,1,3,0,1,1,1,1,1,0 0,0,9,1,2,9,3,2,1,1,1,1,1,0 1,0,0,3,0,3,2,0,1,1,1,1,1,1 1,1,13,3,0,5,2,0,1,1,1,1,1,1 0,0,1,2,0,6,2,0,1,1,1,0,1,0 1,0,1,2,0,7,2,0,1,1,1,1,1,1 0,0,11,0,2,11,3,0,0,1,1,0,1,0 2,0,13,3,1,5,3,0,0,1,1,0,1,0 1,0,3,2,0,7,2,1,1,1,1,0,1,0 0,0,7,1,2,2,5,0,1,1,1,2,1,0 0,0,1,2,2,1,1,0,0,1,1,1,1,0 1,0,1,2,1,4,5,0,0,1,1,0,1,0 0,0,0,3,2,4,3,0,0,1,1,0,1,0 0,0,1,2,0,5,2,0,1,1,1,1,1,1 1,0,3,2,4,8,3,0,0,1,1,0,1,0 0,0,0,3,2,2,3,0,0,1,1,1,1,0 0,0,4,3,0,5,2,0,1,1,1,0,1,1 2,0,3,2,0,7,2,0,1,1,1,0,1,0 2,2,4,3,0,5,2,0,1,1,1,2,1,1 1,0,1,2,2,3,1,0,0,1,1,1,1,0 1,0,3,2,2,8,3,0,0,1,1,0,1,0 0,0,9,1,1,9,3,0,1,1,1,0,1,0 0,0,0,3,2,5,1,1,0,1,1,2,1,0 0,0,7,1,2,6,1,4,1,1,1,0,1,0 1,0,3,2,3,8,3,4,1,1,1,0,1,0 1,0,1,2,0,1,2,4,1,1,1,0,1,0 0,0,0,3,0,5,2,0,1,1,1,0,1,0 2,0,8,0,4,2,5,0,1,1,1,2,1,0 0,4,3,2,3,10,1,0,0,1,1,2,1,0 0,0,8,0,0,9,2,0,1,1,1,0,1,0 1,0,3,2,1,1,3,0,1,1,1,2,1,0 1,2,0,3,0,4,2,1,1,1,1,1,1,1 2,1,1,2,0,4,2,0,1,1,1,0,1,0 0,5,10,3,0,4,2,0,1,1,1,2,1,0 0,0,1,2,0,3,0,0,0,1,1,1,1,1 2,0,12,1,0,3,2,0,1,1,1,0,1,0 1,0,6,2,0,1,2,0,1,1,1,0,1,0 2,0,9,1,1,10,4,4,1,1,1,2,1,0 0,1,13,3,0,5,2,0,1,1,1,2,1,1 1,0,6,2,0,4,2,0,1,1,1,0,1,0 2,0,1,2,0,3,2,0,1,1,1,0,1,1 1,0,6,2,0,0,2,0,1,1,1,0,1,1 0,0,8,0,2,2,1,0,1,1,1,2,1,0 1,0,4,3,0,5,2,0,1,1,1,0,1,1 0,0,3,2,2,6,3,0,1,1,1,1,1,0 1,0,5,2,3,8,5,0,1,1,1,0,1,0 0,1,1,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,3,2,5,0,0,1,1,2,1,0 1,0,3,2,2,2,5,4,0,1,1,2,1,0 0,0,0,3,0,5,2,1,1,1,1,0,1,1 1,4,13,3,0,5,2,0,1,1,1,1,1,1 2,1,3,2,0,9,2,0,1,1,1,1,1,1 0,1,3,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,2,6,1,0,1,1,1,1,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,0 2,0,3,2,4,8,5,0,0,1,1,0,1,0 1,0,1,2,1,8,3,0,0,1,1,2,1,0 1,0,0,3,2,0,3,0,0,1,1,0,1,0 1,0,3,2,0,7,2,4,1,1,1,0,1,0 1,2,1,2,3,3,3,0,0,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,0 0,1,0,3,0,4,0,0,0,1,1,0,1,1 1,0,1,2,0,8,1,4,0,1,1,1,1,1 0,0,3,2,0,6,2,0,1,1,1,0,1,0 0,0,0,3,2,8,1,0,0,1,1,0,1,1 1,0,1,2,0,8,2,0,1,1,1,0,1,1 0,0,10,3,0,5,2,1,1,1,1,2,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,1 0,0,2,1,2,2,4,0,1,1,1,2,1,0 0,0,0,3,0,0,2,0,1,1,1,2,1,0 2,3,1,2,0,8,2,0,1,1,1,0,1,1 1,0,3,2,1,3,1,0,0,1,1,0,1,0 1,0,0,3,2,5,3,0,0,1,1,1,1,0 1,0,15,0,0,7,2,0,1,1,1,0,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,0 1,0,3,2,1,8,3,4,1,1,1,0,1,0 0,0,0,3,2,3,3,0,0,1,1,2,1,1 3,0,8,0,4,12,3,0,1,1,1,2,1,0 0,0,3,2,2,8,1,0,0,1,1,2,1,0 0,0,3,2,0,10,2,0,1,1,1,0,1,0 1,0,3,2,1,8,5,0,0,1,1,0,1,0 0,0,5,2,1,8,1,0,0,1,1,2,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 0,0,1,2,0,0,2,0,1,1,1,0,1,0 1,0,1,2,0,8,2,0,1,1,1,0,1,0 1,0,3,2,0,2,2,0,1,1,1,1,1,0 0,0,3,2,2,8,1,0,0,1,1,0,1,0 1,3,1,2,1,8,5,4,0,1,1,0,1,0 0,0,0,3,0,4,2,0,1,1,1,0,1,0 0,5,1,2,0,1,2,0,1,1,1,2,1,0 0,0,5,2,2,3,1,0,1,1,1,2,1,0 0,0,1,2,1,8,5,0,0,1,1,0,1,0 1,0,5,2,0,0,2,0,1,1,1,1,1,1 0,0,2,1,2,2,4,0,0,1,1,2,1,0 1,4,0,3,0,5,0,4,0,1,1,0,1,1 1,0,6,2,1,3,3,0,1,1,1,1,1,0 1,0,8,0,0,1,2,0,1,1,1,0,1,0 0,0,3,2,2,6,1,4,1,1,1,0,1,0 1,1,6,2,1,2,5,0,0,1,1,0,1,0 0,0,1,2,0,4,2,4,1,1,1,1,1,0 2,4,3,2,1,2,3,4,0,1,1,2,1,0 0,4,3,2,0,8,2,0,1,1,1,2,1,0 2,0,1,2,0,8,0,0,0,1,1,0,1,1 0,0,10,3,0,4,2,0,1,1,1,0,1,0 1,0,3,2,3,2,5,4,0,1,1,2,1,0 0,0,1,2,2,2,1,0,0,1,1,1,1,0 0,0,3,2,2,8,4,0,0,1,1,2,1,0 2,5,7,1,0,10,2,0,1,1,1,0,1,0 1,0,1,2,3,8,1,0,0,1,1,0,1,0 2,4,10,3,2,5,3,0,0,1,1,2,1,1 1,0,3,2,0,5,2,0,1,1,1,1,1,0 1,0,0,3,0,9,2,0,1,1,1,0,1,0 1,0,0,3,1,8,5,0,0,1,1,0,1,0 0,2,0,3,0,2,2,1,1,1,1,1,1,1 2,0,1,2,3,3,5,0,0,1,1,2,1,0 2,0,3,2,1,8,3,0,0,1,1,0,1,0 1,0,3,2,1,1,3,0,1,1,1,0,1,0 0,0,3,2,1,7,5,0,0,1,1,0,1,0 1,4,10,3,0,5,0,0,0,1,1,1,1,1 2,0,0,3,2,2,1,4,0,1,1,2,1,0 0,0,1,2,2,7,3,0,1,1,1,1,1,0 0,0,1,2,0,3,2,0,1,1,1,0,1,1 0,0,3,2,2,2,1,0,0,1,1,2,1,0 1,0,0,3,1,4,3,0,1,1,1,1,1,0 1,0,3,2,0,4,2,0,1,1,1,0,1,0 1,5,10,3,0,8,2,0,1,1,1,0,1,1 0,1,3,2,0,9,2,0,1,1,1,1,1,1 3,2,1,2,0,4,2,0,1,1,1,2,1,1 0,0,3,2,0,4,0,4,0,1,1,0,1,0 1,5,3,2,0,5,2,0,1,1,1,1,1,0 1,0,6,2,4,4,5,0,0,1,1,0,1,0 1,0,3,2,0,6,2,0,1,1,1,0,1,0 0,1,3,2,0,1,2,0,1,1,1,0,1,0 2,0,3,2,0,4,2,0,1,1,1,1,1,1 0,0,1,2,2,8,1,1,0,1,1,0,1,0 1,0,13,3,0,5,2,0,1,1,1,0,1,1 1,0,5,2,1,5,5,0,0,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,2,3,4,4,0,1,1,2,1,0 1,0,1,2,1,8,5,4,0,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,1,1,1 0,0,1,2,2,1,3,0,1,1,1,1,1,0 0,0,3,2,2,8,3,0,0,1,1,0,1,0 1,5,6,2,1,8,3,4,0,1,1,1,1,0 1,0,0,3,3,5,1,3,0,1,1,0,1,0 1,5,13,3,0,5,0,0,0,1,1,2,1,1 0,0,3,2,2,8,1,0,1,1,1,2,1,0 1,0,3,2,3,5,5,4,0,1,1,0,1,0 1,5,0,3,0,5,2,0,1,1,1,1,1,1 0,0,1,2,1,8,5,0,0,1,1,0,1,0 2,0,2,1,4,8,5,0,0,1,1,2,1,0 0,0,1,2,2,8,3,3,0,1,1,0,1,0 2,1,3,2,0,9,2,2,1,1,1,1,1,0 0,0,2,1,2,2,1,0,0,1,1,2,1,0 1,0,10,3,0,4,0,0,0,1,1,2,1,1 1,5,0,3,0,4,2,0,1,1,1,1,1,1 1,0,0,3,3,5,3,4,0,1,1,1,1,1 1,0,1,2,1,1,5,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,5,2,0,4,2,0,1,1,1,1,1,1 1,0,1,2,2,3,3,0,1,1,1,0,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,1 1,5,3,2,1,8,5,0,0,1,1,0,1,0 0,0,1,2,5,8,5,0,0,1,1,2,1,0 1,0,3,2,0,7,2,4,1,1,1,0,1,1 0,0,5,2,2,6,3,0,1,1,1,1,1,0 2,0,3,2,0,7,2,0,1,1,1,1,1,0 2,0,15,0,0,1,2,1,1,1,1,0,1,0 0,0,0,3,0,8,4,0,0,1,1,0,1,0 2,0,3,2,0,8,0,0,0,1,1,0,1,0 0,2,3,2,2,9,1,0,0,1,1,2,1,0 1,4,1,2,0,8,0,4,0,1,1,0,1,0 1,4,10,3,2,5,3,0,0,1,1,0,1,0 2,5,6,2,4,4,5,4,0,1,1,0,1,0 0,0,0,3,5,0,5,4,0,1,1,0,1,0 1,2,1,2,0,4,2,0,1,1,1,1,1,1 0,0,3,2,2,3,4,0,1,1,1,0,1,0 0,1,3,2,3,1,5,0,1,1,1,1,1,0 2,1,4,3,0,5,2,0,1,1,1,2,1,0 0,0,8,0,0,2,0,0,0,1,1,0,1,0 1,3,6,2,1,8,5,4,0,1,1,0,1,1 2,0,7,1,2,6,4,4,1,1,1,2,1,0 1,0,3,2,2,3,3,0,0,1,1,1,1,0 0,0,1,2,0,4,2,0,1,1,1,1,1,0 1,0,1,2,0,8,0,0,0,1,1,0,1,1 2,1,3,2,4,9,3,0,1,1,1,1,1,0 0,0,6,2,0,1,2,0,1,1,1,1,1,0 0,2,3,2,0,1,2,0,1,1,1,1,1,1 0,0,0,3,2,4,5,0,1,1,1,0,1,0 0,0,1,2,2,2,1,0,1,1,1,2,1,0 0,0,0,3,2,4,3,0,0,1,1,1,1,0 2,0,3,2,0,1,2,0,1,1,1,1,1,0 0,0,4,3,2,3,3,0,0,1,1,1,1,1 1,0,3,2,1,8,3,0,0,1,1,0,1,0 1,0,3,2,1,11,3,0,0,1,1,2,1,0 1,3,1,2,1,8,3,0,1,1,1,1,1,0 1,2,9,1,1,1,3,0,1,1,1,2,1,0 1,0,3,2,0,8,0,0,0,1,1,0,1,1 2,1,0,3,0,4,2,0,1,1,1,1,1,0 0,3,0,3,0,5,2,0,1,1,1,0,1,1 0,0,2,1,2,3,1,0,0,1,1,2,1,0 2,1,4,3,1,5,3,0,0,1,1,2,1,0 1,0,3,2,0,4,2,0,1,1,1,0,1,0 1,4,10,3,0,5,0,0,0,1,1,0,1,1 2,1,12,1,1,2,3,4,0,1,1,2,1,0 1,1,0,3,1,5,3,0,1,1,1,1,1,0 1,0,1,2,0,0,2,0,1,1,1,0,1,1 1,4,4,3,2,4,3,0,1,1,1,1,1,1 0,0,0,3,0,5,2,0,1,1,1,1,1,0 0,0,0,3,2,8,1,1,1,1,1,0,1,0 0,0,1,2,0,4,0,0,0,1,1,0,1,1 0,0,3,2,2,8,1,3,0,1,1,2,1,0 0,3,5,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,2,5,3,0,0,1,1,2,1,0 2,4,10,3,0,4,2,0,1,1,1,1,1,1 1,0,1,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,2,6,4,0,1,1,1,2,1,0 0,0,8,0,0,1,2,0,1,1,1,0,1,0 0,0,3,2,3,2,3,4,1,1,1,0,1,0 0,0,1,2,2,8,1,3,0,1,1,2,1,0 0,1,6,2,2,2,5,0,0,1,1,2,1,0 0,3,2,1,2,7,1,0,1,1,1,2,1,0 0,4,1,2,5,8,5,0,0,1,1,0,1,0 1,0,3,2,1,10,3,0,0,1,1,0,1,0 2,0,1,2,0,10,2,0,1,1,1,2,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 2,1,12,1,0,4,0,0,0,1,1,2,1,0 0,0,3,2,0,10,2,0,1,1,1,1,1,0 0,0,8,0,3,6,3,0,1,1,1,0,1,0 0,0,0,3,2,2,3,0,1,1,1,0,1,0 1,0,1,2,1,8,3,0,0,1,1,1,1,0 0,0,2,1,0,1,2,0,1,1,1,1,1,0 2,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,0,3,0,3,2,0,1,1,1,1,1,0 1,0,3,2,3,5,4,4,0,1,1,2,1,1 0,0,12,1,5,8,5,0,0,1,1,0,1,0 2,0,1,2,5,7,3,0,1,1,1,1,1,1 1,4,3,2,0,1,2,0,1,1,1,2,1,0 1,0,8,0,0,4,2,0,1,1,1,1,1,0 0,0,1,2,1,3,5,0,0,1,1,2,1,0 0,0,3,2,2,3,3,0,0,1,1,2,1,0 1,0,10,3,0,3,2,0,1,1,1,0,1,1 1,4,0,3,2,5,5,0,1,1,1,0,1,0 0,5,1,2,1,8,5,0,0,1,1,1,1,0 0,0,1,2,2,2,3,1,0,1,1,2,1,0 1,4,5,2,0,12,2,0,1,1,1,0,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,0 1,0,1,2,0,6,2,0,1,1,1,1,1,0 0,0,5,2,2,6,1,4,1,1,1,2,1,0 0,0,1,2,0,5,2,4,1,1,1,1,1,0 0,0,12,1,0,3,0,0,0,1,1,0,1,0 0,2,3,2,0,4,2,0,1,1,1,0,1,0 2,0,3,2,1,2,3,0,1,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,0 1,0,0,3,2,2,3,0,0,1,1,0,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 0,1,3,2,2,1,1,0,1,1,1,1,1,0 1,0,3,2,0,4,2,0,1,1,1,1,1,0 0,1,3,2,0,4,2,0,1,1,1,0,1,0 0,0,3,2,2,6,1,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 0,0,6,2,0,8,0,0,0,1,1,2,1,0 0,0,1,2,2,3,3,0,0,1,1,1,1,0 1,0,1,2,0,10,2,0,1,1,1,0,1,1 2,3,3,2,1,8,3,0,0,1,1,0,1,0 0,0,1,2,5,8,5,0,0,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,0,1,2,0,1,1,1,1,1,0 2,0,3,2,0,5,2,0,1,1,1,2,1,0 2,0,1,2,1,7,1,0,1,1,1,0,1,0 0,3,0,3,2,10,4,0,1,1,1,2,1,0 0,0,1,2,0,4,2,0,1,1,1,0,1,1 1,0,0,3,0,3,2,0,1,1,1,1,1,1 0,0,2,1,0,1,2,0,1,1,1,0,1,0 0,0,8,0,2,2,5,0,0,1,1,0,1,0 0,0,3,2,2,1,5,4,0,1,1,0,1,0 0,0,12,1,2,1,3,0,0,1,1,0,1,0 1,1,3,2,0,9,2,0,1,1,1,1,1,0 1,0,10,3,0,3,2,0,1,1,1,0,1,0 1,1,3,2,0,9,0,0,0,1,1,0,1,0 2,1,12,1,0,9,2,0,1,1,1,0,1,0 2,1,1,2,0,4,0,0,0,1,1,1,1,1 2,0,3,2,1,1,3,0,1,1,1,1,1,1 2,0,0,3,0,4,2,0,1,1,1,0,1,1 0,4,0,3,2,5,3,1,1,1,1,0,1,0 1,0,5,2,0,3,2,0,1,1,1,1,1,1 0,0,1,2,0,6,2,0,1,1,1,1,1,0 3,0,3,2,4,5,3,0,0,1,1,2,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,0 0,4,0,3,2,5,3,0,1,1,1,1,1,0 0,0,3,2,0,7,2,0,1,1,1,1,1,0 0,0,12,1,2,2,3,0,1,1,1,0,1,0 0,0,10,3,2,5,3,0,1,1,1,0,1,0 1,0,1,2,1,4,5,0,0,1,1,0,1,0 0,0,3,2,2,3,1,0,0,1,1,2,1,0 1,1,1,2,1,8,5,0,0,1,1,2,1,0 0,0,0,3,2,4,3,0,0,1,1,1,1,0 1,0,10,3,1,4,3,0,0,1,1,1,1,0 1,4,0,3,0,5,2,0,1,1,1,1,1,0 1,0,14,0,2,7,5,0,0,1,1,0,1,0 1,0,10,3,2,4,3,0,1,1,1,0,1,0 2,0,1,2,0,3,2,0,1,1,1,1,1,0 1,0,5,2,2,8,3,0,0,1,1,0,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 0,0,0,3,0,1,2,0,1,1,1,1,1,1 2,0,10,3,2,5,4,0,0,1,1,2,1,0 0,0,3,2,2,8,5,0,0,1,1,0,1,0 0,0,3,2,1,10,3,0,1,1,1,0,1,0 1,0,0,3,0,0,2,0,1,1,1,0,1,1 1,0,1,2,1,7,3,0,1,1,1,0,1,0 1,1,6,2,0,1,2,1,1,1,1,0,1,0 0,0,0,3,2,4,5,0,1,1,1,0,1,0 0,4,10,3,0,5,2,0,1,1,1,1,1,1 0,1,2,1,0,1,2,0,1,1,1,2,1,0 0,1,1,2,1,1,3,0,1,1,1,2,1,0 0,0,3,2,1,1,1,0,1,1,1,2,1,0 1,0,3,2,5,8,1,0,0,1,1,2,1,0 0,0,2,1,2,2,1,0,0,1,1,2,1,0 2,0,3,2,0,8,2,4,1,1,1,0,1,0 0,5,3,2,2,10,1,0,1,1,1,0,1,0 1,4,10,3,0,4,2,0,1,1,1,1,1,1 1,0,10,3,0,3,2,0,1,1,1,1,1,0 1,1,12,1,0,9,2,0,1,1,1,0,1,0 0,0,3,2,3,8,1,0,0,1,1,0,1,0 2,0,3,2,1,10,3,0,1,1,1,1,1,1 1,0,1,2,0,8,2,0,1,1,1,0,1,1 0,0,0,3,2,3,3,0,0,1,1,0,1,0 0,0,12,1,2,9,4,0,1,1,1,2,1,0 0,0,3,2,2,1,1,0,1,1,1,0,1,0 1,0,11,0,2,2,5,0,0,1,1,1,1,0 2,0,3,2,0,3,0,0,0,1,1,2,1,0 1,0,6,2,4,5,5,1,0,1,1,0,1,0 2,0,1,2,4,8,3,0,0,1,1,0,1,0 0,0,3,2,2,8,1,0,0,1,1,2,1,0 1,2,1,2,1,4,5,0,1,1,1,1,1,1 1,0,3,2,0,2,0,4,0,1,1,2,1,0 2,0,5,2,0,1,2,0,1,1,1,0,1,0 0,0,0,3,2,4,1,0,0,1,1,1,1,0 0,0,3,2,2,2,3,0,0,1,1,1,1,0 1,0,2,1,1,1,3,0,1,1,1,0,1,0 0,0,3,2,2,4,3,4,1,1,1,0,1,0 0,3,3,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,1,0,3,0,0,1,1,0,1,0 1,0,3,2,1,7,5,0,1,1,1,0,1,0 0,0,2,1,0,6,2,0,1,1,1,0,1,0 2,0,14,0,0,9,2,1,1,1,1,0,1,0 0,0,12,1,2,3,4,0,1,1,1,2,1,0 2,0,1,2,1,8,3,4,0,1,1,1,1,1 2,2,10,3,0,4,2,0,1,1,1,0,1,1 0,0,0,3,0,5,2,0,1,1,1,1,1,1 0,0,0,3,3,3,3,0,1,1,1,1,1,1 0,0,3,2,2,6,1,0,1,1,1,2,1,0 2,3,1,2,0,8,0,0,0,1,1,0,1,1 1,0,3,2,0,8,0,0,0,1,1,0,1,1 1,0,8,0,0,1,2,0,1,1,1,0,1,0 1,4,10,3,0,8,2,0,1,1,1,2,1,1 1,0,13,3,2,5,3,0,1,1,1,1,1,0 1,0,14,0,2,8,4,0,0,1,1,0,1,0 1,0,0,3,0,0,2,0,1,1,1,1,1,1 0,0,7,1,2,7,1,0,1,1,1,2,1,0 0,0,3,2,1,1,3,0,1,1,1,0,1,0 1,4,5,2,3,8,5,0,0,1,1,0,1,0 1,5,3,2,0,6,2,0,1,1,1,0,1,1 1,0,4,3,1,5,5,0,0,1,1,2,1,0 0,0,0,3,2,3,4,0,1,1,1,0,1,0 0,0,5,2,2,8,3,0,0,1,1,2,1,0 0,5,3,2,0,1,2,0,1,1,1,0,1,0 0,0,7,1,2,7,3,0,1,1,1,0,1,0 2,0,1,2,0,3,2,0,1,1,1,1,1,1 1,4,1,2,3,8,1,4,1,1,1,0,1,0 0,0,0,3,0,5,2,0,1,1,1,0,1,0 0,4,12,1,2,2,1,0,1,1,1,2,1,0 0,0,1,2,2,3,1,4,0,1,1,2,1,0 0,0,3,2,0,2,1,4,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,1 1,1,1,2,0,2,0,0,0,1,1,0,1,0 0,0,0,3,2,4,1,0,0,1,1,1,1,0 1,1,13,3,2,5,3,0,1,1,1,1,1,1 1,0,1,2,0,3,2,0,1,1,1,1,1,1 1,0,6,2,0,3,2,0,1,1,1,1,1,0 1,0,5,2,2,1,1,0,1,1,1,0,1,0 0,0,0,3,2,5,3,0,1,1,1,0,1,0 1,0,3,2,0,4,2,0,1,1,1,0,1,0 0,0,2,1,0,1,2,0,1,1,1,0,1,0 1,0,1,2,0,0,0,0,0,1,1,0,1,1 2,4,6,2,1,8,3,4,0,1,1,0,1,0 1,0,14,0,0,7,2,0,1,1,1,0,1,0 0,0,0,3,2,0,3,0,1,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,0 1,3,1,2,2,8,1,0,1,1,1,0,1,0 1,0,1,2,0,7,2,0,1,1,1,0,1,0 1,1,0,3,0,3,2,0,1,1,1,0,1,1 0,0,1,2,0,4,0,4,0,1,1,0,1,1 0,0,5,2,1,2,5,0,0,1,1,1,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,1 0,0,3,2,2,2,3,0,1,1,1,0,1,0 0,0,6,2,0,0,2,0,1,1,1,0,1,0 1,0,6,2,0,4,0,0,0,1,1,1,1,1 1,0,0,3,5,10,3,0,1,1,1,1,1,0 1,0,3,2,0,10,2,4,1,1,1,0,1,0 0,0,3,2,1,8,1,0,1,1,1,0,1,0 1,2,3,2,1,1,3,0,1,1,1,1,1,0 0,0,0,3,2,7,3,0,1,1,1,1,1,0 1,0,3,2,3,6,3,4,1,1,1,0,1,0 1,0,3,2,1,1,3,0,1,1,1,0,1,0 0,1,3,2,1,3,1,0,1,1,1,1,1,0 0,0,0,3,2,3,3,4,0,1,1,1,1,0 0,0,2,1,2,1,5,0,1,1,1,2,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,1 2,0,0,3,0,5,2,0,1,1,1,1,1,0 0,0,3,2,2,7,1,0,1,1,1,0,1,0 1,0,3,2,0,6,2,0,1,1,1,0,1,1 1,2,2,1,4,4,3,0,0,1,1,2,1,0 1,1,0,3,0,4,2,1,1,1,1,0,1,0 1,2,5,2,3,4,5,0,1,1,1,1,1,0 0,0,2,1,2,2,1,0,0,1,1,2,1,0 1,0,6,2,0,1,2,0,1,1,1,0,1,1 0,3,2,1,2,8,3,4,0,1,1,0,1,0 1,0,1,2,1,1,5,4,1,1,1,0,1,0 0,3,0,3,2,0,3,4,0,1,1,0,1,0 1,0,5,2,1,1,3,0,1,1,1,0,1,0 1,0,3,2,0,10,2,0,1,1,1,0,1,1 0,4,0,3,1,5,3,0,1,1,1,0,1,0 1,0,1,2,0,5,2,0,1,1,1,2,1,1 1,0,7,1,2,10,3,0,1,1,1,1,1,0 0,0,1,2,2,7,1,0,1,1,1,0,1,0 0,5,0,3,0,12,2,0,1,1,1,0,1,1 0,5,0,3,2,8,1,0,1,1,1,0,1,0 0,0,0,3,2,3,1,1,1,1,1,0,1,0 1,0,3,2,0,1,2,1,1,1,1,0,1,0 1,0,0,3,0,5,2,0,1,1,1,0,1,1 0,0,9,1,2,3,1,0,1,1,1,2,1,0 0,4,0,3,0,5,2,0,1,1,1,1,1,1 1,0,3,2,0,3,2,0,1,1,1,1,1,0 0,0,12,1,0,1,2,0,1,1,1,0,1,0 0,0,3,2,1,1,5,0,1,1,1,1,1,0 1,5,4,3,0,5,2,0,1,1,1,1,1,1 1,2,4,3,0,5,2,0,1,1,1,1,1,1 2,3,3,2,4,2,5,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 1,1,0,3,0,4,2,0,1,1,1,0,1,1 1,0,13,3,1,5,3,0,1,1,1,1,1,1 0,0,12,1,3,2,5,0,0,1,1,2,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,0 2,0,1,2,1,2,3,0,0,1,1,0,1,0 0,4,1,2,2,8,3,4,0,1,1,0,1,0 1,2,3,2,0,5,2,0,1,1,1,2,1,0 0,0,11,0,0,5,2,0,1,1,1,1,1,0 0,0,7,1,2,3,4,3,0,1,1,2,1,0 1,2,1,2,0,3,2,0,1,1,1,1,1,1 1,0,1,2,4,4,3,2,0,1,1,0,1,0 3,0,14,0,0,10,2,1,1,1,1,2,1,0 2,0,6,2,0,4,2,0,1,1,1,0,1,1 0,4,0,3,2,8,1,1,0,1,1,1,1,0 0,0,3,2,0,5,2,0,1,1,1,2,1,1 1,0,0,3,0,1,2,0,1,1,1,0,1,1 0,0,0,3,2,5,3,4,0,1,1,1,1,0 0,0,3,2,2,3,1,0,0,1,1,2,1,0 2,4,13,3,0,5,2,4,1,1,1,2,1,1 0,0,3,2,2,1,1,4,1,1,1,0,1,0 0,0,1,2,2,0,1,0,1,1,1,0,1,0 0,2,0,3,0,3,2,0,1,1,1,0,1,0 0,4,3,2,0,1,2,0,1,1,1,2,1,0 1,0,2,1,0,7,2,0,1,1,1,0,1,0 0,5,0,3,2,5,3,0,1,1,1,0,1,0 0,0,1,2,2,0,1,0,0,1,1,0,1,0 0,0,3,2,2,4,3,0,0,1,1,0,1,0 0,4,2,1,1,2,5,4,0,1,1,2,1,0 0,0,0,3,2,2,1,0,1,1,1,0,1,0 1,3,0,3,2,4,3,0,1,1,1,0,1,1 0,0,1,2,2,3,1,0,0,1,1,2,1,0 1,0,4,3,0,5,2,0,1,1,1,1,1,1 0,0,14,0,0,9,2,0,1,1,1,0,1,0 0,0,0,3,0,5,2,4,1,1,1,0,1,1 0,0,3,2,2,3,1,0,0,1,1,2,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,1 0,3,10,3,0,5,2,0,1,1,1,0,1,1 0,0,3,2,0,8,2,4,1,1,1,0,1,0 0,0,1,2,2,4,1,0,1,1,1,0,1,0 0,3,3,2,2,8,1,0,1,1,1,2,1,0 0,4,1,2,2,0,3,0,1,1,1,1,1,1 1,0,2,1,1,2,3,0,0,1,1,2,1,0 1,2,4,3,0,5,2,0,1,1,1,1,1,1 0,0,1,2,0,3,2,0,1,1,1,1,1,0 0,3,0,3,0,4,2,0,1,1,1,0,1,1 1,0,12,1,0,1,2,0,1,1,1,0,1,0 1,0,1,2,0,4,2,0,1,1,1,0,1,0 2,4,0,3,0,5,0,0,0,1,1,0,1,0 1,4,10,3,0,5,2,0,1,1,1,1,1,1 0,4,3,2,1,1,5,0,1,1,1,0,1,0 0,0,1,2,2,6,3,0,0,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,1 0,0,2,1,1,4,5,0,0,1,1,0,1,0 1,0,1,2,1,2,5,0,0,1,1,0,1,0 0,0,3,2,0,10,2,0,1,1,1,0,1,1 0,5,10,3,1,4,5,0,0,1,1,1,1,1 2,0,3,2,0,3,0,0,0,1,1,2,1,0 1,1,8,0,0,3,2,0,1,1,1,0,1,0 1,0,9,1,0,1,2,0,1,1,1,0,1,1 1,0,3,2,4,8,5,0,0,1,1,1,1,0 0,0,1,2,2,1,3,4,1,1,1,0,1,0 0,0,0,3,2,5,3,0,0,1,1,2,1,0 1,0,5,2,1,4,3,0,0,1,1,0,1,1 0,5,10,3,2,5,3,0,1,1,1,2,1,0 1,0,0,3,0,10,2,0,1,1,1,1,1,0 1,0,3,2,1,8,3,0,0,1,1,2,1,0 0,0,12,1,2,3,1,0,0,1,1,2,1,0 1,0,6,2,0,5,0,0,0,1,1,2,1,1 2,0,1,2,0,8,0,0,0,1,1,2,1,1 0,4,3,2,2,6,1,4,1,1,1,0,1,0 0,0,2,1,2,6,1,0,1,1,1,2,1,0 1,2,4,3,0,5,2,0,1,1,1,1,1,1 0,0,3,2,0,2,2,0,1,1,1,1,1,0 0,5,1,2,2,5,1,0,1,1,1,2,1,0 0,0,9,1,2,2,1,0,0,1,1,2,1,0 1,0,3,2,0,2,2,0,1,1,1,0,1,0 0,4,6,2,1,12,1,1,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,1 1,0,3,2,0,1,2,0,1,1,1,1,1,1 2,0,10,3,0,5,2,0,1,1,1,1,1,1 0,0,3,2,2,7,1,0,0,1,1,0,1,0 3,0,1,2,0,8,0,0,0,1,1,2,1,1 1,0,3,2,1,5,3,0,0,1,1,1,1,0 2,0,1,2,0,5,2,0,1,1,1,0,1,1 1,0,3,2,0,1,2,0,1,1,1,0,1,1 1,1,0,3,0,4,2,0,1,1,1,1,1,1 1,0,8,0,0,1,2,3,1,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,1 1,5,0,3,0,4,2,0,1,1,1,1,1,1 0,5,3,2,0,1,2,0,1,1,1,0,1,1 1,1,1,2,0,1,2,0,1,1,1,0,1,0 0,0,6,2,2,8,3,0,0,1,1,0,1,0 0,5,0,3,2,5,1,4,0,1,1,0,1,0 1,0,6,2,0,7,2,0,1,1,1,1,1,1 0,0,3,2,0,7,2,0,1,1,1,1,1,0 0,0,11,0,0,1,3,0,1,1,1,2,1,0 2,0,3,2,1,7,3,0,1,1,1,0,1,0 0,0,0,3,2,8,1,0,1,1,1,2,1,0 2,5,6,2,4,2,3,4,0,1,1,2,1,0 0,0,2,1,3,2,5,0,1,1,1,2,1,0 1,0,6,2,1,8,3,0,0,1,1,0,1,0 0,0,3,2,0,7,2,1,1,1,1,0,1,1 1,2,1,2,0,4,2,0,1,1,1,1,1,1 0,5,10,3,2,8,3,0,0,1,1,2,1,0 0,0,3,2,0,1,2,0,1,1,1,1,1,0 0,0,6,2,1,2,5,4,0,1,1,0,1,0 2,0,6,2,0,1,2,1,1,1,1,0,1,1 1,5,10,3,1,4,5,0,0,1,1,0,1,0 1,2,0,3,0,3,2,0,1,1,1,1,1,1 0,0,1,2,2,3,5,0,0,1,1,2,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 0,0,0,3,2,4,3,0,0,1,1,0,1,0 1,5,3,2,0,4,2,0,1,1,1,1,1,1 0,0,0,3,0,3,4,0,1,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,5,2,1,0,3,0,1,1,1,2,1,0 2,0,1,2,4,3,3,0,0,1,1,2,1,0 1,0,3,2,0,9,2,0,1,1,1,2,1,0 2,0,6,2,0,1,2,0,1,1,1,1,1,1 2,0,8,0,1,7,5,0,0,1,1,0,1,0 1,0,3,2,0,1,2,4,1,1,1,2,1,0 0,0,1,2,2,0,4,1,1,1,1,0,1,0 0,1,1,2,0,1,2,0,1,1,1,2,1,0 1,0,0,3,0,7,2,0,1,1,1,0,1,1 2,1,3,2,1,3,3,4,1,1,1,1,1,0 0,0,1,2,2,3,5,0,1,1,1,0,1,0 0,0,3,2,3,3,5,0,0,1,1,0,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,0,3,2,3,3,1,0,1,1,1,1,0 1,0,0,3,2,10,3,0,1,1,1,1,1,0 0,0,5,2,6,8,0,0,0,1,1,0,1,0 0,0,12,1,2,11,1,0,1,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,1 0,0,1,2,0,1,2,0,1,1,1,0,1,1 1,0,1,2,1,7,3,0,0,1,1,0,1,0 2,2,3,2,0,10,2,0,1,1,1,1,1,1 0,0,1,2,2,9,4,0,0,1,1,1,1,0 1,4,2,1,0,2,2,4,1,1,1,1,1,0 0,0,0,3,0,1,2,0,1,1,1,1,1,1 2,0,1,2,4,8,5,0,0,1,1,1,1,0 0,0,1,2,2,5,4,1,0,1,1,2,1,0 1,0,1,2,0,4,2,0,1,1,1,1,1,1 1,5,3,2,0,4,0,0,0,1,1,0,1,0 0,1,4,3,0,5,2,0,1,1,1,1,1,1 0,5,0,3,2,5,3,0,1,1,1,1,1,0 1,1,3,2,0,9,2,0,1,1,1,1,1,1 1,0,8,0,2,2,1,0,1,1,1,1,1,0 0,0,1,2,2,7,1,0,0,1,1,0,1,0 1,0,3,2,2,6,4,0,1,1,1,0,1,0 0,0,0,3,2,8,1,1,0,1,1,0,1,0 0,1,12,1,0,4,2,0,1,1,1,1,1,0 0,4,9,1,0,8,0,0,0,1,1,0,1,0 2,0,12,1,0,10,2,0,1,1,1,0,1,0 2,5,13,3,2,4,3,0,0,1,1,1,1,1 1,0,1,2,1,6,3,0,1,1,1,2,1,0 3,1,1,2,4,10,3,0,1,1,1,0,1,0 1,0,3,2,1,8,1,0,0,1,1,0,1,0 0,0,10,3,2,3,1,4,1,1,1,0,1,0 1,1,3,2,1,9,3,0,1,1,1,1,1,0 0,0,5,2,2,5,5,4,0,1,1,2,1,0 1,2,6,2,0,4,2,0,1,1,1,0,1,1 0,5,0,3,2,5,3,0,1,1,1,1,1,0 1,4,5,2,0,9,2,0,1,1,1,2,1,0 0,0,10,3,0,4,2,1,1,1,1,1,1,1 1,0,11,0,2,2,4,3,0,1,1,0,1,0 1,0,1,2,0,4,0,0,0,1,1,2,1,1 1,4,3,2,0,10,2,0,1,1,1,0,1,0 1,1,0,3,6,5,2,0,1,1,1,1,1,1 1,0,3,2,0,6,2,0,1,1,1,0,1,0 2,0,7,1,1,1,5,0,0,1,1,2,1,1 1,0,8,0,0,7,2,0,1,1,1,0,1,0 2,3,3,2,0,1,2,4,1,1,1,0,1,1 0,0,3,2,1,0,3,0,0,1,1,1,1,0 2,0,10,3,2,6,3,0,1,1,1,0,1,0 0,0,0,3,0,3,2,0,1,1,1,1,1,0 1,1,0,3,2,1,3,2,1,1,1,2,1,0 0,0,3,2,0,1,2,0,1,1,1,1,1,0 0,4,10,3,2,5,3,0,0,1,1,0,1,0 0,0,0,3,2,4,3,0,1,1,1,0,1,0 0,0,5,2,2,5,3,0,1,1,1,1,1,0 0,4,10,3,2,5,3,0,1,1,1,2,1,0 1,5,1,2,0,4,2,0,1,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,0 0,0,3,2,2,6,1,0,1,1,1,2,1,0 0,0,6,2,2,1,1,0,1,1,1,0,1,0 0,0,9,1,2,2,1,0,0,1,1,2,1,0 0,0,0,3,1,3,3,0,0,1,1,0,1,0 0,0,6,2,3,0,5,4,0,1,1,2,1,0 0,0,5,2,2,1,3,0,1,1,1,1,1,0 1,1,3,2,0,1,2,0,1,1,1,0,1,0 0,3,3,2,0,8,2,0,1,1,1,0,1,0 2,1,3,2,0,1,2,0,1,1,1,1,1,0 1,0,14,0,0,7,2,0,1,1,1,0,1,0 0,4,1,2,2,8,5,4,0,1,1,2,1,0 1,0,0,3,0,3,2,0,1,1,1,1,1,1 0,0,3,2,0,6,2,0,1,1,1,1,1,0 1,0,10,3,2,5,3,0,1,1,1,0,1,0 1,4,3,2,0,9,2,0,1,1,1,0,1,0 0,5,10,3,0,5,0,0,0,1,1,1,1,1 0,0,6,2,2,5,3,0,1,1,1,0,1,0 1,2,3,2,0,9,2,0,1,1,1,0,1,1 2,1,0,3,0,3,2,0,1,1,1,2,1,0 2,0,12,1,1,2,5,4,0,1,1,1,1,0 0,0,1,2,2,12,1,0,1,1,1,0,1,0 1,0,0,3,0,0,2,0,1,1,1,2,1,1 1,0,3,2,0,1,2,0,1,1,1,1,1,0 2,0,0,3,0,4,2,0,1,1,1,1,1,1 1,4,10,3,1,5,5,0,0,1,1,1,1,0 1,0,4,3,0,5,2,0,1,1,1,1,1,1 1,0,3,2,1,11,4,4,0,1,1,0,1,0 1,0,1,2,0,4,0,0,0,1,1,2,1,1 0,0,1,2,2,2,1,0,0,1,1,0,1,0 2,0,1,2,0,4,2,0,1,1,1,1,1,1 3,0,10,3,2,5,3,0,1,1,1,1,1,0 1,4,1,2,1,8,3,0,0,1,1,2,1,0 0,0,6,2,2,1,4,0,1,1,1,0,1,0 0,0,0,3,0,5,2,0,1,1,1,1,1,0 0,0,1,2,0,8,2,0,1,1,1,2,1,0 0,0,3,2,2,3,5,0,0,1,1,0,1,0 0,0,3,2,2,4,1,0,1,1,1,0,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,1 1,5,10,3,1,5,5,0,0,1,1,2,1,0 2,0,3,2,1,8,3,1,0,1,1,0,1,0 2,1,0,3,2,9,1,0,1,1,1,1,1,0 1,5,3,2,1,5,3,0,1,1,1,0,1,0 1,1,1,2,1,5,3,0,0,1,1,1,1,0 0,0,3,2,2,6,3,0,1,1,1,1,1,0 0,0,6,2,0,1,2,0,1,1,1,0,1,1 1,0,0,3,0,5,2,0,1,1,1,1,1,1 0,0,1,2,3,6,3,4,1,1,1,0,1,0 0,0,1,2,2,8,3,0,0,1,1,1,1,0 1,5,3,2,2,2,3,0,0,1,1,0,1,0 0,5,3,2,2,3,3,4,0,1,1,2,1,0 1,0,0,3,0,0,2,0,1,1,1,0,1,1 1,0,6,2,0,4,0,0,0,1,1,1,1,1 1,4,3,2,0,4,2,0,1,1,1,0,1,0 2,0,15,0,4,11,4,0,0,1,1,0,1,0 0,0,3,2,1,8,5,0,0,1,1,1,1,0 1,4,3,2,1,6,3,0,1,1,1,0,1,1 0,0,3,2,2,10,1,4,1,1,1,0,1,0 0,1,3,2,0,1,2,0,1,1,1,0,1,1 2,1,10,3,1,5,5,0,0,1,1,2,1,0 0,0,1,2,2,8,3,0,0,1,1,1,1,0 1,2,10,3,0,5,2,0,1,1,1,1,1,1 0,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,3,2,0,4,2,0,1,1,1,0,1,1 0,0,1,2,2,2,4,0,0,1,1,0,1,0 0,3,6,2,2,1,1,0,1,1,1,1,1,0 1,0,8,0,0,10,2,0,1,1,1,1,1,0 1,3,10,3,1,4,3,0,1,1,1,0,1,1 1,2,10,3,0,3,2,0,1,1,1,1,1,1 0,0,12,1,2,2,1,0,1,1,1,2,1,0 2,0,8,0,0,4,2,0,1,1,1,0,1,1 0,0,1,2,0,8,0,4,0,1,1,0,1,1 1,0,10,3,3,7,5,1,0,1,1,1,1,0 0,0,3,2,0,3,2,0,1,1,1,1,1,0 1,1,3,2,3,2,5,0,0,1,1,2,1,0 0,0,1,2,2,0,3,0,0,1,1,2,1,0 0,1,3,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,1,2,5,0,0,1,1,1,1,0 1,0,3,2,1,10,3,0,1,1,1,0,1,0 1,0,1,2,3,2,4,4,0,1,1,0,1,0 0,0,3,2,1,1,3,0,1,1,1,0,1,0 0,2,9,1,0,3,2,3,1,1,1,1,1,0 0,4,1,2,0,1,2,0,1,1,1,0,1,0 2,3,0,3,0,8,2,0,1,1,1,0,1,1 0,0,2,1,1,1,1,0,1,1,1,1,1,0 0,0,1,2,2,2,4,0,0,1,1,0,1,0 0,1,1,2,2,7,3,4,1,1,1,0,1,0 0,0,12,1,2,2,4,0,1,1,1,2,1,0 0,0,12,1,2,2,1,0,1,1,1,2,1,0 2,0,3,2,0,10,2,0,1,1,1,1,1,1 0,0,3,2,1,8,1,0,0,1,1,0,1,0 1,5,0,3,1,5,5,0,0,1,1,2,1,0 1,1,1,2,2,5,3,0,1,1,1,2,1,0 0,0,1,2,0,4,0,0,0,1,1,1,1,1 2,0,11,0,0,2,2,0,1,1,1,2,1,0 1,4,3,2,4,2,5,0,0,1,1,0,1,0 2,1,1,2,0,9,2,0,1,1,1,1,1,0 1,0,5,2,3,8,3,0,0,1,1,0,1,0 0,0,6,2,2,8,1,0,0,1,1,0,1,0 1,0,1,2,2,2,3,0,0,1,1,0,1,0 0,0,0,3,2,4,3,0,0,1,1,1,1,0 1,0,0,3,0,5,2,0,1,1,1,0,1,0 1,0,1,2,0,6,2,0,1,1,1,0,1,0 1,0,3,2,1,8,3,0,1,1,1,2,1,0 1,0,3,2,3,7,5,4,0,1,1,0,1,0 2,3,3,2,2,8,3,4,0,1,1,0,1,0 0,3,0,3,2,4,3,4,1,1,1,0,1,0 0,0,1,2,0,7,2,2,1,1,1,2,1,0 1,0,0,3,2,5,3,0,0,1,1,1,1,0 0,5,1,2,2,9,1,0,1,1,1,2,1,0 1,0,3,2,0,4,2,0,1,1,1,0,1,1 1,1,3,2,0,9,2,0,1,1,1,2,1,0 2,3,0,3,0,4,2,0,1,1,1,0,1,1 1,0,5,2,0,4,2,0,1,1,1,1,1,1 0,0,0,3,0,1,2,1,1,1,1,2,1,1 0,0,0,3,2,3,3,0,0,1,1,0,1,0 1,0,3,2,0,4,0,0,0,1,1,0,1,1 1,0,3,2,0,4,2,0,1,1,1,1,1,1 0,0,1,2,0,3,2,0,1,1,1,1,1,1 2,1,10,3,2,9,3,0,1,1,1,2,1,0 0,0,4,3,0,5,2,0,1,1,1,1,1,1 1,1,0,3,0,4,2,0,1,1,1,1,1,1 0,4,1,2,0,12,2,0,1,1,1,1,1,0 3,3,10,3,4,5,3,0,0,1,1,2,1,0 2,4,3,2,1,6,3,4,0,1,1,2,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,1 1,0,12,1,0,2,2,4,1,1,1,0,1,0 1,0,3,2,6,2,0,0,0,1,1,2,1,0 1,0,3,2,0,10,2,0,1,1,1,0,1,0 2,1,8,0,0,1,2,0,1,1,1,2,1,0 0,0,3,2,2,10,1,0,1,1,1,0,1,0 1,0,6,2,1,4,3,0,1,1,1,0,1,1 0,0,0,3,2,3,3,0,0,1,1,0,1,0 0,0,5,2,2,3,1,0,1,1,1,2,1,0 1,0,0,3,0,4,2,0,1,1,1,0,1,1 0,0,3,2,0,0,2,0,1,1,1,0,1,0 0,0,3,2,0,3,2,0,1,1,1,0,1,0 1,0,1,2,1,4,3,0,0,1,1,0,1,0 0,4,15,0,2,8,1,4,0,1,1,2,1,0 1,0,0,3,3,4,3,0,1,1,1,1,1,1 0,0,1,2,2,3,3,4,0,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,2,3,1,4,1,1,1,0,1,0 0,5,10,3,0,5,2,1,1,1,1,2,1,0 1,0,10,3,1,5,5,0,0,1,1,0,1,1 0,0,0,3,1,4,3,1,0,1,1,0,1,0 2,5,10,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,0,7,2,0,1,1,1,1,1,0 0,0,1,2,2,0,1,4,1,1,1,2,1,0 1,1,1,2,2,2,3,0,1,1,1,0,1,0 1,0,0,3,4,5,5,0,0,1,1,2,1,0 1,1,3,2,0,6,2,0,1,1,1,0,1,0 0,0,1,2,2,8,1,0,0,1,1,2,1,0 1,0,3,2,0,12,2,0,1,1,1,0,1,1 1,5,0,3,2,5,4,0,1,1,1,0,1,0 0,0,9,1,2,3,1,0,0,1,1,2,1,0 2,0,3,2,0,0,2,0,1,1,1,0,1,1 0,0,3,2,0,6,2,0,1,1,1,1,1,0 2,0,0,3,4,2,3,0,1,1,1,2,1,0 2,0,10,3,2,5,3,0,0,1,1,0,1,0 0,4,3,2,0,12,0,0,0,1,1,0,1,0 2,1,1,2,0,9,2,0,1,1,1,2,1,0 0,0,12,1,2,2,5,0,0,1,1,2,1,0 0,0,0,3,2,5,3,0,0,1,1,0,1,0 1,0,1,2,0,10,2,0,1,1,1,1,1,0 0,0,3,2,2,7,1,0,1,1,1,0,1,0 0,1,3,2,2,9,1,0,1,1,1,1,1,0 1,0,3,2,3,7,3,0,0,1,1,0,1,0 0,0,1,2,2,4,3,0,1,1,1,1,1,0 1,0,3,2,4,10,3,0,1,1,1,0,1,0 2,1,3,2,0,2,2,4,1,1,1,2,1,0 1,5,2,1,0,1,2,0,1,1,1,0,1,0 0,0,3,2,2,2,1,0,0,1,1,0,1,0 1,0,0,3,0,0,2,0,1,1,1,1,1,0 0,0,0,3,0,7,2,3,1,1,1,0,1,0 0,0,2,1,2,2,1,0,1,1,1,2,1,0 0,0,3,2,0,8,2,0,1,1,1,1,1,0 0,0,3,2,2,6,4,0,1,1,1,0,1,0 1,1,3,2,0,4,2,0,1,1,1,2,1,0 0,0,10,3,0,4,2,0,1,1,1,1,1,1 1,3,1,2,0,4,2,4,1,1,1,0,1,0 0,0,1,2,3,8,5,0,0,1,1,2,1,0 1,0,3,2,0,5,2,0,1,1,1,0,1,1 0,1,2,1,0,2,0,0,0,1,1,2,1,0 1,0,0,3,2,3,1,0,1,1,1,0,1,0 0,0,0,3,2,3,1,4,1,1,1,0,1,0 2,0,0,3,0,4,2,3,1,1,1,2,1,0 2,0,3,2,0,4,2,0,1,1,1,0,1,1 0,0,5,2,2,1,3,0,1,1,1,2,1,0 1,0,1,2,0,1,2,0,1,1,1,1,1,0 0,1,3,2,0,4,2,0,1,1,1,1,1,0 1,0,3,2,0,6,2,0,1,1,1,1,1,1 1,0,3,2,0,1,2,0,1,1,1,0,1,0 0,1,2,1,2,1,1,0,1,1,1,1,1,0 0,0,0,3,0,5,2,0,1,1,1,1,1,0 1,5,3,2,1,8,1,4,0,1,1,0,1,0 1,2,5,2,0,3,2,0,1,1,1,1,1,1 0,0,6,2,2,1,1,4,1,1,1,0,1,0 0,0,2,1,2,6,1,4,1,1,1,0,1,0 0,0,1,2,2,1,3,0,1,1,1,1,1,0 1,0,1,2,0,5,2,0,1,1,1,2,1,0 1,0,3,2,0,10,2,1,1,1,1,1,1,0 0,0,1,2,4,8,5,0,0,1,1,0,1,0 1,1,13,3,0,5,2,0,1,1,1,2,1,0 1,0,9,1,2,7,3,4,0,1,1,1,1,0 2,5,0,3,1,4,5,4,1,1,1,0,1,0 1,1,8,0,0,2,2,0,1,1,1,1,1,0 1,0,0,3,5,2,3,3,1,1,1,0,1,0 1,0,6,2,1,0,3,0,0,1,1,2,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,1 0,0,0,3,2,8,1,1,0,1,1,1,1,0 0,5,3,2,0,12,2,0,1,1,1,0,1,1 1,0,12,1,2,2,5,4,0,1,1,0,1,0 1,1,0,3,3,1,5,0,1,1,1,2,1,0 0,0,3,2,2,2,3,0,0,1,1,0,1,0 1,0,0,3,0,3,2,0,1,1,1,1,1,1 1,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,6,2,0,3,2,0,1,1,1,1,1,1 0,0,6,2,3,12,3,0,0,1,1,0,1,0 0,0,3,2,2,7,1,0,1,1,1,0,1,0 0,0,1,2,2,3,3,0,1,1,1,1,1,0 0,0,3,2,1,4,3,0,1,1,1,1,1,0 0,0,10,3,0,5,0,1,0,1,1,0,1,1 1,0,14,0,0,2,2,0,1,1,1,0,1,0 1,0,0,3,0,3,2,0,1,1,1,1,1,1 1,0,2,1,0,1,2,0,1,1,1,0,1,0 2,3,0,3,0,8,2,0,1,1,1,0,1,1 1,0,1,2,0,1,2,0,1,1,1,0,1,0 0,1,3,2,0,8,2,0,1,1,1,0,1,0 0,0,1,2,2,8,5,4,0,1,1,2,1,0 1,0,3,2,0,2,0,1,0,1,1,0,1,0 1,0,12,1,0,6,2,0,1,1,1,1,1,0 1,0,1,2,1,1,3,0,1,1,1,1,1,0 0,0,3,2,5,4,4,0,0,1,1,1,1,0 2,0,12,1,3,7,3,4,1,1,1,0,1,0 0,0,3,2,2,8,3,0,0,1,1,0,1,0 0,0,0,3,0,3,2,0,1,1,1,2,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,0 1,2,0,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,3,7,5,0,0,1,1,1,1,0 1,0,3,2,0,3,2,4,1,1,1,0,1,0 1,0,6,2,1,0,5,4,0,1,1,0,1,0 0,0,1,2,0,8,0,0,0,1,1,1,1,0 0,0,1,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,1,4,3,0,1,1,1,1,1,0 0,5,1,2,2,8,1,1,0,1,1,2,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,0 1,4,6,2,0,12,2,4,1,1,1,0,1,0 1,1,10,3,0,4,2,0,1,1,1,1,1,1 1,0,1,2,1,8,5,4,0,1,1,2,1,0 1,0,0,3,0,3,2,0,1,1,1,1,1,0 0,0,1,2,2,2,1,0,1,1,1,2,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 2,5,0,3,1,5,3,0,1,1,1,0,1,1 0,0,2,1,1,2,5,0,0,1,1,2,1,0 1,2,0,3,0,3,2,0,1,1,1,1,1,1 0,0,12,1,2,1,5,0,1,1,1,0,1,0 0,0,1,2,2,2,1,4,0,1,1,2,1,0 1,2,0,3,0,3,2,0,1,1,1,1,1,1 0,1,14,0,0,6,2,0,1,1,1,2,1,0 0,0,3,2,0,3,2,0,1,1,1,0,1,0 1,0,4,3,0,4,2,0,1,1,1,1,1,1 0,0,1,2,2,12,1,4,0,1,1,0,1,0 2,2,1,2,0,4,2,0,1,1,1,2,1,0 1,5,0,3,0,4,2,1,1,1,1,0,1,0 1,5,10,3,2,5,3,0,1,1,1,1,1,0 1,1,3,2,0,1,2,0,1,1,1,0,1,0 2,1,3,2,0,4,2,0,1,1,1,1,1,1 1,0,1,2,1,4,3,0,1,1,1,1,1,0 1,0,0,3,1,4,3,0,1,1,1,2,1,0 1,3,3,2,0,8,2,0,1,1,1,1,1,0 0,0,2,1,0,9,2,0,1,1,1,0,1,0 1,0,2,1,1,3,5,0,1,1,1,1,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 0,0,1,2,2,4,3,0,0,1,1,0,1,0 0,0,1,2,2,2,1,0,1,1,1,2,1,0 1,5,3,2,0,1,2,0,1,1,1,0,1,0 1,0,13,3,0,5,2,0,1,1,1,1,1,1 0,0,5,2,2,7,1,0,1,1,1,0,1,0 1,0,0,3,1,3,3,0,0,1,1,1,1,0 0,0,3,2,0,10,2,4,1,1,1,0,1,0 0,0,3,2,2,7,3,0,0,1,1,0,1,0 1,3,3,2,2,8,5,0,0,1,1,0,1,0 0,4,0,3,1,5,5,0,0,1,1,2,1,0 1,5,3,2,0,12,2,0,1,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,1,1,1 0,0,3,2,2,2,1,0,1,1,1,0,1,0 0,0,10,3,2,8,3,0,0,1,1,0,1,0 2,5,14,0,0,10,2,0,1,1,1,0,1,0 0,0,0,3,2,8,1,0,1,1,1,2,1,0 2,0,3,2,2,7,3,4,0,1,1,0,1,0 0,0,14,0,2,6,4,0,1,1,1,0,1,0 0,4,3,2,0,12,2,0,1,1,1,0,1,1 0,0,0,3,1,5,3,0,1,1,1,1,1,0 0,0,3,2,2,2,3,4,0,1,1,0,1,0 0,0,9,1,0,10,2,0,1,1,1,0,1,0 1,0,3,2,2,1,3,4,1,1,1,0,1,0 1,0,1,2,0,3,2,0,1,1,1,0,1,1 0,0,2,1,2,6,1,0,1,1,1,2,1,0 2,0,4,3,0,4,2,0,1,1,1,0,1,1 2,0,3,2,4,11,3,0,0,1,1,0,1,0 0,0,3,2,2,2,1,0,0,1,1,0,1,0 0,0,12,1,2,2,1,0,0,1,1,0,1,0 2,3,1,2,4,4,3,0,0,1,1,0,1,0 1,3,3,2,0,1,2,0,1,1,1,0,1,1 0,0,3,2,2,6,1,0,0,1,1,0,1,0 2,0,3,2,0,7,2,0,1,1,1,0,1,0 2,0,14,0,1,1,3,0,1,1,1,0,1,0 2,0,3,2,2,1,3,0,1,1,1,0,1,0 0,3,0,3,2,4,3,0,0,1,1,0,1,0 0,0,0,3,2,2,1,4,0,1,1,2,1,0 1,5,3,2,1,4,5,0,0,1,1,1,1,0 1,0,3,2,0,1,0,0,0,1,1,0,1,1 2,1,0,3,0,4,2,0,1,1,1,0,1,1 0,0,12,1,2,2,1,0,0,1,1,2,1,0 0,1,1,2,2,1,3,0,1,1,1,1,1,0 0,0,0,3,2,8,1,0,0,1,1,0,1,0 0,0,4,3,0,5,0,0,0,1,1,1,1,1 0,0,10,3,2,4,3,1,1,1,1,1,1,0 1,0,0,3,0,4,2,0,1,1,1,0,1,1 2,3,1,2,0,4,2,0,1,1,1,0,1,1 1,0,0,3,2,0,3,0,0,1,1,1,1,0 1,0,10,3,1,4,3,0,0,1,1,1,1,1 2,0,1,2,4,8,4,0,0,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,3,2,0,7,2,4,1,1,1,0,1,1 1,0,0,3,0,8,2,0,1,1,1,0,1,0 1,4,1,2,0,8,2,0,1,1,1,0,1,1 0,0,1,2,2,2,1,0,0,1,1,2,1,0 0,0,8,0,0,9,2,0,1,1,1,0,1,0 2,0,1,2,0,3,2,0,1,1,1,0,1,0 0,5,0,3,2,5,1,0,0,1,1,0,1,0 0,0,3,2,0,4,2,0,1,1,1,0,1,1 0,0,5,2,2,7,3,0,1,1,1,1,1,0 2,1,1,2,0,3,2,0,1,1,1,0,1,0 0,0,6,2,3,1,3,0,1,1,1,1,1,1 0,0,1,2,2,8,1,0,0,1,1,2,1,0 0,1,3,2,0,10,2,0,1,1,1,1,1,0 0,0,3,2,0,10,0,4,0,1,1,0,1,0 0,0,2,1,2,1,3,0,1,1,1,1,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,1 0,0,6,2,0,3,2,0,1,1,1,0,1,0 0,4,5,2,0,5,2,0,1,1,1,0,1,1 1,0,1,2,2,1,1,0,0,1,1,2,1,0 0,0,3,2,0,2,2,3,1,1,1,0,1,0 2,0,1,2,0,6,2,0,1,1,1,2,1,0 2,0,1,2,2,0,1,0,1,1,1,2,1,0 0,0,2,1,2,3,1,0,0,1,1,2,1,0 0,2,0,3,0,3,1,0,1,1,1,1,1,1 1,0,0,3,1,4,5,0,0,1,1,0,1,0 0,0,1,2,0,4,2,0,1,1,1,1,1,0 1,0,4,3,1,3,3,0,1,1,1,2,1,0 0,0,1,2,2,8,3,0,0,1,1,0,1,0 1,0,0,3,2,4,3,4,0,1,1,1,1,1 2,0,0,3,0,1,2,0,1,1,1,1,1,1 1,1,0,3,1,3,3,0,1,1,1,1,1,0 0,0,6,2,2,8,3,0,0,1,1,0,1,0 0,0,5,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,1,6,5,0,0,1,1,0,1,0 0,0,1,2,0,3,2,0,1,1,1,2,1,0 2,0,3,2,0,3,2,0,1,1,1,0,1,0 2,0,3,2,1,2,5,0,1,1,1,2,1,0 1,0,9,1,0,3,2,1,1,1,1,0,1,1 0,0,7,1,3,7,5,0,0,1,1,0,1,0 0,0,3,2,1,7,3,0,0,1,1,2,1,0 1,0,3,2,2,2,3,0,1,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,1 0,0,2,1,0,9,2,0,1,1,1,0,1,0 0,0,3,2,2,2,1,0,0,1,1,2,1,0 2,0,2,1,0,2,2,0,1,1,1,2,1,0 0,0,14,0,2,2,3,0,1,1,1,1,1,0 2,0,0,3,0,0,2,0,1,1,1,2,1,0 1,2,0,3,2,0,3,0,1,1,1,1,1,1 0,4,1,2,2,8,3,0,0,1,1,2,1,0 1,0,10,3,0,5,0,0,0,1,1,1,1,0 0,0,1,2,0,7,2,0,1,1,1,1,1,0 0,0,0,3,0,6,2,0,1,1,1,0,1,0 2,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,1,2,2,3,1,2,0,1,1,2,1,0 3,1,8,0,2,9,3,0,1,1,1,2,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,0,3,2,8,3,0,0,1,1,0,1,0 0,0,2,1,2,3,5,0,0,1,1,2,1,0 0,0,2,1,2,6,1,0,1,1,1,2,1,0 2,0,1,2,1,2,3,0,0,1,1,2,1,0 1,4,1,2,0,8,0,0,0,1,1,0,1,0 0,0,14,0,0,6,2,3,1,1,1,0,1,0 1,0,0,3,2,2,3,0,1,1,1,1,1,0 2,0,3,2,0,4,2,0,1,1,1,0,1,1 0,1,5,2,2,1,3,0,1,1,1,0,1,0 1,0,3,2,1,8,5,0,1,1,1,0,1,0 0,0,3,2,2,1,3,0,1,1,1,1,1,0 1,0,14,0,0,2,2,1,1,1,1,0,1,0 0,0,0,3,2,2,3,0,1,1,1,0,1,0 2,0,3,2,1,1,3,0,1,1,1,0,1,0 0,0,3,2,2,2,1,0,1,1,1,1,1,0 0,0,1,2,0,7,2,0,1,1,1,1,1,1 1,0,3,2,0,1,2,0,1,1,1,2,1,0 0,0,1,2,0,6,2,0,1,1,1,0,1,1 1,0,0,3,3,5,5,0,0,1,1,1,1,0 0,1,6,2,1,1,3,0,1,1,1,1,1,0 1,0,3,2,3,3,3,0,1,1,1,1,1,0 1,0,0,3,0,5,0,1,0,1,1,0,1,1 0,0,1,2,2,4,3,0,0,1,1,2,1,0 0,0,1,2,0,1,2,0,1,1,1,1,1,1 0,0,9,1,2,6,3,0,1,1,1,0,1,0 0,0,3,2,2,1,4,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,11,0,2,6,4,0,1,1,1,1,1,0 0,0,0,3,0,3,0,4,0,1,1,1,1,1 0,0,3,2,2,8,3,0,0,1,1,1,1,0 0,0,3,2,0,6,2,0,1,1,1,0,1,0 0,0,3,2,0,7,2,4,1,1,1,0,1,0 0,0,1,2,2,8,1,0,1,1,1,2,1,0 1,2,0,3,0,3,2,0,1,1,1,1,1,0 0,0,3,2,1,6,3,0,1,1,1,0,1,0 0,0,12,1,0,2,0,0,0,1,1,0,1,0 0,2,1,2,0,1,2,0,1,1,1,1,1,0 0,0,3,2,2,7,5,0,1,1,1,0,1,0 1,0,1,2,2,1,3,0,0,1,1,0,1,0 0,0,8,0,0,1,2,0,1,1,1,1,1,0 0,0,1,2,0,3,0,0,0,1,1,1,1,0 1,0,14,0,5,1,4,0,1,1,1,2,1,0 0,0,0,3,2,5,3,0,0,1,1,1,1,0 1,1,1,2,0,9,2,0,1,1,1,0,1,1 0,0,9,1,2,6,3,0,1,1,1,0,1,0 1,3,3,2,0,7,2,0,1,1,1,0,1,1 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,6,2,2,8,3,0,0,1,1,0,1,0 0,0,1,2,0,3,2,0,1,1,1,1,1,1 2,0,1,2,0,1,2,0,1,1,1,0,1,0 0,0,2,1,2,2,3,4,1,1,1,0,1,0 2,1,3,2,0,9,2,0,1,1,1,2,1,0 1,0,3,2,2,10,4,0,1,1,1,1,1,0 0,0,3,2,2,1,1,0,1,1,1,0,1,0 1,0,8,0,1,1,3,0,1,1,1,1,1,0 0,1,3,2,2,2,5,0,0,1,1,2,1,0 1,0,2,1,1,2,5,0,0,1,1,0,1,0 1,0,5,2,1,5,3,0,0,1,1,1,1,0 0,0,1,2,0,3,2,0,1,1,1,2,1,0 1,2,0,3,3,1,1,0,1,1,1,1,1,0 2,0,1,2,0,4,2,0,1,1,1,1,1,0 2,1,1,2,0,4,2,0,1,1,1,1,1,1 0,0,0,3,2,5,1,0,1,1,1,1,1,0 0,0,1,2,2,5,1,0,0,1,1,2,1,0 2,0,8,0,0,1,2,0,1,1,1,2,1,0 2,5,6,2,0,12,2,0,1,1,1,0,1,0 1,4,3,2,2,2,3,4,0,1,1,0,1,0 2,0,8,0,0,7,2,0,1,1,1,0,1,0 1,0,2,1,4,6,5,4,0,1,1,0,1,0 0,0,3,2,3,4,5,0,0,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 0,0,0,3,2,3,3,0,1,1,1,0,1,0 1,0,6,2,0,8,2,0,1,1,1,0,1,0 3,1,1,2,0,1,2,0,1,1,1,2,1,1 0,1,3,2,1,1,3,0,1,1,1,1,1,0 0,0,2,1,3,9,4,0,1,1,1,0,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,1 1,0,3,2,0,7,2,0,1,1,1,0,1,1 2,1,3,2,0,9,2,0,1,1,1,1,1,0 0,0,1,2,2,2,1,0,1,1,1,0,1,0 0,0,3,2,0,4,2,0,1,1,1,1,1,0 0,0,3,2,2,2,1,0,0,1,1,2,1,0 0,0,0,3,0,5,2,0,1,1,1,0,1,1 0,1,5,2,0,1,3,0,1,1,1,1,1,1 0,0,3,2,0,7,2,0,1,1,1,1,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,1 0,4,1,2,2,8,3,0,0,1,1,0,1,0 0,0,1,2,3,5,1,0,1,1,1,1,1,0 1,0,3,2,1,4,5,0,0,1,1,1,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,1 1,0,3,2,1,7,5,4,1,1,1,2,1,0 3,2,3,2,4,3,4,1,1,1,1,2,1,1 1,0,3,2,0,4,2,0,1,1,1,1,1,1 1,2,1,2,0,3,2,0,1,1,1,0,1,0 2,2,3,2,0,3,2,0,1,1,1,0,1,1 0,0,3,2,0,6,2,4,1,1,1,0,1,0 2,0,7,1,0,7,2,0,1,1,1,1,1,0 2,0,3,2,4,3,3,0,1,1,1,2,1,0 2,1,3,2,0,9,2,0,1,1,1,1,1,0 0,0,1,2,0,5,2,0,1,1,1,2,1,1 1,1,1,2,0,9,2,0,1,1,1,1,1,0 1,0,1,2,0,10,2,0,1,1,1,1,1,0 2,1,4,3,0,5,2,0,1,1,1,2,1,0 1,0,2,1,1,2,3,0,0,1,1,2,1,0 0,0,0,3,2,8,1,0,0,1,1,0,1,0 2,0,3,2,3,7,3,0,1,1,1,1,1,0 1,0,2,1,0,3,0,0,0,1,1,0,1,0 1,0,6,2,0,7,2,0,1,1,1,0,1,1 0,0,3,2,2,7,1,0,1,1,1,0,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 1,0,10,3,0,4,2,0,1,1,1,0,1,1 0,0,6,2,2,2,5,2,0,1,1,0,1,0 0,0,6,2,1,5,1,4,1,1,1,0,1,0 0,4,3,2,1,8,1,0,0,1,1,0,1,0 1,0,6,2,0,1,2,0,1,1,1,0,1,0 1,0,1,2,1,6,1,0,1,1,1,0,1,0 1,0,3,2,1,8,5,4,0,1,1,0,1,0 2,1,0,3,0,4,0,0,0,1,1,2,1,0 0,1,3,2,0,1,2,0,1,1,1,1,1,0 0,0,9,1,2,6,1,0,1,1,1,2,1,0 0,0,0,3,2,8,1,0,1,1,1,2,1,0 0,4,5,2,0,12,2,0,1,1,1,1,1,1 0,5,0,3,2,5,3,0,0,1,1,2,1,0 1,2,0,3,0,4,2,0,1,1,1,1,1,1 0,0,0,3,0,8,2,0,1,1,1,1,1,0 1,0,5,2,0,0,2,0,1,1,1,0,1,1 0,4,12,1,0,2,2,0,1,1,1,0,1,0 0,0,10,3,0,4,2,0,1,1,1,0,1,1 1,0,10,3,0,5,2,0,1,1,1,1,1,1 1,5,10,3,0,5,2,0,1,1,1,1,1,1 0,2,3,2,0,3,2,0,1,1,1,1,1,0 2,4,10,3,0,4,2,4,1,1,1,0,1,1 2,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,1,2,0,3,2,0,1,1,1,1,1,1 0,0,0,3,2,3,1,1,1,1,1,0,1,0 1,0,3,2,0,7,2,3,1,1,1,0,1,0 0,0,1,2,2,5,1,0,1,1,1,1,1,0 0,0,0,3,0,3,2,0,1,1,1,0,1,0 1,0,3,2,2,8,5,0,0,1,1,1,1,1 2,0,3,2,0,4,2,0,1,1,1,1,1,0 1,0,3,2,2,8,5,0,0,1,1,2,1,0 2,0,12,1,0,3,2,0,1,1,1,2,1,0 1,0,10,3,2,4,3,0,1,1,1,1,1,1 1,1,1,2,2,5,3,0,1,1,1,0,1,0 0,0,3,2,1,2,3,0,0,1,1,0,1,0 0,0,2,1,5,6,3,1,1,1,1,0,1,0 1,2,5,2,0,1,2,0,1,1,1,1,1,0 0,0,0,3,2,0,3,1,0,1,1,0,1,0 1,2,3,2,1,4,3,0,1,1,1,0,1,1 1,4,0,3,0,5,2,0,1,1,1,0,1,1 0,0,0,3,2,3,1,0,0,1,1,2,1,0 1,0,0,3,2,5,3,0,0,1,1,1,1,0 0,0,3,2,0,9,2,0,1,1,1,1,1,0 0,0,3,2,0,3,2,0,1,1,1,1,1,0 2,0,10,3,0,5,2,1,1,1,1,1,1,1 0,4,0,3,2,4,1,0,1,1,1,0,1,0 1,0,0,3,2,1,3,0,1,1,1,0,1,0 0,0,6,2,2,8,1,0,0,1,1,0,1,0 1,0,1,2,0,2,2,0,1,1,1,0,1,0 1,0,5,2,4,8,5,0,0,1,1,1,1,0 0,0,1,2,2,8,4,0,0,1,1,0,1,0 1,4,1,2,0,4,2,0,1,1,1,0,1,1 0,0,6,2,2,8,3,0,0,1,1,0,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,1 0,0,2,1,2,7,1,0,1,1,1,0,1,0 0,0,3,2,2,2,3,0,0,1,1,2,1,0 0,0,5,2,2,2,1,0,1,1,1,1,1,0 2,0,8,0,4,10,3,0,1,1,1,2,1,0 0,0,3,2,0,5,0,4,0,1,1,0,1,0 0,0,6,2,2,0,3,4,0,1,1,0,1,0 2,0,6,2,0,12,2,4,1,1,1,2,1,1 0,0,2,1,2,3,1,4,0,1,1,2,1,0 1,0,3,2,0,2,2,4,1,1,1,0,1,0 1,0,3,2,5,2,5,0,0,1,1,2,1,0 2,0,3,2,4,10,5,0,1,1,1,1,1,0 2,3,10,3,0,4,2,0,1,1,1,0,1,1 0,0,12,1,2,2,1,0,1,1,1,2,1,0 0,0,3,2,0,4,2,0,1,1,1,1,1,0 1,0,12,1,2,3,1,0,0,1,1,0,1,0 0,0,3,2,2,6,1,0,1,1,1,0,1,0 2,0,12,1,0,1,2,0,1,1,1,1,1,0 0,0,3,2,2,7,3,0,1,1,1,1,1,0 1,0,2,1,2,2,3,0,0,1,1,0,1,0 1,5,10,3,2,5,4,0,0,1,1,0,1,0 0,0,0,3,2,3,1,0,1,1,1,1,1,0 0,0,3,2,0,3,2,0,1,1,1,1,1,0 1,0,1,2,2,10,3,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,0 1,0,8,0,0,7,2,0,1,1,1,0,1,0 1,0,10,3,0,5,2,0,1,1,1,0,1,1 1,0,3,2,0,1,2,0,1,1,1,1,1,1 2,5,6,2,4,5,5,0,0,1,1,0,1,0 1,1,3,2,1,9,4,0,1,1,1,2,1,0 1,0,14,0,2,7,1,0,0,1,1,2,1,0 1,0,8,0,2,7,3,1,1,1,1,1,1,0 0,0,1,2,2,2,3,0,1,1,1,2,1,0 1,0,0,3,0,8,2,0,1,1,1,1,1,0 1,0,1,2,2,2,3,0,1,1,1,1,1,0 1,0,1,2,0,4,2,0,1,1,1,1,1,0 0,0,2,1,2,6,1,0,1,1,1,2,1,0 0,0,5,2,2,5,3,4,0,1,1,2,1,0 2,4,10,3,1,5,3,0,0,1,1,1,1,0 1,0,10,3,0,4,2,0,1,1,1,0,1,1 2,0,3,2,0,10,2,0,1,1,1,0,1,1 0,0,14,0,0,6,2,0,1,1,1,1,1,0 0,0,3,2,0,3,2,0,1,1,1,1,1,0 1,0,9,1,1,10,3,0,1,1,1,1,1,1 1,0,3,2,4,10,5,0,1,1,1,0,1,0 0,0,0,3,2,5,1,0,0,1,1,2,1,0 1,0,3,2,1,4,5,0,0,1,1,1,1,0 1,0,3,2,2,8,3,0,1,1,1,0,1,0 0,0,3,2,2,1,3,0,1,1,1,0,1,0 1,0,0,3,0,1,2,0,1,1,1,1,1,0 0,0,3,2,0,5,2,0,1,1,1,1,1,1 1,0,1,2,0,8,0,0,0,1,1,1,1,1 0,0,1,2,0,1,2,0,1,1,1,2,1,0 1,0,3,2,1,7,3,4,1,1,1,0,1,1 0,0,3,2,0,1,2,0,1,1,1,1,1,0 0,0,1,2,0,4,2,0,1,1,1,0,1,0 2,0,1,2,1,3,3,0,0,1,1,2,1,0 0,0,3,2,2,8,1,0,0,1,1,0,1,0 1,0,0,3,2,4,3,0,0,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,2,1,0 1,1,3,2,0,9,2,0,1,1,1,2,1,0 1,0,1,2,1,8,5,0,0,1,1,2,1,0 3,6,3,2,0,2,2,0,1,1,1,1,1,0 1,0,14,0,0,2,2,0,1,1,1,0,1,0 0,0,1,2,2,3,1,0,1,1,1,2,1,0 2,0,6,2,0,1,2,0,1,1,1,1,1,1 0,0,5,2,0,1,2,0,1,1,1,0,1,0 1,0,0,3,3,8,5,0,0,1,1,0,1,0 0,0,0,3,0,3,2,0,1,1,1,1,1,1 1,0,1,2,0,5,2,4,1,1,1,2,1,0 0,0,0,3,2,8,3,0,0,1,1,1,1,0 0,0,0,3,2,3,3,0,0,1,1,2,1,0 1,1,4,3,0,5,2,0,1,1,1,1,1,1 1,0,3,2,0,4,2,0,1,1,1,1,1,1 0,0,12,1,2,3,1,4,0,1,1,2,1,0 0,0,6,2,1,2,5,0,0,1,1,2,1,0 1,0,3,2,1,1,5,0,1,1,1,0,1,0 1,0,7,1,2,6,1,0,1,1,1,0,1,0 0,0,2,1,0,7,2,0,1,1,1,1,1,0 1,1,0,3,0,9,2,0,1,1,1,1,1,0 0,0,2,1,2,3,3,0,0,1,1,0,1,0 0,0,3,2,0,10,2,0,1,1,1,1,1,0 1,4,6,2,0,10,2,2,1,1,1,0,1,0 0,0,1,2,2,1,3,0,1,1,1,1,1,0 0,0,5,2,0,8,2,0,1,1,1,0,1,1 2,3,1,2,0,4,2,4,1,1,1,0,1,1 1,0,10,3,2,4,3,4,0,1,1,0,1,1 0,0,2,1,2,3,1,0,1,1,1,2,1,0 2,0,14,0,0,10,2,4,1,1,1,1,1,0 2,1,10,3,1,5,3,0,0,1,1,2,1,0 0,0,1,2,2,2,3,0,0,1,1,0,1,0 1,0,3,2,3,6,3,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,2,1,0,6,2,0,1,1,1,1,1,1 0,0,3,2,0,5,2,0,1,1,1,0,1,1 1,0,4,3,1,5,5,0,0,1,1,2,1,0 0,0,1,2,2,5,3,0,0,1,1,0,1,0 0,0,0,3,0,8,4,0,0,1,1,2,1,0 2,0,7,1,0,2,2,0,1,1,1,2,1,0 1,0,9,1,1,7,3,4,0,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,0 1,1,1,2,0,9,2,0,1,1,1,2,1,0 0,0,0,3,0,3,2,0,1,1,1,1,1,1 0,0,10,3,2,5,3,0,0,1,1,2,1,0 1,1,3,2,0,9,2,0,1,1,1,2,1,0 0,0,3,2,2,3,3,0,0,1,1,1,1,0 1,0,12,1,3,8,5,0,0,1,1,0,1,0 0,0,1,2,2,1,3,0,1,1,1,1,1,0 3,0,8,0,0,5,2,4,1,1,1,2,1,0 1,1,4,3,0,5,2,0,1,1,1,2,1,1 2,1,3,2,4,8,5,0,0,1,1,2,1,0 1,0,1,2,1,1,3,0,1,1,1,1,1,0 0,0,3,2,3,6,5,1,0,1,1,1,1,0 0,0,1,2,2,8,1,0,1,1,1,2,1,0 1,5,1,2,1,8,3,0,0,1,1,0,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 1,0,1,2,0,2,2,0,1,1,1,2,1,0 0,0,3,2,1,0,1,1,0,1,1,0,1,0 0,0,5,2,0,8,0,0,0,1,1,0,1,1 0,1,1,2,1,2,3,0,0,1,1,2,1,0 0,0,1,2,2,2,3,0,1,1,1,2,1,0 0,0,1,2,0,4,2,4,1,1,1,1,1,0 2,0,10,3,0,4,2,0,1,1,1,0,1,0 0,0,0,3,0,3,2,0,1,1,1,0,1,1 0,0,1,2,2,8,1,0,0,1,1,2,1,0 1,0,1,2,0,1,2,0,1,1,1,1,1,1 0,0,1,2,2,3,3,0,1,1,1,1,1,0 1,0,9,1,2,6,3,0,1,1,1,0,1,0 0,1,3,2,0,1,2,0,1,1,1,0,1,1 0,0,1,2,2,2,3,1,1,1,1,0,1,0 0,0,1,2,2,7,4,0,1,1,1,1,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 2,0,14,0,4,11,3,1,0,1,1,1,1,0 0,0,1,2,0,8,2,0,1,1,1,0,1,1 0,0,1,2,2,4,3,0,0,1,1,0,1,0 1,3,3,2,0,10,2,0,1,1,1,1,1,0 1,0,3,2,1,1,5,0,1,1,1,1,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,10,3,2,5,3,0,0,1,1,0,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 1,1,3,2,5,2,5,4,0,1,1,0,1,0 1,4,0,3,1,5,5,0,0,1,1,0,1,0 0,0,3,2,2,3,5,0,0,1,1,0,1,0 2,0,13,3,0,4,2,0,1,1,1,1,1,1 1,2,0,3,0,5,2,0,1,1,1,1,1,1 0,0,3,2,2,2,3,0,1,1,1,0,1,0 0,5,1,2,2,1,1,0,1,1,1,2,1,0 0,0,3,2,2,1,4,0,1,1,1,1,1,0 0,0,5,2,2,4,3,0,1,1,1,2,1,0 2,3,3,2,0,8,2,0,1,1,1,0,1,1 2,1,0,3,0,8,2,0,1,1,1,0,1,1 1,1,3,2,1,10,3,0,1,1,1,1,1,0 0,0,0,3,0,3,2,0,1,1,1,0,1,1 1,0,0,3,0,5,0,0,0,1,1,0,1,1 0,0,1,2,2,3,1,0,0,1,1,2,1,0 0,0,1,2,0,3,2,0,1,1,1,0,1,1 1,0,11,0,2,9,3,0,1,1,1,0,1,0 0,4,1,2,2,12,1,1,0,1,1,2,1,0 1,0,3,2,2,3,1,0,0,1,1,0,1,0 1,3,0,3,2,4,3,0,0,1,1,0,1,0 0,0,0,3,2,8,1,0,0,1,1,0,1,0 0,0,3,2,2,9,3,0,1,1,1,0,1,0 0,0,3,2,2,10,1,0,1,1,1,0,1,0 0,0,2,1,2,1,5,0,1,1,1,0,1,0 0,0,0,3,2,3,3,0,1,1,1,2,1,0 1,3,4,3,3,5,5,0,0,1,1,0,1,1 2,0,4,3,0,5,2,0,1,1,1,1,1,1 1,0,1,2,1,7,5,4,0,1,1,0,1,0 2,0,3,2,1,7,3,0,0,1,1,0,1,0 1,0,10,3,3,0,3,0,1,1,1,0,1,1 0,0,3,2,0,2,2,0,1,1,1,1,1,0 2,0,4,3,0,4,2,0,1,1,1,1,1,1 1,0,10,3,0,5,2,0,1,1,1,0,1,1 2,0,10,3,0,4,2,0,1,1,1,1,1,1 0,0,2,1,0,2,0,0,0,1,1,1,1,0 1,0,5,2,0,4,2,0,1,1,1,0,1,1 2,1,1,2,4,7,3,0,0,1,1,0,1,0 2,2,10,3,0,5,2,1,1,1,1,0,1,0 0,0,1,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,2,12,3,4,0,1,1,2,1,0 0,0,1,2,2,9,1,0,1,1,1,1,1,0 1,0,12,1,0,1,2,0,1,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,1 1,0,3,2,0,10,2,0,1,1,1,1,1,0 2,0,10,3,2,5,4,1,0,1,1,0,1,0 2,0,3,2,0,2,0,4,0,1,1,2,1,0 1,1,0,3,0,3,2,0,1,1,1,0,1,1 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,3,1,2,0,8,2,0,1,1,1,1,1,1 0,0,3,2,2,2,5,0,0,1,1,0,1,0 1,0,1,2,1,0,5,0,0,1,1,0,1,0 1,0,1,2,0,9,2,0,1,1,1,1,1,0 1,0,1,2,1,8,1,4,0,1,1,0,1,0 2,0,8,0,0,7,0,0,0,1,1,0,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,0 1,5,0,3,1,5,5,0,0,1,1,0,1,0 1,0,3,2,0,8,2,0,1,1,1,0,1,1 0,0,3,2,2,2,3,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,2,1,2,3,1,0,0,1,1,2,1,0 0,1,1,2,0,3,2,0,1,1,1,2,1,0 1,0,3,2,1,12,3,0,1,1,1,0,1,0 1,0,9,1,0,1,2,0,1,1,1,0,1,1 0,0,3,2,2,8,1,0,0,1,1,2,1,0 0,0,3,2,2,10,1,0,1,1,1,0,1,0 0,0,1,2,2,3,1,0,0,1,1,1,1,0 0,0,3,2,0,4,2,0,1,1,1,1,1,0 0,4,3,2,0,8,0,0,0,1,1,0,1,1 0,4,3,2,2,2,3,4,1,1,1,0,1,0 1,5,1,2,1,10,5,0,1,1,1,2,1,0 0,0,4,3,2,5,3,0,0,1,1,1,1,0 0,0,3,2,2,2,1,0,1,1,1,2,1,0 2,4,0,3,4,5,3,4,0,1,1,2,1,0 0,0,1,2,0,8,2,1,1,1,1,1,1,0 1,0,1,2,1,8,5,0,1,1,1,0,1,0 1,3,5,2,2,5,3,0,1,1,1,0,1,1 1,0,3,2,0,8,2,0,1,1,1,0,1,0 2,0,8,0,0,1,2,0,1,1,1,0,1,1 0,0,3,2,0,10,2,0,1,1,1,0,1,0 1,0,3,2,1,8,3,0,0,1,1,1,1,0 0,0,7,1,2,2,1,2,1,1,1,0,1,0 0,0,3,2,2,8,1,0,0,1,1,0,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 1,0,5,2,0,4,2,0,1,1,1,1,1,0 0,0,0,3,0,5,0,0,0,1,1,1,1,1 1,0,3,2,1,8,5,0,0,1,1,2,1,0 2,0,12,1,0,10,2,0,1,1,1,1,1,0 1,0,3,2,0,8,1,0,1,1,1,0,1,0 0,0,0,3,2,8,1,0,0,1,1,0,1,0 1,0,1,2,1,8,3,0,1,1,1,1,1,0 0,0,2,1,2,3,1,0,1,1,1,2,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,6,2,0,7,2,0,1,1,1,0,1,0 2,0,10,3,0,4,2,0,1,1,1,0,1,1 2,3,3,2,0,0,2,0,1,1,1,0,1,1 1,0,3,2,0,8,2,0,1,1,1,0,1,0 2,0,3,2,0,8,2,0,1,1,1,0,1,1 0,0,3,2,0,7,2,0,1,1,1,0,1,0 1,0,3,2,1,7,5,0,0,1,1,1,1,0 0,1,8,0,2,1,3,0,1,1,1,0,1,0 1,0,1,2,2,1,3,0,1,1,1,0,1,0 1,0,2,1,1,1,3,0,1,1,1,1,1,0 0,0,1,2,0,10,2,4,1,1,1,0,1,0 0,0,0,3,1,6,1,4,1,1,1,0,1,0 0,5,1,2,2,2,1,4,0,1,1,2,1,0 0,0,14,0,2,7,3,0,1,1,1,0,1,0 1,2,1,2,0,3,2,0,1,1,1,1,1,1 0,0,0,3,2,3,1,4,0,1,1,0,1,0 0,0,1,2,2,2,1,0,1,1,1,2,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,1,2,2,3,4,4,0,1,1,2,1,0 1,0,3,2,1,1,5,0,1,1,1,0,1,0 0,1,0,3,0,1,2,0,1,1,1,2,1,0 2,1,0,3,0,1,2,0,1,1,1,0,1,0 1,0,1,2,0,4,2,0,1,1,1,1,1,1 1,3,3,2,0,5,0,4,0,1,1,0,1,0 1,0,3,2,1,1,3,0,1,1,1,1,1,1 0,0,1,2,0,4,2,0,1,1,1,1,1,1 0,0,3,2,2,2,1,0,0,1,1,2,1,0 0,0,10,3,0,2,2,0,1,1,1,2,1,1 1,0,10,3,0,4,0,0,0,1,1,1,1,1 0,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,0,3,0,6,2,0,1,1,1,0,1,0 0,0,3,2,2,8,1,4,0,1,1,0,1,0 0,0,0,3,2,3,3,0,1,1,1,0,1,0 0,0,1,2,0,8,0,0,0,1,1,0,1,0 0,0,3,2,1,10,3,0,1,1,1,1,1,0 1,4,1,2,0,4,2,0,1,1,1,0,1,0 0,5,1,2,0,5,2,0,1,1,1,2,1,0 2,0,1,2,0,4,0,0,0,1,1,0,1,0 0,0,3,2,2,2,5,0,0,1,1,0,1,0 1,0,6,2,0,2,2,0,1,1,1,1,1,0 0,4,1,2,2,6,1,0,1,1,1,0,1,0 1,0,10,3,1,3,3,0,1,1,1,1,1,1 1,1,3,2,0,5,2,0,1,1,1,2,1,0 1,0,3,2,2,1,3,0,1,1,1,0,1,0 2,0,6,2,0,4,0,0,0,1,1,1,1,1 0,0,1,2,0,10,2,0,1,1,1,0,1,1 1,0,0,3,0,0,2,0,1,1,1,2,1,1 0,0,0,3,0,8,4,1,1,1,1,0,1,0 0,0,1,2,2,10,4,0,1,1,1,0,1,0 0,0,6,2,0,1,2,0,1,1,1,0,1,1 0,0,1,2,2,7,4,2,1,1,1,0,1,0 2,0,1,2,0,10,2,0,1,1,1,2,1,1 2,1,0,3,0,4,0,0,0,1,1,2,1,1 2,0,0,3,0,0,2,0,1,1,1,1,1,1 0,0,6,2,2,8,3,0,0,1,1,0,1,0 2,0,8,0,4,2,3,0,0,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,0 0,0,0,3,2,4,3,0,0,1,1,2,1,0 1,0,10,3,2,4,3,0,0,1,1,1,1,0 1,0,3,2,0,7,2,0,1,1,1,1,1,0 1,0,14,0,0,1,2,0,1,1,1,0,1,0 2,4,0,3,0,5,2,0,1,1,1,1,1,1 1,4,6,2,3,8,1,4,0,1,1,0,1,0 0,0,3,2,2,10,3,0,1,1,1,0,1,0 0,0,3,2,0,3,2,0,1,1,1,0,1,0 0,0,3,2,2,7,3,0,1,1,1,2,1,0 1,1,10,3,0,4,2,0,1,1,1,1,1,1 2,0,3,2,4,3,3,0,0,1,1,1,1,0 2,0,3,2,2,3,3,0,1,1,1,0,1,0 0,0,8,0,2,7,1,0,0,1,1,2,1,0 1,0,5,2,2,0,3,0,0,1,1,0,1,0 0,0,3,2,2,8,4,0,0,1,1,1,1,0 0,0,3,2,3,9,5,0,0,1,1,2,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,1 0,0,14,0,0,7,0,1,0,1,1,0,1,1 0,0,1,2,2,3,4,0,1,1,1,1,1,0 1,0,3,2,2,8,3,0,1,1,1,0,1,0 2,0,3,2,5,4,3,0,0,1,1,1,1,0 0,0,1,2,0,7,2,0,1,1,1,0,1,0 0,0,3,2,2,7,1,0,1,1,1,0,1,0 1,0,11,0,0,7,2,0,1,1,1,0,1,0 0,0,1,2,2,2,3,0,1,1,1,2,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,5,2,0,0,2,0,1,1,1,0,1,0 0,0,1,2,2,4,1,0,0,1,1,0,1,0 0,0,3,2,2,6,3,4,1,1,1,2,1,0 2,0,11,0,0,10,2,0,1,1,1,1,1,0 0,0,3,2,2,3,1,0,0,1,1,2,1,0 0,0,1,2,2,3,3,0,0,1,1,2,1,0 0,0,5,2,2,8,3,0,0,1,1,2,1,0 0,4,1,2,2,5,1,0,0,1,1,2,1,0 0,0,3,2,0,6,2,0,1,1,1,0,1,1 0,0,0,3,2,0,3,0,1,1,1,0,1,0 0,0,1,2,2,3,3,0,0,1,1,0,1,0 0,0,6,2,2,3,4,4,1,1,1,1,1,0 1,0,1,2,4,3,3,0,0,1,1,2,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,1,2,0,9,2,0,1,1,1,0,1,0 0,1,3,2,2,2,3,0,0,1,1,1,1,0 0,1,3,2,2,1,1,0,1,1,1,0,1,0 0,0,3,2,3,7,3,0,1,1,1,2,1,0 0,0,1,2,2,6,3,0,1,1,1,0,1,0 2,0,8,0,0,7,2,0,1,1,1,0,1,0 0,0,1,2,2,2,3,4,0,1,1,2,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 0,1,0,3,1,1,3,0,1,1,1,1,1,0 0,0,6,2,1,4,5,0,0,1,1,1,1,0 0,0,5,2,0,0,0,0,0,1,1,0,1,0 2,0,12,1,1,2,3,0,1,1,1,2,1,0 1,0,3,2,0,7,0,0,0,1,1,1,1,0 0,3,5,2,1,8,3,0,0,1,1,0,1,0 0,0,5,2,2,8,3,0,0,1,1,2,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,1,7,5,0,0,1,1,0,1,0 0,0,3,2,2,1,4,1,1,1,1,0,1,0 0,0,3,2,2,8,3,0,1,1,1,0,1,1 2,0,3,2,1,8,5,0,0,1,1,0,1,0 0,0,3,2,2,2,5,0,0,1,1,0,1,0 1,0,3,2,3,1,3,4,1,1,1,0,1,0 0,0,0,3,2,3,3,0,1,1,1,1,1,1 1,1,3,2,0,1,2,0,1,1,1,0,1,0 2,0,11,0,4,7,5,0,0,1,1,1,1,0 0,0,7,1,2,6,3,4,1,1,1,0,1,0 2,0,0,3,0,3,2,0,1,1,1,0,1,1 1,0,3,2,0,3,0,0,0,1,1,0,1,1 0,0,3,2,0,3,2,3,1,1,1,1,1,0 1,0,1,2,0,4,2,0,1,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,0,1,1 2,2,0,3,0,4,2,0,1,1,1,1,1,1 1,4,1,2,0,2,2,0,1,1,1,0,1,1 0,0,0,3,2,4,1,0,0,1,1,0,1,0 1,0,6,2,5,1,5,0,1,1,1,0,1,0 0,0,9,1,2,1,4,0,1,1,1,0,1,0 0,0,8,0,2,8,1,0,1,1,1,1,1,0 0,0,3,2,0,3,2,0,1,1,1,0,1,1 1,4,0,3,2,5,1,4,1,1,1,2,1,0 0,0,9,1,2,2,1,0,0,1,1,2,1,0 1,4,10,3,0,5,2,0,1,1,1,0,1,1 0,0,3,2,2,2,5,4,0,1,1,2,1,0 0,0,3,2,2,2,3,4,0,1,1,0,1,0 2,0,3,2,4,2,5,4,0,1,1,2,1,0 1,0,10,3,0,4,0,0,0,1,1,0,1,1 0,0,0,3,0,4,2,0,1,1,1,0,1,0 2,0,8,0,0,10,2,4,1,1,1,0,1,0 1,5,3,2,2,2,5,4,0,1,1,0,1,0 0,0,1,2,2,2,1,0,0,1,1,0,1,0 0,0,3,2,0,10,2,0,1,1,1,1,1,1 0,5,13,3,0,5,2,0,1,1,1,1,1,1 0,0,0,3,0,4,2,0,1,1,1,1,1,0 0,0,3,2,2,8,5,4,0,1,1,2,1,0 0,0,0,3,2,4,3,0,1,1,1,1,1,1 0,0,3,2,3,2,5,4,0,1,1,0,1,0 1,1,4,3,0,4,2,0,1,1,1,0,1,1 1,0,0,3,0,0,2,1,1,1,1,1,1,1 0,0,3,2,2,10,1,0,1,1,1,0,1,0 1,0,3,2,4,1,5,4,0,1,1,0,1,0 0,1,3,2,0,4,2,0,1,1,1,1,1,0 0,0,12,1,2,3,1,0,0,1,1,2,1,0 0,0,3,2,2,6,1,4,1,1,1,2,1,0 0,2,0,3,2,5,3,0,0,1,1,1,1,1 0,0,3,2,1,3,5,0,0,1,1,0,1,0 0,0,1,2,2,8,3,0,0,1,1,2,1,0 0,0,3,2,2,7,3,0,1,1,1,1,1,0 2,0,1,2,0,5,2,0,1,1,1,1,1,0 1,0,3,2,0,8,0,0,0,1,1,2,1,1 2,0,1,2,0,3,2,0,1,1,1,2,1,0 0,0,1,2,0,1,2,0,1,1,1,1,1,0 0,0,3,2,2,1,1,0,1,1,1,1,1,0 1,1,9,1,0,4,2,0,1,1,1,1,1,1 1,0,3,2,4,3,5,0,0,1,1,0,1,0 1,0,1,2,0,1,2,4,1,1,1,2,1,0 0,0,3,2,2,8,1,0,0,1,1,0,1,0 0,0,1,2,2,8,1,0,0,1,1,0,1,0 0,0,1,2,2,7,1,0,0,1,1,1,1,0 0,2,3,2,0,8,2,0,1,1,1,1,1,0 1,0,12,1,0,4,2,0,1,1,1,1,1,1 0,0,1,2,2,8,5,4,0,1,1,0,1,0 0,0,8,0,2,7,1,0,0,1,1,1,1,0 0,5,1,2,0,8,2,0,1,1,1,0,1,1 1,0,3,2,0,3,2,0,1,1,1,0,1,1 1,0,3,2,2,1,3,4,1,1,1,1,1,0 0,0,3,2,0,10,2,0,1,1,1,1,1,0 0,0,4,3,1,0,3,0,0,1,1,2,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,2,8,3,0,1,1,1,0,1,0 0,0,0,3,2,4,3,0,0,1,1,1,1,0 1,1,7,1,0,10,2,0,1,1,1,1,1,1 1,0,8,0,0,2,0,0,0,1,1,1,1,0 0,0,0,3,0,4,2,0,1,1,1,0,1,1 0,4,5,2,2,1,1,0,1,1,1,2,1,0 0,0,1,2,0,2,0,0,0,1,1,1,1,0 1,4,0,3,0,5,2,0,1,1,1,2,1,0 0,0,0,3,2,0,1,0,0,1,1,0,1,0 0,0,3,2,2,6,4,0,1,1,1,1,1,0 1,0,11,0,0,9,2,0,1,1,1,1,1,0 0,5,1,2,2,2,3,0,1,1,1,2,1,0 0,0,0,3,0,3,2,4,1,1,1,0,1,1 0,0,3,2,1,8,5,0,0,1,1,1,1,0 1,0,10,3,0,5,2,0,1,1,1,1,1,1 1,0,3,2,0,10,2,0,1,1,1,0,1,0 2,0,10,3,1,0,3,0,1,1,1,0,1,1 1,0,3,2,1,1,3,0,1,1,1,1,1,0 1,0,3,2,1,6,5,0,1,1,1,1,1,0 0,0,0,3,2,2,3,0,1,1,1,2,1,0 1,1,6,2,0,9,2,0,1,1,1,1,1,0 1,0,3,2,1,1,3,0,1,1,1,0,1,0 1,0,7,1,1,10,3,4,1,1,1,0,1,0 1,0,3,2,1,1,4,0,1,1,1,0,1,0 1,1,1,2,0,4,2,2,1,1,1,1,1,0 0,0,1,2,2,8,1,0,0,1,1,2,1,0 2,4,13,3,2,5,3,0,0,1,1,1,1,1 0,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,0,3,0,3,2,0,1,1,1,1,1,1 0,0,1,2,2,2,1,0,0,1,1,0,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,0 0,0,3,2,2,7,1,0,0,1,1,2,1,0 2,4,10,3,0,5,0,0,0,1,1,0,1,1 0,4,0,3,0,12,2,4,1,1,1,1,1,1 1,0,0,3,0,4,2,0,1,1,1,0,1,1 1,1,3,2,0,9,2,0,1,1,1,0,1,0 0,0,0,3,2,5,1,0,1,1,1,2,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,0 1,0,3,2,0,4,2,0,1,1,1,0,1,0 0,0,2,1,2,3,1,4,0,1,1,2,1,0 0,0,3,2,5,2,5,0,0,1,1,0,1,0 0,0,1,2,1,1,3,4,1,1,1,0,1,0 1,5,3,2,1,4,5,0,0,1,1,0,1,0 1,0,2,1,1,2,5,4,0,1,1,2,1,0 1,0,0,3,4,11,5,0,0,1,1,2,1,1 1,5,13,3,2,4,3,0,0,1,1,1,1,1 0,0,3,2,0,1,2,0,1,1,1,1,1,1 3,3,13,3,4,4,3,0,1,1,1,2,1,1 0,5,1,2,1,2,5,0,1,1,1,0,1,0 1,2,1,2,0,4,2,0,1,1,1,1,1,0 0,0,1,2,0,2,2,0,1,1,1,1,1,0 0,1,0,3,2,0,3,0,0,1,1,0,1,0 1,0,3,2,0,4,2,0,1,1,1,1,1,0 0,2,3,2,2,10,3,0,1,1,1,1,1,0 0,0,1,2,0,4,2,0,1,1,1,1,1,0 2,0,2,1,0,10,2,0,1,1,1,0,1,0 0,0,10,3,0,4,2,0,1,1,1,1,1,1 0,1,3,2,0,9,2,0,1,1,1,1,1,0 0,0,1,2,0,5,2,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,1,2,0,3,2,0,1,1,1,1,1,0 0,0,3,2,2,5,3,0,1,1,1,2,1,0 1,0,3,2,0,5,2,0,1,1,1,2,1,0 0,0,3,2,2,8,3,0,0,1,1,0,1,0 0,0,1,2,0,4,2,0,1,1,1,1,1,0 1,0,4,3,0,5,2,0,1,1,1,1,1,1 0,0,0,3,2,7,1,0,0,1,1,0,1,0 0,0,1,2,0,7,2,0,1,1,1,0,1,0 1,2,1,2,2,3,3,0,1,1,1,1,1,0 1,0,3,2,0,8,0,0,0,1,1,2,1,1 0,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,1,2,0,1,2,0,1,1,1,0,1,0 1,0,3,2,0,4,2,0,1,1,1,0,1,1 0,1,10,3,0,1,2,0,1,1,1,2,1,0 3,0,8,0,0,6,2,0,1,1,1,2,1,0 2,2,3,2,0,4,2,0,1,1,1,0,1,1 2,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,2,8,1,0,0,1,1,0,1,0 0,0,1,2,0,3,2,0,1,1,1,0,1,0 0,4,3,2,0,7,2,0,1,1,1,0,1,0 1,1,3,2,0,3,2,0,1,1,1,1,1,1 1,0,6,2,2,8,3,0,0,1,1,0,1,0 1,4,9,1,0,8,2,0,1,1,1,2,1,0 0,0,3,2,2,6,3,4,0,1,1,0,1,0 0,0,11,0,2,3,1,0,0,1,1,2,1,0 1,0,1,2,4,4,3,4,0,1,1,0,1,0 0,0,3,2,2,10,3,0,1,1,1,1,1,0 0,5,0,3,2,8,4,0,0,1,1,2,1,0 1,5,0,3,1,8,5,4,0,1,1,0,1,0 1,0,0,3,0,4,2,4,1,1,1,1,1,1 1,0,0,3,1,4,5,4,0,1,1,1,1,0 3,1,3,2,0,9,2,0,1,1,1,0,1,0 1,2,7,1,2,3,1,0,0,1,1,1,1,0 0,5,1,2,0,12,2,0,1,1,1,0,1,0 1,0,5,2,0,5,2,0,1,1,1,1,1,1 1,0,13,3,0,5,2,0,1,1,1,1,1,1 2,1,3,2,0,1,2,0,1,1,1,2,1,0 0,1,3,2,2,1,3,0,1,1,1,1,1,1 1,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,14,0,2,2,5,0,0,1,1,0,1,0 0,0,3,2,2,3,3,0,0,1,1,2,1,0 0,0,2,1,2,6,3,0,1,1,1,2,1,0 0,0,1,2,3,0,5,0,0,1,1,1,1,0 1,0,1,2,1,8,5,0,0,1,1,0,1,0 1,0,3,2,0,6,0,4,0,1,1,0,1,0 0,0,3,2,2,7,1,0,0,1,1,0,1,0 0,3,0,3,0,12,2,0,1,1,1,1,1,1 1,0,0,3,3,4,5,0,1,1,1,0,1,1 1,0,0,3,0,3,2,1,1,1,1,0,1,1 1,1,1,2,0,0,2,4,1,1,1,0,1,1 1,0,3,2,5,1,3,4,0,1,1,0,1,0 1,4,11,0,2,2,3,2,0,1,1,2,1,0 0,0,3,2,2,3,1,0,0,1,1,0,1,0 1,0,3,2,0,8,2,0,1,1,1,0,1,0 1,2,3,2,3,4,5,0,1,1,1,0,1,0 1,0,2,1,3,2,5,4,0,1,1,0,1,0 0,0,3,2,2,1,1,0,1,1,1,0,1,0 0,0,3,2,2,2,3,0,1,1,1,0,1,0 1,0,1,2,0,0,2,0,1,1,1,0,1,1 1,2,3,2,0,1,2,0,1,1,1,1,1,1 1,4,13,3,2,5,5,0,0,1,1,0,1,0 0,0,3,2,0,4,2,0,1,1,1,1,1,1 2,1,1,2,0,10,2,0,1,1,1,1,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,0 1,1,3,2,0,1,2,0,1,1,1,1,1,1 0,0,12,1,2,6,4,0,1,1,1,0,1,0 0,0,2,1,2,6,4,0,1,1,1,2,1,0 1,1,4,3,0,5,2,3,1,1,1,1,1,1 0,0,3,2,2,1,4,0,1,1,1,2,1,0 2,0,13,3,0,5,2,0,1,1,1,1,1,1 1,0,13,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,2,1,3,0,1,1,1,1,1,0 0,0,3,2,2,5,3,0,1,1,1,0,1,0 2,0,0,3,0,12,2,1,1,1,1,0,1,1 1,4,10,3,0,5,2,0,1,1,1,2,1,1 0,3,3,2,2,4,5,0,0,1,1,1,1,0 0,0,0,3,2,3,1,0,1,1,1,0,1,0 0,3,1,2,2,8,1,4,0,1,1,2,1,0 0,0,3,2,2,6,1,0,1,1,1,0,1,0 0,0,3,2,2,6,1,2,1,1,1,0,1,0 0,3,1,2,0,7,2,4,1,1,1,1,1,0 0,0,2,1,2,3,1,0,0,1,1,2,1,0 0,0,2,1,3,2,5,4,0,1,1,0,1,0 0,0,3,2,2,9,3,0,1,1,1,0,1,0 0,0,3,2,1,9,3,0,1,1,1,1,1,0 0,0,3,2,2,7,3,0,1,1,1,0,1,0 0,1,1,2,0,2,2,0,1,1,1,0,1,0 1,4,6,2,0,12,2,0,1,1,1,0,1,1 1,1,0,3,2,5,5,0,0,1,1,1,1,0 1,0,10,3,0,3,2,0,1,1,1,1,1,1 1,0,3,2,2,7,1,0,1,1,1,0,1,0 2,0,3,2,2,8,3,0,0,1,1,0,1,0 0,0,5,2,2,1,3,0,1,1,1,1,1,0 2,0,10,3,0,2,2,0,1,1,1,0,1,0 2,2,0,3,0,4,2,0,1,1,1,1,1,1 1,0,3,2,2,7,3,1,0,1,1,1,1,0 2,0,14,0,0,1,2,0,1,1,1,0,1,0 0,0,3,2,0,1,2,2,1,1,1,0,1,0 0,0,1,2,0,1,2,0,1,1,1,0,1,1 0,5,1,2,2,2,3,0,0,1,1,0,1,0 1,0,5,2,0,0,2,0,1,1,1,1,1,1 1,2,4,3,0,5,2,0,1,1,1,1,1,1 1,0,3,2,2,7,3,0,1,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,0 1,0,3,2,1,7,3,0,1,1,1,0,1,0 1,0,3,2,0,8,2,4,1,1,1,1,1,0 2,2,1,2,2,4,3,0,1,1,1,2,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,1 0,0,0,3,2,5,3,0,0,1,1,0,1,0 2,1,3,2,0,1,2,0,1,1,1,1,1,1 0,0,1,2,2,8,1,0,0,1,1,2,1,0 0,0,1,2,0,1,2,0,1,1,1,0,1,1 0,0,1,2,0,0,0,0,0,1,1,0,1,0 1,1,3,2,0,4,2,0,1,1,1,1,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 0,0,1,2,2,3,3,0,0,1,1,0,1,0 1,0,3,2,0,1,2,4,1,1,1,0,1,0 1,1,10,3,0,5,2,4,1,1,1,1,1,1 0,0,3,2,2,6,1,0,1,1,1,2,1,0 0,0,3,2,0,7,2,0,1,1,1,1,1,0 0,0,10,3,0,5,2,0,1,1,1,0,1,1 1,0,7,1,2,1,3,4,1,1,1,0,1,0 0,0,0,3,2,5,3,0,1,1,1,2,1,0 2,2,4,3,0,5,2,0,1,1,1,1,1,1 1,0,10,3,1,5,3,0,0,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,1,1,0 0,0,2,1,2,3,1,0,0,1,1,2,1,0 0,5,0,3,0,12,2,0,1,1,1,0,1,1 1,0,3,2,1,12,5,0,0,1,1,0,1,0 0,0,3,2,1,2,5,0,0,1,1,2,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,0 2,0,3,2,1,3,5,0,0,1,1,2,1,0 2,0,1,2,0,8,2,0,1,1,1,2,1,0 2,0,8,0,3,2,1,4,0,1,1,2,1,0 1,1,1,2,0,1,2,0,1,1,1,1,1,1 1,0,10,3,1,5,5,0,0,1,1,0,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,1 2,0,1,2,0,2,2,0,1,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,1,1,0 1,0,0,3,0,4,2,0,1,1,1,0,1,1 1,0,3,2,1,8,3,0,0,1,1,1,1,0 1,2,3,2,0,3,2,0,1,1,1,1,1,1 1,3,3,2,2,8,5,0,0,1,1,0,1,0 2,2,1,2,0,4,2,0,1,1,1,1,1,1 2,2,13,3,0,4,2,0,1,1,1,0,1,1 0,0,3,2,2,7,1,4,0,1,1,0,1,0 0,0,1,2,1,8,5,4,0,1,1,2,1,0 0,0,3,2,1,3,1,0,0,1,1,2,1,0 1,0,6,2,1,8,5,0,0,1,1,0,1,0 2,0,0,3,0,4,2,0,1,1,1,2,1,1 0,0,1,2,2,3,4,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,2,1,0 0,0,3,2,2,6,4,0,1,1,1,0,1,0 2,4,1,2,1,2,3,0,1,1,1,1,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 2,5,1,2,0,10,2,0,1,1,1,2,1,0 0,1,1,2,2,3,1,0,0,1,1,2,1,0 1,0,0,3,0,4,2,0,1,1,1,0,1,1 1,2,1,2,0,3,2,0,1,1,1,1,1,1 2,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,0,10,2,0,1,1,1,1,1,1 1,0,3,2,0,8,0,0,0,1,1,2,1,0 3,0,0,3,0,5,2,0,1,1,1,1,1,0 2,0,0,3,0,3,2,0,1,1,1,0,1,0 0,0,3,2,2,1,1,0,1,1,1,0,1,0 1,0,3,2,0,5,2,0,1,1,1,0,1,1 2,0,0,3,2,3,3,0,1,1,1,0,1,0 0,0,3,2,2,7,5,0,1,1,1,0,1,0 1,0,3,2,0,2,2,4,1,1,1,0,1,0 1,0,1,2,2,2,3,0,0,1,1,2,1,0 1,0,3,2,1,8,5,0,0,1,1,2,1,0 0,4,0,3,2,5,3,0,0,1,1,0,1,0 0,0,0,3,2,5,3,0,1,1,1,1,1,1 1,0,10,3,0,5,2,0,1,1,1,1,1,1 1,0,1,2,2,1,1,4,1,1,1,0,1,0 0,0,3,2,0,7,2,0,1,1,1,1,1,0 1,0,12,1,0,2,2,0,1,1,1,2,1,0 0,0,3,2,0,4,2,0,1,1,1,0,1,0 0,4,0,3,2,5,3,0,0,1,1,1,1,0 2,3,0,3,1,4,3,0,1,1,1,0,1,0 0,4,3,2,0,10,2,0,1,1,1,1,1,0 0,4,3,2,0,12,2,0,1,1,1,0,1,1 1,2,1,2,0,9,2,0,1,1,1,0,1,0 1,0,3,2,1,3,1,0,0,1,1,2,1,0 0,4,6,2,2,8,1,0,1,1,1,1,1,0 0,0,0,3,0,4,2,0,1,1,1,0,1,1 1,0,15,0,2,7,3,4,1,1,1,0,1,0 0,0,0,3,2,4,3,0,0,1,1,1,1,0 1,0,1,2,0,1,2,0,1,1,1,1,1,1 0,0,1,2,2,6,3,2,1,1,1,0,1,0 1,0,3,2,1,2,3,0,0,1,1,2,1,0 0,2,3,2,0,4,2,0,1,1,1,0,1,0 0,0,3,2,0,7,0,0,0,1,1,0,1,0 1,3,1,2,1,6,3,0,1,1,1,0,1,0 0,0,2,1,2,2,1,0,1,1,1,2,1,0 1,0,3,2,2,7,5,4,1,1,1,0,1,0 0,0,0,3,0,5,2,0,1,1,1,1,1,0 2,1,8,0,4,9,5,0,1,1,1,1,1,0 1,0,1,2,1,8,5,0,0,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,3,3,5,4,0,1,1,0,1,0 0,0,3,2,2,6,1,4,1,1,1,0,1,0 0,1,12,1,1,1,3,0,1,1,1,1,1,0 0,0,1,2,0,4,0,0,0,1,1,0,1,0 0,0,3,2,2,6,3,0,1,1,1,1,1,0 0,0,7,1,2,2,3,0,1,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,14,0,0,1,2,0,1,1,1,0,1,0 0,0,1,2,0,1,2,0,1,1,1,1,1,1 0,3,3,2,2,8,3,0,1,1,1,0,1,0 2,1,3,2,0,1,2,0,1,1,1,1,1,1 0,0,1,2,1,8,5,0,0,1,1,0,1,0 1,0,0,3,2,4,3,0,0,1,1,2,1,0 1,0,3,2,1,2,3,3,0,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,2,1,2,2,1,0,0,1,1,2,1,0 0,0,3,2,2,2,3,4,1,1,1,0,1,0 1,1,10,3,2,4,3,0,0,1,1,1,1,0 1,3,7,1,0,7,2,0,1,1,1,0,1,1 0,3,1,2,2,0,3,0,1,1,1,0,1,0 1,5,3,2,1,8,3,0,0,1,1,2,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,10,3,0,5,2,1,1,1,1,1,1,1 1,0,0,3,3,5,5,4,0,1,1,2,1,0 0,0,3,2,2,8,1,0,0,1,1,0,1,0 1,0,1,2,1,5,5,0,0,1,1,2,1,0 2,0,3,2,4,4,3,0,0,1,1,0,1,0 1,3,6,2,0,8,0,0,0,1,1,2,1,0 1,5,3,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,2,4,1,0,0,1,1,2,1,0 1,0,14,0,0,3,0,0,0,1,1,2,1,0 0,0,14,0,0,2,2,0,1,1,1,1,1,0 0,0,2,1,2,2,1,0,0,1,1,2,1,0 2,1,3,2,3,9,5,0,0,1,1,1,1,0 2,0,8,0,0,9,2,4,1,1,1,0,1,0 2,3,1,2,0,8,2,0,1,1,1,0,1,1 1,0,0,3,1,4,3,0,1,1,1,1,1,1 0,0,1,2,0,1,2,0,1,1,1,0,1,0 2,0,3,2,1,8,5,4,0,1,1,0,1,0 1,0,5,2,0,3,0,0,0,1,1,2,1,0 0,0,1,2,0,1,2,0,1,1,1,1,1,0 1,0,10,3,0,5,2,1,1,1,1,0,1,1 1,0,6,2,0,0,0,0,0,1,1,2,1,1 1,0,0,3,0,4,2,0,1,1,1,1,1,1 0,4,3,2,0,6,2,0,1,1,1,0,1,0 0,1,2,1,3,6,5,0,0,1,1,0,1,0 2,4,0,3,4,5,5,0,0,1,1,1,1,1 0,0,0,3,2,4,1,0,1,1,1,0,1,0 0,0,0,3,2,5,5,0,0,1,1,1,1,1 0,0,3,2,2,1,1,0,1,1,1,1,1,0 0,0,3,2,2,3,1,0,1,1,1,2,1,0 0,0,0,3,0,7,2,0,1,1,1,1,1,0 3,3,3,2,0,1,2,0,1,1,1,2,1,0 1,4,3,2,1,8,5,0,0,1,1,0,1,0 0,0,3,2,2,1,1,4,1,1,1,2,1,0 0,0,3,2,5,2,1,4,1,1,1,0,1,0 0,0,1,2,2,2,3,0,0,1,1,1,1,0 1,0,7,1,0,1,2,0,1,1,1,0,1,0 2,0,3,2,0,1,2,0,1,1,1,0,1,1 1,0,0,3,0,4,2,0,1,1,1,1,1,1 0,2,3,2,2,4,3,0,1,1,1,1,1,1 1,0,7,1,0,9,2,0,1,1,1,0,1,0 0,0,1,2,2,1,5,0,1,1,1,1,1,0 2,0,3,2,3,10,5,4,0,1,1,0,1,0 2,0,0,3,0,4,2,0,1,1,1,0,1,1 0,0,12,1,1,7,1,0,0,1,1,0,1,0 0,0,3,2,2,6,1,0,1,1,1,1,1,0 1,1,5,2,0,1,2,0,1,1,1,2,1,0 1,0,7,1,0,6,2,0,1,1,1,0,1,0 0,0,14,0,5,1,4,0,1,1,1,0,1,0 0,0,1,2,2,3,3,1,0,1,1,1,1,0 0,0,3,2,2,1,1,0,1,1,1,1,1,0 0,0,3,2,0,1,2,0,1,1,1,1,1,0 1,0,5,2,0,1,2,0,1,1,1,1,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 1,5,3,2,1,8,3,4,0,1,1,2,1,0 1,0,3,2,0,9,2,0,1,1,1,0,1,0 0,0,3,2,2,2,1,0,1,1,1,2,1,0 0,0,0,3,2,8,1,0,0,1,1,0,1,0 1,0,7,1,0,2,2,0,1,1,1,1,1,0 2,0,3,2,1,3,5,4,0,1,1,0,1,0 0,1,6,2,0,4,2,0,1,1,1,1,1,0 0,5,0,3,2,12,3,4,0,1,1,0,1,0 0,0,3,2,0,4,2,0,1,1,1,0,1,0 0,3,1,2,2,8,4,0,1,1,1,0,1,0 1,0,8,0,4,2,3,0,0,1,1,0,1,0 0,0,1,2,2,8,1,0,0,1,1,2,1,0 1,0,5,2,1,1,3,0,1,1,1,0,1,0 1,2,1,2,0,10,2,0,1,1,1,0,1,1 2,0,11,0,3,11,4,0,0,1,1,0,1,0 0,0,0,3,1,3,3,0,1,1,1,0,1,0 0,0,6,2,2,0,3,0,0,1,1,0,1,0 0,0,1,2,0,5,2,0,1,1,1,0,1,1 2,0,13,3,0,5,2,1,1,1,1,0,1,1 0,0,0,3,2,2,4,0,0,1,1,0,1,0 2,1,0,3,4,3,5,0,0,1,1,2,1,0 1,0,0,3,3,8,5,0,0,1,1,0,1,0 0,0,5,2,2,10,3,4,1,1,1,2,1,0 0,0,3,2,0,6,2,0,1,1,1,0,1,0 0,0,2,1,2,8,1,0,0,1,1,2,1,0 1,0,3,2,0,7,0,0,0,1,1,0,1,0 1,3,4,3,0,5,2,0,1,1,1,1,1,1 0,0,3,2,0,1,2,0,1,1,1,1,1,0 1,0,6,2,1,3,5,0,0,1,1,0,1,0 1,4,10,3,0,4,2,0,1,1,1,1,1,1 3,0,8,0,0,6,2,0,1,1,1,2,1,0 1,4,1,2,1,5,3,0,0,1,1,0,1,0 0,0,3,2,2,3,5,0,0,1,1,1,1,0 0,0,12,1,2,3,4,0,1,1,1,0,1,0 1,0,4,3,2,4,3,0,1,1,1,0,1,1 0,0,3,2,2,3,3,0,1,1,1,2,1,0 2,4,6,2,1,5,5,0,1,1,1,0,1,1 0,0,1,2,2,7,3,0,1,1,1,0,1,0 1,0,2,1,0,7,2,0,1,1,1,0,1,0 1,0,0,3,1,4,3,0,0,1,1,1,1,0 0,4,10,3,2,5,3,0,0,1,1,0,1,0 0,5,0,3,2,5,1,0,1,1,1,2,1,0 1,2,0,3,0,1,2,0,1,1,1,1,1,1 1,0,10,3,0,4,2,0,1,1,1,1,1,1 1,0,0,3,1,4,5,0,0,1,1,0,1,1 0,0,3,2,0,3,2,0,1,1,1,0,1,0 1,0,1,2,4,5,5,0,0,1,1,0,1,0 1,0,12,1,0,7,1,0,0,1,1,0,1,0 1,0,3,2,1,7,3,4,1,1,1,0,1,0 2,0,3,2,1,4,3,0,0,1,1,0,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,1 1,0,1,2,1,8,5,0,0,1,1,2,1,0 0,0,10,3,2,4,3,4,0,1,1,1,1,0 1,0,3,2,0,8,0,0,0,1,1,2,1,0 1,0,0,3,0,5,2,0,1,1,1,0,1,1 1,0,1,2,0,5,2,0,1,1,1,0,1,1 2,0,3,2,1,7,3,0,0,1,1,0,1,0 0,0,0,3,0,3,2,0,1,1,1,0,1,1 0,0,5,2,2,5,3,0,0,1,1,2,1,0 2,0,1,2,1,5,3,0,0,1,1,1,1,0 0,0,1,2,0,1,2,0,1,1,1,1,1,0 0,0,10,3,0,5,2,1,1,1,1,1,1,1 2,0,3,2,4,2,3,0,0,1,1,2,1,0 1,0,6,2,1,4,3,0,0,1,1,1,1,0 2,0,8,0,0,1,2,4,1,1,1,0,1,0 1,0,10,3,0,5,2,0,1,1,1,2,1,1 0,0,0,3,0,3,2,0,1,1,1,1,1,1 1,2,0,3,0,4,2,0,1,1,1,1,1,1 2,0,14,0,0,2,2,1,1,1,1,0,1,0 0,0,1,2,2,8,3,0,1,1,1,2,1,0 0,0,1,2,0,1,2,0,1,1,1,1,1,0 0,0,12,1,1,7,3,0,0,1,1,0,1,0 0,4,2,1,2,1,1,0,1,1,1,2,1,0 2,0,10,3,0,6,2,0,1,1,1,1,1,0 1,0,3,2,0,7,2,0,1,1,1,1,1,1 1,4,5,2,0,6,2,0,1,1,1,0,1,0 0,0,12,1,2,6,1,0,1,1,1,2,1,0 0,4,3,2,0,1,2,0,1,1,1,0,1,0 1,3,1,2,1,0,5,4,0,1,1,0,1,0 0,0,3,2,0,4,0,0,0,1,1,0,1,0 1,0,1,2,4,8,5,0,0,1,1,2,1,0 1,3,10,3,0,1,2,0,1,1,1,0,1,0 1,5,0,3,0,4,2,0,1,1,1,0,1,0 1,0,3,2,2,2,3,4,1,1,1,0,1,0 0,0,3,2,2,8,5,0,0,1,1,1,1,0 0,0,3,2,2,2,1,1,0,1,1,0,1,0 1,1,7,1,0,1,2,0,1,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,0,10,2,0,1,1,1,1,1,0 1,0,0,3,0,10,2,0,1,1,1,0,1,0 1,0,1,2,1,6,1,0,1,1,1,0,1,0 2,0,8,0,0,3,2,0,1,1,1,0,1,0 0,0,1,2,2,3,1,0,1,1,1,0,1,0 0,0,1,2,0,1,2,0,1,1,1,0,1,0 0,1,3,2,3,2,5,0,0,1,1,1,1,0 1,5,3,2,0,10,2,0,1,1,1,0,1,0 0,2,0,3,0,3,2,0,1,1,1,1,1,1 0,0,3,2,0,4,2,0,1,1,1,2,1,0 0,0,0,3,0,1,2,0,1,1,1,1,1,1 0,0,11,0,2,9,3,3,1,1,1,1,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,0 0,0,0,3,2,4,3,0,1,1,1,1,1,0 1,0,3,2,2,6,1,0,1,1,1,0,1,0 1,0,3,2,0,3,2,0,1,1,1,2,1,1 1,0,0,3,2,5,4,0,0,1,1,0,1,0 1,4,1,2,0,12,2,0,1,1,1,1,1,0 1,1,14,0,0,1,2,0,1,1,1,0,1,0 1,5,0,3,0,5,2,0,1,1,1,0,1,0 1,0,5,2,0,3,2,0,1,1,1,1,1,1 1,1,1,2,2,7,3,0,1,1,1,2,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 1,4,1,2,0,12,2,0,1,1,1,1,1,1 0,0,6,2,1,6,5,0,1,1,1,1,1,0 1,0,1,2,1,8,3,4,0,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,1 0,0,3,2,2,7,1,0,1,1,1,0,1,0 1,4,3,2,0,7,2,4,1,1,1,0,1,0 1,0,5,2,0,4,2,0,1,1,1,0,1,1 1,0,1,2,2,12,1,4,1,1,1,2,1,0 1,0,1,2,1,8,5,0,0,1,1,1,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,0,3,2,2,3,0,0,1,1,2,1,0 2,0,0,3,0,5,2,0,1,1,1,0,1,0 0,0,2,1,2,1,3,0,1,1,1,1,1,0 0,4,1,2,2,12,1,0,1,1,1,0,1,0 0,0,3,2,2,3,3,0,0,1,1,1,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,1 2,0,1,2,0,2,2,0,1,1,1,2,1,0 0,0,1,2,2,1,1,0,1,1,1,2,1,0 1,0,1,2,0,7,2,3,1,1,1,0,1,1 0,0,2,1,2,2,1,0,1,1,1,2,1,0 0,0,5,2,2,3,1,0,0,1,1,2,1,0 1,0,3,2,2,2,1,0,1,1,1,0,1,0 1,0,2,1,3,7,3,0,0,1,1,0,1,0 2,3,3,2,0,4,2,0,1,1,1,0,1,0 0,0,5,2,2,3,3,0,1,1,1,1,1,0 1,0,3,2,0,2,2,0,1,1,1,1,1,0 1,0,3,2,2,10,1,4,1,1,1,1,1,0 1,0,1,2,0,10,2,0,1,1,1,0,1,0 0,0,0,3,2,3,3,0,1,1,1,0,1,0 0,4,0,3,0,5,2,0,1,1,1,0,1,1 1,0,3,2,1,3,3,0,1,1,1,1,1,0 0,0,0,3,2,2,1,0,0,1,1,2,1,0 2,0,6,2,0,4,2,0,1,1,1,0,1,1 1,1,1,2,0,1,2,0,1,1,1,1,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,0 1,3,6,2,1,1,3,2,0,1,1,1,1,0 2,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,1,2,0,10,2,0,1,1,1,1,1,1 1,1,4,3,0,5,2,1,1,1,1,1,1,1 1,1,4,3,0,5,2,0,1,1,1,2,1,1 0,0,1,2,2,3,3,0,0,1,1,0,1,0 0,0,3,2,2,9,3,0,1,1,1,0,1,0 0,0,3,2,1,2,3,0,1,1,1,2,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,2,1,2,10,1,0,1,1,1,2,1,0 1,0,0,3,0,3,2,0,1,1,1,1,1,1 1,5,6,2,0,2,2,1,1,1,1,0,1,0 0,0,3,2,2,6,1,0,1,1,1,0,1,0 1,0,3,2,0,3,2,0,1,1,1,1,1,0 1,0,1,2,1,2,3,0,1,1,1,2,1,0 2,0,1,2,4,5,3,0,1,1,1,1,1,0 0,0,7,1,2,7,1,4,0,1,1,0,1,0 0,0,4,3,2,5,3,1,1,1,1,1,1,0 1,5,1,2,1,8,5,0,0,1,1,2,1,0 0,0,2,1,2,2,1,0,1,1,1,2,1,0 0,0,0,3,2,8,3,0,1,1,1,1,1,0 2,0,13,3,0,0,2,0,1,1,1,0,1,1 0,0,10,3,2,8,3,4,0,1,1,0,1,0 1,0,10,3,0,4,2,0,1,1,1,0,1,1 0,0,1,2,0,1,2,0,1,1,1,2,1,0 0,0,5,2,1,2,3,0,0,1,1,2,1,0 0,0,6,2,0,1,2,0,1,1,1,0,1,0 1,4,0,3,0,5,0,0,0,1,1,2,1,1 0,1,3,2,0,9,2,0,1,1,1,1,1,0 1,0,1,2,1,0,5,0,0,1,1,0,1,0 0,0,1,2,0,1,2,0,1,1,1,1,1,1 0,0,1,2,2,3,1,0,1,1,1,2,1,0 1,0,0,3,0,4,0,0,0,1,1,0,1,1 2,4,10,3,1,5,3,0,0,1,1,0,1,0 1,0,3,2,1,1,5,0,1,1,1,0,1,0 0,0,1,2,5,3,1,3,0,1,1,2,1,0 0,0,3,2,2,2,3,0,1,1,1,0,1,0 1,0,7,1,0,6,2,0,1,1,1,0,1,0 2,1,8,0,0,10,2,0,1,1,1,0,1,1 0,2,0,3,1,3,5,0,0,1,1,0,1,0 1,0,10,3,0,5,0,0,0,1,1,1,1,1 0,4,0,3,2,8,3,4,0,1,1,1,1,0 1,4,6,2,1,4,1,0,1,1,1,0,1,0 0,0,2,1,2,1,3,1,1,1,1,0,1,0 0,2,3,2,0,4,2,0,1,1,1,1,1,0 1,2,5,2,0,3,2,0,1,1,1,1,1,0 0,0,1,2,2,4,3,0,1,1,1,1,1,0 2,0,10,3,1,5,3,0,0,1,1,2,1,0 1,0,10,3,0,5,2,0,1,1,1,0,1,1 1,1,3,2,0,3,2,0,1,1,1,1,1,0 1,0,6,2,0,8,2,0,1,1,1,0,1,1 2,1,3,2,0,3,2,0,1,1,1,2,1,0 1,3,3,2,0,8,2,0,1,1,1,1,1,1 0,0,3,2,0,1,2,0,1,1,1,0,1,1 2,0,1,2,4,3,5,0,0,1,1,1,1,1 1,1,1,2,0,4,2,0,1,1,1,1,1,1 0,0,3,2,2,9,5,0,1,1,1,0,1,0 0,0,3,2,2,6,1,0,0,1,1,2,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 0,0,3,2,2,2,1,4,1,1,1,2,1,0 0,0,1,2,0,3,2,0,1,1,1,0,1,0 2,0,2,1,2,9,3,0,1,1,1,2,1,0 0,0,1,2,2,6,3,0,1,1,1,2,1,0 0,0,14,0,5,1,3,0,1,1,1,0,1,0 2,0,3,2,0,1,2,0,1,1,1,0,1,0 2,1,6,2,0,9,2,0,1,1,1,2,1,1 1,0,3,2,0,0,2,0,1,1,1,0,1,1 0,4,0,3,2,5,3,4,0,1,1,0,1,0 0,0,1,2,0,7,2,0,1,1,1,0,1,1 3,1,3,2,0,2,2,0,1,1,1,0,1,0 1,0,12,1,2,10,3,4,0,1,1,0,1,0 1,0,10,3,0,4,2,0,1,1,1,0,1,1 1,0,3,2,0,8,2,0,1,1,1,1,1,1 1,5,3,2,3,2,3,0,0,1,1,2,1,0 1,0,3,2,4,8,5,0,0,1,1,0,1,0 0,0,3,2,0,10,2,0,1,1,1,0,1,0 1,0,1,2,0,3,2,4,1,1,1,1,1,1 2,2,4,3,0,5,2,0,1,1,1,2,1,1 2,0,1,2,4,9,3,0,1,1,1,1,1,1 0,0,0,3,4,4,3,0,0,1,1,0,1,0 2,0,3,2,0,7,0,0,0,1,1,0,1,1 0,0,1,2,2,1,3,0,1,1,1,0,1,0 1,4,5,2,3,1,3,0,1,1,1,1,1,0 2,0,3,2,0,4,2,0,1,1,1,1,1,1 2,0,3,2,2,8,4,0,0,1,1,0,1,0 1,0,3,2,2,2,5,4,0,1,1,0,1,0 1,0,3,2,0,5,2,0,1,1,1,0,1,1 1,0,2,1,0,7,2,0,1,1,1,0,1,0 3,2,3,2,0,4,2,0,1,1,1,2,1,1 0,1,14,0,0,2,0,0,0,1,1,2,1,0 1,0,9,1,1,8,3,2,1,1,1,0,1,0 0,0,6,2,0,0,0,0,0,1,1,0,1,0 0,0,3,2,0,7,2,0,1,1,1,1,1,0 0,0,1,2,2,4,3,0,1,1,1,1,1,1 1,0,0,3,0,4,2,0,1,1,1,1,1,1 0,5,10,3,0,7,2,0,1,1,1,0,1,1 1,0,10,3,0,4,2,0,1,1,1,1,1,1 1,1,14,0,2,0,3,1,0,1,1,2,1,0 0,0,3,2,2,8,1,0,0,1,1,0,1,0 1,0,1,2,0,3,2,0,1,1,1,0,1,0 1,0,0,3,1,8,5,0,1,1,1,0,1,0 0,0,2,1,2,2,1,0,0,1,1,0,1,0 0,0,2,1,2,6,1,0,1,1,1,2,1,0 1,0,1,2,0,3,2,0,1,1,1,1,1,1 0,0,1,2,2,2,4,3,0,1,1,2,1,0 1,0,3,2,1,8,5,0,0,1,1,0,1,0 2,0,13,3,4,5,3,0,0,1,1,0,1,0 0,1,0,3,0,7,2,0,1,1,1,1,1,1 0,2,0,3,2,5,3,0,1,1,1,1,1,0 0,5,1,2,2,0,5,4,0,1,1,2,1,0 0,0,3,2,0,10,2,0,1,1,1,0,1,0 1,4,1,2,1,12,5,0,0,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 3,0,12,1,0,2,2,0,1,1,1,2,1,0 1,0,3,2,1,4,3,0,1,1,1,1,1,0 2,1,3,2,0,9,2,0,1,1,1,2,1,0 0,0,3,2,0,10,2,0,1,1,1,1,1,0 0,0,2,1,0,6,2,3,1,1,1,0,1,0 0,0,8,0,2,3,1,0,1,1,1,2,1,0 0,1,0,3,1,4,5,4,0,1,1,2,1,0 2,0,2,1,4,2,3,0,0,1,1,0,1,0 1,0,10,3,0,5,2,1,1,1,1,0,1,0 0,0,11,0,2,1,3,0,1,1,1,0,1,0 1,0,1,2,0,4,2,0,1,1,1,0,1,1 0,1,1,2,2,1,3,0,0,1,1,2,1,0 1,1,0,3,0,1,2,0,1,1,1,1,1,1 0,0,12,1,2,3,3,0,0,1,1,2,1,0 0,4,1,2,2,8,3,0,0,1,1,0,1,0 0,0,0,3,2,8,4,1,0,1,1,2,1,0 0,0,6,2,2,2,1,0,1,1,1,0,1,0 1,1,12,1,2,1,3,4,1,1,1,2,1,0 1,0,3,2,1,7,3,2,0,1,1,0,1,0 0,0,5,2,1,4,1,0,0,1,1,0,1,0 0,0,1,2,2,8,1,0,1,1,1,0,1,0 1,0,6,2,1,8,5,0,0,1,1,1,1,1 0,0,3,2,2,3,3,0,0,1,1,2,1,0 1,2,0,3,0,4,2,0,1,1,1,2,1,1 2,4,3,2,4,8,3,0,0,1,1,0,1,0 1,0,13,3,2,5,3,0,1,1,1,1,1,0 0,0,3,2,2,1,3,0,1,1,1,1,1,0 0,0,1,2,2,2,3,0,1,1,1,2,1,0 0,0,5,2,2,0,3,0,1,1,1,1,1,0 1,5,0,3,0,4,0,4,0,1,1,2,1,1 1,0,3,2,1,2,5,0,0,1,1,0,1,0 0,1,10,3,1,5,3,1,1,1,1,1,1,1 1,0,1,2,0,8,0,0,0,1,1,0,1,1 1,0,3,2,2,1,3,1,1,1,1,0,1,0 1,0,0,3,0,3,2,0,1,1,1,1,1,1 1,2,3,2,0,4,2,0,1,1,1,1,1,1 0,3,3,2,2,8,4,0,1,1,1,2,1,0 2,2,1,2,4,3,3,0,0,1,1,1,1,1 0,1,1,2,0,4,2,0,1,1,1,0,1,0 0,0,0,3,0,5,2,0,1,1,1,1,1,0 0,0,1,2,2,10,3,0,1,1,1,1,1,0 0,0,3,2,2,2,1,0,1,1,1,2,1,0 0,0,0,3,2,5,3,0,0,1,1,1,1,0 1,1,14,0,0,10,2,0,1,1,1,1,1,1 1,0,3,2,2,6,4,0,1,1,1,2,1,0 1,4,0,3,0,4,2,0,1,1,1,1,1,1 2,4,9,1,4,8,3,0,0,1,1,0,1,0 0,0,1,2,2,8,4,1,1,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,1,1,1 0,0,3,2,1,2,1,0,0,1,1,1,1,0 1,0,1,2,0,1,2,4,1,1,1,0,1,1 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,1,2,1,1,3,0,1,1,1,2,1,0 0,0,1,2,0,3,2,0,1,1,1,0,1,0 1,0,3,2,0,6,2,0,1,1,1,1,1,0 1,0,1,2,0,3,2,0,1,1,1,1,1,1 1,3,0,3,1,5,3,0,1,1,1,0,1,0 0,0,1,2,2,3,1,4,0,1,1,2,1,0 1,4,10,3,0,8,2,0,1,1,1,2,1,0 0,0,8,0,2,2,5,4,0,1,1,2,1,0 2,6,1,2,5,9,5,0,0,1,1,2,1,0 1,0,4,3,0,4,2,0,1,1,1,1,1,1 1,0,12,1,0,7,2,0,1,1,1,1,1,0 1,0,13,3,0,5,2,0,1,1,1,0,1,1 1,0,1,2,0,10,2,0,1,1,1,1,1,1 0,0,8,0,0,10,2,0,1,1,1,0,1,0 0,0,3,2,2,1,4,0,1,1,1,2,1,0 2,0,12,1,0,6,2,0,1,1,1,0,1,0 2,1,3,2,0,1,2,0,1,1,1,1,1,0 0,0,3,2,2,1,3,0,1,1,1,1,1,0 0,0,3,2,2,11,3,0,0,1,1,2,1,0 1,0,14,0,2,6,3,0,1,1,1,1,1,0 0,0,3,2,2,2,1,0,0,1,1,0,1,0 0,0,3,2,0,8,2,0,1,1,1,1,1,0 0,0,3,2,2,1,1,4,1,1,1,1,1,0 2,0,1,2,1,0,3,0,0,1,1,0,1,0 0,0,5,2,3,3,5,0,1,1,1,0,1,0 1,0,0,3,0,1,2,0,1,1,1,1,1,1 2,0,10,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,2,6,1,0,1,1,1,2,1,0 1,5,0,3,4,8,3,0,1,1,1,0,1,0 1,1,3,2,0,7,2,0,1,1,1,0,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 1,0,3,2,3,1,5,4,1,1,1,1,1,0 2,0,8,0,0,10,2,0,1,1,1,1,1,0 0,0,3,2,2,10,3,0,1,1,1,1,1,0 0,0,12,1,2,6,4,0,1,1,1,1,1,0 0,0,1,2,2,8,1,0,0,1,1,2,1,0 1,0,0,3,0,9,2,0,1,1,1,0,1,0 0,0,0,3,2,8,3,4,0,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 1,5,0,3,0,5,2,0,1,1,1,2,1,1 0,0,1,2,2,6,4,0,1,1,1,2,1,0 0,0,0,3,0,4,2,4,1,1,1,1,1,1 1,3,0,3,4,5,3,4,0,1,1,0,1,0 1,0,6,2,0,1,2,0,1,1,1,0,1,1 0,0,14,0,2,10,3,0,1,1,1,0,1,0 0,0,0,3,2,5,1,0,0,1,1,0,1,0 1,0,3,2,4,2,3,0,0,1,1,0,1,0 2,4,3,2,4,12,3,0,1,1,1,2,1,0 1,0,1,2,2,0,3,0,0,1,1,0,1,1 1,0,3,2,0,6,2,0,1,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,1,2,2,6,1,0,1,1,1,2,1,0 1,0,0,3,1,0,1,0,1,1,1,0,1,0 1,0,3,2,0,3,2,0,1,1,1,1,1,1 1,0,1,2,0,5,2,0,1,1,1,0,1,1 1,0,3,2,2,9,5,0,1,1,1,0,1,0 0,4,10,3,0,5,2,0,1,1,1,1,1,0 0,0,1,2,2,3,4,1,1,1,1,2,1,0 1,5,10,3,1,8,3,0,0,1,1,0,1,0 1,1,3,2,0,10,2,0,1,1,1,1,1,1 0,0,3,2,2,7,4,0,0,1,1,0,1,0 1,1,3,2,0,4,2,0,1,1,1,1,1,0 0,0,0,3,0,3,0,0,0,1,1,1,1,1 0,0,0,3,2,5,1,0,1,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,2,0,3,4,0,1,1,1,1,0 0,0,1,2,0,5,2,0,1,1,1,0,1,1 1,0,0,3,0,4,2,0,1,1,1,0,1,1 0,0,0,3,2,0,3,0,1,1,1,0,1,0 0,0,1,2,0,4,2,0,1,1,1,1,1,0 0,0,10,3,0,3,2,0,1,1,1,0,1,1 0,1,1,2,0,8,0,0,0,1,1,2,1,1 2,0,3,2,2,8,3,0,1,1,1,1,1,0 1,0,0,3,0,5,2,0,1,1,1,0,1,0 1,0,3,2,0,10,2,0,1,1,1,0,1,1 0,0,1,2,1,7,5,0,0,1,1,0,1,0 0,0,3,2,3,1,5,4,1,1,1,0,1,0 1,0,0,3,1,7,4,0,1,1,1,0,1,0 1,0,2,1,1,5,5,2,1,1,1,0,1,1 1,0,1,2,0,3,2,0,1,1,1,1,1,1 2,4,10,3,1,5,5,0,0,1,1,1,1,1 0,0,1,2,2,3,1,0,0,1,1,2,1,0 1,1,3,2,0,9,2,0,1,1,1,1,1,0 1,0,8,0,0,7,2,4,1,1,1,0,1,0 0,4,3,2,2,6,5,1,1,1,1,1,1,0 0,0,2,1,0,6,2,0,1,1,1,0,1,0 1,0,3,2,2,10,3,0,1,1,1,1,1,0 2,0,1,2,0,1,2,0,1,1,1,0,1,1 1,0,6,2,2,4,4,1,0,1,1,0,1,0 0,0,1,2,2,3,4,0,1,1,1,1,1,0 0,4,0,3,2,5,3,0,0,1,1,0,1,0 1,0,0,3,0,8,2,1,1,1,1,0,1,1 2,0,3,2,3,10,5,1,1,1,1,1,1,1 0,0,1,2,0,3,2,0,1,1,1,1,1,1 1,0,3,2,1,7,1,0,1,1,1,0,1,0 1,0,0,3,0,1,2,0,1,1,1,1,1,1 1,5,3,2,0,1,2,0,1,1,1,1,1,1 0,0,3,2,2,6,3,0,1,1,1,0,1,0 0,0,3,2,2,7,5,0,0,1,1,0,1,0 1,0,6,2,0,1,2,0,1,1,1,1,1,0 1,0,3,2,0,6,0,0,0,1,1,2,1,1 0,0,3,2,2,1,3,0,1,1,1,2,1,0 0,0,8,0,2,2,4,1,0,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,1 0,0,3,2,2,5,3,0,1,1,1,0,1,0 1,0,1,2,2,2,4,1,1,1,1,2,1,0 1,4,10,3,0,5,2,0,1,1,1,1,1,1 0,0,12,1,2,3,1,0,0,1,1,2,1,0 2,0,10,3,0,5,2,0,1,1,1,0,1,1 1,2,5,2,1,4,5,0,1,1,1,1,1,0 3,0,8,0,0,10,2,0,1,1,1,2,1,0 0,0,1,2,2,7,1,0,0,1,1,2,1,0 1,5,1,2,1,8,5,0,0,1,1,0,1,0 0,0,5,2,0,8,0,0,0,1,1,0,1,0 1,1,0,3,0,5,2,0,1,1,1,0,1,1 1,0,3,2,0,10,2,0,1,1,1,0,1,1 0,0,1,2,3,6,3,0,1,1,1,0,1,0 0,0,1,2,1,4,3,0,0,1,1,0,1,0 1,0,0,3,3,2,5,4,0,1,1,2,1,0 0,0,8,0,0,9,2,0,1,1,1,0,1,0 1,0,0,3,1,5,5,4,0,1,1,0,1,0 1,0,3,2,2,6,1,0,1,1,1,2,1,0 2,0,1,2,0,5,2,0,1,1,1,0,1,1 0,0,3,2,1,7,5,0,0,1,1,0,1,0 0,0,1,2,2,2,4,4,0,1,1,2,1,0 1,3,1,2,1,8,3,0,1,1,1,0,1,1 0,0,0,3,2,3,3,0,1,1,1,0,1,0 0,0,8,0,1,1,5,0,0,1,1,1,1,0 2,0,1,2,0,1,2,3,1,1,1,2,1,1 0,0,10,3,0,4,0,0,0,1,1,1,1,1 2,0,7,1,2,6,1,0,1,1,1,0,1,0 0,0,1,2,3,3,3,0,1,1,1,0,1,0 1,5,1,2,1,12,5,2,0,1,1,0,1,0 2,0,3,2,1,12,3,0,1,1,1,0,1,0 1,1,1,2,1,2,5,0,0,1,1,0,1,0 0,0,1,2,2,1,1,0,1,1,1,2,1,0 0,0,0,3,2,5,3,0,0,1,1,0,1,1 0,0,4,3,0,5,0,0,0,1,1,1,1,1 1,2,3,2,0,4,2,0,1,1,1,0,1,1 1,2,13,3,0,5,2,0,1,1,1,1,1,1 1,0,7,1,0,10,2,0,1,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,2,8,1,0,1,1,1,0,1,0 1,1,1,2,0,3,2,0,1,1,1,1,1,0 1,0,1,2,0,7,2,0,1,1,1,0,1,0 2,0,6,2,0,5,2,0,1,1,1,1,1,0 1,0,3,2,1,8,3,0,0,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 0,1,1,2,0,4,2,0,1,1,1,1,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 0,0,12,1,2,2,1,0,0,1,1,2,1,0 0,0,3,2,2,1,3,0,1,1,1,0,1,0 1,0,3,2,1,10,3,0,1,1,1,0,1,0 1,0,3,2,0,7,2,1,1,1,1,0,1,1 1,3,3,2,0,8,0,0,0,1,1,2,1,1 2,0,10,3,0,4,2,1,1,1,1,1,1,1 0,0,3,2,0,1,2,0,1,1,1,1,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,1 0,0,1,2,2,11,3,0,0,1,1,0,1,0 0,0,2,1,2,1,1,0,1,1,1,0,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,1 1,0,0,3,0,4,2,0,1,1,1,0,1,1 2,1,5,2,0,4,0,0,0,1,1,2,1,1 3,0,10,3,2,12,3,0,1,1,1,2,1,0 1,0,10,3,1,4,5,4,0,1,1,1,1,1 1,0,0,3,0,3,2,0,1,1,1,1,1,1 1,0,3,2,2,4,1,0,0,1,1,1,1,0 0,4,0,3,0,5,2,0,1,1,1,1,1,1 0,0,3,2,0,1,1,0,1,1,1,0,1,0 1,0,3,2,4,8,3,0,0,1,1,0,1,0 0,5,3,2,2,12,1,0,1,1,1,0,1,0 0,0,3,2,2,9,3,3,1,1,1,0,1,0 1,4,9,1,0,2,4,0,0,1,1,2,1,0 0,4,3,2,0,4,2,0,1,1,1,1,1,1 1,0,1,2,2,0,3,0,1,1,1,2,1,0 0,0,7,1,2,2,1,0,0,1,1,2,1,0 0,0,3,2,2,5,3,0,1,1,1,0,1,0 0,0,3,2,2,5,3,2,0,1,1,0,1,0 1,1,3,2,0,1,2,0,1,1,1,1,1,0 0,0,1,2,2,1,1,0,1,1,1,1,1,0 0,0,3,2,2,8,4,0,0,1,1,0,1,0 2,1,7,1,0,4,4,0,1,1,1,1,1,0 0,0,1,2,2,4,1,4,0,1,1,0,1,0 1,0,1,2,0,6,2,0,1,1,1,0,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,2,6,4,0,1,1,1,0,1,0 1,5,13,3,0,5,2,0,1,1,1,0,1,1 0,0,1,2,2,5,4,0,0,1,1,0,1,0 1,0,5,2,1,1,3,0,1,1,1,0,1,0 0,0,3,2,2,1,1,0,1,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,0 0,4,7,1,0,1,2,4,1,1,1,0,1,1 1,3,0,3,1,5,5,0,0,1,1,1,1,1 0,0,1,2,0,7,2,0,1,1,1,0,1,0 0,0,3,2,2,3,3,0,1,1,1,0,1,0 0,0,1,2,2,2,5,0,1,1,1,2,1,0 1,0,3,2,0,2,2,0,1,1,1,0,1,0 0,0,3,2,2,3,1,0,0,1,1,2,1,0 2,0,10,3,0,4,2,1,1,1,1,0,1,1 0,0,1,2,0,5,2,0,1,1,1,1,1,0 1,0,1,2,1,4,3,0,0,1,1,0,1,0 0,0,8,0,0,10,2,0,1,1,1,0,1,0 0,0,1,2,2,2,1,0,1,1,1,2,1,0 0,0,1,2,2,3,1,0,1,1,1,2,1,0 0,0,0,3,2,5,1,0,1,1,1,1,1,0 2,0,1,2,0,1,2,0,1,1,1,0,1,1 1,0,3,2,0,1,2,0,1,1,1,1,1,0 1,0,0,3,2,3,3,0,1,1,1,1,1,1 1,3,0,3,0,0,2,0,1,1,1,0,1,1 0,0,10,3,0,5,2,0,1,1,1,1,1,1 0,0,12,1,1,2,5,0,0,1,1,1,1,0 1,0,1,2,0,10,2,0,1,1,1,0,1,0 1,0,3,2,0,6,2,0,1,1,1,0,1,1 1,1,3,2,0,1,2,0,1,1,1,1,1,0 0,0,0,3,2,8,3,0,0,1,1,0,1,0 0,0,6,2,0,7,2,0,1,1,1,0,1,0 0,0,3,2,2,8,1,0,0,1,1,0,1,0 0,0,3,2,2,11,1,0,1,1,1,0,1,0 0,0,3,2,2,4,3,0,0,1,1,0,1,0 2,1,1,2,1,5,3,0,0,1,1,0,1,0 1,0,6,2,1,0,5,0,0,1,1,0,1,0 1,0,1,2,0,3,2,0,1,1,1,1,1,0 0,0,1,2,0,3,2,0,1,1,1,1,1,0 0,0,3,2,2,2,5,4,1,1,1,0,1,0 1,0,14,0,2,6,3,0,0,1,1,0,1,0 0,0,3,2,2,2,3,0,0,1,1,1,1,0 0,0,0,3,0,5,2,0,1,1,1,1,1,1 2,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,1,2,1,4,3,0,1,1,1,2,1,0 1,0,0,3,1,4,3,0,1,1,1,1,1,0 1,4,1,2,5,8,5,4,0,1,1,0,1,0 0,0,5,2,2,0,1,0,1,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,1,1,0 1,5,1,2,0,4,2,0,1,1,1,0,1,0 0,0,1,2,2,10,1,0,1,1,1,0,1,0 1,0,10,3,2,5,1,0,0,1,1,0,1,0 1,0,1,2,0,5,0,0,0,1,1,0,1,1 1,0,3,2,0,1,2,4,1,1,1,1,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,0 1,0,8,0,1,7,5,4,0,1,1,1,1,0 0,0,3,2,2,1,3,0,1,1,1,2,1,0 2,0,8,0,0,8,2,0,1,1,1,1,1,0 0,0,1,2,0,4,2,0,1,1,1,1,1,1 1,4,0,3,1,5,5,0,0,1,1,0,1,0 0,0,3,2,1,4,5,0,0,1,1,2,1,0 0,0,1,2,0,0,2,0,1,1,1,0,1,0 1,0,9,1,0,1,2,0,1,1,1,0,1,0 1,0,1,2,2,4,3,0,1,1,1,0,1,0 1,0,3,2,0,3,2,0,1,1,1,1,1,1 0,0,1,2,3,7,3,0,1,1,1,0,1,0 0,0,1,2,2,7,4,0,0,1,1,0,1,0 0,0,1,2,2,0,3,0,1,1,1,1,1,0 0,0,3,2,0,10,1,0,0,1,1,0,1,0 1,4,1,2,1,5,3,0,0,1,1,0,1,0 1,2,12,1,0,4,2,0,1,1,1,0,1,0 0,0,3,2,0,3,2,0,1,1,1,1,1,0 0,4,0,3,0,5,2,0,1,1,1,0,1,1 1,0,0,3,0,7,2,0,1,1,1,0,1,1 0,4,6,2,2,12,3,0,1,1,1,1,1,0 0,0,1,2,2,8,3,0,0,1,1,2,1,0 0,0,6,2,2,4,1,0,1,1,1,0,1,0 0,0,1,2,0,4,2,0,1,1,1,1,1,1 0,2,1,2,2,4,1,0,1,1,1,1,1,0 1,4,6,2,0,4,2,0,1,1,1,0,1,0 1,1,1,2,0,5,0,0,0,1,1,0,1,1 1,0,1,2,0,4,2,0,1,1,1,0,1,0 0,0,1,2,0,12,2,0,1,1,1,1,1,1 2,1,3,2,0,3,2,0,1,1,1,2,1,1 0,0,1,2,2,7,1,0,1,1,1,1,1,0 0,5,1,2,2,4,1,0,0,1,1,2,1,0 0,0,1,2,0,1,2,0,1,1,1,1,1,1 1,2,3,2,0,1,2,0,1,1,1,1,1,0 0,0,7,1,2,2,1,0,1,1,1,2,1,0 2,0,13,3,0,5,2,0,1,1,1,1,1,1 1,1,0,3,0,3,2,0,1,1,1,2,1,0 0,0,2,1,5,6,3,2,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,2,3,1,0,1,1,1,2,1,0 1,3,1,2,0,4,2,4,1,1,1,0,1,0 0,0,10,3,2,5,3,0,1,1,1,1,1,0 0,1,13,3,0,5,2,0,1,1,1,0,1,1 1,1,3,2,0,9,2,0,1,1,1,1,1,1 0,0,1,2,2,3,3,0,0,1,1,1,1,0 1,0,7,1,0,7,2,4,1,1,1,0,1,0 0,0,3,2,2,8,3,0,0,1,1,0,1,0 1,0,0,3,0,2,2,0,1,1,1,0,1,0 2,0,1,2,0,4,0,0,0,1,1,1,1,1 1,0,0,3,0,4,0,0,0,1,1,1,1,1 0,0,2,1,2,3,1,0,0,1,1,2,1,0 1,0,3,2,0,4,2,0,1,1,1,0,1,1 3,0,3,2,4,3,5,0,0,1,1,2,1,0 0,0,2,1,0,1,2,0,1,1,1,0,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 0,5,0,3,2,0,3,0,0,1,1,0,1,0 0,0,1,2,2,3,1,0,1,1,1,2,1,0 0,0,10,3,2,5,1,0,1,1,1,2,1,0 0,0,0,3,1,3,3,0,0,1,1,1,1,1 0,2,6,2,0,3,2,0,1,1,1,2,1,0 1,3,10,3,1,5,3,0,0,1,1,0,1,0 2,6,3,2,0,8,2,1,1,1,1,2,1,0 0,0,3,2,0,10,2,0,1,1,1,2,1,0 3,1,3,2,0,9,2,0,1,1,1,2,1,0 1,0,1,2,0,4,0,0,0,1,1,1,1,0 0,0,12,1,0,6,2,0,1,1,1,0,1,0 1,3,3,2,1,8,3,0,0,1,1,2,1,0 1,4,3,2,1,2,3,4,1,1,1,0,1,0 0,0,1,2,0,0,0,0,0,1,1,2,1,1 2,0,3,2,3,3,5,0,0,1,1,2,1,0 0,0,1,2,2,6,1,0,0,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 1,0,3,2,0,1,2,0,1,1,1,2,1,1 0,0,3,2,2,7,3,0,0,1,1,0,1,0 1,4,0,3,0,1,2,0,1,1,1,2,1,1 0,0,0,3,2,3,3,0,0,1,1,0,1,0 2,1,8,0,0,3,2,0,1,1,1,2,1,1 1,0,3,2,2,3,3,0,1,1,1,1,1,0 0,0,1,2,2,0,1,0,1,1,1,0,1,0 2,0,1,2,0,1,2,4,1,1,1,0,1,1 0,0,1,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 0,0,1,2,2,7,4,4,0,1,1,2,1,0 2,2,0,3,0,4,2,0,1,1,1,2,1,0 1,0,1,2,0,3,2,0,1,1,1,1,1,1 1,0,3,2,0,3,2,0,1,1,1,1,1,1 0,4,1,2,2,8,3,3,1,1,1,0,1,0 1,0,1,2,2,1,5,0,0,1,1,2,1,1 0,0,3,2,2,8,4,4,0,1,1,0,1,0 0,0,3,2,1,2,5,0,0,1,1,1,1,1 1,0,0,3,5,3,5,0,0,1,1,1,1,1 1,0,10,3,1,5,3,0,1,1,1,2,1,0 0,0,1,2,0,3,2,0,1,1,1,0,1,0 0,0,3,2,0,2,1,0,0,1,1,2,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,1 1,1,3,2,0,5,2,0,1,1,1,0,1,0 1,1,0,3,0,9,0,0,0,1,1,1,1,0 1,0,3,2,2,8,3,4,0,1,1,2,1,0 0,0,3,2,2,3,3,0,0,1,1,2,1,0 0,0,1,2,0,7,2,0,1,1,1,0,1,0 2,0,6,2,0,3,2,0,1,1,1,1,1,0 0,0,1,2,2,3,4,0,1,1,1,0,1,0 0,0,3,2,2,6,1,0,1,1,1,1,1,0 1,0,3,2,2,6,4,0,1,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,3,2,2,6,3,0,1,1,1,0,1,0 0,0,1,2,2,9,1,0,1,1,1,1,1,0 0,0,3,2,2,4,1,0,0,1,1,1,1,0 0,4,0,3,2,8,3,1,1,1,1,2,1,0 1,2,5,2,0,3,2,0,1,1,1,1,1,0 0,0,3,2,0,10,2,0,1,1,1,1,1,0 0,0,5,2,2,3,1,0,0,1,1,2,1,0 1,4,0,3,1,8,5,0,0,1,1,2,1,0 0,0,1,2,0,8,0,0,0,1,1,0,1,1 2,0,2,1,2,7,3,0,1,1,1,0,1,0 1,3,3,2,1,8,5,0,0,1,1,0,1,0 0,0,1,2,2,6,1,0,1,1,1,0,1,0 0,0,3,2,2,6,3,0,1,1,1,0,1,0 0,0,3,2,2,1,4,0,1,1,1,0,1,0 0,0,1,2,2,2,1,0,0,1,1,0,1,0 0,0,1,2,2,1,5,0,1,1,1,1,1,0 0,0,3,2,2,3,5,0,1,1,1,0,1,0 1,1,12,1,1,9,5,0,1,1,1,2,1,0 1,0,1,2,1,8,3,0,0,1,1,0,1,0 0,0,0,3,2,5,3,0,1,1,1,1,1,0 0,0,12,1,2,3,1,0,0,1,1,2,1,0 1,5,4,3,0,5,2,0,1,1,1,1,1,0 1,0,1,2,0,1,2,0,1,1,1,1,1,1 0,2,0,3,2,8,1,0,0,1,1,2,1,0 2,0,3,2,0,3,2,0,1,1,1,1,1,1 0,0,3,2,2,4,3,0,0,1,1,0,1,0 0,0,3,2,0,6,2,0,1,1,1,1,1,0 0,0,0,3,2,8,1,0,0,1,1,2,1,0 0,0,0,3,0,5,2,0,1,1,1,2,1,0 1,1,0,3,0,1,2,0,1,1,1,2,1,0 2,2,1,2,0,4,2,0,1,1,1,1,1,1 0,0,1,2,2,3,4,0,1,1,1,2,1,0 1,0,1,2,2,6,3,0,1,1,1,0,1,0 1,0,8,0,0,7,2,0,1,1,1,0,1,1 0,0,3,2,1,7,4,0,1,1,1,0,1,0 0,0,4,3,0,5,2,0,1,1,1,1,1,1 1,2,0,3,0,4,2,0,1,1,1,1,1,0 0,0,0,3,0,5,2,0,1,1,1,1,1,1 1,0,3,2,2,1,3,0,1,1,1,0,1,0 2,4,3,2,0,10,2,0,1,1,1,1,1,0 2,0,0,3,1,5,3,0,0,1,1,1,1,0 2,1,3,2,0,4,2,0,1,1,1,0,1,0 2,0,3,2,0,3,2,0,1,1,1,0,1,1 0,0,6,2,0,0,2,0,1,1,1,1,1,1 0,1,3,2,1,1,3,0,1,1,1,1,1,0 0,0,0,3,3,4,3,0,0,1,1,1,1,1 0,0,1,2,2,2,1,0,0,1,1,2,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,1 2,0,3,2,0,3,2,0,1,1,1,1,1,0 1,1,3,2,0,3,2,4,1,1,1,0,1,0 2,2,9,1,4,4,3,0,0,1,1,0,1,0 1,1,3,2,2,1,3,0,1,1,1,0,1,0 0,0,1,2,0,3,2,2,1,1,1,1,1,0 1,0,6,2,0,5,2,4,1,1,1,0,1,1 2,0,3,2,0,2,2,0,1,1,1,0,1,0 1,2,1,2,0,3,2,0,1,1,1,1,1,0 1,0,0,3,0,0,2,0,1,1,1,1,1,1 1,0,3,2,0,1,2,0,1,1,1,1,1,1 1,4,10,3,0,5,2,0,1,1,1,0,1,1 1,1,3,2,0,10,2,0,1,1,1,0,1,0 0,4,1,2,0,12,2,0,1,1,1,1,1,1 0,4,0,3,1,5,5,0,0,1,1,0,1,0 1,0,14,0,3,3,5,0,0,1,1,0,1,0 0,0,1,2,0,7,2,0,1,1,1,1,1,0 0,0,7,1,2,6,1,0,1,1,1,2,1,0 2,1,1,2,0,3,0,0,0,1,1,1,1,1 1,0,0,3,0,4,2,0,1,1,1,0,1,1 1,0,0,3,0,4,2,0,1,1,1,1,1,0 0,0,10,3,2,4,3,0,0,1,1,1,1,0 1,0,3,2,0,9,2,0,1,1,1,2,1,0 2,0,1,2,3,2,3,0,1,1,1,0,1,0 0,4,12,1,2,2,1,0,0,1,1,2,1,0 1,0,1,2,0,2,2,0,1,1,1,2,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 1,1,3,2,0,5,0,0,0,1,1,0,1,0 0,0,3,2,2,6,3,0,1,1,1,1,1,0 0,0,14,0,2,11,4,0,0,1,1,0,1,0 2,0,0,3,0,5,2,0,1,1,1,0,1,1 1,0,8,0,0,8,2,0,1,1,1,0,1,0 0,0,0,3,2,4,4,0,0,1,1,2,1,0 0,0,3,2,2,5,3,0,0,1,1,0,1,0 0,0,5,2,2,1,3,0,1,1,1,1,1,1 0,0,6,2,2,4,5,1,1,1,1,0,1,0 2,0,1,2,1,1,1,0,1,1,1,1,1,1 2,0,1,2,0,0,2,0,1,1,1,2,1,1 1,0,3,2,3,1,3,0,1,1,1,2,1,0 0,5,1,2,2,2,1,0,1,1,1,0,1,0 1,4,10,3,1,4,3,0,0,1,1,0,1,0 1,0,4,3,0,5,2,0,1,1,1,1,1,1 2,2,3,2,0,9,2,0,1,1,1,2,1,0 1,1,3,2,0,9,2,0,1,1,1,1,1,0 0,0,0,3,2,0,1,0,0,1,1,0,1,0 1,0,5,2,2,0,3,0,0,1,1,0,1,0 1,4,1,2,2,4,3,0,1,1,1,0,1,0 1,0,1,2,0,4,2,0,1,1,1,1,1,1 0,0,3,2,2,6,4,0,1,1,1,0,1,0 0,0,3,2,1,6,3,0,1,1,1,0,1,0 0,1,1,2,0,1,2,0,1,1,1,1,1,0 1,0,3,2,2,7,3,4,1,1,1,0,1,0 0,0,10,3,2,4,1,0,0,1,1,0,1,0 1,5,10,3,2,8,3,4,1,1,1,2,1,0 0,0,0,3,2,1,3,1,1,1,1,0,1,0 2,0,3,2,1,4,3,0,0,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 0,5,1,2,3,8,5,0,0,1,1,1,1,0 0,0,0,3,2,3,1,0,0,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,1 0,0,9,1,0,12,2,0,1,1,1,0,1,0 0,0,0,3,2,3,3,0,1,1,1,1,1,1 0,0,1,2,0,10,2,0,1,1,1,0,1,0 1,0,3,2,1,8,5,0,0,1,1,2,1,0 2,0,11,0,0,1,2,0,1,1,1,0,1,1 0,0,0,3,2,3,1,0,1,1,1,1,1,0 1,2,3,2,0,4,2,0,1,1,1,1,1,0 2,0,4,3,0,4,2,0,1,1,1,0,1,1 0,1,1,2,2,1,3,0,0,1,1,2,1,0 1,0,1,2,4,7,5,4,0,1,1,1,1,0 1,0,3,2,2,1,5,0,1,1,1,0,1,0 2,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,0,3,2,1,1,0,1,1,1,2,1,0 0,0,1,2,2,8,5,0,0,1,1,1,1,0 0,0,1,2,0,7,2,0,1,1,1,1,1,0 1,5,1,2,1,8,3,0,0,1,1,0,1,0 0,3,1,2,2,0,1,4,1,1,1,2,1,0 1,0,3,2,0,1,2,3,1,1,1,0,1,0 1,0,14,0,0,7,2,4,1,1,1,0,1,0 1,0,3,2,1,5,3,0,1,1,1,1,1,1 0,0,3,2,2,2,1,4,0,1,1,2,1,0 0,3,2,1,2,2,1,1,1,1,1,2,1,0 0,0,3,2,2,2,1,0,0,1,1,2,1,0 0,0,3,2,2,7,3,0,1,1,1,0,1,0 1,0,12,1,0,10,2,4,1,1,1,0,1,0 1,0,3,2,0,2,2,4,1,1,1,0,1,0 0,0,3,2,0,7,2,0,1,1,1,1,1,0 0,1,3,2,2,3,3,4,1,1,1,0,1,0 0,3,1,2,2,3,1,0,0,1,1,2,1,0 2,1,3,2,0,4,2,0,1,1,1,2,1,1 1,2,10,3,0,3,2,0,1,1,1,0,1,1 1,0,3,2,0,7,0,0,0,1,1,0,1,0 0,0,0,3,1,3,5,0,0,1,1,2,1,0 1,0,3,2,3,4,3,0,0,1,1,1,1,0 1,1,3,2,0,3,2,0,1,1,1,1,1,1 0,0,1,2,1,4,3,0,0,1,1,0,1,1 1,0,3,2,1,8,1,0,0,1,1,1,1,0 2,0,3,2,0,10,2,0,1,1,1,1,1,1 1,2,4,3,0,5,2,0,1,1,1,1,1,1 1,0,3,2,2,1,3,0,1,1,1,1,1,0 0,0,0,3,2,8,1,0,1,1,1,0,1,0 0,0,5,2,2,8,3,0,0,1,1,2,1,0 0,3,0,3,0,5,2,0,1,1,1,0,1,0 1,3,6,2,0,1,2,0,1,1,1,0,1,0 2,0,12,1,1,5,5,0,0,1,1,0,1,0 2,4,1,2,1,12,3,4,1,1,1,1,1,0 0,0,3,2,2,10,5,0,0,1,1,0,1,0 1,0,3,2,2,2,3,0,0,1,1,0,1,0 1,0,10,3,1,4,5,0,0,1,1,0,1,0 0,0,0,3,2,2,3,0,1,1,1,1,1,0 0,0,0,3,2,8,4,0,1,1,1,0,1,0 0,0,3,2,2,7,1,0,1,1,1,0,1,0 0,1,3,2,0,1,2,0,1,1,1,1,1,0 0,0,3,2,2,1,1,0,1,1,1,0,1,0 2,0,14,0,1,11,3,4,0,1,1,2,1,0 0,5,3,2,0,12,2,0,1,1,1,2,1,0 1,0,1,2,1,10,1,0,1,1,1,1,1,0 2,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,2,3,5,0,1,1,1,0,1,0 0,0,1,2,2,8,3,0,0,1,1,0,1,0 0,0,3,2,2,2,3,0,1,1,1,0,1,0 0,0,3,2,1,8,3,0,0,1,1,0,1,0 2,0,3,2,2,2,3,0,1,1,1,2,1,0 2,0,7,1,1,1,3,0,0,1,1,0,1,1 1,0,3,2,0,1,2,1,1,1,1,1,1,0 0,0,3,2,0,1,2,4,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,2,7,5,4,0,1,1,0,1,0 1,0,3,2,1,4,3,0,0,1,1,0,1,1 0,0,1,2,2,3,4,0,1,1,1,0,1,0 1,2,3,2,2,2,3,0,0,1,1,1,1,0 2,0,6,2,4,3,3,0,0,1,1,2,1,0 0,0,3,2,0,10,2,2,1,1,1,0,1,0 1,0,1,2,1,8,5,0,0,1,1,1,1,0 0,0,3,2,2,4,3,0,0,1,1,0,1,0 0,0,5,2,3,1,5,1,1,1,1,0,1,1 1,0,3,2,0,8,2,4,1,1,1,0,1,1 1,0,3,2,2,7,5,2,0,1,1,0,1,0 1,0,5,2,0,4,2,0,1,1,1,1,1,1 0,0,3,2,2,10,3,0,0,1,1,1,1,0 0,0,0,3,2,3,3,0,1,1,1,1,1,1 1,0,3,2,0,7,2,0,1,1,1,0,1,0 2,0,11,0,0,2,2,0,1,1,1,0,1,0 0,3,3,2,1,8,5,0,0,1,1,0,1,0 1,0,3,2,0,5,2,0,1,1,1,1,1,1 1,0,1,2,0,3,2,0,1,1,1,1,1,0 0,0,0,3,2,3,1,0,1,1,1,2,1,0 0,0,11,0,0,6,2,0,1,1,1,0,1,0 0,0,6,2,1,8,3,0,0,1,1,2,1,0 0,0,6,2,0,0,2,4,1,1,1,2,1,0 0,0,3,2,2,6,1,0,1,1,1,2,1,0 0,0,3,2,2,2,1,0,1,1,1,2,1,0 1,4,3,2,0,7,2,0,1,1,1,0,1,0 2,0,6,2,3,11,3,4,0,1,1,2,1,0 1,0,0,3,0,4,2,0,1,1,1,0,1,1 3,1,3,2,0,9,2,0,1,1,1,2,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,0 2,0,4,3,0,4,2,0,1,1,1,1,1,0 2,0,3,2,1,0,3,0,1,1,1,1,1,1 1,3,0,3,0,4,2,0,1,1,1,0,1,1 0,0,5,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,2,8,1,0,0,1,1,2,1,0 1,0,0,3,1,3,3,0,1,1,1,1,1,1 1,2,4,3,2,1,3,0,1,1,1,1,1,1 1,0,12,1,0,10,2,0,1,1,1,0,1,0 0,0,3,2,2,1,1,0,1,1,1,0,1,0 0,0,3,2,1,8,1,0,0,1,1,0,1,0 2,0,1,2,1,3,3,0,0,1,1,0,1,0 0,0,11,0,0,2,4,0,1,1,1,0,1,0 2,0,2,1,1,1,3,0,1,1,1,1,1,0 0,0,3,2,2,6,4,0,1,1,1,1,1,0 0,0,1,2,2,6,1,4,0,1,1,0,1,0 2,0,1,2,0,10,2,0,1,1,1,1,1,0 0,0,3,2,2,10,3,0,1,1,1,1,1,0 0,0,1,2,2,8,1,0,0,1,1,2,1,0 1,4,6,2,0,4,2,0,1,1,1,0,1,0 0,1,3,2,1,4,5,0,0,1,1,0,1,0 1,0,1,2,0,3,0,0,0,1,1,0,1,0 0,0,7,1,2,9,1,0,1,1,1,2,1,0 0,0,1,2,0,1,2,0,1,1,1,1,1,1 0,0,3,2,1,7,1,0,0,1,1,0,1,0 0,0,11,0,2,6,3,0,1,1,1,1,1,0 1,0,2,1,0,1,2,0,1,1,1,2,1,0 0,0,1,2,0,4,2,0,1,1,1,1,1,1 1,2,4,3,0,5,2,0,1,1,1,1,1,1 1,0,1,2,0,7,2,0,1,1,1,0,1,1 1,4,8,0,0,1,2,0,1,1,1,0,1,0 0,0,0,3,2,3,3,0,1,1,1,0,1,0 1,4,0,3,0,0,2,0,1,1,1,0,1,0 2,0,3,2,0,9,2,0,1,1,1,2,1,0 0,0,0,3,0,3,2,0,1,1,1,1,1,1 1,4,0,3,1,4,5,0,1,1,1,1,1,0 1,1,1,2,2,1,5,0,1,1,1,0,1,0 0,0,1,2,0,5,2,0,1,1,1,0,1,1 1,1,4,3,0,5,2,0,1,1,1,1,1,1 1,0,8,0,0,6,2,0,1,1,1,0,1,0 0,0,2,1,3,2,1,0,0,1,1,0,1,0 0,0,0,3,2,4,1,0,1,1,1,2,1,0 0,0,3,2,2,2,1,4,1,1,1,0,1,0 0,0,1,2,0,1,2,0,1,1,1,0,1,0 1,0,1,2,0,3,2,0,1,1,1,1,1,0 1,0,1,2,0,2,0,0,0,1,1,0,1,0 0,1,3,2,0,3,2,0,1,1,1,1,1,0 0,0,9,1,2,2,1,0,1,1,1,2,1,0 0,0,6,2,4,0,5,4,0,1,1,0,1,0 0,0,3,2,1,8,3,0,0,1,1,0,1,0 0,5,10,3,0,4,2,4,1,1,1,0,1,0 0,1,6,2,2,1,3,0,1,1,1,0,1,0 0,0,3,2,2,2,3,4,1,1,1,2,1,0 3,0,10,3,1,3,3,0,0,1,1,2,1,0 1,0,3,2,2,1,3,1,1,1,1,1,1,0 1,0,5,2,0,0,2,0,1,1,1,1,1,0 0,0,3,2,0,8,0,0,0,1,1,2,1,0 1,0,0,3,1,4,5,0,0,1,1,1,1,0 0,2,0,3,2,3,3,0,1,1,1,1,1,0 0,0,3,2,3,9,1,0,1,1,1,0,1,0 1,5,6,2,2,4,5,0,0,1,1,1,1,0 1,0,1,2,1,5,3,0,0,1,1,2,1,0 0,0,3,2,2,3,3,1,0,1,1,2,1,0 1,0,3,2,1,1,3,0,1,1,1,0,1,0 0,0,3,2,2,8,5,0,0,1,1,0,1,0 1,0,1,2,2,5,3,0,0,1,1,0,1,0 1,0,3,2,3,2,5,4,0,1,1,0,1,0 1,0,3,2,0,4,2,0,1,1,1,1,1,1 0,4,0,3,2,5,3,0,0,1,1,0,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,0,3,0,5,2,0,1,1,1,0,1,0 0,0,10,3,2,4,3,0,0,1,1,1,1,0 0,5,1,2,2,2,1,0,1,1,1,2,1,0 0,0,12,1,2,2,1,0,0,1,1,2,1,0 1,0,12,1,1,3,1,0,1,1,1,0,1,0 1,0,1,2,0,10,2,0,1,1,1,0,1,1 0,0,1,2,2,1,1,0,1,1,1,1,1,0 0,0,3,2,2,4,3,0,0,1,1,2,1,0 0,0,3,2,0,6,2,0,1,1,1,0,1,0 0,0,3,2,2,10,1,0,1,1,1,0,1,0 1,0,3,2,0,10,2,0,1,1,1,0,1,0 0,0,1,2,2,10,1,1,1,1,1,0,1,0 0,5,1,2,2,8,1,0,0,1,1,2,1,0 2,0,2,1,0,10,2,0,1,1,1,0,1,0 1,0,1,2,1,10,3,4,1,1,1,1,1,0 0,0,1,2,0,3,2,0,1,1,1,1,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 1,0,1,2,0,1,2,0,1,1,1,1,1,1 1,0,5,2,0,5,2,0,1,1,1,1,1,0 1,3,1,2,0,8,2,0,1,1,1,0,1,1 1,0,3,2,0,2,2,0,1,1,1,0,1,1 0,0,3,2,2,2,1,4,1,1,1,0,1,0 0,0,1,2,2,8,3,0,0,1,1,0,1,0 1,0,3,2,0,6,0,4,0,1,1,0,1,0 1,0,5,2,1,0,5,0,0,1,1,0,1,0 0,0,7,1,2,6,1,0,1,1,1,2,1,0 0,0,2,1,2,2,3,0,1,1,1,0,1,0 1,5,13,3,2,5,3,0,0,1,1,0,1,0 1,3,6,2,0,8,2,0,1,1,1,0,1,1 1,0,1,2,0,7,2,0,1,1,1,1,1,0 1,4,10,3,1,5,3,2,1,1,1,0,1,0 0,0,1,2,2,2,3,0,0,1,1,2,1,0 1,0,3,2,0,10,2,4,1,1,1,0,1,0 0,0,3,2,0,7,2,0,1,1,1,1,1,0 1,0,10,3,0,8,0,0,0,1,1,0,1,1 1,0,1,2,1,1,5,0,1,1,1,1,1,0 0,0,3,2,2,2,1,0,1,1,1,1,1,0 0,0,0,3,2,5,3,0,0,1,1,1,1,1 0,0,6,2,2,8,1,0,0,1,1,0,1,0 0,0,1,2,2,0,5,0,0,1,1,2,1,0 1,0,0,3,0,4,2,1,1,1,1,0,1,1 1,0,1,2,0,0,2,0,1,1,1,1,1,1 1,1,1,2,1,3,5,0,1,1,1,1,1,1 0,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,3,2,5,2,5,4,0,1,1,2,1,0 0,0,1,2,0,1,2,1,1,1,1,0,1,0 1,0,0,3,0,8,2,1,1,1,1,0,1,1 1,1,1,2,0,4,2,1,1,1,1,1,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,1 0,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,12,1,2,6,3,0,1,1,1,0,1,0 2,0,0,3,1,4,3,0,1,1,1,1,1,1 1,0,6,2,0,10,0,0,0,1,1,2,1,0 1,3,0,3,0,4,2,0,1,1,1,1,1,1 1,0,3,2,0,7,2,0,1,1,1,1,1,0 0,0,3,2,0,6,2,0,1,1,1,0,1,0 0,0,0,3,2,4,3,0,0,1,1,0,1,0 1,0,1,2,0,3,2,0,1,1,1,1,1,0 0,0,3,2,2,3,3,0,0,1,1,2,1,0 1,0,3,2,2,6,3,0,1,1,1,1,1,0 1,0,0,3,0,10,2,0,1,1,1,0,1,1 0,2,3,2,2,3,3,0,1,1,1,1,1,0 0,0,3,2,2,7,1,0,1,1,1,0,1,0 1,0,3,2,1,1,5,0,1,1,1,1,1,0 1,0,2,1,0,1,2,0,1,1,1,1,1,0 0,4,3,2,2,12,3,4,1,1,1,0,1,0 2,0,14,0,4,2,3,4,0,1,1,2,1,0 2,4,3,2,0,4,2,0,1,1,1,2,1,0 0,0,0,3,2,3,3,0,0,1,1,2,1,0 1,1,0,3,0,10,2,0,1,1,1,0,1,1 1,1,3,2,1,1,3,0,1,1,1,0,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,12,1,2,8,3,4,1,1,1,2,1,0 0,0,6,2,2,1,4,0,1,1,1,0,1,0 0,0,1,2,2,3,4,0,0,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,0 0,5,1,2,2,8,1,0,0,1,1,0,1,0 1,5,0,3,0,5,2,0,1,1,1,2,1,1 2,0,0,3,0,4,2,0,1,1,1,0,1,1 0,0,1,2,2,0,1,0,0,1,1,2,1,0 0,0,1,2,2,3,1,0,0,1,1,0,1,0 1,0,3,2,2,7,3,0,1,1,1,0,1,0 0,0,13,3,1,5,3,0,0,1,1,1,1,1 1,0,0,3,0,4,2,0,1,1,1,1,1,1 3,1,11,0,4,3,4,0,1,1,1,1,1,0 1,0,1,2,1,4,3,0,0,1,1,0,1,0 0,0,0,3,2,3,1,0,0,1,1,0,1,0 0,1,5,2,1,8,3,0,0,1,1,0,1,0 0,0,3,2,2,8,3,0,1,1,1,0,1,0 1,3,3,2,2,8,5,0,0,1,1,0,1,0 0,0,3,2,1,10,1,4,1,1,1,0,1,0 0,0,3,2,2,2,1,0,1,1,1,2,1,0 0,0,2,1,2,7,5,0,1,1,1,1,1,0 0,0,1,2,2,12,1,0,1,1,1,1,1,0 2,0,5,2,0,4,2,0,1,1,1,1,1,0 0,0,3,2,2,7,3,0,1,1,1,1,1,0 1,0,3,2,0,7,2,0,1,1,1,1,1,0 1,2,4,3,0,4,0,0,0,1,1,1,1,1 1,2,1,2,0,4,2,0,1,1,1,1,1,1 2,0,8,0,3,11,5,4,0,1,1,2,1,0 1,0,12,1,0,1,2,0,1,1,1,0,1,0 1,0,1,2,1,8,3,4,1,1,1,0,1,0 0,0,0,3,2,5,5,0,0,1,1,0,1,0 0,0,0,3,2,5,5,0,1,1,1,0,1,0 0,5,10,3,2,5,3,0,1,1,1,2,1,0 0,1,3,2,0,9,2,0,1,1,1,1,1,0 1,0,3,2,1,8,5,0,0,1,1,0,1,1 1,0,1,2,0,5,2,0,1,1,1,1,1,1 1,0,1,2,0,7,2,0,1,1,1,0,1,0 0,0,3,2,1,6,3,4,1,1,1,0,1,0 1,3,1,2,0,5,2,0,1,1,1,0,1,1 1,0,10,3,1,12,5,0,1,1,1,0,1,0 0,4,0,3,0,5,2,0,1,1,1,1,1,0 0,0,0,3,2,2,3,4,0,1,1,2,1,0 0,3,0,3,6,5,2,0,1,1,1,1,1,1 1,1,3,2,2,9,3,0,1,1,1,1,1,1 2,0,3,2,1,7,3,0,0,1,1,0,1,0 1,0,0,3,1,3,5,0,0,1,1,0,1,0 0,0,12,1,1,6,3,0,1,1,1,0,1,0 0,0,4,3,0,0,2,1,1,1,1,0,1,0 1,2,6,2,2,8,1,0,0,1,1,0,1,0 0,0,6,2,2,8,4,1,1,1,1,0,1,0 2,0,3,2,2,8,3,0,0,1,1,2,1,0 1,0,0,3,0,3,2,0,1,1,1,1,1,1 0,2,0,3,0,3,2,0,1,1,1,1,1,1 0,0,0,3,1,4,3,0,1,1,1,1,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,1,2,2,8,1,0,1,1,1,2,1,0 0,1,7,1,0,1,2,0,1,1,1,1,1,0 1,0,5,2,2,5,5,0,0,1,1,2,1,0 1,2,0,3,1,4,5,0,1,1,1,1,1,1 0,0,3,2,0,6,2,0,1,1,1,0,1,0 1,0,3,2,0,3,2,0,1,1,1,0,1,1 0,0,2,1,0,8,0,0,0,1,1,2,1,0 1,5,1,2,1,5,5,0,0,1,1,2,1,0 1,0,1,2,0,4,2,0,1,1,1,0,1,0 1,0,3,2,1,7,5,0,0,1,1,0,1,0 0,5,6,2,0,5,2,0,1,1,1,0,1,0 1,0,6,2,5,7,5,0,1,1,1,0,1,0 0,0,3,2,2,10,1,0,1,1,1,1,1,0 2,0,3,2,3,1,3,0,0,1,1,0,1,0 0,0,1,2,2,5,3,0,0,1,1,2,1,1 1,0,3,2,0,7,2,0,1,1,1,0,1,1 1,2,0,3,0,4,2,0,1,1,1,1,1,1 1,0,2,1,0,2,0,0,0,1,1,2,1,0 2,0,6,2,0,10,2,0,1,1,1,1,1,1 1,5,1,2,1,8,3,0,0,1,1,0,1,0 2,0,1,2,0,4,2,0,1,1,1,2,1,0 0,3,1,2,2,5,3,0,0,1,1,0,1,0 1,0,1,2,0,0,0,0,0,1,1,0,1,0 2,0,5,2,0,3,2,0,1,1,1,0,1,1 2,0,0,3,1,4,5,0,1,1,1,1,1,1 0,0,3,2,0,6,2,0,1,1,1,2,1,0 0,0,1,2,2,8,1,0,0,1,1,0,1,0 2,0,8,0,0,7,2,0,1,1,1,1,1,0 2,0,1,2,0,3,2,0,1,1,1,1,1,1 0,0,3,2,2,6,1,0,0,1,1,1,1,0 0,0,1,2,1,5,5,0,0,1,1,2,1,0 0,4,10,3,2,5,3,0,0,1,1,1,1,0 0,1,3,2,0,10,2,0,1,1,1,1,1,0 0,0,2,1,2,2,1,0,0,1,1,2,1,0 0,0,0,3,0,3,4,0,1,1,1,0,1,1 0,2,1,2,2,8,1,0,0,1,1,2,1,0 1,0,0,3,1,5,5,0,0,1,1,0,1,1 0,0,8,0,1,10,3,0,1,1,1,0,1,0 0,0,0,3,2,5,3,0,1,1,1,0,1,0 0,0,5,2,2,2,3,0,0,1,1,0,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,1 1,3,3,2,0,8,2,4,1,1,1,1,1,1 0,0,12,1,2,2,1,0,1,1,1,2,1,0 1,0,11,0,0,7,2,0,1,1,1,0,1,0 0,0,0,3,2,4,1,0,0,1,1,0,1,0 1,2,6,2,1,3,5,0,0,1,1,2,1,0 0,2,3,2,1,4,3,0,1,1,1,1,1,1 0,0,5,2,2,8,1,0,0,1,1,2,1,0 1,4,0,3,1,5,5,0,1,1,1,1,1,0 1,0,0,3,1,4,3,0,1,1,1,0,1,0 0,0,7,1,2,4,3,0,0,1,1,0,1,0 2,0,0,3,5,5,5,0,0,1,1,0,1,0 1,0,10,3,1,0,3,0,1,1,1,0,1,0 0,0,0,3,0,6,2,0,1,1,1,1,1,1 0,0,0,3,2,4,1,0,0,1,1,2,1,0 0,2,0,3,0,4,2,0,1,1,1,1,1,1 1,0,3,2,0,1,2,0,1,1,1,1,1,0 1,1,6,2,0,9,2,0,1,1,1,1,1,0 0,0,3,2,0,3,0,0,0,1,1,1,1,0 0,0,3,2,1,10,3,0,1,1,1,1,1,0 0,0,1,2,2,6,1,0,1,1,1,0,1,0 0,0,3,2,2,8,3,0,0,1,1,0,1,0 0,2,3,2,2,1,3,0,1,1,1,1,1,0 1,0,6,2,0,1,2,0,1,1,1,0,1,0 0,0,0,3,0,3,2,0,1,1,1,0,1,1 0,0,3,2,0,1,2,0,1,1,1,2,1,0 0,0,0,3,0,5,0,0,0,1,1,0,1,0 1,0,3,2,0,8,0,0,0,1,1,0,1,0 0,4,1,2,2,3,1,0,0,1,1,2,1,0 0,0,5,2,2,2,1,4,0,1,1,2,1,0 0,0,1,2,2,5,3,4,1,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,0 1,4,10,3,0,8,2,0,1,1,1,0,1,1 0,1,4,3,0,5,2,0,1,1,1,0,1,1 1,0,0,3,0,5,2,0,1,1,1,0,1,1 0,0,3,2,2,11,1,0,0,1,1,0,1,0 0,0,1,2,2,2,1,1,1,1,1,2,1,0 2,1,3,2,0,10,2,0,1,1,1,1,1,1 1,0,10,3,2,4,3,0,1,1,1,1,1,1 1,5,1,2,2,2,3,0,0,1,1,0,1,0 0,0,9,1,2,9,3,0,1,1,1,2,1,0 2,1,3,2,0,9,2,0,1,1,1,1,1,0 0,0,0,3,0,5,2,1,1,1,1,0,1,0 1,0,3,2,0,10,2,0,1,1,1,2,1,0 0,0,3,2,2,2,1,4,0,1,1,0,1,0 0,0,1,2,2,8,1,0,0,1,1,2,1,0 1,0,3,2,0,2,2,0,1,1,1,2,1,0 0,0,0,3,0,8,2,0,1,1,1,1,1,1 0,0,1,2,2,3,1,0,0,1,1,0,1,0 1,0,3,2,1,7,3,0,1,1,1,0,1,0 0,0,3,2,2,10,1,0,1,1,1,0,1,0 0,5,0,3,2,5,4,4,0,1,1,0,1,0 1,1,1,2,0,1,2,0,1,1,1,1,1,0 1,0,10,3,0,5,2,0,1,1,1,1,1,1 1,0,6,2,0,5,2,0,1,1,1,1,1,0 0,0,5,2,2,2,5,0,0,1,1,2,1,0 2,5,4,3,0,4,2,4,1,1,1,1,1,1 1,0,3,2,2,2,5,0,0,1,1,1,1,0 2,1,11,0,4,1,4,0,0,1,1,1,1,0 1,1,6,2,1,9,3,0,1,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,1,1,0 0,0,9,1,2,2,4,0,0,1,1,2,1,0 1,4,0,3,1,4,5,4,0,1,1,1,1,0 1,1,9,1,0,2,2,0,1,1,1,1,1,0 1,1,0,3,0,5,2,0,1,1,1,2,1,0 1,0,1,2,1,8,3,0,0,1,1,1,1,0 2,3,1,2,0,8,2,0,1,1,1,0,1,1 1,0,3,2,2,3,1,0,0,1,1,0,1,0 0,5,1,2,2,8,1,0,0,1,1,2,1,0 1,1,3,2,0,3,2,0,1,1,1,1,1,0 1,0,3,2,0,7,2,0,1,1,1,1,1,1 2,4,3,2,0,12,2,0,1,1,1,0,1,0 1,0,1,2,1,5,5,0,0,1,1,1,1,0 0,0,3,2,2,1,5,0,1,1,1,2,1,0 1,0,4,3,0,4,2,0,1,1,1,0,1,1 0,0,2,1,2,2,1,0,0,1,1,2,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 1,0,1,2,1,8,3,0,0,1,1,1,1,0 0,0,5,2,0,3,2,0,1,1,1,0,1,0 1,0,10,3,2,4,5,4,0,1,1,2,1,0 1,0,0,3,0,3,2,0,1,1,1,0,1,1 0,5,5,2,0,8,2,0,1,1,1,2,1,0 2,0,1,2,0,4,2,0,1,1,1,1,1,1 1,0,0,3,0,3,2,0,1,1,1,1,1,1 2,0,1,2,0,0,2,0,1,1,1,0,1,1 1,0,0,3,0,3,2,0,1,1,1,1,1,1 1,1,3,2,0,10,2,0,1,1,1,1,1,0 2,1,0,3,0,1,2,0,1,1,1,1,1,0 1,0,3,2,0,6,2,0,1,1,1,0,1,1 1,0,6,2,0,2,2,0,1,1,1,1,1,0 1,3,0,3,0,8,0,0,0,1,1,0,1,1 0,0,0,3,4,2,3,0,0,1,1,2,1,0 2,0,3,2,2,5,3,0,0,1,1,1,1,0 0,4,5,2,0,8,0,0,0,1,1,0,1,1 0,0,3,2,0,8,2,0,1,1,1,1,1,1 0,0,3,2,2,10,3,0,0,1,1,0,1,0 1,0,1,2,0,10,2,0,1,1,1,1,1,1 0,0,5,2,0,1,2,0,1,1,1,1,1,0 0,0,10,3,2,5,3,0,1,1,1,1,1,1 1,0,0,3,2,4,3,0,1,1,1,0,1,1 0,0,6,2,1,8,5,0,0,1,1,0,1,0 1,1,1,2,0,1,2,0,1,1,1,0,1,0 1,0,1,2,1,8,3,0,0,1,1,0,1,0 0,0,2,1,2,2,4,0,0,1,1,2,1,0 1,0,14,0,0,7,2,0,1,1,1,0,1,0 1,4,1,2,1,10,3,0,0,1,1,0,1,0 1,3,1,2,0,10,2,4,1,1,1,0,1,0 0,1,0,3,1,3,3,0,1,1,1,1,1,1 2,0,3,2,1,2,3,4,0,1,1,0,1,0 1,0,0,3,0,1,2,0,1,1,1,0,1,0 0,0,0,3,2,3,3,0,0,1,1,1,1,1 2,0,12,1,0,1,2,4,1,1,1,0,1,0 2,1,0,3,0,4,2,0,1,1,1,0,1,0 1,0,4,3,0,5,2,0,1,1,1,1,1,1 0,0,0,3,0,5,2,0,1,1,1,0,1,0 1,4,0,3,0,5,0,0,0,1,1,1,1,0 0,0,2,1,2,6,1,0,1,1,1,2,1,0 2,0,1,2,0,4,2,0,1,1,1,0,1,0 0,2,0,3,3,5,3,0,0,1,1,1,1,0 0,4,3,2,0,12,2,0,1,1,1,1,1,0 0,0,1,2,0,1,2,0,1,1,1,0,1,0 0,2,3,2,2,3,1,0,1,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,3,2,1,2,5,0,0,1,1,0,1,0 1,4,0,3,0,5,2,0,1,1,1,0,1,0 0,0,1,2,1,5,3,0,0,1,1,2,1,0 1,4,3,2,1,8,5,0,0,1,1,2,1,0 1,0,4,3,0,3,0,0,0,1,1,0,1,0 0,0,3,2,2,6,1,4,1,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,0,3,0,5,0,0,0,1,1,2,1,1 1,0,6,2,1,5,3,0,0,1,1,2,1,0 2,1,2,1,0,1,2,0,1,1,1,2,1,0 1,0,6,2,1,5,5,0,0,1,1,0,1,1 2,0,3,2,0,8,2,0,1,1,1,1,1,1 0,4,3,2,0,12,2,0,1,1,1,0,1,0 1,0,6,2,0,1,2,0,1,1,1,1,1,1 0,0,1,2,2,8,3,0,0,1,1,1,1,0 1,0,1,2,0,4,2,0,1,1,1,1,1,0 2,4,0,3,3,5,5,0,0,1,1,1,1,0 0,0,1,2,2,2,1,0,1,1,1,2,1,0 0,0,3,2,0,10,2,0,1,1,1,0,1,0 3,0,1,2,0,5,2,0,1,1,1,1,1,1 1,2,0,3,0,3,2,0,1,1,1,1,1,1 1,0,1,2,0,3,2,0,1,1,1,1,1,0 1,0,3,2,1,5,1,0,0,1,1,0,1,1 0,0,3,2,2,3,4,0,0,1,1,1,1,0 1,0,1,2,0,6,2,4,1,1,1,0,1,0 0,4,1,2,1,8,5,0,0,1,1,0,1,0 1,0,1,2,0,4,2,0,1,1,1,0,1,1 1,4,3,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,0,4,2,0,1,1,1,0,1,0 2,0,1,2,0,4,2,0,1,1,1,2,1,0 1,1,3,2,0,10,2,0,1,1,1,1,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,14,0,3,7,5,0,0,1,1,0,1,0 0,0,1,2,1,5,5,0,0,1,1,0,1,0 2,4,11,0,0,2,2,0,1,1,1,0,1,0 1,0,8,0,1,11,1,4,0,1,1,2,1,0 1,0,5,2,0,3,2,0,1,1,1,1,1,1 0,0,3,2,2,6,1,0,1,1,1,0,1,0 1,4,10,3,0,5,2,0,1,1,1,0,1,0 1,0,1,2,0,0,2,0,1,1,1,0,1,1 1,0,0,3,1,4,5,0,0,1,1,0,1,1 1,5,0,3,2,5,5,4,0,1,1,0,1,0 0,0,10,3,2,4,5,0,1,1,1,0,1,0 1,0,3,2,0,5,2,2,1,1,1,1,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,1,2,2,1,1,0,0,1,1,2,1,0 1,0,10,3,0,5,0,0,0,1,1,2,1,1 0,0,3,2,2,3,3,0,1,1,1,2,1,0 0,0,1,2,2,3,3,0,0,1,1,2,1,0 1,0,3,2,1,1,3,0,0,1,1,0,1,0 1,0,1,2,2,0,3,0,0,1,1,1,1,1 2,0,3,2,0,3,2,0,1,1,1,1,1,1 1,1,4,3,0,5,2,3,1,1,1,2,1,1 2,4,0,3,0,10,2,0,1,1,1,0,1,0 0,0,2,1,2,2,1,0,0,1,1,2,1,0 0,0,11,0,2,7,4,0,1,1,1,0,1,0 1,1,3,2,0,4,2,0,1,1,1,1,1,0 0,0,10,3,0,4,2,0,1,1,1,1,1,1 1,4,10,3,1,4,3,0,0,1,1,0,1,0 2,0,3,2,0,1,2,0,1,1,1,1,1,0 0,0,3,2,0,10,2,0,1,1,1,0,1,0 0,0,0,3,0,5,0,0,0,1,1,1,1,1 0,0,1,2,0,3,2,0,1,1,1,1,1,0 1,0,3,2,2,6,1,0,1,1,1,2,1,0 0,1,6,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,2,1,3,0,1,1,1,1,1,0 0,0,1,2,6,2,0,0,0,1,1,0,1,1 0,0,1,2,0,10,2,0,1,1,1,1,1,0 1,0,13,3,0,5,0,0,0,1,1,2,1,1 1,0,10,3,2,5,3,0,1,1,1,0,1,1 0,0,3,2,2,1,1,0,1,1,1,2,1,0 0,0,3,2,1,4,3,0,0,1,1,1,1,0 1,0,1,2,2,4,3,0,1,1,1,1,1,0 0,5,6,2,2,8,5,0,0,1,1,0,1,0 0,0,12,1,2,6,1,0,1,1,1,2,1,0 1,0,12,1,0,1,2,4,1,1,1,0,1,0 1,3,1,2,0,8,2,0,1,1,1,0,1,1 1,0,10,3,0,4,2,0,1,1,1,1,1,1 1,0,3,2,0,1,2,0,1,1,1,1,1,1 0,5,1,2,2,5,3,0,1,1,1,0,1,0 0,0,2,1,0,9,1,0,1,1,1,0,1,0 0,0,3,2,2,2,1,0,0,1,1,2,1,0 0,0,3,2,2,3,4,0,1,1,1,1,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,0 0,1,3,2,0,1,2,0,1,1,1,0,1,0 1,1,1,2,0,4,2,0,1,1,1,2,1,1 1,3,1,2,1,4,5,0,0,1,1,2,1,0 1,1,1,2,0,4,0,0,0,1,1,2,1,0 0,0,3,2,1,2,1,0,0,1,1,2,1,0 0,4,1,2,2,8,1,0,0,1,1,2,1,0 0,0,0,3,3,4,5,4,0,1,1,0,1,0 1,0,3,2,1,7,3,0,1,1,1,0,1,0 1,0,0,3,1,5,5,0,0,1,1,2,1,0 0,0,1,2,2,0,3,4,1,1,1,0,1,0 1,4,10,3,0,4,2,4,1,1,1,1,1,1 0,0,1,2,0,8,2,0,1,1,1,0,1,1 1,4,1,2,1,6,3,0,1,1,1,1,1,0 1,5,3,2,1,8,5,0,0,1,1,1,1,0 0,0,3,2,0,3,0,0,0,1,1,2,1,0 2,4,10,3,0,5,0,0,0,1,1,0,1,0 1,0,3,2,0,9,2,0,1,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,0 1,1,1,2,0,10,2,0,1,1,1,0,1,0 1,0,8,0,0,6,2,0,1,1,1,2,1,0 1,1,13,3,0,10,2,0,1,1,1,1,1,0 1,0,0,3,0,4,2,1,1,1,1,0,1,0 0,1,3,2,0,1,2,0,1,1,1,0,1,0 1,0,1,2,4,8,3,0,0,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,0,1,0 2,0,13,3,0,5,2,0,1,1,1,1,1,1 0,0,1,2,2,8,5,0,0,1,1,0,1,0 0,0,2,1,0,6,0,1,0,1,1,2,1,0 0,0,1,2,2,9,3,0,1,1,1,2,1,0 1,5,1,2,1,3,3,0,0,1,1,0,1,0 2,2,8,0,0,4,2,0,1,1,1,1,1,0 0,0,2,1,2,2,3,0,0,1,1,2,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,1 2,0,4,3,0,5,2,0,1,1,1,2,1,0 0,0,0,3,2,8,3,0,0,1,1,0,1,0 1,3,3,2,0,4,2,0,1,1,1,1,1,1 1,3,3,2,0,1,2,0,1,1,1,0,1,0 1,0,1,2,1,3,3,0,0,1,1,0,1,0 1,0,7,1,0,9,2,0,1,1,1,1,1,0 1,5,0,3,2,5,3,0,0,1,1,0,1,0 1,2,3,2,0,4,2,0,1,1,1,1,1,1 0,0,7,1,2,9,5,0,1,1,1,1,1,0 0,0,12,1,2,2,1,0,0,1,1,2,1,0 1,0,0,3,0,5,2,0,1,1,1,2,1,0 0,0,2,1,2,8,1,0,0,1,1,2,1,0 2,0,10,3,0,4,2,0,1,1,1,1,1,1 0,0,1,2,0,4,2,0,1,1,1,0,1,1 0,1,0,3,0,1,2,0,1,1,1,1,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,3,2,0,7,2,0,1,1,1,1,1,0 1,0,10,3,2,5,1,0,1,1,1,0,1,0 0,0,3,2,3,2,5,4,0,1,1,0,1,0 1,0,1,2,0,10,2,0,1,1,1,1,1,0 0,0,1,2,0,8,0,0,0,1,1,0,1,0 2,0,3,2,2,8,3,0,0,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,1 0,0,1,2,2,5,1,0,1,1,1,1,1,0 0,0,3,2,2,2,1,4,1,1,1,2,1,0 1,0,3,2,2,2,3,0,0,1,1,2,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 2,2,5,2,0,3,2,0,1,1,1,1,1,1 1,0,2,1,0,1,2,0,1,1,1,0,1,0 0,0,1,2,2,2,3,0,0,1,1,2,1,0 1,3,0,3,1,4,3,4,0,1,1,0,1,0 1,1,0,3,0,9,2,0,1,1,1,1,1,0 1,4,3,2,0,10,0,0,0,1,1,0,1,1 1,4,10,3,0,5,2,0,1,1,1,2,1,1 0,5,0,3,2,5,3,4,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,1 0,0,3,2,2,9,3,0,1,1,1,1,1,0 0,0,12,1,2,2,1,0,0,1,1,2,1,0 1,0,3,2,0,5,2,0,1,1,1,0,1,1 0,5,10,3,2,0,3,0,1,1,1,0,1,0 1,1,3,2,2,1,3,0,1,1,1,2,1,0 1,0,10,3,0,8,2,0,1,1,1,0,1,0 1,0,3,2,1,1,3,0,1,1,1,1,1,0 0,4,0,3,2,5,3,0,1,1,1,1,1,0 1,4,1,2,0,0,2,0,1,1,1,1,1,1 0,0,5,2,1,7,5,2,0,1,1,0,1,0 0,0,1,2,1,7,5,4,0,1,1,1,1,0 0,0,2,1,2,3,1,0,0,1,1,2,1,0 0,0,3,2,0,6,2,0,1,1,1,0,1,0 1,0,3,2,1,1,5,0,0,1,1,0,1,0 0,0,10,3,2,0,5,0,1,1,1,1,1,0 1,0,6,2,0,2,2,1,1,1,1,1,1,1 2,4,1,2,0,8,2,0,1,1,1,2,1,0 1,0,3,2,3,1,3,0,1,1,1,0,1,0 1,0,3,2,2,0,3,0,1,1,1,1,1,0 0,4,1,2,2,12,3,0,1,1,1,0,1,0 0,0,3,2,2,8,1,4,1,1,1,0,1,0 0,0,2,1,2,5,1,0,0,1,1,2,1,0 0,0,1,2,2,5,1,0,0,1,1,2,1,0 0,0,1,2,2,2,1,0,1,1,1,2,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 1,5,10,3,0,5,2,0,1,1,1,1,1,1 1,5,1,2,0,4,0,4,0,1,1,0,1,0 1,0,1,2,1,8,5,0,0,1,1,0,1,0 0,1,0,3,2,4,3,0,1,1,1,1,1,0 1,0,13,3,0,4,2,0,1,1,1,1,1,1 0,0,0,3,0,4,2,0,1,1,1,0,1,1 1,5,0,3,0,12,2,0,1,1,1,1,1,0 1,3,1,2,0,8,2,4,1,1,1,0,1,1 0,0,2,1,1,1,3,0,0,1,1,0,1,0 0,5,1,2,1,12,3,0,1,1,1,0,1,1 1,0,1,2,1,8,5,4,0,1,1,2,1,0 1,0,1,2,2,4,5,0,0,1,1,0,1,0 0,0,3,2,2,3,1,0,0,1,1,2,1,0 1,2,1,2,0,9,2,0,1,1,1,1,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,1 2,1,1,2,0,0,2,0,1,1,1,2,1,0 0,0,1,2,2,8,1,0,0,1,1,2,1,0 1,0,6,2,0,1,2,0,1,1,1,1,1,0 0,0,1,2,2,10,1,0,1,1,1,2,1,0 0,0,2,1,2,2,4,0,0,1,1,2,1,0 1,0,1,2,0,4,2,0,1,1,1,1,1,1 0,0,1,2,2,2,1,0,0,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,3,2,4,5,5,0,0,1,1,0,1,0 1,4,0,3,0,5,2,0,1,1,1,0,1,1 0,0,1,2,2,1,1,0,1,1,1,1,1,0 0,0,5,2,0,5,2,0,1,1,1,0,1,0 2,0,6,2,0,5,2,0,1,1,1,1,1,1 0,0,3,2,2,2,5,4,0,1,1,0,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,1 0,1,3,2,0,1,2,0,1,1,1,0,1,0 0,0,5,2,2,8,1,0,1,1,1,2,1,0 0,0,3,2,2,1,1,4,1,1,1,1,1,0 0,0,0,3,2,3,3,0,0,1,1,2,1,0 0,5,1,2,2,4,1,0,1,1,1,0,1,0 0,2,0,3,2,4,3,0,0,1,1,1,1,1 2,4,3,2,0,4,2,0,1,1,1,1,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,0,3,0,3,2,0,1,1,1,0,1,0 0,3,3,2,2,4,5,0,0,1,1,0,1,0 2,0,3,2,1,10,3,0,1,1,1,0,1,0 2,3,10,3,1,8,5,0,0,1,1,0,1,0 0,0,1,2,2,2,1,4,1,1,1,2,1,0 1,0,3,2,2,2,3,4,0,1,1,0,1,0 2,0,3,2,4,8,3,0,0,1,1,0,1,1 0,0,3,2,1,8,5,0,0,1,1,0,1,0 1,0,12,1,3,7,5,4,0,1,1,0,1,0 1,2,3,2,0,4,2,0,1,1,1,0,1,0 0,0,3,2,2,2,1,0,0,1,1,2,1,0 2,1,3,2,0,9,2,2,1,1,1,2,1,0 1,3,3,2,0,4,2,0,1,1,1,1,1,1 0,0,9,1,2,2,1,0,1,1,1,2,1,0 0,0,6,2,1,0,5,4,0,1,1,0,1,0 0,0,6,2,0,2,2,0,1,1,1,0,1,1 0,0,1,2,2,8,3,0,0,1,1,2,1,0 1,0,1,2,0,1,2,0,1,1,1,1,1,0 1,0,4,3,1,5,3,0,0,1,1,2,1,1 0,4,0,3,2,1,3,0,1,1,1,0,1,1 1,4,10,3,1,5,3,4,1,1,1,0,1,0 0,0,3,2,2,8,5,0,0,1,1,0,1,0 1,0,6,2,1,8,5,4,0,1,1,1,1,0 1,0,10,3,0,3,2,0,1,1,1,1,1,1 0,0,2,1,2,6,1,0,1,1,1,2,1,0 0,3,1,2,2,8,1,4,0,1,1,0,1,0 0,1,7,1,0,1,2,0,1,1,1,2,1,0 0,0,10,3,2,4,3,0,1,1,1,0,1,1 1,0,0,3,0,4,2,0,1,1,1,0,1,1 2,0,1,2,2,4,3,0,0,1,1,1,1,1 1,0,0,3,0,3,2,0,1,1,1,2,1,1 2,0,12,1,2,2,3,0,1,1,1,0,1,0 1,0,6,2,0,2,2,0,1,1,1,0,1,0 2,4,3,2,4,8,3,0,0,1,1,2,1,0 1,0,3,2,1,5,5,0,1,1,1,0,1,0 1,0,1,2,1,4,3,0,0,1,1,1,1,0 0,0,3,2,2,3,1,0,0,1,1,2,1,0 0,0,0,3,2,8,3,0,0,1,1,0,1,0 0,0,12,1,0,1,1,4,1,1,1,0,1,0 2,5,0,3,2,4,3,4,0,1,1,0,1,0 0,0,3,2,2,9,4,0,1,1,1,1,1,0 1,0,10,3,0,0,2,0,1,1,1,2,1,1 0,0,3,2,0,1,2,0,1,1,1,2,1,0 2,1,12,1,4,9,5,0,1,1,1,2,1,0 2,0,3,2,0,2,2,0,1,1,1,0,1,1 2,0,3,2,0,3,2,0,1,1,1,2,1,0 1,0,10,3,1,4,5,0,0,1,1,1,1,0 0,0,3,2,0,10,2,0,1,1,1,1,1,0 0,0,3,2,0,8,2,4,1,1,1,0,1,0 1,0,6,2,2,8,3,0,0,1,1,0,1,0 2,0,10,3,0,5,2,0,1,1,1,1,1,1 1,0,2,1,0,1,2,0,1,1,1,1,1,0 0,0,12,1,1,7,3,4,1,1,1,1,1,0 2,3,0,3,0,0,2,0,1,1,1,1,1,1 2,0,0,3,0,4,2,0,1,1,1,0,1,1 2,0,0,3,0,8,2,0,1,1,1,0,1,1 0,0,1,2,2,4,3,0,1,1,1,1,1,0 0,0,1,2,2,3,1,0,1,1,1,2,1,0 1,0,6,2,5,5,3,0,1,1,1,0,1,0 1,3,4,3,0,5,2,0,1,1,1,1,1,1 0,0,3,2,0,10,2,0,1,1,1,2,1,0 0,0,3,2,2,6,1,0,1,1,1,0,1,0 1,0,14,0,5,7,4,0,1,1,1,0,1,0 1,2,3,2,0,4,0,2,0,1,1,0,1,1 1,0,3,2,1,8,5,0,0,1,1,2,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,0 0,5,0,3,0,5,2,0,1,1,1,1,1,1 1,0,2,1,0,6,2,0,1,1,1,0,1,0 1,0,1,2,1,8,5,0,0,1,1,1,1,0 1,0,3,2,3,0,5,0,0,1,1,0,1,0 0,0,2,1,2,7,1,4,0,1,1,0,1,0 2,1,8,0,0,9,2,0,1,1,1,1,1,1 1,0,3,2,1,3,3,0,1,1,1,1,1,0 1,4,1,2,1,0,3,0,0,1,1,0,1,0 0,0,3,2,2,8,3,0,0,1,1,0,1,0 0,0,10,3,2,5,3,0,1,1,1,0,1,1 0,0,0,3,0,3,2,0,1,1,1,1,1,0 1,3,5,2,0,4,0,0,0,1,1,0,1,1 0,0,3,2,0,7,2,0,1,1,1,1,1,0 0,0,1,2,1,3,3,0,0,1,1,2,1,0 0,0,1,2,2,8,1,0,0,1,1,0,1,0 1,0,3,2,1,4,3,0,1,1,1,0,1,0 1,1,3,2,2,9,3,0,1,1,1,1,1,0 0,0,1,2,2,1,4,1,0,1,1,0,1,0 0,0,2,1,2,2,1,0,1,1,1,2,1,0 0,0,3,2,2,8,3,0,0,1,1,0,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,1 1,0,3,2,1,3,3,0,1,1,1,2,1,0 0,0,1,2,2,8,3,0,0,1,1,2,1,0 2,3,1,2,4,12,3,0,0,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 2,1,0,3,0,4,2,0,1,1,1,0,1,1 0,0,2,1,2,3,1,0,0,1,1,2,1,0 2,1,3,2,0,3,2,0,1,1,1,1,1,0 1,0,3,2,2,1,3,0,1,1,1,1,1,0 0,0,7,1,2,2,5,0,0,1,1,2,1,0 2,0,7,1,1,3,5,0,0,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,0,3,2,8,1,0,0,1,1,2,1,0 1,4,1,2,0,12,2,0,1,1,1,1,1,0 1,0,13,3,0,5,2,1,1,1,1,0,1,1 0,0,3,2,0,2,0,0,0,1,1,2,1,0 0,0,1,2,0,0,2,0,1,1,1,1,1,0 1,1,3,2,0,10,2,0,1,1,1,2,1,0 2,0,10,3,0,4,0,0,0,1,1,1,1,0 1,0,5,2,1,3,5,0,1,1,1,0,1,0 1,5,3,2,2,2,3,0,1,1,1,0,1,0 0,0,7,1,3,7,5,0,0,1,1,2,1,0 2,5,9,1,2,2,1,0,1,1,1,0,1,0 1,0,6,2,1,5,3,0,0,1,1,0,1,0 0,0,3,2,0,9,2,0,1,1,1,1,1,0 0,0,3,2,2,5,1,0,0,1,1,2,1,0 2,4,12,1,0,10,2,0,1,1,1,2,1,0 0,0,5,2,2,3,3,4,0,1,1,1,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,3,2,1,2,3,0,0,1,1,0,1,0 0,0,3,2,0,8,2,0,1,1,1,2,1,0 0,0,0,3,0,5,0,0,0,1,1,0,1,0 0,0,0,3,2,5,3,0,1,1,1,1,1,1 0,0,5,2,2,2,1,0,0,1,1,2,1,0 1,1,6,2,1,4,3,0,1,1,1,2,1,0 0,0,3,2,2,3,3,0,0,1,1,2,1,0 2,1,3,2,0,1,2,0,1,1,1,0,1,0 0,1,1,2,2,0,3,0,1,1,1,2,1,0 1,0,1,2,0,10,2,0,1,1,1,1,1,0 0,0,1,2,1,2,5,4,0,1,1,0,1,0 3,1,0,3,0,4,2,0,1,1,1,2,1,1 1,0,1,2,1,7,5,4,0,1,1,2,1,0 0,0,1,2,2,5,3,0,0,1,1,0,1,0 1,0,2,1,0,6,2,0,1,1,1,0,1,0 0,0,2,1,0,2,2,0,1,1,1,0,1,0 0,0,3,2,3,7,5,4,0,1,1,0,1,0 1,5,0,3,0,4,2,0,1,1,1,2,1,1 2,0,0,3,2,3,5,0,0,1,1,0,1,0 0,0,1,2,2,4,3,0,1,1,1,1,1,0 2,1,12,1,5,9,3,0,1,1,1,1,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,1,2,2,2,1,0,0,1,1,0,1,0 2,2,3,2,0,10,2,0,1,1,1,1,1,1 0,0,1,2,2,1,3,0,1,1,1,0,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 0,0,4,3,2,5,3,0,1,1,1,0,1,0 0,0,5,2,2,3,1,0,0,1,1,0,1,0 0,0,1,2,2,8,1,0,1,1,1,0,1,0 1,0,3,2,0,2,0,1,0,1,1,2,1,0 2,4,8,0,0,1,2,0,1,1,1,0,1,0 0,0,3,2,2,6,3,0,1,1,1,0,1,0 1,0,1,2,0,10,2,0,1,1,1,1,1,1 0,0,2,1,0,6,2,0,1,1,1,0,1,0 1,0,4,3,0,5,2,0,1,1,1,1,1,1 0,0,1,2,0,7,2,0,1,1,1,2,1,0 0,1,6,2,0,9,2,0,1,1,1,0,1,0 2,1,3,2,0,3,2,0,1,1,1,0,1,0 2,4,10,3,4,5,5,0,0,1,1,1,1,1 1,1,1,2,1,4,5,0,0,1,1,0,1,0 1,0,1,2,1,4,5,0,0,1,1,0,1,0 1,3,1,2,0,4,2,0,1,1,1,0,1,1 2,0,0,3,0,4,2,0,1,1,1,1,1,1 2,0,0,3,0,5,2,0,1,1,1,0,1,1 3,0,1,2,0,5,2,0,1,1,1,2,1,0 1,0,1,2,1,4,3,0,0,1,1,0,1,0 0,0,9,1,1,7,3,0,0,1,1,0,1,0 1,0,0,3,1,0,4,0,1,1,1,0,1,0 1,0,1,2,3,1,3,0,1,1,1,1,1,0 1,1,3,2,2,3,3,0,1,1,1,0,1,0 0,0,1,2,2,2,1,0,1,1,1,2,1,0 0,0,1,2,2,10,3,0,0,1,1,1,1,0 1,0,1,2,1,3,4,0,0,1,1,2,1,1 1,0,3,2,4,1,3,0,0,1,1,0,1,0 0,0,2,1,2,8,1,0,0,1,1,2,1,0 2,4,10,3,0,5,2,0,1,1,1,2,1,0 0,0,3,2,0,8,2,0,1,1,1,0,1,0 3,1,1,2,0,4,2,0,1,1,1,2,1,0 2,3,2,1,1,1,3,4,0,1,1,0,1,1 1,0,10,3,0,5,2,0,1,1,1,0,1,1 0,5,5,2,2,8,3,0,0,1,1,2,1,0 0,0,3,2,2,6,1,0,1,1,1,1,1,0 0,0,6,2,2,0,4,0,0,1,1,2,1,0 0,0,0,3,0,3,2,0,1,1,1,1,1,1 0,0,3,2,2,3,1,0,0,1,1,2,1,0 0,0,2,1,2,3,5,4,0,1,1,2,1,0 1,1,1,2,0,1,2,0,1,1,1,1,1,0 1,0,3,2,1,3,3,0,1,1,1,1,1,0 1,2,4,3,0,5,2,0,1,1,1,1,1,1 0,0,2,1,2,3,1,0,0,1,1,2,1,0 1,4,4,3,0,5,0,0,0,1,1,1,1,1 0,0,1,2,0,6,2,0,1,1,1,1,1,0 1,0,10,3,0,5,2,0,1,1,1,1,1,1 2,5,1,2,0,4,2,0,1,1,1,0,1,1 2,0,3,2,4,8,5,0,0,1,1,2,1,0 0,0,1,2,2,9,3,0,0,1,1,1,1,0 0,0,1,2,0,10,2,0,1,1,1,0,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,0 2,3,3,2,1,4,3,0,1,1,1,0,1,1 2,5,9,1,1,2,5,0,0,1,1,0,1,0 0,0,0,3,2,3,3,0,1,1,1,1,1,0 0,0,0,3,2,7,1,0,1,1,1,0,1,0 2,0,1,2,0,3,2,0,1,1,1,1,1,1 1,3,3,2,0,8,2,4,1,1,1,1,1,1 0,1,10,3,2,5,3,0,1,1,1,0,1,0 0,0,1,2,2,0,1,0,1,1,1,2,1,0 0,0,1,2,2,4,3,0,1,1,1,1,1,0 2,1,3,2,0,9,2,0,1,1,1,1,1,0 0,0,3,2,0,6,2,0,1,1,1,0,1,0 0,0,3,2,2,1,5,0,1,1,1,0,1,0 2,0,10,3,0,5,2,0,1,1,1,1,1,1 0,0,1,2,2,5,1,0,1,1,1,2,1,0 0,0,3,2,0,6,2,0,1,1,1,1,1,0 0,0,1,2,0,1,2,0,1,1,1,1,1,0 1,5,10,3,1,5,3,0,1,1,1,2,1,0 0,0,8,0,0,6,4,3,0,1,1,2,1,0 0,0,3,2,0,3,2,0,1,1,1,1,1,1 0,0,3,2,2,3,1,0,1,1,1,2,1,0 1,0,3,2,3,10,5,4,0,1,1,2,1,0 0,0,0,3,2,5,3,0,1,1,1,1,1,0 0,0,3,2,0,10,2,0,1,1,1,1,1,0 0,0,4,3,2,0,3,0,1,1,1,1,1,0 0,0,0,3,5,8,3,0,0,1,1,2,1,0 0,0,3,2,0,4,2,0,1,1,1,1,1,1 2,5,3,2,0,4,2,0,1,1,1,0,1,1 1,0,14,0,0,6,2,0,1,1,1,0,1,0 2,0,8,0,0,5,2,0,1,1,1,2,1,0 2,0,3,2,0,1,2,4,1,1,1,0,1,0 1,0,3,2,3,4,5,0,0,1,1,0,1,0 0,0,0,3,2,4,1,1,0,1,1,0,1,0 1,0,3,2,0,4,2,0,1,1,1,0,1,1 0,0,3,2,2,2,1,4,1,1,1,2,1,0 0,0,1,2,0,1,2,0,1,1,1,1,1,0 1,5,1,2,1,8,3,0,0,1,1,0,1,0 0,0,7,1,0,10,2,0,1,1,1,1,1,0 0,0,1,2,2,10,3,0,1,1,1,0,1,0 0,0,0,3,0,4,0,0,0,1,1,1,1,1 0,0,3,2,0,3,1,0,1,1,1,0,1,0 1,0,8,0,1,1,5,0,1,1,1,0,1,0 0,0,3,2,2,7,1,0,1,1,1,2,1,0 0,0,12,1,0,7,1,1,0,1,1,0,1,0 2,0,0,3,1,5,3,0,0,1,1,0,1,1 1,0,3,2,1,7,3,4,1,1,1,0,1,0 1,0,1,2,1,3,3,0,1,1,1,1,1,0 1,0,3,2,1,7,5,0,1,1,1,0,1,1 0,0,1,2,2,3,1,0,0,1,1,2,1,0 0,0,6,2,2,2,3,0,1,1,1,1,1,0 1,0,1,2,1,7,5,0,1,1,1,1,1,0 1,0,3,2,1,8,5,4,0,1,1,0,1,0 2,0,3,2,0,1,2,0,1,1,1,1,1,0 1,0,8,0,1,3,3,0,0,1,1,0,1,0 2,2,5,2,0,1,2,0,1,1,1,0,1,0 1,0,3,2,0,3,0,0,0,1,1,0,1,1 0,0,1,2,2,12,1,4,0,1,1,2,1,0 0,0,0,3,2,5,3,0,0,1,1,0,1,0 1,0,1,2,0,7,2,0,1,1,1,0,1,1 0,2,2,1,2,9,1,0,1,1,1,1,1,0 1,0,1,2,0,3,2,4,1,1,1,1,1,1 0,0,0,3,2,2,3,0,1,1,1,0,1,0 0,0,6,2,0,6,0,0,0,1,1,2,1,0 0,5,3,2,2,8,1,0,0,1,1,1,1,0 0,0,2,1,2,1,1,0,1,1,1,2,1,0 2,0,14,0,0,6,2,1,1,1,1,0,1,1 2,3,1,2,0,8,2,1,1,1,1,0,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 0,0,12,1,2,6,1,0,1,1,1,2,1,0 0,4,3,2,0,12,2,0,1,1,1,0,1,1 2,0,3,2,4,8,3,0,0,1,1,2,1,0 1,0,3,2,3,7,3,4,1,1,1,0,1,0 0,4,3,2,2,12,3,0,1,1,1,0,1,0 0,4,2,1,2,8,1,0,1,1,1,2,1,0 2,0,3,2,2,6,1,0,1,1,1,0,1,0 1,0,1,2,0,10,2,0,1,1,1,0,1,1 0,5,13,3,0,5,2,1,1,1,1,1,1,0 1,0,0,3,0,3,2,0,1,1,1,0,1,1 2,0,3,2,0,2,2,0,1,1,1,1,1,0 1,5,3,2,1,8,1,0,0,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,0,1,1 1,0,1,2,0,4,1,0,1,1,1,0,1,1 0,0,3,2,0,7,2,0,1,1,1,1,1,0 0,0,0,3,2,3,3,0,0,1,1,0,1,0 1,0,3,2,0,8,0,0,0,1,1,0,1,0 1,1,0,3,0,4,2,1,1,1,1,1,1,0 0,0,6,2,0,7,2,0,1,1,1,1,1,1 1,0,3,2,0,7,2,4,1,1,1,0,1,0 0,0,14,0,2,6,1,0,1,1,1,0,1,0 2,0,8,0,0,1,2,0,1,1,1,0,1,0 2,0,6,2,0,0,2,0,1,1,1,0,1,1 1,0,5,2,0,0,2,0,1,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,2,8,1,0,0,1,1,0,1,0 0,5,1,2,2,6,1,0,1,1,1,0,1,0 1,4,6,2,1,1,5,0,0,1,1,1,1,0 2,0,3,2,0,10,2,0,1,1,1,0,1,0 0,0,3,2,2,1,3,0,1,1,1,1,1,0 0,0,3,2,2,12,1,4,1,1,1,0,1,0 1,5,14,0,0,2,2,0,1,1,1,0,1,0 1,4,6,2,2,12,3,0,0,1,1,0,1,0 2,0,9,1,0,10,2,0,1,1,1,1,1,1 1,3,1,2,1,4,3,0,0,1,1,1,1,0 2,0,3,2,0,9,2,0,1,1,1,1,1,1 0,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,12,1,2,2,1,0,1,1,1,0,1,0 0,0,3,2,0,5,3,4,1,1,1,0,1,0 1,0,3,2,0,9,2,0,1,1,1,1,1,0 0,0,12,1,2,1,3,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 1,0,3,2,0,1,2,0,1,1,1,1,1,1 1,5,10,3,1,5,3,0,1,1,1,0,1,0 1,4,10,3,0,5,2,0,1,1,1,2,1,1 1,0,5,2,4,3,5,0,0,1,1,0,1,0 1,0,3,2,1,1,3,0,1,1,1,0,1,0 0,4,0,3,2,5,1,4,0,1,1,2,1,0 0,0,1,2,2,7,3,0,0,1,1,0,1,0 0,0,3,2,3,7,3,0,1,1,1,1,1,0 1,0,3,2,1,4,3,0,1,1,1,0,1,0 0,0,3,2,0,10,2,2,1,1,1,1,1,0 1,0,10,3,0,5,2,0,1,1,1,1,1,1 1,0,3,2,1,3,5,0,0,1,1,1,1,0 0,0,3,2,0,1,2,0,1,1,1,1,1,0 0,0,3,2,2,10,3,0,1,1,1,0,1,0 0,4,5,2,2,12,5,0,1,1,1,0,1,0 2,0,9,1,0,1,2,0,1,1,1,0,1,0 1,0,12,1,0,6,2,4,1,1,1,1,1,0 2,4,10,3,0,5,2,4,1,1,1,0,1,1 0,5,1,2,2,5,1,0,1,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,1 2,0,3,2,0,2,2,0,1,1,1,0,1,0 0,0,1,2,0,6,2,0,1,1,1,0,1,0 0,0,12,1,0,10,2,0,1,1,1,0,1,0 2,0,3,2,0,1,2,0,1,1,1,2,1,0 2,0,1,2,0,3,2,0,1,1,1,0,1,0 1,2,1,2,0,7,2,0,1,1,1,1,1,0 1,4,10,3,0,5,0,0,0,1,1,1,1,1 2,0,3,2,0,3,0,0,0,1,1,2,1,0 0,0,0,3,1,4,3,0,0,1,1,1,1,1 0,5,0,3,0,4,0,0,0,1,1,1,1,1 0,0,2,1,1,2,5,0,0,1,1,0,1,0 0,0,6,2,0,0,2,0,1,1,1,0,1,0 0,0,12,1,2,2,1,0,0,1,1,2,1,0 1,0,6,2,1,8,3,0,0,1,1,2,1,0 2,0,6,2,0,1,2,0,1,1,1,1,1,0 0,0,1,2,0,6,2,0,1,1,1,2,1,0 1,0,1,2,0,10,2,0,1,1,1,0,1,0 1,0,10,3,0,5,2,0,1,1,1,1,1,1 1,0,1,2,3,0,3,0,0,1,1,2,1,0 0,3,1,2,2,8,3,0,1,1,1,0,1,0 1,0,3,2,2,7,3,0,1,1,1,1,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,1 0,0,3,2,0,1,2,0,1,1,1,1,1,0 2,0,0,3,4,5,5,0,1,1,1,0,1,1 0,0,1,2,2,8,3,0,0,1,1,0,1,0 0,0,1,2,0,9,2,0,1,1,1,0,1,1 1,0,3,2,1,7,3,0,1,1,1,0,1,0 2,2,4,3,0,5,2,0,1,1,1,2,1,1 1,0,3,2,1,4,5,0,0,1,1,0,1,0 1,2,0,3,0,4,2,0,1,1,1,1,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,1 0,4,6,2,0,12,2,0,1,1,1,0,1,1 2,0,0,3,1,5,3,0,1,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,1 0,0,3,2,0,10,2,0,1,1,1,0,1,0 0,3,0,3,2,4,1,0,1,1,1,0,1,0 1,0,3,2,3,4,5,0,0,1,1,2,1,0 1,0,6,2,2,4,3,0,0,1,1,1,1,0 0,0,3,2,2,2,4,0,1,1,1,0,1,0 2,0,3,2,0,7,2,0,1,1,1,1,1,1 0,0,3,2,2,7,1,0,0,1,1,2,1,0 1,5,3,2,1,4,3,0,1,1,1,0,1,0 2,0,12,1,0,7,2,4,1,1,1,1,1,0 0,0,3,2,2,6,4,0,1,1,1,2,1,0 0,0,0,3,2,0,3,4,1,1,1,2,1,0 0,0,3,2,2,3,1,0,1,1,1,1,1,0 0,0,3,2,2,6,3,0,1,1,1,0,1,0 2,5,3,2,4,5,5,4,0,1,1,2,1,0 1,0,1,2,0,4,2,0,1,1,1,1,1,0 1,3,1,2,1,4,5,4,0,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,1 1,0,3,2,1,10,1,0,1,1,1,1,1,0 0,0,1,2,2,10,1,0,1,1,1,0,1,0 1,0,3,2,2,1,1,4,1,1,1,2,1,0 0,0,1,2,0,7,2,1,1,1,1,0,1,0 1,4,0,3,2,5,3,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,14,0,0,1,2,0,1,1,1,1,1,0 0,5,9,1,2,8,5,0,0,1,1,0,1,0 0,0,1,2,2,8,1,0,1,1,1,0,1,0 1,0,6,2,0,1,2,0,1,1,1,1,1,0 1,0,0,3,0,3,2,0,1,1,1,1,1,0 0,0,3,2,2,6,1,4,1,1,1,2,1,0 0,1,0,3,2,2,3,0,0,1,1,2,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,0,4,2,0,1,1,1,0,1,0 0,1,3,2,0,2,2,4,1,1,1,1,1,1 0,2,1,2,0,3,2,0,1,1,1,1,1,1 0,5,0,3,2,5,3,0,1,1,1,1,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,8,0,0,9,2,4,1,1,1,2,1,0 1,0,3,2,2,2,5,4,0,1,1,2,1,0 1,1,3,2,0,1,2,0,1,1,1,2,1,0 1,0,1,2,0,4,2,4,1,1,1,1,1,1 1,0,0,3,0,5,2,0,1,1,1,1,1,1 0,0,10,3,2,5,3,0,1,1,1,2,1,0 1,0,3,2,2,3,5,0,1,1,1,1,1,0 0,4,5,2,1,8,5,0,0,1,1,2,1,0 1,1,3,2,0,3,2,0,1,1,1,1,1,1 1,0,1,2,0,4,2,0,1,1,1,1,1,1 0,0,14,0,2,6,5,0,1,1,1,2,1,0 1,5,6,2,0,4,2,0,1,1,1,2,1,1 1,0,13,3,0,5,2,0,1,1,1,1,1,1 0,0,5,2,1,3,3,0,1,1,1,0,1,0 2,0,3,2,0,10,2,0,1,1,1,0,1,0 2,5,1,2,1,5,3,4,0,1,1,2,1,0 1,0,3,2,2,10,3,0,1,1,1,2,1,0 0,0,1,2,2,4,3,0,0,1,1,0,1,1 0,0,3,2,2,2,3,0,1,1,1,0,1,0 0,0,1,2,2,3,1,4,0,1,1,2,1,0 0,0,1,2,2,7,3,4,1,1,1,0,1,0 0,0,3,2,2,2,1,0,0,1,1,2,1,0 1,3,10,3,0,6,2,0,1,1,1,2,1,0 2,0,12,1,0,1,2,0,1,1,1,0,1,1 1,1,12,1,5,2,3,0,0,1,1,2,1,0 0,0,1,2,2,2,1,0,1,1,1,2,1,0 1,0,3,2,2,6,3,4,1,1,1,0,1,0 0,0,1,2,2,1,3,0,1,1,1,0,1,0 0,0,2,1,2,2,1,0,1,1,1,1,1,0 2,0,3,2,0,5,2,0,1,1,1,2,1,0 1,0,1,2,2,6,3,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,1 0,0,1,2,2,2,5,0,0,1,1,1,1,0 2,4,1,2,0,6,2,4,1,1,1,0,1,1 0,4,3,2,2,6,4,4,1,1,1,0,1,0 1,0,3,2,1,2,5,4,0,1,1,2,1,0 0,0,3,2,0,1,2,0,1,1,1,2,1,0 0,0,14,0,2,1,3,0,1,1,1,0,1,0 2,1,3,2,2,3,3,0,0,1,1,1,1,0 0,0,1,2,1,1,3,0,1,1,1,1,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 1,0,10,3,0,5,2,0,1,1,1,0,1,0 1,0,9,1,1,1,1,0,1,1,1,2,1,0 0,0,1,2,2,2,1,0,0,1,1,0,1,0 1,1,1,2,0,5,2,0,1,1,1,1,1,0 0,4,0,3,0,5,0,0,0,1,1,1,1,1 0,0,3,2,2,7,1,0,0,1,1,0,1,0 0,5,1,2,0,4,2,4,1,1,1,0,1,1 2,0,3,2,0,1,2,0,1,1,1,1,1,1 0,0,3,2,2,6,1,4,1,1,1,2,1,0 0,0,1,2,2,8,3,3,0,1,1,2,1,0 1,2,1,2,0,5,0,0,0,1,1,1,1,1 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,0,3,0,0,2,0,1,1,1,0,1,0 1,0,3,2,0,1,2,4,1,1,1,0,1,0 1,1,1,2,0,8,0,0,0,1,1,2,1,0 2,0,10,3,1,5,3,0,1,1,1,2,1,0 2,0,8,0,2,2,1,0,0,1,1,2,1,0 1,0,5,2,1,5,3,0,1,1,1,1,1,0 1,1,3,2,0,2,2,1,1,1,1,1,1,0 0,0,7,1,2,7,3,0,1,1,1,1,1,0 0,0,10,3,0,3,2,0,1,1,1,2,1,0 0,3,0,3,0,4,2,0,1,1,1,0,1,1 0,0,12,1,0,7,2,0,1,1,1,1,1,0 1,0,3,2,1,1,5,0,1,1,1,0,1,0 1,0,13,3,1,5,5,4,0,1,1,2,1,1 0,1,5,2,2,1,1,0,1,1,1,0,1,0 0,2,3,2,0,2,2,0,1,1,1,1,1,0 0,0,6,2,0,3,2,0,1,1,1,0,1,0 0,0,3,2,2,4,3,0,1,1,1,0,1,0 0,0,1,2,2,6,1,0,1,1,1,2,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,1 1,0,1,2,0,4,2,0,1,1,1,0,1,1 0,0,2,1,2,2,1,0,0,1,1,2,1,0 0,0,1,2,2,8,1,0,1,1,1,2,1,0 0,4,3,2,1,12,3,0,1,1,1,1,1,1 1,1,10,3,1,2,5,0,0,1,1,2,1,0 1,0,3,2,0,10,2,3,1,1,1,0,1,0 1,0,3,2,0,10,2,0,1,1,1,0,1,0 0,0,0,3,2,8,3,0,1,1,1,1,1,0 0,0,1,2,2,8,3,0,0,1,1,2,1,0 0,1,3,2,0,9,2,0,1,1,1,1,1,0 1,0,13,3,0,5,2,0,1,1,1,1,1,1 0,5,5,2,2,5,3,0,1,1,1,2,1,0 0,0,3,2,0,10,2,0,1,1,1,1,1,0 2,4,1,2,0,4,2,0,1,1,1,1,1,1 2,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,0,3,1,4,3,0,0,1,1,0,1,0 0,0,3,2,1,10,3,0,1,1,1,1,1,0 1,0,0,3,0,8,2,0,1,1,1,1,1,1 0,0,2,1,0,6,4,0,1,1,1,2,1,0 1,0,10,3,0,4,2,0,1,1,1,0,1,0 1,0,5,2,1,5,3,0,1,1,1,1,1,0 0,0,3,2,2,7,1,0,1,1,1,0,1,0 0,0,1,2,2,8,1,0,0,1,1,0,1,0 1,0,6,2,0,5,2,0,1,1,1,0,1,1 0,1,5,2,4,3,5,0,0,1,1,0,1,1 0,0,3,2,0,10,2,0,1,1,1,1,1,0 1,5,0,3,3,5,3,0,0,1,1,0,1,0 0,0,1,2,2,6,1,0,1,1,1,1,1,0 1,0,5,2,4,8,5,0,0,1,1,0,1,0 1,5,1,2,1,7,3,4,0,1,1,2,1,0 0,0,0,3,0,5,2,0,1,1,1,0,1,1 0,0,2,1,2,6,1,2,1,1,1,2,1,0 1,0,7,1,0,1,2,0,1,1,1,0,1,0 1,0,3,2,2,7,5,4,0,1,1,0,1,0 0,0,3,2,2,1,3,0,1,1,1,0,1,0 1,0,6,2,0,1,2,0,1,1,1,0,1,1 1,4,5,2,0,5,0,2,0,1,1,0,1,0 0,0,14,0,0,1,2,0,1,1,1,2,1,0 2,5,1,2,1,4,3,0,0,1,1,1,1,0 0,0,3,2,0,10,2,0,1,1,1,1,1,0 1,4,5,2,2,5,3,0,1,1,1,0,1,1 0,0,3,2,1,3,5,2,0,1,1,2,1,0 1,4,3,2,1,12,5,0,1,1,1,1,1,0 0,0,12,1,0,1,2,0,1,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,0,3,5,8,5,0,0,1,1,0,1,0 0,0,0,3,0,4,0,0,0,1,1,0,1,1 1,4,10,3,2,5,5,0,0,1,1,0,1,0 1,0,6,2,2,1,3,0,1,1,1,2,1,0 0,0,3,2,2,10,1,0,0,1,1,0,1,0 2,4,8,0,0,12,2,0,1,1,1,2,1,0 0,3,3,2,2,8,3,0,0,1,1,0,1,0 0,0,1,2,2,6,1,0,1,1,1,2,1,0 0,0,3,2,0,3,2,0,1,1,1,1,1,0 1,1,3,2,1,4,5,0,0,1,1,1,1,0 0,0,0,3,0,5,2,0,1,1,1,1,1,0 0,2,3,2,0,3,2,0,1,1,1,1,1,1 0,0,1,2,0,1,2,0,1,1,1,0,1,0 1,0,12,1,5,1,3,0,0,1,1,0,1,0 1,0,0,3,0,3,2,4,1,1,1,0,1,1 1,1,1,2,0,4,2,0,1,1,1,1,1,1 0,0,2,1,2,2,5,4,0,1,1,0,1,0 1,0,3,2,2,1,1,0,1,1,1,0,1,0 0,0,2,1,2,3,1,0,0,1,1,2,1,0 0,0,6,2,2,2,1,0,0,1,1,2,1,0 1,0,1,2,0,8,2,0,1,1,1,0,1,0 1,3,0,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,2,2,3,0,0,1,1,0,1,0 1,2,0,3,1,4,3,0,0,1,1,1,1,0 2,0,3,2,4,4,5,0,1,1,1,1,1,1 0,4,0,3,0,5,0,0,0,1,1,2,1,1 0,0,3,2,2,2,1,0,0,1,1,2,1,0 0,0,0,3,2,8,3,0,0,1,1,0,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,1 2,0,12,1,0,6,2,0,1,1,1,2,1,0 1,0,3,2,2,7,3,0,0,1,1,2,1,0 1,0,3,2,0,2,2,4,1,1,1,2,1,1 1,4,3,2,0,10,2,0,1,1,1,0,1,0 2,0,4,3,0,4,2,0,1,1,1,0,1,1 0,0,2,1,2,6,1,0,1,1,1,0,1,0 0,0,1,2,2,2,1,0,1,1,1,2,1,0 1,0,12,1,2,10,3,4,1,1,1,0,1,0 0,5,10,3,2,5,3,0,0,1,1,2,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,0,3,0,8,2,0,1,1,1,0,1,1 0,0,6,2,2,5,3,0,0,1,1,0,1,0 1,1,0,3,0,9,2,0,1,1,1,1,1,0 0,0,3,2,0,10,2,0,1,1,1,1,1,0 1,0,5,2,2,2,3,0,0,1,1,2,1,0 2,0,3,2,0,4,0,0,0,1,1,0,1,1 1,5,6,2,0,4,2,0,1,1,1,0,1,0 0,0,0,3,2,5,1,0,1,1,1,0,1,0 0,5,3,2,0,12,2,0,1,1,1,1,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 0,4,0,3,2,5,3,0,0,1,1,0,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,1 0,0,0,3,2,4,3,0,1,1,1,1,1,0 1,0,0,3,0,3,2,0,1,1,1,1,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,1,2,0,7,2,0,1,1,1,0,1,0 1,0,10,3,4,4,5,0,1,1,1,0,1,1 1,0,3,2,1,6,5,0,1,1,1,0,1,0 3,0,1,2,4,8,3,0,0,1,1,2,1,0 2,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,0,3,0,3,2,0,1,1,1,1,1,0 0,0,3,2,0,6,2,0,1,1,1,0,1,0 2,0,3,2,0,3,2,0,1,1,1,0,1,0 1,4,3,2,0,4,2,0,1,1,1,1,1,1 0,0,7,1,2,2,1,4,1,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,0,3,1,3,3,0,0,1,1,0,1,0 1,2,0,3,0,4,2,0,1,1,1,1,1,1 2,0,3,2,1,10,3,0,1,1,1,1,1,0 1,4,13,3,0,5,2,0,1,1,1,2,1,1 1,0,3,2,0,3,2,0,1,1,1,0,1,0 1,0,5,2,2,5,5,4,0,1,1,1,1,0 1,0,6,2,2,1,3,0,1,1,1,1,1,0 0,0,9,1,2,2,1,0,1,1,1,2,1,0 1,0,3,2,4,0,5,4,0,1,1,0,1,0 0,0,0,3,2,5,3,0,0,1,1,0,1,0 1,0,5,2,0,4,0,0,0,1,1,1,1,1 0,0,3,2,0,3,2,0,1,1,1,1,1,0 1,0,4,3,0,5,2,0,1,1,1,1,1,1 1,0,1,2,0,3,2,0,1,1,1,0,1,1 1,1,2,1,3,2,5,0,0,1,1,2,1,0 0,0,3,2,2,8,3,0,0,1,1,0,1,0 1,0,1,2,1,3,5,0,0,1,1,1,1,1 0,4,0,3,0,12,2,0,1,1,1,1,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,1 0,0,1,2,2,9,1,0,1,1,1,0,1,0 1,0,3,2,2,2,3,0,0,1,1,0,1,0 1,0,3,2,0,6,2,0,1,1,1,2,1,0 1,0,3,2,0,3,2,0,1,1,1,2,1,1 0,0,7,1,2,1,3,0,1,1,1,0,1,0 0,0,3,2,2,6,3,0,1,1,1,0,1,0 1,0,0,3,1,2,3,0,0,1,1,2,1,0 1,0,2,1,0,7,2,0,1,1,1,1,1,1 1,0,1,2,1,4,5,0,0,1,1,0,1,0 0,0,1,2,0,6,2,0,1,1,1,0,1,0 1,0,6,2,2,2,3,0,1,1,1,0,1,0 0,0,3,2,2,2,1,0,1,1,1,2,1,0 0,0,1,2,2,4,3,0,0,1,1,0,1,0 0,0,3,2,2,10,4,0,1,1,1,1,1,0 0,0,1,2,2,1,3,0,1,1,1,0,1,0 0,0,3,2,1,2,3,0,0,1,1,2,1,0 0,4,0,3,2,5,3,0,0,1,1,0,1,0 1,0,3,2,2,8,3,0,0,1,1,1,1,0 0,0,0,3,0,3,2,0,1,1,1,1,1,0 0,0,1,2,2,3,5,0,1,1,1,0,1,0 0,0,5,2,2,5,3,0,0,1,1,0,1,0 1,0,1,2,2,12,5,4,0,1,1,0,1,0 1,0,12,1,1,1,3,0,1,1,1,0,1,0 1,0,3,2,4,1,3,0,1,1,1,0,1,0 0,0,3,2,2,2,5,0,1,1,1,2,1,0 1,1,1,2,0,4,2,0,1,1,1,2,1,1 1,0,3,2,0,8,2,0,1,1,1,0,1,1 0,0,3,2,5,12,3,0,1,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,0 2,0,0,3,1,5,3,0,1,1,1,0,1,0 0,4,3,2,0,10,2,4,1,1,1,0,1,0 1,0,3,2,0,4,0,0,0,1,1,0,1,1 2,0,3,2,0,4,2,0,1,1,1,0,1,0 0,0,0,3,2,8,4,1,0,1,1,0,1,0 1,0,3,2,1,2,3,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 1,0,0,3,0,8,0,1,0,1,1,0,1,1 1,0,10,3,0,4,2,0,1,1,1,1,1,1 0,1,7,1,0,1,2,0,1,1,1,0,1,0 0,5,0,3,0,5,2,0,1,1,1,2,1,0 1,0,0,3,1,5,3,0,0,1,1,1,1,0 1,5,1,2,0,4,0,0,0,1,1,0,1,1 2,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,3,2,2,9,1,0,1,1,1,2,1,0 0,0,1,2,2,8,1,3,0,1,1,2,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 0,0,12,1,0,1,2,0,1,1,1,0,1,0 2,0,3,2,4,8,3,0,0,1,1,0,1,0 0,0,0,3,0,4,0,0,0,1,1,2,1,1 1,1,5,2,0,1,2,0,1,1,1,0,1,1 0,0,3,2,2,1,4,0,1,1,1,0,1,0 0,0,3,2,0,9,2,0,1,1,1,0,1,0 1,0,5,2,0,0,2,0,1,1,1,1,1,0 2,0,1,2,0,4,2,0,1,1,1,0,1,1 0,0,4,3,2,5,3,0,0,1,1,1,1,0 1,4,3,2,4,10,5,0,0,1,1,0,1,0 0,0,3,2,3,6,5,0,1,1,1,0,1,0 1,0,0,3,0,3,2,0,1,1,1,0,1,0 1,0,3,2,0,12,2,4,1,1,1,0,1,1 0,0,9,1,2,12,1,4,1,1,1,0,1,0 2,0,1,2,1,8,3,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 0,0,2,1,0,2,0,4,0,1,1,2,1,0 1,0,1,2,1,3,1,0,0,1,1,2,1,0 1,1,3,2,0,9,2,0,1,1,1,1,1,1 1,2,1,2,1,3,3,0,1,1,1,2,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,1 1,4,1,2,0,1,2,0,1,1,1,0,1,1 0,0,1,2,2,8,1,4,0,1,1,0,1,0 0,0,6,2,2,8,1,0,0,1,1,2,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 0,2,6,2,2,10,5,0,1,1,1,1,1,0 1,5,12,1,0,1,2,2,1,1,1,0,1,0 0,0,1,2,2,8,1,0,0,1,1,2,1,0 1,0,1,2,0,1,2,0,1,1,1,1,1,1 2,0,3,2,1,2,3,0,0,1,1,0,1,0 0,1,3,2,2,3,3,0,1,1,1,0,1,0 0,3,12,1,0,2,0,2,0,1,1,0,1,0 1,0,3,2,0,5,2,0,1,1,1,1,1,1 0,0,5,2,2,1,1,0,1,1,1,0,1,0 1,0,5,2,2,8,3,0,0,1,1,2,1,0 0,2,4,3,0,5,2,0,1,1,1,1,1,1 2,1,4,3,0,5,2,0,1,1,1,2,1,1 0,0,3,2,2,12,1,0,1,1,1,0,1,0 0,0,1,2,2,2,1,1,1,1,1,2,1,0 0,0,12,1,2,6,1,0,1,1,1,0,1,0 1,0,5,2,0,4,2,0,1,1,1,1,1,1 0,0,1,2,2,2,1,0,0,1,1,2,1,0 0,4,3,2,2,8,1,0,1,1,1,2,1,0 0,0,3,2,0,1,2,0,1,1,1,1,1,0 1,4,0,3,2,5,5,0,0,1,1,1,1,0 0,0,1,2,3,2,5,4,0,1,1,2,1,0 1,0,1,2,1,1,3,0,0,1,1,2,1,0 1,0,5,2,1,1,3,0,1,1,1,1,1,1 1,4,3,2,3,2,5,4,0,1,1,0,1,0 0,5,3,2,0,0,2,0,1,1,1,0,1,1 0,0,5,2,0,3,2,3,1,1,1,0,1,1 1,0,3,2,0,7,2,0,1,1,1,0,1,0 1,0,11,0,0,3,2,0,1,1,1,1,1,0 1,0,3,2,5,1,3,0,1,1,1,0,1,1 0,0,0,3,2,1,1,4,1,1,1,0,1,0 2,1,3,2,0,3,2,0,1,1,1,1,1,1 0,0,3,2,1,8,5,0,0,1,1,1,1,0 1,0,1,2,1,8,3,0,0,1,1,0,1,0 0,0,3,2,2,2,3,0,1,1,1,1,1,0 2,3,3,2,1,8,3,0,0,1,1,0,1,0 0,0,1,2,2,3,1,0,0,1,1,0,1,0 0,4,5,2,2,8,3,0,0,1,1,0,1,0 0,0,0,3,2,8,3,0,0,1,1,1,1,0 2,1,0,3,1,9,3,0,1,1,1,1,1,1 0,0,2,1,3,1,3,0,1,1,1,0,1,0 1,5,0,3,2,12,5,4,0,1,1,0,1,0 1,0,1,2,1,8,5,0,0,1,1,0,1,0 0,0,2,1,2,6,1,0,1,1,1,2,1,0 1,5,5,2,0,3,2,0,1,1,1,0,1,1 1,0,0,3,2,3,3,0,0,1,1,0,1,0 0,1,0,3,2,5,3,0,0,1,1,1,1,1 0,0,6,2,2,1,1,0,1,1,1,0,1,0 1,0,3,2,2,4,3,0,1,1,1,0,1,0 2,4,10,3,2,5,5,0,0,1,1,2,1,0 0,5,1,2,2,10,1,0,1,1,1,2,1,0 1,5,4,3,0,5,0,0,0,1,1,1,1,1 1,4,10,3,1,5,5,0,0,1,1,0,1,0 0,0,5,2,0,8,0,1,0,1,1,2,1,1 0,0,12,1,2,11,4,0,1,1,1,2,1,0 1,0,6,2,0,1,2,0,1,1,1,2,1,1 0,0,4,3,2,5,3,0,1,1,1,1,1,0 1,0,10,3,2,5,3,0,1,1,1,2,1,0 0,4,10,3,2,4,3,0,1,1,1,1,1,0 1,0,0,3,0,4,2,0,1,1,1,0,1,1 1,0,3,2,0,1,2,0,1,1,1,0,1,1 1,0,11,0,0,10,2,0,1,1,1,0,1,0 1,5,3,2,5,2,5,0,0,1,1,2,1,0 2,0,1,2,0,3,0,0,0,1,1,0,1,1 1,0,3,2,1,2,1,0,0,1,1,2,1,0 1,0,0,3,0,3,2,0,1,1,1,1,1,0 0,0,7,1,0,10,2,0,1,1,1,1,1,0 0,0,2,1,2,1,1,0,1,1,1,0,1,0 1,5,0,3,1,5,3,4,1,1,1,0,1,0 1,4,3,2,2,1,3,0,1,1,1,0,1,0 0,0,3,2,0,7,2,0,1,1,1,1,1,0 2,0,0,3,0,4,2,0,1,1,1,0,1,1 1,0,9,1,0,1,2,0,1,1,1,1,1,0 1,4,3,2,0,10,2,0,1,1,1,0,1,0 0,0,3,2,0,6,2,0,1,1,1,0,1,0 2,0,11,0,0,6,2,0,1,1,1,0,1,0 2,0,11,0,0,7,2,0,1,1,1,0,1,0 0,0,0,3,0,4,2,0,1,1,1,0,1,1 0,0,3,2,1,2,5,4,0,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,3,2,2,7,4,0,1,1,1,0,1,0 2,1,10,3,0,3,2,0,1,1,1,1,1,0 1,0,3,2,3,2,3,4,0,1,1,1,1,0 1,5,0,3,0,5,2,2,1,1,1,2,1,1 0,1,6,2,0,3,2,0,1,1,1,1,1,0 0,0,1,2,2,6,1,0,1,1,1,2,1,0 0,0,12,1,5,2,3,4,0,1,1,2,1,0 0,0,0,3,2,3,3,0,0,1,1,0,1,0 2,0,10,3,0,3,2,0,1,1,1,2,1,1 2,1,0,3,0,4,2,0,1,1,1,2,1,1 0,0,10,3,2,5,3,1,1,1,1,2,1,0 1,0,5,2,4,0,5,0,0,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,1 1,1,1,2,1,1,3,0,1,1,1,0,1,0 0,0,3,2,1,3,5,4,1,1,1,1,1,0 1,0,3,2,3,10,3,0,1,1,1,2,1,0 0,0,3,2,2,6,3,4,1,1,1,0,1,0 1,0,0,3,2,8,3,0,0,1,1,0,1,0 0,0,3,2,2,7,1,0,1,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,2,1,1 0,0,3,2,2,8,1,0,1,1,1,2,1,0 2,4,3,2,0,12,2,0,1,1,1,0,1,0 1,0,6,2,1,0,5,4,0,1,1,1,1,0 2,3,4,3,1,5,3,0,0,1,1,1,1,1 2,0,1,2,0,1,2,0,1,1,1,0,1,1 1,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,0,6,0,0,0,1,1,0,1,0 1,0,1,2,0,3,2,0,1,1,1,1,1,1 0,0,9,1,2,2,1,0,1,1,1,2,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,1 0,0,3,2,2,3,1,0,0,1,1,0,1,0 1,0,9,1,3,7,4,0,0,1,1,0,1,0 0,0,1,2,2,6,1,0,1,1,1,2,1,0 0,0,1,2,2,6,1,4,1,1,1,0,1,0 0,0,3,2,2,0,3,0,1,1,1,0,1,0 0,0,3,2,2,7,1,4,0,1,1,2,1,0 0,4,7,1,2,2,1,0,1,1,1,1,1,0 0,3,0,3,2,8,3,0,0,1,1,2,1,0 0,0,0,3,2,1,3,0,0,1,1,1,1,0 0,0,1,2,1,4,3,0,1,1,1,1,1,1 1,5,0,3,1,8,3,4,0,1,1,2,1,0 0,0,3,2,2,3,4,0,1,1,1,0,1,0 0,0,3,2,2,8,1,0,0,1,1,2,1,0 1,1,7,1,0,9,4,0,1,1,1,0,1,0 0,0,1,2,2,2,4,0,0,1,1,2,1,0 2,0,5,2,4,2,3,0,0,1,1,2,1,0 0,0,1,2,1,4,3,0,0,1,1,2,1,0 1,0,5,2,0,0,2,0,1,1,1,0,1,1 0,0,1,2,3,0,5,4,0,1,1,0,1,0 2,0,0,3,0,8,0,0,0,1,1,0,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,1 0,0,2,1,2,2,3,0,1,1,1,2,1,0 0,0,3,2,2,2,1,0,1,1,1,2,1,0 0,0,1,2,2,3,3,0,0,1,1,2,1,0 1,0,3,2,0,3,2,0,1,1,1,0,1,0 2,5,13,3,0,5,2,0,1,1,1,0,1,1 3,1,3,2,0,9,2,0,1,1,1,0,1,0 0,0,6,2,0,2,4,0,0,1,1,1,1,0 1,0,3,2,0,6,2,0,1,1,1,0,1,1 0,0,3,2,0,10,2,0,1,1,1,1,1,0 1,0,8,0,2,2,1,0,1,1,1,0,1,0 0,1,1,2,2,5,3,1,1,1,1,0,1,0 2,0,3,2,0,6,2,0,1,1,1,2,1,0 0,0,2,1,2,2,1,4,1,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,1 0,0,6,2,0,7,1,0,0,1,1,2,1,0 2,1,3,2,0,9,2,0,1,1,1,1,1,0 1,4,0,3,0,8,2,0,1,1,1,1,1,1 0,0,0,3,1,3,3,0,0,1,1,0,1,0 0,0,0,3,2,9,3,0,1,1,1,2,1,0 1,0,3,2,0,1,2,4,1,1,1,0,1,0 2,0,2,1,0,2,0,4,0,1,1,0,1,1 1,2,0,3,1,4,3,0,1,1,1,1,1,0 1,3,3,2,0,4,2,2,1,1,1,0,1,0 0,0,3,2,2,1,3,0,0,1,1,0,1,0 0,0,1,2,0,5,2,0,1,1,1,0,1,0 0,0,3,2,0,5,2,0,1,1,1,1,1,1 0,0,3,2,3,8,5,0,0,1,1,2,1,0 0,0,1,2,1,4,5,0,0,1,1,0,1,0 0,0,1,2,2,5,3,0,1,1,1,1,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,1,8,5,0,0,1,1,1,1,0 1,0,6,2,0,3,2,0,1,1,1,1,1,1 0,0,3,2,3,7,5,3,0,1,1,0,1,0 1,5,3,2,1,4,5,0,0,1,1,2,1,1 2,0,0,3,0,5,2,0,1,1,1,1,1,1 3,0,1,2,0,10,2,0,1,1,1,2,1,0 0,0,3,2,2,7,5,4,1,1,1,0,1,0 2,0,0,3,0,4,2,4,1,1,1,1,1,1 0,0,10,3,2,5,3,0,0,1,1,0,1,0 1,0,3,2,2,8,3,0,0,1,1,1,1,0 1,0,0,3,0,1,2,0,1,1,1,0,1,1 0,0,2,1,2,3,1,0,0,1,1,2,1,0 1,0,3,2,1,3,3,0,0,1,1,1,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 0,0,3,2,0,1,2,4,1,1,1,1,1,1 0,0,3,2,2,1,5,0,1,1,1,1,1,0 0,0,1,2,2,8,5,4,0,1,1,0,1,0 1,0,3,2,0,8,2,0,1,1,1,1,1,1 2,4,3,2,4,2,5,4,0,1,1,0,1,0 2,0,3,2,0,3,2,0,1,1,1,0,1,0 0,0,3,2,2,7,1,0,1,1,1,1,1,0 0,0,1,2,0,4,2,2,1,1,1,1,1,0 1,0,6,2,0,1,2,0,1,1,1,0,1,1 0,4,3,2,0,12,2,0,1,1,1,1,1,1 1,4,1,2,0,12,2,0,1,1,1,1,1,1 0,0,1,2,2,8,3,0,0,1,1,2,1,0 0,0,0,3,0,5,2,0,1,1,1,1,1,1 2,0,3,2,2,8,3,1,0,1,1,0,1,0 1,0,13,3,0,5,2,1,1,1,1,1,1,1 1,0,5,2,1,8,5,0,0,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,0 1,0,0,3,0,12,2,0,1,1,1,1,1,1 2,4,5,2,0,5,2,1,1,1,1,0,1,1 1,0,0,3,1,3,3,0,1,1,1,0,1,1 1,0,6,2,0,2,2,0,1,1,1,1,1,1 0,0,2,1,0,1,2,0,1,1,1,0,1,0 0,1,0,3,5,1,3,0,1,1,1,1,1,0 1,0,3,2,0,8,0,0,0,1,1,0,1,0 0,4,3,2,1,2,5,2,1,1,1,0,1,0 0,0,1,2,2,2,1,0,1,1,1,2,1,0 2,0,3,2,1,4,3,0,0,1,1,0,1,0 0,0,3,2,2,4,3,1,0,1,1,0,1,0 0,0,3,2,2,10,3,0,1,1,1,0,1,0 0,0,14,0,0,9,2,0,1,1,1,0,1,0 1,2,10,3,2,2,1,0,1,1,1,1,1,0 2,0,1,2,1,2,3,0,0,1,1,2,1,0 2,4,0,3,0,5,0,0,0,1,1,1,1,0 1,1,5,2,0,4,2,0,1,1,1,1,1,0 0,5,0,3,2,4,3,0,0,1,1,2,1,0 0,0,1,2,0,8,2,2,1,1,1,0,1,0 0,0,0,3,0,8,0,0,0,1,1,0,1,0 0,0,10,3,2,3,3,0,1,1,1,1,1,1 1,0,1,2,0,10,2,0,1,1,1,1,1,1 2,0,2,1,4,8,3,0,0,1,1,2,1,0 0,0,1,2,2,3,1,1,1,1,1,2,1,0 0,0,3,2,0,3,2,1,1,1,1,1,1,1 0,0,3,2,0,10,2,0,1,1,1,0,1,0 0,0,3,2,0,4,2,0,1,1,1,0,1,0 2,0,6,2,0,1,2,0,1,1,1,1,1,1 2,4,3,2,0,4,0,0,0,1,1,2,1,0 1,5,0,3,0,4,2,0,1,1,1,0,1,1 0,0,1,2,1,1,3,0,1,1,1,0,1,0 0,0,1,2,2,10,1,0,1,1,1,2,1,0 0,0,0,3,0,3,2,0,1,1,1,1,1,1 2,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,10,3,1,4,3,0,1,1,1,1,1,1 1,0,8,0,0,10,2,0,1,1,1,1,1,0 2,0,0,3,0,4,2,0,1,1,1,1,1,1 0,1,10,3,0,3,2,0,1,1,1,0,1,1 1,3,3,2,1,6,3,0,1,1,1,0,1,0 1,0,3,2,3,6,3,4,1,1,1,0,1,0 2,0,1,2,0,1,2,0,1,1,1,1,1,0 0,0,9,1,2,2,5,4,1,1,1,0,1,0 1,0,3,2,1,8,5,0,0,1,1,0,1,0 0,0,3,2,2,6,3,4,1,1,1,0,1,0 2,0,8,0,0,9,2,0,1,1,1,1,1,0 2,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,0,6,2,0,1,1,1,1,1,0 0,0,3,2,2,10,1,0,1,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,1,2,2,2,3,0,1,1,1,2,1,0 3,0,3,2,0,7,2,0,1,1,1,0,1,0 1,0,6,2,1,5,5,0,0,1,1,0,1,0 2,0,3,2,0,10,2,4,1,1,1,0,1,0 0,5,13,3,2,5,3,0,0,1,1,1,1,0 0,0,1,2,0,6,2,0,1,1,1,1,1,0 1,0,3,2,2,8,3,4,0,1,1,0,1,0 0,0,0,3,3,5,4,4,0,1,1,0,1,0 0,0,12,1,2,2,1,0,0,1,1,2,1,0 1,0,2,1,1,1,3,0,1,1,1,0,1,0 2,0,6,2,0,1,2,0,1,1,1,1,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,1 2,0,14,0,0,2,2,0,1,1,1,0,1,0 1,0,3,2,1,3,3,0,1,1,1,1,1,0 1,1,0,3,0,9,2,0,1,1,1,1,1,0 1,0,0,3,0,5,2,1,1,1,1,0,1,0 1,0,0,3,3,4,3,0,1,1,1,2,1,0 0,0,1,2,2,6,3,0,1,1,1,1,1,0 1,0,0,3,1,4,3,0,0,1,1,1,1,1 1,0,1,2,1,0,5,4,0,1,1,2,1,0 0,0,10,3,2,4,1,0,1,1,1,2,1,0 1,0,10,3,3,4,5,0,0,1,1,2,1,0 1,0,6,2,0,4,2,0,1,1,1,1,1,1 2,0,3,2,4,4,5,0,0,1,1,1,1,0 0,0,0,3,2,4,3,0,0,1,1,1,1,1 0,0,1,2,2,8,5,0,0,1,1,2,1,0 0,0,7,1,2,2,1,0,1,1,1,1,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,0 0,0,0,3,0,8,0,1,0,1,1,0,1,1 2,1,1,2,4,4,4,0,1,1,1,2,1,0 0,0,3,2,2,7,3,0,1,1,1,0,1,0 1,4,5,2,0,12,2,0,1,1,1,0,1,1 2,4,10,3,1,5,5,0,0,1,1,1,1,0 1,0,0,3,0,3,2,0,1,1,1,0,1,1 0,0,3,2,2,1,1,0,1,1,1,0,1,0 0,0,3,2,2,10,1,0,1,1,1,0,1,0 1,0,5,2,1,5,3,0,0,1,1,0,1,1 1,0,10,3,2,4,3,0,1,1,1,0,1,1 1,0,1,2,0,4,2,0,1,1,1,1,1,0 0,0,3,2,2,8,3,0,0,1,1,1,1,0 0,0,10,3,0,5,2,0,1,1,1,2,1,0 1,2,10,3,0,3,2,0,1,1,1,1,1,0 1,1,10,3,0,4,2,0,1,1,1,1,1,1 0,0,1,2,2,0,1,0,1,1,1,2,1,0 0,0,0,3,2,4,5,1,1,1,1,1,1,0 0,0,0,3,0,3,2,0,1,1,1,0,1,1 1,0,14,0,5,2,5,0,0,1,1,2,1,0 1,4,1,2,0,12,2,0,1,1,1,0,1,1 1,0,3,2,0,2,0,0,0,1,1,2,1,0 0,3,1,2,0,4,2,0,1,1,1,0,1,1 1,4,2,1,0,10,2,0,1,1,1,0,1,0 1,0,3,2,0,4,2,0,1,1,1,1,1,0 0,0,3,2,2,6,1,2,0,1,1,2,1,0 0,0,11,0,2,9,3,0,1,1,1,2,1,0 0,0,1,2,0,9,2,0,1,1,1,1,1,0 0,2,3,2,3,5,4,0,1,1,1,2,1,0 1,0,5,2,0,2,2,0,1,1,1,0,1,0 1,5,10,3,0,5,2,0,1,1,1,0,1,1 2,0,0,3,0,5,2,0,1,1,1,0,1,1 2,4,10,3,0,5,2,0,1,1,1,0,1,1 2,0,6,2,0,3,2,0,1,1,1,0,1,1 0,0,9,1,2,1,3,0,1,1,1,1,1,0 1,4,3,2,0,12,2,0,1,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,1,1,0 0,0,7,1,2,11,5,0,0,1,1,2,1,0 0,0,3,2,2,2,5,0,0,1,1,0,1,0 1,4,3,2,0,10,2,0,1,1,1,0,1,1 1,0,1,2,0,7,2,0,1,1,1,1,1,0 2,4,10,3,1,5,3,0,0,1,1,2,1,1 0,0,1,2,0,3,2,0,1,1,1,0,1,0 0,0,3,2,2,2,1,4,0,1,1,0,1,0 1,0,1,2,0,8,0,0,0,1,1,0,1,1 0,1,1,2,2,3,1,4,1,1,1,1,1,1 0,0,3,2,1,4,3,0,1,1,1,1,1,0 0,0,6,2,0,5,0,0,0,1,1,2,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,3,2,2,10,5,0,1,1,1,1,1,0 1,0,7,1,1,4,5,0,0,1,1,0,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,1,2,2,1,3,4,1,1,1,0,1,0 1,0,0,3,0,8,2,0,1,1,1,0,1,0 0,0,1,2,2,3,3,0,1,1,1,0,1,0 1,0,1,2,0,3,0,0,0,1,1,2,1,0 2,0,7,1,4,2,3,0,0,1,1,2,1,0 2,0,6,2,0,1,2,0,1,1,1,1,1,1 1,0,1,2,0,8,2,0,1,1,1,0,1,1 0,0,1,2,2,2,1,0,0,1,1,2,1,0 0,0,3,2,1,2,1,0,0,1,1,2,1,0 1,5,10,3,0,4,2,0,1,1,1,0,1,1 0,0,2,1,2,3,1,0,1,1,1,2,1,0 0,4,1,2,2,12,5,1,0,1,1,0,1,0 0,0,1,2,2,8,1,0,1,1,1,1,1,0 0,0,1,2,2,12,1,0,0,1,1,2,1,0 1,0,1,2,1,4,3,0,1,1,1,0,1,0 1,4,10,3,0,5,0,0,0,1,1,0,1,1 0,0,0,3,2,3,3,0,1,1,1,1,1,0 0,0,3,2,2,3,3,0,0,1,1,2,1,0 0,0,0,3,0,3,2,0,1,1,1,1,1,1 0,0,12,1,2,10,3,0,1,1,1,1,1,0 1,0,11,0,1,2,5,4,0,1,1,0,1,0 1,0,0,3,0,2,2,0,1,1,1,2,1,0 0,5,3,2,2,1,5,0,1,1,1,1,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,0 0,0,3,2,0,4,2,0,1,1,1,1,1,0 1,5,10,3,3,5,3,0,1,1,1,1,1,0 0,0,0,3,2,4,3,0,1,1,1,2,1,0 1,3,4,3,0,5,2,0,1,1,1,0,1,1 1,2,0,3,0,4,2,0,1,1,1,1,1,1 1,4,10,3,4,5,5,4,0,1,1,2,1,0 1,0,1,2,0,1,2,0,1,1,1,1,1,1 2,0,5,2,1,7,3,0,1,1,1,1,1,0 1,1,6,2,3,1,3,0,1,1,1,0,1,0 0,0,1,2,2,8,3,0,0,1,1,2,1,0 0,1,1,2,0,1,2,0,1,1,1,0,1,0 0,0,7,1,2,6,1,0,1,1,1,2,1,0 0,0,4,3,2,5,3,0,0,1,1,2,1,0 1,0,1,2,2,4,5,4,0,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 0,1,3,2,0,10,2,0,1,1,1,2,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,0,3,0,4,2,0,1,1,1,1,1,1 0,1,6,2,0,9,2,0,1,1,1,1,1,0 1,0,1,2,0,4,2,0,1,1,1,0,1,1 0,0,1,2,0,2,0,0,0,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,1,3,2,0,1,2,0,1,1,1,1,1,0 0,0,3,2,0,3,0,0,0,1,1,1,1,0 0,0,0,3,2,4,3,0,1,1,1,0,1,0 2,0,3,2,0,5,2,0,1,1,1,1,1,0 0,0,1,2,0,4,2,0,1,1,1,1,1,1 0,4,0,3,2,5,3,0,0,1,1,0,1,0 0,0,3,2,2,10,1,4,1,1,1,0,1,0 0,0,0,3,2,5,1,0,1,1,1,1,1,0 0,0,3,2,2,3,1,0,1,1,1,1,1,0 0,0,1,2,2,3,1,0,1,1,1,2,1,0 1,0,3,2,1,2,5,0,0,1,1,2,1,0 0,0,3,2,2,2,1,0,1,1,1,2,1,0 3,2,1,2,4,3,3,0,1,1,1,0,1,1 0,0,3,2,2,7,1,1,1,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,1 0,0,3,2,2,7,3,0,1,1,1,0,1,0 0,0,3,2,2,2,1,0,1,1,1,0,1,0 1,0,13,3,0,5,2,1,1,1,1,1,1,1 1,0,6,2,1,5,5,0,0,1,1,1,1,0 0,0,3,2,2,7,1,0,1,1,1,0,1,0 1,0,0,3,0,8,2,0,1,1,1,1,1,1 2,5,1,2,0,12,2,0,1,1,1,1,1,1 0,0,1,2,2,0,1,0,1,1,1,2,1,0 1,0,1,2,2,5,3,0,1,1,1,1,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 2,1,1,2,0,3,2,0,1,1,1,0,1,0 1,0,3,2,2,2,3,0,1,1,1,0,1,0 1,4,1,2,4,5,5,0,1,1,1,0,1,0 2,2,12,1,0,1,2,0,1,1,1,0,1,0 0,0,10,3,0,4,2,0,1,1,1,1,1,1 0,2,0,3,2,3,3,0,1,1,1,1,1,0 1,0,1,2,0,1,2,0,1,1,1,1,1,1 0,0,3,2,0,2,2,0,1,1,1,0,1,0 0,0,9,1,2,2,1,0,0,1,1,2,1,0 1,4,1,2,0,4,2,0,1,1,1,0,1,1 2,0,8,0,0,2,2,4,1,1,1,0,1,0 1,2,0,3,0,12,2,4,1,1,1,0,1,1 1,0,0,3,0,5,2,0,1,1,1,1,1,1 0,0,6,2,0,5,2,0,1,1,1,1,1,0 0,0,6,2,2,10,3,0,1,1,1,0,1,0 0,0,3,2,1,6,4,0,1,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,0 1,1,5,2,0,1,2,0,1,1,1,1,1,0 0,0,1,2,2,2,3,0,1,1,1,2,1,0 0,0,1,2,2,3,4,4,0,1,1,2,1,0 1,0,1,2,3,4,5,4,0,1,1,1,1,0 1,2,4,3,0,5,2,0,1,1,1,1,1,1 1,0,6,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,0,9,2,0,1,1,1,1,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,1,8,5,4,0,1,1,0,1,0 0,4,0,3,1,5,3,0,1,1,1,1,1,0 1,3,10,3,2,4,3,0,0,1,1,1,1,0 0,0,3,2,2,10,3,4,1,1,1,2,1,0 1,0,3,2,0,4,2,0,1,1,1,1,1,1 1,1,3,2,0,3,2,0,1,1,1,1,1,1 0,0,3,2,0,1,2,0,1,1,1,1,1,0 0,0,6,2,1,0,3,4,1,1,1,0,1,1 1,0,12,1,0,1,2,0,1,1,1,0,1,0 1,0,1,2,0,3,2,4,1,1,1,0,1,1 1,0,0,3,0,3,2,0,1,1,1,1,1,1 1,0,12,1,0,7,2,0,1,1,1,0,1,0 0,4,2,1,2,6,1,0,1,1,1,2,1,0 1,0,7,1,1,1,3,0,1,1,1,0,1,0 0,0,3,2,2,3,1,0,0,1,1,2,1,0 0,0,1,2,5,3,3,0,0,1,1,2,1,0 1,0,12,1,3,7,5,4,0,1,1,0,1,0 0,1,1,2,0,4,2,0,1,1,1,0,1,0 2,1,2,1,0,9,2,0,1,1,1,1,1,0 1,0,11,0,0,6,2,0,1,1,1,0,1,0 1,0,0,3,0,4,2,1,1,1,1,1,1,1 1,0,3,2,0,3,2,0,1,1,1,1,1,1 2,0,1,2,0,5,2,0,1,1,1,0,1,1 1,0,3,2,5,10,5,4,1,1,1,1,1,0 0,0,3,2,1,10,5,0,0,1,1,1,1,0 0,0,1,2,0,8,2,0,1,1,1,0,1,0 0,0,0,3,0,8,0,0,0,1,1,0,1,1 0,5,5,2,2,5,3,0,0,1,1,2,1,0 1,0,1,2,0,4,2,0,1,1,1,1,1,1 1,0,4,3,0,5,2,0,1,1,1,1,1,1 0,0,0,3,2,0,3,0,1,1,1,2,1,0 1,1,3,2,0,9,2,0,1,1,1,1,1,1 0,0,3,2,0,2,2,4,1,1,1,1,1,0 0,0,12,1,3,7,1,0,1,1,1,2,1,0 1,0,3,2,2,2,3,0,0,1,1,1,1,0 1,1,0,3,4,3,5,0,0,1,1,0,1,0 0,0,1,2,2,1,5,0,1,1,1,1,1,0 0,0,3,2,2,3,5,0,1,1,1,2,1,0 0,1,0,3,2,3,5,0,1,1,1,0,1,0 0,0,1,2,2,2,3,0,1,1,1,0,1,0 0,0,6,2,2,2,1,0,1,1,1,0,1,0 1,2,4,3,0,5,2,0,1,1,1,1,1,1 1,0,3,2,1,3,3,0,0,1,1,1,1,1 1,0,4,3,2,5,3,0,1,1,1,1,1,0 0,0,3,2,2,3,1,0,0,1,1,2,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,0 3,0,1,2,0,3,2,0,1,1,1,2,1,1 1,0,0,3,0,5,2,1,1,1,1,1,1,1 1,0,3,2,0,1,2,0,1,1,1,1,1,1 0,0,12,1,0,6,2,0,1,1,1,2,1,0 1,0,3,2,2,1,3,0,1,1,1,1,1,1 1,0,6,2,0,3,2,0,1,1,1,2,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 1,1,3,2,0,4,2,0,1,1,1,0,1,0 0,0,6,2,0,1,2,1,1,1,1,2,1,1 2,1,3,2,4,5,5,0,0,1,1,2,1,0 1,0,1,2,1,4,3,0,0,1,1,2,1,0 1,0,7,1,1,1,3,0,1,1,1,0,1,0 1,2,0,3,0,1,2,0,1,1,1,1,1,0 1,0,1,2,0,3,2,0,1,1,1,1,1,0 1,1,0,3,0,5,2,0,1,1,1,1,1,1 0,4,0,3,2,4,3,0,0,1,1,1,1,0 2,1,0,3,0,5,0,0,0,1,1,2,1,0 0,0,1,2,0,2,0,0,0,1,1,1,1,0 0,0,3,2,1,9,3,1,1,1,1,0,1,0 2,0,3,2,0,4,2,0,1,1,1,0,1,1 1,0,3,2,2,3,3,0,0,1,1,2,1,0 1,4,10,3,0,5,0,0,0,1,1,2,1,1 0,5,1,2,2,5,1,0,1,1,1,0,1,0 0,0,3,2,1,8,3,0,0,1,1,0,1,0 0,3,3,2,1,8,3,3,1,1,1,1,1,0 1,0,3,2,1,6,3,0,0,1,1,0,1,0 0,0,5,2,2,8,3,0,1,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,1,1,1 2,0,10,3,0,8,2,1,1,1,1,1,1,1 1,0,3,2,1,9,3,0,1,1,1,1,1,0 1,0,12,1,0,1,2,0,1,1,1,1,1,0 1,0,3,2,5,7,3,0,0,1,1,0,1,0 1,5,10,3,5,4,5,0,0,1,1,1,1,1 1,0,1,2,1,8,5,4,0,1,1,2,1,0 1,5,0,3,2,5,3,0,0,1,1,0,1,0 0,0,2,1,1,1,1,0,1,1,1,0,1,0 1,4,10,3,0,4,2,0,1,1,1,1,1,1 0,0,1,2,0,10,2,0,1,1,1,1,1,0 1,0,7,1,2,2,5,4,0,1,1,0,1,0 0,0,1,2,1,5,1,0,0,1,1,0,1,0 1,0,1,2,1,4,3,0,1,1,1,0,1,0 0,0,1,2,2,0,3,0,0,1,1,0,1,0 0,0,1,2,2,8,5,4,0,1,1,2,1,0 1,5,1,2,2,4,5,0,0,1,1,0,1,0 0,0,0,3,2,0,3,0,0,1,1,0,1,0 2,0,1,2,0,3,2,0,1,1,1,0,1,1 1,0,6,2,0,1,2,0,1,1,1,1,1,1 0,0,0,3,2,4,1,0,1,1,1,0,1,0 1,0,0,3,2,5,3,0,0,1,1,1,1,0 0,4,5,2,2,8,1,4,0,1,1,2,1,0 1,0,3,2,0,1,0,0,0,1,1,1,1,0 1,5,0,3,0,5,2,1,1,1,1,1,1,1 0,0,3,2,0,2,2,0,1,1,1,2,1,0 0,4,13,3,1,5,3,0,0,1,1,0,1,0 0,0,3,2,2,3,5,4,1,1,1,2,1,0 1,4,5,2,0,12,2,0,1,1,1,1,1,1 0,0,3,2,0,7,0,1,0,1,1,0,1,0 1,3,4,3,0,5,2,0,1,1,1,1,1,1 1,0,1,2,3,4,5,4,0,1,1,0,1,0 0,0,3,2,0,0,0,0,0,1,1,0,1,1 1,0,3,2,0,7,2,0,1,1,1,1,1,0 1,0,0,3,1,5,3,0,1,1,1,1,1,1 0,0,0,3,2,3,1,0,1,1,1,0,1,0 0,0,1,2,0,3,2,0,1,1,1,0,1,0 0,0,3,2,2,8,1,0,0,1,1,0,1,0 2,1,1,2,0,4,2,0,1,1,1,1,1,0 0,0,3,2,5,4,3,0,1,1,1,1,1,0 1,0,1,2,2,2,3,0,1,1,1,0,1,0 0,0,1,2,2,1,1,0,1,1,1,0,1,0 2,3,1,2,0,10,2,0,1,1,1,0,1,1 1,0,0,3,1,0,3,0,1,1,1,0,1,0 2,0,3,2,0,3,2,0,1,1,1,0,1,0 0,0,3,2,2,0,3,0,1,1,1,0,1,0 0,0,0,3,2,0,3,0,1,1,1,0,1,0 1,0,3,2,1,1,1,0,1,1,1,0,1,0 0,5,10,3,0,5,2,0,1,1,1,1,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,0,3,0,1,2,0,1,1,1,0,1,1 1,4,1,2,0,4,2,0,1,1,1,1,1,1 2,0,10,3,4,3,3,0,0,1,1,2,1,0 0,0,10,3,0,5,2,1,1,1,1,1,1,1 0,3,3,2,0,9,2,2,1,1,1,0,1,0 1,0,0,3,0,5,0,0,0,1,1,2,1,1 0,0,3,2,2,3,1,0,1,1,1,2,1,0 0,1,0,3,2,5,3,0,0,1,1,2,1,0 2,1,7,1,0,3,2,0,1,1,1,1,1,1 1,0,0,3,0,5,2,0,1,1,1,1,1,1 0,0,0,3,2,6,5,4,1,1,1,0,1,0 2,0,1,2,0,3,2,0,1,1,1,0,1,1 0,1,1,2,0,10,4,3,1,1,1,1,1,1 1,0,14,0,0,6,2,4,1,1,1,1,1,0 1,4,10,3,0,5,2,0,1,1,1,0,1,1 1,0,3,2,1,8,5,0,0,1,1,0,1,0 1,4,3,2,0,6,2,0,1,1,1,0,1,0 0,0,3,2,2,6,1,0,1,1,1,2,1,0 0,0,0,3,4,5,5,0,0,1,1,2,1,1 2,0,11,0,0,6,2,0,1,1,1,0,1,0 1,0,4,3,0,8,4,1,0,1,1,0,1,0 1,4,12,1,2,9,5,0,1,1,1,2,1,0 2,2,12,1,0,1,2,0,1,1,1,0,1,0 1,0,0,3,0,7,2,0,1,1,1,1,1,1 0,0,3,2,2,6,3,0,1,1,1,1,1,0 0,0,2,1,2,7,5,0,0,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,1,2,4,2,4,4,0,1,1,1,1,0 0,0,3,2,0,6,1,0,1,1,1,2,1,0 1,1,3,2,0,3,0,0,0,1,1,1,1,0 2,0,0,3,0,6,2,0,1,1,1,0,1,1 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,0,1,2,0,1,1,1,1,1,1 2,0,3,2,2,4,3,0,1,1,1,2,1,0 0,0,3,2,2,8,5,0,0,1,1,2,1,0 1,1,3,2,0,10,2,0,1,1,1,2,1,0 2,0,1,2,2,8,1,0,0,1,1,2,1,0 0,1,3,2,0,1,2,0,1,1,1,0,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,1 0,4,3,2,2,8,4,0,1,1,1,2,1,0 1,0,10,3,0,7,2,0,1,1,1,2,1,0 0,4,0,3,0,5,0,0,0,1,1,1,1,1 1,3,5,2,1,8,3,4,0,1,1,0,1,0 1,0,3,2,5,1,3,0,1,1,1,0,1,0 0,0,3,2,0,2,2,0,1,1,1,1,1,0 1,0,0,3,0,5,2,0,1,1,1,2,1,1 0,0,4,3,0,5,2,0,1,1,1,1,1,1 0,0,0,3,2,5,3,4,1,1,1,0,1,0 0,0,6,2,1,8,5,0,0,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,1,1,0 0,0,3,2,2,7,3,0,1,1,1,0,1,0 2,0,3,2,0,4,2,0,1,1,1,1,1,1 1,0,1,2,3,8,5,0,0,1,1,1,1,1 0,0,3,2,2,2,3,0,1,1,1,2,1,0 0,0,1,2,1,8,3,0,0,1,1,0,1,0 1,3,1,2,0,8,2,4,1,1,1,0,1,0 1,0,5,2,3,8,5,4,0,1,1,0,1,0 2,2,0,3,0,4,2,0,1,1,1,1,1,1 1,0,4,3,0,8,2,1,1,1,1,0,1,0 1,0,3,2,2,4,3,0,0,1,1,2,1,0 1,0,10,3,0,5,2,0,1,1,1,1,1,1 0,0,1,2,2,10,1,0,0,1,1,2,1,0 0,0,12,1,2,5,3,0,1,1,1,0,1,0 0,0,3,2,0,0,0,0,0,1,1,0,1,0 0,0,10,3,0,5,2,1,1,1,1,0,1,1 2,1,1,2,0,9,2,0,1,1,1,1,1,0 0,0,0,3,2,2,3,0,0,1,1,2,1,0 0,0,3,2,2,2,4,0,1,1,1,0,1,0 0,0,1,2,2,1,5,1,1,1,1,2,1,0 2,2,3,2,0,3,2,0,1,1,1,1,1,1 2,1,1,2,0,1,2,0,1,1,1,2,1,1 0,0,1,2,2,10,3,0,1,1,1,1,1,0 1,0,10,3,0,5,2,0,1,1,1,1,1,1 1,0,10,3,0,5,2,0,1,1,1,0,1,1 0,5,3,2,2,8,3,0,0,1,1,0,1,0 1,0,2,1,0,1,2,0,1,1,1,0,1,0 0,0,6,2,2,8,5,4,0,1,1,2,1,0 0,0,2,1,2,6,1,0,1,1,1,2,1,0 1,0,2,1,2,7,5,4,0,1,1,0,1,0 0,0,1,2,2,6,1,0,1,1,1,2,1,0 2,0,1,2,0,1,0,0,0,1,1,0,1,1 0,5,2,1,0,10,2,0,1,1,1,0,1,0 1,1,3,2,0,9,2,0,1,1,1,1,1,0 2,1,3,2,0,1,2,0,1,1,1,2,1,0 1,0,1,2,1,8,3,0,0,1,1,0,1,0 2,0,1,2,0,12,2,0,1,1,1,2,1,1 0,0,0,3,0,3,2,0,1,1,1,1,1,1 1,0,3,2,0,7,2,0,1,1,1,1,1,1 2,0,10,3,0,5,2,0,1,1,1,0,1,1 1,0,10,3,0,5,0,0,0,1,1,1,1,1 2,4,10,3,0,5,0,0,0,1,1,1,1,1 0,0,3,2,0,7,2,0,1,1,1,1,1,1 0,0,3,2,0,8,0,0,0,1,1,0,1,1 1,4,0,3,0,5,2,0,1,1,1,2,1,0 0,0,10,3,0,4,2,0,1,1,1,1,1,1 1,0,1,2,1,0,3,0,1,1,1,2,1,1 0,0,3,2,2,10,3,0,0,1,1,1,1,0 0,0,2,1,2,3,1,0,1,1,1,2,1,0 0,0,3,2,2,6,1,0,0,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,1 1,0,3,2,0,1,2,0,1,1,1,1,1,0 0,4,3,2,0,6,2,0,1,1,1,0,1,0 0,0,5,2,0,1,2,0,1,1,1,0,1,0 1,1,1,2,3,3,5,0,0,1,1,1,1,0 0,0,8,0,2,11,1,0,0,1,1,2,1,0 3,1,3,2,0,3,0,0,0,1,1,2,1,0 0,0,1,2,0,10,2,0,1,1,1,1,1,1 0,0,1,2,2,11,3,0,0,1,1,0,1,0 0,0,3,2,0,3,2,0,1,1,1,2,1,0 0,0,9,1,2,2,3,0,1,1,1,0,1,0 1,1,4,3,0,5,2,0,1,1,1,1,1,1 0,0,3,2,0,1,2,0,1,1,1,2,1,0 2,2,3,2,0,1,2,0,1,1,1,0,1,1 1,0,9,1,2,2,1,0,1,1,1,2,1,0 1,0,3,2,0,2,0,0,0,1,1,2,1,0 0,0,3,2,2,7,4,0,1,1,1,2,1,0 0,0,0,3,2,10,5,4,0,1,1,0,1,0 2,5,3,2,0,2,2,0,1,1,1,2,1,0 1,1,6,2,0,4,2,0,1,1,1,0,1,1 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,1,5,2,2,9,4,0,1,1,1,1,1,1 0,0,3,2,2,7,3,0,0,1,1,0,1,0 1,0,5,2,1,4,5,0,0,1,1,1,1,0 1,0,0,3,0,5,0,4,0,1,1,2,1,1 0,0,0,3,2,8,1,0,1,1,1,0,1,0 1,0,1,2,0,5,2,0,1,1,1,0,1,0 0,4,6,2,0,5,0,0,0,1,1,2,1,1 0,0,5,2,2,4,1,0,0,1,1,0,1,0 1,0,0,3,0,8,2,1,1,1,1,0,1,1 1,3,1,2,1,4,3,4,0,1,1,0,1,0 0,0,12,1,2,10,3,0,1,1,1,1,1,0 0,0,1,2,2,3,3,0,0,1,1,2,1,0 1,0,0,3,1,5,3,4,1,1,1,0,1,0 1,2,1,2,0,3,2,0,1,1,1,1,1,1 0,0,3,2,0,7,2,0,1,1,1,0,1,0 0,5,3,2,0,12,2,0,1,1,1,0,1,0 0,0,1,2,2,3,1,0,1,1,1,0,1,0 0,0,0,3,2,2,3,0,0,1,1,2,1,0 0,0,3,2,1,4,5,0,0,1,1,0,1,0 1,1,6,2,0,10,2,0,1,1,1,1,1,1 0,0,1,2,0,5,2,0,1,1,1,1,1,1 0,3,6,2,2,0,1,4,1,1,1,0,1,0 2,0,3,2,0,8,2,0,1,1,1,1,1,1 1,0,0,3,3,8,5,1,0,1,1,0,1,0 1,0,0,3,0,5,2,0,1,1,1,0,1,1 1,5,0,3,1,8,5,0,0,1,1,0,1,0 0,0,14,0,0,2,2,0,1,1,1,0,1,0 1,0,0,3,0,0,2,0,1,1,1,1,1,1 0,0,13,3,0,5,2,1,1,1,1,0,1,0 0,0,3,2,2,2,3,0,0,1,1,1,1,1 2,0,10,3,3,5,3,0,1,1,1,2,1,1 1,5,6,2,1,0,3,0,0,1,1,1,1,0 1,3,6,2,0,1,2,0,1,1,1,0,1,1 1,4,1,2,0,12,2,0,1,1,1,0,1,1 0,0,0,3,2,4,3,0,1,1,1,0,1,0 1,0,11,0,5,1,3,0,1,1,1,0,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,3,2,0,1,2,0,1,1,1,1,1,0 0,0,1,2,1,4,5,0,0,1,1,0,1,0 2,0,3,2,0,2,0,0,0,1,1,2,1,0 1,4,6,2,0,1,2,0,1,1,1,0,1,1 1,1,5,2,0,4,2,0,1,1,1,0,1,1 1,0,3,2,1,2,4,4,0,1,1,2,1,0 0,0,3,2,2,6,1,0,1,1,1,0,1,0 2,0,1,2,0,9,2,0,1,1,1,1,1,0 0,0,1,2,2,8,3,0,0,1,1,2,1,0 1,0,12,1,0,1,2,0,1,1,1,0,1,0 0,4,10,3,0,5,0,0,0,1,1,0,1,1 0,0,1,2,1,6,1,0,1,1,1,0,1,0 1,0,3,2,0,3,2,0,1,1,1,1,1,1 1,0,1,2,0,1,2,0,1,1,1,1,1,1 1,1,8,0,0,4,2,0,1,1,1,1,1,0 0,0,1,2,2,3,1,1,0,1,1,0,1,0 3,1,0,3,0,9,2,0,1,1,1,2,1,0 1,1,2,1,1,4,5,0,0,1,1,1,1,0 0,0,6,2,2,4,3,4,0,1,1,0,1,0 1,0,3,2,0,6,2,0,1,1,1,0,1,1 0,1,0,3,0,3,2,0,1,1,1,1,1,0 1,0,12,1,1,2,5,4,0,1,1,0,1,0 0,3,0,3,2,5,3,0,0,1,1,0,1,0 0,0,3,2,0,9,2,0,1,1,1,2,1,0 1,0,3,2,1,4,1,0,1,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,1,1,0 0,0,3,2,2,8,1,0,1,1,1,0,1,0 1,0,14,0,2,7,1,0,1,1,1,2,1,0 0,0,0,3,0,4,2,0,1,1,1,0,1,0 0,0,3,2,1,8,1,0,0,1,1,0,1,0 1,5,1,2,1,8,5,4,0,1,1,0,1,0 0,0,0,3,0,5,2,0,1,1,1,1,1,0 0,0,9,1,2,3,1,0,0,1,1,2,1,0 0,1,1,2,0,4,2,0,1,1,1,1,1,0 1,0,0,3,4,5,5,0,0,1,1,1,1,0 0,0,3,2,0,12,2,0,1,1,1,1,1,1 1,0,3,2,5,8,5,0,0,1,1,0,1,0 2,1,13,3,0,3,2,0,1,1,1,0,1,1 1,0,3,2,1,10,5,0,1,1,1,1,1,0 1,0,3,2,0,0,2,0,1,1,1,1,1,0 1,0,0,3,2,8,3,4,0,1,1,0,1,1 1,0,0,3,0,4,2,0,1,1,1,1,1,0 0,0,3,2,3,7,3,0,1,1,1,0,1,0 0,0,3,2,5,8,3,0,0,1,1,0,1,0 1,1,13,3,2,5,3,0,0,1,1,1,1,0 1,0,3,2,3,3,5,4,0,1,1,0,1,0 1,0,3,2,2,4,3,0,0,1,1,1,1,0 1,0,6,2,1,8,5,0,0,1,1,0,1,0 1,0,3,2,0,10,2,0,1,1,1,0,1,1 0,0,1,2,2,0,1,0,0,1,1,2,1,0 0,0,3,2,2,8,3,0,0,1,1,0,1,0 1,0,0,3,1,5,3,0,0,1,1,1,1,1 1,5,0,3,0,12,2,0,1,1,1,1,1,1 1,0,3,2,2,10,3,0,0,1,1,0,1,0 2,1,4,3,4,5,3,0,1,1,1,1,1,1 0,0,3,2,0,1,2,0,1,1,1,1,1,1 0,5,5,2,2,8,3,0,1,1,1,0,1,0 0,0,1,2,2,6,4,0,1,1,1,0,1,0 1,0,1,2,2,4,5,0,0,1,1,0,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 1,0,3,2,1,8,3,0,0,1,1,0,1,0 0,0,0,3,0,5,0,0,0,1,1,1,1,1 0,0,0,3,2,4,3,0,1,1,1,1,1,1 0,0,3,2,0,12,2,0,1,1,1,0,1,0 0,0,3,2,2,8,3,0,0,1,1,1,1,0 2,0,10,3,0,0,2,0,1,1,1,0,1,0 1,0,6,2,0,8,2,0,1,1,1,0,1,0 0,0,1,2,2,1,3,0,1,1,1,0,1,0 1,0,10,3,0,5,2,1,1,1,1,0,1,1 1,4,10,3,2,5,3,0,0,1,1,1,1,0 0,0,3,2,0,3,1,1,0,1,1,0,1,0 0,0,7,1,0,12,0,4,0,1,1,0,1,0 0,5,0,3,2,12,1,0,1,1,1,0,1,0 0,0,12,1,2,7,1,0,1,1,1,0,1,0 0,0,5,2,2,6,1,0,1,1,1,2,1,0 1,0,1,2,2,7,1,0,1,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,1 0,0,3,2,1,1,3,0,1,1,1,0,1,0 0,0,0,3,2,5,1,0,1,1,1,0,1,0 1,0,0,3,0,4,0,0,0,1,1,2,1,1 1,0,5,2,0,4,2,0,1,1,1,0,1,1 1,0,3,2,0,6,2,0,1,1,1,0,1,0 0,4,0,3,0,5,2,0,1,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,1,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,1 1,0,13,3,0,3,2,0,1,1,1,1,1,0 0,4,0,3,0,5,2,0,1,1,1,1,1,0 0,0,3,2,2,2,4,3,1,1,1,1,1,0 0,1,3,2,2,2,3,0,1,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,1 0,1,3,2,0,1,2,0,1,1,1,0,1,0 2,0,3,2,0,1,2,4,1,1,1,0,1,1 2,1,3,2,0,3,2,0,1,1,1,1,1,0 1,1,4,3,2,5,3,0,1,1,1,2,1,1 0,0,0,3,2,8,3,0,0,1,1,2,1,0 3,0,3,2,1,6,3,0,0,1,1,2,1,0 2,4,3,2,4,5,3,0,0,1,1,0,1,0 0,0,1,2,2,3,1,0,1,1,1,2,1,0 1,3,0,3,0,5,2,0,1,1,1,0,1,1 2,1,3,2,0,9,2,1,1,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,0 1,0,3,2,0,3,2,0,1,1,1,0,1,0 0,0,3,2,0,2,1,1,1,1,1,2,1,0 1,0,0,3,0,4,0,0,0,1,1,0,1,0 1,0,3,2,1,7,3,0,0,1,1,0,1,0 1,0,3,2,0,3,2,0,1,1,1,1,1,1 0,2,3,2,2,10,1,0,1,1,1,1,1,0 2,0,3,2,0,1,2,0,1,1,1,0,1,0 2,5,1,2,0,8,2,0,1,1,1,0,1,0 0,0,3,2,2,8,4,0,1,1,1,0,1,0 0,1,0,3,0,5,2,0,1,1,1,0,1,1 0,0,3,2,0,7,2,0,1,1,1,0,1,1 1,0,3,2,1,8,5,0,0,1,1,1,1,0 1,0,1,2,0,7,2,0,1,1,1,0,1,1 0,0,3,2,2,7,1,0,1,1,1,1,1,0 0,0,0,3,2,8,3,0,0,1,1,0,1,0 0,5,4,3,2,5,3,0,1,1,1,1,1,0 1,0,1,2,0,7,2,0,1,1,1,1,1,1 0,0,0,3,2,0,3,0,1,1,1,1,1,1 2,4,10,3,0,5,2,0,1,1,1,1,1,1 1,2,0,3,0,9,2,0,1,1,1,1,1,1 1,0,1,2,1,4,3,0,0,1,1,2,1,0 2,5,8,0,0,10,2,0,1,1,1,2,1,0 0,0,12,1,2,3,5,0,0,1,1,2,1,0 0,5,1,2,2,2,3,0,1,1,1,0,1,0 0,0,3,2,0,6,2,0,1,1,1,0,1,0 2,0,1,2,1,2,3,0,0,1,1,1,1,0 0,0,3,2,1,5,1,0,0,1,1,0,1,0 1,3,3,2,2,8,1,0,1,1,1,0,1,0 1,0,3,2,1,2,3,0,0,1,1,0,1,0 1,0,6,2,1,5,3,0,0,1,1,2,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,1 1,5,10,3,0,5,2,0,1,1,1,1,1,1 1,3,6,2,0,5,0,0,0,1,1,1,1,1 0,0,3,2,2,9,4,0,1,1,1,0,1,0 1,0,0,3,0,8,2,1,1,1,1,2,1,1 1,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,1,2,1,8,5,0,0,1,1,0,1,0 0,2,3,2,2,9,1,0,1,1,1,1,1,0 1,0,3,2,0,8,2,0,1,1,1,0,1,0 2,3,3,2,1,8,1,4,0,1,1,2,1,0 0,0,12,1,3,10,5,0,1,1,1,0,1,0 0,0,3,2,0,3,2,0,1,1,1,1,1,1 1,0,3,2,0,1,2,0,1,1,1,1,1,1 1,0,9,1,0,1,2,0,1,1,1,0,1,0 0,0,2,1,2,2,1,0,0,1,1,2,1,0 1,3,1,2,0,5,2,0,1,1,1,0,1,1 2,0,3,2,0,8,2,0,1,1,1,0,1,0 1,0,1,2,4,10,5,0,0,1,1,2,1,0 0,0,1,2,2,8,1,0,1,1,1,2,1,0 0,2,0,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,1,2,3,0,0,1,1,1,1,0 1,4,6,2,0,12,2,0,1,1,1,0,1,1 0,0,5,2,2,2,3,0,1,1,1,0,1,0 1,0,1,2,2,2,5,4,0,1,1,0,1,0 1,0,1,2,0,9,2,0,1,1,1,0,1,0 2,0,1,2,0,3,2,0,1,1,1,1,1,0 0,2,3,2,2,1,3,0,1,1,1,0,1,0 1,0,1,2,0,1,2,1,1,1,1,0,1,1 1,1,1,2,0,9,2,0,1,1,1,1,1,0 0,0,2,1,2,11,1,0,0,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,0,10,2,0,1,1,1,1,1,1 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,1,3,2,0,10,2,0,1,1,1,1,1,0 0,0,1,2,0,4,2,0,1,1,1,1,1,0 0,1,6,2,2,9,1,0,1,1,1,1,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 2,0,7,1,0,3,2,0,1,1,1,0,1,0 0,0,3,2,0,7,0,0,0,1,1,2,1,0 0,0,5,2,0,12,2,0,1,1,1,0,1,0 1,0,0,3,2,3,5,4,0,1,1,2,1,1 0,5,1,2,2,2,1,0,1,1,1,1,1,0 1,0,1,2,2,2,3,4,1,1,1,1,1,0 1,0,3,2,3,1,3,0,1,1,1,1,1,0 0,2,1,2,2,3,3,0,1,1,1,1,1,0 1,0,6,2,3,3,5,0,0,1,1,1,1,0 1,0,3,2,1,8,5,0,0,1,1,0,1,0 0,0,1,2,0,6,2,0,1,1,1,2,1,0 2,0,8,0,2,6,3,0,0,1,1,2,1,0 1,4,3,2,1,8,5,0,0,1,1,2,1,0 0,0,1,2,1,8,5,4,0,1,1,0,1,0 1,0,1,2,0,5,0,0,0,1,1,2,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,1 0,4,6,2,2,12,1,0,1,1,1,2,1,0 0,0,0,3,0,4,2,0,1,1,1,0,1,1 1,0,1,2,0,3,2,0,1,1,1,0,1,1 2,5,13,3,0,5,2,0,1,1,1,1,1,0 1,0,5,2,0,5,2,0,1,1,1,1,1,1 2,1,8,0,0,9,2,0,1,1,1,2,1,0 1,1,4,3,1,2,3,0,0,1,1,2,1,0 0,0,0,3,2,4,1,0,0,1,1,2,1,0 1,0,0,3,2,5,3,0,1,1,1,2,1,0 0,0,1,2,2,6,3,0,1,1,1,1,1,0 1,0,1,2,0,7,2,0,1,1,1,0,1,0 0,3,5,2,0,3,2,1,1,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 1,4,4,3,0,5,2,4,1,1,1,0,1,1 1,0,4,3,2,4,3,0,1,1,1,1,1,1 2,3,4,3,1,4,3,4,1,1,1,1,1,1 1,0,2,1,0,10,2,0,1,1,1,0,1,0 1,0,0,3,1,4,3,0,0,1,1,1,1,1 1,0,6,2,0,3,2,0,1,1,1,0,1,1 0,0,1,2,2,3,3,0,0,1,1,2,1,0 1,0,0,3,0,1,2,0,1,1,1,1,1,1 1,0,1,2,0,3,0,0,0,1,1,0,1,1 0,5,0,3,2,8,3,0,0,1,1,1,1,0 0,0,3,2,2,2,3,0,1,1,1,2,1,0 0,0,3,2,2,6,1,0,0,1,1,0,1,0 0,0,1,2,2,8,3,1,0,1,1,2,1,0 0,0,3,2,2,7,3,0,1,1,1,0,1,0 0,0,3,2,2,7,1,0,1,1,1,0,1,0 1,2,0,3,0,1,2,0,1,1,1,1,1,1 2,0,11,0,4,6,3,0,0,1,1,0,1,0 1,0,1,2,0,4,2,0,1,1,1,1,1,1 2,0,0,3,0,5,2,0,1,1,1,0,1,1 0,0,3,2,4,8,1,0,0,1,1,0,1,0 0,0,1,2,2,6,1,0,1,1,1,2,1,0 1,0,0,3,2,0,1,0,1,1,1,0,1,0 0,0,1,2,2,8,1,0,0,1,1,2,1,0 1,0,3,2,1,7,3,1,0,1,1,0,1,0 0,0,1,2,2,1,3,0,1,1,1,0,1,0 0,0,0,3,0,4,0,0,0,1,1,1,1,1 2,0,3,2,3,2,5,0,0,1,1,0,1,0 2,0,3,2,4,3,3,0,0,1,1,1,1,1 0,0,3,2,0,3,4,0,0,1,1,2,1,0 1,0,0,3,1,6,3,0,1,1,1,2,1,0 1,0,5,2,2,8,3,0,0,1,1,0,1,0 2,0,1,2,0,3,2,0,1,1,1,0,1,0 1,5,4,3,2,5,3,0,1,1,1,0,1,0 1,1,1,2,2,3,3,0,1,1,1,1,1,0 2,0,3,2,0,1,2,0,1,1,1,1,1,1 0,0,0,3,2,4,3,0,1,1,1,1,1,0 0,0,1,2,3,9,1,0,1,1,1,0,1,0 1,0,3,2,0,4,2,0,1,1,1,0,1,1 1,0,1,2,2,0,5,1,0,1,1,0,1,0 1,4,0,3,0,12,2,0,1,1,1,0,1,1 0,0,3,2,0,2,0,4,0,1,1,2,1,0 1,1,1,2,0,4,2,0,1,1,1,0,1,0 0,2,1,2,0,4,2,0,1,1,1,2,1,1 2,4,10,3,0,5,2,4,1,1,1,2,1,1 1,0,1,2,0,7,2,0,1,1,1,1,1,0 0,5,15,0,2,2,3,0,1,1,1,2,1,0 1,1,4,3,0,5,2,0,1,1,1,1,1,1 0,0,1,2,0,4,2,0,1,1,1,1,1,0 1,1,10,3,0,3,2,0,1,1,1,1,1,0 0,0,10,3,0,4,2,0,1,1,1,1,1,1 2,0,2,1,0,10,2,0,1,1,1,1,1,0 0,3,1,2,2,12,1,4,1,1,1,0,1,0 0,0,1,2,2,2,1,0,1,1,1,2,1,0 2,0,3,2,1,2,3,0,0,1,1,0,1,0 1,1,0,3,0,0,2,0,1,1,1,1,1,1 1,0,5,2,1,8,5,0,0,1,1,1,1,0 2,3,3,2,0,4,2,0,1,1,1,0,1,1 0,0,3,2,2,6,1,4,1,1,1,1,1,0 1,1,1,2,0,2,0,0,0,1,1,1,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,0 3,1,8,0,2,9,5,0,1,1,1,2,1,0 2,0,13,3,0,5,2,0,1,1,1,0,1,1 1,0,10,3,0,5,2,0,1,1,1,1,1,1 1,0,0,3,5,10,5,0,1,1,1,2,1,0 0,0,4,3,2,5,1,1,1,1,1,0,1,0 1,0,6,2,0,4,2,0,1,1,1,1,1,1 1,0,7,1,0,6,2,0,1,1,1,0,1,0 0,0,3,2,3,8,5,0,0,1,1,0,1,0 2,4,1,2,0,8,0,4,0,1,1,1,1,0 2,0,7,1,3,9,3,4,1,1,1,0,1,0 1,0,1,2,0,8,2,0,1,1,1,0,1,1 1,2,1,2,0,12,2,0,1,1,1,1,1,1 1,0,1,2,0,4,2,0,1,1,1,1,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,1 1,0,3,2,2,8,3,0,1,1,1,1,1,0 0,0,4,3,0,4,2,1,1,1,1,1,1,1 1,4,3,2,0,4,2,3,1,1,1,0,1,1 0,0,1,2,0,5,2,0,1,1,1,1,1,0 1,4,6,2,0,8,0,0,0,1,1,2,1,0 1,0,1,2,1,8,3,0,0,1,1,0,1,0 0,0,0,3,2,0,3,0,1,1,1,1,1,0 0,0,5,2,2,5,1,0,1,1,1,2,1,0 0,4,3,2,0,5,2,0,1,1,1,0,1,0 0,0,5,2,2,10,1,0,1,1,1,1,1,0 2,0,3,2,0,7,2,0,1,1,1,0,1,1 1,0,3,2,1,1,3,0,0,1,1,0,1,0 1,0,1,2,0,10,2,4,1,1,1,1,1,1 2,4,0,3,0,5,2,0,1,1,1,2,1,0 1,2,1,2,4,3,3,0,0,1,1,1,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,1 0,4,0,3,2,0,3,0,0,1,1,1,1,0 0,0,1,2,2,2,1,0,1,1,1,2,1,0 1,0,6,2,0,3,2,0,1,1,1,0,1,1 0,1,6,2,2,9,1,0,1,1,1,1,1,0 2,0,1,2,3,4,3,0,0,1,1,0,1,0 1,1,4,3,1,5,5,0,1,1,1,0,1,1 1,0,1,2,1,3,5,0,0,1,1,1,1,0 0,0,3,2,2,1,1,0,1,1,1,0,1,0 0,0,6,2,1,6,5,0,0,1,1,0,1,0 3,1,3,2,0,9,2,0,1,1,1,2,1,0 0,0,0,3,2,5,3,0,0,1,1,2,1,0 1,4,3,2,0,4,2,0,1,1,1,0,1,0 0,0,3,2,0,3,2,0,1,1,1,1,1,0 0,0,3,2,2,3,5,0,1,1,1,1,1,0 0,0,1,2,2,3,1,0,0,1,1,0,1,0 0,0,1,2,0,6,2,0,1,1,1,2,1,0 1,1,0,3,0,4,2,0,1,1,1,1,1,0 0,0,9,1,2,8,1,0,0,1,1,2,1,0 0,0,11,0,2,1,3,0,1,1,1,0,1,0 0,0,3,2,2,7,1,0,1,1,1,0,1,0 0,0,12,1,2,2,4,4,1,1,1,2,1,0 1,0,0,3,1,0,5,0,0,1,1,0,1,0 0,2,1,2,0,4,2,0,1,1,1,1,1,1 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,11,0,5,2,1,3,0,1,1,2,1,0 0,0,3,2,2,7,3,0,0,1,1,0,1,0 2,0,3,2,1,8,4,0,0,1,1,0,1,0 2,0,3,2,0,2,2,0,1,1,1,2,1,0 1,0,0,3,0,1,2,0,1,1,1,1,1,0 2,2,3,2,0,3,2,0,1,1,1,1,1,1 0,0,3,2,1,8,3,0,1,1,1,2,1,0 2,1,5,2,1,0,3,0,1,1,1,0,1,0 1,3,1,2,0,4,0,1,0,1,1,0,1,1 1,3,0,3,2,4,3,0,0,1,1,0,1,0 0,0,1,2,2,2,3,0,0,1,1,2,1,0 1,2,10,3,0,4,2,0,1,1,1,1,1,1 1,4,0,3,0,5,0,0,0,1,1,2,1,0 1,0,12,1,0,1,2,0,1,1,1,0,1,0 0,0,3,2,2,9,1,0,1,1,1,1,1,0 1,0,5,2,0,1,2,0,1,1,1,1,1,0 1,0,1,2,1,5,3,0,0,1,1,0,1,0 2,0,1,2,0,3,2,0,1,1,1,1,1,0 2,0,3,2,2,8,3,0,0,1,1,1,1,0 1,4,10,3,4,5,5,0,0,1,1,2,1,0 2,2,1,2,0,1,2,0,1,1,1,1,1,1 1,0,1,2,0,3,2,0,1,1,1,1,1,1 0,0,1,2,2,10,1,0,1,1,1,2,1,0 0,0,9,1,2,3,5,4,0,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 2,0,1,2,0,12,2,0,1,1,1,1,1,0 1,0,3,2,1,6,3,0,1,1,1,0,1,0 0,0,0,3,2,3,3,0,0,1,1,0,1,0 0,0,12,1,0,6,2,0,1,1,1,0,1,0 0,4,10,3,0,5,2,0,1,1,1,0,1,1 2,0,12,1,2,2,3,0,1,1,1,0,1,0 0,0,9,1,2,2,1,0,1,1,1,2,1,0 1,0,5,2,0,5,0,0,0,1,1,2,1,1 1,0,10,3,0,5,2,0,1,1,1,0,1,1 0,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,10,3,4,5,5,4,0,1,1,2,1,0 0,0,1,2,0,5,2,0,1,1,1,2,1,1 1,0,0,3,3,3,3,0,1,1,1,0,1,1 1,1,3,2,2,1,3,2,1,1,1,2,1,0 0,0,7,1,2,2,1,4,1,1,1,2,1,0 1,0,7,1,1,3,3,0,1,1,1,2,1,0 0,0,1,2,2,7,3,1,1,1,1,1,1,1 1,0,8,0,0,7,0,0,0,1,1,0,1,0 0,0,1,2,2,8,3,0,0,1,1,1,1,0 0,0,0,3,0,8,0,0,0,1,1,0,1,0 2,0,3,2,1,8,5,0,0,1,1,0,1,0 2,3,1,2,2,8,5,0,1,1,1,0,1,0 0,0,1,2,0,8,0,0,0,1,1,0,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,0 0,0,6,2,2,1,3,0,1,1,1,1,1,0 2,0,2,1,0,1,2,0,1,1,1,0,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,0 1,1,3,2,0,9,2,0,1,1,1,2,1,0 0,0,3,2,2,3,1,0,0,1,1,1,1,0 0,0,0,3,1,3,3,0,0,1,1,0,1,0 1,1,1,2,2,9,3,0,1,1,1,1,1,0 0,0,3,2,1,8,3,0,0,1,1,2,1,0 1,5,1,2,0,2,2,0,1,1,1,2,1,0 0,0,2,1,2,3,1,0,0,1,1,0,1,0 1,2,1,2,0,3,2,0,1,1,1,0,1,0 0,0,1,2,2,8,4,0,1,1,1,0,1,0 1,1,0,3,0,5,2,0,1,1,1,1,1,1 1,0,3,2,0,4,2,0,1,1,1,0,1,1 2,1,3,2,0,1,2,0,1,1,1,2,1,0 2,1,8,0,4,9,4,0,0,1,1,2,1,0 0,4,0,3,2,5,1,0,0,1,1,0,1,0 0,0,1,2,2,7,3,0,0,1,1,2,1,0 0,0,7,1,0,9,2,4,1,1,1,0,1,0 1,0,10,3,0,5,2,0,1,1,1,1,1,1 2,0,1,2,1,3,3,0,0,1,1,0,1,0 0,0,5,2,2,3,1,0,0,1,1,0,1,0 1,3,0,3,0,5,2,0,1,1,1,1,1,0 0,0,0,3,0,4,2,0,1,1,1,0,1,1 1,1,2,1,0,10,2,0,1,1,1,0,1,0 2,0,3,2,0,4,2,0,1,1,1,1,1,0 1,0,0,3,0,4,0,0,0,1,1,0,1,1 0,0,12,1,2,2,5,4,0,1,1,0,1,0 1,4,6,2,1,4,3,0,0,1,1,2,1,0 0,0,2,1,2,8,4,0,0,1,1,0,1,0 0,0,3,2,0,2,0,0,0,1,1,2,1,0 1,0,3,2,1,9,3,0,1,1,1,1,1,1 0,0,3,2,2,4,1,0,0,1,1,2,1,0 1,2,5,2,0,5,2,0,1,1,1,1,1,0 0,0,9,1,1,4,3,0,1,1,1,0,1,0 0,0,3,2,2,7,1,4,1,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,1,1,0 0,0,3,2,2,7,5,4,0,1,1,0,1,0 1,0,3,2,1,2,5,4,0,1,1,2,1,0 1,5,13,3,0,5,2,0,1,1,1,1,1,1 1,0,1,2,1,8,1,0,1,1,1,0,1,1 1,4,3,2,0,12,2,0,1,1,1,1,1,1 0,0,3,2,2,2,4,4,0,1,1,1,1,0 1,0,0,3,0,9,2,0,1,1,1,1,1,0 1,1,10,3,2,4,3,0,1,1,1,1,1,0 1,2,4,3,0,4,2,0,1,1,1,0,1,1 0,0,1,2,2,3,3,4,0,1,1,2,1,0 1,0,0,3,0,3,2,0,1,1,1,2,1,0 0,0,1,2,2,5,1,0,1,1,1,0,1,0 1,0,1,2,2,4,3,0,1,1,1,1,1,0 1,0,6,2,0,1,2,0,1,1,1,0,1,1 1,0,3,2,0,1,2,0,1,1,1,1,1,1 0,0,3,2,0,10,1,0,1,1,1,0,1,0 0,0,1,2,2,2,3,0,0,1,1,0,1,0 0,0,3,2,2,2,1,0,1,1,1,0,1,0 0,4,0,3,0,5,2,0,1,1,1,0,1,0 0,0,1,2,0,4,2,0,1,1,1,0,1,0 1,0,1,2,2,8,3,0,0,1,1,0,1,0 1,1,0,3,1,4,3,3,1,1,1,2,1,0 1,0,6,2,0,5,2,0,1,1,1,0,1,1 0,0,1,2,2,4,3,0,1,1,1,2,1,0 0,0,1,2,0,8,2,0,1,1,1,0,1,0 0,3,1,2,2,8,1,4,1,1,1,2,1,0 1,5,4,3,0,4,2,0,1,1,1,0,1,1 1,2,1,2,1,9,3,0,1,1,1,1,1,0 1,0,3,2,0,7,2,0,1,1,1,1,1,1 0,0,2,1,0,7,2,0,1,1,1,0,1,0 0,2,1,2,0,1,2,4,1,1,1,1,1,0 1,1,5,2,0,9,2,0,1,1,1,1,1,1 0,0,1,2,2,3,1,0,0,1,1,2,1,0 0,0,1,2,1,2,1,4,1,1,1,2,1,0 1,4,10,3,0,5,2,0,1,1,1,1,1,1 0,0,5,2,0,7,2,0,1,1,1,1,1,0 1,2,0,3,0,4,2,0,1,1,1,2,1,0 1,0,1,2,1,3,3,0,1,1,1,1,1,1 1,0,3,2,0,7,2,0,1,1,1,0,1,1 0,0,3,2,0,1,2,0,1,1,1,1,1,0 1,0,3,2,1,8,5,0,0,1,1,2,1,0 1,0,10,3,0,5,2,0,1,1,1,1,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,3,2,0,3,2,0,1,1,1,0,1,0 0,3,10,3,0,4,2,0,1,1,1,1,1,1 2,0,3,2,0,1,2,0,1,1,1,2,1,0 0,0,0,3,2,5,1,0,0,1,1,0,1,0 1,0,0,3,2,2,3,0,1,1,1,0,1,0 1,0,10,3,1,5,3,0,0,1,1,2,1,0 0,0,2,1,2,8,1,0,0,1,1,2,1,0 0,0,0,3,2,3,3,0,1,1,1,1,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 1,0,5,2,0,10,2,3,1,1,1,2,1,0 1,0,3,2,1,3,5,0,0,1,1,0,1,0 1,0,9,1,1,9,1,0,1,1,1,0,1,0 1,0,3,2,0,3,2,0,1,1,1,0,1,1 1,0,1,2,0,1,2,0,1,1,1,0,1,1 0,0,3,2,2,2,5,0,1,1,1,2,1,0 1,4,10,3,1,5,3,0,0,1,1,1,1,1 1,4,0,3,0,5,2,0,1,1,1,0,1,1 1,4,10,3,0,5,2,0,1,1,1,1,1,1 0,0,1,2,2,2,3,0,0,1,1,2,1,0 0,0,8,0,0,0,2,0,1,1,1,0,1,0 1,5,0,3,0,4,0,0,0,1,1,2,1,0 2,0,3,2,0,3,2,0,1,1,1,0,1,0 2,0,8,0,0,3,2,0,1,1,1,1,1,0 1,0,15,0,0,2,2,0,1,1,1,0,1,0 0,0,2,1,2,1,1,0,1,1,1,2,1,0 1,1,0,3,0,3,2,0,1,1,1,1,1,0 1,0,0,3,0,5,2,0,1,1,1,0,1,1 1,2,0,3,0,1,2,4,1,1,1,1,1,0 0,4,3,2,3,10,1,0,1,1,1,1,1,0 0,0,6,2,2,0,5,0,0,1,1,1,1,0 2,3,0,3,1,8,3,0,1,1,1,0,1,0 1,0,11,0,0,2,0,1,0,1,1,0,1,0 0,0,1,2,2,3,5,4,0,1,1,2,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,1 2,0,1,2,3,8,4,0,1,1,1,0,1,0 0,0,3,2,2,6,4,4,1,1,1,0,1,0 0,0,10,3,0,5,2,0,1,1,1,0,1,1 1,0,3,2,0,3,2,0,1,1,1,0,1,0 0,0,0,3,2,8,1,0,0,1,1,2,1,0 1,2,1,2,0,4,2,0,1,1,1,1,1,1 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,0,3,2,3,3,0,1,1,1,1,1,0 0,0,3,2,2,2,5,4,1,1,1,2,1,0 1,0,9,1,1,10,3,0,0,1,1,0,1,0 1,0,0,3,0,8,2,0,1,1,1,1,1,0 2,0,1,2,4,12,3,4,0,1,1,0,1,0 2,0,1,2,0,1,2,0,1,1,1,2,1,0 2,1,3,2,0,9,2,0,1,1,1,2,1,0 2,0,13,3,0,5,2,0,1,1,1,1,1,0 0,0,6,2,0,5,1,0,0,1,1,2,1,1 1,0,0,3,0,4,0,0,0,1,1,1,1,0 1,0,9,1,0,1,2,0,1,1,1,0,1,0 0,2,0,3,2,3,1,0,0,1,1,0,1,0 1,1,3,2,0,9,2,0,1,1,1,1,1,1 0,0,9,1,2,9,3,0,1,1,1,0,1,0 1,5,3,2,0,4,2,0,1,1,1,0,1,0 1,0,0,3,2,3,3,0,1,1,1,1,1,0 0,0,3,2,2,8,3,0,0,1,1,0,1,0 0,0,6,2,0,0,0,0,0,1,1,2,1,0 2,3,1,2,0,0,2,0,1,1,1,0,1,1 0,0,6,2,0,2,2,0,1,1,1,1,1,1 0,0,0,3,2,8,3,0,1,1,1,0,1,0 1,0,0,3,0,6,2,0,1,1,1,1,1,1 1,4,0,3,1,5,5,0,0,1,1,0,1,1 1,0,1,2,0,8,2,0,1,1,1,0,1,0 1,0,7,1,4,10,5,0,1,1,1,0,1,1 1,0,1,2,0,5,2,0,1,1,1,1,1,0 1,0,2,1,0,1,2,0,1,1,1,0,1,0 0,1,3,2,2,1,3,0,1,1,1,1,1,0 2,1,3,2,0,10,2,0,1,1,1,2,1,0 0,0,0,3,2,8,3,0,0,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,0,1,1 0,0,3,2,0,6,2,0,1,1,1,0,1,0 0,0,0,3,2,4,3,0,0,1,1,0,1,0 0,0,6,2,2,1,1,0,1,1,1,0,1,0 0,0,3,2,3,9,3,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,1 2,0,1,2,3,4,5,0,0,1,1,2,1,0 0,0,3,2,2,2,4,0,1,1,1,0,1,0 1,0,0,3,3,5,5,0,0,1,1,1,1,0 2,4,10,3,1,5,3,0,0,1,1,0,1,1 0,0,3,2,0,4,2,4,1,1,1,1,1,0 1,3,10,3,2,5,3,0,0,1,1,0,1,0 1,1,1,2,1,1,3,0,1,1,1,2,1,0 2,0,1,2,1,8,3,0,0,1,1,0,1,0 0,0,1,2,2,2,4,1,1,1,1,2,1,0 1,0,5,2,0,4,2,0,1,1,1,1,1,1 0,0,3,2,1,1,3,0,1,1,1,1,1,0 1,0,7,1,0,7,2,4,1,1,1,0,1,0 0,2,0,3,0,1,2,0,1,1,1,1,1,0 2,0,8,0,0,1,2,0,1,1,1,0,1,0 1,0,10,3,0,4,2,0,1,1,1,0,1,1 0,0,3,2,0,5,0,1,0,1,1,2,1,1 2,0,12,1,0,8,2,4,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 0,0,1,2,2,0,3,0,0,1,1,0,1,0 1,0,1,2,0,10,2,0,1,1,1,1,1,1 0,3,1,2,2,4,1,0,1,1,1,0,1,0 1,0,3,2,1,1,3,0,1,1,1,0,1,0 1,0,3,2,1,1,5,0,1,1,1,0,1,0 1,3,1,2,2,8,3,0,1,1,1,1,1,1 0,0,3,2,2,1,1,0,1,1,1,0,1,0 2,0,3,2,0,4,2,0,1,1,1,0,1,1 0,5,0,3,2,5,3,0,0,1,1,2,1,0 1,0,2,1,1,3,3,0,0,1,1,0,1,0 1,0,6,2,0,8,4,0,0,1,1,2,1,0 1,0,1,2,0,1,4,1,1,1,1,0,1,1 1,1,10,3,0,4,2,0,1,1,1,1,1,1 1,0,4,3,0,5,2,0,1,1,1,1,1,1 1,0,1,2,2,1,3,0,1,1,1,1,1,0 1,3,3,2,0,8,2,0,1,1,1,1,1,1 2,0,3,2,4,2,4,0,0,1,1,0,1,0 1,0,3,2,1,4,3,0,0,1,1,0,1,1 1,0,10,3,2,5,3,0,0,1,1,0,1,0 0,5,10,3,2,4,3,0,0,1,1,0,1,0 1,2,2,1,2,4,4,0,1,1,1,0,1,1 1,1,4,3,0,5,2,0,1,1,1,0,1,1 0,0,3,2,2,1,4,0,0,1,1,2,1,0 0,0,1,2,2,8,5,0,0,1,1,0,1,0 0,4,1,2,1,8,5,0,0,1,1,0,1,0 0,0,3,2,2,0,3,0,1,1,1,1,1,0 1,0,1,2,0,5,0,0,0,1,1,2,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,1,2,1,10,3,0,1,1,1,1,1,0 1,1,5,2,2,3,3,0,0,1,1,2,1,0 0,0,0,3,0,5,2,0,1,1,1,0,1,0 0,0,6,2,2,3,3,4,0,1,1,2,1,0 1,4,0,3,0,12,2,0,1,1,1,1,1,0 0,0,9,1,2,3,1,0,0,1,1,2,1,0 0,0,2,1,1,3,1,0,1,1,1,1,1,0 2,0,14,0,4,7,3,0,0,1,1,2,1,0 0,0,3,2,0,1,2,0,1,1,1,1,1,0 0,0,1,2,2,8,1,0,1,1,1,2,1,0 1,0,0,3,0,3,2,0,1,1,1,0,1,1 1,1,1,2,0,4,2,0,1,1,1,1,1,0 0,0,3,2,2,2,3,0,1,1,1,0,1,0 1,0,0,3,2,7,3,0,0,1,1,2,1,0 0,0,1,2,2,8,1,0,0,1,1,2,1,0 1,0,3,2,0,4,2,0,1,1,1,1,1,1 2,0,0,3,0,8,2,0,1,1,1,0,1,0 1,5,0,3,0,3,2,0,1,1,1,0,1,0 0,0,0,3,2,3,3,0,1,1,1,1,1,1 1,0,1,2,2,4,3,0,0,1,1,2,1,0 1,4,0,3,1,5,5,4,0,1,1,2,1,0 0,0,10,3,2,3,3,0,0,1,1,0,1,0 0,0,3,2,2,2,1,0,0,1,1,2,1,0 1,0,12,1,2,7,3,0,1,1,1,0,1,0 1,0,3,2,1,10,3,0,1,1,1,2,1,0 1,0,5,2,0,4,0,0,0,1,1,2,1,0 0,2,10,3,0,3,2,0,1,1,1,1,1,1 1,1,0,3,2,3,3,0,1,1,1,1,1,0 0,3,0,3,3,5,3,0,1,1,1,0,1,0 1,4,3,2,0,1,2,0,1,1,1,0,1,0 1,0,1,2,0,7,2,0,1,1,1,0,1,0 1,0,10,3,2,0,3,0,0,1,1,0,1,0 2,0,12,1,0,1,2,0,1,1,1,0,1,1 0,0,1,2,2,3,1,0,0,1,1,2,1,0 1,4,0,3,0,12,2,0,1,1,1,1,1,1 1,0,3,2,0,6,2,0,1,1,1,1,1,0 1,2,1,2,0,4,2,0,1,1,1,1,1,1 1,0,3,2,1,7,5,0,1,1,1,2,1,0 1,1,0,3,0,4,2,0,1,1,1,1,1,1 1,1,3,2,2,5,3,0,1,1,1,1,1,0 0,0,9,1,2,8,1,0,0,1,1,2,1,0 0,0,0,3,2,4,3,0,0,1,1,1,1,0 0,0,0,3,2,4,1,0,1,1,1,0,1,0 0,4,1,2,0,12,2,4,1,1,1,0,1,0 2,5,1,2,3,8,3,0,0,1,1,1,1,0 2,0,12,1,1,10,3,0,1,1,1,2,1,0 1,5,3,2,2,8,5,4,0,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,1 1,2,3,2,0,9,2,0,1,1,1,1,1,0 0,5,1,2,0,8,0,0,0,1,1,2,1,0 2,2,1,2,0,4,2,0,1,1,1,2,1,1 0,0,1,2,0,1,2,1,1,1,1,0,1,1 0,0,10,3,0,5,2,0,1,1,1,0,1,0 0,0,5,2,2,6,3,0,1,1,1,1,1,0 1,3,13,3,0,5,2,1,1,1,1,0,1,1 0,4,0,3,2,5,1,1,0,1,1,2,1,0 0,0,9,1,2,2,1,0,0,1,1,2,1,0 0,0,1,2,2,2,3,0,1,1,1,2,1,0 1,0,1,2,1,1,3,0,1,1,1,2,1,0 0,0,6,2,2,0,3,0,1,1,1,0,1,0 0,0,0,3,0,3,2,0,1,1,1,0,1,0 0,0,9,1,2,3,1,0,0,1,1,2,1,0 1,0,6,2,1,6,3,0,0,1,1,0,1,0 0,4,14,0,2,6,4,0,1,1,1,0,1,1 2,0,1,2,1,0,3,0,1,1,1,0,1,0 1,0,3,2,0,2,2,0,1,1,1,0,1,1 0,0,3,2,2,3,3,0,0,1,1,2,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,0 0,0,3,2,0,7,1,0,1,1,1,0,1,0 0,0,2,1,2,3,1,4,0,1,1,2,1,0 1,1,3,2,0,3,2,0,1,1,1,1,1,1 1,0,13,3,0,5,2,0,1,1,1,0,1,1 0,0,3,2,1,8,5,0,0,1,1,2,1,0 1,0,15,0,2,2,3,0,0,1,1,2,1,0 1,0,7,1,0,7,2,0,1,1,1,1,1,0 2,0,3,2,1,8,3,0,0,1,1,0,1,0 0,0,1,2,2,0,1,0,0,1,1,2,1,0 1,0,6,2,0,4,2,0,1,1,1,1,1,1 0,0,1,2,2,4,5,4,0,1,1,0,1,0 1,2,4,3,0,5,2,0,1,1,1,1,1,1 1,0,3,2,0,4,2,2,1,1,1,0,1,0 1,4,1,2,1,2,5,0,0,1,1,0,1,0 1,0,3,2,0,3,2,0,1,1,1,0,1,1 1,0,5,2,1,3,1,0,1,1,1,1,1,0 0,0,1,2,0,4,2,0,1,1,1,1,1,1 0,0,6,2,2,0,3,4,1,1,1,0,1,0 1,0,4,3,0,4,2,0,1,1,1,0,1,1 1,0,3,2,3,8,3,0,0,1,1,2,1,0 0,0,6,2,0,9,2,0,1,1,1,1,1,0 1,5,0,3,1,12,3,0,1,1,1,0,1,0 0,0,3,2,3,1,3,2,1,1,1,2,1,0 0,0,3,2,2,7,3,0,1,1,1,1,1,0 2,1,3,2,1,9,5,0,0,1,1,2,1,0 0,0,5,2,1,1,3,0,1,1,1,1,1,1 0,1,1,2,0,9,2,0,1,1,1,1,1,1 1,3,0,3,4,4,5,0,0,1,1,0,1,1 0,0,10,3,2,5,3,0,0,1,1,0,1,0 0,0,0,3,0,2,2,2,1,1,1,2,1,1 1,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,3,2,0,7,2,0,1,1,1,0,1,0 1,1,0,3,0,3,0,0,0,1,1,1,1,0 1,1,0,3,2,9,1,0,1,1,1,2,1,0 0,0,3,2,2,2,1,0,0,1,1,2,1,0 1,0,13,3,2,7,3,0,0,1,1,0,1,1 1,2,3,2,0,2,2,0,1,1,1,2,1,0 1,2,4,3,0,5,2,0,1,1,1,1,1,1 2,0,12,1,4,2,3,0,0,1,1,2,1,0 1,3,1,2,0,8,2,0,1,1,1,0,1,1 0,0,3,2,2,3,1,0,1,1,1,0,1,0 2,6,1,2,0,8,0,0,0,1,1,2,1,0 0,0,3,2,2,1,4,3,1,1,1,0,1,0 0,0,2,1,0,1,2,0,1,1,1,2,1,0 1,4,0,3,0,2,2,0,1,1,1,0,1,1 1,4,10,3,0,5,2,0,1,1,1,1,1,1 0,0,10,3,0,5,2,0,1,1,1,1,1,1 1,0,3,2,0,3,2,0,1,1,1,0,1,0 1,0,6,2,5,3,5,4,0,1,1,2,1,0 2,0,3,2,0,12,2,0,1,1,1,2,1,0 1,4,1,2,0,12,2,0,1,1,1,1,1,1 1,0,1,2,0,1,2,0,1,1,1,2,1,1 0,0,5,2,2,5,1,4,1,1,1,2,1,0 0,0,3,2,0,7,2,0,1,1,1,1,1,0 0,4,1,2,2,12,1,0,1,1,1,1,1,0 3,0,3,2,4,8,5,0,0,1,1,2,1,0 2,0,9,1,1,7,3,0,0,1,1,0,1,0 1,0,3,2,2,6,3,0,1,1,1,0,1,0 1,0,1,2,1,8,3,0,0,1,1,1,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,0 0,0,2,1,2,2,1,0,1,1,1,2,1,0 2,0,3,2,0,10,2,0,1,1,1,1,1,0 0,0,0,3,2,4,3,0,1,1,1,2,1,0 1,0,5,2,2,4,3,1,0,1,1,1,1,0 0,0,0,3,2,5,1,4,0,1,1,0,1,0 2,4,13,3,0,4,2,0,1,1,1,1,1,1 0,0,7,1,2,7,1,4,1,1,1,2,1,0 0,0,6,2,2,10,3,0,1,1,1,0,1,0 0,0,3,2,2,2,3,0,0,1,1,1,1,0 1,0,1,2,0,10,2,0,1,1,1,1,1,1 0,0,3,2,1,2,3,0,0,1,1,0,1,0 1,0,0,3,0,0,2,0,1,1,1,0,1,0 0,0,1,2,0,10,2,0,1,1,1,1,1,1 1,0,1,2,1,7,3,0,0,1,1,0,1,0 1,0,3,2,0,4,0,0,0,1,1,2,1,1 1,0,1,2,1,8,5,0,0,1,1,0,1,0 1,0,0,3,0,5,2,0,1,1,1,0,1,0 2,0,10,3,0,5,2,0,1,1,1,1,1,0 2,4,8,0,0,4,2,0,1,1,1,0,1,0 1,4,3,2,0,12,2,0,1,1,1,0,1,1 2,0,3,2,1,7,3,0,1,1,1,0,1,0 0,0,1,2,0,3,2,0,1,1,1,1,1,1 0,0,11,0,0,6,4,0,1,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,1 1,0,12,1,0,1,2,0,1,1,1,0,1,0 2,0,10,3,1,5,3,0,0,1,1,0,1,1 0,0,9,1,5,6,5,0,1,1,1,2,1,0 1,0,1,2,1,7,1,0,1,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,1,1,0 0,3,3,2,2,13,3,0,1,1,1,2,1,0 0,0,0,3,0,1,2,0,1,1,1,0,1,1 2,0,3,2,4,3,3,0,0,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,0 2,5,3,2,0,5,2,0,1,1,1,0,1,0 0,4,1,2,2,12,4,0,0,1,1,1,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 1,5,1,2,1,8,1,0,1,1,1,0,1,0 0,5,1,2,2,2,1,0,0,1,1,2,1,0 1,0,13,3,0,5,2,0,1,1,1,1,1,1 0,0,0,3,2,5,3,1,1,1,1,0,1,0 0,0,12,1,1,1,3,0,1,1,1,2,1,0 0,0,0,3,0,4,2,0,1,1,1,0,1,0 0,0,9,1,0,7,2,0,1,1,1,0,1,0 1,0,3,2,1,1,3,0,0,1,1,1,1,0 0,0,3,2,0,1,2,0,1,1,1,1,1,0 1,2,1,2,0,4,2,0,1,1,1,1,1,1 0,0,14,0,5,9,3,0,1,1,1,0,1,0 0,0,3,2,2,2,5,4,0,1,1,0,1,0 0,0,0,3,2,5,3,1,1,1,1,1,1,0 0,4,3,2,1,10,3,0,0,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 3,1,10,3,4,3,3,0,1,1,1,1,1,0 3,1,0,3,4,1,3,0,1,1,1,2,1,1 0,0,1,2,0,7,2,4,1,1,1,0,1,0 0,0,0,3,5,8,3,0,0,1,1,1,1,0 0,0,9,1,2,2,1,0,1,1,1,2,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 1,5,0,3,0,8,0,0,0,1,1,2,1,1 1,0,0,3,0,10,2,0,1,1,1,1,1,0 1,0,2,1,2,1,3,4,0,1,1,0,1,0 1,0,6,2,0,1,2,0,1,1,1,0,1,0 2,0,8,0,5,7,3,0,1,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,12,1,1,10,5,0,1,1,1,1,1,0 0,0,6,2,1,8,3,0,0,1,1,0,1,0 1,1,6,2,0,5,2,0,1,1,1,2,1,0 0,0,1,2,2,8,1,0,1,1,1,2,1,0 0,0,1,2,1,8,5,0,0,1,1,1,1,0 0,0,1,2,0,4,2,0,1,1,1,1,1,1 1,0,15,0,0,7,4,4,1,1,1,1,1,0 2,5,3,2,0,1,2,0,1,1,1,0,1,0 2,4,10,3,2,5,3,0,0,1,1,1,1,0 2,0,3,2,0,1,2,0,1,1,1,0,1,0 1,1,1,2,0,3,2,0,1,1,1,0,1,0 1,0,6,2,0,1,2,0,1,1,1,1,1,0 1,0,10,3,0,5,2,0,1,1,1,0,1,1 1,0,3,2,2,3,5,0,0,1,1,0,1,0 3,4,8,0,0,12,2,0,1,1,1,0,1,0 1,0,3,2,2,3,1,0,1,1,1,0,1,0 0,0,3,2,2,1,3,0,1,1,1,1,1,0 1,1,4,3,2,5,3,1,1,1,1,0,1,1 1,1,0,3,0,4,2,0,1,1,1,1,1,1 1,0,1,2,0,4,2,0,1,1,1,1,1,1 0,0,0,3,2,4,3,0,0,1,1,0,1,0 0,0,6,2,2,2,3,0,0,1,1,0,1,0 2,0,3,2,0,6,2,0,1,1,1,0,1,1 1,0,3,2,1,1,3,1,0,1,1,0,1,0 0,0,3,2,0,10,2,0,1,1,1,1,1,0 1,0,3,2,3,2,3,0,0,1,1,0,1,0 0,0,3,2,2,1,1,0,1,1,1,2,1,0 1,5,1,2,1,4,3,0,0,1,1,0,1,0 2,0,7,1,0,2,2,4,1,1,1,1,1,0 1,4,3,2,1,8,5,0,0,1,1,0,1,0 0,3,0,3,2,5,3,0,1,1,1,1,1,0 2,0,1,2,0,1,2,0,1,1,1,1,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 2,3,3,2,0,3,0,0,0,1,1,0,1,1 0,0,1,2,2,8,4,0,0,1,1,2,1,0 1,0,5,2,3,0,5,0,0,1,1,2,1,0 1,0,1,2,0,2,2,0,1,1,1,1,1,1 2,0,1,2,0,3,2,0,1,1,1,0,1,0 2,0,3,2,3,12,3,0,1,1,1,1,1,0 0,0,9,1,2,8,1,0,1,1,1,2,1,0 1,0,0,3,2,8,3,0,1,1,1,0,1,0 0,1,3,2,1,2,3,0,1,1,1,2,1,0 0,0,3,2,2,1,3,0,1,1,1,1,1,0 2,0,3,2,1,0,3,4,0,1,1,0,1,0 1,0,3,2,3,8,5,0,0,1,1,0,1,0 0,0,3,2,2,2,4,0,1,1,1,2,1,0 1,0,0,3,0,3,2,0,1,1,1,0,1,1 1,4,1,2,0,12,2,0,1,1,1,0,1,1 1,4,8,0,2,2,4,4,0,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,1,1,1 1,0,11,0,0,7,2,0,1,1,1,0,1,0 0,0,2,1,0,2,2,0,1,1,1,0,1,0 0,0,1,2,2,8,1,0,0,1,1,0,1,0 0,0,1,2,2,3,1,0,1,1,1,1,1,0 0,0,0,3,2,3,3,0,1,1,1,0,1,0 0,0,1,2,0,3,2,0,1,1,1,0,1,0 0,0,3,2,2,3,3,0,0,1,1,2,1,0 0,0,3,2,2,1,1,0,1,1,1,1,1,0 2,0,1,2,1,2,3,4,1,1,1,0,1,0 0,0,3,2,1,2,5,0,0,1,1,1,1,0 2,1,3,2,0,1,2,0,1,1,1,1,1,1 0,0,5,2,0,1,2,0,1,1,1,1,1,1 0,0,1,2,2,3,3,0,0,1,1,1,1,0 0,0,0,3,2,5,3,0,0,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,0,3,2,4,3,0,0,1,1,1,1,0 0,0,3,2,0,2,0,4,0,1,1,2,1,0 1,0,3,2,1,2,5,0,0,1,1,2,1,0 2,0,2,1,4,6,3,0,0,1,1,2,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,0 0,0,11,0,0,7,0,2,0,1,1,2,1,0 1,0,3,2,1,2,5,0,0,1,1,2,1,0 1,3,0,3,0,8,0,1,0,1,1,0,1,0 1,4,13,3,1,4,3,0,0,1,1,1,1,1 2,1,8,0,0,9,2,0,1,1,1,1,1,0 1,0,8,0,1,7,3,0,0,1,1,1,1,0 1,0,15,0,1,2,3,3,1,1,1,1,1,0 1,1,0,3,0,5,2,0,1,1,1,1,1,0 0,0,3,2,2,6,5,0,0,1,1,2,1,0 0,0,3,2,0,10,2,0,1,1,1,0,1,0 1,0,4,3,0,5,2,0,1,1,1,1,1,1 0,0,3,2,2,1,3,0,1,1,1,1,1,0 2,1,10,3,0,4,2,0,1,1,1,2,1,1 0,0,0,3,2,5,1,0,1,1,1,0,1,0 0,1,1,2,5,1,1,0,1,1,1,1,1,1 1,0,1,2,0,10,2,0,1,1,1,1,1,1 0,0,1,2,2,2,3,4,1,1,1,0,1,0 0,0,3,2,2,3,1,0,0,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 2,0,3,2,4,1,3,4,0,1,1,1,1,0 1,0,3,2,4,7,5,4,0,1,1,2,1,0 0,0,12,1,2,2,1,0,1,1,1,2,1,0 2,0,8,0,0,1,2,0,1,1,1,0,1,0 1,0,7,1,0,10,2,4,1,1,1,0,1,0 1,0,1,2,3,4,5,0,0,1,1,2,1,0 0,0,1,2,0,3,2,0,1,1,1,2,1,0 1,0,1,2,0,3,2,0,1,1,1,1,1,1 1,0,1,2,1,8,3,0,0,1,1,0,1,0 1,1,0,3,0,3,2,0,1,1,1,1,1,1 0,1,2,1,5,1,3,0,1,1,1,2,1,0 0,0,10,3,0,0,2,1,1,1,1,1,1,1 1,0,0,3,0,5,2,0,1,1,1,1,1,1 3,0,0,3,0,4,2,0,1,1,1,2,1,0 2,0,3,2,4,8,3,0,0,1,1,2,1,0 0,0,0,3,2,7,3,0,0,1,1,2,1,0 1,2,3,2,0,1,2,0,1,1,1,1,1,1 2,4,3,2,0,2,2,0,1,1,1,0,1,0 1,2,0,3,0,4,2,0,1,1,1,1,1,1 2,0,3,2,4,4,3,0,0,1,1,2,1,0 1,0,4,3,0,5,2,0,1,1,1,1,1,1 2,0,7,1,0,1,2,0,1,1,1,1,1,0 1,1,3,2,2,4,3,0,1,1,1,1,1,0 1,0,13,3,1,5,3,0,0,1,1,1,1,0 0,0,1,2,1,6,3,0,1,1,1,1,1,0 0,0,10,3,0,5,2,0,1,1,1,1,1,0 1,3,10,3,1,5,5,0,0,1,1,0,1,0 1,0,5,2,0,1,2,0,1,1,1,1,1,1 0,0,3,2,2,6,5,0,1,1,1,1,1,0 0,0,9,1,0,1,2,0,1,1,1,1,1,0 0,0,5,2,2,2,1,0,1,1,1,0,1,0 2,5,8,0,0,2,0,4,0,1,1,0,1,0 1,0,10,3,0,4,2,0,1,1,1,0,1,1 1,0,6,2,3,3,5,0,0,1,1,0,1,0 0,0,1,2,0,5,2,0,1,1,1,0,1,0 0,0,1,2,2,2,3,0,0,1,1,2,1,0 1,0,1,2,1,4,3,0,0,1,1,0,1,0 0,0,3,2,0,7,0,0,0,1,1,0,1,0 0,0,1,2,0,2,1,1,0,1,1,2,1,0 1,0,1,2,0,3,2,0,1,1,1,1,1,0 0,0,1,2,2,4,1,0,1,1,1,0,1,0 2,0,3,2,0,3,2,4,1,1,1,0,1,0 0,0,3,2,1,8,5,4,0,1,1,0,1,0 0,0,2,1,1,7,5,0,0,1,1,0,1,0 0,0,1,2,2,1,3,0,1,1,1,1,1,0 0,0,2,1,2,5,1,0,1,1,1,2,1,0 0,0,3,2,2,2,3,0,0,1,1,2,1,0 2,0,3,2,0,10,2,0,1,1,1,0,1,0 0,0,3,2,2,1,4,4,1,1,1,0,1,0 0,0,2,1,1,10,5,0,1,1,1,1,1,0 2,0,7,1,0,2,2,0,1,1,1,0,1,0 0,4,0,3,0,5,2,0,1,1,1,1,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,10,3,1,3,3,0,0,1,1,1,1,1 0,0,12,1,2,8,3,4,1,1,1,0,1,0 1,0,6,2,0,1,2,0,1,1,1,1,1,1 1,0,0,3,0,5,2,0,1,1,1,0,1,0 1,0,12,1,1,2,3,4,0,1,1,2,1,0 0,0,3,2,3,3,3,0,0,1,1,1,1,0 0,4,0,3,2,8,1,4,0,1,1,0,1,0 0,0,3,2,2,7,1,0,1,1,1,0,1,0 1,0,10,3,0,5,0,0,0,1,1,2,1,1 1,0,6,2,0,1,2,4,1,1,1,1,1,0 2,3,12,1,0,1,2,0,1,1,1,0,1,0 0,0,6,2,1,8,5,0,0,1,1,2,1,0 1,0,8,0,0,1,2,0,1,1,1,0,1,0 2,4,3,2,0,1,2,0,1,1,1,0,1,1 1,0,1,2,0,4,2,0,1,1,1,1,1,1 0,0,3,2,2,2,5,0,0,1,1,1,1,0 0,0,3,2,0,1,2,4,1,1,1,0,1,0 2,0,2,1,0,3,2,0,1,1,1,0,1,0 0,0,3,2,1,10,3,0,1,1,1,1,1,0 0,0,5,2,2,7,4,0,0,1,1,2,1,0 0,0,12,1,0,10,2,0,1,1,1,0,1,0 0,0,1,2,2,8,1,0,1,1,1,0,1,0 0,0,3,2,0,7,0,0,0,1,1,0,1,0 0,0,3,2,3,3,5,0,0,1,1,2,1,0 0,0,13,3,0,5,2,0,1,1,1,1,1,1 2,0,0,3,0,4,2,1,1,1,1,1,1,1 1,0,1,2,1,8,5,0,0,1,1,2,1,0 0,0,9,1,2,12,1,4,1,1,1,2,1,0 0,0,0,3,2,4,3,0,0,1,1,1,1,1 0,0,3,2,2,1,3,4,1,1,1,1,1,0 1,0,0,3,1,5,5,4,0,1,1,1,1,1 1,5,3,2,3,8,1,0,0,1,1,0,1,0 1,4,5,2,1,5,5,0,0,1,1,1,1,0 0,0,10,3,1,2,3,3,0,1,1,2,1,0 1,4,5,2,0,8,0,0,0,1,1,2,1,1 1,0,5,2,1,0,3,0,0,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,0 2,1,4,3,2,5,3,0,1,1,1,1,1,0 1,5,1,2,1,8,4,0,0,1,1,0,1,0 1,1,1,2,0,1,2,0,1,1,1,1,1,0 0,0,12,1,0,6,2,2,1,1,1,0,1,0 1,0,6,2,0,3,2,0,1,1,1,1,1,0 0,0,10,3,2,0,3,1,1,1,1,2,1,0 1,0,10,3,0,4,2,0,1,1,1,0,1,1 0,0,1,2,2,12,3,0,1,1,1,0,1,0 0,0,5,2,0,0,0,0,0,1,1,2,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,1 2,0,3,2,4,8,5,0,0,1,1,0,1,0 0,0,3,2,2,8,1,0,1,1,1,2,1,0 1,2,3,2,0,4,0,0,0,1,1,0,1,1 ================================================ FILE: ML/data/adult/adult_deal_value.test ================================================ 0,0,2,1,2,7,1,4,1,1,1,0,1,0 1,0,3,2,0,9,2,0,1,1,1,1,1,0 0,4,5,2,0,12,2,0,1,1,1,0,1,1 1,0,1,2,0,7,2,4,1,1,1,0,1,1 0,0,12,1,2,2,3,0,1,1,1,2,1,0 2,1,4,3,0,5,2,0,1,1,1,2,1,1 0,0,1,2,2,2,5,0,0,1,1,0,1,0 2,0,8,0,0,1,2,0,1,1,1,2,1,0 2,0,3,2,0,7,2,0,1,1,1,0,1,1 1,3,0,3,0,8,2,0,1,1,1,0,1,0 0,0,3,2,2,8,3,0,0,1,1,2,1,0 1,0,3,2,0,7,2,0,1,1,1,1,1,1 1,0,10,3,0,4,2,0,1,1,1,1,1,1 0,5,1,2,2,2,1,0,1,1,1,2,1,0 1,0,3,2,0,8,0,0,0,1,1,2,1,0 1,0,3,2,4,7,5,0,0,1,1,2,1,0 0,0,0,3,0,0,2,0,1,1,1,1,1,1 0,0,1,2,2,2,1,4,0,1,1,2,1,0 0,0,0,3,2,5,3,0,1,1,1,1,1,0 0,0,0,3,0,5,2,0,1,1,1,0,1,0 1,1,3,2,0,1,2,0,1,1,1,1,1,1 0,0,3,2,2,8,1,0,1,1,1,2,1,0 0,0,3,2,3,7,5,4,1,1,1,1,1,0 2,0,3,2,0,1,2,0,1,1,1,2,1,0 0,1,1,2,2,5,3,0,1,1,1,1,1,0 1,5,1,2,0,4,2,4,1,1,1,2,1,1 2,1,2,1,4,2,5,0,0,1,1,1,1,0 0,1,0,3,2,3,3,0,1,1,1,1,1,0 0,4,1,2,0,12,2,0,1,1,1,0,1,0 0,0,3,2,1,4,5,0,0,1,1,0,1,0 1,4,0,3,0,5,2,0,1,1,1,0,1,1 0,0,14,0,2,11,3,0,1,1,1,1,1,0 0,0,12,1,2,7,3,0,1,1,1,0,1,0 0,0,3,2,2,1,1,0,1,1,1,0,1,0 2,0,10,3,0,5,2,0,1,1,1,1,1,1 1,2,6,2,0,3,2,0,1,1,1,1,1,1 1,0,3,2,0,9,2,0,1,1,1,0,1,0 0,0,2,1,0,2,2,0,1,1,1,0,1,0 0,5,1,2,2,9,1,0,1,1,1,2,1,0 0,0,6,2,0,5,0,0,0,1,1,2,1,1 1,0,8,0,0,1,2,0,1,1,1,0,1,0 2,0,1,2,0,10,2,0,1,1,1,1,1,0 1,0,2,1,3,11,3,4,0,1,1,2,1,0 2,2,3,2,4,4,3,0,0,1,1,1,1,0 0,0,1,2,2,2,1,0,1,1,1,2,1,0 1,0,3,2,1,6,1,4,1,1,1,0,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 0,0,3,2,2,2,3,0,1,1,1,1,1,1 1,0,7,1,5,4,3,0,1,1,1,1,1,0 0,0,1,2,2,8,1,0,0,1,1,0,1,0 2,0,3,2,0,1,2,0,1,1,1,0,1,0 0,4,0,3,0,4,2,0,1,1,1,1,1,1 1,2,3,2,0,4,2,0,1,1,1,1,1,1 0,0,3,2,0,6,2,0,1,1,1,0,1,0 0,0,0,3,2,4,3,0,0,1,1,1,1,0 1,0,1,2,1,3,3,0,1,1,1,0,1,0 0,0,10,3,2,4,3,0,0,1,1,0,1,0 0,0,3,2,2,7,1,0,0,1,1,0,1,0 1,4,3,2,1,8,3,0,0,1,1,0,1,0 1,2,5,2,0,1,2,0,1,1,1,1,1,1 0,0,1,2,2,2,1,0,1,1,1,2,1,0 1,0,3,2,3,10,3,0,1,1,1,0,1,0 1,0,3,2,0,3,2,0,1,1,1,1,1,0 2,0,1,2,0,4,2,0,1,1,1,1,1,1 1,0,6,2,0,0,2,0,1,1,1,0,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,1,2,3,6,3,0,0,1,1,0,1,0 1,0,1,2,0,1,2,3,1,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,1,1,0 2,2,3,2,0,3,2,0,1,1,1,2,1,0 1,0,3,2,0,10,2,0,1,1,1,0,1,0 0,0,1,2,2,8,3,0,0,1,1,0,1,0 1,2,1,2,0,7,2,0,1,1,1,1,1,0 0,0,0,3,2,4,3,0,1,1,1,0,1,0 0,0,1,2,3,2,3,0,1,1,1,0,1,0 0,1,1,2,0,1,2,0,1,1,1,1,1,0 1,0,3,2,3,7,3,0,0,1,1,1,1,0 0,3,2,1,2,2,1,0,0,1,1,2,1,0 2,0,3,2,0,3,2,0,1,1,1,1,1,1 0,3,1,2,2,13,3,0,1,1,1,0,1,0 2,0,0,3,2,4,3,0,0,1,1,2,1,0 1,3,8,0,2,2,3,4,1,1,1,2,1,0 0,0,10,3,0,5,0,0,0,1,1,2,1,1 2,3,0,3,1,8,3,0,1,1,1,0,1,0 0,0,10,3,2,2,3,2,1,1,1,0,1,0 0,0,3,2,2,6,1,0,1,1,1,0,1,0 0,0,0,3,2,4,1,0,0,1,1,0,1,0 1,0,12,1,0,9,2,0,1,1,1,0,1,0 2,0,3,2,0,10,2,0,1,1,1,0,1,1 0,0,3,2,2,8,3,0,0,1,1,0,1,0 0,0,1,2,2,8,5,4,0,1,1,2,1,0 0,0,1,2,2,10,1,4,1,1,1,2,1,0 2,1,7,1,4,2,3,0,0,1,1,0,1,0 1,4,3,2,4,8,5,0,0,1,1,2,1,0 1,0,12,1,3,7,3,0,0,1,1,0,1,0 1,4,3,2,0,12,2,0,1,1,1,0,1,0 0,0,3,2,2,10,1,0,1,1,1,0,1,0 0,0,1,2,2,6,1,4,1,1,1,2,1,0 0,0,3,2,2,2,3,0,0,1,1,2,1,0 0,0,3,2,2,7,1,0,0,1,1,1,1,0 0,0,1,2,0,1,2,0,1,1,1,0,1,0 0,0,6,2,0,4,2,0,1,1,1,0,1,1 1,0,1,2,0,6,2,0,1,1,1,0,1,0 0,0,3,2,2,6,5,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,2,1,2,2,3,0,0,1,1,2,1,0 1,0,3,2,5,8,5,0,0,1,1,0,1,0 1,0,0,3,1,3,5,0,0,1,1,0,1,1 0,4,0,3,1,5,5,0,0,1,1,1,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 0,0,1,2,2,12,1,0,1,1,1,2,1,0 1,0,1,2,1,0,3,0,0,1,1,0,1,0 1,0,3,2,1,6,5,0,0,1,1,0,1,0 2,0,3,2,1,8,3,0,0,1,1,2,1,0 1,3,13,3,0,5,0,0,0,1,1,0,1,1 0,0,3,2,2,5,1,0,1,1,1,0,1,0 0,1,3,2,0,1,2,0,1,1,1,1,1,1 1,0,10,3,0,5,2,0,1,1,1,1,1,1 1,0,1,2,0,8,2,0,1,1,1,0,1,0 0,0,3,2,2,1,5,4,0,1,1,0,1,0 1,2,13,3,0,5,2,0,1,1,1,1,1,1 2,0,3,2,0,1,2,4,1,1,1,1,1,0 0,0,5,2,2,5,3,0,0,1,1,0,1,0 1,0,3,2,0,3,2,0,1,1,1,1,1,1 1,0,8,0,0,7,2,4,1,1,1,0,1,0 0,0,3,2,0,7,0,0,0,1,1,2,1,0 0,0,12,1,0,9,2,0,1,1,1,0,1,0 1,0,10,3,0,5,2,0,1,1,1,0,1,0 0,0,1,2,2,8,1,1,0,1,1,2,1,0 1,0,3,2,0,4,2,0,1,1,1,1,1,1 1,2,3,2,0,4,2,0,1,1,1,1,1,1 0,0,10,3,2,5,1,0,0,1,1,2,1,0 1,1,3,2,4,4,3,0,0,1,1,2,1,0 1,0,6,2,4,4,5,0,0,1,1,2,1,0 0,0,3,2,0,3,2,0,1,1,1,0,1,1 2,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,2,3,3,0,1,1,1,2,1,0 0,0,1,2,2,2,3,4,1,1,1,2,1,0 0,0,2,1,0,2,0,4,0,1,1,2,1,0 1,0,8,0,0,7,2,0,1,1,1,2,1,0 0,0,2,1,2,1,5,0,1,1,1,0,1,0 1,5,0,3,0,8,2,0,1,1,1,1,1,1 0,0,1,2,2,8,1,0,0,1,1,0,1,0 0,4,3,2,2,1,3,0,1,1,1,0,1,0 0,0,0,3,2,3,3,0,1,1,1,2,1,0 1,0,1,2,2,6,5,4,0,1,1,0,1,0 1,2,0,3,1,4,3,0,1,1,1,0,1,0 2,0,2,1,0,2,2,0,1,1,1,2,1,0 0,0,3,2,0,3,2,0,1,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,1,1,0 0,0,0,3,2,3,1,0,1,1,1,0,1,0 1,5,10,3,0,4,2,0,1,1,1,1,1,1 0,0,1,2,0,4,2,0,1,1,1,0,1,1 2,1,13,3,0,5,2,0,1,1,1,2,1,1 1,0,3,2,0,1,2,0,1,1,1,1,1,0 0,0,3,2,2,6,5,0,1,1,1,2,1,0 2,4,3,2,1,4,3,0,1,1,1,2,1,0 2,0,3,2,0,5,2,0,1,1,1,0,1,1 0,0,10,3,2,5,3,0,1,1,1,0,1,0 0,0,0,3,2,8,3,0,0,1,1,0,1,0 2,0,9,1,0,4,2,0,1,1,1,1,1,0 1,4,10,3,3,8,5,4,0,1,1,0,1,0 1,0,1,2,0,4,2,0,1,1,1,1,1,1 0,0,6,2,0,7,2,0,1,1,1,1,1,0 1,0,1,2,0,7,2,0,1,1,1,2,1,0 0,2,3,2,0,3,2,0,1,1,1,1,1,1 1,0,1,2,0,7,2,0,1,1,1,0,1,1 0,0,10,3,2,4,1,0,1,1,1,0,1,0 2,2,1,2,0,4,2,0,1,1,1,0,1,1 1,0,0,3,4,4,3,0,0,1,1,1,1,0 1,0,3,2,1,3,5,4,0,1,1,0,1,0 2,0,3,2,1,6,3,0,1,1,1,1,1,0 0,0,3,2,2,7,3,0,1,1,1,1,1,0 0,0,3,2,2,2,3,0,0,1,1,1,1,0 0,0,0,3,0,4,2,0,1,1,1,0,1,1 1,0,0,3,3,5,3,0,1,1,1,1,1,1 1,0,1,2,1,8,3,4,0,1,1,2,1,0 0,0,3,2,2,5,5,4,0,1,1,1,1,0 0,0,1,2,1,4,5,0,0,1,1,0,1,0 1,0,1,2,2,10,3,0,1,1,1,1,1,0 1,2,4,3,0,5,0,0,0,1,1,1,1,1 0,0,3,2,2,7,3,0,0,1,1,0,1,0 0,0,3,2,0,6,2,0,1,1,1,0,1,1 1,4,1,2,0,12,2,0,1,1,1,0,1,1 0,2,0,3,0,4,2,0,1,1,1,1,1,0 2,0,0,3,1,1,3,0,1,1,1,1,1,0 1,4,0,3,1,5,5,0,0,1,1,0,1,0 1,0,6,2,0,5,2,0,1,1,1,0,1,1 0,2,0,3,0,3,2,0,1,1,1,1,1,0 1,0,8,0,0,1,2,4,1,1,1,0,1,0 3,4,3,2,0,4,2,0,1,1,1,2,1,0 0,0,0,3,0,5,0,0,0,1,1,1,1,1 0,0,1,2,0,3,2,0,1,1,1,1,1,1 0,0,2,1,2,3,3,0,1,1,1,2,1,0 0,0,1,2,2,2,1,0,0,1,1,1,1,0 1,3,6,2,1,1,5,0,0,1,1,0,1,0 1,0,0,3,0,10,2,0,1,1,1,0,1,0 0,0,0,3,2,0,1,4,0,1,1,2,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,0 0,3,3,2,2,2,3,0,1,1,1,2,1,0 0,0,14,0,2,7,4,0,1,1,1,2,1,0 0,0,6,2,3,1,3,0,1,1,1,0,1,0 0,0,0,3,2,4,3,0,0,1,1,1,1,0 0,0,0,3,0,8,2,1,1,1,1,0,1,0 0,0,3,2,2,7,3,1,0,1,1,0,1,0 1,0,3,2,2,1,5,0,1,1,1,0,1,0 1,2,3,2,0,3,2,0,1,1,1,0,1,1 2,4,7,1,0,10,2,0,1,1,1,0,1,1 1,0,1,2,0,1,2,0,1,1,1,0,1,0 1,0,0,3,0,5,2,0,1,1,1,2,1,1 1,4,3,2,0,4,2,0,1,1,1,0,1,0 0,0,9,1,2,11,1,0,1,1,1,0,1,0 1,0,4,3,0,5,2,0,1,1,1,1,1,0 2,0,10,3,2,4,5,1,0,1,1,1,1,0 0,0,3,2,0,0,2,0,1,1,1,0,1,1 3,1,3,2,0,2,2,0,1,1,1,2,1,0 0,0,6,2,1,0,5,0,0,1,1,1,1,0 1,0,1,2,0,0,2,0,1,1,1,0,1,0 1,0,3,2,2,2,5,4,0,1,1,2,1,0 0,0,1,2,2,3,3,0,0,1,1,0,1,0 0,0,3,2,0,10,2,0,1,1,1,0,1,0 0,4,3,2,2,2,1,0,0,1,1,2,1,0 2,1,3,2,0,1,2,0,1,1,1,1,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 2,1,1,2,0,10,2,0,1,1,1,2,1,0 0,3,1,2,2,8,1,0,0,1,1,2,1,0 0,0,3,2,0,6,2,0,1,1,1,0,1,0 0,0,3,2,0,3,1,0,0,1,1,0,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,1 1,5,3,2,0,7,2,0,1,1,1,0,1,0 0,0,1,2,2,3,1,0,1,1,1,2,1,0 0,0,6,2,2,1,3,0,1,1,1,1,1,0 0,0,0,3,0,5,2,0,1,1,1,0,1,1 0,0,0,3,2,0,1,0,1,1,1,1,1,0 0,0,1,2,2,7,4,0,1,1,1,2,1,0 2,3,1,2,1,0,3,4,1,1,1,0,1,0 1,0,3,2,2,2,3,4,0,1,1,0,1,0 0,5,3,2,2,2,3,0,1,1,1,0,1,0 3,1,4,3,2,5,3,0,1,1,1,2,1,0 1,0,1,2,0,4,0,0,0,1,1,1,1,0 0,4,10,3,2,5,3,0,1,1,1,0,1,0 0,0,1,2,2,5,3,0,0,1,1,0,1,0 0,0,0,3,2,8,1,0,0,1,1,0,1,0 0,0,10,3,2,4,3,0,0,1,1,0,1,0 0,0,1,2,0,6,2,0,1,1,1,0,1,1 0,0,12,1,0,1,2,0,1,1,1,2,1,0 0,0,2,1,0,3,0,0,0,1,1,2,1,0 0,0,3,2,0,4,2,0,1,1,1,1,1,0 2,0,12,1,0,10,2,0,1,1,1,0,1,1 2,0,1,2,0,4,0,0,0,1,1,0,1,1 1,5,10,3,2,4,3,0,1,1,1,2,1,0 0,0,3,2,2,2,1,2,0,1,1,2,1,0 1,0,3,2,1,2,3,4,1,1,1,1,1,0 0,0,2,1,2,6,1,0,1,1,1,2,1,0 2,2,0,3,0,1,2,0,1,1,1,1,1,1 0,0,1,2,2,12,3,4,1,1,1,1,1,0 0,3,3,2,0,1,2,0,1,1,1,0,1,1 0,0,3,2,0,6,2,0,1,1,1,2,1,1 0,0,3,2,2,6,3,0,0,1,1,2,1,0 0,0,1,2,1,0,5,0,0,1,1,0,1,0 0,0,0,3,0,3,2,4,1,1,1,1,1,0 1,0,1,2,2,7,3,0,0,1,1,1,1,0 0,0,3,2,2,7,1,4,1,1,1,0,1,0 1,0,1,2,0,12,2,0,1,1,1,0,1,1 2,3,1,2,0,10,2,4,1,1,1,0,1,0 0,0,3,2,2,4,3,4,1,1,1,0,1,0 1,0,3,2,0,4,2,0,1,1,1,1,1,1 2,0,12,1,0,6,2,0,1,1,1,0,1,0 0,0,1,2,0,3,2,0,1,1,1,0,1,0 1,0,12,1,1,8,5,0,0,1,1,0,1,0 0,0,1,2,0,2,2,0,1,1,1,0,1,0 0,0,3,2,2,7,5,0,1,1,1,0,1,0 0,0,7,1,0,2,2,0,1,1,1,2,1,1 0,0,3,2,2,3,1,0,1,1,1,0,1,0 0,1,6,2,2,9,3,0,1,1,1,1,1,1 0,0,3,2,0,7,4,0,1,1,1,1,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,1 0,0,2,1,2,6,4,0,1,1,1,2,1,0 1,4,1,2,1,8,5,0,0,1,1,2,1,0 0,0,3,2,1,4,1,0,0,1,1,0,1,0 0,0,1,2,2,6,1,0,1,1,1,2,1,0 0,0,3,2,0,8,1,0,0,1,1,0,1,0 0,0,0,3,2,8,1,0,1,1,1,0,1,0 1,2,0,3,0,4,2,0,1,1,1,1,1,1 1,1,3,2,0,3,2,1,1,1,1,1,1,0 2,4,5,2,0,0,2,0,1,1,1,1,1,1 0,0,1,2,2,6,1,0,1,1,1,0,1,0 1,1,1,2,0,9,2,0,1,1,1,1,1,0 1,0,0,3,1,4,5,0,0,1,1,1,1,1 0,0,3,2,0,8,0,0,0,1,1,2,1,0 1,0,1,2,1,1,3,0,1,1,1,1,1,1 0,0,1,2,2,3,3,0,0,1,1,2,1,0 1,0,0,3,0,4,2,0,1,1,1,0,1,1 2,0,3,2,0,7,2,4,1,1,1,0,1,1 0,0,1,2,1,12,3,0,1,1,1,0,1,0 2,2,0,3,0,4,2,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,11,0,0,7,2,0,1,1,1,0,1,0 0,0,3,2,3,6,1,0,1,1,1,0,1,0 0,0,10,3,0,5,2,0,1,1,1,1,1,0 1,4,10,3,1,5,5,0,0,1,1,1,1,0 0,0,2,1,2,2,1,0,1,1,1,2,1,0 1,1,1,2,0,9,2,0,1,1,1,1,1,1 0,0,3,2,2,6,1,0,1,1,1,2,1,0 2,0,3,2,0,1,2,0,1,1,1,0,1,1 1,0,3,2,1,8,5,0,0,1,1,1,1,0 0,0,10,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,2,3,5,0,0,1,1,0,1,0 1,0,7,1,1,2,5,0,0,1,1,1,1,0 2,0,12,1,4,2,5,0,0,1,1,0,1,0 1,2,3,2,0,9,2,0,1,1,1,1,1,0 1,0,0,3,1,4,5,0,0,1,1,1,1,0 0,0,3,2,0,10,2,0,1,1,1,0,1,1 0,0,0,3,2,1,3,0,1,1,1,0,1,0 0,0,14,0,0,2,2,0,1,1,1,0,1,0 1,0,10,3,0,5,2,0,1,1,1,1,1,1 2,0,3,2,0,4,2,0,1,1,1,0,1,1 0,0,0,3,2,5,3,0,0,1,1,1,1,1 1,0,3,2,1,4,5,4,0,1,1,0,1,1 2,0,8,0,0,1,2,0,1,1,1,1,1,1 0,0,3,2,2,2,1,0,0,1,1,0,1,0 0,0,6,2,1,1,5,0,1,1,1,0,1,0 0,0,3,2,2,6,1,0,1,1,1,2,1,0 1,4,3,2,1,8,5,0,0,1,1,0,1,0 0,0,1,2,0,2,0,0,0,1,1,2,1,1 0,0,3,2,0,10,2,0,1,1,1,1,1,1 1,0,0,3,0,5,2,4,1,1,1,1,1,1 0,0,0,3,2,3,3,0,1,1,1,1,1,0 1,1,4,3,0,5,2,0,1,1,1,1,1,1 0,3,5,2,2,12,3,4,1,1,1,0,1,0 0,0,0,3,2,8,1,4,0,1,1,0,1,0 1,0,2,1,0,1,2,0,1,1,1,0,1,0 1,0,1,2,1,1,3,0,1,1,1,1,1,0 2,0,1,2,1,6,4,0,1,1,1,2,1,0 0,4,1,2,0,4,1,0,0,1,1,0,1,0 2,0,3,2,0,1,2,0,1,1,1,1,1,1 1,2,4,3,0,5,2,0,1,1,1,2,1,1 1,0,1,2,0,3,2,0,1,1,1,1,1,0 1,1,1,2,0,3,2,0,1,1,1,1,1,1 0,1,10,3,0,5,0,0,0,1,1,2,1,0 0,0,12,1,1,2,5,0,0,1,1,0,1,0 0,0,1,2,0,3,2,0,1,1,1,1,1,0 1,0,8,0,3,1,3,0,1,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 1,1,0,3,0,3,2,0,1,1,1,1,1,0 0,1,3,2,2,1,1,0,1,1,1,1,1,0 1,0,3,2,0,4,2,0,1,1,1,0,1,1 0,0,0,3,0,5,0,1,0,1,1,0,1,0 0,0,3,2,2,4,1,1,0,1,1,0,1,0 0,0,3,2,2,1,4,0,1,1,1,2,1,0 1,1,3,2,0,4,2,4,1,1,1,0,1,1 0,0,0,3,1,0,3,0,0,1,1,0,1,0 2,1,13,3,6,4,0,0,0,1,1,2,1,1 1,0,3,2,4,8,5,4,0,1,1,2,1,0 0,0,2,1,0,10,2,0,1,1,1,1,1,1 1,0,2,1,0,2,2,0,1,1,1,2,1,0 1,0,3,2,1,8,5,4,0,1,1,2,1,0 1,0,2,1,4,8,5,0,0,1,1,0,1,0 2,1,3,2,0,8,0,0,0,1,1,0,1,0 1,0,3,2,0,4,2,0,1,1,1,1,1,1 1,0,0,3,1,5,4,0,0,1,1,1,1,1 0,0,3,2,2,10,1,4,1,1,1,0,1,0 1,4,10,3,2,5,3,0,0,1,1,1,1,0 0,0,3,2,2,1,5,0,0,1,1,0,1,0 1,0,3,2,3,7,1,1,1,1,1,1,1,0 1,0,0,3,0,4,2,1,1,1,1,1,1,1 1,0,10,3,0,4,2,1,1,1,1,1,1,0 1,0,0,3,0,4,2,0,1,1,1,0,1,0 1,0,0,3,2,3,3,0,0,1,1,0,1,0 0,0,5,2,2,0,4,0,0,1,1,2,1,0 0,0,2,1,2,3,1,0,0,1,1,2,1,0 1,0,3,2,0,7,2,0,1,1,1,1,1,0 0,0,3,2,2,10,1,0,1,1,1,1,1,0 1,0,0,3,1,8,5,0,0,1,1,0,1,0 0,0,3,2,2,7,3,0,1,1,1,0,1,0 0,0,1,2,2,4,1,0,0,1,1,0,1,0 1,0,0,3,0,5,0,0,0,1,1,2,1,1 1,0,2,1,1,10,5,0,0,1,1,0,1,0 0,0,3,2,0,8,0,0,0,1,1,0,1,1 0,0,3,2,2,6,1,0,1,1,1,1,1,0 1,3,12,1,0,8,2,0,1,1,1,0,1,0 1,0,12,1,0,10,2,0,1,1,1,0,1,1 0,0,3,2,0,6,2,0,1,1,1,2,1,0 1,5,1,2,0,5,4,1,1,1,1,0,1,0 2,2,4,3,0,5,2,0,1,1,1,0,1,1 1,2,0,3,2,4,3,0,1,1,1,0,1,0 0,0,3,2,1,1,3,0,0,1,1,0,1,0 0,0,1,2,2,0,4,0,1,1,1,0,1,0 0,0,0,3,2,3,3,0,1,1,1,1,1,0 0,0,6,2,3,8,5,4,0,1,1,0,1,0 1,0,3,2,3,8,3,0,1,1,1,0,1,1 2,0,3,2,1,2,3,0,0,1,1,0,1,0 0,0,1,2,2,8,5,0,0,1,1,0,1,0 1,0,2,1,2,2,1,0,0,1,1,1,1,0 2,2,3,2,0,10,2,0,1,1,1,1,1,0 0,0,3,2,2,2,1,3,1,1,1,2,1,0 0,0,1,2,0,8,0,4,0,1,1,0,1,1 0,0,3,2,2,4,3,4,0,1,1,2,1,0 2,1,10,3,0,5,2,0,1,1,1,0,1,0 0,0,0,3,0,1,2,0,1,1,1,1,1,1 1,1,3,2,0,4,2,0,1,1,1,1,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,0,8,2,0,1,1,1,0,1,0 0,0,0,3,0,3,2,0,1,1,1,0,1,0 0,0,0,3,2,3,1,0,0,1,1,0,1,0 1,1,3,2,0,4,2,0,1,1,1,1,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 1,0,13,3,0,5,2,0,1,1,1,1,1,1 1,0,1,2,0,4,2,0,1,1,1,1,1,0 0,0,0,3,2,5,3,0,1,1,1,0,1,0 0,0,0,3,2,8,1,0,1,1,1,0,1,0 0,0,1,2,2,8,3,3,1,1,1,0,1,0 1,5,3,2,0,10,2,0,1,1,1,0,1,0 2,1,3,2,0,9,2,0,1,1,1,1,1,0 1,3,10,3,0,5,2,0,1,1,1,0,1,1 1,0,3,2,2,8,3,0,1,1,1,1,1,0 0,5,0,3,2,4,3,0,0,1,1,0,1,0 0,0,1,2,2,7,3,0,1,1,1,1,1,0 0,4,1,2,2,12,1,0,1,1,1,2,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,1 0,0,3,2,2,8,1,0,0,1,1,2,1,0 0,0,1,2,0,7,2,0,1,1,1,0,1,0 1,5,3,2,0,2,0,0,0,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,0,3,0,3,2,0,1,1,1,1,1,0 1,1,8,0,0,1,2,0,1,1,1,2,1,0 1,5,3,2,0,2,2,0,1,1,1,0,1,0 0,5,2,1,2,12,1,0,1,1,1,0,1,0 1,3,10,3,0,4,2,4,1,1,1,0,1,1 1,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,6,2,0,2,2,0,1,1,1,0,1,0 0,0,3,2,2,6,1,0,1,1,1,0,1,0 0,0,3,2,1,3,4,0,1,1,1,1,1,0 1,3,10,3,2,5,3,0,1,1,1,0,1,1 0,0,1,2,2,2,3,0,1,1,1,0,1,0 3,1,1,2,4,9,3,0,0,1,1,1,1,0 1,0,8,0,0,2,2,0,1,1,1,0,1,0 0,0,1,2,2,7,3,0,1,1,1,0,1,0 0,0,1,2,6,3,0,0,0,1,1,2,1,0 1,0,1,2,1,3,3,0,0,1,1,2,1,0 1,0,0,3,0,8,0,0,0,1,1,2,1,0 0,0,0,3,1,6,1,0,1,1,1,0,1,0 0,0,1,2,2,3,1,4,1,1,1,2,1,0 1,0,0,3,1,4,3,0,1,1,1,1,1,1 3,0,3,2,1,4,3,0,0,1,1,2,1,0 1,0,3,2,1,1,3,0,1,1,1,0,1,0 0,0,3,2,2,10,1,0,1,1,1,0,1,0 0,0,5,2,2,2,3,0,1,1,1,2,1,0 0,0,0,3,2,5,3,0,1,1,1,2,1,0 0,0,1,2,0,1,2,0,1,1,1,0,1,0 1,0,6,2,2,7,1,0,1,1,1,0,1,0 0,0,0,3,2,6,3,0,1,1,1,2,1,0 0,0,2,1,0,3,2,0,1,1,1,1,1,0 0,0,3,2,0,6,2,2,1,1,1,0,1,0 1,5,7,1,0,1,2,4,1,1,1,0,1,0 2,0,1,2,0,4,2,0,1,1,1,2,1,0 0,0,1,2,2,7,1,0,1,1,1,0,1,0 0,0,3,2,2,4,3,0,1,1,1,1,1,0 0,0,14,0,2,7,4,1,1,1,1,0,1,0 2,5,4,3,1,5,3,0,0,1,1,2,1,0 0,1,1,2,0,1,2,0,1,1,1,0,1,1 1,0,7,1,0,1,2,0,1,1,1,1,1,0 1,4,1,2,0,0,2,0,1,1,1,0,1,0 1,0,0,3,1,8,5,0,0,1,1,2,1,0 1,1,3,2,0,1,2,0,1,1,1,1,1,0 0,0,3,2,2,8,1,0,0,1,1,2,1,0 2,0,1,2,0,4,2,0,1,1,1,1,1,1 0,3,6,2,2,8,1,0,0,1,1,2,1,0 0,1,3,2,0,10,2,0,1,1,1,1,1,1 0,0,3,2,2,7,1,0,1,1,1,0,1,0 2,0,12,1,4,2,5,0,0,1,1,2,1,0 0,0,3,2,2,10,4,4,1,1,1,0,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 0,0,1,2,1,8,1,0,1,1,1,0,1,0 0,0,3,2,3,0,3,0,0,1,1,0,1,0 1,0,13,3,0,5,2,0,1,1,1,1,1,0 2,5,11,0,0,9,2,3,1,1,1,1,1,0 0,0,0,3,2,4,3,0,0,1,1,0,1,0 0,4,3,2,0,10,2,0,1,1,1,1,1,1 1,1,0,3,0,9,2,0,1,1,1,1,1,0 0,0,1,2,2,9,1,0,1,1,1,2,1,0 1,4,1,2,0,4,2,0,1,1,1,1,1,0 1,0,3,2,4,8,3,2,0,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,0,1,0 1,2,2,1,0,4,2,0,1,1,1,0,1,0 2,0,0,3,2,4,3,0,0,1,1,2,1,0 1,0,0,3,0,3,2,0,1,1,1,1,1,1 0,0,0,3,2,4,3,4,1,1,1,1,1,0 0,4,0,3,2,5,1,0,0,1,1,2,1,0 2,0,1,2,1,8,4,0,0,1,1,0,1,0 2,0,12,1,0,2,2,4,1,1,1,0,1,0 0,2,3,2,0,1,2,0,1,1,1,1,1,0 0,0,10,3,0,5,0,0,0,1,1,2,1,0 2,0,3,2,4,10,3,0,1,1,1,1,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,1 1,0,3,2,0,10,2,0,1,1,1,1,1,1 0,0,2,1,2,2,1,0,1,1,1,2,1,0 2,0,8,0,0,10,2,0,1,1,1,1,1,0 0,0,0,3,0,5,2,0,1,1,1,1,1,1 1,0,0,3,1,4,3,0,0,1,1,0,1,1 0,0,1,2,2,8,1,0,0,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,0,3,0,9,2,0,1,1,1,1,1,0 1,0,0,3,0,5,2,0,1,1,1,0,1,0 0,0,6,2,0,2,2,0,1,1,1,0,1,0 0,0,6,2,0,1,4,0,1,1,1,1,1,0 1,1,3,2,0,1,2,1,1,1,1,1,1,1 0,0,2,1,2,3,1,0,1,1,1,2,1,0 0,0,12,1,1,7,1,0,1,1,1,2,1,0 1,2,0,3,0,1,2,0,1,1,1,1,1,0 1,0,1,2,3,8,3,4,1,1,1,0,1,1 1,0,1,2,0,1,2,0,1,1,1,0,1,0 0,5,0,3,0,9,2,0,1,1,1,0,1,1 1,1,0,3,0,2,2,0,1,1,1,1,1,0 1,0,0,3,0,5,2,0,1,1,1,0,1,1 2,0,0,3,0,3,2,0,1,1,1,1,1,0 0,0,1,2,2,5,3,0,0,1,1,2,1,0 1,0,3,2,3,8,5,4,0,1,1,0,1,0 0,0,1,2,2,8,1,0,0,1,1,0,1,0 0,5,10,3,0,5,2,0,1,1,1,2,1,1 0,0,1,2,2,8,4,1,1,1,1,1,1,0 0,0,3,2,2,1,3,0,1,1,1,0,1,0 3,0,14,0,0,4,2,0,1,1,1,1,1,1 0,1,0,3,2,3,3,0,0,1,1,0,1,0 2,1,6,2,0,9,2,0,1,1,1,1,1,0 0,0,3,2,3,2,1,0,0,1,1,2,1,0 0,0,0,3,0,5,2,0,1,1,1,0,1,0 1,1,10,3,2,3,3,0,0,1,1,2,1,0 1,1,3,2,0,1,2,0,1,1,1,1,1,0 1,0,3,2,3,8,5,0,0,1,1,2,1,0 2,0,0,3,0,5,2,0,1,1,1,0,1,1 0,0,1,2,0,8,0,0,0,1,1,1,1,1 0,1,6,2,0,9,2,0,1,1,1,1,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,1 0,0,6,2,0,3,2,0,1,1,1,1,1,1 0,0,3,2,0,3,2,0,1,1,1,0,1,1 1,1,0,3,0,5,0,0,0,1,1,0,1,1 0,0,0,3,2,5,1,0,1,1,1,1,1,1 0,0,1,2,2,2,5,4,0,1,1,0,1,0 1,0,3,2,2,1,1,0,1,1,1,0,1,1 0,0,1,2,2,12,1,0,1,1,1,2,1,0 1,0,2,1,0,4,2,0,1,1,1,0,1,0 1,4,0,3,0,8,2,0,1,1,1,0,1,0 0,0,3,2,2,2,5,4,0,1,1,0,1,0 0,0,3,2,1,4,1,0,1,1,1,0,1,0 0,0,14,0,2,2,3,0,1,1,1,0,1,0 0,0,1,2,0,6,2,0,1,1,1,0,1,1 1,4,3,2,3,4,5,4,0,1,1,2,1,0 0,2,1,2,2,8,1,0,0,1,1,2,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 2,0,3,2,1,2,3,0,0,1,1,0,1,0 1,0,3,2,3,7,5,4,0,1,1,2,1,0 1,2,1,2,0,3,2,0,1,1,1,1,1,0 1,2,1,2,0,1,2,0,1,1,1,1,1,0 0,0,1,2,2,7,1,1,1,1,1,2,1,0 2,0,3,2,0,7,0,0,0,1,1,0,1,1 1,0,3,2,2,10,3,0,1,1,1,0,1,0 0,0,0,3,4,8,5,0,1,1,1,1,1,0 2,5,0,3,0,4,2,0,1,1,1,0,1,0 0,0,1,2,2,4,4,0,0,1,1,0,1,0 0,0,3,2,2,8,3,0,0,1,1,0,1,0 0,4,1,2,0,12,2,0,1,1,1,1,1,0 1,0,6,2,2,1,1,1,1,1,1,0,1,0 0,4,0,3,2,8,3,4,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,0 0,0,4,3,0,5,2,0,1,1,1,1,1,1 0,0,1,2,2,3,3,4,1,1,1,0,1,0 1,0,8,0,0,5,2,0,1,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,3,2,2,2,3,0,1,1,1,2,1,0 1,0,9,1,0,7,2,0,1,1,1,0,1,0 0,0,1,2,0,9,2,0,1,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,1,2,0,7,2,0,1,1,1,2,1,0 0,0,5,2,2,3,3,0,0,1,1,2,1,0 0,0,3,2,3,6,3,0,1,1,1,0,1,0 1,0,1,2,1,1,5,0,1,1,1,0,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 0,2,0,3,0,4,2,0,1,1,1,1,1,1 1,1,3,2,0,9,2,0,1,1,1,1,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,0 2,1,1,2,1,7,3,0,1,1,1,0,1,0 1,0,1,2,1,8,3,4,0,1,1,2,1,0 1,0,0,3,1,5,3,4,1,1,1,0,1,0 0,0,1,2,2,8,1,0,0,1,1,2,1,0 1,0,3,2,5,8,3,0,1,1,1,1,1,0 1,5,0,3,0,4,2,0,1,1,1,0,1,1 0,0,3,2,0,7,2,0,1,1,1,0,1,0 2,3,10,3,1,4,3,0,1,1,1,1,1,1 0,0,14,0,2,6,4,0,1,1,1,0,1,0 2,3,0,3,0,4,0,0,0,1,1,0,1,1 2,5,10,3,0,4,2,0,1,1,1,0,1,1 0,0,3,2,2,2,5,4,1,1,1,0,1,0 0,0,3,2,2,3,1,0,0,1,1,2,1,0 0,0,3,2,1,2,5,0,0,1,1,2,1,0 0,4,3,2,2,8,1,4,0,1,1,2,1,0 0,0,2,1,0,1,2,0,1,1,1,0,1,0 0,0,12,1,2,3,5,0,0,1,1,0,1,0 1,1,3,2,0,2,0,0,0,1,1,2,1,1 0,0,3,2,0,3,2,0,1,1,1,0,1,0 1,4,0,3,0,10,2,4,1,1,1,0,1,1 0,0,1,2,2,3,1,1,0,1,1,2,1,0 0,3,10,3,0,4,2,0,1,1,1,1,1,1 1,0,3,2,1,1,3,0,1,1,1,1,1,0 1,0,3,2,1,3,5,0,1,1,1,1,1,0 1,0,1,2,0,8,0,0,0,1,1,2,1,1 2,0,7,1,0,6,2,0,1,1,1,2,1,0 1,0,3,2,2,2,4,1,1,1,1,2,1,0 0,0,3,2,2,8,1,4,0,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,0 1,0,3,2,2,4,5,0,0,1,1,0,1,0 0,0,3,2,1,7,3,0,1,1,1,0,1,0 0,2,3,2,0,4,2,4,1,1,1,1,1,0 0,0,1,2,2,8,1,0,0,1,1,2,1,0 1,0,1,2,3,2,3,0,0,1,1,2,1,0 0,3,0,3,2,8,5,4,0,1,1,0,1,0 2,4,4,3,0,4,2,0,1,1,1,0,1,1 0,0,12,1,2,7,5,0,0,1,1,0,1,0 0,0,12,1,2,3,1,0,0,1,1,2,1,0 0,0,1,2,2,4,1,1,1,1,1,1,1,0 0,0,3,2,1,3,5,3,0,1,1,0,1,0 1,0,3,2,1,6,3,0,0,1,1,0,1,0 1,4,10,3,0,5,2,0,1,1,1,1,1,1 2,1,13,3,1,3,3,0,1,1,1,2,1,0 0,1,9,1,2,10,3,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,1,1,0 0,0,3,2,0,10,2,0,1,1,1,0,1,0 1,3,6,2,1,8,1,4,1,1,1,1,1,0 2,1,1,2,0,4,2,0,1,1,1,1,1,1 1,0,1,2,3,3,4,0,0,1,1,1,1,0 0,4,1,2,0,12,2,0,1,1,1,0,1,0 0,0,0,3,0,9,2,0,1,1,1,2,1,1 1,0,3,2,1,7,5,0,0,1,1,0,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,1 2,0,7,1,0,1,2,0,1,1,1,0,1,0 0,0,3,2,2,2,3,0,0,1,1,0,1,0 0,0,3,2,1,3,5,0,0,1,1,2,1,0 1,0,6,2,1,2,3,0,1,1,1,2,1,0 1,4,1,2,0,12,2,0,1,1,1,1,1,1 2,0,10,3,0,5,2,0,1,1,1,1,1,1 0,0,1,2,2,1,3,0,1,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,0 1,5,0,3,2,5,1,0,1,1,1,1,1,1 1,1,2,1,1,2,3,0,0,1,1,0,1,0 0,0,6,2,1,8,3,0,0,1,1,0,1,0 0,0,0,3,0,8,0,0,0,1,1,2,1,0 0,0,3,2,1,8,3,0,1,1,1,0,1,0 1,5,0,3,0,1,2,0,1,1,1,0,1,1 2,2,6,2,0,4,2,0,1,1,1,0,1,0 0,0,3,2,0,2,2,0,1,1,1,1,1,0 2,0,0,3,1,4,3,0,1,1,1,1,1,1 1,2,1,2,0,1,2,0,1,1,1,0,1,1 1,0,9,1,1,2,3,0,1,1,1,0,1,0 1,2,1,2,0,10,2,0,1,1,1,1,1,1 2,1,8,0,2,9,3,0,1,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,1 2,1,10,3,0,5,2,0,1,1,1,1,1,1 0,0,10,3,0,4,2,0,1,1,1,1,1,1 0,0,0,3,2,5,1,0,1,1,1,0,1,0 0,0,0,3,0,0,2,0,1,1,1,1,1,0 1,1,1,2,5,4,3,0,0,1,1,1,1,0 0,1,7,1,0,1,2,2,1,1,1,1,1,0 2,0,1,2,1,3,5,0,0,1,1,0,1,0 0,2,10,3,2,5,1,0,1,1,1,0,1,0 1,2,4,3,0,5,2,1,1,1,1,1,1,1 1,0,6,2,3,3,5,4,0,1,1,2,1,0 0,0,0,3,2,0,3,0,1,1,1,1,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 1,0,12,1,0,3,2,0,1,1,1,1,1,0 1,5,1,2,0,12,2,0,1,1,1,1,1,1 0,0,3,2,2,7,1,0,1,1,1,0,1,0 0,1,8,0,2,1,1,0,1,1,1,2,1,0 0,0,3,2,0,1,2,0,1,1,1,1,1,0 0,4,1,2,0,12,2,0,1,1,1,0,1,1 1,0,3,2,0,1,2,0,1,1,1,1,1,1 1,4,3,2,2,2,1,0,1,1,1,2,1,0 1,4,5,2,5,2,5,4,0,1,1,1,1,0 0,0,3,2,0,2,0,0,0,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,12,1,0,7,2,0,1,1,1,0,1,0 1,1,3,2,0,4,2,0,1,1,1,1,1,0 0,0,0,3,2,3,3,0,1,1,1,0,1,0 1,0,3,2,1,7,5,4,0,1,1,2,1,0 0,1,3,2,0,7,1,1,1,1,1,1,1,0 1,5,4,3,4,5,3,3,0,1,1,1,1,1 1,5,0,3,0,8,0,4,0,1,1,1,1,1 1,3,3,2,0,10,2,1,1,1,1,0,1,0 1,3,0,3,0,4,0,4,0,1,1,1,1,1 1,4,6,2,0,4,2,0,1,1,1,2,1,0 0,0,1,2,2,3,3,0,1,1,1,1,1,0 0,0,3,2,1,1,5,4,0,1,1,0,1,0 0,5,0,3,2,4,3,0,0,1,1,0,1,1 1,2,3,2,0,1,2,0,1,1,1,1,1,1 0,4,3,2,1,5,5,0,1,1,1,2,1,0 1,0,0,3,1,8,5,0,0,1,1,0,1,0 2,0,3,2,0,4,2,0,1,1,1,1,1,0 0,0,0,3,2,4,3,0,1,1,1,1,1,0 0,3,0,3,2,5,3,0,1,1,1,0,1,0 1,5,3,2,0,8,0,0,0,1,1,0,1,1 1,0,0,3,2,5,3,0,0,1,1,0,1,1 0,0,2,1,1,2,3,0,1,1,1,2,1,0 0,0,1,2,2,11,1,0,0,1,1,2,1,0 0,0,3,2,2,5,3,0,0,1,1,0,1,0 0,0,3,2,2,8,3,0,0,1,1,0,1,0 2,5,1,2,0,4,2,0,1,1,1,2,1,1 1,0,8,0,4,2,5,0,0,1,1,2,1,0 0,0,1,2,2,8,1,1,0,1,1,0,1,0 0,0,3,2,3,6,3,0,1,1,1,0,1,0 0,0,2,1,2,3,5,0,0,1,1,2,1,0 1,0,3,2,0,6,2,0,1,1,1,2,1,0 0,5,4,3,0,5,2,0,1,1,1,1,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,2,7,3,0,1,1,1,1,1,0 0,0,0,3,3,5,3,0,0,1,1,0,1,0 2,0,15,0,0,6,2,1,1,1,1,0,1,0 0,0,3,2,1,2,3,0,0,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,0 0,0,2,1,0,10,2,0,1,1,1,0,1,0 1,0,3,2,0,8,2,0,1,1,1,0,1,0 1,0,0,3,0,5,2,0,1,1,1,0,1,1 2,0,1,2,0,6,2,0,1,1,1,2,1,0 2,0,3,2,0,6,2,0,1,1,1,0,1,1 1,4,13,3,2,5,3,0,0,1,1,0,1,1 0,0,1,2,2,1,3,0,1,1,1,0,1,0 1,5,3,2,0,12,4,0,0,1,1,0,1,0 2,0,12,1,1,2,3,2,0,1,1,2,1,0 2,0,12,1,2,2,3,0,1,1,1,0,1,0 0,1,3,2,0,9,2,0,1,1,1,0,1,0 1,4,3,2,0,2,4,0,1,1,1,0,1,0 1,5,0,3,0,5,2,0,1,1,1,2,1,1 1,5,0,3,2,0,3,0,0,1,1,1,1,0 1,0,6,2,0,0,2,0,1,1,1,1,1,0 0,0,0,3,2,2,1,0,0,1,1,2,1,0 0,4,0,3,0,1,2,4,1,1,1,1,1,1 0,0,0,3,2,3,1,0,1,1,1,2,1,0 0,0,0,3,2,4,3,0,0,1,1,1,1,0 0,4,3,2,0,0,2,0,1,1,1,1,1,1 2,0,9,1,0,7,2,4,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,1,2,1,4,3,0,1,1,1,1,1,0 0,0,3,2,0,10,2,0,1,1,1,0,1,0 1,0,0,3,0,3,2,0,1,1,1,0,1,1 1,5,3,2,1,8,5,0,0,1,1,2,1,0 0,1,1,2,0,1,2,0,1,1,1,0,1,1 1,0,4,3,2,5,3,0,1,1,1,1,1,0 0,0,6,2,2,0,3,0,1,1,1,0,1,0 0,4,1,2,0,12,1,4,1,1,1,0,1,0 2,0,3,2,0,1,2,0,1,1,1,0,1,1 2,1,3,2,0,9,2,0,1,1,1,2,1,0 1,0,0,3,0,4,2,0,1,1,1,0,1,1 0,5,1,2,2,2,3,0,0,1,1,2,1,0 0,0,15,0,2,9,3,0,1,1,1,2,1,0 0,4,0,3,1,5,3,0,0,1,1,1,1,0 0,4,5,2,2,5,1,4,0,1,1,2,1,0 0,0,1,2,2,2,3,0,0,1,1,2,1,0 1,0,3,2,1,6,3,0,1,1,1,0,1,0 0,0,5,2,2,4,3,0,1,1,1,2,1,0 2,0,3,2,0,0,2,0,1,1,1,0,1,0 0,0,3,2,0,2,4,0,0,1,1,0,1,0 0,0,1,2,2,3,3,0,0,1,1,0,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 0,0,6,2,0,1,2,0,1,1,1,1,1,1 1,0,10,3,0,4,2,0,1,1,1,1,1,1 2,5,3,2,0,7,0,0,0,1,1,2,1,0 1,0,1,2,2,2,3,0,1,1,1,1,1,0 2,0,9,1,0,4,2,0,1,1,1,2,1,0 1,3,10,3,1,0,3,0,0,1,1,0,1,1 1,0,12,1,0,1,2,0,1,1,1,2,1,0 0,0,3,2,2,0,3,0,1,1,1,0,1,0 0,0,1,2,0,10,2,0,1,1,1,0,1,0 1,0,2,1,0,9,2,0,1,1,1,0,1,0 2,1,8,0,0,1,2,0,1,1,1,2,1,0 1,0,2,1,0,10,2,0,1,1,1,0,1,0 2,0,7,1,0,4,2,0,1,1,1,2,1,0 0,5,3,2,2,12,1,0,1,1,1,0,1,0 0,0,2,1,2,1,1,0,1,1,1,2,1,0 1,0,2,1,3,3,5,4,0,1,1,0,1,0 1,5,1,2,1,5,5,4,0,1,1,0,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,1 2,1,0,3,0,4,2,0,1,1,1,2,1,0 1,0,10,3,0,0,2,0,1,1,1,0,1,0 0,0,3,2,2,8,4,0,1,1,1,2,1,0 0,0,0,3,2,8,3,0,1,1,1,0,1,0 1,2,4,3,0,5,2,0,1,1,1,1,1,1 0,0,3,2,2,6,1,0,1,1,1,0,1,0 1,1,14,0,0,1,2,0,1,1,1,1,1,0 0,0,1,2,2,2,3,0,1,1,1,0,1,0 1,5,5,2,0,2,2,0,1,1,1,2,1,0 1,0,1,2,0,1,2,4,1,1,1,2,1,1 2,0,0,3,1,3,5,0,1,1,1,0,1,0 1,4,10,3,0,5,2,0,1,1,1,0,1,1 1,0,3,2,0,1,2,0,1,1,1,2,1,0 1,5,6,2,3,8,5,4,0,1,1,0,1,0 1,1,3,2,0,3,2,0,1,1,1,1,1,0 1,0,3,2,1,8,5,0,0,1,1,0,1,0 0,4,7,1,0,2,2,0,1,1,1,0,1,0 0,0,5,2,2,0,3,0,1,1,1,0,1,0 1,3,0,3,0,4,2,0,1,1,1,2,1,0 2,0,12,1,0,7,2,0,1,1,1,0,1,0 0,3,13,3,0,5,2,0,1,1,1,1,1,0 0,0,6,2,2,1,3,0,1,1,1,0,1,0 3,1,1,2,0,5,0,0,0,1,1,2,1,0 1,0,1,2,2,3,3,0,1,1,1,1,1,0 0,0,0,3,0,1,2,0,1,1,1,1,1,1 1,0,3,2,2,6,3,4,1,1,1,0,1,0 1,0,3,2,0,3,2,4,1,1,1,0,1,1 0,0,0,3,2,5,3,0,0,1,1,1,1,0 0,0,3,2,2,12,1,0,1,1,1,0,1,0 2,0,0,3,0,5,2,0,1,1,1,0,1,1 1,5,0,3,0,5,2,0,1,1,1,0,1,1 0,0,0,3,2,0,3,0,0,1,1,0,1,0 1,0,4,3,0,5,2,0,1,1,1,1,1,1 0,4,1,2,2,5,1,0,0,1,1,2,1,0 2,0,3,2,0,0,2,4,1,1,1,1,1,1 0,5,10,3,0,5,2,0,1,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,2,1,0 1,0,1,2,0,3,2,0,1,1,1,0,1,1 1,3,1,2,1,8,3,0,1,1,1,0,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,0 1,0,11,0,0,8,2,0,1,1,1,1,1,1 1,0,0,3,1,4,3,0,0,1,1,0,1,0 2,0,3,2,0,1,2,0,1,1,1,0,1,0 0,4,9,1,2,2,1,4,0,1,1,1,1,0 1,0,3,2,0,5,2,0,1,1,1,1,1,1 0,0,3,2,5,7,3,0,1,1,1,0,1,0 0,0,0,3,2,4,3,0,1,1,1,1,1,0 1,1,1,2,0,1,2,0,1,1,1,1,1,1 0,0,3,2,2,6,1,0,1,1,1,2,1,0 3,0,5,2,0,3,2,0,1,1,1,1,1,1 1,0,3,2,0,7,2,0,1,1,1,1,1,1 1,0,3,2,0,1,2,0,1,1,1,1,1,1 0,0,1,2,2,8,3,0,0,1,1,0,1,0 0,0,2,1,2,9,1,0,1,1,1,0,1,0 0,0,1,2,2,8,3,4,1,1,1,2,1,0 1,0,13,3,0,5,2,0,1,1,1,1,1,0 1,2,3,2,0,4,2,0,1,1,1,1,1,1 1,1,3,2,0,10,2,0,1,1,1,1,1,0 2,1,1,2,0,3,2,0,1,1,1,1,1,1 2,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,3,2,2,7,1,0,1,1,1,0,1,0 0,0,3,2,0,3,4,0,0,1,1,2,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,0,3,0,0,2,0,1,1,1,0,1,1 1,0,3,2,3,1,3,0,1,1,1,0,1,0 1,0,1,2,0,7,2,0,1,1,1,0,1,1 2,0,1,2,0,10,2,4,1,1,1,2,1,1 0,4,1,2,2,8,5,0,1,1,1,2,1,0 1,0,0,3,0,1,2,0,1,1,1,0,1,0 1,0,4,3,0,4,2,0,1,1,1,0,1,1 1,4,0,3,0,5,2,0,1,1,1,2,1,0 0,0,1,2,0,3,2,0,1,1,1,1,1,0 0,0,3,2,1,12,1,0,1,1,1,0,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,5,2,2,7,3,0,1,1,1,1,1,0 1,1,12,1,0,10,2,0,1,1,1,1,1,0 3,1,8,0,0,9,2,0,1,1,1,2,1,0 2,0,6,2,2,2,1,0,0,1,1,0,1,0 0,2,0,3,0,3,2,0,1,1,1,1,1,0 2,0,3,2,0,6,2,0,1,1,1,2,1,0 2,0,3,2,0,7,2,0,1,1,1,0,1,0 1,1,0,3,0,1,2,0,1,1,1,0,1,0 0,0,1,2,2,4,4,0,0,1,1,0,1,0 2,1,1,2,0,4,2,0,1,1,1,1,1,1 0,1,12,1,2,3,1,0,0,1,1,1,1,0 0,0,3,2,2,4,1,4,1,1,1,0,1,0 1,0,3,2,0,1,2,4,1,1,1,0,1,0 1,0,1,2,0,3,2,4,1,1,1,1,1,1 0,0,3,2,2,8,5,0,0,1,1,1,1,0 2,2,1,2,0,3,2,0,1,1,1,0,1,0 0,0,3,2,2,2,1,4,1,1,1,2,1,0 1,0,13,3,0,5,2,1,1,1,1,0,1,1 2,0,8,0,0,1,2,0,1,1,1,0,1,0 0,1,1,2,2,9,1,0,1,1,1,0,1,0 2,0,12,1,3,4,3,0,1,1,1,1,1,0 0,3,0,3,2,4,3,0,1,1,1,1,1,0 0,0,3,2,3,1,5,0,1,1,1,1,1,0 3,0,3,2,5,7,3,0,0,1,1,2,1,0 1,0,3,2,0,7,0,0,0,1,1,0,1,0 0,4,2,1,2,6,4,0,1,1,1,2,1,0 0,0,1,2,0,12,2,0,1,1,1,1,1,0 0,0,3,2,2,3,5,0,0,1,1,0,1,0 2,4,2,1,0,2,2,0,1,1,1,0,1,0 1,0,1,2,0,10,2,0,1,1,1,0,1,1 1,1,6,2,0,2,0,0,0,1,1,0,1,1 2,0,3,2,0,10,2,0,1,1,1,1,1,0 1,0,11,0,1,9,3,4,1,1,1,0,1,0 1,0,14,0,0,6,2,0,1,1,1,0,1,0 0,0,9,1,2,7,1,4,1,1,1,0,1,0 1,0,4,3,0,3,2,0,1,1,1,0,1,1 0,0,3,2,2,8,1,0,1,1,1,1,1,0 1,0,3,2,1,2,3,0,0,1,1,0,1,0 1,0,5,2,0,1,2,0,1,1,1,1,1,1 0,0,3,2,0,2,0,4,0,1,1,0,1,0 2,0,8,0,1,2,4,1,0,1,1,0,1,0 0,0,1,2,2,4,3,0,1,1,1,0,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,1 1,1,1,2,0,1,2,0,1,1,1,1,1,0 1,0,12,1,0,2,2,0,1,1,1,0,1,0 0,0,2,1,0,1,2,0,1,1,1,0,1,0 1,5,3,2,1,4,3,0,1,1,1,2,1,1 0,4,0,3,2,8,1,0,0,1,1,0,1,0 2,1,7,1,0,4,2,0,1,1,1,1,1,1 1,0,3,2,1,3,3,0,1,1,1,1,1,1 1,1,4,3,1,5,5,0,1,1,1,1,1,1 2,1,0,3,0,5,2,0,1,1,1,2,1,1 1,4,6,2,1,7,5,2,1,1,1,0,1,0 1,0,3,2,0,7,2,4,1,1,1,0,1,1 0,0,0,3,0,8,2,0,1,1,1,0,1,1 1,0,3,2,2,7,3,0,1,1,1,1,1,0 1,4,1,2,0,8,2,0,1,1,1,0,1,1 0,3,0,3,2,4,3,0,0,1,1,1,1,0 0,0,2,1,2,10,3,0,0,1,1,2,1,0 0,0,1,2,2,2,3,0,1,1,1,2,1,0 2,5,0,3,0,8,0,0,0,1,1,0,1,0 1,1,0,3,0,4,2,0,1,1,1,0,1,0 2,2,4,3,0,5,2,0,1,1,1,0,1,1 1,4,1,2,0,4,2,0,1,1,1,0,1,0 1,0,1,2,1,2,3,0,0,1,1,1,1,1 0,0,2,1,2,3,3,0,0,1,1,2,1,0 2,4,12,1,4,5,5,0,0,1,1,2,1,0 0,0,1,2,2,9,3,0,1,1,1,0,1,0 1,0,0,3,0,3,2,0,1,1,1,1,1,0 1,0,0,3,2,5,3,4,1,1,1,0,1,0 1,0,3,2,0,8,0,0,0,1,1,2,1,1 1,1,3,2,3,4,5,0,1,1,1,2,1,0 1,0,3,2,0,1,2,4,1,1,1,0,1,0 0,0,5,2,0,3,2,0,1,1,1,1,1,0 0,1,6,2,4,4,5,0,0,1,1,0,1,0 2,4,3,2,4,2,3,0,1,1,1,0,1,0 1,0,12,1,1,10,5,0,1,1,1,0,1,0 1,4,1,2,0,5,2,0,1,1,1,1,1,1 1,0,8,0,3,2,5,4,1,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,0 1,3,0,3,0,1,2,0,1,1,1,0,1,1 0,0,0,3,0,3,2,0,1,1,1,1,1,0 0,0,6,2,0,0,2,1,1,1,1,2,1,0 1,0,3,2,0,0,2,4,1,1,1,1,1,0 1,1,0,3,0,4,0,0,0,1,1,0,1,0 0,0,1,2,1,7,5,0,0,1,1,2,1,0 1,1,1,2,0,1,2,0,1,1,1,1,1,0 0,3,0,3,2,5,3,0,1,1,1,0,1,0 0,0,1,2,2,1,1,0,1,1,1,0,1,0 1,3,0,3,0,4,2,0,1,1,1,0,1,1 1,0,3,2,1,3,5,0,0,1,1,0,1,0 0,0,0,3,0,2,0,0,0,1,1,2,1,0 0,0,0,3,2,3,3,0,0,1,1,0,1,0 0,0,1,2,2,8,1,0,0,1,1,0,1,0 0,0,6,2,0,0,2,0,1,1,1,1,1,1 2,0,1,2,0,5,2,0,1,1,1,2,1,0 2,1,1,2,0,3,2,0,1,1,1,2,1,0 3,0,3,2,4,8,3,0,0,1,1,0,1,0 0,0,3,2,1,2,3,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 2,0,3,2,4,8,3,0,0,1,1,0,1,0 0,4,10,3,2,5,1,0,0,1,1,0,1,0 1,5,13,3,0,5,2,0,1,1,1,1,1,1 1,2,10,3,1,5,3,4,1,1,1,0,1,1 1,5,1,2,3,0,1,4,0,1,1,0,1,0 0,0,2,1,2,3,1,0,0,1,1,2,1,0 1,0,6,2,0,4,2,0,1,1,1,1,1,1 2,3,12,1,0,6,2,4,1,1,1,0,1,0 1,0,5,2,1,5,3,0,1,1,1,1,1,0 0,5,1,2,1,5,4,0,0,1,1,0,1,0 0,0,0,3,0,5,0,4,0,1,1,0,1,1 0,0,3,2,0,4,2,0,1,1,1,1,1,1 1,0,10,3,0,4,2,0,1,1,1,1,1,1 1,0,12,1,1,1,1,0,1,1,1,0,1,0 1,0,3,2,0,4,2,0,1,1,1,0,1,0 1,5,10,3,0,5,2,0,1,1,1,0,1,1 0,0,1,2,2,3,1,0,1,1,1,2,1,0 0,5,5,2,0,5,2,0,1,1,1,1,1,1 2,0,8,0,2,1,3,4,1,1,1,1,1,0 0,0,15,0,2,6,3,2,1,1,1,2,1,0 1,0,6,2,1,5,5,0,1,1,1,0,1,0 0,0,12,1,2,6,1,0,1,1,1,0,1,0 0,0,3,2,2,3,1,0,0,1,1,2,1,0 1,0,1,2,2,3,3,0,1,1,1,1,1,0 1,5,5,2,1,8,5,2,0,1,1,0,1,0 1,0,3,2,0,5,2,0,1,1,1,1,1,0 2,0,3,2,4,8,3,0,0,1,1,0,1,1 2,0,10,3,0,5,2,0,1,1,1,1,1,0 2,0,0,3,0,3,2,0,1,1,1,0,1,1 1,0,1,2,1,8,5,3,0,1,1,1,1,0 0,0,2,1,2,8,5,0,1,1,1,0,1,0 0,0,2,1,0,1,2,0,1,1,1,0,1,0 2,0,2,1,4,6,3,4,0,1,1,0,1,0 2,0,10,3,0,5,2,0,1,1,1,1,1,1 2,5,10,3,0,8,2,0,1,1,1,1,1,1 0,0,12,1,3,3,5,0,0,1,1,2,1,0 2,0,3,2,0,10,2,0,1,1,1,1,1,0 1,0,0,3,0,1,2,0,1,1,1,1,1,1 3,0,8,0,4,7,5,0,0,1,1,0,1,0 0,0,3,2,2,1,4,1,1,1,1,2,1,0 0,0,3,2,2,8,1,0,1,1,1,0,1,0 1,0,0,3,0,1,2,0,1,1,1,1,1,1 1,0,3,2,0,8,0,0,0,1,1,0,1,0 0,0,1,2,2,5,1,0,1,1,1,1,1,0 1,1,3,2,3,2,5,0,0,1,1,1,1,0 1,2,0,3,0,4,2,0,1,1,1,1,1,1 1,0,12,1,0,10,2,0,1,1,1,1,1,0 1,5,3,2,1,2,3,0,0,1,1,2,1,0 0,0,10,3,0,8,2,0,1,1,1,1,1,1 2,1,1,2,0,3,2,0,1,1,1,1,1,1 1,0,8,0,0,1,2,0,1,1,1,0,1,0 0,0,3,2,2,0,1,0,1,1,1,0,1,0 0,0,7,1,0,7,2,0,1,1,1,0,1,0 1,0,14,0,3,2,5,0,0,1,1,0,1,0 0,0,7,1,1,9,1,0,1,1,1,2,1,0 0,0,1,2,0,4,2,0,1,1,1,0,1,0 2,2,0,3,0,3,2,0,1,1,1,0,1,1 0,0,10,3,2,4,3,4,1,1,1,1,1,0 1,0,3,2,2,1,3,0,1,1,1,1,1,0 0,5,3,2,3,2,3,0,0,1,1,0,1,0 2,0,0,3,0,7,2,1,1,1,1,0,1,0 0,1,6,2,0,9,2,0,1,1,1,1,1,1 0,0,8,0,2,2,1,0,1,1,1,2,1,0 0,0,12,1,2,2,1,0,0,1,1,2,1,0 1,0,7,1,0,6,2,0,1,1,1,1,1,1 1,0,1,2,2,8,3,0,0,1,1,0,1,0 0,0,3,2,2,4,3,1,1,1,1,0,1,0 1,0,0,3,1,0,5,0,0,1,1,1,1,0 2,0,8,0,0,1,2,0,1,1,1,0,1,0 2,1,0,3,0,3,2,0,1,1,1,1,1,1 1,0,3,2,0,0,2,0,1,1,1,0,1,1 0,0,0,3,0,4,2,0,1,1,1,0,1,1 1,1,3,2,0,10,2,0,1,1,1,1,1,1 2,0,3,2,4,10,5,0,0,1,1,0,1,0 2,3,12,1,0,8,2,0,1,1,1,0,1,0 0,0,1,2,2,7,1,0,1,1,1,2,1,0 0,0,0,3,2,5,3,0,0,1,1,0,1,0 1,0,3,2,0,8,2,0,1,1,1,0,1,1 1,0,1,2,0,1,2,4,1,1,1,0,1,1 0,4,4,3,0,5,2,0,1,1,1,1,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 2,0,3,2,0,3,2,0,1,1,1,2,1,0 1,0,2,1,0,1,2,0,1,1,1,1,1,0 0,5,12,1,0,1,2,0,1,1,1,0,1,1 1,0,1,2,3,1,5,0,1,1,1,0,1,0 1,0,3,2,1,2,3,0,0,1,1,2,1,0 0,4,0,3,2,5,1,0,0,1,1,1,1,0 1,0,4,3,0,5,2,0,1,1,1,1,1,1 0,0,3,2,0,10,2,1,1,1,1,0,1,1 1,0,14,0,5,7,5,1,0,1,1,2,1,0 0,0,8,0,2,11,1,0,0,1,1,2,1,0 0,1,0,3,2,1,1,0,1,1,1,2,1,0 1,1,1,2,0,1,2,0,1,1,1,2,1,0 0,0,0,3,2,4,3,0,1,1,1,0,1,0 0,0,1,2,2,6,1,0,1,1,1,1,1,0 1,0,3,2,1,3,4,0,0,1,1,0,1,0 1,0,10,3,0,1,2,0,1,1,1,0,1,1 1,0,3,2,0,1,2,0,1,1,1,1,1,1 1,5,10,3,2,4,3,0,0,1,1,0,1,0 2,0,3,2,1,3,3,0,1,1,1,0,1,0 0,0,1,2,2,8,3,0,0,1,1,1,1,0 0,0,1,2,2,2,3,0,0,1,1,2,1,0 0,0,1,2,2,3,1,0,1,1,1,0,1,0 1,1,1,2,0,3,2,0,1,1,1,1,1,0 0,0,3,2,2,3,1,0,0,1,1,2,1,0 2,0,12,1,3,2,5,4,0,1,1,0,1,0 1,0,5,2,0,1,2,0,1,1,1,0,1,1 0,0,1,2,0,10,2,0,1,1,1,1,1,0 1,0,10,3,0,2,0,0,0,1,1,1,1,1 1,0,0,3,0,4,2,0,1,1,1,1,1,1 1,5,0,3,1,4,3,0,1,1,1,0,1,0 2,2,4,3,0,5,2,0,1,1,1,1,1,1 1,5,13,3,0,5,2,0,1,1,1,1,1,0 0,0,1,2,2,10,1,0,1,1,1,0,1,0 1,0,5,2,1,8,3,0,0,1,1,0,1,0 1,0,6,2,0,2,2,0,1,1,1,1,1,0 1,1,3,2,1,3,3,0,1,1,1,2,1,0 1,0,3,2,1,8,5,0,0,1,1,0,1,0 1,0,1,2,2,7,3,0,0,1,1,1,1,0 1,4,0,3,3,5,5,0,0,1,1,2,1,0 1,0,9,1,0,1,2,0,1,1,1,0,1,0 1,0,4,3,0,5,2,0,1,1,1,1,1,1 0,0,1,2,1,0,3,0,1,1,1,1,1,0 1,1,5,2,1,4,5,4,0,1,1,1,1,0 1,0,3,2,0,3,2,0,1,1,1,1,1,0 3,4,8,0,4,2,3,0,0,1,1,2,1,0 0,0,3,2,2,8,3,0,0,1,1,2,1,0 0,0,1,2,2,8,1,0,0,1,1,2,1,0 1,0,3,2,1,4,5,4,0,1,1,0,1,0 0,0,9,1,2,10,5,1,1,1,1,0,1,0 2,3,1,2,4,4,3,0,0,1,1,2,1,0 1,0,10,3,1,5,5,0,0,1,1,2,1,1 2,0,0,3,4,4,5,0,1,1,1,0,1,1 0,0,3,2,0,2,0,0,0,1,1,2,1,0 2,0,0,3,1,5,5,0,1,1,1,0,1,1 0,0,1,2,1,2,3,4,0,1,1,2,1,0 1,0,11,0,0,10,0,0,0,1,1,1,1,0 0,0,1,2,0,8,2,0,1,1,1,0,1,1 0,5,3,2,0,8,2,0,1,1,1,0,1,0 0,0,2,1,2,6,1,0,1,1,1,2,1,0 2,1,4,3,0,5,2,0,1,1,1,1,1,1 0,0,3,2,2,8,3,0,0,1,1,0,1,0 0,0,1,2,2,4,3,0,1,1,1,0,1,0 1,0,2,1,1,7,3,0,1,1,1,0,1,0 0,0,0,3,2,5,5,4,1,1,1,2,1,0 1,3,3,2,2,6,5,4,1,1,1,0,1,0 1,1,3,2,0,2,2,0,1,1,1,0,1,0 1,5,10,3,2,5,3,0,1,1,1,1,1,0 1,4,10,3,3,5,3,0,1,1,1,2,1,1 0,0,1,2,2,3,1,0,0,1,1,2,1,0 1,0,12,1,2,7,3,4,0,1,1,0,1,0 0,0,4,3,0,5,2,0,1,1,1,1,1,1 1,0,1,2,2,3,3,0,1,1,1,0,1,0 0,0,3,2,0,4,2,0,1,1,1,1,1,1 0,0,6,2,0,1,2,0,1,1,1,1,1,1 1,0,10,3,1,4,5,0,0,1,1,2,1,0 0,0,3,2,1,7,5,0,0,1,1,1,1,0 0,0,1,2,2,0,1,0,1,1,1,2,1,0 1,0,9,1,1,1,3,0,1,1,1,0,1,0 1,4,5,2,0,1,2,0,1,1,1,0,1,1 1,2,5,2,1,4,3,0,0,1,1,0,1,0 0,0,12,1,2,2,1,0,1,1,1,2,1,0 1,1,1,2,0,5,2,0,1,1,1,1,1,1 0,4,0,3,2,5,1,0,0,1,1,0,1,0 0,0,3,2,0,8,2,0,1,1,1,0,1,0 0,0,3,2,0,2,2,0,1,1,1,0,1,0 1,0,3,2,0,3,2,0,1,1,1,1,1,1 1,0,3,2,1,8,3,0,0,1,1,1,1,0 0,4,3,2,1,1,5,0,1,1,1,0,1,0 1,0,1,2,0,10,2,0,1,1,1,2,1,1 1,0,5,2,0,3,2,0,1,1,1,1,1,1 1,0,1,2,1,3,5,0,1,1,1,1,1,0 1,0,1,2,3,2,5,0,0,1,1,0,1,0 0,0,6,2,2,3,1,4,1,1,1,2,1,0 1,0,0,3,0,1,2,0,1,1,1,0,1,1 1,1,0,3,0,4,2,0,1,1,1,1,1,1 0,0,1,2,0,1,2,0,1,1,1,1,1,0 1,0,1,2,0,4,2,0,1,1,1,1,1,1 0,0,3,2,2,2,3,0,0,1,1,0,1,0 0,0,3,2,0,10,2,0,1,1,1,0,1,0 0,0,1,2,2,6,1,0,1,1,1,2,1,0 1,4,6,2,0,12,2,0,1,1,1,1,1,0 1,0,12,1,5,2,3,0,1,1,1,1,1,0 2,0,8,0,3,11,3,3,0,1,1,2,1,0 1,0,0,3,2,5,1,2,1,1,1,0,1,1 1,0,3,2,0,6,2,0,1,1,1,2,1,1 0,1,3,2,0,5,2,0,1,1,1,1,1,1 1,0,0,3,0,3,2,0,1,1,1,0,1,0 1,0,10,3,4,5,3,0,0,1,1,2,1,1 1,0,7,1,1,2,5,0,0,1,1,0,1,0 0,0,0,3,2,3,1,0,0,1,1,1,1,0 0,0,3,2,5,10,3,4,1,1,1,1,1,0 2,2,0,3,0,5,2,0,1,1,1,2,1,0 0,3,12,1,3,4,3,0,0,1,1,0,1,0 0,5,0,3,2,8,3,0,1,1,1,2,1,0 0,0,0,3,2,3,1,0,1,1,1,2,1,0 2,0,0,3,0,5,2,1,1,1,1,0,1,1 1,5,0,3,0,5,0,0,0,1,1,0,1,0 0,0,3,2,3,6,5,4,0,1,1,0,1,0 0,4,9,1,0,9,2,0,1,1,1,0,1,0 1,2,0,3,0,8,0,0,0,1,1,1,1,1 0,0,3,2,5,8,5,2,1,1,1,0,1,0 0,0,10,3,2,4,3,0,1,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,0 1,1,1,2,0,5,2,0,1,1,1,2,1,0 1,0,3,2,0,10,2,0,1,1,1,0,1,1 0,0,10,3,2,4,3,0,1,1,1,1,1,0 1,0,3,2,0,8,2,0,1,1,1,0,1,1 1,0,3,2,2,8,3,0,0,1,1,0,1,0 0,0,3,2,2,0,3,0,1,1,1,0,1,0 2,0,3,2,0,8,0,4,0,1,1,2,1,1 1,0,3,2,1,11,5,4,0,1,1,2,1,0 2,0,1,2,0,4,2,0,1,1,1,0,1,1 1,0,1,2,1,3,5,0,1,1,1,1,1,0 1,0,12,1,0,1,2,0,1,1,1,0,1,1 0,1,1,2,2,3,3,0,1,1,1,0,1,0 0,0,1,2,2,8,1,4,0,1,1,2,1,0 1,1,4,3,0,5,2,0,1,1,1,1,1,1 0,0,3,2,2,7,3,0,1,1,1,0,1,0 0,0,1,2,2,10,3,0,1,1,1,0,1,0 1,1,1,2,0,9,2,0,1,1,1,1,1,0 2,0,3,2,0,1,2,0,1,1,1,0,1,1 1,5,1,2,1,8,3,0,0,1,1,1,1,0 1,0,11,0,0,9,2,0,1,1,1,0,1,0 0,3,0,3,2,5,3,0,1,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,1 0,0,7,1,2,2,1,0,0,1,1,1,1,0 0,0,5,2,2,8,3,1,0,1,1,0,1,0 2,3,3,2,4,8,3,0,0,1,1,0,1,0 1,1,3,2,0,3,2,0,1,1,1,2,1,0 0,0,3,2,2,8,1,0,0,1,1,0,1,0 0,0,6,2,0,1,2,0,1,1,1,1,1,0 0,5,0,3,0,4,2,0,1,1,1,0,1,1 1,0,1,2,0,4,2,0,1,1,1,1,1,1 0,0,1,2,2,4,3,0,0,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,0,3,1,3,1,0,0,1,1,0,1,0 1,0,10,3,0,4,0,0,0,1,1,1,1,1 2,0,3,2,1,4,5,0,0,1,1,0,1,0 1,0,10,3,0,1,2,0,1,1,1,1,1,1 0,0,3,2,0,10,2,0,1,1,1,0,1,0 0,0,2,1,2,3,4,0,0,1,1,2,1,0 2,0,3,2,2,8,3,0,0,1,1,0,1,0 1,0,3,2,2,7,3,4,1,1,1,0,1,0 1,5,10,3,1,5,3,0,0,1,1,1,1,0 1,5,1,2,2,5,5,4,0,1,1,2,1,0 0,0,3,2,2,6,3,1,0,1,1,2,1,0 0,0,0,3,1,0,3,0,0,1,1,0,1,0 0,5,3,2,2,8,1,0,1,1,1,0,1,0 2,0,3,2,0,12,2,4,1,1,1,0,1,0 0,0,1,2,2,1,1,0,0,1,1,2,1,0 2,0,8,0,4,7,5,0,0,1,1,2,1,0 2,4,0,3,1,5,3,0,0,1,1,0,1,0 0,0,1,2,0,8,2,0,1,1,1,1,1,0 2,0,2,1,2,7,4,0,1,1,1,1,1,0 0,0,1,2,0,8,2,0,1,1,1,2,1,0 1,0,0,3,5,4,5,0,1,1,1,1,1,1 1,0,5,2,2,8,3,0,1,1,1,1,1,0 0,0,2,1,2,2,5,0,1,1,1,0,1,0 1,0,0,3,1,4,5,0,0,1,1,0,1,0 0,0,2,1,2,6,1,0,1,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,1,1,1 2,4,8,0,0,1,2,0,1,1,1,0,1,0 0,0,1,2,2,2,3,0,0,1,1,0,1,0 0,0,10,3,0,4,2,0,1,1,1,1,1,1 1,0,3,2,1,7,3,0,0,1,1,0,1,0 2,0,6,2,1,0,3,0,0,1,1,0,1,0 2,0,1,2,0,1,2,0,1,1,1,1,1,1 1,0,2,1,2,6,1,0,1,1,1,0,1,0 1,5,10,3,0,4,2,0,1,1,1,0,1,0 0,0,6,2,0,0,2,0,1,1,1,0,1,0 0,0,0,3,0,5,2,0,1,1,1,1,1,1 2,0,8,0,0,1,2,0,1,1,1,0,1,1 0,0,3,2,2,2,1,0,1,1,1,2,1,0 2,2,14,0,0,3,2,0,1,1,1,2,1,0 1,0,5,2,1,5,3,0,0,1,1,0,1,0 1,1,0,3,0,0,2,0,1,1,1,1,1,1 0,0,12,1,2,9,3,0,1,1,1,0,1,0 0,0,8,0,0,1,2,0,1,1,1,0,1,0 1,0,0,3,0,3,0,0,0,1,1,2,1,1 1,5,1,2,0,5,2,0,1,1,1,0,1,0 0,0,1,2,0,1,2,0,1,1,1,0,1,0 2,0,13,3,1,4,3,0,1,1,1,1,1,1 0,0,10,3,2,5,3,0,0,1,1,0,1,0 2,0,10,3,0,4,2,0,1,1,1,1,1,1 1,0,6,2,0,8,2,0,1,1,1,0,1,1 0,0,0,3,2,5,1,0,1,1,1,0,1,0 0,0,0,3,2,5,3,0,1,1,1,1,1,0 0,0,1,2,2,6,5,0,1,1,1,1,1,0 0,0,3,2,2,6,1,0,1,1,1,2,1,0 1,0,3,2,0,3,2,0,1,1,1,1,1,0 1,1,2,1,0,1,2,0,1,1,1,1,1,0 0,0,3,2,2,1,3,0,1,1,1,0,1,0 2,2,0,3,0,3,2,0,1,1,1,0,1,1 1,0,1,2,2,4,3,0,1,1,1,1,1,0 0,0,1,2,2,4,1,1,1,1,1,2,1,0 1,0,1,2,0,5,2,0,1,1,1,0,1,0 1,4,10,3,2,5,3,0,0,1,1,1,1,0 1,0,13,3,0,4,0,0,0,1,1,0,1,1 0,0,10,3,0,4,2,0,1,1,1,1,1,1 0,4,1,2,0,2,2,0,1,1,1,0,1,0 2,4,0,3,0,5,2,0,1,1,1,0,1,1 0,0,2,1,2,2,1,0,1,1,1,2,1,0 0,0,1,2,0,8,1,0,1,1,1,0,1,1 0,4,3,2,2,8,1,0,0,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,1,1,0 0,0,1,2,0,5,2,0,1,1,1,1,1,0 1,1,6,2,0,9,2,0,1,1,1,1,1,0 0,4,12,1,2,6,1,4,1,1,1,0,1,0 3,0,1,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,2,4,3,0,0,1,1,0,1,0 1,0,1,2,0,8,0,0,0,1,1,0,1,0 0,4,1,2,0,12,2,0,1,1,1,1,1,1 0,0,0,3,0,5,2,0,1,1,1,0,1,1 0,1,4,3,0,5,2,0,1,1,1,1,1,1 0,0,10,3,0,3,2,0,1,1,1,1,1,1 2,0,7,1,0,6,2,4,1,1,1,2,1,0 0,0,6,2,2,7,3,0,1,1,1,1,1,0 1,0,3,2,5,1,3,0,1,1,1,0,1,0 1,0,6,2,0,1,2,4,1,1,1,0,1,1 0,0,2,1,2,8,1,0,0,1,1,2,1,0 1,0,2,1,0,7,2,0,1,1,1,0,1,0 1,4,10,3,1,5,3,0,0,1,1,1,1,1 2,0,3,2,0,3,2,0,1,1,1,0,1,0 2,2,5,2,0,3,2,0,1,1,1,0,1,1 1,0,11,0,0,10,2,0,1,1,1,0,1,0 1,4,2,1,1,2,3,4,1,1,1,0,1,0 0,0,2,1,0,10,2,0,1,1,1,0,1,0 0,5,0,3,2,5,3,0,1,1,1,2,1,0 1,0,8,0,4,6,3,0,0,1,1,2,1,0 0,0,6,2,2,5,1,0,0,1,1,0,1,0 1,3,0,3,4,5,5,2,0,1,1,0,1,0 3,2,8,0,4,4,3,0,0,1,1,0,1,0 1,0,3,2,0,3,2,0,1,1,1,0,1,1 0,0,4,3,2,5,3,0,0,1,1,0,1,1 0,0,3,2,0,10,2,0,1,1,1,0,1,0 2,0,1,2,0,4,2,1,1,1,1,0,1,1 2,1,1,2,0,10,2,4,1,1,1,1,1,0 1,0,1,2,2,1,4,2,1,1,1,2,1,0 1,0,14,0,0,7,2,0,1,1,1,0,1,0 0,0,0,3,0,3,2,0,1,1,1,0,1,0 1,1,10,3,4,5,3,0,0,1,1,2,1,0 1,0,10,3,0,4,0,4,0,1,1,1,1,1 0,0,3,2,2,10,3,0,1,1,1,1,1,0 2,0,10,3,0,5,0,0,0,1,1,2,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,1 1,5,6,2,0,5,2,0,1,1,1,0,1,1 0,0,3,2,0,1,2,0,1,1,1,1,1,0 1,0,0,3,3,8,5,0,0,1,1,2,1,0 0,0,1,2,2,2,1,4,0,1,1,2,1,0 2,2,13,3,0,5,2,0,1,1,1,1,1,0 0,4,3,2,2,2,1,0,1,1,1,0,1,0 1,0,0,3,0,1,2,0,1,1,1,0,1,0 1,0,5,2,2,4,3,0,0,1,1,0,1,0 2,0,3,2,1,2,3,0,0,1,1,0,1,0 0,0,12,1,2,1,3,0,1,1,1,0,1,0 1,5,10,3,3,5,5,0,0,1,1,0,1,0 1,0,3,2,0,4,0,0,0,1,1,1,1,1 0,5,0,3,2,8,3,0,0,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,0,3,0,12,2,4,1,1,1,0,1,1 0,1,10,3,2,5,3,0,1,1,1,0,1,0 0,2,1,2,2,4,3,0,0,1,1,1,1,0 0,5,6,2,2,1,1,0,1,1,1,0,1,0 1,4,5,2,2,5,3,0,1,1,1,0,1,0 2,0,12,1,1,3,3,0,0,1,1,2,1,0 1,0,3,2,2,6,3,0,1,1,1,0,1,0 2,0,3,2,1,8,3,0,0,1,1,0,1,0 1,3,10,3,0,8,0,0,0,1,1,0,1,1 0,4,0,3,0,5,2,0,1,1,1,1,1,0 1,0,3,2,1,10,3,0,1,1,1,0,1,0 0,0,3,2,0,5,2,0,1,1,1,0,1,0 1,0,5,2,2,4,3,0,0,1,1,1,1,1 0,0,0,3,2,4,3,0,1,1,1,1,1,1 0,0,6,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,2,3,3,0,0,1,1,2,1,0 0,0,1,2,0,10,2,0,1,1,1,1,1,0 1,2,0,3,1,4,5,0,0,1,1,1,1,1 1,0,1,2,2,8,5,0,1,1,1,2,1,1 1,4,10,3,0,5,2,0,1,1,1,2,1,1 1,3,5,2,3,5,5,0,0,1,1,0,1,1 0,0,2,1,2,1,3,0,1,1,1,2,1,0 1,0,3,2,0,10,2,0,1,1,1,2,1,0 1,0,3,2,2,2,4,1,0,1,1,2,1,0 2,0,0,3,1,8,3,0,1,1,1,0,1,0 0,0,1,2,1,3,3,0,0,1,1,2,1,0 0,0,10,3,2,5,3,0,0,1,1,2,1,1 1,1,1,2,0,9,2,0,1,1,1,1,1,0 1,1,3,2,0,2,2,0,1,1,1,1,1,0 1,0,10,3,0,3,2,0,1,1,1,1,1,1 1,0,3,2,0,4,2,0,1,1,1,1,1,1 0,0,1,2,1,3,3,0,0,1,1,0,1,0 2,0,3,2,4,8,3,0,0,1,1,2,1,0 3,0,6,2,4,11,3,0,0,1,1,0,1,0 1,0,5,2,0,4,2,0,1,1,1,1,1,1 1,4,14,0,0,10,2,0,1,1,1,0,1,0 1,0,1,2,0,5,2,0,1,1,1,0,1,0 2,0,7,1,0,1,2,0,1,1,1,2,1,0 1,5,4,3,2,5,1,0,0,1,1,0,1,0 0,0,7,1,0,7,2,0,1,1,1,0,1,0 1,0,3,2,1,4,3,0,1,1,1,0,1,0 1,4,10,3,0,5,2,0,1,1,1,0,1,0 2,0,3,2,4,1,5,0,1,1,1,1,1,0 0,5,1,2,2,8,3,0,0,1,1,2,1,0 1,0,3,2,0,1,4,0,1,1,1,0,1,0 1,0,3,2,4,3,3,0,0,1,1,0,1,0 1,2,0,3,0,4,2,0,1,1,1,0,1,1 0,0,0,3,0,4,2,0,1,1,1,1,1,1 2,4,3,2,0,5,2,0,1,1,1,2,1,0 2,1,10,3,0,10,2,0,1,1,1,2,1,0 2,0,3,2,4,11,5,0,0,1,1,2,1,0 0,0,6,2,2,4,3,0,1,1,1,1,1,1 0,1,1,2,0,9,2,0,1,1,1,1,1,0 1,4,0,3,2,5,3,0,1,1,1,1,1,0 1,0,10,3,0,5,2,4,1,1,1,1,1,1 1,4,0,3,0,1,2,0,1,1,1,1,1,0 1,0,3,2,1,4,5,0,0,1,1,2,1,1 0,0,15,0,2,9,3,0,1,1,1,2,1,0 1,1,1,2,0,1,2,0,1,1,1,1,1,0 0,0,3,2,2,3,1,0,1,1,1,0,1,0 1,0,3,2,2,2,1,4,0,1,1,1,1,0 0,0,3,2,0,6,2,0,1,1,1,1,1,0 1,0,1,2,1,5,1,0,1,1,1,2,1,0 0,0,3,2,2,8,3,0,0,1,1,2,1,0 0,3,0,3,0,5,2,0,1,1,1,0,1,1 1,0,10,3,0,12,2,0,1,1,1,1,1,1 1,1,15,0,0,3,2,0,1,1,1,2,1,0 0,0,0,3,2,4,4,0,0,1,1,1,1,1 0,0,1,2,2,8,1,0,0,1,1,2,1,0 0,0,1,2,2,8,1,0,0,1,1,2,1,0 0,0,5,2,2,4,3,0,1,1,1,1,1,0 0,0,1,2,1,7,3,4,1,1,1,0,1,0 1,0,1,2,0,4,2,0,1,1,1,0,1,1 0,4,5,2,0,0,2,0,1,1,1,0,1,0 1,4,1,2,0,12,2,0,1,1,1,1,1,1 1,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,0,9,2,0,1,1,1,0,1,1 0,0,3,2,2,8,5,0,0,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 2,1,8,0,0,3,2,0,1,1,1,1,1,0 1,0,12,1,0,10,2,0,1,1,1,1,1,0 1,1,13,3,1,5,5,0,1,1,1,1,1,1 1,0,3,2,0,1,2,0,1,1,1,0,1,0 2,0,0,3,0,3,2,0,1,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,0 2,1,0,3,0,4,2,0,1,1,1,0,1,0 0,0,1,2,2,8,1,1,0,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,2,1,0 2,0,3,2,0,3,2,0,1,1,1,1,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,1,3,5,0,0,1,1,2,1,0 0,0,3,2,2,1,4,3,1,1,1,0,1,0 2,0,0,3,0,3,2,0,1,1,1,0,1,1 0,0,1,2,2,8,1,0,0,1,1,2,1,0 1,1,6,2,1,0,4,4,0,1,1,2,1,0 0,0,12,1,2,7,3,0,1,1,1,0,1,0 1,0,3,2,1,6,3,0,1,1,1,0,1,0 1,1,0,3,0,3,2,0,1,1,1,1,1,0 0,0,14,0,2,6,5,0,1,1,1,0,1,0 1,0,6,2,2,5,1,0,0,1,1,2,1,0 0,0,6,2,0,8,0,0,0,1,1,0,1,0 1,0,1,2,0,3,2,0,1,1,1,0,1,1 0,0,3,2,2,7,5,4,0,1,1,2,1,0 2,0,10,3,0,4,2,0,1,1,1,1,1,1 1,0,1,2,1,8,5,0,0,1,1,0,1,0 1,5,0,3,1,8,5,4,0,1,1,0,1,0 0,0,3,2,3,11,5,4,0,1,1,1,1,0 0,5,6,2,2,4,3,4,0,1,1,0,1,0 0,0,1,2,2,8,3,0,1,1,1,0,1,0 0,0,9,1,2,7,1,4,0,1,1,0,1,0 0,0,0,3,2,5,3,0,0,1,1,0,1,0 0,0,1,2,2,3,4,0,1,1,1,0,1,0 2,0,3,2,4,8,3,0,0,1,1,2,1,0 0,0,2,1,2,8,1,0,0,1,1,2,1,0 1,0,7,1,3,2,5,0,0,1,1,2,1,0 0,0,3,2,2,2,3,0,0,1,1,0,1,0 2,0,0,3,0,8,2,0,1,1,1,0,1,0 0,4,1,2,2,2,3,0,0,1,1,2,1,0 0,0,1,2,2,7,1,0,1,1,1,0,1,0 0,0,1,2,2,8,4,0,0,1,1,0,1,0 1,0,3,2,0,8,2,0,1,1,1,0,1,0 0,5,13,3,0,5,2,1,1,1,1,1,1,1 1,0,0,3,0,5,2,0,1,1,1,0,1,1 1,2,0,3,0,4,2,0,1,1,1,1,1,1 1,0,6,2,0,3,2,0,1,1,1,0,1,0 2,4,1,2,4,9,3,0,1,1,1,0,1,0 2,4,8,0,1,4,5,0,0,1,1,0,1,0 0,0,0,3,0,1,2,4,1,1,1,0,1,1 0,0,3,2,2,8,3,0,0,1,1,0,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,1 1,4,3,2,0,12,2,0,1,1,1,0,1,1 1,3,10,3,2,4,3,0,1,1,1,0,1,0 0,0,2,1,0,7,4,0,1,1,1,1,1,0 1,0,3,2,1,10,3,0,1,1,1,0,1,0 0,0,3,2,1,10,1,0,1,1,1,0,1,0 0,0,0,3,2,5,3,0,1,1,1,0,1,0 0,0,0,3,2,5,1,0,0,1,1,0,1,0 0,0,7,1,3,8,5,0,0,1,1,2,1,0 0,0,3,2,2,2,3,1,1,1,1,1,1,0 1,0,1,2,2,9,3,0,0,1,1,0,1,0 1,3,3,2,0,1,2,0,1,1,1,0,1,1 0,0,11,0,1,7,5,0,0,1,1,0,1,0 1,0,2,1,0,7,2,4,1,1,1,0,1,0 2,0,3,2,0,8,2,0,1,1,1,0,1,0 1,0,1,2,2,4,3,0,0,1,1,1,1,0 1,1,3,2,4,9,5,0,0,1,1,1,1,0 0,1,1,2,0,9,2,0,1,1,1,1,1,0 0,0,0,3,2,3,1,4,0,1,1,2,1,0 1,0,14,0,0,11,0,0,0,1,1,0,1,0 1,5,3,2,4,8,5,0,0,1,1,0,1,0 0,4,0,3,2,5,3,0,0,1,1,0,1,0 1,0,6,2,1,5,5,0,0,1,1,0,1,0 0,4,0,3,2,5,1,0,1,1,1,0,1,0 0,0,1,2,2,4,1,0,0,1,1,2,1,0 2,0,0,3,0,8,2,0,1,1,1,1,1,1 0,0,3,2,2,8,1,0,1,1,1,2,1,0 0,0,0,3,0,5,2,0,1,1,1,1,1,1 2,0,3,2,0,8,0,0,0,1,1,0,1,0 1,0,6,2,0,1,2,0,1,1,1,1,1,0 0,0,1,2,2,7,1,0,1,1,1,1,1,0 0,0,1,2,2,8,1,0,0,1,1,2,1,0 0,0,0,3,2,8,3,0,0,1,1,0,1,0 0,0,4,3,0,5,2,0,1,1,1,1,1,1 0,0,1,2,2,1,3,4,1,1,1,0,1,0 2,0,8,0,0,1,2,0,1,1,1,1,1,0 1,0,3,2,1,3,1,0,0,1,1,0,1,0 1,0,1,2,2,8,3,0,0,1,1,0,1,0 0,0,3,2,2,6,5,0,1,1,1,2,1,0 1,0,0,3,2,8,3,0,1,1,1,0,1,0 0,0,0,3,2,5,3,0,1,1,1,1,1,0 0,0,3,2,2,2,4,4,1,1,1,1,1,0 0,0,1,2,0,4,2,1,1,1,1,0,1,0 1,0,1,2,0,5,2,0,1,1,1,0,1,1 1,0,3,2,3,6,3,0,1,1,1,0,1,0 2,0,0,3,1,5,3,0,0,1,1,2,1,0 0,0,2,1,2,2,1,0,1,1,1,2,1,0 1,0,1,2,1,12,5,0,0,1,1,2,1,0 0,0,1,2,2,3,4,1,1,1,1,2,1,0 2,2,1,2,0,4,2,0,1,1,1,1,1,1 2,1,3,2,0,1,2,0,1,1,1,2,1,0 1,4,0,3,0,5,2,0,1,1,1,1,1,1 2,0,3,2,0,2,2,4,1,1,1,0,1,0 1,0,3,2,2,3,3,0,1,1,1,0,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 1,1,1,2,0,1,2,0,1,1,1,1,1,0 1,5,0,3,0,5,2,0,1,1,1,0,1,1 0,0,6,2,2,2,1,0,0,1,1,2,1,0 2,5,1,2,0,4,2,0,1,1,1,0,1,1 1,0,3,2,0,5,2,0,1,1,1,0,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 0,4,1,2,0,1,4,0,1,1,1,0,1,0 0,0,1,2,1,8,5,4,0,1,1,2,1,0 0,5,0,3,2,5,3,0,0,1,1,2,1,0 0,0,1,2,3,2,1,0,1,1,1,0,1,0 0,0,7,1,3,1,3,0,1,1,1,0,1,0 0,4,1,2,1,8,5,0,0,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,0 1,0,5,2,5,8,4,0,1,1,1,1,1,0 1,0,3,2,1,3,3,0,0,1,1,2,1,0 0,4,3,2,1,10,3,2,1,1,1,0,1,0 0,0,1,2,1,8,3,0,0,1,1,1,1,0 0,0,1,2,2,3,1,0,1,1,1,2,1,0 1,3,3,2,1,8,5,2,0,1,1,0,1,0 1,0,3,2,0,10,2,4,1,1,1,1,1,0 1,2,3,2,0,4,2,0,1,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,2,6,1,0,1,1,1,2,1,0 1,0,5,2,5,8,5,0,0,1,1,0,1,0 2,1,1,2,0,12,2,0,1,1,1,1,1,1 0,0,1,2,0,4,2,0,1,1,1,1,1,1 0,5,1,2,0,7,2,0,1,1,1,1,1,1 2,1,3,2,0,3,2,0,1,1,1,1,1,0 0,0,14,0,0,1,2,0,1,1,1,0,1,0 0,0,9,1,2,12,1,0,0,1,1,1,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 1,3,3,2,0,3,2,4,1,1,1,0,1,0 0,0,1,2,2,7,1,0,0,1,1,2,1,0 1,0,7,1,0,1,2,0,1,1,1,1,1,0 2,0,14,0,1,2,3,1,0,1,1,2,1,0 1,1,0,3,0,10,2,0,1,1,1,1,1,0 0,0,0,3,2,5,3,0,1,1,1,1,1,1 0,0,14,0,2,9,3,0,1,1,1,2,1,0 1,5,1,2,2,2,1,2,1,1,1,1,1,0 0,1,1,2,2,7,3,0,0,1,1,0,1,0 1,0,0,3,0,3,2,0,1,1,1,1,1,1 1,0,3,2,3,1,5,0,1,1,1,0,1,0 1,3,1,2,0,1,2,0,1,1,1,0,1,1 0,0,1,2,2,2,3,4,1,1,1,2,1,0 1,5,1,2,0,2,2,0,1,1,1,1,1,1 1,1,0,3,0,1,2,0,1,1,1,1,1,1 2,0,3,2,1,1,3,4,1,1,1,0,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,1 0,0,3,2,0,7,2,0,1,1,1,1,1,1 0,0,3,2,2,8,1,0,1,1,1,0,1,0 0,1,1,2,0,2,0,0,0,1,1,2,1,0 0,0,3,2,2,2,3,0,1,1,1,1,1,0 1,5,1,2,4,10,5,0,0,1,1,0,1,0 0,0,10,3,1,5,5,0,1,1,1,0,1,0 1,0,3,2,1,2,5,0,0,1,1,0,1,0 0,0,0,3,2,8,1,0,0,1,1,0,1,0 1,3,5,2,0,4,2,0,1,1,1,0,1,0 0,0,3,2,2,7,3,0,0,1,1,0,1,0 1,0,3,2,3,4,3,0,1,1,1,1,1,0 0,0,3,2,0,1,2,0,1,1,1,1,1,1 0,0,3,2,2,2,3,4,0,1,1,0,1,0 1,0,3,2,3,2,5,4,0,1,1,0,1,0 2,0,7,1,0,10,2,0,1,1,1,0,1,0 2,0,3,2,0,8,0,0,0,1,1,2,1,0 2,0,6,2,4,8,5,0,0,1,1,0,1,0 0,0,3,2,0,0,2,0,1,1,1,1,1,0 1,0,4,3,0,5,2,0,1,1,1,0,1,1 1,0,0,3,0,6,2,0,1,1,1,0,1,0 1,0,6,2,2,2,5,0,0,1,1,0,1,0 0,0,0,3,2,3,1,0,0,1,1,0,1,0 1,1,0,3,2,4,3,0,1,1,1,0,1,0 0,0,0,3,0,5,2,0,1,1,1,0,1,1 2,4,10,3,0,4,2,0,1,1,1,1,1,1 0,0,0,3,2,6,1,0,1,1,1,0,1,0 1,5,6,2,0,12,2,0,1,1,1,1,1,1 1,1,3,2,0,1,2,0,1,1,1,1,1,1 2,0,10,3,2,4,3,0,0,1,1,2,1,0 1,4,10,3,3,5,5,0,0,1,1,0,1,0 0,2,10,3,2,4,3,0,0,1,1,1,1,0 1,4,10,3,0,4,2,0,1,1,1,1,1,1 1,0,3,2,0,6,2,0,1,1,1,0,1,0 1,3,2,1,1,8,3,0,0,1,1,1,1,0 2,0,0,3,0,10,2,0,1,1,1,1,1,1 0,0,0,3,2,1,1,0,1,1,1,0,1,0 2,0,1,2,1,3,3,0,0,1,1,2,1,0 1,2,2,1,0,1,2,0,1,1,1,1,1,1 1,5,0,3,0,8,2,0,1,1,1,0,1,1 1,0,1,2,0,1,2,0,1,1,1,0,1,0 0,0,12,1,2,2,5,0,1,1,1,2,1,0 0,1,8,0,2,9,4,0,1,1,1,1,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,7,1,2,11,3,0,0,1,1,2,1,0 1,0,0,3,0,4,2,0,1,1,1,0,1,0 0,0,3,2,0,12,2,0,1,1,1,1,1,0 1,0,5,2,0,4,2,0,1,1,1,1,1,1 0,0,3,2,0,8,2,0,1,1,1,2,1,0 0,0,3,2,1,7,3,0,1,1,1,0,1,0 1,0,0,3,2,4,3,4,1,1,1,0,1,1 1,0,0,3,1,4,4,0,1,1,1,0,1,0 2,0,3,2,0,6,4,0,1,1,1,0,1,0 1,0,1,2,0,8,0,0,0,1,1,2,1,0 2,1,3,2,0,9,2,0,1,1,1,0,1,0 1,5,1,2,1,8,5,0,0,1,1,0,1,0 0,0,1,2,1,2,5,0,0,1,1,2,1,0 1,0,1,2,0,3,2,0,1,1,1,0,1,0 1,4,3,2,0,12,1,0,1,1,1,0,1,1 0,4,3,2,2,6,1,2,1,1,1,2,1,0 0,0,0,3,2,3,1,3,1,1,1,2,1,0 0,0,13,3,2,5,3,0,0,1,1,1,1,0 0,0,3,2,0,10,2,0,1,1,1,1,1,0 1,2,1,2,0,3,2,0,1,1,1,1,1,0 0,4,0,3,2,5,3,0,0,1,1,1,1,0 1,4,3,2,0,10,2,3,1,1,1,0,1,1 0,0,2,1,2,6,4,0,1,1,1,0,1,0 0,0,5,2,2,8,3,0,1,1,1,0,1,0 2,0,3,2,0,1,2,0,1,1,1,0,1,0 3,0,3,2,4,11,3,0,0,1,1,2,1,0 0,0,3,2,2,4,1,0,1,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,1,1,0 0,0,3,2,1,1,3,0,1,1,1,1,1,0 1,0,10,3,1,5,3,0,1,1,1,1,1,0 2,0,0,3,0,5,2,0,1,1,1,0,1,1 1,2,4,3,0,5,2,0,1,1,1,0,1,1 0,0,3,2,0,7,0,4,0,1,1,0,1,0 1,3,0,3,0,5,2,0,1,1,1,0,1,0 2,0,3,2,1,7,4,4,1,1,1,0,1,0 1,5,1,2,0,10,2,4,1,1,1,1,1,0 1,0,1,2,2,4,3,0,0,1,1,1,1,0 0,0,0,3,0,4,2,0,1,1,1,0,1,1 0,0,1,2,2,3,5,0,1,1,1,1,1,0 2,3,0,3,0,4,0,0,0,1,1,1,1,0 0,0,3,2,2,3,1,0,0,1,1,0,1,0 1,5,10,3,0,4,2,0,1,1,1,1,1,1 1,0,3,2,0,4,2,0,1,1,1,0,1,0 0,0,7,1,2,2,1,0,0,1,1,0,1,0 2,0,2,1,0,0,0,4,0,1,1,0,1,0 1,0,3,2,1,8,4,0,0,1,1,0,1,0 1,0,8,0,2,8,1,0,0,1,1,2,1,0 1,0,3,2,1,9,3,0,1,1,1,1,1,0 1,0,3,2,1,6,1,0,1,1,1,0,1,0 0,4,2,1,3,2,5,4,0,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,0 1,0,0,3,2,4,3,0,0,1,1,2,1,0 2,0,7,1,0,12,2,0,1,1,1,2,1,0 0,3,0,3,2,5,3,0,1,1,1,0,1,1 1,2,3,2,0,3,0,0,0,1,1,0,1,0 0,0,3,2,2,10,1,4,1,1,1,0,1,0 2,0,3,2,4,1,3,0,1,1,1,1,1,0 2,0,3,2,2,8,3,4,0,1,1,2,1,0 0,0,3,2,2,1,5,0,1,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 1,5,3,2,0,8,2,0,1,1,1,2,1,0 1,3,1,2,0,8,0,2,0,1,1,0,1,1 0,4,3,2,2,2,3,0,0,1,1,2,1,0 1,0,3,2,2,7,1,4,0,1,1,0,1,0 1,0,5,2,0,1,2,0,1,1,1,1,1,1 0,0,1,2,2,8,3,0,0,1,1,2,1,0 1,4,5,2,2,0,3,0,0,1,1,2,1,0 0,0,1,2,2,2,3,0,0,1,1,2,1,0 1,0,0,3,0,5,0,0,0,1,1,2,1,1 0,0,3,2,2,12,3,0,1,1,1,0,1,0 2,5,10,3,4,5,3,0,0,1,1,2,1,0 0,0,10,3,0,5,2,0,1,1,1,1,1,0 0,1,4,3,0,5,2,1,1,1,1,0,1,1 1,0,3,2,1,2,3,0,1,1,1,0,1,0 0,0,1,2,1,8,3,0,1,1,1,1,1,0 0,0,1,2,1,5,3,2,1,1,1,1,1,0 1,0,0,3,2,5,3,0,0,1,1,0,1,0 1,0,5,2,0,5,0,0,0,1,1,0,1,1 0,0,3,2,2,3,3,0,0,1,1,2,1,0 1,0,3,2,1,2,3,0,0,1,1,2,1,0 2,2,3,2,0,4,4,1,0,1,1,2,1,0 1,5,13,3,1,5,5,4,0,1,1,2,1,0 1,1,1,2,0,1,2,0,1,1,1,0,1,1 0,0,7,1,0,2,2,0,1,1,1,0,1,0 1,0,3,2,3,2,3,0,0,1,1,0,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,1 0,0,2,1,2,3,5,0,0,1,1,2,1,0 2,0,3,2,0,2,2,0,1,1,1,0,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,1 1,5,3,2,0,8,0,0,0,1,1,2,1,1 2,3,6,2,4,8,5,4,0,1,1,0,1,0 0,0,3,2,2,3,5,0,0,1,1,1,1,0 0,0,0,3,2,5,3,0,1,1,1,0,1,0 0,0,0,3,0,4,2,1,1,1,1,0,1,1 0,0,3,2,2,1,3,0,1,1,1,0,1,0 0,0,0,3,0,5,0,0,0,1,1,2,1,1 1,0,3,2,2,7,5,0,1,1,1,0,1,0 1,0,3,2,1,10,3,0,1,1,1,1,1,0 1,0,3,2,2,7,5,4,0,1,1,0,1,0 0,0,0,3,0,5,2,0,1,1,1,0,1,1 0,4,1,2,2,4,3,0,0,1,1,2,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,1,2,0,9,2,0,1,1,1,1,1,0 0,5,0,3,0,5,2,0,1,1,1,0,1,1 1,0,1,2,1,10,5,0,1,1,1,0,1,0 0,0,0,3,2,8,3,0,0,1,1,1,1,0 0,0,1,2,2,3,3,0,0,1,1,2,1,0 0,4,0,3,2,5,3,0,0,1,1,0,1,0 1,1,5,2,1,0,3,0,0,1,1,0,1,0 0,0,1,2,2,12,3,0,1,1,1,2,1,0 2,3,12,1,2,5,3,0,1,1,1,2,1,0 0,2,5,2,2,3,3,0,1,1,1,1,1,0 0,0,8,0,5,9,4,0,1,1,1,2,1,0 2,4,8,0,4,2,3,0,0,1,1,2,1,0 0,0,1,2,2,7,1,0,1,1,1,0,1,0 0,0,3,2,2,6,1,0,1,1,1,0,1,0 0,0,14,0,2,6,3,0,1,1,1,1,1,0 1,0,3,2,0,6,2,4,1,1,1,0,1,1 0,0,0,3,2,0,3,0,0,1,1,0,1,0 0,5,0,3,3,5,3,0,0,1,1,0,1,0 0,0,0,3,2,4,3,0,0,1,1,0,1,0 1,2,3,2,0,4,2,0,1,1,1,1,1,1 1,0,3,2,1,3,5,0,0,1,1,1,1,0 1,0,6,2,1,5,5,4,0,1,1,0,1,0 0,0,6,2,2,5,1,0,0,1,1,2,1,0 0,0,3,2,2,2,1,4,0,1,1,2,1,0 0,0,12,1,2,3,3,0,0,1,1,2,1,0 1,0,0,3,0,10,2,0,1,1,1,1,1,1 0,0,0,3,2,5,3,1,1,1,1,1,1,1 0,0,3,2,2,6,1,0,1,1,1,2,1,0 1,0,12,1,1,10,5,0,1,1,1,0,1,0 0,0,3,2,2,1,1,0,1,1,1,2,1,0 1,0,1,2,2,2,5,0,0,1,1,2,1,0 0,1,1,2,2,1,1,0,1,1,1,0,1,0 1,0,3,2,0,4,2,0,1,1,1,1,1,0 1,0,3,2,0,3,2,0,1,1,1,1,1,1 0,0,3,2,1,6,1,0,1,1,1,2,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,1 0,0,1,2,2,3,3,0,1,1,1,1,1,0 1,0,3,2,2,2,5,4,0,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,3,2,2,4,1,0,0,1,1,1,1,0 1,0,1,2,0,3,2,0,1,1,1,0,1,0 1,3,0,3,0,8,2,1,1,1,1,1,1,1 0,0,1,2,5,3,3,0,0,1,1,0,1,0 2,4,10,3,0,5,0,4,0,1,1,2,1,1 1,0,14,0,2,7,5,0,0,1,1,0,1,0 1,0,0,3,1,11,5,0,0,1,1,0,1,0 1,0,0,3,0,3,2,0,1,1,1,1,1,1 2,1,3,2,2,9,4,0,1,1,1,2,1,0 2,0,14,0,0,7,2,4,1,1,1,1,1,0 0,0,3,2,2,7,5,4,1,1,1,0,1,0 0,0,3,2,2,6,1,4,0,1,1,0,1,1 1,1,1,2,1,8,3,0,1,1,1,0,1,0 0,0,0,3,2,8,1,0,1,1,1,0,1,1 0,0,1,2,2,2,1,0,1,1,1,2,1,0 2,1,0,3,0,3,2,0,1,1,1,1,1,1 0,3,1,2,2,6,3,0,0,1,1,2,1,0 0,1,3,2,2,1,3,0,1,1,1,2,1,0 1,0,1,2,0,4,2,0,1,1,1,2,1,1 2,0,3,2,1,8,3,0,0,1,1,0,1,0 3,0,12,1,0,10,2,0,1,1,1,0,1,0 1,2,1,2,0,5,2,0,1,1,1,1,1,1 1,0,3,2,4,4,3,0,0,1,1,0,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,3,2,2,7,1,0,1,1,1,0,1,0 0,0,1,2,2,4,5,0,0,1,1,0,1,0 1,1,0,3,0,8,0,0,0,1,1,0,1,1 0,0,10,3,0,5,2,0,1,1,1,0,1,1 1,0,0,3,1,2,5,1,0,1,1,0,1,0 2,0,3,2,0,3,0,4,0,1,1,2,1,0 1,0,12,1,1,10,3,0,1,1,1,1,1,0 2,0,3,2,0,1,2,0,1,1,1,0,1,1 0,0,0,3,0,12,2,0,1,1,1,0,1,0 0,0,3,2,2,2,1,0,1,1,1,2,1,0 2,0,6,2,4,8,3,0,0,1,1,1,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,1 2,0,3,2,0,10,2,0,1,1,1,2,1,0 0,0,1,2,2,3,3,0,0,1,1,1,1,0 2,0,3,2,0,4,2,1,1,1,1,1,1,1 0,0,3,2,1,7,3,4,1,1,1,0,1,0 0,1,1,2,0,5,2,2,1,1,1,0,1,0 1,0,3,2,0,4,2,0,1,1,1,0,1,0 1,3,3,2,0,8,0,4,0,1,1,0,1,1 2,4,10,3,0,4,0,0,0,1,1,0,1,1 0,0,1,2,2,1,3,0,1,1,1,1,1,1 1,0,0,3,2,3,3,0,0,1,1,2,1,0 1,0,3,2,1,8,3,0,0,1,1,0,1,0 1,0,0,3,1,5,3,0,0,1,1,0,1,0 2,0,3,2,0,7,2,0,1,1,1,0,1,1 1,0,3,2,1,8,5,0,0,1,1,0,1,0 1,3,0,3,0,8,2,0,1,1,1,0,1,0 2,0,1,2,0,7,2,0,1,1,1,1,1,0 1,0,3,2,2,4,3,0,0,1,1,1,1,0 1,1,1,2,0,3,2,0,1,1,1,1,1,1 0,4,5,2,0,12,2,0,1,1,1,1,1,1 1,4,2,1,2,9,3,4,0,1,1,0,1,0 0,0,3,2,2,2,1,0,0,1,1,2,1,0 1,0,12,1,3,2,5,4,0,1,1,0,1,0 1,0,3,2,0,4,2,1,1,1,1,1,1,1 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,11,0,0,9,2,0,1,1,1,0,1,0 1,2,9,1,0,1,2,0,1,1,1,0,1,0 0,1,0,3,2,5,1,0,1,1,1,2,1,0 0,0,3,2,0,1,2,0,1,1,1,2,1,0 2,0,1,2,1,4,3,0,0,1,1,1,1,0 2,0,1,2,4,2,3,4,0,1,1,0,1,0 0,0,3,2,2,1,5,4,0,1,1,0,1,0 1,0,1,2,0,5,2,0,1,1,1,1,1,1 0,0,0,3,2,0,3,0,1,1,1,0,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,0 0,0,1,2,2,1,1,0,1,1,1,1,1,0 0,0,3,2,2,1,1,0,1,1,1,1,1,0 0,4,1,2,2,8,1,0,0,1,1,2,1,0 0,0,3,2,2,2,4,0,0,1,1,2,1,0 1,5,13,3,0,5,0,0,0,1,1,0,1,1 0,0,1,2,2,10,4,0,1,1,1,0,1,0 1,0,3,2,1,2,5,4,0,1,1,0,1,0 2,4,10,3,0,5,2,0,1,1,1,0,1,1 1,2,1,2,0,1,2,0,1,1,1,1,1,0 2,4,0,3,0,5,2,0,1,1,1,0,1,1 1,2,1,2,0,4,2,0,1,1,1,1,1,0 0,0,3,2,3,1,5,0,1,1,1,1,1,0 1,4,5,2,2,4,3,4,0,1,1,0,1,0 2,0,3,2,0,4,2,0,1,1,1,0,1,1 0,0,3,2,2,2,5,2,0,1,1,2,1,0 0,0,6,2,2,0,3,0,1,1,1,0,1,1 1,4,10,3,0,5,2,0,1,1,1,2,1,0 1,0,4,3,0,5,2,0,1,1,1,0,1,1 1,5,5,2,0,5,0,4,0,1,1,2,1,0 1,4,0,3,1,5,5,0,0,1,1,1,1,0 0,2,2,1,0,1,2,0,1,1,1,0,1,0 1,0,0,3,0,10,2,0,1,1,1,0,1,0 0,0,3,2,2,1,3,0,1,1,1,0,1,0 2,1,5,2,0,4,2,0,1,1,1,1,1,0 0,0,1,2,2,3,3,0,1,1,1,1,1,0 0,0,12,1,1,6,1,0,1,1,1,0,1,0 2,0,3,2,0,6,2,0,1,1,1,2,1,0 0,2,0,3,2,3,1,0,1,1,1,1,1,0 0,0,1,2,2,6,4,0,1,1,1,2,1,0 0,0,2,1,2,8,1,0,1,1,1,0,1,0 1,0,0,3,1,2,3,0,0,1,1,1,1,0 0,0,0,3,0,4,2,0,1,1,1,0,1,0 0,0,3,2,0,2,2,0,1,1,1,0,1,0 1,4,0,3,1,2,1,0,1,1,1,0,1,0 1,5,1,2,0,4,2,0,1,1,1,1,1,0 0,0,1,2,2,2,3,0,1,1,1,2,1,0 1,0,11,0,0,9,2,0,1,1,1,1,1,0 1,0,1,2,1,8,5,0,0,1,1,0,1,0 2,0,8,0,4,11,3,4,0,1,1,2,1,0 0,5,1,2,2,2,3,2,0,1,1,1,1,0 2,4,3,2,1,8,3,0,0,1,1,2,1,1 0,0,1,2,0,3,2,0,1,1,1,0,1,0 0,0,4,3,0,5,2,0,1,1,1,1,1,0 0,0,0,3,2,3,1,1,0,1,1,1,1,0 1,0,10,3,0,0,2,0,1,1,1,1,1,1 1,0,0,3,0,4,2,0,1,1,1,0,1,1 0,0,3,2,2,2,4,0,0,1,1,2,1,0 2,0,12,1,4,8,1,4,0,1,1,0,1,0 0,1,12,1,2,3,1,0,1,1,1,1,1,0 1,0,0,3,2,2,1,0,0,1,1,0,1,0 0,0,7,1,2,10,3,0,1,1,1,2,1,0 1,0,1,2,0,10,2,0,1,1,1,1,1,1 2,5,0,3,0,5,2,0,1,1,1,0,1,1 0,0,10,3,2,5,3,0,0,1,1,2,1,0 0,0,0,3,2,4,4,0,1,1,1,0,1,0 0,4,3,2,2,8,1,0,1,1,1,2,1,0 2,0,3,2,3,8,5,4,0,1,1,2,1,0 0,0,3,2,0,3,2,0,1,1,1,2,1,0 0,1,6,2,0,9,2,0,1,1,1,1,1,1 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,2,1,0,7,2,4,1,1,1,1,1,0 1,0,3,2,1,0,5,0,0,1,1,0,1,0 1,0,1,2,1,1,5,0,0,1,1,0,1,0 1,0,8,0,0,1,2,1,1,1,1,0,1,0 0,0,1,2,2,6,1,4,1,1,1,0,1,0 2,1,6,2,0,3,0,0,0,1,1,2,1,0 1,0,0,3,0,5,0,0,0,1,1,2,1,1 0,0,0,3,2,1,3,0,1,1,1,1,1,0 1,0,3,2,2,1,1,0,1,1,1,0,1,0 3,0,8,0,4,2,3,0,0,1,1,0,1,0 0,3,5,2,0,8,2,0,1,1,1,0,1,0 1,0,6,2,0,1,2,0,1,1,1,1,1,0 1,0,14,0,0,10,2,0,1,1,1,0,1,0 1,0,3,2,4,4,3,0,1,1,1,1,1,1 0,0,3,2,2,2,3,0,1,1,1,1,1,0 0,0,0,3,0,8,0,0,0,1,1,0,1,0 1,0,0,3,2,8,3,0,0,1,1,0,1,1 0,1,0,3,2,5,3,0,1,1,1,2,1,0 0,0,0,3,0,5,2,0,1,1,1,1,1,1 1,3,0,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,2,7,3,0,1,1,1,1,1,0 2,0,4,3,5,1,3,0,1,1,1,1,1,1 0,0,12,1,2,6,1,0,1,1,1,2,1,0 2,0,0,3,4,1,3,0,1,1,1,0,1,1 2,0,1,2,2,8,1,0,0,1,1,0,1,0 1,1,1,2,2,3,1,0,1,1,1,1,1,0 2,0,3,2,0,10,2,0,1,1,1,1,1,0 0,0,3,2,0,7,2,0,1,1,1,1,1,0 0,0,3,2,1,8,5,0,0,1,1,0,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,0 0,0,3,2,3,7,3,0,0,1,1,0,1,0 1,5,0,3,1,4,5,0,1,1,1,0,1,0 0,0,3,2,2,1,3,4,1,1,1,0,1,0 0,0,6,2,2,8,3,0,0,1,1,1,1,0 0,0,1,2,2,3,1,0,1,1,1,2,1,0 1,0,4,3,0,5,0,0,0,1,1,1,1,1 2,0,10,3,1,5,3,0,0,1,1,0,1,0 0,4,3,2,5,3,1,4,0,1,1,0,1,0 0,0,1,2,2,4,1,0,1,1,1,0,1,0 2,0,3,2,2,8,3,4,0,1,1,0,1,0 0,0,0,3,2,3,1,0,0,1,1,2,1,0 0,0,3,2,2,2,5,4,0,1,1,0,1,0 1,0,3,2,1,3,1,0,0,1,1,2,1,0 0,4,0,3,0,5,2,0,1,1,1,1,1,1 0,0,0,3,1,4,5,0,0,1,1,0,1,0 2,0,14,0,4,3,3,0,0,1,1,0,1,0 0,3,3,2,0,8,2,4,1,1,1,0,1,0 0,0,3,2,1,4,3,0,0,1,1,2,1,0 3,1,8,0,0,2,2,0,1,1,1,1,1,0 0,0,0,3,0,3,2,0,1,1,1,1,1,1 0,5,1,2,1,2,5,0,0,1,1,1,1,1 1,0,10,3,2,5,3,0,1,1,1,1,1,0 0,0,3,2,2,1,4,3,1,1,1,2,1,0 1,2,1,2,0,2,0,0,0,1,1,2,1,1 1,0,0,3,0,4,2,0,1,1,1,0,1,1 0,0,6,2,2,3,1,0,0,1,1,2,1,0 0,0,0,3,0,4,0,0,0,1,1,0,1,1 3,1,0,3,4,9,3,0,1,1,1,2,1,0 0,0,3,2,2,2,1,0,1,1,1,2,1,0 1,1,3,2,0,4,2,0,1,1,1,1,1,1 1,3,5,2,0,12,2,0,1,1,1,1,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 2,0,3,2,4,3,3,0,0,1,1,1,1,0 0,0,2,1,2,3,1,0,0,1,1,2,1,0 2,0,3,2,1,10,3,0,1,1,1,0,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 0,0,7,1,2,3,4,0,0,1,1,0,1,0 0,4,1,2,2,7,3,0,1,1,1,0,1,0 1,0,10,3,0,5,0,0,0,1,1,2,1,1 1,0,2,1,0,1,2,4,1,1,1,2,1,0 0,0,10,3,0,5,2,1,1,1,1,1,1,1 0,1,3,2,2,1,5,0,1,1,1,1,1,0 2,0,3,2,0,4,2,0,1,1,1,1,1,0 1,0,0,3,2,7,3,4,1,1,1,0,1,0 2,0,3,2,4,11,3,0,0,1,1,2,1,0 0,0,3,2,0,3,2,0,1,1,1,0,1,0 1,0,3,2,1,2,5,4,0,1,1,0,1,0 1,0,1,2,0,4,2,0,1,1,1,1,1,1 1,0,3,2,1,1,3,0,1,1,1,0,1,0 0,0,2,1,2,1,5,0,1,1,1,2,1,0 2,0,1,2,2,8,3,0,0,1,1,2,1,0 0,0,10,3,2,5,1,0,0,1,1,0,1,0 1,0,10,3,0,5,2,0,1,1,1,1,1,1 0,0,1,2,2,5,1,0,1,1,1,0,1,0 1,0,3,2,1,8,5,0,0,1,1,0,1,0 0,0,3,2,1,8,5,0,0,1,1,2,1,0 1,0,0,3,2,3,4,0,0,1,1,2,1,0 1,0,3,2,1,3,5,0,0,1,1,0,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,6,2,1,4,5,2,0,1,1,0,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,0 0,0,3,2,2,2,1,0,1,1,1,2,1,0 2,0,3,2,4,0,5,0,0,1,1,2,1,0 0,0,1,2,2,0,1,0,0,1,1,2,1,0 2,0,3,2,1,1,3,0,0,1,1,1,1,0 2,3,3,2,0,4,2,0,1,1,1,0,1,1 1,4,0,3,0,3,2,0,1,1,1,0,1,0 0,0,3,2,2,8,3,0,0,1,1,0,1,0 1,0,3,2,0,9,2,0,1,1,1,0,1,0 1,2,3,2,0,4,2,0,1,1,1,1,1,0 2,3,1,2,0,8,2,0,1,1,1,1,1,1 0,0,3,2,2,3,1,1,1,1,1,2,1,0 1,0,2,1,0,7,2,0,1,1,1,0,1,0 1,0,3,2,1,3,3,1,0,1,1,0,1,0 0,0,14,0,2,9,5,4,1,1,1,0,1,0 2,0,7,1,0,7,2,0,1,1,1,0,1,0 1,0,1,2,0,10,2,0,1,1,1,0,1,0 1,1,3,2,0,3,2,0,1,1,1,1,1,0 2,0,3,2,0,3,2,0,1,1,1,0,1,1 1,0,3,2,2,8,3,0,0,1,1,0,1,0 3,2,4,3,0,5,2,0,1,1,1,2,1,1 0,0,0,3,2,3,5,0,0,1,1,2,1,0 1,0,3,2,3,3,3,0,0,1,1,2,1,0 1,0,3,2,1,6,5,0,0,1,1,2,1,0 1,0,1,2,0,5,2,0,1,1,1,0,1,1 1,0,5,2,2,1,5,0,0,1,1,0,1,0 1,0,0,3,0,5,2,0,1,1,1,0,1,1 1,4,1,2,0,8,2,0,1,1,1,0,1,1 0,0,3,2,1,3,3,0,0,1,1,0,1,0 0,0,0,3,0,3,2,0,1,1,1,1,1,1 2,0,3,2,1,3,5,0,0,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,2,8,1,0,0,1,1,2,1,0 0,0,10,3,2,4,3,0,1,1,1,1,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 1,5,0,3,0,5,2,4,1,1,1,0,1,0 0,0,3,2,0,2,0,0,0,1,1,2,1,0 0,0,3,2,2,1,3,0,1,1,1,0,1,0 0,5,6,2,2,1,3,0,1,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,1,1,0 1,1,0,3,2,3,1,0,1,1,1,2,1,0 1,2,4,3,0,5,2,0,1,1,1,0,1,1 1,0,4,3,0,5,2,0,1,1,1,1,1,1 1,3,0,3,0,8,2,0,1,1,1,0,1,1 1,0,10,3,1,4,3,0,0,1,1,0,1,0 1,0,3,2,0,4,2,4,1,1,1,1,1,1 1,2,4,3,0,5,2,0,1,1,1,2,1,1 0,0,12,1,1,2,3,0,0,1,1,0,1,0 0,0,12,1,2,6,1,0,1,1,1,2,1,0 0,3,3,2,2,8,1,0,1,1,1,0,1,0 2,4,3,2,1,4,5,0,0,1,1,2,1,0 0,0,1,2,2,3,1,0,1,1,1,1,1,0 0,0,1,2,2,1,3,0,1,1,1,0,1,0 0,4,3,2,2,3,1,4,1,1,1,2,1,0 1,1,3,2,0,1,2,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 1,3,3,2,1,12,5,4,1,1,1,0,1,0 1,0,0,3,0,5,2,0,1,1,1,0,1,1 1,0,3,2,0,8,2,0,1,1,1,1,1,0 1,1,3,2,0,1,2,0,1,1,1,2,1,0 1,0,1,2,0,4,2,0,1,1,1,1,1,1 0,0,3,2,2,4,5,4,0,1,1,0,1,0 0,0,0,3,2,5,1,0,1,1,1,2,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,1 0,0,1,2,3,1,1,0,1,1,1,1,1,0 0,4,3,2,2,5,3,0,1,1,1,0,1,0 1,3,5,2,1,4,5,4,0,1,1,0,1,0 0,1,3,2,2,3,1,0,1,1,1,1,1,0 1,5,3,2,0,12,2,0,1,1,1,0,1,0 1,0,0,3,0,2,2,0,1,1,1,0,1,0 0,0,1,2,2,8,1,0,0,1,1,2,1,0 1,2,1,2,0,3,2,0,1,1,1,1,1,1 2,1,1,2,4,8,3,0,1,1,1,0,1,0 0,0,3,2,2,5,3,0,1,1,1,0,1,1 1,0,14,0,0,1,2,3,1,1,1,0,1,1 0,0,0,3,2,5,3,0,1,1,1,1,1,1 2,0,14,0,0,10,2,4,1,1,1,0,1,0 0,0,3,2,3,2,3,0,0,1,1,0,1,0 0,0,3,2,2,8,3,0,0,1,1,1,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,2,8,1,0,0,1,1,0,1,0 1,0,3,2,0,3,2,0,1,1,1,1,1,0 0,0,3,2,2,1,3,0,1,1,1,0,1,0 0,0,0,3,2,5,3,0,1,1,1,1,1,0 0,3,1,2,2,4,3,4,0,1,1,0,1,0 0,0,3,2,4,1,1,0,1,1,1,0,1,0 0,0,7,1,0,7,2,0,1,1,1,0,1,0 1,0,3,2,1,11,5,0,0,1,1,1,1,0 1,5,1,2,0,10,2,0,1,1,1,1,1,0 1,0,0,3,0,3,2,0,1,1,1,0,1,1 1,0,1,2,1,4,3,0,1,1,1,1,1,0 1,0,1,2,0,4,2,0,1,1,1,1,1,1 0,0,0,3,2,5,3,0,0,1,1,1,1,0 1,0,0,3,0,3,2,0,1,1,1,0,1,1 0,4,1,2,0,12,2,0,1,1,1,1,1,0 2,2,4,3,0,4,2,0,1,1,1,0,1,1 0,5,1,2,0,12,2,0,1,1,1,0,1,0 1,0,7,1,1,2,3,0,0,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,1 0,0,3,2,2,7,3,0,1,1,1,0,1,0 1,0,14,0,2,7,3,0,1,1,1,0,1,0 0,0,2,1,2,2,1,0,0,1,1,2,1,0 0,0,1,2,2,6,3,0,1,1,1,2,1,0 1,0,3,2,0,3,2,0,1,1,1,1,1,1 0,0,0,3,0,5,2,0,1,1,1,1,1,1 0,5,1,2,3,8,3,0,0,1,1,0,1,0 1,0,1,2,1,1,5,0,1,1,1,1,1,1 0,0,3,2,2,9,3,0,1,1,1,1,1,0 0,5,1,2,2,4,1,0,1,1,1,0,1,0 1,0,0,3,1,4,3,0,1,1,1,0,1,0 2,0,10,3,0,5,2,0,1,1,1,1,1,0 1,0,10,3,0,3,2,0,1,1,1,1,1,1 0,0,1,2,2,0,1,0,1,1,1,0,1,0 1,1,3,2,1,1,3,0,1,1,1,1,1,0 2,1,3,2,0,2,0,0,0,1,1,0,1,1 1,0,10,3,0,5,2,4,1,1,1,0,1,0 1,1,0,3,0,3,2,0,1,1,1,1,1,1 1,0,10,3,1,5,5,0,0,1,1,0,1,1 2,2,4,3,0,5,2,0,1,1,1,1,1,0 0,0,1,2,2,3,3,0,1,1,1,0,1,0 0,0,3,2,0,3,2,0,1,1,1,1,1,0 0,0,9,1,2,3,1,0,0,1,1,2,1,0 2,0,3,2,0,4,2,0,1,1,1,1,1,1 0,0,1,2,2,4,4,0,0,1,1,0,1,0 1,2,1,2,0,9,2,0,1,1,1,1,1,0 0,0,3,2,2,6,3,4,1,1,1,1,1,0 1,0,3,2,0,7,2,4,1,1,1,0,1,0 0,4,3,2,1,2,5,0,0,1,1,2,1,0 0,0,10,3,5,12,3,0,1,1,1,0,1,0 0,0,0,3,2,0,3,0,0,1,1,0,1,0 1,4,10,3,0,4,2,0,1,1,1,2,1,1 0,0,3,2,2,2,1,0,0,1,1,2,1,0 0,0,5,2,2,3,3,0,1,1,1,0,1,0 1,0,3,2,2,3,3,0,1,1,1,1,1,0 0,0,6,2,2,3,3,0,1,1,1,2,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,1 2,0,0,3,0,5,2,0,1,1,1,0,1,1 1,0,3,2,0,6,2,0,1,1,1,0,1,0 1,0,3,2,1,10,1,0,1,1,1,1,1,0 0,4,5,2,0,12,2,0,1,1,1,1,1,1 0,2,0,3,2,8,1,0,1,1,1,2,1,0 0,0,1,2,0,4,2,0,1,1,1,1,1,0 2,0,5,2,1,5,1,0,1,1,1,0,1,0 1,0,0,3,0,1,2,0,1,1,1,0,1,1 2,0,13,3,0,5,2,0,1,1,1,1,1,1 0,0,1,2,2,2,3,4,1,1,1,1,1,0 0,0,3,2,1,3,3,0,0,1,1,2,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,1,2,0,3,2,0,1,1,1,1,1,0 1,0,1,2,0,3,2,0,1,1,1,1,1,1 0,0,3,2,2,2,3,0,0,1,1,2,1,0 0,0,3,2,2,8,3,0,0,1,1,0,1,0 0,0,0,3,2,4,3,0,1,1,1,2,1,0 1,0,0,3,0,5,2,0,1,1,1,0,1,1 1,0,3,2,0,7,2,0,1,1,1,0,1,1 1,0,0,3,2,3,5,4,0,1,1,0,1,0 0,3,3,2,1,8,3,0,0,1,1,0,1,0 0,1,3,2,2,1,4,0,1,1,1,1,1,0 3,2,0,3,4,4,3,0,1,1,1,0,1,1 2,2,0,3,0,3,2,0,1,1,1,2,1,1 0,0,3,2,2,8,1,0,0,1,1,0,1,0 1,5,10,3,0,5,2,0,1,1,1,1,1,1 3,2,3,2,0,2,2,0,1,1,1,2,1,1 0,0,1,2,2,8,1,0,0,1,1,2,1,0 1,0,1,2,1,3,5,1,0,1,1,0,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,0,10,2,4,1,1,1,1,1,1 0,1,0,3,0,3,2,1,1,1,1,1,1,0 1,0,3,2,2,8,1,0,0,1,1,0,1,0 1,0,2,1,0,8,2,0,1,1,1,0,1,0 0,4,5,2,0,4,2,0,1,1,1,1,1,0 0,4,0,3,0,12,2,0,1,1,1,1,1,0 1,0,0,3,0,3,2,0,1,1,1,1,1,1 1,0,3,2,0,1,2,0,1,1,1,1,1,1 1,0,12,1,0,7,2,0,1,1,1,0,1,0 0,0,1,2,2,6,1,0,1,1,1,0,1,0 1,0,3,2,0,3,2,0,1,1,1,1,1,0 1,0,0,3,0,4,2,1,1,1,1,2,1,1 0,0,1,2,1,1,3,0,1,1,1,1,1,0 0,0,2,1,2,2,3,4,0,1,1,0,1,0 0,0,0,3,0,2,0,0,0,1,1,0,1,0 2,0,12,1,4,1,5,4,0,1,1,0,1,0 1,1,0,3,0,3,2,0,1,1,1,1,1,0 2,2,0,3,0,4,2,0,1,1,1,2,1,1 2,5,12,1,4,2,3,0,0,1,1,2,1,0 1,0,3,2,1,8,3,0,0,1,1,0,1,0 1,0,4,3,0,5,2,0,1,1,1,1,1,1 0,3,3,2,2,8,1,0,1,1,1,0,1,0 1,0,0,3,1,0,1,0,0,1,1,0,1,0 1,0,5,2,0,0,2,0,1,1,1,0,1,1 0,0,1,2,2,3,4,0,0,1,1,2,1,0 0,0,3,2,0,3,2,0,1,1,1,2,1,0 0,0,2,1,2,8,1,0,0,1,1,2,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,1 1,0,10,3,0,4,2,0,1,1,1,1,1,1 0,0,1,2,0,3,2,0,1,1,1,1,1,1 1,0,0,3,5,3,5,0,0,1,1,2,1,0 0,0,1,2,2,3,3,0,1,1,1,0,1,0 0,0,0,3,0,5,2,0,1,1,1,1,1,1 0,0,1,2,2,2,1,0,1,1,1,2,1,0 1,0,6,2,0,3,2,0,1,1,1,1,1,1 2,0,12,1,0,10,2,0,1,1,1,1,1,0 0,1,1,2,2,1,1,4,1,1,1,0,1,0 0,0,6,2,5,1,3,0,1,1,1,0,1,0 0,0,0,3,0,4,4,0,0,1,1,0,1,1 0,0,0,3,0,5,2,0,1,1,1,0,1,1 2,0,1,2,1,2,3,0,0,1,1,0,1,0 1,0,10,3,0,5,2,0,1,1,1,1,1,0 0,0,1,2,2,8,3,0,0,1,1,0,1,0 0,0,0,3,0,5,2,0,1,1,1,1,1,0 0,0,1,2,0,6,2,0,1,1,1,1,1,0 0,0,1,2,2,3,4,0,0,1,1,2,1,0 1,3,10,3,2,0,3,4,1,1,1,0,1,0 0,0,1,2,2,4,1,0,1,1,1,2,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,1 0,1,0,3,2,3,3,0,1,1,1,1,1,0 1,0,6,2,0,4,2,0,1,1,1,0,1,0 0,0,1,2,2,9,5,0,1,1,1,0,1,0 1,0,3,2,0,5,2,0,1,1,1,0,1,1 2,0,3,2,3,2,3,0,0,1,1,2,1,0 0,0,0,3,0,3,2,0,1,1,1,0,1,1 0,0,1,2,2,8,3,0,0,1,1,0,1,0 1,1,4,3,0,5,2,1,1,1,1,0,1,1 0,4,3,2,2,9,1,0,1,1,1,0,1,0 0,0,3,2,2,6,5,3,1,1,1,2,1,0 1,0,0,3,1,3,3,0,1,1,1,1,1,0 1,0,1,2,1,0,3,0,0,1,1,0,1,0 0,0,12,1,2,6,1,0,0,1,1,2,1,0 1,0,1,2,0,4,2,0,1,1,1,0,1,1 0,1,6,2,2,3,5,0,0,1,1,2,1,0 2,0,3,2,0,1,2,0,1,1,1,0,1,1 3,0,11,0,0,2,2,4,1,1,1,2,1,0 1,0,10,3,1,5,3,0,1,1,1,2,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,0 2,1,3,2,0,8,2,0,1,1,1,1,1,1 0,0,10,3,2,4,3,0,0,1,1,1,1,1 0,0,3,2,1,7,5,4,0,1,1,0,1,0 1,0,0,3,2,4,3,0,0,1,1,1,1,0 0,0,0,3,2,1,3,0,1,1,1,2,1,0 0,0,5,2,0,7,2,0,1,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,0 1,0,3,2,1,8,5,4,0,1,1,0,1,0 0,0,5,2,2,8,1,0,0,1,1,2,1,0 1,0,3,2,2,7,3,0,1,1,1,0,1,0 0,5,1,2,2,8,1,0,1,1,1,2,1,0 0,0,3,2,2,0,3,0,0,1,1,1,1,0 1,0,5,2,1,8,3,0,1,1,1,0,1,0 0,0,0,3,1,4,3,0,1,1,1,0,1,0 0,0,1,2,2,6,3,0,1,1,1,2,1,0 2,5,4,3,0,4,2,0,1,1,1,2,1,0 0,1,1,2,2,9,1,0,1,1,1,0,1,0 0,0,1,2,2,12,1,0,1,1,1,0,1,0 2,0,1,2,0,1,2,0,1,1,1,0,1,1 1,0,0,3,0,1,2,0,1,1,1,1,1,0 0,0,3,2,2,1,3,0,1,1,1,1,1,0 2,1,3,2,0,9,2,0,1,1,1,2,1,0 0,0,0,3,2,4,1,0,0,1,1,1,1,0 1,1,0,3,0,3,2,0,1,1,1,0,1,0 0,0,6,2,0,1,0,2,0,1,1,2,1,1 2,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,2,1,1,3,1,4,0,1,1,2,1,0 3,0,14,0,0,2,2,4,1,1,1,2,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,14,0,0,4,2,0,1,1,1,2,1,1 2,0,2,1,0,1,2,0,1,1,1,0,1,1 0,4,1,2,2,4,1,1,1,1,1,2,1,0 1,0,1,2,0,0,2,0,1,1,1,0,1,0 0,0,1,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 1,3,1,2,0,8,2,0,1,1,1,1,1,1 0,0,5,2,2,3,1,0,1,1,1,2,1,0 1,0,0,3,0,3,2,0,1,1,1,1,1,1 1,0,3,2,0,10,2,0,1,1,1,0,1,0 0,0,3,2,1,4,5,0,0,1,1,1,1,0 0,0,3,2,2,1,1,0,1,1,1,1,1,0 1,0,0,3,0,3,2,0,1,1,1,0,1,0 1,0,10,3,2,1,5,4,0,1,1,0,1,0 0,0,1,2,1,4,5,4,1,1,1,0,1,0 2,0,10,3,3,4,3,0,1,1,1,0,1,0 0,0,3,2,2,2,3,0,0,1,1,1,1,0 1,0,0,3,2,4,3,0,0,1,1,1,1,0 1,3,10,3,2,5,4,0,0,1,1,0,1,0 1,2,13,3,0,5,2,0,1,1,1,1,1,1 1,4,10,3,0,5,2,0,1,1,1,0,1,1 1,0,1,2,0,4,2,0,1,1,1,1,1,1 0,0,3,2,2,1,3,0,0,1,1,0,1,0 0,0,10,3,1,3,3,0,0,1,1,1,1,1 1,0,0,3,0,1,2,0,1,1,1,1,1,0 2,0,10,3,4,4,3,0,0,1,1,0,1,1 0,0,3,2,2,1,1,0,1,1,1,0,1,0 1,4,12,1,1,12,5,0,0,1,1,2,1,0 2,1,3,2,0,0,0,0,0,1,1,2,1,0 0,0,1,2,2,8,1,0,0,1,1,2,1,0 1,2,0,3,0,4,2,0,1,1,1,2,1,0 0,0,3,2,1,4,3,0,1,1,1,0,1,0 0,0,3,2,2,2,1,4,0,1,1,0,1,0 2,2,1,2,0,4,2,0,1,1,1,1,1,1 2,1,10,3,0,3,2,0,1,1,1,1,1,1 0,3,1,2,2,8,1,4,0,1,1,2,1,0 1,4,0,3,0,12,2,0,1,1,1,1,1,1 0,0,5,2,2,4,3,0,1,1,1,2,1,0 0,0,1,2,2,8,1,0,0,1,1,2,1,0 0,0,3,2,2,6,1,0,1,1,1,2,1,0 0,0,5,2,0,5,2,0,1,1,1,1,1,0 0,0,6,2,2,5,5,2,1,1,1,0,1,0 1,1,12,1,0,1,2,4,1,1,1,0,1,0 3,4,12,1,0,9,2,0,1,1,1,2,1,0 0,5,3,2,0,1,2,0,1,1,1,0,1,0 0,0,6,2,3,2,3,0,0,1,1,2,1,0 0,0,1,2,2,8,1,0,0,1,1,0,1,0 1,0,2,1,0,10,2,0,1,1,1,1,1,0 0,0,0,3,0,3,2,0,1,1,1,1,1,1 0,2,0,3,2,3,1,0,0,1,1,2,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 1,0,3,2,3,8,5,0,0,1,1,2,1,0 1,1,3,2,0,1,2,0,1,1,1,1,1,1 1,0,1,2,2,8,3,0,1,1,1,0,1,0 1,4,10,3,0,4,2,0,1,1,1,2,1,1 2,0,3,2,1,8,5,0,0,1,1,2,1,0 2,0,3,2,1,8,3,0,0,1,1,0,1,0 0,0,1,2,2,8,1,0,0,1,1,2,1,0 1,3,1,2,0,8,2,0,1,1,1,1,1,0 0,0,15,0,2,8,3,0,1,1,1,0,1,0 0,5,4,3,2,5,3,0,0,1,1,0,1,1 0,5,3,2,0,2,2,0,1,1,1,0,1,0 0,0,3,2,2,1,1,0,1,1,1,0,1,0 2,2,3,2,0,4,2,0,1,1,1,1,1,0 1,0,3,2,0,1,2,4,1,1,1,1,1,0 1,0,3,2,0,11,0,0,0,1,1,2,1,1 2,1,2,1,0,3,2,0,1,1,1,1,1,1 0,0,3,2,2,1,3,0,1,1,1,0,1,0 0,0,6,2,0,4,2,0,1,1,1,1,1,1 1,0,3,2,0,1,2,0,1,1,1,1,1,0 1,0,5,2,2,5,3,0,1,1,1,1,1,0 0,0,3,2,0,9,2,0,1,1,1,1,1,0 0,0,10,3,2,5,1,0,0,1,1,0,1,0 1,0,0,3,0,5,2,0,1,1,1,0,1,1 0,1,3,2,2,1,3,0,1,1,1,2,1,0 0,0,1,2,2,6,1,0,1,1,1,2,1,0 2,0,3,2,0,4,2,0,1,1,1,0,1,1 2,0,3,2,0,5,2,0,1,1,1,2,1,0 1,0,3,2,2,1,1,0,1,1,1,0,1,0 0,0,3,2,2,7,3,0,1,1,1,0,1,0 1,4,0,3,2,5,5,4,0,1,1,0,1,0 1,4,0,3,2,2,3,4,1,1,1,1,1,0 0,0,1,2,2,2,3,0,1,1,1,2,1,0 0,0,10,3,0,5,2,0,1,1,1,0,1,1 1,4,1,2,1,8,5,0,0,1,1,0,1,0 0,0,6,2,2,4,5,2,0,1,1,0,1,0 1,0,0,3,0,3,2,0,1,1,1,1,1,0 0,0,7,1,0,2,2,0,1,1,1,2,1,0 0,0,10,3,2,5,3,0,0,1,1,0,1,0 0,0,0,3,2,5,3,0,0,1,1,0,1,0 1,2,10,3,1,5,3,0,1,1,1,0,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 1,0,3,2,0,2,4,1,1,1,1,0,1,0 1,0,2,1,1,7,3,0,1,1,1,0,1,0 1,0,6,2,1,4,3,0,0,1,1,1,1,0 1,1,4,3,2,5,3,0,0,1,1,2,1,0 0,0,0,3,2,8,3,0,0,1,1,0,1,0 1,0,5,2,0,4,2,0,1,1,1,1,1,1 1,0,1,2,0,10,2,0,1,1,1,2,1,0 0,0,3,2,0,1,2,0,1,1,1,1,1,0 0,0,1,2,0,8,0,0,0,1,1,2,1,0 0,0,2,1,2,2,1,0,0,1,1,2,1,0 1,1,1,2,0,6,2,0,1,1,1,0,1,0 0,0,0,3,2,5,3,0,1,1,1,0,1,0 1,0,1,2,0,5,2,0,1,1,1,0,1,1 1,0,1,2,1,0,5,4,0,1,1,2,1,0 2,2,0,3,3,3,5,0,1,1,1,1,1,0 0,5,3,2,2,8,1,0,0,1,1,0,1,0 0,5,0,3,0,12,2,0,1,1,1,0,1,0 0,0,12,1,2,3,1,0,0,1,1,2,1,0 0,0,1,2,1,1,5,0,1,1,1,0,1,0 1,0,0,3,0,1,2,0,1,1,1,0,1,1 0,0,5,2,0,5,2,4,1,1,1,1,1,1 1,0,3,2,1,8,5,0,0,1,1,1,1,0 3,0,3,2,2,10,3,0,1,1,1,2,1,0 1,0,3,2,5,6,3,0,1,1,1,0,1,0 1,3,4,3,0,5,2,0,1,1,1,1,1,1 1,0,6,2,0,0,2,0,1,1,1,1,1,1 0,0,3,2,1,2,5,0,0,1,1,2,1,0 1,0,3,2,1,1,3,0,1,1,1,0,1,0 1,0,1,2,0,0,2,0,1,1,1,1,1,1 1,0,1,2,3,1,5,0,0,1,1,0,1,0 0,0,3,2,2,1,1,0,1,1,1,0,1,0 1,3,1,2,1,8,3,0,0,1,1,2,1,0 0,0,3,2,0,10,2,0,1,1,1,1,1,0 1,0,1,2,0,5,2,0,1,1,1,0,1,0 0,1,3,2,2,1,1,0,1,1,1,0,1,0 1,5,6,2,0,0,2,0,1,1,1,0,1,1 1,5,1,2,1,8,3,0,0,1,1,2,1,0 1,0,0,3,0,4,2,0,1,1,1,0,1,0 0,0,12,1,2,2,1,0,0,1,1,2,1,0 1,4,10,3,2,5,3,0,0,1,1,0,1,0 1,0,3,2,0,3,2,0,1,1,1,1,1,1 0,0,2,1,2,2,1,0,0,1,1,2,1,0 0,1,0,3,0,3,0,0,0,1,1,0,1,1 0,0,8,0,0,10,2,0,1,1,1,0,1,0 1,4,10,3,2,5,3,0,1,1,1,1,1,1 0,0,3,2,2,10,3,0,1,1,1,0,1,0 0,0,1,2,2,10,1,0,1,1,1,0,1,0 1,2,3,2,2,3,5,1,1,1,1,0,1,0 0,0,3,2,0,3,2,0,1,1,1,1,1,0 1,4,0,3,2,12,3,0,0,1,1,0,1,0 0,5,0,3,2,5,3,1,1,1,1,2,1,0 1,1,1,2,1,1,5,0,0,1,1,2,1,0 1,0,0,3,0,3,2,0,1,1,1,2,1,1 0,0,3,2,2,8,3,0,1,1,1,2,1,0 2,0,0,3,0,7,2,0,1,1,1,0,1,1 1,1,8,0,0,9,2,0,1,1,1,1,1,0 0,0,1,2,2,1,1,0,1,1,1,0,1,0 0,0,3,2,2,2,1,0,1,1,1,2,1,0 0,0,0,3,2,3,1,0,1,1,1,1,1,0 0,5,1,2,2,2,3,1,1,1,1,1,1,0 1,2,10,3,0,4,2,0,1,1,1,0,1,0 0,3,13,3,0,5,2,0,1,1,1,0,1,0 2,0,1,2,2,2,3,0,1,1,1,2,1,0 1,0,0,3,0,4,2,0,1,1,1,0,1,1 0,0,3,2,0,2,0,0,0,1,1,2,1,0 1,2,2,1,0,3,2,0,1,1,1,1,1,1 1,5,1,2,1,8,1,3,0,1,1,0,1,0 0,0,1,2,1,7,3,0,1,1,1,1,1,0 1,0,3,2,0,10,2,0,1,1,1,0,1,0 0,4,10,3,0,5,2,0,1,1,1,1,1,1 1,0,0,3,2,8,1,0,0,1,1,1,1,0 1,1,3,2,0,9,2,0,1,1,1,1,1,1 1,5,3,2,0,1,2,0,1,1,1,1,1,1 1,3,3,2,0,7,2,0,1,1,1,1,1,0 1,0,1,2,4,0,5,0,0,1,1,2,1,0 0,0,3,2,2,8,4,0,0,1,1,0,1,0 1,0,3,2,1,4,5,0,0,1,1,0,1,0 1,0,6,2,1,8,5,0,0,1,1,1,1,0 2,1,3,2,0,3,2,0,1,1,1,1,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,1,2,0,8,0,0,0,1,1,1,1,0 1,0,3,2,0,7,2,0,1,1,1,1,1,1 1,0,3,2,0,7,2,0,1,1,1,0,1,0 0,5,1,2,1,5,3,0,0,1,1,0,1,0 1,1,8,0,0,7,2,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 1,0,5,2,2,0,3,0,1,1,1,0,1,0 0,0,1,2,0,1,2,0,1,1,1,1,1,0 1,3,1,2,1,8,5,4,0,1,1,0,1,0 1,1,5,2,4,5,5,0,0,1,1,1,1,0 1,0,7,1,0,4,2,2,1,1,1,1,1,0 1,0,3,2,2,7,3,0,0,1,1,0,1,0 2,3,10,3,0,5,2,0,1,1,1,2,1,1 0,1,12,1,0,1,2,0,1,1,1,1,1,0 0,0,9,1,2,3,1,4,0,1,1,0,1,0 0,0,1,2,2,0,1,0,1,1,1,2,1,0 0,0,1,2,3,8,3,0,0,1,1,0,1,0 1,4,3,2,2,8,1,0,0,1,1,2,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 0,1,2,1,2,9,5,0,1,1,1,0,1,0 3,1,0,3,0,4,2,0,1,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,2,1,0 0,0,1,2,2,8,1,3,1,1,1,2,1,0 1,0,1,2,0,5,2,0,1,1,1,1,1,1 1,3,3,2,1,4,3,0,1,1,1,0,1,1 1,2,0,3,2,2,3,0,0,1,1,1,1,1 1,0,1,2,0,2,0,0,0,1,1,2,1,1 0,0,1,2,2,3,3,0,0,1,1,0,1,0 2,0,6,2,1,4,3,0,0,1,1,2,1,0 0,0,0,3,2,8,1,0,1,1,1,2,1,0 0,0,0,3,0,5,2,0,1,1,1,1,1,1 1,0,1,2,0,4,2,0,1,1,1,1,1,1 1,1,3,2,2,9,1,0,1,1,1,1,1,0 1,0,10,3,0,5,0,0,0,1,1,1,1,1 2,0,1,2,0,8,2,0,1,1,1,0,1,0 0,0,3,2,0,6,2,4,1,1,1,0,1,0 0,0,3,2,2,7,1,0,1,1,1,0,1,0 1,0,1,2,0,6,0,0,0,1,1,1,1,0 0,0,9,1,0,10,2,0,1,1,1,1,1,1 0,0,3,2,2,2,3,0,1,1,1,1,1,0 0,3,9,1,2,8,3,4,1,1,1,0,1,0 0,4,0,3,2,5,1,0,0,1,1,0,1,0 1,1,0,3,0,1,2,0,1,1,1,0,1,1 0,0,1,2,0,1,2,0,1,1,1,0,1,1 1,4,10,3,1,4,3,0,1,1,1,1,1,1 0,0,3,2,0,7,2,0,1,1,1,1,1,0 0,1,3,2,0,9,2,0,1,1,1,1,1,0 2,0,2,1,0,7,2,0,1,1,1,0,1,0 0,0,12,1,2,3,1,0,1,1,1,2,1,0 1,0,0,3,1,2,5,0,1,1,1,1,1,0 0,0,3,2,0,10,2,0,1,1,1,1,1,0 1,0,0,3,1,1,3,4,0,1,1,0,1,0 0,0,0,3,0,3,2,0,1,1,1,1,1,1 2,1,0,3,0,5,2,0,1,1,1,2,1,0 3,1,8,0,0,10,2,0,1,1,1,2,1,0 0,0,3,2,2,6,3,2,0,1,1,0,1,0 0,0,3,2,2,9,3,0,1,1,1,1,1,0 0,0,10,3,3,5,3,0,0,1,1,2,1,0 1,0,3,2,2,8,3,4,1,1,1,1,1,0 3,0,12,1,0,2,2,4,1,1,1,2,1,0 2,1,8,0,0,9,2,0,1,1,1,0,1,1 0,4,0,3,0,3,2,0,1,1,1,1,1,0 1,4,6,2,0,1,2,0,1,1,1,2,1,0 2,0,0,3,0,5,2,0,1,1,1,0,1,1 0,0,0,3,0,6,2,0,1,1,1,0,1,0 0,0,10,3,0,5,0,1,0,1,1,2,1,0 1,0,2,1,0,10,4,0,1,1,1,0,1,0 2,0,10,3,0,3,2,0,1,1,1,2,1,1 1,2,13,3,0,5,2,0,1,1,1,1,1,1 1,0,3,2,0,3,2,0,1,1,1,1,1,0 0,0,6,2,2,1,4,0,1,1,1,0,1,0 0,0,10,3,0,4,2,0,1,1,1,0,1,1 0,0,1,2,2,5,1,0,0,1,1,2,1,1 2,1,3,2,1,5,3,0,1,1,1,2,1,0 0,0,1,2,0,10,2,0,1,1,1,1,1,1 0,2,3,2,0,1,2,0,1,1,1,0,1,1 0,0,3,2,2,3,3,0,0,1,1,1,1,0 0,0,3,2,0,6,2,4,1,1,1,0,1,0 0,0,3,2,0,7,0,0,0,1,1,2,1,0 0,0,3,2,0,1,2,0,1,1,1,1,1,0 1,0,1,2,0,3,2,0,1,1,1,1,1,0 1,0,3,2,1,2,4,0,1,1,1,0,1,0 0,0,1,2,2,10,1,0,1,1,1,0,1,0 0,4,3,2,1,12,4,0,1,1,1,1,1,0 0,0,0,3,2,5,1,0,0,1,1,2,1,0 0,5,1,2,1,8,3,4,0,1,1,0,1,0 1,0,0,3,1,5,5,0,0,1,1,0,1,1 0,0,0,3,2,3,1,0,1,1,1,0,1,0 1,4,5,2,0,12,2,0,1,1,1,1,1,1 0,0,7,1,0,1,2,3,1,1,1,1,1,0 0,0,3,2,2,3,1,0,0,1,1,2,1,0 2,0,3,2,1,8,3,0,0,1,1,0,1,0 0,0,4,3,0,5,2,0,1,1,1,1,1,1 1,0,0,3,1,4,3,0,0,1,1,1,1,0 1,0,1,2,0,0,0,0,0,1,1,2,1,0 0,1,3,2,0,1,2,0,1,1,1,0,1,0 2,4,0,3,3,5,5,4,0,1,1,0,1,1 1,0,12,1,0,7,2,0,1,1,1,1,1,0 2,1,1,2,0,8,2,0,1,1,1,1,1,0 2,5,10,3,0,5,0,0,0,1,1,2,1,0 2,0,3,2,4,1,3,0,1,1,1,0,1,0 1,0,3,2,0,2,2,1,1,1,1,0,1,0 0,1,3,2,0,1,2,0,1,1,1,1,1,0 1,0,3,2,3,1,5,0,0,1,1,1,1,0 1,0,0,3,0,4,2,0,1,1,1,0,1,1 0,0,8,0,0,9,4,0,1,1,1,2,1,0 0,0,1,2,2,3,3,4,0,1,1,2,1,0 1,5,3,2,0,12,2,0,1,1,1,0,1,1 0,0,1,2,2,8,1,0,0,1,1,2,1,0 2,0,6,2,1,0,3,0,0,1,1,1,1,0 0,0,12,1,0,7,2,0,1,1,1,1,1,0 0,0,0,3,2,3,1,0,1,1,1,0,1,0 2,0,3,2,0,1,2,0,1,1,1,0,1,1 2,4,1,2,0,12,2,0,1,1,1,0,1,0 1,1,1,2,0,3,2,2,1,1,1,0,1,0 0,0,3,2,2,7,1,0,1,1,1,2,1,0 0,2,0,3,0,3,2,0,1,1,1,1,1,1 1,0,3,2,0,10,2,0,1,1,1,1,1,0 2,0,1,2,1,8,3,0,0,1,1,2,1,0 1,0,10,3,0,5,2,0,1,1,1,2,1,1 0,0,3,2,2,8,1,0,0,1,1,2,1,0 0,0,3,2,2,6,1,4,0,1,1,2,1,0 0,0,1,2,1,4,5,4,0,1,1,0,1,0 2,0,5,2,1,2,3,0,0,1,1,1,1,0 1,1,0,3,0,1,4,0,1,1,1,2,1,1 0,0,0,3,2,5,5,0,1,1,1,0,1,0 0,1,3,2,0,9,2,0,1,1,1,0,1,0 2,5,10,3,0,5,2,0,1,1,1,2,1,1 0,1,1,2,3,2,5,0,0,1,1,0,1,0 2,0,3,2,1,11,3,4,0,1,1,2,1,0 0,2,3,2,2,9,1,0,1,1,1,0,1,0 2,5,0,3,0,4,2,0,1,1,1,0,1,1 0,0,1,2,2,8,3,0,1,1,1,2,1,0 1,4,5,2,0,1,2,3,1,1,1,0,1,1 1,5,0,3,2,3,3,0,1,1,1,2,1,0 0,0,3,2,2,11,1,0,0,1,1,0,1,0 0,0,0,3,2,4,3,0,0,1,1,0,1,0 1,4,10,3,1,5,5,0,0,1,1,2,1,1 0,0,3,2,2,6,3,0,1,1,1,0,1,0 0,5,0,3,0,5,0,4,0,1,1,2,1,0 1,0,2,1,1,7,5,4,0,1,1,0,1,0 0,0,3,2,1,2,1,0,0,1,1,2,1,0 1,2,0,3,0,1,2,0,1,1,1,0,1,0 0,0,3,2,2,6,1,0,0,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,1 1,0,1,2,0,1,2,0,1,1,1,0,1,1 0,0,3,2,5,10,4,0,0,1,1,0,1,0 1,0,5,2,1,8,3,0,0,1,1,0,1,0 1,0,5,2,3,8,5,0,0,1,1,0,1,1 0,0,2,1,2,3,3,0,1,1,1,2,1,0 0,0,3,2,1,0,5,0,0,1,1,0,1,0 0,0,3,2,1,2,5,0,0,1,1,2,1,0 2,0,1,2,0,5,2,0,1,1,1,0,1,1 1,0,3,2,1,8,5,0,0,1,1,0,1,0 0,0,1,2,2,7,4,4,1,1,1,2,1,0 0,5,1,2,2,12,3,4,1,1,1,1,1,0 2,0,6,2,4,5,5,0,0,1,1,2,1,1 1,0,3,2,0,1,2,3,1,1,1,0,1,0 0,0,3,2,2,8,1,0,0,1,1,0,1,0 1,0,1,2,2,1,3,0,1,1,1,0,1,1 0,0,0,3,0,1,2,0,1,1,1,1,1,1 0,1,1,2,1,5,3,0,0,1,1,0,1,0 1,0,6,2,0,5,0,0,0,1,1,1,1,1 0,0,3,2,2,3,1,0,1,1,1,0,1,0 1,0,2,1,0,1,2,0,1,1,1,1,1,0 0,0,9,1,2,7,4,0,1,1,1,0,1,0 1,1,8,0,2,2,5,0,0,1,1,2,1,0 0,2,3,2,2,9,1,0,1,1,1,2,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,1 2,0,3,2,4,8,5,0,0,1,1,2,1,0 2,1,10,3,1,4,3,0,0,1,1,1,1,0 1,0,3,2,0,10,2,0,1,1,1,0,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,0 1,5,10,3,2,4,3,0,1,1,1,1,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 0,2,0,3,2,4,3,0,1,1,1,1,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 0,0,11,0,0,6,2,0,1,1,1,2,1,0 1,0,1,2,2,3,3,0,1,1,1,1,1,1 0,0,3,2,1,1,1,0,1,1,1,0,1,0 0,0,3,2,1,12,3,0,1,1,1,0,1,0 0,0,1,2,0,1,2,0,1,1,1,0,1,0 1,0,1,2,2,4,3,0,0,1,1,1,1,0 0,0,12,1,6,2,0,0,0,1,1,0,1,0 1,0,1,2,1,4,3,0,0,1,1,1,1,0 2,0,3,2,0,10,2,0,1,1,1,1,1,1 1,2,1,2,0,1,2,0,1,1,1,1,1,0 0,0,3,2,0,3,2,0,1,1,1,1,1,0 1,0,3,2,0,4,2,0,1,1,1,0,1,1 0,0,1,2,2,2,1,0,1,1,1,2,1,0 2,0,3,2,4,8,5,0,0,1,1,0,1,0 1,5,0,3,0,1,2,0,1,1,1,0,1,0 0,3,1,2,0,0,2,0,1,1,1,0,1,0 0,0,2,1,2,3,3,0,0,1,1,2,1,0 0,1,0,3,3,5,1,4,1,1,1,2,1,0 2,0,3,2,4,3,3,0,0,1,1,2,1,0 1,0,3,2,0,6,2,0,1,1,1,1,1,1 1,2,1,2,0,1,2,0,1,1,1,0,1,1 1,0,3,2,1,8,3,0,0,1,1,1,1,0 1,4,3,2,1,8,3,0,0,1,1,0,1,0 0,0,6,2,0,3,2,0,1,1,1,0,1,1 0,0,3,2,2,0,5,2,0,1,1,0,1,0 2,3,3,2,4,8,3,0,0,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,1 1,0,3,2,0,8,2,0,1,1,1,0,1,0 2,0,1,2,4,5,3,0,1,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,1,2,0,4,2,0,1,1,1,1,1,0 0,0,3,2,2,7,3,0,1,1,1,0,1,0 0,0,9,1,2,7,1,0,1,1,1,2,1,0 1,0,1,2,0,7,2,0,1,1,1,0,1,1 0,0,1,2,2,3,1,0,0,1,1,2,1,0 0,0,3,2,2,1,1,0,1,1,1,0,1,0 1,0,0,3,0,1,2,0,1,1,1,0,1,1 1,0,3,2,0,0,2,0,1,1,1,0,1,1 0,0,12,1,2,1,5,0,1,1,1,1,1,0 0,2,0,3,0,4,2,0,1,1,1,2,1,0 2,0,0,3,4,4,3,0,0,1,1,0,1,0 1,1,3,2,2,10,1,0,1,1,1,1,1,0 0,0,10,3,2,5,3,0,1,1,1,1,1,0 0,0,3,2,1,1,4,0,1,1,1,0,1,0 1,3,1,2,0,1,2,0,1,1,1,1,1,1 1,0,2,1,3,8,5,4,0,1,1,0,1,0 1,0,3,2,1,3,5,0,0,1,1,0,1,0 0,0,3,2,2,2,1,0,1,1,1,2,1,0 0,5,10,3,2,5,3,0,1,1,1,0,1,0 1,1,3,2,0,1,2,0,1,1,1,2,1,0 0,0,3,2,0,7,0,4,0,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,1,1,1 0,0,3,2,0,1,2,1,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,14,0,0,9,2,0,1,1,1,2,1,0 0,0,1,2,2,7,1,0,1,1,1,2,1,0 0,0,6,2,2,8,1,0,0,1,1,2,1,0 1,0,3,2,0,4,2,0,1,1,1,1,1,0 1,0,3,2,0,1,2,0,1,1,1,2,1,0 0,0,3,2,0,7,2,0,1,1,1,1,1,0 0,0,0,3,2,5,1,0,1,1,1,0,1,0 1,0,0,3,0,3,2,0,1,1,1,1,1,1 0,0,1,2,4,1,1,0,1,1,1,1,1,0 0,0,3,2,2,7,3,0,0,1,1,0,1,0 0,1,3,2,0,1,2,0,1,1,1,0,1,0 1,0,6,2,2,3,3,0,1,1,1,0,1,0 1,0,3,2,2,4,3,4,1,1,1,1,1,0 1,0,2,1,1,10,3,4,0,1,1,0,1,0 1,0,3,2,0,8,2,0,1,1,1,0,1,0 0,4,0,3,2,5,1,0,0,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 0,0,3,2,0,3,2,0,1,1,1,2,1,0 1,1,1,2,0,9,2,0,1,1,1,1,1,0 0,0,6,2,2,5,3,0,1,1,1,1,1,0 1,0,1,2,1,0,3,0,1,1,1,0,1,0 1,0,3,2,3,1,3,0,1,1,1,2,1,0 0,0,1,2,3,8,4,3,0,1,1,0,1,0 0,0,2,1,2,2,1,0,1,1,1,2,1,0 2,5,3,2,4,8,3,0,0,1,1,0,1,0 0,0,0,3,2,5,3,0,0,1,1,2,1,0 0,0,3,2,0,1,2,0,1,1,1,1,1,1 1,0,0,3,2,5,3,4,0,1,1,1,1,1 1,0,8,0,0,1,2,0,1,1,1,1,1,0 0,0,0,3,2,3,3,0,1,1,1,1,1,0 0,5,1,2,2,1,4,0,1,1,1,0,1,0 1,0,3,2,0,1,0,0,0,1,1,2,1,0 1,0,3,2,0,4,2,0,1,1,1,1,1,1 0,0,3,2,2,8,3,0,1,1,1,0,1,0 0,0,3,2,0,3,2,0,1,1,1,1,1,1 2,0,12,1,4,10,5,0,0,1,1,0,1,0 1,3,0,3,0,12,2,0,1,1,1,1,1,1 0,0,12,1,0,6,2,0,1,1,1,2,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 1,0,1,2,0,3,2,0,1,1,1,0,1,0 0,0,14,0,2,2,4,0,1,1,1,2,1,0 0,0,1,2,3,2,3,0,1,1,1,0,1,0 0,0,3,2,2,2,1,0,0,1,1,2,1,0 0,0,3,2,2,2,1,0,1,1,1,0,1,0 2,0,3,2,0,6,2,0,1,1,1,0,1,1 2,0,0,3,0,3,2,0,1,1,1,2,1,1 0,0,1,2,2,3,1,0,0,1,1,2,1,0 1,0,3,2,0,1,0,0,0,1,1,1,1,1 0,0,9,1,2,9,1,0,1,1,1,2,1,0 1,0,6,2,0,12,2,0,1,1,1,1,1,1 0,0,1,2,2,3,3,0,0,1,1,2,1,0 0,0,5,2,2,8,4,0,0,1,1,2,1,0 1,0,1,2,0,10,2,4,1,1,1,0,1,0 1,0,2,1,2,3,3,4,0,1,1,2,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,3,2,2,7,3,0,1,1,1,0,1,0 1,4,10,3,2,4,3,0,0,1,1,1,1,1 1,0,0,3,0,8,2,0,1,1,1,0,1,1 0,0,3,2,0,10,2,0,1,1,1,1,1,0 2,1,13,3,4,4,3,0,0,1,1,0,1,1 1,4,10,3,0,5,0,0,0,1,1,1,1,1 1,0,5,2,1,4,3,0,1,1,1,1,1,1 0,0,1,2,0,7,2,0,1,1,1,0,1,0 1,1,5,2,1,2,5,0,0,1,1,2,1,0 2,1,12,1,0,1,2,0,1,1,1,0,1,0 1,0,1,2,1,4,3,0,1,1,1,1,1,0 2,0,6,2,0,7,2,0,1,1,1,1,1,1 2,0,1,2,1,4,3,0,1,1,1,0,1,0 1,0,3,2,2,7,3,4,1,1,1,0,1,1 0,5,1,2,2,5,3,0,0,1,1,2,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,6,2,0,5,2,0,1,1,1,0,1,0 1,5,10,3,1,4,3,0,0,1,1,1,1,0 1,0,12,1,2,7,3,0,1,1,1,0,1,0 0,0,1,2,2,2,3,0,0,1,1,2,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,1 2,1,0,3,1,2,3,0,0,1,1,2,1,0 1,1,3,2,5,1,3,1,1,1,1,1,1,1 0,0,2,1,2,2,1,0,1,1,1,2,1,0 2,1,10,3,5,5,3,0,0,1,1,0,1,0 0,0,1,2,2,12,1,0,0,1,1,0,1,0 0,0,1,2,2,8,5,3,0,1,1,1,1,0 1,2,4,3,0,5,2,0,1,1,1,1,1,1 0,0,1,2,0,5,0,0,0,1,1,0,1,1 0,3,12,1,2,2,5,4,0,1,1,0,1,0 0,0,6,2,0,1,2,0,1,1,1,0,1,0 1,0,3,2,0,2,2,0,1,1,1,0,1,0 1,0,6,2,4,2,5,0,0,1,1,2,1,0 1,1,3,2,1,10,3,0,1,1,1,1,1,0 0,5,1,2,2,4,3,0,0,1,1,2,1,0 2,0,3,2,0,2,2,0,1,1,1,1,1,0 2,0,7,1,1,6,3,0,1,1,1,2,1,0 1,0,8,0,2,2,3,0,1,1,1,2,1,0 0,0,0,3,2,2,3,0,1,1,1,0,1,0 0,0,3,2,2,10,3,0,1,1,1,0,1,0 1,0,6,2,2,5,3,0,0,1,1,1,1,0 1,0,0,3,3,3,3,0,1,1,1,1,1,1 1,3,1,2,0,8,2,0,1,1,1,0,1,1 0,0,0,3,0,3,2,0,1,1,1,1,1,1 0,0,10,3,2,4,3,0,1,1,1,0,1,0 0,0,2,1,0,1,2,1,1,1,1,0,1,1 2,0,3,2,4,2,3,0,0,1,1,2,1,0 2,1,3,2,0,1,2,0,1,1,1,0,1,0 1,0,13,3,1,5,5,0,0,1,1,2,1,0 2,5,0,3,0,5,2,0,1,1,1,1,1,1 0,1,3,2,1,2,5,0,0,1,1,0,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,1 1,1,3,2,0,5,2,0,1,1,1,0,1,0 2,0,3,2,1,2,3,0,0,1,1,0,1,0 0,6,3,2,2,2,1,0,1,1,1,2,1,0 1,0,6,2,2,6,3,0,1,1,1,0,1,0 0,0,1,2,2,4,3,0,0,1,1,2,1,0 0,0,10,3,2,10,3,0,1,1,1,2,1,0 1,0,1,2,0,8,1,0,0,1,1,2,1,1 0,4,0,3,2,5,3,0,0,1,1,1,1,0 2,0,1,2,0,10,2,0,1,1,1,1,1,0 1,0,3,2,0,5,2,0,1,1,1,1,1,0 1,0,1,2,0,4,2,0,1,1,1,1,1,1 2,0,3,2,0,6,2,0,1,1,1,0,1,1 1,0,3,2,1,7,5,4,0,1,1,0,1,0 0,2,5,2,0,3,2,0,1,1,1,0,1,0 1,0,8,0,0,8,2,0,1,1,1,0,1,0 0,0,7,1,2,11,5,0,0,1,1,2,1,0 0,0,10,3,0,5,2,0,1,1,1,1,1,1 0,0,3,2,2,2,1,0,1,1,1,2,1,0 0,1,7,1,0,1,2,0,1,1,1,2,1,0 2,0,3,2,0,4,2,0,1,1,1,1,1,1 1,0,3,2,0,7,2,0,1,1,1,2,1,1 1,5,3,2,1,4,5,0,0,1,1,2,1,0 1,3,10,3,1,4,5,0,0,1,1,0,1,1 0,0,14,0,0,6,2,0,1,1,1,0,1,0 0,4,0,3,1,12,3,0,0,1,1,0,1,0 0,0,1,2,2,2,3,0,1,1,1,0,1,0 3,0,14,0,0,2,2,0,1,1,1,2,1,0 0,0,14,0,0,2,2,0,1,1,1,1,1,0 0,0,3,2,0,0,0,0,0,1,1,0,1,1 1,0,6,2,0,10,2,0,1,1,1,2,1,1 0,0,1,2,2,8,1,0,0,1,1,2,1,0 1,0,5,2,0,0,2,0,1,1,1,0,1,1 1,0,0,3,1,4,3,0,1,1,1,1,1,0 1,2,3,2,0,3,0,0,0,1,1,2,1,0 0,0,1,2,0,0,2,4,1,1,1,2,1,0 2,0,8,0,0,2,2,4,1,1,1,0,1,0 2,0,12,1,0,10,2,0,1,1,1,1,1,1 1,0,1,2,2,8,3,0,1,1,1,2,1,0 0,0,3,2,2,3,1,0,1,1,1,0,1,0 2,0,1,2,1,3,3,0,1,1,1,1,1,0 1,5,10,3,2,5,3,4,0,1,1,0,1,0 0,0,5,2,0,3,2,0,1,1,1,1,1,0 0,0,2,1,2,2,1,0,1,1,1,2,1,0 0,0,3,2,2,6,1,0,1,1,1,0,1,0 1,0,5,2,0,4,2,0,1,1,1,1,1,1 0,0,2,1,2,7,3,0,0,1,1,2,1,0 0,0,1,2,2,6,1,0,1,1,1,0,1,0 1,0,3,2,2,8,3,0,0,1,1,2,1,0 1,3,5,2,2,8,5,0,0,1,1,0,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 1,0,3,2,0,3,2,0,1,1,1,1,1,0 0,0,3,2,2,2,1,2,1,1,1,2,1,0 0,0,6,2,2,6,3,0,1,1,1,0,1,0 0,5,3,2,2,8,3,0,0,1,1,0,1,0 0,0,3,2,2,2,1,0,0,1,1,0,1,0 1,5,3,2,0,2,2,0,1,1,1,0,1,0 2,0,3,2,0,10,2,4,1,1,1,2,1,0 0,0,1,2,2,8,3,4,0,1,1,2,1,0 0,4,12,1,0,2,0,2,0,1,1,2,1,0 1,0,6,2,0,1,2,0,1,1,1,0,1,1 0,1,1,2,2,1,1,0,1,1,1,1,1,0 0,4,3,2,2,2,1,0,1,1,1,2,1,0 0,1,0,3,0,5,2,0,1,1,1,2,1,1 2,0,3,2,4,2,5,0,0,1,1,0,1,0 1,0,3,2,0,2,0,0,0,1,1,0,1,0 0,0,0,3,2,3,3,0,1,1,1,1,1,0 1,1,3,2,1,3,1,0,0,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,0,1,1 2,4,0,3,2,5,4,4,0,1,1,2,1,0 0,0,1,2,0,3,2,0,1,1,1,1,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,0 0,0,1,2,2,10,3,0,1,1,1,0,1,0 1,0,1,2,0,6,2,0,1,1,1,0,1,1 0,0,3,2,0,1,2,0,1,1,1,0,1,1 2,0,1,2,1,1,3,0,1,1,1,0,1,0 1,0,12,1,2,7,3,0,1,1,1,0,1,0 2,0,8,0,3,1,3,0,1,1,1,0,1,0 1,0,8,0,0,1,2,0,1,1,1,1,1,0 1,0,0,3,1,5,3,0,1,1,1,2,1,0 1,1,4,3,0,5,2,4,1,1,1,1,1,1 1,0,1,2,1,2,5,0,0,1,1,1,1,0 0,0,3,2,1,8,3,0,0,1,1,2,1,0 2,4,3,2,4,0,5,0,0,1,1,2,1,0 2,0,3,2,3,7,5,4,0,1,1,0,1,0 1,4,0,3,0,4,2,0,1,1,1,0,1,1 2,0,12,1,4,3,3,0,0,1,1,0,1,0 1,0,0,3,0,5,4,0,1,1,1,0,1,1 1,3,4,3,0,4,2,0,1,1,1,1,1,0 0,0,5,2,2,1,3,0,1,1,1,0,1,0 1,0,1,2,2,2,3,0,1,1,1,2,1,0 0,0,1,2,0,2,0,0,0,1,1,2,1,0 3,0,8,0,0,1,2,0,1,1,1,0,1,0 0,0,3,2,0,3,0,0,0,1,1,2,1,0 0,0,12,1,2,6,1,0,1,1,1,2,1,0 2,0,0,3,0,5,2,0,1,1,1,1,1,1 1,0,0,3,0,4,2,0,1,1,1,1,1,0 0,0,0,3,1,5,5,0,0,1,1,0,1,0 0,0,2,1,2,11,1,0,1,1,1,2,1,0 0,0,1,2,2,3,3,0,1,1,1,2,1,1 1,3,1,2,0,8,2,0,1,1,1,0,1,1 0,0,3,2,0,1,2,0,1,1,1,0,1,0 1,4,10,3,1,5,3,0,0,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,1,1,0 0,0,9,1,2,3,1,0,0,1,1,2,1,0 1,0,3,2,4,2,5,0,1,1,1,2,1,0 1,0,9,1,1,7,5,1,0,1,1,0,1,0 0,0,3,2,3,8,3,0,0,1,1,1,1,0 0,1,1,2,2,9,1,0,1,1,1,1,1,0 0,0,5,2,2,5,3,0,0,1,1,1,1,0 0,0,3,2,1,2,5,0,0,1,1,2,1,0 0,0,1,2,2,8,3,0,0,1,1,0,1,0 0,5,3,2,2,8,3,4,0,1,1,2,1,0 1,0,5,2,0,1,2,0,1,1,1,1,1,0 1,0,5,2,0,0,2,0,1,1,1,1,1,0 2,2,6,2,0,1,2,0,1,1,1,0,1,0 0,0,7,1,2,6,4,0,1,1,1,0,1,0 2,0,0,3,4,2,4,4,0,1,1,2,1,0 1,0,3,2,0,3,0,0,0,1,1,0,1,0 2,4,10,3,2,5,3,0,0,1,1,1,1,1 2,0,3,2,0,3,2,0,1,1,1,1,1,0 0,2,3,2,2,4,1,0,1,1,1,1,1,0 2,0,8,0,0,10,2,0,1,1,1,1,1,0 3,0,3,2,4,2,3,0,0,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,2,6,1,0,1,1,1,1,1,0 0,0,3,2,1,8,3,0,1,1,1,0,1,0 1,0,1,2,3,3,5,4,0,1,1,2,1,0 0,0,0,3,0,10,2,0,1,1,1,1,1,0 1,5,1,2,0,2,2,0,1,1,1,0,1,0 0,0,3,2,0,10,2,0,1,1,1,1,1,0 0,0,1,2,2,8,1,0,0,1,1,2,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,1 1,0,3,2,1,8,5,0,0,1,1,0,1,0 1,0,13,3,0,5,2,0,1,1,1,1,1,1 0,0,2,1,0,1,2,0,1,1,1,1,1,1 0,0,1,2,0,7,2,0,1,1,1,1,1,0 0,0,9,1,2,3,4,0,0,1,1,0,1,0 0,0,2,1,0,1,2,0,1,1,1,0,1,0 1,0,1,2,0,6,2,0,1,1,1,0,1,0 0,0,1,2,2,9,1,0,1,1,1,0,1,0 0,0,2,1,2,10,1,0,1,1,1,2,1,0 1,0,6,2,0,1,2,0,1,1,1,2,1,0 1,5,1,2,0,12,2,0,1,1,1,0,1,1 1,3,10,3,0,1,2,0,1,1,1,1,1,1 0,0,0,3,2,3,3,0,1,1,1,0,1,0 2,0,3,2,0,8,0,0,0,1,1,0,1,0 1,0,3,2,2,2,3,0,0,1,1,2,1,0 0,1,3,2,0,4,2,0,1,1,1,1,1,1 0,2,1,2,0,1,2,0,1,1,1,1,1,1 1,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,14,0,1,7,3,0,0,1,1,0,1,0 2,0,3,2,0,3,2,0,1,1,1,2,1,0 1,0,3,2,2,2,3,0,1,1,1,2,1,0 0,0,1,2,2,8,3,4,0,1,1,1,1,0 0,0,9,1,2,3,1,0,0,1,1,2,1,0 0,0,1,2,2,8,1,1,0,1,1,0,1,0 1,0,3,2,0,3,2,0,1,1,1,1,1,0 1,0,3,2,0,7,2,0,1,1,1,1,1,0 0,4,3,2,1,10,5,0,0,1,1,1,1,0 0,0,3,2,2,3,1,0,0,1,1,2,1,0 0,0,3,2,2,0,1,0,0,1,1,2,1,0 2,0,8,0,0,10,2,4,1,1,1,0,1,0 1,0,6,2,0,4,0,0,0,1,1,1,1,1 0,0,12,1,0,1,2,0,1,1,1,0,1,0 2,5,3,2,1,8,1,0,0,1,1,2,1,0 1,4,10,3,0,5,2,0,1,1,1,1,1,1 0,2,1,2,2,1,1,0,1,1,1,0,1,0 2,1,3,2,0,3,2,0,1,1,1,1,1,0 2,4,1,2,4,7,3,0,1,1,1,2,1,0 0,0,0,3,2,3,1,0,0,1,1,2,1,0 2,0,6,2,5,4,3,0,0,1,1,1,1,0 0,0,1,2,2,8,3,0,0,1,1,0,1,0 1,0,6,2,0,0,2,0,1,1,1,1,1,1 2,1,3,2,0,10,2,0,1,1,1,1,1,0 0,0,11,0,2,9,1,0,0,1,1,0,1,0 1,0,3,2,3,3,3,0,0,1,1,0,1,0 1,0,1,2,0,9,2,0,1,1,1,0,1,0 0,5,10,3,0,4,2,0,1,1,1,0,1,1 0,2,3,2,0,1,2,0,1,1,1,1,1,0 1,0,1,2,3,2,5,0,0,1,1,0,1,0 0,0,9,1,2,1,5,0,1,1,1,0,1,0 1,0,3,2,0,4,2,0,1,1,1,1,1,1 1,0,3,2,2,2,3,0,1,1,1,0,1,0 0,0,1,2,2,8,1,0,0,1,1,2,1,0 1,0,0,3,0,3,2,0,1,1,1,1,1,1 0,0,1,2,2,0,3,0,1,1,1,1,1,0 2,0,1,2,1,0,5,0,0,1,1,1,1,0 0,0,3,2,2,2,3,0,0,1,1,2,1,0 1,3,5,2,4,4,5,0,1,1,1,0,1,1 1,0,10,3,0,4,2,0,1,1,1,1,1,1 2,0,3,2,1,6,3,0,1,1,1,2,1,0 1,0,0,3,1,3,3,0,1,1,1,0,1,1 0,0,1,2,0,1,2,0,1,1,1,1,1,1 1,0,1,2,0,7,2,0,1,1,1,1,1,0 0,0,6,2,2,10,1,0,1,1,1,1,1,0 0,0,3,2,2,8,1,0,1,1,1,2,1,0 0,0,3,2,0,10,4,4,1,1,1,0,1,0 0,0,8,0,0,9,2,0,1,1,1,2,1,0 2,5,1,2,0,8,2,0,1,1,1,0,1,0 3,1,3,2,4,9,3,0,1,1,1,1,1,0 0,5,0,3,0,5,0,4,0,1,1,2,1,0 0,0,1,2,2,8,3,1,0,1,1,2,1,0 2,4,10,3,0,4,2,0,1,1,1,0,1,1 1,1,3,2,0,1,2,0,1,1,1,2,1,0 1,0,11,0,0,6,2,0,1,1,1,1,1,0 0,5,1,2,1,2,5,0,1,1,1,0,1,1 3,6,8,0,0,9,2,0,1,1,1,2,1,0 1,0,3,2,0,2,0,0,0,1,1,0,1,1 0,0,3,2,2,3,1,4,0,1,1,0,1,0 0,0,0,3,2,4,1,0,0,1,1,0,1,0 1,0,7,1,2,2,3,0,1,1,1,2,1,0 0,0,3,2,2,1,3,0,1,1,1,0,1,0 1,4,1,2,1,12,3,0,1,1,1,1,1,0 1,0,2,1,2,11,5,0,0,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,0,3,2,8,1,0,0,1,1,1,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,1 0,0,12,1,2,7,1,0,1,1,1,2,1,0 1,0,10,3,1,3,3,0,1,1,1,1,1,1 1,4,1,2,1,8,3,0,0,1,1,1,1,0 1,2,6,2,0,9,2,0,1,1,1,1,1,1 0,0,12,1,5,2,5,4,0,1,1,2,1,0 0,0,3,2,1,3,3,0,1,1,1,0,1,0 2,0,10,3,4,4,1,0,1,1,1,1,1,1 0,0,1,2,2,1,3,0,1,1,1,1,1,0 2,0,1,2,2,8,3,0,0,1,1,2,1,0 0,4,3,2,0,10,2,0,1,1,1,0,1,0 1,0,3,2,1,6,5,0,1,1,1,0,1,0 2,0,3,2,4,4,5,0,0,1,1,1,1,0 0,0,0,3,2,4,3,0,0,1,1,1,1,0 0,0,9,1,2,6,1,0,1,1,1,2,1,0 0,0,0,3,1,5,3,0,1,1,1,1,1,0 0,0,0,3,2,4,3,0,1,1,1,2,1,0 0,0,3,2,0,4,2,1,1,1,1,1,1,1 0,0,12,1,2,7,3,0,1,1,1,2,1,0 0,4,3,2,2,6,4,4,1,1,1,0,1,0 0,4,1,2,1,8,5,0,0,1,1,1,1,0 0,0,1,2,2,10,1,0,1,1,1,2,1,0 2,0,3,2,2,3,4,4,0,1,1,0,1,0 0,0,3,2,1,3,3,0,1,1,1,1,1,0 0,0,0,3,0,5,2,0,1,1,1,0,1,0 0,0,3,2,2,1,3,3,1,1,1,0,1,0 0,0,7,1,0,1,2,0,1,1,1,1,1,0 0,4,2,1,0,5,0,4,0,1,1,2,1,0 0,0,3,2,2,2,1,0,0,1,1,0,1,0 1,0,8,0,2,9,3,0,1,1,1,0,1,0 1,0,0,3,0,3,2,0,1,1,1,1,1,0 1,0,3,2,2,10,3,0,1,1,1,0,1,0 1,0,6,2,0,12,2,0,1,1,1,0,1,0 1,4,10,3,0,5,2,0,1,1,1,0,1,0 1,1,0,3,0,5,2,0,1,1,1,0,1,0 1,0,0,3,1,2,3,4,1,1,1,0,1,0 0,0,3,2,0,4,2,0,1,1,1,2,1,0 1,0,1,2,0,3,2,0,1,1,1,1,1,0 1,0,3,2,3,11,3,4,0,1,1,1,1,0 0,0,2,1,2,2,1,0,1,1,1,2,1,0 0,0,3,2,2,2,1,4,1,1,1,2,1,0 0,0,3,2,2,7,1,0,1,1,1,0,1,0 0,0,9,1,0,9,2,0,1,1,1,0,1,0 0,1,3,2,0,9,2,0,1,1,1,0,1,0 0,0,1,2,0,4,0,0,0,1,1,1,1,1 1,5,10,3,2,4,3,0,0,1,1,1,1,1 1,0,0,3,2,5,1,0,1,1,1,1,1,0 2,3,1,2,0,8,2,0,1,1,1,1,1,0 0,2,3,2,2,9,3,0,1,1,1,1,1,0 1,5,3,2,0,7,2,0,1,1,1,0,1,0 0,0,1,2,2,5,3,0,1,1,1,2,1,0 1,0,0,3,0,3,2,0,1,1,1,1,1,1 1,0,1,2,0,5,2,0,1,1,1,0,1,1 0,0,3,2,2,2,3,0,1,1,1,2,1,0 2,0,12,1,1,2,3,0,0,1,1,2,1,0 1,0,5,2,1,8,1,0,0,1,1,1,1,0 1,0,3,2,2,2,1,2,1,1,1,2,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,1 2,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,3,11,1,0,0,1,1,0,1,0 0,0,3,2,2,8,1,4,1,1,1,2,1,0 0,0,3,2,2,10,1,0,1,1,1,2,1,0 1,0,3,2,0,6,2,0,1,1,1,0,1,0 1,5,10,3,1,5,3,0,1,1,1,2,1,0 0,0,3,2,0,3,2,0,1,1,1,1,1,0 0,0,0,3,2,2,3,0,0,1,1,0,1,0 2,0,0,3,1,6,3,0,1,1,1,2,1,0 0,0,6,2,0,1,2,0,1,1,1,1,1,0 0,5,0,3,0,5,2,0,1,1,1,1,1,0 1,0,3,2,1,7,3,0,1,1,1,0,1,0 0,0,9,1,2,1,1,0,1,1,1,2,1,0 0,0,0,3,2,0,4,0,0,1,1,1,1,0 0,0,0,3,2,4,3,0,0,1,1,0,1,0 1,2,4,3,4,5,5,0,1,1,1,1,1,1 0,0,3,2,0,10,2,0,1,1,1,1,1,0 0,0,0,3,3,5,3,0,1,1,1,0,1,1 0,4,2,1,2,5,1,0,0,1,1,2,1,0 2,3,10,3,0,0,0,0,0,1,1,0,1,1 2,0,3,2,4,1,5,0,1,1,1,0,1,0 1,0,3,2,2,4,5,0,1,1,1,1,1,0 0,0,6,2,0,1,2,2,1,1,1,1,1,0 1,0,1,2,3,7,3,4,1,1,1,0,1,0 1,0,10,3,2,5,3,4,1,1,1,1,1,0 0,0,12,1,2,6,3,0,1,1,1,2,1,0 0,0,3,2,2,6,1,0,1,1,1,2,1,0 0,0,0,3,2,8,1,4,0,1,1,0,1,0 0,0,3,2,2,2,4,3,0,1,1,2,1,0 0,0,0,3,0,5,2,0,1,1,1,0,1,1 0,0,7,1,0,9,2,0,1,1,1,1,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,0 0,0,1,2,2,2,4,0,0,1,1,2,1,0 0,0,5,2,0,7,2,0,1,1,1,1,1,0 1,0,3,2,1,3,3,0,0,1,1,0,1,0 0,0,6,2,0,4,0,0,0,1,1,2,1,1 2,0,0,3,0,1,2,0,1,1,1,1,1,1 0,0,1,2,3,8,5,4,0,1,1,2,1,0 1,0,13,3,2,5,1,0,0,1,1,2,1,0 0,0,0,3,2,5,1,0,1,1,1,0,1,0 2,0,3,2,0,1,2,4,1,1,1,1,1,1 0,0,3,2,2,3,1,0,0,1,1,2,1,0 2,0,3,2,0,8,0,0,0,1,1,2,1,1 1,2,0,3,2,4,3,0,1,1,1,1,1,1 1,2,1,2,0,5,2,4,1,1,1,0,1,1 0,0,3,2,2,2,1,0,1,1,1,0,1,0 0,0,3,2,2,8,3,0,0,1,1,0,1,0 1,1,3,2,0,9,2,0,1,1,1,1,1,0 2,0,1,2,0,8,2,0,1,1,1,0,1,0 0,0,1,2,0,3,2,0,1,1,1,0,1,0 1,2,0,3,0,3,2,0,1,1,1,1,1,1 0,0,3,2,1,1,1,0,1,1,1,0,1,0 0,0,3,2,0,2,2,0,1,1,1,0,1,0 0,0,2,1,2,6,1,0,1,1,1,2,1,0 0,0,0,3,0,4,0,0,0,1,1,2,1,0 2,0,3,2,0,6,2,0,1,1,1,0,1,0 1,0,5,2,1,8,3,0,0,1,1,0,1,0 1,0,10,3,2,8,3,0,0,1,1,2,1,0 0,0,12,1,2,2,1,0,0,1,1,2,1,0 1,0,3,2,1,2,3,0,1,1,1,0,1,0 1,1,5,2,1,4,5,0,0,1,1,1,1,0 0,0,3,2,2,7,5,4,0,1,1,0,1,0 1,0,0,3,0,10,2,0,1,1,1,1,1,1 1,3,3,2,1,4,3,0,1,1,1,1,1,0 1,0,3,2,2,7,1,4,0,1,1,0,1,0 1,0,0,3,0,3,2,0,1,1,1,0,1,1 0,1,3,2,0,1,2,0,1,1,1,1,1,0 2,0,2,1,0,3,2,0,1,1,1,1,1,1 1,0,6,2,0,9,2,1,1,1,1,0,1,1 0,0,1,2,3,7,3,0,1,1,1,0,1,0 0,0,3,2,0,10,2,0,1,1,1,1,1,0 2,5,0,3,0,4,2,3,1,1,1,2,1,0 1,0,0,3,1,5,3,4,1,1,1,2,1,0 2,0,1,2,0,10,2,0,1,1,1,1,1,0 0,4,0,3,2,5,1,0,1,1,1,0,1,0 0,0,1,2,0,7,2,2,1,1,1,0,1,0 1,0,1,2,2,4,3,0,0,1,1,1,1,1 0,0,0,3,2,5,3,0,1,1,1,0,1,0 2,2,3,2,0,3,2,0,1,1,1,1,1,1 1,0,1,2,5,2,5,0,1,1,1,0,1,0 0,0,1,2,2,0,1,4,0,1,1,2,1,0 0,0,3,2,3,6,1,4,1,1,1,0,1,0 1,0,1,2,0,6,2,0,1,1,1,1,1,0 1,0,1,2,0,1,2,0,1,1,1,1,1,1 2,1,8,0,0,9,2,0,1,1,1,2,1,0 0,0,3,2,2,2,3,0,0,1,1,2,1,0 0,0,0,3,2,4,5,0,0,1,1,2,1,0 1,0,10,3,0,5,2,0,1,1,1,0,1,1 1,0,3,2,1,2,5,0,0,1,1,2,1,0 1,0,1,2,0,3,2,0,1,1,1,1,1,0 2,2,3,2,0,3,2,0,1,1,1,0,1,0 0,0,8,0,5,2,3,0,1,1,1,2,1,0 2,0,3,2,0,7,2,0,1,1,1,0,1,1 1,5,1,2,0,4,2,0,1,1,1,1,1,1 1,0,3,2,0,1,2,0,1,1,1,0,1,1 2,0,1,2,5,3,1,1,0,1,1,1,1,1 0,0,10,3,2,5,3,4,0,1,1,2,1,0 1,0,6,2,2,9,3,0,1,1,1,1,1,0 1,0,1,2,1,2,1,0,0,1,1,2,1,0 0,0,3,2,2,2,1,0,1,1,1,0,1,0 2,0,1,2,1,0,5,4,0,1,1,0,1,0 1,0,6,2,1,3,3,0,1,1,1,1,1,0 0,4,1,2,0,12,2,4,1,1,1,1,1,1 0,0,3,2,2,1,1,0,1,1,1,1,1,0 0,0,1,2,2,3,3,0,1,1,1,2,1,0 0,0,1,2,2,4,1,0,1,1,1,2,1,0 2,0,0,3,0,4,2,0,1,1,1,0,1,0 1,2,1,2,0,9,2,0,1,1,1,1,1,1 1,2,0,3,2,5,3,0,1,1,1,0,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,0,3,2,3,1,0,1,1,1,1,1,0 2,0,12,1,2,10,3,0,1,1,1,0,1,0 0,0,0,3,2,8,3,0,1,1,1,0,1,0 1,0,3,2,0,10,2,4,1,1,1,1,1,0 1,0,3,2,1,2,5,0,1,1,1,0,1,0 0,0,1,2,2,1,3,0,1,1,1,1,1,0 0,5,0,3,2,5,1,4,1,1,1,2,1,0 0,0,6,2,2,3,3,0,1,1,1,1,1,0 1,0,6,2,1,2,3,0,0,1,1,2,1,0 1,4,6,2,0,4,2,0,1,1,1,0,1,1 0,0,0,3,0,3,2,0,1,1,1,0,1,1 1,0,5,2,0,4,2,0,1,1,1,1,1,1 0,0,1,2,2,7,3,0,1,1,1,0,1,0 0,2,3,2,0,3,2,0,1,1,1,1,1,0 1,0,1,2,0,4,0,0,0,1,1,0,1,1 0,0,3,2,1,2,3,0,0,1,1,2,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 2,0,3,2,1,2,3,0,0,1,1,0,1,0 0,0,1,2,2,3,3,0,0,1,1,0,1,0 0,1,2,1,2,3,1,0,1,1,1,0,1,0 1,0,1,2,1,0,3,0,0,1,1,0,1,0 2,0,3,2,0,1,2,0,1,1,1,1,1,1 2,0,0,3,0,5,2,0,1,1,1,1,1,1 2,0,1,2,0,4,2,0,1,1,1,0,1,1 2,0,1,2,0,6,2,0,1,1,1,0,1,1 1,0,0,3,3,5,5,0,0,1,1,1,1,1 1,0,1,2,0,4,2,0,1,1,1,1,1,1 1,1,6,2,0,1,2,0,1,1,1,0,1,0 2,4,3,2,1,8,5,0,0,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,0 1,0,3,2,2,1,3,0,1,1,1,0,1,0 0,0,1,2,2,2,1,0,0,1,1,0,1,0 0,0,3,2,2,8,3,4,0,1,1,0,1,0 0,1,3,2,2,1,3,0,1,1,1,2,1,0 2,0,10,3,0,5,2,3,1,1,1,0,1,1 0,0,1,2,2,2,1,0,0,1,1,2,1,0 1,0,3,2,1,2,5,0,0,1,1,0,1,0 0,0,0,3,2,3,3,0,0,1,1,1,1,1 1,1,1,2,0,9,2,0,1,1,1,1,1,1 2,4,12,1,1,8,5,0,0,1,1,0,1,0 0,0,3,2,5,6,3,0,1,1,1,0,1,0 0,4,3,2,2,8,3,0,0,1,1,0,1,0 0,3,0,3,2,4,3,0,0,1,1,0,1,0 1,0,1,2,1,8,1,0,1,1,1,0,1,0 1,0,3,2,2,2,3,2,1,1,1,0,1,0 0,0,3,2,2,6,4,0,1,1,1,2,1,0 1,4,0,3,1,5,5,0,0,1,1,2,1,0 2,0,14,0,1,7,4,0,0,1,1,0,1,0 0,0,3,2,2,2,3,0,1,1,1,0,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 0,0,6,2,2,7,3,0,1,1,1,0,1,0 0,0,3,2,0,6,2,0,1,1,1,0,1,0 0,2,3,2,0,1,2,0,1,1,1,1,1,0 0,1,1,2,2,2,1,0,1,1,1,2,1,0 1,1,0,3,0,4,2,0,1,1,1,0,1,0 0,0,1,2,2,8,5,1,0,1,1,0,1,0 0,0,1,2,2,4,3,0,1,1,1,1,1,0 0,0,0,3,0,4,2,0,1,1,1,0,1,0 1,0,3,2,0,4,2,0,1,1,1,1,1,1 0,0,1,2,0,1,2,0,1,1,1,1,1,0 0,0,6,2,2,4,3,0,0,1,1,2,1,0 0,0,1,2,2,7,3,0,1,1,1,1,1,0 0,4,0,3,2,5,1,0,1,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,1 0,0,3,2,2,3,1,4,1,1,1,2,1,0 2,1,3,2,0,3,2,0,1,1,1,1,1,0 0,4,3,2,2,2,1,4,1,1,1,2,1,0 0,0,0,3,0,8,2,0,1,1,1,0,1,0 1,0,6,2,2,5,5,0,0,1,1,0,1,0 1,0,6,2,1,4,3,0,1,1,1,0,1,0 1,2,0,3,0,5,2,0,1,1,1,2,1,0 1,0,1,2,0,6,2,0,1,1,1,1,1,0 1,4,6,2,1,4,5,0,0,1,1,1,1,0 2,0,3,2,4,8,3,0,0,1,1,2,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 2,0,6,2,1,7,3,4,1,1,1,0,1,0 0,0,3,2,2,8,1,0,0,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,1 2,1,10,3,0,4,2,0,1,1,1,2,1,0 1,0,3,2,5,8,4,0,0,1,1,0,1,0 3,0,1,2,1,3,3,0,0,1,1,2,1,1 0,5,1,2,2,8,3,0,0,1,1,2,1,0 0,1,3,2,2,9,1,0,1,1,1,0,1,0 2,1,10,3,3,5,3,0,1,1,1,0,1,1 1,2,1,2,1,5,3,0,1,1,1,0,1,0 1,0,10,3,0,5,2,0,1,1,1,1,1,1 0,1,1,2,2,2,3,4,1,1,1,1,1,0 2,0,0,3,0,5,2,0,1,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,1,1,1 1,3,1,2,2,4,1,4,0,1,1,0,1,0 1,0,3,2,1,2,3,0,0,1,1,0,1,0 0,0,0,3,2,3,3,0,1,1,1,1,1,0 2,0,3,2,0,7,2,0,1,1,1,0,1,1 1,0,3,2,0,10,2,0,1,1,1,1,1,1 1,0,0,3,2,4,3,0,0,1,1,0,1,0 0,0,10,3,0,5,2,0,1,1,1,0,1,1 1,1,3,2,0,9,2,0,1,1,1,0,1,0 1,0,6,2,0,1,2,4,1,1,1,1,1,0 1,0,1,2,1,3,3,0,0,1,1,1,1,0 1,0,0,3,0,1,2,0,1,1,1,2,1,0 0,0,1,2,0,1,2,0,1,1,1,0,1,1 1,0,3,2,0,0,2,0,1,1,1,0,1,0 0,0,2,1,2,3,1,4,1,1,1,2,1,0 1,0,3,2,0,8,0,0,0,1,1,2,1,0 0,0,3,2,1,1,3,0,1,1,1,0,1,0 1,0,3,2,3,8,5,4,0,1,1,0,1,0 1,0,3,2,2,3,3,0,0,1,1,0,1,0 0,4,1,2,2,1,3,0,1,1,1,2,1,0 2,0,3,2,1,5,3,0,0,1,1,1,1,0 0,0,5,2,2,8,5,4,0,1,1,0,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 2,0,3,2,1,1,3,0,1,1,1,0,1,1 0,0,0,3,2,3,3,0,0,1,1,1,1,0 0,0,0,3,2,4,3,0,0,1,1,1,1,1 0,0,3,2,2,7,4,0,1,1,1,1,1,0 2,4,10,3,0,5,2,0,1,1,1,1,1,1 0,0,9,1,0,1,2,0,1,1,1,2,1,0 1,1,1,2,0,7,2,0,1,1,1,1,1,0 1,3,3,2,0,8,2,0,1,1,1,0,1,1 3,1,4,3,4,5,3,0,1,1,1,1,1,0 0,1,14,0,2,5,5,0,1,1,1,2,1,0 1,0,3,2,0,2,2,1,1,1,1,0,1,0 0,0,5,2,2,2,3,0,1,1,1,1,1,0 0,0,1,2,3,1,5,0,1,1,1,1,1,0 0,0,1,2,1,8,5,0,0,1,1,2,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,7,1,0,6,2,0,1,1,1,0,1,0 0,1,1,2,0,9,0,0,0,1,1,2,1,0 2,0,1,2,0,4,2,0,1,1,1,0,1,1 0,0,1,2,2,2,1,0,1,1,1,2,1,0 2,4,7,1,0,4,2,0,1,1,1,0,1,0 1,0,12,1,0,7,2,0,1,1,1,1,1,0 1,0,10,3,0,3,2,0,1,1,1,1,1,1 1,0,3,2,0,6,2,0,1,1,1,0,1,0 0,0,1,2,2,5,1,0,1,1,1,2,1,0 0,0,3,2,2,8,3,0,0,1,1,1,1,0 2,0,3,2,5,11,3,0,0,1,1,2,1,0 2,1,8,0,0,9,2,0,1,1,1,1,1,1 0,0,3,2,2,3,3,0,1,1,1,1,1,0 1,0,0,3,0,1,2,0,1,1,1,0,1,0 1,1,0,3,0,9,2,0,1,1,1,1,1,0 1,2,0,3,0,3,2,0,1,1,1,0,1,1 2,0,3,2,4,8,3,0,0,1,1,0,1,0 1,2,6,2,0,9,2,0,1,1,1,0,1,0 1,1,1,2,2,4,3,0,1,1,1,0,1,0 1,0,6,2,0,2,2,0,1,1,1,2,1,0 0,0,10,3,2,3,4,0,0,1,1,2,1,0 0,0,1,2,2,7,1,0,0,1,1,2,1,0 0,0,3,2,2,7,5,0,0,1,1,0,1,0 0,2,0,3,2,4,1,0,1,1,1,1,1,0 0,0,3,2,0,3,2,0,1,1,1,0,1,1 0,0,1,2,1,6,3,0,1,1,1,0,1,0 0,0,3,2,2,7,1,0,1,1,1,0,1,0 1,0,1,2,0,4,2,0,1,1,1,1,1,1 1,0,1,2,0,1,2,0,1,1,1,0,1,1 1,1,0,3,0,4,2,0,1,1,1,0,1,1 2,0,3,2,0,5,0,0,0,1,1,2,1,0 0,0,0,3,2,5,1,0,0,1,1,1,1,0 1,1,6,2,0,1,2,0,1,1,1,1,1,0 2,0,3,2,2,0,3,0,0,1,1,2,1,0 2,0,1,2,0,1,2,0,1,1,1,0,1,1 0,4,10,3,2,5,3,4,0,1,1,2,1,0 1,1,3,2,1,1,3,0,1,1,1,0,1,0 0,0,2,1,3,2,5,4,0,1,1,0,1,0 1,0,3,2,2,1,3,0,1,1,1,1,1,1 1,0,6,2,1,4,5,0,0,1,1,0,1,0 1,2,0,3,0,3,2,0,1,1,1,1,1,1 2,4,3,2,0,4,2,0,1,1,1,2,1,0 0,4,0,3,2,5,3,0,1,1,1,2,1,0 1,0,1,2,1,1,1,0,1,1,1,2,1,0 1,0,0,3,0,5,0,0,0,1,1,0,1,1 0,0,1,2,2,8,1,0,1,1,1,2,1,0 3,0,1,2,4,2,3,0,0,1,1,2,1,0 2,0,8,0,0,10,2,0,1,1,1,0,1,0 1,4,3,2,1,1,1,0,1,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,0 2,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,1,2,0,9,2,0,1,1,1,0,1,0 0,0,1,2,0,8,1,4,0,1,1,0,1,0 2,0,3,2,1,8,3,0,0,1,1,1,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 1,0,1,2,1,8,3,1,1,1,1,0,1,0 0,4,3,2,0,12,2,0,1,1,1,0,1,0 1,0,0,3,0,5,2,0,1,1,1,0,1,1 1,0,6,2,0,4,2,0,1,1,1,1,1,1 2,0,10,3,1,4,3,0,0,1,1,0,1,1 1,5,1,2,0,6,2,0,1,1,1,0,1,0 2,0,1,2,1,3,3,0,0,1,1,1,1,0 0,0,1,2,2,3,1,0,0,1,1,0,1,0 2,0,14,0,0,7,2,0,1,1,1,0,1,1 0,0,6,2,0,5,2,0,1,1,1,0,1,1 0,0,3,2,0,1,2,0,1,1,1,1,1,0 1,0,3,2,4,4,3,0,0,1,1,1,1,1 1,1,0,3,1,3,3,0,0,1,1,1,1,1 0,0,3,2,2,6,4,4,1,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,0 1,0,9,1,2,8,5,4,0,1,1,0,1,0 1,3,3,2,0,1,2,0,1,1,1,1,1,1 0,0,6,2,2,1,3,0,1,1,1,1,1,0 1,0,7,1,0,1,2,0,1,1,1,0,1,0 1,0,8,0,0,7,2,0,1,1,1,2,1,0 0,0,3,2,1,8,5,4,0,1,1,0,1,0 0,0,3,2,0,7,2,0,1,1,1,1,1,0 1,0,6,2,0,1,2,0,1,1,1,1,1,0 1,0,3,2,2,1,3,0,1,1,1,0,1,0 1,5,3,2,2,2,5,4,0,1,1,0,1,0 2,1,1,2,0,3,2,0,1,1,1,0,1,0 1,0,1,2,0,4,2,0,1,1,1,0,1,1 0,0,3,2,1,8,5,0,0,1,1,0,1,0 2,0,3,2,1,6,3,0,0,1,1,2,1,0 2,4,3,2,0,5,2,0,1,1,1,2,1,1 1,0,2,1,3,7,3,0,1,1,1,0,1,0 2,3,3,2,0,8,2,0,1,1,1,1,1,1 0,0,3,2,2,6,5,4,1,1,1,0,1,0 1,0,1,2,0,3,2,4,1,1,1,0,1,0 0,0,6,2,2,2,4,0,1,1,1,0,1,0 1,0,3,2,1,4,5,0,1,1,1,1,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,0,3,2,3,3,0,1,1,1,0,1,0 1,0,7,1,0,6,2,0,1,1,1,0,1,0 0,0,1,2,0,3,2,0,1,1,1,2,1,0 2,4,3,2,4,8,5,0,0,1,1,0,1,0 1,1,1,2,0,3,2,0,1,1,1,1,1,1 0,0,3,2,2,2,3,0,1,1,1,2,1,0 2,0,2,1,5,2,5,4,0,1,1,0,1,0 1,1,3,2,0,4,2,1,1,1,1,1,1,0 1,0,2,1,0,9,2,0,1,1,1,0,1,0 0,0,3,2,0,4,2,0,1,1,1,1,1,1 2,0,1,2,0,5,0,0,0,1,1,2,1,1 0,0,1,2,2,2,1,0,1,1,1,0,1,0 0,0,1,2,0,1,2,0,1,1,1,0,1,1 1,0,1,2,0,4,0,0,0,1,1,1,1,1 0,0,7,1,0,1,2,0,1,1,1,0,1,0 1,4,3,2,0,6,0,0,0,1,1,1,1,1 1,0,1,2,1,8,5,0,0,1,1,2,1,0 1,4,3,2,0,8,2,0,1,1,1,0,1,1 0,0,0,3,0,4,2,0,1,1,1,1,1,0 0,0,1,2,2,8,4,4,0,1,1,0,1,0 3,0,3,2,4,8,3,0,0,1,1,2,1,0 1,0,1,2,0,4,2,0,1,1,1,0,1,0 0,1,9,1,2,3,1,0,1,1,1,1,1,0 0,0,3,2,0,7,2,0,1,1,1,1,1,0 0,4,0,3,2,5,1,0,0,1,1,2,1,0 1,0,3,2,0,4,2,0,1,1,1,1,1,1 0,0,3,2,2,3,1,0,1,1,1,0,1,0 1,1,6,2,0,10,2,0,1,1,1,1,1,1 0,0,1,2,2,6,3,4,1,1,1,2,1,0 0,0,2,1,1,2,5,0,0,1,1,2,1,0 0,1,3,2,5,2,5,0,0,1,1,1,1,0 1,0,9,1,0,6,2,0,1,1,1,2,1,0 1,5,1,2,0,4,0,0,0,1,1,0,1,1 0,0,3,2,2,3,3,0,0,1,1,1,1,0 0,0,0,3,2,4,3,0,1,1,1,0,1,0 0,5,1,2,2,2,1,0,0,1,1,2,1,0 0,0,3,2,2,7,1,4,0,1,1,0,1,0 0,0,1,2,2,2,1,0,1,1,1,1,1,0 0,0,0,3,0,3,2,0,1,1,1,1,1,1 1,0,12,1,4,7,5,4,0,1,1,0,1,0 0,0,3,2,2,1,1,0,1,1,1,2,1,0 0,0,12,1,0,1,2,0,1,1,1,0,1,0 0,0,0,3,2,3,3,0,1,1,1,2,1,0 1,4,5,2,0,8,2,1,1,1,1,1,1,0 0,0,3,2,0,3,0,0,0,1,1,2,1,0 0,0,2,1,2,1,3,0,1,1,1,0,1,0 1,4,10,3,0,8,4,0,0,1,1,1,1,1 3,0,3,2,4,2,5,0,0,1,1,2,1,0 3,0,3,2,0,3,2,0,1,1,1,2,1,0 0,0,3,2,1,1,5,0,1,1,1,0,1,0 1,0,0,3,0,3,2,0,1,1,1,0,1,1 0,0,3,2,0,2,1,0,0,1,1,2,1,0 0,5,0,3,2,4,1,0,1,1,1,2,1,0 1,0,6,2,1,1,3,0,1,1,1,0,1,0 1,0,0,3,1,4,5,0,1,1,1,0,1,1 0,0,1,2,2,2,5,0,0,1,1,2,1,0 2,1,8,0,0,9,2,0,1,1,1,1,1,0 1,4,1,2,0,12,2,0,1,1,1,0,1,1 0,1,5,2,1,3,3,0,1,1,1,0,1,0 0,0,3,2,2,7,4,4,1,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,1,2,0,8,2,0,1,1,1,2,1,0 1,3,3,2,0,8,2,0,1,1,1,0,1,0 0,0,1,2,2,2,3,0,1,1,1,2,1,0 1,4,0,3,0,5,0,0,0,1,1,0,1,1 1,0,3,2,4,8,3,0,0,1,1,0,1,0 1,0,1,2,4,0,5,0,0,1,1,0,1,0 0,0,3,2,2,8,3,0,0,1,1,2,1,0 0,4,1,2,2,12,1,0,1,1,1,0,1,0 3,0,9,1,4,3,3,0,0,1,1,2,1,0 0,0,3,2,1,2,5,0,0,1,1,2,1,0 0,0,7,1,2,6,1,0,0,1,1,0,1,0 0,0,1,2,2,3,3,0,0,1,1,1,1,0 0,0,6,2,2,1,3,0,1,1,1,1,1,0 0,0,7,1,5,3,3,0,0,1,1,2,1,0 0,0,7,1,2,10,5,3,1,1,1,0,1,0 1,0,1,2,3,7,3,4,1,1,1,0,1,0 1,0,3,2,1,3,3,0,0,1,1,0,1,0 1,0,0,3,0,3,2,0,1,1,1,0,1,1 0,5,6,2,1,4,5,0,0,1,1,0,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,2,3,1,0,1,1,1,2,1,0 1,1,10,3,0,5,2,1,1,1,1,0,1,0 2,2,3,2,4,4,3,0,1,1,1,1,1,1 0,0,6,2,0,7,2,0,1,1,1,0,1,1 0,0,1,2,2,6,1,0,1,1,1,0,1,0 0,0,1,2,1,11,3,0,0,1,1,2,1,0 1,0,3,2,1,1,3,0,0,1,1,0,1,1 2,2,10,3,0,3,2,0,1,1,1,1,1,1 1,0,0,3,0,8,0,1,0,1,1,0,1,0 0,3,1,2,0,0,2,4,1,1,1,0,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 2,0,3,2,1,7,1,0,0,1,1,0,1,0 0,0,1,2,3,4,1,4,0,1,1,0,1,0 0,0,12,1,2,7,5,0,0,1,1,0,1,0 0,0,6,2,2,2,1,0,0,1,1,1,1,0 0,0,1,2,2,2,1,4,1,1,1,0,1,0 0,0,5,2,1,10,5,0,0,1,1,2,1,0 0,5,1,2,0,12,1,4,1,1,1,0,1,0 1,0,10,3,0,0,2,1,1,1,1,0,1,1 0,0,3,2,2,8,3,4,0,1,1,2,1,0 0,4,1,2,2,5,1,0,1,1,1,2,1,0 1,0,10,3,1,2,3,0,0,1,1,1,1,1 1,0,1,2,1,5,3,0,0,1,1,1,1,0 1,0,3,2,1,7,1,0,1,1,1,0,1,0 0,1,3,2,2,9,3,0,1,1,1,2,1,0 1,0,2,1,0,1,2,0,1,1,1,0,1,0 1,1,4,3,2,5,1,0,1,1,1,1,1,1 1,1,1,2,0,9,2,0,1,1,1,1,1,1 1,0,2,1,0,10,2,4,1,1,1,0,1,0 0,0,3,2,2,1,1,0,1,1,1,0,1,0 0,0,3,2,0,3,2,4,1,1,1,2,1,0 1,0,1,2,0,1,2,0,1,1,1,1,1,1 0,4,1,2,0,12,2,0,1,1,1,1,1,0 2,4,1,2,1,8,3,0,0,1,1,0,1,0 1,3,3,2,1,1,3,0,1,1,1,0,1,0 2,0,9,1,4,8,5,0,0,1,1,2,1,0 0,0,3,2,2,2,1,4,0,1,1,2,1,0 0,0,14,0,0,7,2,0,1,1,1,0,1,0 1,0,1,2,1,5,3,0,1,1,1,1,1,0 3,0,3,2,0,5,2,0,1,1,1,2,1,0 1,5,13,3,0,5,2,0,1,1,1,0,1,1 2,0,12,1,0,1,2,0,1,1,1,0,1,0 0,0,2,1,2,5,1,0,0,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 2,0,8,0,0,7,0,0,0,1,1,1,1,0 3,5,13,3,5,5,3,0,1,1,1,2,1,1 1,0,0,3,0,4,2,0,1,1,1,1,1,1 0,1,1,2,2,9,3,0,1,1,1,0,1,0 0,1,0,3,0,3,2,0,1,1,1,1,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,1,2,3,10,3,4,0,1,1,0,1,1 0,0,3,2,2,2,5,0,0,1,1,2,1,0 1,0,6,2,1,0,3,0,0,1,1,0,1,0 1,1,3,2,0,2,2,0,1,1,1,0,1,0 0,5,1,2,2,4,1,4,1,1,1,0,1,0 1,0,3,2,1,2,5,0,0,1,1,2,1,0 0,0,0,3,2,4,1,0,1,1,1,2,1,0 1,0,3,2,1,2,3,0,0,1,1,2,1,0 0,4,1,2,0,12,2,0,1,1,1,0,1,1 2,0,3,2,1,8,3,0,0,1,1,0,1,0 1,0,1,2,1,4,3,0,1,1,1,0,1,0 0,5,0,3,2,5,1,1,0,1,1,2,1,0 0,0,2,1,2,2,4,0,1,1,1,2,1,0 0,0,1,2,2,2,5,0,0,1,1,2,1,0 1,5,0,3,0,12,2,0,1,1,1,1,1,1 1,5,5,2,2,1,3,0,1,1,1,0,1,0 0,0,0,3,2,4,3,0,1,1,1,0,1,0 1,0,10,3,0,5,2,0,1,1,1,1,1,1 1,0,0,3,0,5,2,0,1,1,1,0,1,1 0,0,1,2,0,7,2,0,1,1,1,0,1,0 0,0,3,2,0,10,2,0,1,1,1,1,1,1 1,4,4,3,2,5,3,0,1,1,1,0,1,1 0,0,0,3,2,7,3,0,1,1,1,1,1,0 1,4,0,3,0,5,4,4,0,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,0,1,0 2,5,13,3,0,5,2,0,1,1,1,1,1,1 0,4,1,2,5,5,1,4,1,1,1,0,1,0 2,0,0,3,2,5,3,0,1,1,1,1,1,0 0,1,12,1,2,1,1,0,1,1,1,0,1,0 0,0,1,2,2,2,1,0,1,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,0 0,0,2,1,2,3,1,0,0,1,1,2,1,0 0,0,3,2,0,8,0,0,0,1,1,0,1,0 1,0,3,2,0,10,2,0,1,1,1,0,1,0 2,0,3,2,1,10,5,0,0,1,1,2,1,0 0,0,3,2,2,8,5,0,0,1,1,0,1,0 0,0,0,3,2,3,3,0,0,1,1,0,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,1 1,2,1,2,0,4,2,0,1,1,1,1,1,1 2,0,0,3,1,4,3,0,0,1,1,0,1,0 1,0,1,2,1,8,5,0,0,1,1,0,1,0 1,0,10,3,1,4,5,0,1,1,1,1,1,1 2,0,6,2,0,1,2,0,1,1,1,0,1,0 1,0,1,2,5,2,5,0,0,1,1,2,1,0 0,0,3,2,2,3,1,0,1,1,1,2,1,0 0,0,1,2,2,3,1,4,0,1,1,2,1,0 0,0,3,2,2,2,5,0,0,1,1,0,1,0 0,0,3,2,0,7,2,0,1,1,1,1,1,0 0,0,1,2,2,1,3,0,1,1,1,0,1,0 1,0,1,2,0,8,2,0,1,1,1,0,1,0 1,0,3,2,1,10,3,0,1,1,1,1,1,0 0,0,2,1,0,1,2,0,1,1,1,1,1,0 0,0,3,2,0,7,4,0,0,1,1,0,1,0 2,0,3,2,0,10,2,0,1,1,1,1,1,1 1,0,3,2,0,3,2,0,1,1,1,0,1,1 1,0,1,2,1,8,5,0,0,1,1,2,1,0 1,3,3,2,0,7,2,0,1,1,1,0,1,0 0,0,3,2,2,8,3,0,0,1,1,2,1,0 0,0,1,2,2,2,3,0,0,1,1,2,1,0 0,2,1,2,2,4,1,0,1,1,1,0,1,0 2,0,0,3,0,5,2,0,1,1,1,0,1,1 0,0,3,2,2,10,3,0,1,1,1,1,1,0 2,0,1,2,0,10,2,0,1,1,1,1,1,1 1,0,13,3,1,5,3,0,1,1,1,0,1,0 0,0,13,3,0,5,2,0,1,1,1,1,1,1 1,0,3,2,1,1,3,0,1,1,1,0,1,0 3,4,8,0,0,2,2,0,1,1,1,2,1,0 1,0,0,3,0,3,2,0,1,1,1,1,1,0 0,0,12,1,2,10,1,0,1,1,1,0,1,0 1,0,0,3,1,5,5,0,0,1,1,1,1,0 0,0,3,2,2,1,1,0,1,1,1,1,1,0 1,0,3,2,0,3,2,0,1,1,1,1,1,1 2,3,5,2,0,12,2,4,1,1,1,0,1,0 0,0,7,1,1,2,1,0,0,1,1,2,1,0 1,0,0,3,2,4,3,0,1,1,1,1,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,1 1,0,1,2,1,5,5,0,0,1,1,0,1,0 0,0,1,2,2,0,3,0,1,1,1,0,1,0 0,0,0,3,2,3,5,4,0,1,1,0,1,0 0,0,3,2,2,2,5,4,0,1,1,0,1,0 0,1,0,3,0,9,2,0,1,1,1,1,1,0 0,0,1,2,1,8,3,0,0,1,1,0,1,0 1,4,2,1,1,6,5,2,1,1,1,1,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,0 1,0,1,2,1,8,5,0,0,1,1,0,1,0 0,0,3,2,0,4,2,0,1,1,1,0,1,0 2,0,3,2,0,10,2,0,1,1,1,0,1,0 0,0,9,1,2,3,1,0,0,1,1,2,1,0 2,1,0,3,4,3,5,0,1,1,1,1,1,0 0,4,1,2,0,8,1,0,0,1,1,0,1,0 2,1,10,3,0,3,2,0,1,1,1,1,1,1 2,0,2,1,1,6,3,0,1,1,1,2,1,0 0,0,1,2,2,2,1,4,0,1,1,1,1,0 0,0,1,2,0,4,2,4,1,1,1,0,1,0 0,0,3,2,2,7,1,0,1,1,1,0,1,0 1,0,2,1,0,1,2,0,1,1,1,2,1,1 0,0,3,2,1,1,3,0,1,1,1,0,1,0 0,0,1,2,2,2,1,0,1,1,1,2,1,0 1,2,3,2,0,3,2,0,1,1,1,1,1,1 0,0,3,2,1,10,3,0,1,1,1,1,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 2,0,3,2,0,5,1,0,0,1,1,0,1,0 1,1,7,1,0,10,2,0,1,1,1,0,1,0 0,0,3,2,1,8,5,0,0,1,1,0,1,0 0,1,1,2,0,4,2,0,1,1,1,0,1,1 2,0,14,0,0,9,2,0,1,1,1,0,1,0 0,0,9,1,1,7,1,0,0,1,1,0,1,0 2,3,1,2,0,8,2,0,1,1,1,1,1,1 1,0,3,2,4,8,5,0,0,1,1,0,1,0 1,0,1,2,0,10,2,4,1,1,1,0,1,1 0,0,2,1,1,6,3,0,1,1,1,0,1,0 1,1,3,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,2,3,1,0,0,1,1,2,1,0 1,0,0,3,0,5,2,0,1,1,1,0,1,0 1,4,1,2,0,5,2,4,1,1,1,0,1,1 1,1,3,2,0,9,2,0,1,1,1,1,1,0 1,0,1,2,1,0,5,4,0,1,1,2,1,0 2,0,12,1,1,7,3,0,0,1,1,0,1,0 0,0,5,2,2,4,4,0,0,1,1,0,1,0 1,5,0,3,2,5,3,0,1,1,1,0,1,0 1,0,3,2,0,2,0,0,0,1,1,1,1,0 1,0,1,2,1,3,3,0,0,1,1,2,1,1 0,0,1,2,2,3,1,0,0,1,1,2,1,0 1,1,1,2,0,4,2,0,1,1,1,0,1,0 2,1,3,2,0,9,2,0,1,1,1,0,1,0 2,0,3,2,0,7,2,2,1,1,1,0,1,1 0,0,6,2,0,5,2,0,1,1,1,0,1,1 1,0,1,2,1,2,5,0,1,1,1,1,1,0 0,0,3,2,2,2,3,0,1,1,1,0,1,0 0,0,0,3,0,4,0,0,0,1,1,0,1,0 2,2,10,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,2,1,3,4,1,1,1,0,1,0 0,0,6,2,2,2,3,0,1,1,1,0,1,0 0,4,1,2,2,5,1,0,0,1,1,2,1,0 0,4,3,2,0,12,2,4,1,1,1,0,1,1 1,0,1,2,1,4,5,0,0,1,1,1,1,0 0,0,3,2,2,8,3,0,0,1,1,2,1,0 2,0,4,3,0,5,2,0,1,1,1,1,1,1 0,4,0,3,2,8,1,0,1,1,1,2,1,0 1,0,1,2,0,3,2,0,1,1,1,0,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 0,0,3,2,1,1,1,0,1,1,1,0,1,0 0,0,3,2,2,2,3,4,1,1,1,0,1,0 0,0,1,2,2,3,3,0,1,1,1,2,1,0 2,1,3,2,4,9,5,0,1,1,1,1,1,0 0,0,0,3,2,5,1,0,1,1,1,2,1,0 1,0,1,2,0,10,2,0,1,1,1,1,1,0 1,0,10,3,0,3,2,0,1,1,1,0,1,0 2,0,3,2,1,8,4,0,0,1,1,0,1,0 1,0,1,2,5,3,3,0,0,1,1,0,1,0 0,2,9,1,2,9,1,0,1,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 0,0,3,2,0,6,2,0,1,1,1,1,1,0 0,0,2,1,2,2,5,4,0,1,1,0,1,0 1,1,0,3,1,3,3,0,1,1,1,1,1,0 0,0,3,2,2,8,3,4,1,1,1,2,1,0 2,0,1,2,0,4,2,0,1,1,1,0,1,0 2,0,0,3,0,5,2,0,1,1,1,1,1,1 1,1,14,0,0,2,2,0,1,1,1,0,1,1 1,0,1,2,0,1,2,0,1,1,1,0,1,0 0,0,6,2,2,2,5,0,0,1,1,2,1,0 1,3,2,1,2,2,4,4,1,1,1,0,1,0 0,0,0,3,1,8,5,0,0,1,1,2,1,0 0,0,3,2,2,8,1,1,1,1,1,0,1,0 0,0,12,1,2,3,1,0,0,1,1,2,1,0 0,0,3,2,2,1,1,0,1,1,1,0,1,0 1,2,3,2,2,2,3,0,0,1,1,1,1,0 0,4,0,3,1,5,3,0,1,1,1,1,1,0 0,0,1,2,2,8,1,0,0,1,1,2,1,0 1,0,3,2,2,6,5,4,0,1,1,2,1,0 0,0,0,3,2,3,3,0,0,1,1,0,1,0 1,4,0,3,0,4,2,0,1,1,1,0,1,1 1,0,0,3,0,3,2,0,1,1,1,1,1,1 1,5,3,2,0,10,2,0,1,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 1,4,10,3,0,5,2,0,1,1,1,0,1,1 1,1,3,2,1,1,1,0,1,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 0,0,1,2,2,2,3,0,1,1,1,1,1,0 0,0,1,2,2,8,1,4,1,1,1,0,1,0 1,0,3,2,0,3,2,0,1,1,1,0,1,1 1,5,3,2,0,8,0,0,0,1,1,0,1,1 2,0,3,2,0,3,2,0,1,1,1,1,1,1 1,0,8,0,0,1,2,4,1,1,1,0,1,0 2,5,10,3,0,4,2,0,1,1,1,1,1,1 0,0,2,1,2,7,1,2,1,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,0 1,0,3,2,2,2,1,0,1,1,1,0,1,0 1,2,10,3,0,4,2,0,1,1,1,0,1,1 0,0,3,2,1,4,3,0,1,1,1,1,1,0 1,0,10,3,1,5,3,0,1,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,1 0,1,2,1,0,9,2,0,1,1,1,1,1,0 0,0,0,3,2,5,1,0,0,1,1,0,1,0 1,2,13,3,2,5,3,0,1,1,1,1,1,1 0,0,6,2,3,5,3,0,1,1,1,0,1,0 2,0,1,2,2,7,3,4,0,1,1,0,1,0 1,0,3,2,0,1,2,3,1,1,1,0,1,0 2,0,3,2,4,0,3,0,1,1,1,0,1,0 1,2,6,2,2,1,1,0,1,1,1,0,1,0 1,0,1,2,0,8,0,0,0,1,1,0,1,1 0,0,12,1,0,1,2,0,1,1,1,0,1,0 2,0,1,2,2,4,3,0,0,1,1,0,1,0 0,0,6,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,2,2,1,0,1,1,1,2,1,0 0,0,11,0,3,11,4,0,0,1,1,2,1,0 1,3,3,2,2,8,1,0,1,1,1,0,1,0 0,0,1,2,2,8,3,0,0,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,3,2,1,5,3,0,0,1,1,0,1,0 1,1,0,3,0,3,2,0,1,1,1,1,1,1 0,3,1,2,0,12,2,0,1,1,1,1,1,1 2,0,3,2,0,3,2,0,1,1,1,0,1,1 2,0,3,2,0,10,2,0,1,1,1,2,1,1 1,4,10,3,0,5,2,0,1,1,1,1,1,1 0,0,0,3,2,0,3,0,1,1,1,1,1,0 1,0,0,3,0,7,2,0,1,1,1,1,1,1 0,0,1,2,2,2,3,0,1,1,1,0,1,0 0,0,0,3,2,8,1,4,1,1,1,2,1,0 2,0,10,3,0,4,2,4,1,1,1,0,1,0 0,0,11,0,2,9,3,0,1,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,0 1,1,0,3,0,9,2,0,1,1,1,1,1,1 0,0,1,2,0,5,2,0,1,1,1,1,1,0 1,3,1,2,1,4,3,0,1,1,1,0,1,0 1,0,3,2,0,4,2,0,1,1,1,2,1,0 1,5,13,3,1,5,3,0,1,1,1,2,1,0 1,0,2,1,0,7,2,0,1,1,1,0,1,0 1,3,1,2,0,8,2,1,1,1,1,0,1,1 0,0,0,3,2,2,3,0,1,1,1,1,1,0 1,0,4,3,1,5,5,0,0,1,1,2,1,1 2,0,0,3,0,5,2,0,1,1,1,1,1,1 0,0,1,2,2,2,1,0,0,1,1,0,1,0 2,1,0,3,0,4,2,0,1,1,1,1,1,1 0,0,0,3,1,5,5,1,0,1,1,2,1,0 1,0,0,3,0,1,2,0,1,1,1,1,1,1 0,0,1,2,1,8,5,0,0,1,1,0,1,0 2,0,6,2,0,4,2,0,1,1,1,0,1,0 1,0,3,2,1,7,3,0,0,1,1,1,1,0 1,1,4,3,0,5,0,0,0,1,1,2,1,1 0,0,0,3,2,4,1,0,1,1,1,1,1,0 0,0,10,3,2,3,3,0,0,1,1,0,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,1 0,5,6,2,0,3,2,0,1,1,1,0,1,1 0,5,3,2,0,1,2,4,1,1,1,0,1,0 0,0,3,2,0,7,4,1,1,1,1,0,1,0 1,0,3,2,1,2,3,0,1,1,1,1,1,0 1,5,13,3,0,5,2,0,1,1,1,0,1,1 0,0,6,2,1,8,5,0,0,1,1,0,1,0 0,0,3,2,2,1,1,0,1,1,1,0,1,0 2,0,10,3,0,5,2,0,1,1,1,2,1,0 1,0,0,3,2,3,1,0,0,1,1,0,1,0 0,0,3,2,2,2,3,0,0,1,1,2,1,0 0,0,6,2,0,4,2,0,1,1,1,1,1,1 1,0,1,2,0,3,2,1,1,1,1,1,1,0 0,0,1,2,2,2,1,0,1,1,1,2,1,0 0,0,0,3,2,5,1,0,0,1,1,2,1,0 1,1,6,2,0,9,2,0,1,1,1,1,1,1 1,0,0,3,0,4,2,1,1,1,1,1,1,1 0,0,0,3,2,5,3,0,0,1,1,0,1,0 1,0,1,2,0,4,2,0,1,1,1,1,1,1 1,0,6,2,0,8,2,0,1,1,1,0,1,0 2,2,1,2,4,4,5,0,0,1,1,1,1,0 0,2,4,3,0,5,0,0,0,1,1,1,1,1 2,0,1,2,0,8,2,0,1,1,1,1,1,1 1,0,1,2,0,5,2,0,1,1,1,0,1,0 1,0,1,2,2,1,1,0,1,1,1,0,1,0 1,0,1,2,3,3,5,0,0,1,1,0,1,0 0,0,3,2,2,1,1,0,1,1,1,0,1,0 1,2,10,3,0,5,2,0,1,1,1,1,1,1 1,0,0,3,0,6,2,0,1,1,1,0,1,1 1,0,3,2,0,1,2,0,1,1,1,0,1,1 0,0,3,2,0,1,2,0,1,1,1,0,1,0 2,0,11,0,0,2,2,1,1,1,1,0,1,0 1,0,3,2,1,6,3,0,0,1,1,0,1,0 1,0,3,2,1,1,3,0,1,1,1,0,1,1 0,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,3,2,0,3,2,4,1,1,1,2,1,0 1,0,3,2,1,0,5,0,0,1,1,2,1,0 0,0,0,3,2,5,3,0,1,1,1,1,1,0 0,0,2,1,0,7,2,0,1,1,1,0,1,0 1,0,10,3,0,3,2,0,1,1,1,1,1,1 0,1,7,1,4,2,5,0,0,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,0 1,0,3,2,0,4,2,0,1,1,1,0,1,0 1,0,8,0,0,1,2,0,1,1,1,0,1,1 1,0,3,2,1,2,3,0,0,1,1,0,1,0 1,5,3,2,0,1,2,0,1,1,1,0,1,0 1,0,3,2,0,3,0,0,0,1,1,1,1,1 0,0,3,2,2,2,1,0,1,1,1,0,1,0 0,0,3,2,2,2,3,4,1,1,1,1,1,0 1,0,2,1,0,7,2,0,1,1,1,0,1,1 0,0,1,2,2,3,1,0,0,1,1,2,1,0 2,4,8,0,0,12,2,4,1,1,1,0,1,0 0,0,1,2,2,7,1,0,1,1,1,0,1,0 2,0,6,2,0,1,2,0,1,1,1,0,1,1 2,0,3,2,4,7,3,0,0,1,1,2,1,0 1,0,3,2,1,6,3,0,1,1,1,0,1,0 1,0,10,3,2,3,3,0,1,1,1,1,1,0 2,1,3,2,0,4,2,0,1,1,1,0,1,1 1,0,8,0,0,10,2,0,1,1,1,0,1,0 0,0,2,1,2,1,3,2,1,1,1,0,1,0 2,5,13,3,0,5,2,0,1,1,1,1,1,1 1,2,13,3,0,4,2,0,1,1,1,1,1,1 0,0,1,2,0,1,2,0,1,1,1,0,1,0 1,2,0,3,0,3,2,0,1,1,1,1,1,0 0,0,2,1,2,9,1,4,1,1,1,0,1,0 0,1,1,2,0,3,2,1,1,1,1,0,1,0 1,0,3,2,0,3,2,0,1,1,1,1,1,1 2,0,1,2,0,4,2,0,1,1,1,0,1,1 0,0,1,2,2,12,3,0,0,1,1,0,1,0 1,5,6,2,1,12,5,4,1,1,1,0,1,0 2,1,12,1,1,1,3,0,1,1,1,2,1,0 0,0,1,2,2,8,1,4,0,1,1,2,1,0 0,0,1,2,2,3,3,0,0,1,1,2,1,0 1,0,1,2,0,5,2,0,1,1,1,0,1,0 1,0,3,2,0,1,2,2,1,1,1,0,1,0 0,1,1,2,1,5,5,0,1,1,1,1,1,0 0,0,12,1,0,7,2,0,1,1,1,0,1,0 0,0,1,2,2,2,1,0,1,1,1,2,1,0 2,0,3,2,2,8,5,0,1,1,1,1,1,0 1,0,5,2,0,5,2,0,1,1,1,0,1,1 0,0,5,2,2,8,3,0,1,1,1,0,1,0 1,0,1,2,5,2,3,0,0,1,1,2,1,0 2,4,3,2,0,8,2,0,1,1,1,0,1,0 0,2,0,3,0,4,2,0,1,1,1,1,1,1 0,2,0,3,0,3,2,0,1,1,1,1,1,1 0,0,3,2,2,7,1,4,1,1,1,0,1,0 1,1,3,2,0,1,2,4,1,1,1,2,1,1 2,3,8,0,0,8,2,0,1,1,1,1,1,0 1,1,1,2,1,1,3,0,1,1,1,2,1,1 2,4,3,2,1,1,3,0,1,1,1,0,1,0 0,4,0,3,0,5,0,0,0,1,1,0,1,1 2,4,1,2,1,4,4,4,0,1,1,0,1,0 0,1,0,3,0,3,2,0,1,1,1,0,1,0 0,0,0,3,2,4,3,4,1,1,1,1,1,0 0,0,9,1,2,2,1,0,0,1,1,2,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 2,2,8,0,0,1,2,0,1,1,1,1,1,0 1,1,1,2,2,3,3,0,1,1,1,1,1,0 2,4,6,2,0,12,2,0,1,1,1,0,1,1 1,0,3,2,1,11,5,0,0,1,1,2,1,0 0,0,3,2,2,3,1,0,0,1,1,2,1,0 0,0,3,2,2,0,4,0,0,1,1,0,1,0 0,0,3,2,2,7,3,0,0,1,1,0,1,0 0,0,1,2,2,2,1,0,1,1,1,2,1,0 1,0,0,3,0,5,0,0,0,1,1,2,1,0 0,0,3,2,2,0,3,0,1,1,1,1,1,0 0,0,3,2,2,8,1,0,0,1,1,0,1,0 0,0,0,3,2,8,3,0,1,1,1,0,1,0 0,2,3,2,0,4,2,0,1,1,1,1,1,1 0,0,3,2,2,0,1,4,1,1,1,0,1,0 0,0,12,1,2,6,3,0,1,1,1,0,1,0 0,0,1,2,0,7,2,0,1,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,0,0,2,0,1,1,1,0,1,0 0,0,1,2,0,1,2,0,1,1,1,0,1,0 2,0,3,2,2,2,3,4,0,1,1,1,1,0 1,0,10,3,0,5,2,0,1,1,1,1,1,1 0,0,1,2,2,2,3,4,1,1,1,2,1,0 2,3,7,1,1,2,3,4,0,1,1,0,1,0 0,0,0,3,2,5,3,0,1,1,1,2,1,0 1,2,1,2,0,4,2,0,1,1,1,0,1,1 0,0,1,2,2,4,1,0,0,1,1,2,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,1 0,0,9,1,0,3,1,3,1,1,1,2,1,0 1,0,3,2,0,1,2,1,1,1,1,0,1,0 0,0,1,2,2,8,1,0,0,1,1,2,1,0 1,0,1,2,0,4,2,0,1,1,1,1,1,1 0,1,3,2,3,1,1,4,1,1,1,1,1,0 0,0,6,2,0,3,2,0,1,1,1,0,1,1 1,0,0,3,1,3,3,0,0,1,1,1,1,1 0,4,1,2,0,8,0,0,0,1,1,0,1,0 0,0,1,2,2,8,3,0,0,1,1,0,1,0 0,0,6,2,5,0,1,0,0,1,1,0,1,0 0,4,1,2,2,12,1,0,1,1,1,1,1,0 2,0,3,2,0,10,2,0,1,1,1,0,1,0 0,0,3,2,2,10,1,0,0,1,1,0,1,0 0,0,2,1,0,1,2,0,1,1,1,0,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,0 0,0,0,3,2,4,1,0,1,1,1,0,1,0 0,0,3,2,2,9,3,0,1,1,1,0,1,0 2,0,10,3,0,5,2,0,1,1,1,0,1,1 0,2,3,2,0,9,2,0,1,1,1,1,1,0 0,0,9,1,2,3,1,0,0,1,1,2,1,0 0,5,1,2,1,12,5,4,1,1,1,1,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 1,0,1,2,3,5,3,0,0,1,1,1,1,0 1,2,0,3,0,2,4,1,0,1,1,2,1,0 0,0,12,1,2,2,3,0,1,1,1,1,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,1 2,2,13,3,0,5,2,0,1,1,1,1,1,1 0,3,0,3,0,4,2,0,1,1,1,1,1,1 1,0,12,1,1,7,5,4,0,1,1,0,1,0 0,0,0,3,0,3,2,1,1,1,1,1,1,1 1,5,0,3,2,4,3,0,0,1,1,0,1,0 0,0,0,3,2,0,3,0,0,1,1,0,1,0 2,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,3,2,2,8,3,0,1,1,1,1,1,0 0,0,0,3,2,3,1,0,1,1,1,1,1,0 1,0,8,0,0,10,2,0,1,1,1,2,1,0 0,0,5,2,2,8,3,0,0,1,1,2,1,0 1,0,1,2,0,7,2,0,1,1,1,1,1,0 1,1,4,3,0,5,2,0,1,1,1,1,1,1 0,0,0,3,2,8,3,0,0,1,1,2,1,0 1,0,3,2,0,1,1,4,0,1,1,0,1,0 1,0,10,3,1,4,3,0,1,1,1,1,1,0 0,0,3,2,2,12,4,0,1,1,1,1,1,0 0,0,1,2,2,2,3,0,1,1,1,0,1,0 1,0,3,2,1,1,3,3,1,1,1,1,1,0 0,0,3,2,2,9,3,0,1,1,1,0,1,0 0,0,3,2,5,2,4,4,0,1,1,2,1,0 0,0,2,1,3,1,5,0,1,1,1,0,1,0 1,0,1,2,0,4,2,2,1,1,1,0,1,1 0,0,3,2,0,3,0,4,0,1,1,0,1,0 0,0,7,1,2,7,3,0,1,1,1,0,1,0 1,0,1,2,0,3,2,0,1,1,1,1,1,0 1,0,0,3,2,8,1,4,0,1,1,2,1,0 1,0,2,1,4,7,3,4,1,1,1,0,1,0 1,0,8,0,1,2,3,0,0,1,1,0,1,0 0,0,0,3,0,5,2,0,1,1,1,1,1,1 0,0,0,3,2,5,3,0,1,1,1,1,1,0 0,0,3,2,2,6,4,4,0,1,1,1,1,0 0,5,1,2,2,5,1,0,0,1,1,0,1,0 0,0,5,2,2,3,3,0,1,1,1,0,1,0 0,0,3,2,2,4,3,0,0,1,1,2,1,0 1,4,2,1,0,6,2,4,1,1,1,0,1,0 0,0,1,2,0,8,2,0,1,1,1,1,1,0 0,0,0,3,2,5,3,0,1,1,1,1,1,0 2,1,0,3,2,4,3,0,0,1,1,1,1,1 1,0,10,3,0,4,2,0,1,1,1,0,1,1 2,0,1,2,2,8,1,0,0,1,1,0,1,0 0,0,3,2,4,8,5,0,0,1,1,2,1,0 1,2,5,2,0,5,2,0,1,1,1,1,1,1 1,0,3,2,1,0,5,0,0,1,1,0,1,0 1,1,5,2,0,1,2,0,1,1,1,2,1,0 1,5,0,3,0,5,2,0,1,1,1,0,1,1 0,0,1,2,2,8,1,0,1,1,1,2,1,0 2,0,5,2,0,4,2,0,1,1,1,1,1,1 1,3,13,3,0,5,2,0,1,1,1,1,1,1 1,4,6,2,1,5,5,0,0,1,1,2,1,0 1,0,0,3,2,4,3,0,1,1,1,0,1,0 0,0,1,2,2,12,3,0,1,1,1,1,1,0 1,0,3,2,4,2,3,2,0,1,1,0,1,0 1,0,3,2,0,2,2,0,1,1,1,0,1,0 0,0,1,2,2,3,1,0,1,1,1,0,1,0 2,0,1,2,0,7,2,0,1,1,1,1,1,1 1,0,1,2,3,8,5,0,0,1,1,0,1,0 0,0,1,2,1,8,3,0,0,1,1,1,1,0 1,0,3,2,1,4,3,0,0,1,1,0,1,0 1,0,0,3,1,5,3,0,1,1,1,1,1,0 2,3,3,2,0,10,2,0,1,1,1,0,1,0 1,0,0,3,4,5,3,0,0,1,1,2,1,0 2,0,8,0,1,1,5,0,1,1,1,0,1,0 1,3,6,2,0,8,2,0,1,1,1,0,1,0 2,5,0,3,0,5,2,0,1,1,1,0,1,1 0,0,9,1,2,2,1,4,0,1,1,2,1,0 0,0,3,2,2,1,3,0,1,1,1,0,1,0 1,1,0,3,1,10,3,0,1,1,1,1,1,0 0,0,3,2,0,12,2,0,1,1,1,2,1,0 2,0,8,0,0,2,2,4,1,1,1,2,1,0 1,0,1,2,0,0,2,0,1,1,1,0,1,1 0,0,1,2,2,8,1,0,0,1,1,2,1,0 1,0,5,2,2,2,3,0,1,1,1,0,1,0 1,0,3,2,1,8,5,4,0,1,1,0,1,0 3,0,3,2,4,8,3,0,0,1,1,2,1,0 1,0,1,2,1,3,3,0,0,1,1,0,1,0 0,0,1,2,2,5,3,0,0,1,1,1,1,0 1,3,3,2,0,8,0,0,0,1,1,2,1,0 0,0,0,3,2,5,3,0,1,1,1,1,1,0 0,0,5,2,0,2,0,4,0,1,1,2,1,0 0,5,0,3,0,5,2,0,1,1,1,2,1,0 2,1,12,1,0,1,2,0,1,1,1,1,1,0 0,0,2,1,2,6,1,4,1,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,0 0,1,6,2,2,9,3,0,1,1,1,2,1,0 1,1,2,1,0,1,2,0,1,1,1,2,1,0 0,0,0,3,0,5,2,0,1,1,1,1,1,1 1,0,1,2,3,0,5,4,0,1,1,1,1,0 2,0,3,2,0,1,2,4,1,1,1,0,1,0 0,0,3,2,2,1,1,0,1,1,1,2,1,0 1,1,2,1,0,4,0,0,0,1,1,2,1,1 0,1,12,1,0,2,0,0,0,1,1,2,1,0 1,0,6,2,0,1,2,0,1,1,1,0,1,0 1,0,11,0,0,8,2,0,1,1,1,1,1,0 2,1,1,2,0,2,0,4,0,1,1,1,1,0 2,0,3,2,0,3,2,0,1,1,1,0,1,0 0,0,2,1,2,2,1,0,0,1,1,0,1,0 1,0,1,2,0,1,2,2,1,1,1,1,1,1 0,5,10,3,2,5,3,1,0,1,1,0,1,0 2,1,0,3,0,4,2,0,1,1,1,1,1,0 2,0,3,2,4,3,3,0,0,1,1,1,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,1 0,0,2,1,2,3,1,0,1,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,1 2,0,3,2,0,10,2,0,1,1,1,0,1,1 1,0,10,3,0,5,2,0,1,1,1,1,1,1 0,0,1,2,0,7,2,0,1,1,1,1,1,0 0,4,0,3,0,4,2,0,1,1,1,1,1,0 3,1,8,0,0,10,2,0,1,1,1,2,1,0 2,0,3,2,1,7,3,0,0,1,1,0,1,0 0,0,0,3,0,3,2,0,1,1,1,1,1,1 2,0,10,3,1,5,3,0,0,1,1,0,1,0 2,2,3,2,0,3,2,0,1,1,1,2,1,1 0,0,3,2,2,7,3,0,1,1,1,0,1,0 3,0,7,1,0,3,2,0,1,1,1,2,1,0 0,0,3,2,3,8,3,0,0,1,1,0,1,0 1,0,3,2,0,6,2,0,1,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,1,1,1 1,0,5,2,4,3,3,0,0,1,1,0,1,0 0,0,3,2,2,1,1,0,1,1,1,0,1,0 0,0,1,2,2,4,1,0,0,1,1,0,1,0 0,0,0,3,2,8,3,0,0,1,1,0,1,0 2,0,3,2,0,3,2,0,1,1,1,1,1,0 2,4,3,2,1,2,5,4,0,1,1,1,1,0 1,4,6,2,0,12,2,0,1,1,1,1,1,1 2,0,10,3,0,8,4,0,0,1,1,0,1,1 0,0,1,2,2,0,5,0,0,1,1,1,1,0 1,0,3,2,1,9,5,4,0,1,1,2,1,0 0,0,0,3,2,5,3,1,1,1,1,0,1,0 1,0,0,3,0,7,2,0,1,1,1,0,1,0 2,0,3,2,4,8,5,0,0,1,1,0,1,0 0,0,8,0,0,6,2,0,1,1,1,0,1,0 2,0,3,2,0,3,2,0,1,1,1,1,1,0 1,0,0,3,1,3,3,0,1,1,1,0,1,0 0,0,3,2,1,1,5,4,1,1,1,0,1,0 0,0,2,1,2,10,1,1,1,1,1,0,1,0 1,2,0,3,0,3,2,0,1,1,1,1,1,1 0,1,5,2,0,9,2,0,1,1,1,1,1,0 1,3,5,2,0,6,2,1,1,1,1,0,1,1 1,4,10,3,0,5,0,0,0,1,1,1,1,1 0,0,0,3,2,4,1,0,1,1,1,0,1,0 1,0,6,2,0,1,2,0,1,1,1,1,1,1 1,1,1,2,2,5,1,0,0,1,1,2,1,0 1,3,13,3,0,5,2,0,1,1,1,0,1,1 1,4,3,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,2,6,1,0,1,1,1,0,1,0 0,0,2,1,0,9,2,2,1,1,1,1,1,0 0,0,1,2,2,6,1,0,1,1,1,2,1,0 0,0,3,2,2,6,1,0,1,1,1,2,1,0 0,0,3,2,2,3,3,0,0,1,1,0,1,0 2,0,1,2,1,2,5,0,0,1,1,2,1,0 2,0,1,2,0,8,0,0,0,1,1,2,1,1 3,2,0,3,0,8,0,0,0,1,1,2,1,1 0,0,3,2,2,2,1,0,0,1,1,0,1,0 1,0,1,2,1,7,3,0,1,1,1,0,1,0 0,4,9,1,2,7,3,0,1,1,1,2,1,0 0,0,0,3,2,8,3,0,0,1,1,0,1,0 1,0,3,2,1,2,3,0,0,1,1,0,1,0 1,3,1,2,1,8,3,0,0,1,1,0,1,0 1,1,9,1,0,4,2,0,1,1,1,1,1,1 0,4,3,2,2,10,3,2,1,1,1,0,1,0 2,0,0,3,0,5,2,0,1,1,1,0,1,1 0,0,3,2,1,4,1,0,1,1,1,0,1,0 0,4,10,3,0,5,2,0,1,1,1,0,1,1 0,0,6,2,0,1,2,0,1,1,1,1,1,1 1,0,3,2,1,2,3,0,0,1,1,2,1,0 1,0,3,2,1,8,3,0,0,1,1,0,1,0 1,1,7,1,0,1,2,0,1,1,1,0,1,0 0,0,3,2,0,7,2,0,1,1,1,1,1,0 1,0,0,3,1,8,5,0,0,1,1,1,1,0 0,0,1,2,2,8,1,0,1,1,1,2,1,0 0,0,3,2,2,2,1,0,1,1,1,0,1,0 3,0,3,2,0,5,2,0,1,1,1,2,1,0 1,4,1,2,0,2,2,0,1,1,1,0,1,0 0,0,1,2,2,8,3,4,0,1,1,0,1,0 1,0,3,2,3,1,3,0,1,1,1,1,1,0 0,0,3,2,2,8,1,0,0,1,1,2,1,0 0,5,6,2,2,5,3,0,0,1,1,0,1,0 1,0,3,2,0,8,0,0,0,1,1,2,1,1 2,0,1,2,0,1,2,0,1,1,1,1,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,1 2,0,3,2,4,11,5,0,0,1,1,2,1,0 0,0,1,2,2,9,1,2,1,1,1,0,1,0 1,0,3,2,3,8,5,0,0,1,1,0,1,0 0,0,3,2,3,1,3,0,1,1,1,1,1,0 0,4,1,2,2,12,3,0,1,1,1,0,1,0 1,0,6,2,1,2,5,0,0,1,1,2,1,0 3,0,1,2,4,3,3,1,0,1,1,2,1,0 0,1,3,2,2,2,5,0,0,1,1,2,1,0 0,0,0,3,2,3,1,0,1,1,1,0,1,0 1,4,1,2,0,6,2,0,1,1,1,0,1,0 1,2,1,2,0,4,2,0,1,1,1,1,1,1 0,0,3,2,0,2,4,0,0,1,1,0,1,0 1,0,3,2,1,2,5,0,0,1,1,2,1,0 0,1,2,1,2,9,1,0,1,1,1,2,1,0 0,0,12,1,2,1,1,0,1,1,1,2,1,0 1,3,10,3,0,4,2,0,1,1,1,0,1,1 0,0,1,2,2,8,4,0,0,1,1,0,1,0 1,0,10,3,0,4,2,4,1,1,1,0,1,1 1,0,10,3,0,3,2,0,1,1,1,0,1,1 0,0,3,2,3,2,5,0,1,1,1,0,1,0 2,1,10,3,0,3,2,0,1,1,1,0,1,1 1,0,3,2,1,8,5,0,0,1,1,2,1,0 0,0,3,2,2,1,3,0,1,1,1,0,1,1 0,0,0,3,0,5,0,0,0,1,1,0,1,1 0,0,3,2,0,9,2,0,1,1,1,1,1,0 0,0,12,1,2,2,4,0,0,1,1,2,1,0 1,0,3,2,0,2,0,0,0,1,1,0,1,1 1,0,3,2,2,8,1,0,0,1,1,0,1,0 0,0,3,2,0,7,2,0,1,1,1,1,1,0 2,0,3,2,3,3,5,0,0,1,1,0,1,0 2,0,7,1,0,2,0,4,0,1,1,0,1,0 1,4,10,3,2,5,3,0,0,1,1,1,1,1 1,0,0,3,2,8,1,0,0,1,1,0,1,0 0,0,6,2,2,3,1,0,0,1,1,0,1,0 0,0,12,1,0,1,2,0,1,1,1,0,1,0 0,4,0,3,2,5,3,0,0,1,1,0,1,0 0,0,3,2,2,3,3,0,1,1,1,0,1,0 0,1,3,2,2,6,1,0,0,1,1,2,1,0 1,4,3,2,2,8,4,4,0,1,1,0,1,0 0,0,3,2,2,2,1,1,1,1,1,0,1,0 1,0,10,3,2,7,3,0,1,1,1,0,1,0 1,0,0,3,1,7,3,0,1,1,1,0,1,0 1,0,12,1,0,9,2,0,1,1,1,0,1,0 0,4,10,3,2,5,3,0,0,1,1,1,1,0 1,0,0,3,0,5,0,0,0,1,1,1,1,1 1,5,1,2,1,4,5,0,0,1,1,0,1,0 1,0,14,0,0,7,2,0,1,1,1,2,1,0 2,1,0,3,0,3,2,0,1,1,1,0,1,1 1,0,3,2,0,7,0,0,0,1,1,0,1,0 0,0,6,2,1,1,3,0,1,1,1,1,1,0 1,5,0,3,2,9,3,0,1,1,1,0,1,0 0,5,0,3,2,4,1,0,0,1,1,0,1,0 0,1,3,2,2,1,1,0,1,1,1,1,1,0 2,0,3,2,0,2,0,4,0,1,1,1,1,0 0,5,0,3,2,4,3,0,1,1,1,0,1,0 1,0,6,2,0,6,2,0,1,1,1,1,1,1 1,1,1,2,1,7,3,0,1,1,1,0,1,0 0,0,8,0,0,3,2,0,1,1,1,0,1,0 1,5,10,3,0,5,2,0,1,1,1,1,1,0 1,1,1,2,0,5,2,0,1,1,1,2,1,0 1,2,3,2,0,1,2,0,1,1,1,1,1,1 0,0,0,3,0,0,0,0,0,1,1,2,1,0 2,0,1,2,2,0,3,0,1,1,1,0,1,1 0,0,15,0,5,6,5,0,1,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,0,7,2,0,1,1,1,1,1,1 0,0,1,2,2,5,3,0,1,1,1,2,1,0 0,5,0,3,0,4,2,1,1,1,1,0,1,0 0,0,3,2,2,6,3,0,0,1,1,2,1,0 0,5,3,2,1,10,5,0,1,1,1,0,1,0 3,1,0,3,4,5,3,0,0,1,1,2,1,0 0,3,1,2,2,4,1,0,1,1,1,2,1,0 1,0,9,1,0,6,4,0,1,1,1,0,1,0 1,0,2,1,1,8,3,0,0,1,1,1,1,0 0,0,10,3,0,5,2,0,1,1,1,1,1,1 1,1,3,2,0,1,2,0,1,1,1,0,1,0 1,1,13,3,1,3,3,0,1,1,1,1,1,1 1,2,0,3,0,3,2,0,1,1,1,1,1,1 1,0,1,2,1,5,5,0,0,1,1,0,1,0 1,1,3,2,2,2,3,0,0,1,1,1,1,0 1,0,7,1,2,9,5,4,0,1,1,0,1,0 2,0,11,0,0,11,0,4,0,1,1,2,1,0 1,1,10,3,1,5,3,0,0,1,1,1,1,0 0,3,1,2,2,8,5,4,0,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,0,1,0 1,4,10,3,0,5,2,0,1,1,1,1,1,0 0,4,3,2,2,12,3,0,1,1,1,0,1,0 0,0,0,3,2,3,3,0,0,1,1,0,1,0 2,0,0,3,3,4,5,0,0,1,1,0,1,0 0,0,14,0,2,7,4,0,1,1,1,0,1,0 2,0,3,2,0,10,2,0,1,1,1,2,1,0 1,1,1,2,0,1,2,0,1,1,1,1,1,0 0,0,3,2,0,4,2,0,1,1,1,1,1,0 0,0,0,3,2,3,4,0,1,1,1,2,1,0 1,0,0,3,0,7,2,0,1,1,1,0,1,0 0,0,12,1,3,4,5,0,0,1,1,1,1,0 0,0,1,2,2,3,1,0,1,1,1,0,1,0 1,0,0,3,0,4,0,0,0,1,1,0,1,1 2,0,3,2,0,7,2,0,1,1,1,0,1,1 0,0,2,1,2,1,5,0,1,1,1,0,1,0 1,5,10,3,0,5,2,0,1,1,1,1,1,1 1,0,0,3,0,8,2,0,1,1,1,0,1,1 2,5,1,2,1,8,3,0,0,1,1,0,1,0 1,0,3,2,1,7,3,0,1,1,1,0,1,0 0,0,3,2,2,6,4,4,1,1,1,0,1,0 1,1,3,2,0,3,2,0,1,1,1,1,1,0 0,0,3,2,3,3,3,0,1,1,1,1,1,0 0,5,5,2,0,5,2,0,1,1,1,2,1,0 1,0,1,2,1,4,5,0,0,1,1,2,1,0 0,5,5,2,2,8,1,0,0,1,1,2,1,0 1,5,3,2,1,2,5,0,0,1,1,0,1,0 0,0,0,3,2,4,1,0,0,1,1,2,1,0 1,0,0,3,0,3,2,0,1,1,1,1,1,1 0,0,1,2,2,8,1,0,1,1,1,2,1,0 0,2,0,3,0,5,2,0,1,1,1,1,1,1 0,0,1,2,2,2,1,0,0,1,1,2,1,0 1,1,13,3,0,5,2,0,1,1,1,1,1,1 0,0,2,1,2,2,1,0,1,1,1,2,1,0 0,0,2,1,2,2,3,4,1,1,1,0,1,0 0,0,13,3,2,5,3,0,1,1,1,1,1,0 1,4,2,1,1,2,1,0,0,1,1,1,1,0 1,4,1,2,0,8,0,0,0,1,1,0,1,0 0,0,3,2,2,7,1,0,1,1,1,0,1,0 0,0,12,1,2,3,1,0,1,1,1,2,1,0 0,4,10,3,0,5,0,0,0,1,1,2,1,1 0,0,1,2,0,5,2,0,1,1,1,1,1,0 0,0,1,2,0,0,2,0,1,1,1,2,1,0 1,0,1,2,1,3,3,0,1,1,1,1,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,0 2,5,0,3,4,0,5,0,0,1,1,0,1,1 1,0,1,2,0,7,2,0,1,1,1,2,1,0 2,0,0,3,0,7,2,0,1,1,1,0,1,1 0,0,1,2,2,0,4,0,0,1,1,0,1,0 1,0,3,2,0,3,2,0,1,1,1,1,1,0 1,0,1,2,5,8,5,0,0,1,1,0,1,0 0,0,3,2,1,1,3,0,1,1,1,0,1,0 1,0,0,3,1,5,3,0,0,1,1,2,1,0 1,2,3,2,0,4,2,0,1,1,1,1,1,1 0,0,3,2,2,9,3,0,1,1,1,1,1,0 2,0,3,2,0,2,2,0,1,1,1,0,1,0 0,0,3,2,2,2,1,0,0,1,1,2,1,0 0,0,1,2,2,7,1,0,0,1,1,2,1,0 0,0,3,2,2,0,5,0,0,1,1,0,1,0 2,0,12,1,1,1,5,0,1,1,1,0,1,0 0,0,1,2,2,4,3,0,1,1,1,2,1,0 2,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,3,2,2,8,3,0,1,1,1,1,1,0 0,0,3,2,0,7,2,0,1,1,1,1,1,0 0,0,2,1,2,3,1,0,0,1,1,2,1,0 1,1,4,3,0,5,2,0,1,1,1,0,1,1 2,4,3,2,0,5,0,0,0,1,1,2,1,0 2,0,10,3,2,5,3,0,0,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,2,1,0 1,0,1,2,0,6,2,1,1,1,1,0,1,0 1,1,3,2,1,2,5,0,0,1,1,0,1,0 2,0,3,2,0,4,2,0,1,1,1,0,1,1 0,0,0,3,2,5,3,1,1,1,1,0,1,0 0,5,0,3,2,5,3,0,0,1,1,0,1,0 2,0,6,2,1,8,5,0,0,1,1,0,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 2,1,3,2,0,1,2,0,1,1,1,0,1,0 1,0,1,2,1,4,3,0,0,1,1,1,1,0 0,1,0,3,1,3,3,0,1,1,1,1,1,1 2,1,6,2,0,9,2,0,1,1,1,0,1,0 0,4,7,1,1,9,5,0,0,1,1,0,1,0 0,0,3,2,2,4,3,0,0,1,1,0,1,0 0,0,0,3,2,4,3,0,0,1,1,0,1,0 1,1,9,1,1,1,5,0,1,1,1,0,1,0 0,0,1,2,2,6,3,0,1,1,1,2,1,0 2,0,3,2,0,7,2,4,1,1,1,0,1,0 0,4,3,2,0,1,2,0,1,1,1,1,1,1 1,0,3,2,0,1,2,0,1,1,1,2,1,0 1,0,0,3,1,3,5,0,0,1,1,1,1,0 1,5,0,3,0,5,2,4,1,1,1,0,1,1 0,0,1,2,0,9,2,0,1,1,1,0,1,0 0,0,3,2,2,1,1,0,0,1,1,0,1,0 0,0,6,2,2,8,3,0,1,1,1,1,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,0 1,0,6,2,0,8,2,0,1,1,1,0,1,0 1,0,2,1,2,1,3,0,1,1,1,0,1,0 2,5,3,2,2,8,3,0,1,1,1,0,1,0 0,4,10,3,2,5,3,0,0,1,1,1,1,0 1,4,0,3,2,5,3,0,0,1,1,0,1,1 1,5,0,3,2,4,1,0,0,1,1,0,1,0 2,0,1,2,1,0,5,4,0,1,1,1,1,0 0,0,3,2,2,3,1,0,0,1,1,2,1,0 1,0,3,2,0,1,2,3,1,1,1,0,1,1 0,0,3,2,2,3,1,0,0,1,1,2,1,0 1,0,10,3,0,4,2,0,1,1,1,0,1,1 1,0,0,3,0,9,2,0,1,1,1,1,1,0 0,0,3,2,0,8,2,0,1,1,1,0,1,0 0,1,1,2,1,2,5,0,0,1,1,2,1,0 0,0,3,2,2,3,1,0,0,1,1,2,1,0 1,0,3,2,3,8,5,4,0,1,1,0,1,0 1,1,0,3,0,3,2,0,1,1,1,1,1,1 2,0,3,2,1,3,3,0,1,1,1,0,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 1,5,0,3,2,4,3,0,0,1,1,2,1,0 0,0,3,2,1,4,3,0,0,1,1,0,1,0 1,0,3,2,0,6,2,0,1,1,1,0,1,1 1,0,3,2,1,8,5,0,0,1,1,0,1,0 0,0,0,3,2,5,3,4,0,1,1,0,1,0 0,0,3,2,0,6,2,0,1,1,1,0,1,0 1,0,0,3,1,7,5,0,0,1,1,1,1,0 1,5,0,3,2,5,3,0,0,1,1,0,1,0 0,5,0,3,0,12,2,0,1,1,1,1,1,1 1,0,3,2,2,7,4,4,0,1,1,0,1,0 1,5,0,3,1,8,4,4,0,1,1,2,1,0 1,0,6,2,1,3,3,0,0,1,1,0,1,0 0,0,2,1,2,2,1,0,0,1,1,2,1,0 1,0,1,2,1,3,5,4,0,1,1,1,1,0 1,0,1,2,2,3,3,0,1,1,1,1,1,1 1,0,6,2,1,8,1,0,0,1,1,0,1,0 0,5,0,3,0,8,2,0,1,1,1,2,1,1 0,0,1,2,2,7,1,0,1,1,1,0,1,0 2,0,12,1,4,7,3,0,0,1,1,2,1,0 2,2,1,2,0,3,2,0,1,1,1,0,1,1 1,0,3,2,1,5,5,4,0,1,1,1,1,0 1,0,9,1,0,4,2,0,1,1,1,1,1,1 0,0,3,2,0,7,2,0,1,1,1,0,1,1 1,0,1,2,0,8,2,0,1,1,1,1,1,0 0,0,0,3,2,5,3,1,1,1,1,2,1,0 1,0,3,2,1,3,5,0,0,1,1,0,1,0 2,0,3,2,1,8,3,0,0,1,1,0,1,0 0,0,3,2,1,1,3,0,0,1,1,0,1,0 1,1,14,0,0,1,2,3,1,1,1,2,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,1 1,0,11,0,5,2,3,0,1,1,1,0,1,0 1,0,0,3,0,1,2,0,1,1,1,0,1,1 0,0,3,2,0,11,0,0,0,1,1,0,1,0 0,0,3,2,0,3,2,0,1,1,1,1,1,1 1,0,1,2,0,4,2,0,1,1,1,1,1,0 2,0,8,0,4,2,5,4,0,1,1,2,1,0 0,0,3,2,2,10,3,0,1,1,1,0,1,0 0,0,1,2,2,2,3,4,1,1,1,0,1,0 0,0,3,2,1,1,3,0,1,1,1,0,1,0 0,0,3,2,3,10,5,0,0,1,1,2,1,0 0,5,0,3,0,5,2,0,1,1,1,0,1,0 1,1,3,2,0,4,2,0,1,1,1,1,1,0 1,0,13,3,0,5,2,0,1,1,1,1,1,1 1,4,0,3,1,5,4,0,0,1,1,1,1,0 2,4,10,3,3,5,1,4,0,1,1,2,1,0 0,4,3,2,2,8,1,0,0,1,1,0,1,0 0,0,0,3,2,2,1,0,1,1,1,1,1,0 1,0,1,2,0,1,2,0,1,1,1,1,1,0 0,0,12,1,2,3,1,0,0,1,1,2,1,0 2,4,3,2,0,1,2,0,1,1,1,0,1,1 1,4,3,2,0,2,4,0,1,1,1,0,1,0 0,0,1,2,2,2,1,0,1,1,1,2,1,0 1,3,1,2,0,8,2,0,1,1,1,1,1,1 0,0,3,2,2,1,4,4,1,1,1,0,1,0 2,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,15,0,2,9,3,0,1,1,1,2,1,0 1,3,0,3,0,5,2,0,1,1,1,0,1,1 0,0,0,3,2,4,3,0,0,1,1,1,1,0 0,0,3,2,0,10,2,0,1,1,1,0,1,0 1,3,3,2,0,12,2,0,1,1,1,0,1,0 2,0,10,3,2,5,3,0,0,1,1,0,1,0 2,0,3,2,4,8,5,0,0,1,1,0,1,0 0,0,1,2,2,2,3,0,1,1,1,1,1,0 0,0,0,3,0,5,2,0,1,1,1,1,1,1 0,0,5,2,2,4,4,0,0,1,1,2,1,0 0,0,1,2,2,11,1,0,0,1,1,0,1,0 1,0,8,0,1,3,3,3,0,1,1,2,1,0 0,2,1,2,2,9,1,0,1,1,1,1,1,0 0,0,3,2,2,2,3,4,0,1,1,2,1,0 1,0,5,2,2,7,1,1,1,1,1,0,1,0 0,0,0,3,0,3,2,0,1,1,1,1,1,1 1,0,14,0,0,7,2,0,1,1,1,0,1,0 1,0,6,2,2,5,3,0,0,1,1,1,1,1 1,4,0,3,2,5,3,0,0,1,1,1,1,0 1,0,3,2,1,0,3,0,1,1,1,0,1,1 0,0,1,2,2,6,1,0,0,1,1,2,1,0 1,0,3,2,2,10,3,0,1,1,1,1,1,0 1,0,13,3,0,5,2,0,1,1,1,0,1,1 0,3,1,2,2,0,5,2,0,1,1,0,1,0 3,0,0,3,0,3,2,0,1,1,1,0,1,0 2,4,10,3,1,5,5,4,0,1,1,2,1,1 0,0,1,2,2,8,1,0,1,1,1,2,1,0 0,0,3,2,2,7,3,0,0,1,1,0,1,0 1,0,3,2,0,6,2,0,1,1,1,0,1,0 0,3,3,2,2,8,3,0,0,1,1,0,1,0 0,0,0,3,2,0,1,0,1,1,1,1,1,0 1,0,1,2,2,7,3,0,1,1,1,0,1,0 0,0,3,2,0,3,2,0,1,1,1,0,1,0 1,0,10,3,0,4,2,0,1,1,1,0,1,1 1,0,3,2,0,4,2,0,1,1,1,1,1,1 2,5,1,2,0,8,0,0,0,1,1,0,1,1 0,0,3,2,2,3,1,3,1,1,1,0,1,0 1,0,0,3,0,9,2,0,1,1,1,1,1,0 3,0,3,2,4,8,3,0,1,1,1,2,1,1 2,0,3,2,2,3,3,0,1,1,1,0,1,0 0,0,3,2,1,4,3,0,1,1,1,1,1,0 0,4,1,2,0,12,2,0,1,1,1,2,1,0 1,4,0,3,0,5,2,0,1,1,1,2,1,1 0,0,0,3,1,8,5,0,0,1,1,0,1,0 2,4,12,1,4,2,3,0,0,1,1,2,1,0 0,0,3,2,0,3,3,4,1,1,1,1,1,0 0,0,3,2,0,10,2,0,1,1,1,0,1,0 1,5,6,2,1,8,5,0,0,1,1,0,1,0 1,1,1,2,1,5,3,0,0,1,1,2,1,0 0,0,1,2,0,4,0,0,0,1,1,0,1,0 1,0,3,2,5,2,5,4,0,1,1,2,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,0 1,4,1,2,1,12,3,0,1,1,1,0,1,0 0,0,3,2,0,6,2,0,1,1,1,0,1,0 0,0,3,2,0,2,2,0,1,1,1,0,1,0 2,1,3,2,0,1,2,0,1,1,1,1,1,0 1,1,6,2,1,10,3,0,1,1,1,1,1,0 0,0,0,3,2,4,3,0,1,1,1,0,1,0 0,0,1,2,2,3,3,4,0,1,1,2,1,0 2,0,0,3,0,4,0,1,0,1,1,1,1,1 2,3,10,3,1,4,3,0,0,1,1,1,1,1 0,0,1,2,2,12,1,0,1,1,1,0,1,0 1,0,3,2,3,1,3,0,1,1,1,2,1,0 1,2,4,3,0,5,2,1,1,1,1,1,1,1 1,0,1,2,1,3,3,0,1,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,1,1,0 2,3,7,1,1,2,5,0,0,1,1,0,1,0 0,2,3,2,2,2,1,0,1,1,1,2,1,0 0,0,1,2,0,4,2,0,1,1,1,1,1,0 0,1,3,2,2,0,1,0,1,1,1,2,1,0 0,0,0,3,0,3,2,0,1,1,1,0,1,0 1,1,1,2,2,8,3,0,0,1,1,1,1,0 1,4,8,0,0,10,2,4,1,1,1,0,1,0 1,0,8,0,0,2,2,1,1,1,1,2,1,0 1,0,10,3,2,4,3,0,1,1,1,1,1,1 2,0,10,3,0,5,2,0,1,1,1,2,1,1 0,0,0,3,2,3,3,0,1,1,1,1,1,0 1,3,1,2,0,4,2,1,1,1,1,0,1,1 0,4,3,2,2,12,3,0,1,1,1,1,1,0 0,1,0,3,2,3,3,0,0,1,1,1,1,0 1,0,6,2,0,1,2,2,1,1,1,0,1,1 0,0,3,2,1,7,3,0,1,1,1,0,1,0 1,0,3,2,2,2,3,0,0,1,1,2,1,0 0,0,0,3,1,0,5,0,0,1,1,2,1,0 0,1,3,2,2,9,1,1,1,1,1,2,1,0 0,0,10,3,0,8,2,0,1,1,1,2,1,0 1,0,1,2,0,4,2,0,1,1,1,0,1,0 0,0,7,1,2,7,3,0,1,1,1,2,1,0 1,0,15,0,0,9,2,4,1,1,1,0,1,0 1,1,4,3,0,5,2,0,1,1,1,1,1,1 0,0,3,2,2,7,4,0,1,1,1,0,1,0 1,1,1,2,0,4,0,0,0,1,1,1,1,0 0,0,1,2,2,0,5,0,0,1,1,0,1,0 0,0,1,2,3,2,3,0,0,1,1,2,1,0 0,0,7,1,2,10,5,0,1,1,1,2,1,0 1,4,0,3,0,12,2,0,1,1,1,0,1,0 1,0,0,3,2,5,3,0,0,1,1,1,1,0 0,0,10,3,2,5,3,0,0,1,1,2,1,0 0,0,10,3,2,4,3,0,0,1,1,1,1,1 0,5,10,3,1,5,3,2,1,1,1,1,1,0 2,0,7,1,1,12,3,0,1,1,1,0,1,0 0,0,7,1,5,9,3,0,1,1,1,0,1,0 2,0,11,0,0,7,2,0,1,1,1,0,1,0 1,0,3,2,0,1,0,4,0,1,1,0,1,0 2,0,3,2,0,2,4,0,0,1,1,2,1,0 0,0,2,1,2,3,1,4,0,1,1,2,1,0 0,0,3,2,1,3,3,0,0,1,1,2,1,0 0,0,1,2,2,8,5,4,0,1,1,2,1,0 1,0,3,2,1,6,3,0,1,1,1,2,1,0 0,0,3,2,0,3,2,0,1,1,1,1,1,0 0,0,0,3,2,3,3,0,0,1,1,0,1,0 1,0,9,1,0,2,0,0,0,1,1,1,1,0 0,1,12,1,2,10,3,0,1,1,1,1,1,0 0,0,0,3,2,8,1,4,0,1,1,2,1,0 0,0,1,2,2,3,1,0,1,1,1,2,1,0 0,0,3,2,2,1,1,0,1,1,1,0,1,0 0,0,1,2,2,5,5,0,0,1,1,1,1,0 2,1,1,2,4,4,3,0,0,1,1,2,1,0 0,0,6,2,0,0,2,0,1,1,1,1,1,1 0,0,1,2,1,5,3,0,0,1,1,0,1,0 1,0,3,2,2,2,3,4,1,1,1,0,1,0 0,0,5,2,2,4,3,0,0,1,1,0,1,0 0,0,6,2,2,5,3,0,0,1,1,0,1,0 0,0,0,3,2,6,1,0,1,1,1,0,1,0 1,1,4,3,0,5,2,0,1,1,1,0,1,1 1,0,10,3,0,4,2,0,1,1,1,0,1,1 2,0,11,0,0,6,2,0,1,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,0 1,0,3,2,0,3,2,0,1,1,1,1,1,1 1,0,1,2,0,0,2,0,1,1,1,2,1,0 0,0,0,3,2,8,3,0,0,1,1,2,1,0 1,0,0,3,0,8,2,1,1,1,1,1,1,1 2,3,4,3,0,5,2,1,1,1,1,1,1,1 3,0,1,2,0,3,2,0,1,1,1,2,1,1 1,0,10,3,0,5,2,0,1,1,1,1,1,0 0,0,0,3,2,4,3,0,1,1,1,0,1,0 1,0,1,2,0,4,2,0,1,1,1,0,1,1 0,0,12,1,0,8,0,0,0,1,1,2,1,0 1,4,10,3,4,5,5,4,0,1,1,0,1,0 0,2,3,2,0,3,2,0,1,1,1,1,1,1 0,2,1,2,0,4,2,0,1,1,1,1,1,0 0,0,1,2,1,3,5,0,0,1,1,1,1,0 0,0,3,2,2,2,1,0,0,1,1,2,1,0 1,0,8,0,1,7,3,0,0,1,1,0,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 1,0,3,2,1,1,3,0,1,1,1,1,1,0 0,5,0,3,2,12,1,0,0,1,1,0,1,0 0,4,1,2,2,12,3,0,0,1,1,0,1,0 0,0,3,2,0,8,0,0,0,1,1,0,1,0 0,0,3,2,2,3,1,4,1,1,1,0,1,0 0,0,2,1,2,8,1,0,0,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 1,0,0,3,0,8,2,0,1,1,1,0,1,1 1,1,7,1,0,3,2,0,1,1,1,0,1,0 0,0,3,2,2,8,4,4,0,1,1,2,1,0 1,0,1,2,2,10,3,4,1,1,1,0,1,0 2,5,1,2,0,1,2,0,1,1,1,1,1,1 2,1,6,2,4,1,5,0,0,1,1,0,1,0 0,0,3,2,2,3,1,0,0,1,1,2,1,0 2,0,1,2,0,3,2,0,1,1,1,0,1,0 0,0,6,2,0,8,0,0,0,1,1,0,1,0 0,0,0,3,0,5,2,0,1,1,1,1,1,0 2,1,1,2,2,5,3,0,0,1,1,1,1,1 0,0,3,2,2,4,3,0,1,1,1,1,1,0 0,0,1,2,0,2,0,0,0,1,1,2,1,0 1,0,1,2,1,5,1,0,0,1,1,0,1,0 1,0,0,3,1,4,3,0,0,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,1,1,0 0,0,3,2,2,3,1,0,1,1,1,2,1,0 1,0,6,2,4,8,5,0,0,1,1,2,1,0 1,2,1,2,1,1,5,0,0,1,1,0,1,0 0,0,12,1,0,7,2,0,1,1,1,1,1,0 0,0,1,2,2,5,1,0,0,1,1,2,1,0 0,0,3,2,3,1,3,0,1,1,1,0,1,0 1,4,1,2,0,8,0,0,0,1,1,0,1,1 1,0,1,2,1,7,1,3,1,1,1,0,1,0 1,0,1,2,0,4,2,0,1,1,1,1,1,0 1,0,3,2,1,8,5,0,0,1,1,0,1,0 2,0,1,2,0,6,2,1,1,1,1,0,1,1 1,0,1,2,0,3,2,0,1,1,1,1,1,1 1,0,12,1,2,2,5,0,0,1,1,2,1,0 0,0,10,3,2,3,3,0,1,1,1,1,1,0 0,0,2,1,2,2,1,0,0,1,1,2,1,0 2,0,1,2,2,5,3,0,0,1,1,0,1,1 3,5,1,2,4,4,3,4,1,1,1,0,1,1 1,0,6,2,0,1,2,0,1,1,1,1,1,0 1,1,3,2,0,1,2,0,1,1,1,1,1,1 1,0,10,3,3,4,3,0,1,1,1,0,1,1 0,0,0,3,2,3,3,0,1,1,1,1,1,0 0,0,6,2,2,8,3,4,1,1,1,1,1,0 1,2,1,2,0,4,2,0,1,1,1,0,1,1 0,0,0,3,0,5,0,0,0,1,1,2,1,1 0,2,6,2,0,1,2,0,1,1,1,1,1,0 0,5,4,3,2,5,3,0,0,1,1,1,1,0 1,1,1,2,0,7,0,0,0,1,1,0,1,0 1,0,0,3,0,8,2,0,1,1,1,1,1,0 1,4,0,3,0,4,2,1,1,1,1,0,1,1 0,0,0,3,0,0,2,0,1,1,1,0,1,1 1,0,3,2,0,1,0,0,0,1,1,1,1,0 2,0,4,3,4,5,3,0,0,1,1,0,1,1 1,0,0,3,0,5,2,0,1,1,1,1,1,0 0,0,12,1,0,6,2,0,1,1,1,2,1,0 1,0,14,0,5,1,3,0,1,1,1,1,1,0 0,2,0,3,1,4,5,4,1,1,1,1,1,1 2,0,1,2,4,0,5,0,0,1,1,0,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 2,0,5,2,0,1,2,0,1,1,1,0,1,1 0,0,3,2,2,3,1,0,0,1,1,2,1,0 1,2,0,3,0,4,2,0,1,1,1,1,1,1 1,0,3,2,0,7,2,0,1,1,1,0,1,1 1,0,1,2,1,8,3,0,0,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 1,0,0,3,1,4,3,0,0,1,1,1,1,1 0,0,9,1,2,1,1,0,1,1,1,0,1,0 0,0,2,1,0,4,2,0,1,1,1,0,1,0 0,0,3,2,2,3,3,0,0,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,0 1,0,1,2,1,8,4,0,0,1,1,0,1,0 0,0,3,2,3,1,3,0,1,1,1,0,1,0 1,0,1,2,0,4,2,0,1,1,1,1,1,0 1,0,5,2,0,3,2,0,1,1,1,0,1,1 0,0,0,3,0,5,2,0,1,1,1,0,1,0 0,1,4,3,0,5,2,0,1,1,1,0,1,1 0,1,1,2,0,1,2,0,1,1,1,0,1,1 0,0,0,3,1,8,3,0,0,1,1,0,1,0 0,0,3,2,3,10,5,4,1,1,1,1,1,0 1,0,0,3,2,4,3,0,0,1,1,1,1,0 0,0,3,2,2,3,4,4,1,1,1,0,1,0 0,0,12,1,2,3,1,0,0,1,1,2,1,0 1,0,3,2,0,4,2,0,1,1,1,1,1,1 1,0,1,2,0,5,2,0,1,1,1,0,1,1 1,4,1,2,0,4,2,2,1,1,1,0,1,1 1,0,3,2,0,8,2,0,1,1,1,0,1,0 0,0,3,2,0,3,0,4,0,1,1,2,1,0 1,0,3,2,1,3,5,0,0,1,1,0,1,0 0,0,3,2,2,2,3,4,0,1,1,2,1,0 1,0,13,3,1,4,3,0,0,1,1,1,1,1 2,0,3,2,0,1,2,0,1,1,1,1,1,1 2,4,0,3,2,5,3,0,0,1,1,1,1,1 0,0,9,1,2,2,3,0,1,1,1,2,1,0 1,4,3,2,1,2,5,0,0,1,1,1,1,0 1,0,0,3,1,3,3,0,1,1,1,1,1,0 0,0,3,2,2,2,3,4,1,1,1,0,1,0 0,1,12,1,0,4,2,0,1,1,1,1,1,0 2,0,1,2,1,8,3,0,0,1,1,2,1,0 1,0,0,3,0,5,2,0,1,1,1,0,1,1 0,0,2,1,2,2,4,4,1,1,1,2,1,0 0,0,2,1,2,3,5,0,0,1,1,2,1,0 2,4,1,2,1,8,3,4,1,1,1,0,1,0 1,0,5,2,3,0,3,0,0,1,1,2,1,0 0,0,2,1,0,1,2,0,1,1,1,0,1,0 0,0,1,2,2,7,3,4,0,1,1,0,1,0 1,4,0,3,0,5,0,0,0,1,1,1,1,0 0,0,3,2,2,1,1,0,1,1,1,0,1,0 0,0,0,3,0,4,0,0,0,1,1,0,1,1 1,0,0,3,0,4,2,0,1,1,1,1,1,1 2,4,0,3,0,4,2,0,1,1,1,2,1,0 1,0,3,2,0,8,2,0,1,1,1,1,1,1 0,0,1,2,2,3,3,0,1,1,1,0,1,0 0,0,12,1,0,6,2,0,1,1,1,0,1,0 1,0,3,2,4,8,4,4,0,1,1,0,1,0 1,2,5,2,0,5,2,0,1,1,1,1,1,1 1,2,0,3,0,4,2,0,1,1,1,1,1,1 0,0,1,2,2,3,1,0,0,1,1,2,1,0 0,0,3,2,2,3,1,1,0,1,1,0,1,0 0,0,8,0,2,7,4,0,0,1,1,2,1,0 2,0,1,2,0,4,2,0,1,1,1,0,1,1 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,0,3,2,8,3,0,0,1,1,1,1,0 2,1,3,2,0,3,2,0,1,1,1,1,1,1 0,0,5,2,0,3,2,0,1,1,1,2,1,1 1,0,1,2,0,4,2,4,1,1,1,2,1,0 0,0,6,2,3,8,5,4,0,1,1,0,1,0 2,0,7,1,0,11,0,0,0,1,1,2,1,0 1,3,0,3,0,8,2,0,1,1,1,1,1,1 1,5,10,3,2,5,3,0,0,1,1,1,1,1 1,0,8,0,0,1,2,0,1,1,1,1,1,1 2,0,3,2,0,9,2,0,1,1,1,2,1,0 1,0,3,2,2,2,4,4,1,1,1,0,1,0 2,5,0,3,1,8,3,0,1,1,1,0,1,1 2,0,8,0,0,1,2,0,1,1,1,0,1,0 0,1,0,3,0,5,0,0,0,1,1,0,1,1 1,0,3,2,0,1,2,0,1,1,1,1,1,0 0,0,1,2,0,10,2,0,1,1,1,1,1,1 0,0,1,2,2,7,3,0,1,1,1,0,1,0 0,0,5,2,2,8,1,0,1,1,1,0,1,0 1,0,3,2,0,10,2,0,1,1,1,0,1,1 0,0,3,2,3,8,4,0,0,1,1,0,1,0 0,0,3,2,2,3,3,0,0,1,1,2,1,0 1,0,2,1,0,10,2,0,1,1,1,1,1,0 1,4,2,1,0,6,2,0,1,1,1,0,1,0 0,0,12,1,3,2,5,1,0,1,1,2,1,0 1,0,2,1,0,1,2,0,1,1,1,2,1,0 0,0,1,2,0,2,2,0,1,1,1,0,1,0 1,0,3,2,1,1,3,0,1,1,1,1,1,0 2,0,12,1,0,10,2,4,1,1,1,0,1,0 0,0,5,2,1,7,3,0,1,1,1,0,1,0 0,0,6,2,2,8,3,0,0,1,1,0,1,0 1,0,1,2,0,3,2,0,1,1,1,1,1,0 0,0,3,2,2,8,3,0,1,1,1,2,1,0 0,0,3,2,2,6,1,0,1,1,1,2,1,0 0,0,7,1,0,10,2,0,1,1,1,0,1,0 1,0,3,2,2,1,1,0,1,1,1,0,1,0 1,0,1,2,0,1,0,0,0,1,1,0,1,1 0,1,3,2,2,4,1,0,1,1,1,0,1,0 2,0,3,2,1,2,3,0,0,1,1,0,1,0 0,0,5,2,2,8,1,0,1,1,1,2,1,0 0,3,3,2,2,8,5,0,0,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,0 1,2,13,3,1,4,3,0,1,1,1,1,1,1 0,0,0,3,0,5,2,0,1,1,1,1,1,1 0,0,9,1,2,2,1,0,0,1,1,2,1,0 1,4,3,2,2,8,3,0,0,1,1,2,1,0 0,0,3,2,2,1,4,0,1,1,1,0,1,0 2,4,3,2,0,2,2,0,1,1,1,0,1,0 1,0,10,3,2,5,5,0,0,1,1,0,1,0 0,0,1,2,2,6,1,0,1,1,1,0,1,0 0,0,0,3,0,3,2,0,1,1,1,0,1,1 2,0,12,1,0,1,2,0,1,1,1,0,1,0 1,0,1,2,1,1,1,0,0,1,1,1,1,1 0,0,1,2,2,2,1,0,1,1,1,0,1,0 0,0,3,2,2,1,3,0,1,1,1,2,1,0 1,2,4,3,0,5,2,0,1,1,1,1,1,1 0,3,0,3,5,4,3,4,1,1,1,0,1,0 1,0,3,2,1,4,3,0,0,1,1,1,1,0 0,0,10,3,0,8,2,0,1,1,1,1,1,1 1,3,10,3,0,4,2,0,1,1,1,0,1,1 1,0,3,2,1,8,3,0,0,1,1,0,1,0 0,5,1,2,0,5,0,0,0,1,1,0,1,1 1,2,0,3,0,9,0,0,0,1,1,1,1,1 0,0,1,2,2,2,1,0,0,1,1,2,1,0 0,0,3,2,3,0,3,0,1,1,1,0,1,0 0,0,1,2,2,4,1,0,1,1,1,1,1,0 1,0,4,3,0,4,2,0,1,1,1,1,1,1 2,0,1,2,1,0,3,0,0,1,1,1,1,0 2,0,13,3,0,4,2,0,1,1,1,1,1,1 1,0,1,2,0,1,2,0,1,1,1,0,1,0 2,0,12,1,1,8,3,0,1,1,1,1,1,0 0,0,6,2,2,2,4,4,1,1,1,1,1,0 1,2,4,3,0,5,2,0,1,1,1,1,1,1 0,5,1,2,0,1,2,4,1,1,1,0,1,0 0,1,9,1,2,9,1,0,1,1,1,1,1,0 1,1,5,2,0,1,2,0,1,1,1,1,1,1 0,0,0,3,2,3,1,0,1,1,1,0,1,0 1,0,3,2,5,7,3,0,1,1,1,1,1,0 0,4,10,3,2,5,3,0,0,1,1,1,1,0 0,0,0,3,2,8,3,0,0,1,1,2,1,0 2,1,3,2,0,1,2,0,1,1,1,1,1,0 0,0,2,1,1,2,3,0,0,1,1,1,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 0,4,10,3,2,5,3,0,0,1,1,1,1,0 1,1,1,2,0,1,2,2,1,1,1,1,1,1 0,0,1,2,0,3,2,0,1,1,1,1,1,1 0,0,1,2,2,6,3,0,0,1,1,0,1,0 1,0,6,2,1,0,3,0,0,1,1,0,1,0 0,2,0,3,2,4,1,0,1,1,1,1,1,0 1,0,3,2,1,1,3,0,1,1,1,1,1,0 0,0,3,2,0,1,2,0,1,1,1,1,1,0 0,0,3,2,1,5,3,0,1,1,1,0,1,0 2,5,8,0,0,1,2,0,1,1,1,2,1,0 2,5,1,2,1,1,3,0,1,1,1,0,1,0 0,0,3,2,2,7,1,0,1,1,1,1,1,0 2,0,9,1,1,10,5,4,1,1,1,1,1,1 1,1,2,1,0,1,2,0,1,1,1,1,1,0 0,0,0,3,2,8,3,1,0,1,1,0,1,0 0,5,1,2,0,2,2,0,1,1,1,0,1,0 1,0,0,3,0,1,2,0,1,1,1,0,1,1 1,0,3,2,0,5,2,0,1,1,1,1,1,1 0,0,3,2,2,6,1,0,1,1,1,0,1,0 0,0,3,2,2,1,1,0,1,1,1,0,1,0 0,0,1,2,2,4,3,0,0,1,1,0,1,1 0,0,5,2,1,8,5,0,0,1,1,2,1,0 0,1,3,2,2,6,3,0,1,1,1,0,1,0 0,1,3,2,2,1,1,0,1,1,1,1,1,0 2,0,3,2,4,8,5,0,0,1,1,2,1,0 1,0,1,2,0,4,0,0,0,1,1,1,1,1 0,0,0,3,2,8,1,0,0,1,1,0,1,0 1,0,10,3,0,4,2,0,1,1,1,2,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,0 0,0,5,2,2,2,1,0,0,1,1,0,1,0 1,0,5,2,0,3,2,0,1,1,1,1,1,1 1,0,3,2,0,3,2,0,1,1,1,1,1,1 0,0,10,3,2,5,3,1,1,1,1,2,1,0 0,0,0,3,0,3,2,0,1,1,1,0,1,1 0,0,1,2,2,8,1,0,0,1,1,2,1,0 0,0,0,3,2,0,3,1,1,1,1,0,1,0 2,0,2,1,4,7,3,4,0,1,1,2,1,0 0,0,3,2,0,10,2,0,1,1,1,1,1,0 0,0,3,2,2,2,3,0,1,1,1,2,1,0 0,0,3,2,2,8,1,2,0,1,1,0,1,0 1,0,1,2,0,3,2,4,1,1,1,1,1,1 1,0,3,2,0,4,2,0,1,1,1,0,1,0 1,0,10,3,0,5,2,0,1,1,1,1,1,0 2,4,3,2,0,1,2,0,1,1,1,0,1,0 0,0,7,1,2,1,4,3,1,1,1,1,1,0 0,0,5,2,2,4,3,0,0,1,1,0,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,1,2,2,2,4,2,1,1,1,1,1,0 0,0,3,2,0,3,2,0,1,1,1,0,1,1 1,0,3,2,1,1,5,0,1,1,1,1,1,0 0,0,9,1,0,2,2,1,1,1,1,1,1,0 1,1,14,0,0,9,2,0,1,1,1,1,1,1 1,5,13,3,5,5,3,0,1,1,1,1,1,1 1,0,0,3,0,3,2,0,1,1,1,1,1,1 2,0,3,2,0,3,2,0,1,1,1,0,1,1 0,0,2,1,2,8,5,0,0,1,1,2,1,0 1,0,0,3,2,7,4,0,1,1,1,0,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 0,0,8,0,0,1,2,0,1,1,1,2,1,0 1,2,0,3,0,5,2,0,1,1,1,1,1,1 1,1,10,3,0,5,2,0,1,1,1,0,1,0 0,0,3,2,2,6,3,0,1,1,1,1,1,0 2,1,2,1,1,2,5,0,1,1,1,1,1,0 1,0,0,3,0,3,2,0,1,1,1,1,1,1 1,0,0,3,2,5,3,0,1,1,1,0,1,1 1,0,1,2,0,5,2,0,1,1,1,1,1,0 1,5,1,2,2,4,5,0,0,1,1,1,1,0 1,3,1,2,0,1,2,4,1,1,1,2,1,0 0,0,1,2,5,2,3,0,1,1,1,1,1,0 1,1,3,2,0,9,2,0,1,1,1,1,1,0 1,1,1,2,2,3,1,0,1,1,1,0,1,0 0,1,6,2,2,9,3,0,1,1,1,1,1,0 0,0,0,3,2,8,3,4,0,1,1,0,1,0 1,0,3,2,1,3,4,0,0,1,1,1,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 2,1,1,2,4,2,3,0,0,1,1,2,1,0 0,0,3,2,2,2,1,0,1,1,1,0,1,0 1,0,9,1,0,7,2,0,1,1,1,1,1,0 0,0,2,1,2,3,1,0,0,1,1,2,1,0 1,4,3,2,0,1,2,0,1,1,1,0,1,0 0,3,1,2,2,10,1,0,1,1,1,2,1,0 2,0,8,0,0,10,2,0,1,1,1,2,1,0 0,1,1,2,0,5,2,0,1,1,1,1,1,1 3,0,9,1,0,6,2,0,1,1,1,2,1,0 0,0,0,3,2,4,3,0,1,1,1,0,1,0 0,0,2,1,2,10,5,0,1,1,1,0,1,0 1,0,1,2,0,4,0,0,0,1,1,1,1,1 2,0,6,2,4,8,3,0,0,1,1,2,1,0 0,0,12,1,0,2,2,0,1,1,1,1,1,0 2,0,3,2,4,7,5,0,0,1,1,2,1,0 0,1,2,1,2,2,5,2,0,1,1,0,1,0 1,0,0,3,0,3,2,0,1,1,1,0,1,1 1,0,0,3,0,7,2,0,1,1,1,0,1,0 2,0,3,2,0,8,2,0,1,1,1,1,1,0 1,0,0,3,1,1,3,0,1,1,1,0,1,0 2,5,13,3,0,10,2,0,1,1,1,1,1,0 2,0,0,3,0,0,2,0,1,1,1,0,1,0 1,1,0,3,0,4,2,0,1,1,1,1,1,0 2,0,3,2,4,1,3,0,0,1,1,1,1,0 1,0,0,3,0,8,0,0,0,1,1,0,1,0 1,4,10,3,0,5,2,0,1,1,1,0,1,1 0,0,0,3,2,12,1,0,1,1,1,1,1,0 2,0,3,2,4,8,3,0,0,1,1,0,1,0 1,0,3,2,0,3,2,0,1,1,1,1,1,1 0,0,5,2,0,2,2,0,1,1,1,0,1,0 1,0,0,3,0,5,2,0,1,1,1,0,1,1 1,0,7,1,0,8,2,0,1,1,1,1,1,0 2,5,0,3,0,4,2,0,1,1,1,0,1,1 0,0,5,2,0,4,2,0,1,1,1,1,1,1 1,0,0,3,0,5,2,0,1,1,1,2,1,1 1,0,2,1,0,9,2,0,1,1,1,0,1,0 1,0,3,2,0,6,2,4,1,1,1,0,1,0 0,5,1,2,2,12,3,0,1,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 1,0,3,2,0,1,2,4,1,1,1,0,1,0 0,0,0,3,2,8,3,0,0,1,1,0,1,0 1,2,10,3,1,4,3,4,1,1,1,1,1,1 0,0,1,2,2,6,1,0,1,1,1,2,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 1,0,3,2,0,4,2,0,1,1,1,1,1,1 0,0,1,2,2,2,1,0,1,1,1,2,1,0 2,0,3,2,4,7,3,4,0,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,1 1,4,0,3,1,5,1,0,0,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,1 2,2,1,2,0,9,2,0,1,1,1,1,1,0 0,4,3,2,0,12,2,1,1,1,1,0,1,1 0,0,1,2,2,4,3,0,0,1,1,2,1,0 2,1,10,3,1,4,3,0,1,1,1,1,1,0 0,0,1,2,1,8,5,0,0,1,1,2,1,0 2,1,7,1,0,9,2,0,1,1,1,1,1,0 0,0,10,3,2,5,3,4,1,1,1,0,1,0 1,0,3,2,0,10,2,0,1,1,1,0,1,0 0,0,3,2,2,2,3,0,1,1,1,0,1,0 1,0,0,3,0,8,2,1,1,1,1,0,1,1 1,4,0,3,0,12,2,0,1,1,1,1,1,0 0,0,8,0,2,6,3,0,1,1,1,2,1,0 1,5,10,3,1,4,3,0,0,1,1,1,1,1 1,0,3,2,1,11,5,0,0,1,1,2,1,0 1,0,1,2,2,10,3,0,1,1,1,2,1,0 3,0,3,2,4,8,5,0,0,1,1,2,1,0 2,0,8,0,0,10,2,0,1,1,1,1,1,1 1,0,6,2,0,1,2,0,1,1,1,0,1,0 0,0,12,1,0,9,2,0,1,1,1,2,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,1 1,0,0,3,2,4,5,4,0,1,1,0,1,0 2,3,1,2,0,8,2,0,1,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,1,2,0,1,2,0,1,1,1,1,1,1 0,0,3,2,2,2,3,0,1,1,1,2,1,0 2,0,0,3,1,3,3,0,0,1,1,2,1,1 0,0,3,2,2,6,3,0,1,1,1,2,1,0 1,0,12,1,4,3,5,0,0,1,1,0,1,0 1,0,6,2,2,0,3,0,1,1,1,0,1,1 1,5,3,2,1,8,5,0,0,1,1,1,1,0 1,5,1,2,1,0,5,0,0,1,1,2,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 1,5,0,3,1,5,5,0,0,1,1,0,1,0 1,0,1,2,0,3,2,0,1,1,1,1,1,1 0,0,1,2,2,8,1,0,1,1,1,2,1,0 0,0,3,2,2,5,3,0,0,1,1,0,1,0 1,5,0,3,1,5,3,0,0,1,1,0,1,0 1,1,10,3,0,3,2,0,1,1,1,1,1,1 0,0,3,2,3,12,3,0,1,1,1,0,1,1 2,1,4,3,0,5,2,0,1,1,1,1,1,1 1,4,3,2,1,8,4,0,0,1,1,2,1,0 0,0,1,2,0,3,2,0,1,1,1,0,1,0 0,0,3,2,1,8,5,0,0,1,1,0,1,0 2,0,4,3,0,5,2,0,1,1,1,1,1,1 2,4,6,2,4,8,3,2,0,1,1,0,1,0 0,0,0,3,0,0,2,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,1 1,0,6,2,0,8,0,0,0,1,1,0,1,0 0,0,3,2,2,6,3,0,1,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,0 2,0,12,1,0,10,2,0,1,1,1,0,1,0 0,0,2,1,0,10,2,0,1,1,1,0,1,0 0,0,0,3,2,5,3,0,1,1,1,1,1,0 1,0,3,2,0,6,2,0,1,1,1,0,1,0 2,0,3,2,4,3,3,0,0,1,1,2,1,0 2,2,4,3,0,5,2,0,1,1,1,1,1,1 1,0,10,3,2,5,3,0,1,1,1,1,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,1 1,2,3,2,0,3,2,0,1,1,1,1,1,1 2,2,3,2,1,4,5,0,1,1,1,1,1,1 1,0,5,2,1,4,3,0,0,1,1,0,1,0 1,0,6,2,0,12,2,0,1,1,1,0,1,0 2,0,3,2,4,4,3,0,1,1,1,1,1,1 0,3,6,2,2,0,5,4,1,1,1,0,1,0 1,0,10,3,1,5,5,0,0,1,1,0,1,0 0,0,1,2,0,3,2,0,1,1,1,0,1,0 1,0,12,1,0,10,2,0,1,1,1,1,1,1 0,1,3,2,0,4,2,0,1,1,1,0,1,0 1,2,0,3,0,3,2,0,1,1,1,1,1,1 2,0,14,0,0,7,2,3,1,1,1,2,1,0 2,0,0,3,0,5,2,0,1,1,1,0,1,1 2,0,1,2,0,0,2,0,1,1,1,0,1,0 3,1,9,1,1,10,3,0,1,1,1,2,1,0 2,0,10,3,0,4,2,0,1,1,1,1,1,1 1,0,3,2,2,1,1,0,1,1,1,2,1,0 0,0,1,2,0,4,2,0,1,1,1,0,1,0 0,0,0,3,1,3,3,0,1,1,1,0,1,0 0,0,0,3,0,3,2,0,1,1,1,1,1,1 1,5,0,3,0,12,2,0,1,1,1,1,1,1 1,0,3,2,1,8,3,0,0,1,1,0,1,0 1,4,13,3,0,5,2,0,1,1,1,1,1,1 0,0,0,3,2,0,3,1,1,1,1,0,1,0 1,0,5,2,0,2,2,0,1,1,1,0,1,0 1,0,3,2,1,11,5,0,0,1,1,2,1,0 2,4,1,2,1,1,5,0,1,1,1,0,1,0 2,0,3,2,0,9,2,0,1,1,1,0,1,0 1,0,1,2,1,1,5,0,1,1,1,0,1,1 0,3,1,2,0,13,2,0,1,1,1,1,1,1 1,0,3,2,0,2,0,4,0,1,1,2,1,1 2,0,12,1,0,1,2,0,1,1,1,1,1,0 1,0,3,2,1,6,4,0,0,1,1,0,1,0 0,0,0,3,3,0,5,0,0,1,1,0,1,0 1,0,3,2,3,11,5,4,0,1,1,0,1,0 1,0,0,3,0,4,0,0,0,1,1,2,1,1 1,2,0,3,0,4,2,4,1,1,1,1,1,1 1,0,10,3,0,4,2,0,1,1,1,1,1,1 1,0,1,2,0,4,2,0,1,1,1,0,1,1 2,0,0,3,0,4,2,0,1,1,1,0,1,1 1,1,3,2,1,2,1,0,0,1,1,0,1,0 1,0,0,3,2,5,3,0,0,1,1,0,1,0 1,1,10,3,2,4,3,0,1,1,1,2,1,1 0,3,3,2,2,8,1,0,1,1,1,2,1,0 0,0,2,1,2,7,1,0,1,1,1,0,1,0 0,4,0,3,2,5,3,0,1,1,1,0,1,0 1,0,7,1,2,2,3,4,0,1,1,0,1,0 0,1,0,3,0,9,2,0,1,1,1,1,1,0 0,0,5,2,2,8,3,0,0,1,1,0,1,0 0,0,3,2,2,10,1,0,1,1,1,1,1,0 1,5,10,3,0,5,2,4,1,1,1,1,1,0 0,0,0,3,0,5,0,0,0,1,1,0,1,0 1,0,3,2,0,8,0,0,0,1,1,0,1,1 1,0,10,3,1,8,5,0,0,1,1,0,1,0 0,0,6,2,2,4,4,0,1,1,1,0,1,0 2,0,12,1,0,12,2,0,1,1,1,2,1,0 0,0,7,1,0,1,2,0,1,1,1,0,1,0 0,0,3,2,2,2,3,0,0,1,1,1,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,1 0,5,0,3,2,5,3,0,1,1,1,2,1,0 0,0,3,2,3,8,3,0,0,1,1,0,1,0 0,0,12,1,2,2,1,0,0,1,1,2,1,0 0,0,3,2,2,8,1,0,0,1,1,0,1,0 0,0,3,2,0,8,2,0,1,1,1,0,1,0 1,0,3,2,0,3,0,0,0,1,1,0,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,1 1,0,2,1,1,2,5,0,0,1,1,0,1,0 1,0,6,2,0,1,2,0,1,1,1,1,1,0 0,0,5,2,0,1,2,0,1,1,1,1,1,0 1,0,0,3,1,4,5,0,0,1,1,0,1,0 1,0,0,3,4,8,5,0,0,1,1,1,1,0 0,0,3,2,2,4,3,0,0,1,1,1,1,0 1,4,1,2,4,0,5,0,0,1,1,0,1,0 0,0,2,1,3,2,3,0,1,1,1,2,1,0 0,0,9,1,1,12,4,0,1,1,1,0,1,0 1,1,3,2,1,7,5,4,0,1,1,0,1,0 0,0,5,2,2,8,1,0,1,1,1,0,1,0 3,2,3,2,0,4,2,0,1,1,1,0,1,1 1,0,5,2,1,4,3,4,1,1,1,0,1,0 0,2,3,2,2,8,5,4,0,1,1,0,1,0 1,3,3,2,1,8,3,4,0,1,1,0,1,0 1,4,0,3,0,4,2,0,1,1,1,1,1,1 0,0,1,2,2,10,3,0,1,1,1,0,1,0 0,0,2,1,0,1,2,0,1,1,1,1,1,0 1,0,6,2,2,5,3,4,1,1,1,0,1,0 0,4,1,2,0,8,2,0,1,1,1,1,1,1 1,0,0,3,2,3,3,0,1,1,1,1,1,1 0,0,3,2,2,2,3,0,0,1,1,2,1,0 0,0,3,2,0,1,2,0,1,1,1,1,1,1 0,2,9,1,0,8,2,0,1,1,1,0,1,1 0,0,3,2,2,1,3,0,1,1,1,0,1,0 0,5,10,3,2,8,3,0,1,1,1,0,1,0 2,5,1,2,0,4,2,0,1,1,1,0,1,1 0,1,1,2,2,9,1,0,0,1,1,2,1,0 0,0,12,1,1,7,4,0,0,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 0,2,5,2,2,9,1,0,1,1,1,1,1,0 0,0,3,2,0,2,1,0,0,1,1,2,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,6,2,2,8,3,0,1,1,1,1,1,0 0,0,3,2,2,2,1,0,0,1,1,2,1,0 2,0,3,2,0,4,2,0,1,1,1,2,1,0 2,0,3,2,4,11,3,0,0,1,1,2,1,0 0,1,3,2,2,3,1,0,1,1,1,2,1,0 0,0,1,2,1,6,5,0,0,1,1,2,1,0 0,3,5,2,1,8,3,0,0,1,1,0,1,0 0,0,5,2,2,5,3,0,1,1,1,0,1,0 0,0,2,1,2,3,1,0,0,1,1,2,1,0 0,0,1,2,2,2,1,0,1,1,1,2,1,0 1,0,1,2,0,3,1,0,0,1,1,0,1,0 0,5,0,3,2,8,3,0,0,1,1,2,1,0 0,0,3,2,2,3,1,0,0,1,1,2,1,0 1,0,0,3,0,1,2,0,1,1,1,1,1,1 0,1,7,1,0,1,2,3,1,1,1,0,1,0 1,0,1,2,1,3,5,0,0,1,1,0,1,0 0,0,6,2,0,7,2,0,1,1,1,0,1,0 1,0,1,2,1,8,5,0,0,1,1,2,1,0 0,0,3,2,2,8,5,0,1,1,1,0,1,0 0,0,12,1,2,2,1,0,0,1,1,2,1,0 0,0,3,2,1,2,3,0,0,1,1,2,1,0 0,1,3,2,1,2,5,0,0,1,1,0,1,0 0,0,14,0,5,6,4,0,1,1,1,0,1,0 0,5,1,2,2,5,3,0,0,1,1,0,1,0 2,4,12,1,4,2,5,0,0,1,1,2,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,1 1,0,1,2,1,2,5,0,0,1,1,1,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,1 0,0,1,2,2,2,1,0,1,1,1,2,1,0 0,0,3,2,2,2,1,0,0,1,1,2,1,0 1,5,3,2,0,12,2,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,1 0,0,3,2,2,2,3,4,1,1,1,0,1,0 1,0,1,2,1,1,5,0,1,1,1,0,1,1 1,0,0,3,0,0,2,0,1,1,1,0,1,1 0,5,0,3,2,5,3,0,0,1,1,1,1,1 2,0,1,2,5,8,5,4,0,1,1,0,1,0 1,0,1,2,0,10,2,0,1,1,1,0,1,0 1,0,2,1,0,2,2,3,1,1,1,0,1,0 0,0,7,1,2,3,1,0,1,1,1,1,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,1 0,0,3,2,0,1,2,4,1,1,1,1,1,1 0,0,3,2,2,3,4,4,1,1,1,0,1,0 0,0,5,2,0,5,0,0,0,1,1,1,1,1 0,0,2,1,0,1,2,3,1,1,1,0,1,0 0,0,9,1,2,1,3,0,1,1,1,0,1,0 0,0,6,2,0,1,2,0,1,1,1,0,1,0 0,4,1,2,2,8,1,0,0,1,1,0,1,0 0,0,3,2,2,3,1,0,1,1,1,2,1,0 1,0,0,3,2,5,3,0,1,1,1,0,1,0 2,0,10,3,1,3,3,0,1,1,1,1,1,0 0,0,2,1,2,10,3,4,1,1,1,0,1,0 1,3,3,2,1,1,5,0,1,1,1,0,1,0 1,0,1,2,3,2,1,0,0,1,1,2,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 1,2,1,2,0,4,0,4,0,1,1,2,1,0 1,2,0,3,0,4,2,0,1,1,1,1,1,1 1,0,3,2,2,1,3,0,1,1,1,1,1,0 0,0,0,3,2,2,1,0,0,1,1,2,1,0 0,5,0,3,2,5,3,4,0,1,1,1,1,0 1,0,4,3,2,5,3,4,0,1,1,0,1,0 2,0,3,2,1,8,5,0,0,1,1,1,1,0 0,0,13,3,2,5,1,0,1,1,1,2,1,0 1,0,1,2,0,7,2,0,1,1,1,0,1,0 1,1,1,2,0,1,2,0,1,1,1,0,1,0 1,4,10,3,0,5,2,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,0,3,0,0,0,1,1,0,1,1 0,0,1,2,2,2,5,0,0,1,1,2,1,0 2,4,10,3,0,5,2,0,1,1,1,0,1,0 1,0,0,3,2,8,1,0,0,1,1,2,1,0 0,0,2,1,3,3,3,0,1,1,1,0,1,0 0,0,6,2,0,8,2,0,1,1,1,2,1,0 1,0,3,2,2,2,1,0,0,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,1,1,0 0,0,6,2,2,2,3,0,1,1,1,0,1,0 1,1,3,2,0,4,2,0,1,1,1,1,1,0 2,0,3,2,4,3,3,0,0,1,1,2,1,0 0,0,1,2,2,1,1,0,0,1,1,0,1,0 0,0,1,2,2,11,1,0,0,1,1,2,1,0 1,0,0,3,0,5,2,4,1,1,1,1,1,1 1,0,6,2,1,0,5,0,0,1,1,1,1,0 1,4,10,3,1,5,5,0,0,1,1,2,1,1 1,2,10,3,0,3,2,0,1,1,1,0,1,1 1,1,4,3,0,5,2,0,1,1,1,1,1,1 0,0,0,3,0,5,2,0,1,1,1,0,1,0 1,1,1,2,2,1,3,0,1,1,1,2,1,0 1,0,3,2,0,10,2,0,1,1,1,0,1,1 1,0,3,2,0,6,2,4,1,1,1,0,1,1 0,0,3,2,1,1,5,0,1,1,1,1,1,0 1,1,1,2,0,1,2,0,1,1,1,0,1,1 1,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,3,2,0,2,2,0,1,1,1,0,1,0 0,0,10,3,0,0,0,0,0,1,1,2,1,0 0,0,3,2,1,8,5,0,0,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,0,1,1 1,4,10,3,0,12,2,0,1,1,1,2,1,1 0,0,1,2,0,7,2,0,1,1,1,0,1,1 0,0,3,2,2,2,1,0,0,1,1,0,1,0 0,0,1,2,2,7,5,1,1,1,1,0,1,0 2,0,3,2,4,5,3,0,0,1,1,0,1,0 1,3,3,2,0,10,2,0,1,1,1,0,1,1 2,0,14,0,0,7,2,0,1,1,1,0,1,0 1,4,10,3,1,5,5,0,0,1,1,1,1,0 3,0,1,2,4,8,5,4,0,1,1,2,1,0 2,1,8,0,0,1,2,0,1,1,1,1,1,0 1,0,3,2,0,10,2,0,1,1,1,0,1,0 1,1,1,2,0,3,2,0,1,1,1,0,1,1 2,0,3,2,0,3,2,0,1,1,1,2,1,0 0,0,0,3,0,5,2,0,1,1,1,1,1,1 1,0,1,2,2,1,3,0,1,1,1,0,1,0 0,0,1,2,2,3,1,0,1,1,1,2,1,0 0,0,3,2,2,3,1,0,0,1,1,2,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,0 0,0,3,2,0,6,2,0,1,1,1,1,1,0 1,0,3,2,2,0,3,4,1,1,1,2,1,0 2,0,10,3,0,5,2,0,1,1,1,0,1,1 0,0,0,3,2,4,3,0,0,1,1,1,1,0 1,2,1,2,1,4,3,0,1,1,1,1,1,0 0,0,1,2,2,6,3,0,1,1,1,0,1,0 0,0,5,2,0,1,2,0,1,1,1,1,1,0 0,0,9,1,2,2,1,4,1,1,1,0,1,0 1,0,1,2,2,10,3,0,1,1,1,1,1,0 1,1,3,2,1,4,3,0,0,1,1,1,1,1 0,0,3,2,0,10,2,0,1,1,1,0,1,0 0,0,12,1,2,9,4,0,1,1,1,0,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 2,0,10,3,0,5,2,4,1,1,1,0,1,1 0,0,5,2,0,7,2,0,1,1,1,0,1,0 2,0,0,3,0,9,2,0,1,1,1,0,1,1 1,0,7,1,0,9,2,0,1,1,1,1,1,1 1,0,3,2,0,12,0,0,0,1,1,2,1,1 0,0,3,2,0,7,2,0,1,1,1,1,1,0 2,0,10,3,0,4,2,0,1,1,1,1,1,1 0,0,2,1,2,2,1,0,1,1,1,0,1,0 0,4,1,2,0,8,0,2,0,1,1,0,1,1 0,0,0,3,2,5,3,0,1,1,1,1,1,0 1,0,9,1,1,7,5,0,0,1,1,0,1,0 0,0,11,0,2,6,3,0,1,1,1,1,1,0 0,0,3,2,2,1,1,0,1,1,1,0,1,0 1,5,8,0,5,2,5,0,0,1,1,1,1,0 1,2,13,3,0,5,2,0,1,1,1,1,1,1 2,2,3,2,1,3,3,0,0,1,1,0,1,0 1,0,0,3,1,4,3,0,1,1,1,0,1,0 0,4,3,2,0,1,2,0,1,1,1,0,1,0 1,0,6,2,2,10,3,0,1,1,1,2,1,0 0,0,5,2,2,7,3,0,1,1,1,0,1,0 0,0,3,2,1,1,3,0,1,1,1,0,1,0 1,1,4,3,0,5,2,0,1,1,1,1,1,1 1,4,4,3,0,4,2,0,1,1,1,1,1,1 1,0,5,2,0,3,2,0,1,1,1,1,1,0 3,4,1,2,0,12,2,0,1,1,1,2,1,0 2,0,6,2,0,3,2,1,1,1,1,0,1,0 1,0,1,2,0,4,2,4,1,1,1,0,1,1 0,0,10,3,2,5,3,0,1,1,1,0,1,0 1,4,1,2,0,9,2,0,1,1,1,0,1,0 1,0,1,2,2,7,3,4,1,1,1,1,1,0 0,0,3,2,0,3,2,0,1,1,1,1,1,1 0,0,8,0,1,1,1,0,1,1,1,1,1,0 0,0,3,2,2,0,3,4,1,1,1,0,1,0 1,2,3,2,0,4,2,1,1,1,1,1,1,1 1,0,12,1,1,8,4,0,0,1,1,2,1,0 0,1,12,1,0,1,2,0,1,1,1,2,1,0 0,0,3,2,2,7,5,0,0,1,1,0,1,0 1,0,0,3,0,3,2,0,1,1,1,0,1,1 1,5,1,2,2,8,5,4,0,1,1,0,1,0 0,0,3,2,2,6,3,4,1,1,1,1,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,3,2,0,8,2,0,1,1,1,0,1,1 0,0,3,2,1,1,3,0,1,1,1,0,1,0 0,0,0,3,2,3,1,0,1,1,1,0,1,1 0,0,3,2,2,3,1,0,0,1,1,2,1,0 0,0,3,2,2,2,1,0,0,1,1,0,1,0 0,4,0,3,2,12,3,0,1,1,1,0,1,0 2,1,4,3,0,4,2,0,1,1,1,2,1,1 2,5,13,3,1,5,3,0,1,1,1,1,1,0 1,0,10,3,2,5,3,0,1,1,1,1,1,1 1,0,1,2,0,3,2,0,1,1,1,0,1,0 2,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,6,2,2,8,1,0,0,1,1,0,1,0 0,1,1,2,2,1,3,0,1,1,1,1,1,1 0,0,3,2,2,1,3,4,1,1,1,0,1,0 0,0,1,2,0,8,2,0,1,1,1,1,1,1 0,0,3,2,2,1,1,0,1,1,1,0,1,0 2,5,4,3,0,5,2,0,1,1,1,0,1,1 1,2,1,2,0,3,0,0,0,1,1,2,1,1 1,0,3,2,1,1,4,0,1,1,1,0,1,0 0,0,2,1,2,4,1,0,0,1,1,2,1,0 1,0,0,3,0,3,2,1,1,1,1,1,1,1 1,1,6,2,0,3,2,0,1,1,1,1,1,0 0,0,12,1,0,6,2,0,1,1,1,0,1,0 2,3,1,2,0,8,2,0,1,1,1,1,1,0 0,0,2,1,2,10,3,0,1,1,1,0,1,0 0,0,1,2,0,8,0,0,0,1,1,0,1,1 0,0,3,2,0,7,2,0,1,1,1,1,1,0 1,0,1,2,3,0,1,0,0,1,1,2,1,0 1,0,6,2,1,5,3,0,1,1,1,1,1,0 1,0,0,3,5,8,3,0,0,1,1,0,1,0 1,0,3,2,1,7,3,0,1,1,1,0,1,0 0,1,10,3,0,5,0,0,0,1,1,1,1,1 1,0,3,2,3,1,4,0,0,1,1,0,1,0 1,0,3,2,0,12,2,0,1,1,1,0,1,0 0,0,3,2,2,8,4,0,0,1,1,0,1,0 0,0,1,2,2,8,3,0,0,1,1,0,1,0 1,1,3,2,0,4,2,0,1,1,1,2,1,0 0,0,1,2,2,2,1,0,0,1,1,0,1,0 0,0,3,2,0,6,2,0,1,1,1,1,1,1 1,0,3,2,2,2,5,0,0,1,1,0,1,0 0,0,3,2,2,7,1,0,1,1,1,0,1,0 1,1,5,2,0,1,2,0,1,1,1,2,1,1 1,0,1,2,0,8,2,0,1,1,1,0,1,0 1,0,5,2,1,5,5,0,0,1,1,1,1,0 1,0,8,0,0,1,2,0,1,1,1,0,1,0 2,4,3,2,1,2,3,0,0,1,1,2,1,0 1,1,1,2,1,10,3,0,1,1,1,0,1,0 0,1,0,3,2,1,3,0,0,1,1,2,1,0 0,0,1,2,1,4,5,0,0,1,1,1,1,0 1,0,10,3,2,5,3,0,1,1,1,0,1,1 1,0,3,2,0,3,2,0,1,1,1,1,1,1 0,0,3,2,1,1,5,0,1,1,1,1,1,0 1,0,5,2,3,4,5,0,0,1,1,0,1,0 0,0,3,2,0,6,2,0,1,1,1,0,1,0 0,0,0,3,2,5,3,0,1,1,1,2,1,0 0,3,1,2,2,8,5,0,0,1,1,2,1,0 0,0,0,3,2,4,3,0,0,1,1,1,1,0 1,3,3,2,1,6,5,0,1,1,1,0,1,0 1,0,3,2,1,2,3,0,0,1,1,2,1,0 0,0,1,2,2,4,3,4,0,1,1,0,1,0 0,0,1,2,3,8,3,0,1,1,1,0,1,0 1,0,1,2,0,7,2,0,1,1,1,0,1,0 0,4,0,3,2,5,3,0,0,1,1,0,1,0 0,0,2,1,2,9,1,0,0,1,1,2,1,0 1,0,13,3,0,3,2,0,1,1,1,1,1,0 1,0,1,2,2,2,3,0,0,1,1,0,1,0 2,1,0,3,0,2,2,0,1,1,1,0,1,0 2,0,3,2,0,3,2,0,1,1,1,1,1,1 1,0,3,2,1,7,5,0,1,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,1,1,1 0,1,1,2,0,9,2,0,1,1,1,1,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,0 0,0,0,3,2,2,3,0,1,1,1,0,1,0 0,0,0,3,0,5,0,0,0,1,1,0,1,1 1,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,1,8,3,0,0,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 1,4,10,3,0,4,2,0,1,1,1,0,1,1 0,0,3,2,2,9,4,0,1,1,1,0,1,0 0,0,1,2,1,8,5,0,0,1,1,1,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,0 2,3,0,3,2,8,3,0,0,1,1,1,1,0 1,0,13,3,0,5,2,0,1,1,1,1,1,0 1,5,12,1,3,8,5,4,0,1,1,0,1,0 1,0,1,2,0,5,2,0,1,1,1,2,1,0 0,0,1,2,2,2,1,0,1,1,1,2,1,0 1,0,1,2,0,8,2,4,1,1,1,0,1,1 0,4,1,2,1,12,3,0,0,1,1,0,1,0 1,0,1,2,0,0,0,0,0,1,1,0,1,1 0,0,0,3,2,7,3,4,0,1,1,0,1,0 0,0,0,3,0,5,2,0,1,1,1,1,1,1 0,0,3,2,2,10,3,0,1,1,1,1,1,0 0,4,1,2,2,12,4,4,1,1,1,0,1,0 0,0,3,2,2,7,1,4,1,1,1,0,1,0 2,0,3,2,0,7,2,0,1,1,1,0,1,0 2,1,1,2,0,3,2,0,1,1,1,1,1,1 0,4,0,3,2,5,3,0,0,1,1,0,1,0 1,0,2,1,0,6,2,0,1,1,1,0,1,0 1,1,1,2,0,1,2,0,1,1,1,0,1,0 0,2,1,2,0,1,2,0,1,1,1,0,1,0 1,2,12,1,0,9,2,0,1,1,1,1,1,1 2,4,3,2,3,8,5,0,0,1,1,2,1,0 0,0,3,2,2,1,1,0,1,1,1,0,1,0 1,0,5,2,2,0,3,0,1,1,1,1,1,0 1,0,3,2,0,4,2,0,1,1,1,0,1,1 0,0,0,3,2,3,3,0,0,1,1,2,1,0 2,0,12,1,0,6,2,0,1,1,1,0,1,0 0,0,3,2,2,7,1,0,0,1,1,2,1,0 1,0,14,0,0,1,2,3,1,1,1,0,1,0 0,0,1,2,2,3,5,0,0,1,1,2,1,0 0,0,2,1,2,7,1,0,1,1,1,1,1,0 0,0,5,2,2,8,4,0,0,1,1,0,1,0 3,0,10,3,1,5,3,0,1,1,1,1,1,1 1,4,6,2,0,12,2,0,1,1,1,0,1,1 1,0,3,2,0,1,2,0,1,1,1,0,1,1 2,0,6,2,5,1,3,0,1,1,1,2,1,0 2,0,3,2,1,3,3,0,0,1,1,2,1,0 2,0,1,2,3,8,3,0,0,1,1,0,1,0 0,0,6,2,3,8,1,0,0,1,1,0,1,0 2,0,12,1,3,12,3,0,0,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,1 0,0,6,2,3,8,5,0,0,1,1,0,1,0 0,0,6,2,2,1,3,0,0,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,3,2,0,6,2,0,1,1,1,0,1,1 1,0,3,2,1,7,3,0,0,1,1,0,1,0 1,0,0,3,0,6,0,1,0,1,1,2,1,0 2,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,3,2,2,8,1,0,0,1,1,1,1,0 0,3,1,2,1,8,4,4,0,1,1,1,1,0 0,0,1,2,2,2,3,0,1,1,1,2,1,0 1,0,0,3,0,4,0,0,0,1,1,2,1,1 0,0,3,2,1,1,3,0,1,1,1,1,1,0 1,1,1,2,3,4,5,0,0,1,1,1,1,0 1,4,1,2,0,4,2,2,1,1,1,1,1,1 1,1,10,3,0,3,2,0,1,1,1,1,1,0 0,0,1,2,2,2,5,0,0,1,1,0,1,0 0,0,1,2,0,7,2,0,1,1,1,1,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,0 1,0,11,0,1,9,5,0,1,1,1,0,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,0 0,0,1,2,2,2,1,0,1,1,1,0,1,0 1,0,0,3,1,3,5,0,1,1,1,1,1,1 0,0,12,1,2,3,1,0,0,1,1,2,1,0 0,0,3,2,2,2,1,4,0,1,1,0,1,0 1,1,4,3,0,5,2,0,1,1,1,2,1,1 0,0,2,1,2,5,3,1,0,1,1,1,1,0 1,0,9,1,1,9,3,4,1,1,1,0,1,0 1,0,1,2,1,2,5,0,0,1,1,0,1,0 2,1,1,2,0,1,2,0,1,1,1,0,1,0 1,0,3,2,2,1,3,0,1,1,1,0,1,0 0,0,0,3,0,5,0,0,0,1,1,0,1,1 0,0,12,1,2,1,4,0,1,1,1,2,1,0 1,0,3,2,1,5,3,0,1,1,1,0,1,1 1,4,1,2,2,12,5,4,0,1,1,0,1,0 1,0,6,2,1,5,5,4,0,1,1,0,1,0 1,4,3,2,3,8,5,0,0,1,1,0,1,0 1,3,3,2,2,7,3,0,0,1,1,0,1,0 0,0,7,1,0,9,2,0,1,1,1,0,1,0 3,5,8,0,4,2,5,4,0,1,1,0,1,0 1,0,0,3,0,5,2,1,1,1,1,1,1,1 0,0,6,2,0,1,2,0,1,1,1,1,1,1 0,0,0,3,2,5,3,0,1,1,1,1,1,0 0,0,1,2,2,6,3,0,0,1,1,2,1,0 0,0,1,2,1,2,3,0,0,1,1,2,1,0 2,0,7,1,0,10,0,0,0,1,1,1,1,0 1,3,3,2,0,8,2,0,1,1,1,0,1,0 1,4,3,2,1,4,5,0,1,1,1,0,1,0 0,0,10,3,0,2,2,0,1,1,1,2,1,0 1,0,3,2,0,4,2,0,1,1,1,1,1,0 1,2,1,2,0,8,0,0,0,1,1,2,1,1 1,0,0,3,0,1,2,0,1,1,1,1,1,0 0,0,1,2,2,8,1,0,1,1,1,1,1,0 1,2,10,3,0,0,2,0,1,1,1,0,1,1 0,0,3,2,2,6,1,0,0,1,1,0,1,0 2,0,3,2,1,8,5,1,0,1,1,0,1,0 0,0,5,2,2,8,3,0,0,1,1,0,1,0 0,4,3,2,1,8,3,0,0,1,1,2,1,0 0,4,6,2,2,5,3,0,0,1,1,1,1,0 0,1,1,2,2,4,1,0,1,1,1,1,1,1 0,0,0,3,2,3,3,0,1,1,1,0,1,0 0,0,1,2,0,7,2,0,1,1,1,1,1,0 1,0,1,2,0,0,2,0,1,1,1,1,1,0 0,0,10,3,0,4,2,0,1,1,1,1,1,1 2,0,3,2,0,7,2,0,1,1,1,0,1,0 1,2,3,2,0,4,2,0,1,1,1,1,1,1 0,0,3,2,2,3,5,4,0,1,1,0,1,0 1,0,0,3,2,0,1,0,1,1,1,0,1,0 2,1,4,3,0,5,2,0,1,1,1,2,1,1 1,0,13,3,1,4,3,0,1,1,1,1,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 0,0,1,2,2,4,3,0,1,1,1,0,1,0 0,0,0,3,2,5,3,0,0,1,1,0,1,0 2,0,13,3,0,5,2,0,1,1,1,0,1,1 0,0,3,2,1,7,5,0,0,1,1,1,1,0 2,1,6,2,0,5,2,0,1,1,1,0,1,0 1,0,3,2,0,4,2,0,1,1,1,0,1,1 1,4,1,2,0,4,0,0,0,1,1,2,1,0 0,0,14,0,2,2,4,0,1,1,1,1,1,0 1,4,10,3,0,5,2,0,1,1,1,1,1,0 2,0,3,2,0,9,2,0,1,1,1,0,1,0 1,0,3,2,0,8,0,0,0,1,1,2,1,0 0,0,3,2,3,8,5,0,0,1,1,0,1,0 0,0,1,2,2,5,1,0,0,1,1,0,1,0 2,1,10,3,0,4,2,0,1,1,1,1,1,1 0,0,1,2,2,10,1,0,1,1,1,2,1,0 2,4,3,2,2,4,3,0,0,1,1,2,1,1 1,1,3,2,0,9,2,0,1,1,1,1,1,0 1,2,10,3,0,5,2,4,1,1,1,1,1,0 0,0,3,2,2,6,5,0,1,1,1,2,1,0 1,1,5,2,0,4,2,0,1,1,1,2,1,0 0,0,3,2,2,3,1,0,1,1,1,0,1,0 0,0,1,2,0,3,2,0,1,1,1,0,1,0 0,1,3,2,0,4,2,0,1,1,1,2,1,0 2,0,3,2,1,5,5,0,0,1,1,1,1,0 0,0,1,2,0,3,2,0,1,1,1,0,1,0 0,0,2,1,2,7,3,0,0,1,1,0,1,0 2,0,3,2,0,8,2,0,1,1,1,0,1,1 0,0,5,2,2,8,5,2,0,1,1,0,1,0 0,0,10,3,2,4,3,0,1,1,1,1,1,1 0,0,1,2,2,6,5,0,1,1,1,2,1,0 1,0,8,0,0,9,2,0,1,1,1,1,1,0 1,0,1,2,1,4,3,0,0,1,1,0,1,0 1,5,6,2,2,8,5,1,0,1,1,0,1,0 0,0,1,2,2,5,1,0,0,1,1,2,1,0 0,0,3,2,0,4,2,0,1,1,1,1,1,1 2,2,4,3,0,5,2,0,1,1,1,1,1,1 0,0,3,2,0,1,2,0,1,1,1,1,1,1 2,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,9,1,2,1,1,0,1,1,1,1,1,0 1,0,3,2,2,3,3,0,0,1,1,0,1,0 0,0,3,2,2,1,3,0,1,1,1,0,1,0 2,2,3,2,0,4,2,0,1,1,1,0,1,1 2,3,3,2,1,8,5,0,0,1,1,0,1,0 1,0,4,3,1,5,3,0,1,1,1,1,1,1 2,0,12,1,0,7,2,0,1,1,1,0,1,0 1,0,3,2,1,7,3,0,1,1,1,1,1,0 0,0,0,3,1,1,5,0,1,1,1,0,1,0 0,0,1,2,1,3,3,0,1,1,1,0,1,0 3,0,11,0,4,6,4,0,1,1,1,2,1,0 1,0,0,3,2,8,3,4,1,1,1,1,1,0 2,4,3,2,0,2,2,0,1,1,1,0,1,0 1,4,3,2,0,12,2,4,1,1,1,0,1,1 0,0,3,2,2,1,3,0,1,1,1,2,1,0 0,0,0,3,2,4,3,0,0,1,1,0,1,0 1,5,3,2,1,5,3,0,0,1,1,2,1,0 1,0,11,0,1,2,5,0,0,1,1,2,1,0 0,0,3,2,0,2,2,0,1,1,1,0,1,0 0,4,0,3,0,5,0,2,0,1,1,0,1,0 0,0,3,2,5,7,5,4,0,1,1,0,1,0 1,2,0,3,0,3,2,0,1,1,1,1,1,1 1,0,0,3,0,0,2,0,1,1,1,0,1,1 0,0,1,2,2,2,1,0,1,1,1,2,1,0 0,5,6,2,6,8,0,0,0,1,1,2,1,0 1,0,8,0,0,6,2,0,1,1,1,0,1,0 0,0,15,0,2,2,1,4,0,1,1,2,1,0 2,2,0,3,0,3,2,0,1,1,1,1,1,1 2,0,1,2,4,4,3,0,0,1,1,0,1,0 2,0,0,3,0,3,2,0,1,1,1,1,1,1 0,0,1,2,0,7,2,0,1,1,1,1,1,1 1,5,3,2,0,2,2,0,1,1,1,0,1,1 1,4,3,2,0,12,2,0,1,1,1,0,1,1 1,0,3,2,0,8,0,0,0,1,1,0,1,1 1,1,3,2,0,3,2,0,1,1,1,1,1,1 0,5,1,2,2,8,1,0,0,1,1,2,1,0 1,0,0,3,2,3,5,0,1,1,1,1,1,0 1,0,3,2,2,7,5,4,0,1,1,0,1,0 0,1,12,1,2,4,3,0,1,1,1,1,1,1 1,0,3,2,1,10,3,0,0,1,1,2,1,0 0,0,3,2,3,6,3,0,1,1,1,1,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,2,10,3,0,1,1,1,0,1,0 1,0,0,3,0,3,2,0,1,1,1,1,1,0 0,4,0,3,2,5,3,0,0,1,1,1,1,0 1,0,5,2,0,5,2,0,1,1,1,2,1,1 0,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,3,2,0,8,2,0,1,1,1,0,1,0 1,0,1,2,0,4,0,0,0,1,1,2,1,1 0,0,1,2,0,2,1,0,0,1,1,0,1,1 0,0,0,3,2,2,3,0,0,1,1,1,1,0 0,0,3,2,2,1,3,4,1,1,1,1,1,0 0,0,3,2,2,2,5,0,0,1,1,0,1,0 0,0,6,2,1,8,3,0,1,1,1,0,1,0 0,0,0,3,2,8,3,0,0,1,1,1,1,0 0,0,10,3,2,0,1,0,1,1,1,1,1,0 2,0,3,2,3,8,3,0,0,1,1,1,1,0 1,0,11,0,5,6,5,0,1,1,1,0,1,0 1,4,0,3,0,5,2,0,1,1,1,1,1,1 1,0,1,2,0,4,2,0,1,1,1,1,1,1 1,0,5,2,0,5,0,0,0,1,1,0,1,1 0,0,1,2,2,5,3,0,1,1,1,0,1,0 1,0,3,2,1,11,3,0,0,1,1,1,1,0 1,5,1,2,0,8,2,0,1,1,1,2,1,0 0,0,3,2,2,2,1,0,0,1,1,2,1,0 2,4,10,3,0,5,2,0,1,1,1,1,1,1 1,1,14,0,0,1,2,0,1,1,1,1,1,0 1,0,0,3,1,2,3,0,1,1,1,0,1,0 1,0,7,1,2,11,5,0,0,1,1,1,1,0 0,0,3,2,0,2,0,0,0,1,1,0,1,0 1,0,1,2,1,0,3,0,1,1,1,1,1,0 0,0,1,2,2,3,3,0,1,1,1,0,1,0 1,0,3,2,1,8,5,0,0,1,1,0,1,0 1,0,3,2,0,3,2,0,1,1,1,1,1,1 1,0,10,3,2,4,3,4,0,1,1,2,1,0 0,0,12,1,0,1,2,0,1,1,1,0,1,0 0,0,3,2,0,4,2,0,1,1,1,1,1,1 0,0,3,2,1,7,5,4,0,1,1,0,1,0 1,0,1,2,0,10,2,0,1,1,1,0,1,1 1,0,0,3,1,4,5,0,1,1,1,1,1,0 1,1,3,2,0,1,2,0,1,1,1,1,1,1 2,5,1,2,0,5,2,0,1,1,1,0,1,1 3,1,3,2,4,4,3,0,0,1,1,2,1,0 1,1,3,2,0,10,2,0,1,1,1,1,1,0 1,5,3,2,0,4,2,0,1,1,1,1,1,0 0,0,1,2,2,3,3,0,1,1,1,1,1,0 1,0,3,2,2,4,3,0,0,1,1,1,1,0 1,3,1,2,0,4,2,0,1,1,1,0,1,1 0,0,3,2,3,3,5,0,0,1,1,0,1,0 2,0,2,1,0,3,2,0,1,1,1,1,1,0 0,0,1,2,0,8,2,0,1,1,1,0,1,0 1,0,1,2,2,3,5,0,0,1,1,0,1,0 1,0,0,3,0,3,2,1,1,1,1,1,1,1 1,0,3,2,0,5,2,0,1,1,1,0,1,1 0,0,1,2,2,0,4,0,0,1,1,0,1,0 1,4,10,3,1,5,5,0,0,1,1,0,1,0 1,5,0,3,0,8,0,0,0,1,1,0,1,1 0,0,3,2,2,8,1,0,1,1,1,0,1,0 0,0,1,2,2,3,3,0,1,1,1,0,1,0 0,0,1,2,2,8,3,0,0,1,1,2,1,0 1,0,1,2,0,3,2,0,1,1,1,1,1,1 1,0,13,3,0,5,2,0,1,1,1,0,1,1 2,0,3,2,0,11,2,0,1,1,1,2,1,0 0,0,3,2,2,6,1,4,1,1,1,2,1,0 0,0,7,1,1,4,5,0,0,1,1,0,1,0 2,0,3,2,1,4,3,0,0,1,1,2,1,0 1,4,10,3,2,5,3,0,1,1,1,0,1,0 0,0,1,2,2,4,3,0,0,1,1,1,1,1 0,0,0,3,0,4,0,0,0,1,1,0,1,1 2,5,10,3,1,5,3,0,0,1,1,1,1,0 0,0,9,1,2,2,1,3,0,1,1,2,1,0 1,2,1,2,0,4,2,0,1,1,1,1,1,1 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,0,3,1,3,3,0,0,1,1,0,1,0 1,2,0,3,0,9,2,0,1,1,1,1,1,1 1,0,1,2,2,8,1,0,0,1,1,0,1,0 0,0,5,2,0,6,2,0,1,1,1,1,1,0 0,0,0,3,2,5,3,1,1,1,1,2,1,0 2,0,6,2,4,5,5,0,0,1,1,1,1,0 1,5,0,3,2,5,3,0,0,1,1,0,1,0 1,0,3,2,3,1,5,0,1,1,1,1,1,0 2,0,3,2,4,1,3,0,1,1,1,0,1,0 0,0,1,2,0,0,0,0,0,1,1,2,1,0 0,0,0,3,2,5,1,0,0,1,1,2,1,0 1,0,0,3,2,0,3,0,1,1,1,1,1,0 0,0,0,3,0,2,2,0,1,1,1,0,1,0 0,0,3,2,0,8,0,0,0,1,1,0,1,0 1,0,0,3,2,8,3,0,1,1,1,0,1,1 0,3,1,2,0,1,2,0,1,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,0,1,1 0,0,3,2,2,0,5,4,0,1,1,0,1,0 2,1,3,2,0,1,0,0,0,1,1,2,1,0 0,1,1,2,1,1,1,0,1,1,1,0,1,0 1,0,8,0,0,9,2,0,1,1,1,2,1,0 0,0,12,1,2,2,1,0,0,1,1,2,1,0 0,0,1,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,2,7,1,0,0,1,1,0,1,0 0,0,0,3,2,3,1,0,0,1,1,0,1,0 2,1,1,2,0,3,2,0,1,1,1,1,1,0 1,0,5,2,2,4,3,0,1,1,1,1,1,0 1,0,1,2,0,1,2,0,1,1,1,1,1,1 0,0,0,3,2,5,3,0,0,1,1,0,1,0 0,0,9,1,1,3,3,0,0,1,1,1,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,0 1,0,11,0,0,2,2,0,1,1,1,0,1,0 1,5,0,3,0,8,2,0,1,1,1,2,1,1 0,5,1,2,2,2,1,0,1,1,1,2,1,0 1,0,5,2,2,2,1,0,0,1,1,2,1,0 0,5,3,2,3,12,3,0,1,1,1,1,1,0 0,0,6,2,1,8,5,0,0,1,1,0,1,0 2,1,7,1,0,3,2,0,1,1,1,1,1,0 1,4,10,3,1,5,5,0,0,1,1,0,1,0 0,0,2,1,0,7,2,0,1,1,1,0,1,0 0,0,1,2,2,8,1,0,0,1,1,2,1,0 2,5,10,3,0,5,2,1,1,1,1,1,1,1 1,0,0,3,0,5,2,0,1,1,1,1,1,1 0,4,0,3,5,5,3,0,0,1,1,1,1,0 0,0,5,2,2,5,3,0,0,1,1,2,1,0 0,0,0,3,1,4,4,0,0,1,1,1,1,0 1,0,0,3,0,3,2,1,1,1,1,0,1,1 0,0,1,2,2,10,3,0,1,1,1,1,1,0 2,0,1,2,0,3,2,0,1,1,1,0,1,0 0,0,1,2,0,7,2,0,1,1,1,0,1,0 0,0,2,1,2,2,1,0,1,1,1,2,1,0 2,2,6,2,0,4,2,0,1,1,1,1,1,1 1,1,0,3,2,5,3,0,1,1,1,1,1,0 1,3,5,2,2,12,3,4,1,1,1,1,1,0 0,0,3,2,2,1,1,0,1,1,1,0,1,0 1,0,1,2,1,8,3,0,1,1,1,2,1,0 1,1,13,3,2,5,3,0,1,1,1,1,1,1 2,0,6,2,0,1,2,0,1,1,1,2,1,0 0,0,0,3,0,4,2,0,1,1,1,0,1,1 0,0,9,1,2,2,1,4,1,1,1,2,1,1 1,0,3,2,2,10,3,4,1,1,1,1,1,0 0,0,3,2,2,2,3,0,0,1,1,2,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,5,2,0,4,2,0,1,1,1,1,1,0 1,0,8,0,0,7,2,0,1,1,1,0,1,0 2,0,7,1,0,7,2,0,1,1,1,2,1,0 0,0,0,3,0,3,2,0,1,1,1,0,1,0 0,0,12,1,0,6,2,0,1,1,1,0,1,0 1,0,1,2,2,3,1,0,1,1,1,0,1,0 0,3,1,2,2,8,1,0,0,1,1,2,1,0 0,0,1,2,2,6,1,0,1,1,1,0,1,0 0,0,1,2,2,2,1,0,1,1,1,2,1,0 0,0,6,2,2,4,1,0,0,1,1,1,1,0 0,4,10,3,0,5,2,0,1,1,1,1,1,1 1,0,1,2,1,2,3,0,1,1,1,0,1,0 0,3,1,2,1,0,3,0,0,1,1,0,1,0 1,0,1,2,0,0,2,1,1,1,1,2,1,1 1,2,0,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,2,2,4,4,1,1,1,0,1,0 1,0,13,3,1,0,5,0,1,1,1,0,1,1 1,0,3,2,0,10,2,0,1,1,1,0,1,0 0,0,3,2,2,2,3,0,0,1,1,2,1,0 1,0,0,3,0,4,2,0,1,1,1,0,1,0 1,0,2,1,4,1,3,0,1,1,1,0,1,0 1,0,3,2,0,10,2,0,1,1,1,0,1,1 0,0,2,1,2,2,1,0,1,1,1,2,1,0 1,0,2,1,0,1,2,4,1,1,1,0,1,0 0,0,1,2,2,4,1,0,1,1,1,1,1,0 0,4,3,2,2,10,1,4,1,1,1,0,1,0 0,0,3,2,2,2,1,0,1,1,1,0,1,0 1,4,3,2,0,2,2,0,1,1,1,0,1,0 0,0,0,3,2,5,3,0,0,1,1,2,1,0 0,0,3,2,2,12,3,4,1,1,1,2,1,0 0,0,3,2,2,6,1,0,1,1,1,0,1,0 2,0,3,2,1,10,3,0,1,1,1,0,1,0 2,0,1,2,0,2,2,0,1,1,1,2,1,0 0,0,1,2,2,2,3,2,0,1,1,0,1,0 0,0,2,1,2,3,1,0,0,1,1,2,1,0 0,0,1,2,2,6,1,0,1,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,0 1,4,1,2,1,8,3,0,0,1,1,1,1,0 2,0,7,1,0,3,2,0,1,1,1,1,1,0 1,1,1,2,1,1,3,0,1,1,1,1,1,0 1,0,0,3,2,3,4,0,0,1,1,2,1,1 2,0,3,2,1,11,5,4,0,1,1,1,1,0 3,1,1,2,0,2,2,0,1,1,1,0,1,0 0,4,1,2,2,12,3,4,1,1,1,0,1,0 0,0,1,2,0,1,2,0,1,1,1,1,1,0 0,4,0,3,2,5,3,0,0,1,1,1,1,0 0,0,9,1,2,9,1,1,1,1,1,0,1,0 2,0,5,2,0,4,2,0,1,1,1,1,1,1 0,0,3,2,2,1,4,4,1,1,1,0,1,0 1,0,6,2,0,6,1,1,1,1,1,0,1,0 1,0,6,2,1,0,3,0,0,1,1,0,1,0 1,1,4,3,0,5,2,0,1,1,1,2,1,1 2,2,8,0,0,4,2,0,1,1,1,1,1,1 1,0,1,2,0,3,2,0,1,1,1,1,1,1 1,0,5,2,4,3,5,0,0,1,1,2,1,0 3,1,8,0,0,9,2,0,1,1,1,0,1,0 0,0,1,2,2,0,5,0,0,1,1,2,1,0 1,1,12,1,0,1,2,0,1,1,1,2,1,0 1,2,5,2,2,4,3,0,1,1,1,1,1,1 1,0,3,2,1,2,3,0,0,1,1,1,1,0 2,1,8,0,4,2,3,0,0,1,1,0,1,0 2,0,3,2,1,8,3,0,0,1,1,0,1,0 1,4,10,3,2,5,3,0,1,1,1,1,1,1 0,0,3,2,2,2,3,0,1,1,1,2,1,0 1,0,0,3,2,8,3,0,1,1,1,1,1,0 1,0,3,2,1,6,3,0,1,1,1,0,1,0 0,0,3,2,0,6,0,0,0,1,1,0,1,0 0,3,0,3,0,4,0,1,0,1,1,0,1,1 1,0,1,2,2,8,1,0,0,1,1,0,1,0 0,0,3,2,2,6,3,0,1,1,1,0,1,0 1,0,1,2,0,3,2,0,1,1,1,2,1,0 0,0,3,2,2,8,1,0,0,1,1,2,1,0 2,1,8,0,0,9,2,0,1,1,1,0,1,1 0,4,3,2,3,2,5,0,1,1,1,0,1,1 1,0,1,2,0,1,2,0,1,1,1,1,1,0 1,2,3,2,0,4,2,0,1,1,1,1,1,1 0,0,2,1,2,9,1,0,0,1,1,2,1,0 0,0,1,2,2,8,1,0,0,1,1,2,1,0 1,0,3,2,1,7,5,0,1,1,1,0,1,0 1,0,5,2,2,5,3,0,1,1,1,0,1,0 0,0,5,2,2,2,4,0,1,1,1,1,1,0 0,0,12,1,2,2,4,0,1,1,1,0,1,0 0,0,1,2,1,12,3,0,1,1,1,0,1,0 1,0,3,2,0,8,0,0,0,1,1,2,1,1 0,0,0,3,0,8,2,0,1,1,1,0,1,1 0,0,3,2,2,8,1,0,0,1,1,0,1,0 1,0,1,2,0,7,2,0,1,1,1,1,1,1 1,3,10,3,2,4,3,0,0,1,1,1,1,1 1,2,0,3,4,4,3,4,0,1,1,1,1,0 0,0,9,1,3,3,5,0,0,1,1,2,1,0 1,0,11,0,4,7,5,0,1,1,1,0,1,0 0,0,3,2,2,4,3,0,0,1,1,0,1,0 1,0,13,3,1,4,5,0,1,1,1,0,1,1 1,0,10,3,2,4,3,0,0,1,1,0,1,1 1,3,10,3,0,4,2,0,1,1,1,0,1,1 1,1,0,3,5,4,3,1,1,1,1,0,1,0 1,2,3,2,0,4,2,0,1,1,1,1,1,1 0,5,3,2,1,4,5,0,0,1,1,0,1,0 1,0,5,2,2,8,3,1,0,1,1,2,1,0 0,4,0,3,3,5,5,0,0,1,1,0,1,0 1,0,3,2,2,8,1,0,1,1,1,2,1,0 0,0,10,3,2,3,3,0,1,1,1,1,1,0 2,0,1,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,2,1,4,0,1,1,1,0,1,0 1,1,5,2,0,8,0,0,0,1,1,0,1,0 1,4,3,2,0,7,2,0,1,1,1,0,1,0 1,0,1,2,0,0,2,0,1,1,1,0,1,1 1,0,3,2,4,2,5,0,0,1,1,0,1,0 0,0,12,1,2,1,5,0,1,1,1,0,1,0 1,0,3,2,0,2,2,0,1,1,1,2,1,0 1,4,13,3,0,4,2,0,1,1,1,1,1,1 0,2,9,1,2,8,1,0,0,1,1,2,1,0 0,1,3,2,0,1,2,0,1,1,1,0,1,0 1,4,1,2,0,8,0,2,0,1,1,0,1,0 1,5,3,2,0,1,2,0,1,1,1,2,1,0 1,0,3,2,2,1,1,0,1,1,1,0,1,0 0,0,5,2,0,7,2,0,1,1,1,0,1,0 1,0,3,2,1,2,1,0,1,1,1,0,1,0 0,0,3,2,2,7,1,4,0,1,1,0,1,0 2,4,3,2,1,1,3,0,1,1,1,0,1,0 0,0,0,3,2,5,5,4,0,1,1,0,1,0 2,0,3,2,3,2,5,2,0,1,1,0,1,0 1,0,10,3,0,5,2,0,1,1,1,2,1,1 1,0,1,2,0,7,2,0,1,1,1,1,1,1 1,1,1,2,0,1,2,0,1,1,1,1,1,1 1,0,3,2,3,7,3,4,1,1,1,1,1,0 1,0,3,2,0,6,2,0,1,1,1,0,1,0 0,0,1,2,0,7,2,0,1,1,1,1,1,0 1,0,10,3,2,4,3,0,1,1,1,1,1,1 2,1,10,3,0,5,2,0,1,1,1,2,1,0 1,3,1,2,0,8,2,0,1,1,1,0,1,1 0,0,3,2,0,9,2,0,1,1,1,1,1,0 0,0,6,2,2,7,3,0,1,1,1,0,1,0 0,0,2,1,2,3,1,0,0,1,1,2,1,0 1,4,0,3,0,5,2,4,1,1,1,0,1,1 1,0,2,1,2,7,3,0,1,1,1,0,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,1 1,5,4,3,0,5,2,0,1,1,1,1,1,1 0,0,1,2,2,8,3,0,1,1,1,0,1,0 1,0,3,2,2,4,3,1,0,1,1,2,1,0 0,0,0,3,2,5,1,1,1,1,1,2,1,0 0,4,0,3,2,8,3,0,0,1,1,0,1,0 0,0,1,2,2,8,5,4,0,1,1,0,1,0 1,0,8,0,2,7,5,0,0,1,1,1,1,0 0,2,10,3,0,3,2,0,1,1,1,0,1,1 2,0,0,3,1,4,3,0,1,1,1,0,1,0 1,1,4,3,0,5,2,0,1,1,1,1,1,0 0,0,3,2,0,3,2,0,1,1,1,1,1,0 2,0,3,2,0,10,2,4,1,1,1,0,1,0 1,4,10,3,1,5,3,0,0,1,1,1,1,0 0,0,0,3,2,3,1,0,0,1,1,0,1,0 0,0,0,3,2,1,3,0,1,1,1,1,1,0 0,0,0,3,2,8,3,0,0,1,1,1,1,0 1,0,6,2,0,5,2,0,1,1,1,0,1,0 0,0,1,2,0,4,0,0,0,1,1,0,1,0 0,0,9,1,2,11,1,0,0,1,1,2,1,0 0,0,3,2,0,10,2,0,1,1,1,1,1,0 0,0,0,3,2,4,3,0,1,1,1,0,1,0 1,0,1,2,0,4,2,0,1,1,1,1,1,1 1,1,4,3,0,5,2,0,1,1,1,1,1,1 0,0,3,2,2,2,3,0,0,1,1,1,1,0 0,5,3,2,0,12,2,0,1,1,1,0,1,1 1,0,10,3,0,4,2,0,1,1,1,0,1,1 1,0,1,2,0,2,0,0,0,1,1,1,1,0 0,0,9,1,2,2,4,0,0,1,1,2,1,0 0,0,7,1,2,7,5,0,0,1,1,0,1,0 1,0,3,2,0,2,0,0,0,1,1,0,1,0 0,0,6,2,0,6,2,0,1,1,1,0,1,0 1,0,0,3,2,0,3,0,0,1,1,0,1,1 2,2,0,3,0,4,2,0,1,1,1,0,1,1 1,0,0,3,1,4,3,0,1,1,1,1,1,1 0,0,3,2,2,10,1,0,1,1,1,2,1,0 2,0,3,2,4,1,5,0,0,1,1,2,1,0 2,4,10,3,0,5,2,0,1,1,1,2,1,0 1,4,1,2,0,12,2,4,1,1,1,1,1,1 1,0,3,2,5,6,3,0,1,1,1,0,1,0 1,1,3,2,0,1,2,0,1,1,1,0,1,1 0,0,0,3,2,3,1,0,1,1,1,0,1,0 2,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,6,2,0,7,2,0,1,1,1,0,1,1 0,0,3,2,2,6,5,4,0,1,1,0,1,0 0,1,3,2,2,1,1,4,1,1,1,0,1,0 0,0,12,1,2,2,5,4,0,1,1,0,1,0 2,1,1,2,0,9,2,0,1,1,1,1,1,0 0,2,1,2,0,4,2,0,1,1,1,1,1,1 1,0,3,2,1,2,5,0,0,1,1,0,1,0 0,4,1,2,0,12,1,4,1,1,1,0,1,0 0,0,3,2,1,8,3,0,0,1,1,2,1,0 0,5,0,3,1,5,3,0,0,1,1,0,1,0 0,0,1,2,2,3,3,0,0,1,1,2,1,0 1,0,3,2,0,10,2,0,1,1,1,0,1,1 1,0,1,2,0,10,2,0,1,1,1,2,1,0 2,2,12,1,0,10,2,0,1,1,1,1,1,0 0,0,0,3,0,5,2,0,1,1,1,1,1,1 1,0,0,3,2,8,3,0,0,1,1,1,1,1 0,0,0,3,0,5,2,0,1,1,1,0,1,1 2,2,3,2,0,1,2,0,1,1,1,2,1,0 1,4,13,3,1,5,3,0,0,1,1,0,1,1 2,0,3,2,1,3,5,0,0,1,1,2,1,0 0,5,1,2,2,2,3,4,1,1,1,0,1,0 1,4,0,3,2,5,5,4,0,1,1,0,1,0 0,0,0,3,1,0,5,0,0,1,1,0,1,0 1,0,1,2,0,8,0,0,0,1,1,0,1,1 3,1,3,2,0,9,2,1,1,1,1,2,1,0 1,0,3,2,1,8,3,0,0,1,1,2,1,0 1,1,2,1,2,10,3,4,1,1,1,0,1,0 1,1,4,3,0,5,2,0,1,1,1,0,1,1 2,1,3,2,0,9,2,0,1,1,1,2,1,0 0,1,1,2,3,9,5,0,0,1,1,1,1,0 1,0,3,2,1,3,3,0,1,1,1,2,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,0,3,3,5,5,0,0,1,1,1,1,0 1,4,5,2,0,12,2,0,1,1,1,0,1,1 2,3,3,2,0,12,2,0,1,1,1,0,1,0 1,1,1,2,2,2,3,0,1,1,1,2,1,0 2,0,8,0,1,6,3,0,0,1,1,0,1,0 0,0,5,2,5,8,5,0,0,1,1,1,1,0 2,4,1,2,0,12,2,0,1,1,1,0,1,0 1,0,3,2,3,6,3,0,1,1,1,1,1,0 0,0,1,2,2,2,3,0,1,1,1,0,1,0 2,0,3,2,0,6,2,0,1,1,1,0,1,0 1,3,0,3,3,8,3,4,1,1,1,0,1,0 1,0,6,2,1,1,3,0,1,1,1,0,1,1 1,0,7,1,4,1,3,0,1,1,1,2,1,0 1,0,3,2,1,4,3,0,0,1,1,1,1,1 0,2,3,2,0,4,2,0,1,1,1,1,1,0 0,0,1,2,0,8,0,0,0,1,1,0,1,0 1,1,3,2,0,1,2,0,1,1,1,0,1,0 0,0,0,3,2,8,1,0,0,1,1,0,1,0 0,0,3,2,2,2,3,0,0,1,1,0,1,0 1,0,3,2,0,7,2,2,1,1,1,0,1,0 1,3,1,2,0,8,2,0,1,1,1,1,1,1 0,0,3,2,1,6,3,0,0,1,1,0,1,0 1,0,0,3,0,8,2,0,1,1,1,0,1,1 2,0,1,2,0,2,2,0,1,1,1,0,1,1 0,0,9,1,2,10,1,0,1,1,1,1,1,0 1,0,0,3,4,5,5,0,0,1,1,0,1,0 1,0,0,3,3,0,5,4,0,1,1,0,1,0 0,0,3,2,2,2,3,0,0,1,1,0,1,0 1,2,3,2,2,4,3,0,1,1,1,1,1,0 0,0,5,2,2,0,3,0,1,1,1,0,1,0 1,0,12,1,0,7,2,0,1,1,1,1,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,0 1,0,1,2,0,3,0,0,0,1,1,0,1,1 1,0,3,2,0,4,2,0,1,1,1,0,1,0 0,0,1,2,2,1,1,0,0,1,1,2,1,0 1,0,5,2,0,0,2,0,1,1,1,0,1,1 0,0,6,2,2,9,3,0,1,1,1,2,1,0 1,0,1,2,2,4,3,0,1,1,1,1,1,0 0,0,3,2,2,8,1,3,1,1,1,0,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 0,0,3,2,0,6,2,0,1,1,1,0,1,0 1,5,13,3,0,5,2,1,1,1,1,0,1,1 1,1,1,2,0,2,0,0,0,1,1,1,1,0 1,0,3,2,0,7,2,0,1,1,1,1,1,0 1,3,3,2,4,5,5,0,0,1,1,1,1,0 0,0,3,2,3,10,3,0,1,1,1,0,1,0 0,0,3,2,1,2,3,0,1,1,1,1,1,0 2,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,14,0,2,6,4,0,1,1,1,0,1,0 0,0,1,2,2,8,5,0,0,1,1,0,1,0 1,3,5,2,0,8,2,0,1,1,1,1,1,1 0,0,3,2,0,5,2,0,1,1,1,0,1,1 0,0,3,2,2,8,1,0,0,1,1,2,1,0 0,0,0,3,2,3,1,0,1,1,1,2,1,1 1,0,0,3,2,8,3,0,0,1,1,2,1,0 0,0,3,2,1,8,3,0,0,1,1,2,1,1 1,1,4,3,2,5,3,0,1,1,1,1,1,1 1,0,1,2,0,3,2,0,1,1,1,1,1,1 2,1,3,2,0,10,2,0,1,1,1,1,1,1 0,0,0,3,2,4,3,0,0,1,1,0,1,0 1,0,3,2,2,2,5,4,0,1,1,0,1,0 1,0,1,2,0,10,2,0,1,1,1,1,1,0 1,0,1,2,3,5,5,0,0,1,1,0,1,0 1,1,1,2,1,4,5,0,1,1,1,2,1,0 0,5,1,2,2,0,1,0,1,1,1,0,1,0 0,0,1,2,2,2,3,0,0,1,1,0,1,0 0,0,2,1,2,7,4,0,1,1,1,0,1,0 1,0,3,2,1,8,3,0,1,1,1,0,1,0 2,0,5,2,5,7,5,1,0,1,1,0,1,0 0,0,6,2,0,1,2,0,1,1,1,1,1,0 2,1,6,2,5,3,3,0,1,1,1,1,1,0 0,0,2,1,2,1,5,4,1,1,1,1,1,0 0,0,8,0,2,9,4,0,1,1,1,1,1,0 0,0,1,2,2,3,3,0,0,1,1,2,1,0 0,1,3,2,1,2,5,0,0,1,1,1,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,4,3,2,2,8,1,0,0,1,1,0,1,0 2,0,12,1,0,1,2,0,1,1,1,2,1,0 0,0,6,2,0,10,2,0,1,1,1,1,1,0 0,0,3,2,0,8,0,0,0,1,1,0,1,0 0,0,2,1,0,7,3,0,0,1,1,0,1,0 0,0,9,1,2,7,1,0,1,1,1,0,1,0 0,0,2,1,0,7,2,0,1,1,1,0,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 1,4,3,2,1,2,3,0,0,1,1,2,1,0 1,0,1,2,0,3,2,0,1,1,1,0,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,1 0,4,3,2,1,2,3,2,1,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,0,3,2,5,1,0,0,1,1,0,1,0 0,0,1,2,3,2,5,0,0,1,1,2,1,0 1,1,1,2,0,9,2,0,1,1,1,1,1,0 1,0,0,3,1,4,3,0,0,1,1,0,1,0 1,0,1,2,5,0,3,0,1,1,1,0,1,0 1,2,10,3,0,3,2,0,1,1,1,1,1,1 1,0,14,0,5,2,3,0,1,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,0 0,0,0,3,2,5,3,0,1,1,1,0,1,0 2,1,13,3,0,5,2,0,1,1,1,0,1,0 0,0,6,2,0,1,2,0,1,1,1,1,1,0 0,1,2,1,0,1,2,0,1,1,1,0,1,0 2,0,3,2,3,8,3,0,0,1,1,0,1,1 2,2,13,3,0,5,2,0,1,1,1,1,1,1 1,1,3,2,0,9,2,0,1,1,1,1,1,0 1,4,0,3,2,5,3,0,0,1,1,1,1,0 0,0,0,3,2,4,3,1,0,1,1,0,1,0 0,0,3,2,0,4,2,0,1,1,1,0,1,0 1,0,3,2,2,1,1,0,1,1,1,1,1,0 0,4,0,3,0,4,2,0,1,1,1,1,1,0 0,0,5,2,0,9,2,0,1,1,1,0,1,0 1,0,12,1,2,11,4,0,0,1,1,0,1,0 0,4,1,2,0,6,2,0,1,1,1,1,1,1 1,0,3,2,0,8,2,4,1,1,1,0,1,0 1,0,3,2,1,3,5,0,1,1,1,1,1,0 1,3,3,2,1,8,3,0,0,1,1,0,1,0 1,0,3,2,1,6,5,0,1,1,1,1,1,0 0,0,3,2,0,7,2,0,1,1,1,1,1,0 0,0,3,2,2,1,3,0,1,1,1,0,1,0 1,1,0,3,0,4,2,0,1,1,1,1,1,1 0,5,1,2,2,12,3,3,0,1,1,0,1,1 1,0,1,2,1,3,3,4,0,1,1,0,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,1,2,1,2,5,0,0,1,1,2,1,0 1,0,1,2,0,6,0,0,0,1,1,0,1,0 1,0,10,3,0,3,2,0,1,1,1,1,1,1 0,0,1,2,2,0,3,0,1,1,1,1,1,0 2,0,3,2,2,2,3,0,0,1,1,2,1,0 1,2,6,2,0,9,2,0,1,1,1,1,1,0 0,0,10,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,2,7,1,0,1,1,1,0,1,0 1,4,10,3,0,5,2,0,1,1,1,1,1,1 0,0,3,2,0,7,2,4,1,1,1,0,1,0 2,0,13,3,0,5,2,0,1,1,1,1,1,1 2,5,10,3,0,4,2,0,1,1,1,1,1,1 0,0,10,3,0,4,2,1,1,1,1,0,1,1 0,0,3,2,2,7,3,0,1,1,1,2,1,0 0,0,1,2,0,7,2,0,1,1,1,0,1,0 0,4,1,2,2,4,3,4,0,1,1,1,1,0 0,1,3,2,1,4,5,0,0,1,1,2,1,1 0,0,0,3,2,5,3,0,1,1,1,1,1,0 2,0,0,3,0,3,2,0,1,1,1,2,1,1 0,0,1,2,0,8,2,0,1,1,1,0,1,0 1,0,0,3,0,1,2,0,1,1,1,1,1,1 0,0,13,3,5,5,3,3,1,1,1,1,1,1 1,0,6,2,0,10,2,0,1,1,1,1,1,0 1,0,0,3,1,8,5,4,0,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,0,1,1 2,2,3,2,0,4,2,0,1,1,1,2,1,0 0,0,0,3,0,5,2,0,1,1,1,0,1,1 0,0,1,2,2,10,3,0,1,1,1,0,1,0 0,0,0,3,5,4,3,0,1,1,1,1,1,0 0,0,3,2,2,8,1,0,1,1,1,2,1,0 1,0,0,3,2,0,3,0,0,1,1,1,1,1 0,0,3,2,0,1,2,0,1,1,1,0,1,1 0,0,3,2,0,1,2,0,1,1,1,0,1,1 1,3,1,2,0,8,2,0,1,1,1,0,1,1 0,0,2,1,0,7,1,4,1,1,1,0,1,0 1,0,3,2,2,7,3,4,1,1,1,2,1,0 1,0,1,2,0,10,2,0,1,1,1,0,1,0 0,0,3,2,0,3,2,0,1,1,1,0,1,1 2,0,3,2,1,1,5,0,1,1,1,0,1,0 0,0,1,2,0,4,2,0,1,1,1,1,1,1 0,5,13,3,2,5,3,0,1,1,1,0,1,0 2,3,6,2,0,1,2,0,1,1,1,0,1,0 0,5,3,2,2,10,4,0,1,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,1,1,1 0,0,0,3,2,3,1,4,1,1,1,1,1,0 0,0,3,2,1,7,3,0,1,1,1,1,1,0 2,0,3,2,3,5,3,0,0,1,1,0,1,0 1,0,3,2,3,10,3,0,1,1,1,2,1,0 2,0,1,2,0,3,2,0,1,1,1,2,1,0 0,0,3,2,2,7,1,0,1,1,1,0,1,0 2,2,3,2,0,3,2,0,1,1,1,0,1,0 0,3,5,2,0,8,2,2,1,1,1,0,1,0 0,0,0,3,0,5,2,0,1,1,1,0,1,0 2,1,8,0,0,9,2,0,1,1,1,2,1,0 1,0,2,1,0,7,2,0,1,1,1,0,1,0 0,0,1,2,2,0,3,0,0,1,1,2,1,0 2,0,3,2,0,0,2,0,1,1,1,0,1,0 0,0,0,3,2,4,3,0,1,1,1,0,1,0 0,0,7,1,0,1,2,0,1,1,1,0,1,0 0,0,3,2,0,10,2,0,1,1,1,1,1,0 2,0,5,2,1,0,3,0,0,1,1,0,1,0 0,1,3,2,0,1,1,0,1,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,1 2,0,3,2,0,5,2,0,1,1,1,2,1,0 1,0,1,2,1,3,5,0,0,1,1,0,1,0 0,4,3,2,3,12,3,0,1,1,1,1,1,0 0,5,1,2,2,8,1,0,0,1,1,2,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,0 2,5,1,2,4,3,3,0,0,1,1,0,1,0 1,2,3,2,0,1,2,0,1,1,1,1,1,1 1,0,1,2,1,8,5,0,0,1,1,1,1,0 1,3,3,2,0,8,2,0,1,1,1,1,1,1 1,0,3,2,2,10,3,0,1,1,1,0,1,0 0,0,0,3,0,8,2,0,1,1,1,0,1,0 2,0,1,2,0,1,2,0,1,1,1,1,1,0 2,0,0,3,0,3,2,0,1,1,1,0,1,1 1,0,3,2,1,2,5,0,0,1,1,0,1,0 2,0,2,1,1,2,3,4,1,1,1,1,1,0 2,0,1,2,0,4,2,0,1,1,1,0,1,1 1,0,14,0,4,7,5,0,0,1,1,0,1,0 0,0,2,1,2,2,1,0,1,1,1,2,1,0 1,1,3,2,0,3,2,0,1,1,1,0,1,0 0,0,3,2,2,6,1,0,1,1,1,0,1,0 0,0,0,3,2,3,3,0,0,1,1,0,1,0 0,3,10,3,2,0,3,0,0,1,1,0,1,0 1,0,1,2,0,7,2,0,1,1,1,1,1,0 0,0,5,2,0,4,2,0,1,1,1,2,1,1 0,0,1,2,2,6,3,2,1,1,1,1,1,0 0,5,3,2,1,1,3,0,1,1,1,0,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,0 1,5,3,2,2,1,3,0,1,1,1,1,1,0 0,1,7,1,2,2,1,4,1,1,1,2,1,0 2,4,0,3,0,5,0,0,0,1,1,2,1,0 1,4,0,3,0,5,2,0,1,1,1,1,1,0 0,0,1,2,1,7,3,0,0,1,1,0,1,0 2,0,3,2,0,2,2,0,1,1,1,2,1,0 1,0,3,2,2,1,3,0,1,1,1,1,1,0 0,0,4,3,2,5,3,0,1,1,1,1,1,0 0,1,3,2,2,2,3,0,0,1,1,0,1,0 1,4,10,3,0,4,2,0,1,1,1,1,1,1 0,0,1,2,0,8,0,0,0,1,1,2,1,1 0,0,1,2,2,8,4,1,0,1,1,0,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 3,0,8,0,0,6,0,0,0,1,1,2,1,0 2,0,3,2,4,3,3,0,1,1,1,1,1,0 1,4,0,3,0,5,2,0,1,1,1,1,1,0 1,3,3,2,2,2,3,4,0,1,1,0,1,0 0,0,0,3,2,3,3,0,0,1,1,0,1,0 0,5,1,2,3,10,3,4,1,1,1,0,1,0 1,4,10,3,0,5,0,0,0,1,1,0,1,1 0,0,1,2,0,1,2,0,1,1,1,0,1,0 2,0,3,2,0,7,2,0,1,1,1,1,1,0 2,0,3,2,0,3,2,0,1,1,1,2,1,0 2,0,3,2,0,2,2,0,1,1,1,2,1,0 1,1,3,2,0,10,2,0,1,1,1,1,1,0 0,0,0,3,2,2,3,0,0,1,1,2,1,0 0,0,12,1,2,3,1,0,0,1,1,2,1,0 1,1,3,2,0,9,2,0,1,1,1,1,1,1 0,0,2,1,2,10,5,0,1,1,1,2,1,0 0,0,0,3,2,4,1,4,0,1,1,0,1,0 1,2,10,3,0,4,2,0,1,1,1,1,1,1 0,0,6,2,2,4,1,0,1,1,1,2,1,0 1,0,3,2,5,8,5,0,0,1,1,0,1,0 0,0,0,3,2,8,1,0,0,1,1,0,1,0 0,0,3,2,0,6,2,0,1,1,1,1,1,0 0,1,1,2,2,2,3,0,1,1,1,1,1,0 1,0,3,2,2,9,1,0,1,1,1,2,1,0 2,0,6,2,4,3,5,0,0,1,1,2,1,0 1,0,0,3,1,5,3,0,1,1,1,1,1,1 0,0,0,3,2,5,3,0,1,1,1,0,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 2,5,0,3,0,4,2,0,1,1,1,1,1,0 0,0,1,2,0,7,2,0,1,1,1,0,1,0 0,0,3,2,2,8,1,0,0,1,1,0,1,0 0,0,0,3,2,5,1,0,0,1,1,0,1,0 0,0,2,1,2,1,1,0,1,1,1,0,1,0 0,0,0,3,0,8,0,0,0,1,1,2,1,1 1,4,3,2,0,7,2,0,1,1,1,1,1,1 1,0,10,3,2,4,3,0,0,1,1,0,1,0 1,0,1,2,0,10,2,0,1,1,1,0,1,1 1,6,5,2,0,3,2,0,1,1,1,1,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,1 1,4,10,3,0,4,2,0,1,1,1,0,1,1 0,1,6,2,1,0,5,4,1,1,1,1,1,0 1,0,1,2,0,8,2,0,1,1,1,0,1,1 1,0,10,3,1,4,3,0,0,1,1,1,1,0 0,0,2,1,2,3,4,0,0,1,1,2,1,0 0,0,3,2,1,7,4,4,0,1,1,0,1,0 1,0,0,3,0,9,2,0,1,1,1,1,1,1 0,0,1,2,1,1,3,0,1,1,1,2,1,0 1,0,2,1,1,3,5,0,0,1,1,2,1,0 1,1,13,3,0,5,2,0,1,1,1,1,1,1 2,0,1,2,0,5,2,1,1,1,1,1,1,1 1,0,1,2,0,1,2,0,1,1,1,1,1,1 1,0,3,2,1,8,5,0,0,1,1,0,1,0 0,4,10,3,0,5,2,0,1,1,1,1,1,0 1,5,13,3,0,5,0,0,0,1,1,0,1,1 2,1,3,2,0,9,2,0,1,1,1,2,1,0 0,0,0,3,0,3,2,0,1,1,1,1,1,0 2,1,0,3,0,4,2,0,1,1,1,2,1,0 0,0,1,2,2,8,5,0,0,1,1,2,1,0 0,0,1,2,2,8,3,4,1,1,1,2,1,0 1,0,1,2,1,8,3,4,1,1,1,0,1,0 0,0,2,1,2,8,1,0,1,1,1,2,1,0 0,0,3,2,2,2,1,0,0,1,1,0,1,0 1,1,5,2,0,3,2,0,1,1,1,0,1,1 0,4,1,2,1,2,3,0,0,1,1,2,1,0 0,0,12,1,2,2,1,0,0,1,1,2,1,0 0,5,10,3,0,5,2,1,1,1,1,2,1,0 1,0,6,2,1,6,5,4,0,1,1,0,1,0 0,0,1,2,2,3,3,0,1,1,1,0,1,0 2,4,3,2,4,4,5,0,0,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,0 0,0,3,2,2,2,3,0,0,1,1,2,1,0 1,3,1,2,0,4,2,0,1,1,1,0,1,1 2,0,12,1,4,8,3,0,0,1,1,2,1,0 0,0,1,2,0,1,2,0,1,1,1,0,1,1 0,0,3,2,2,8,1,0,0,1,1,0,1,0 0,1,12,1,0,2,0,0,0,1,1,2,1,0 1,0,3,2,0,3,2,0,1,1,1,1,1,0 1,4,10,3,0,5,2,0,1,1,1,0,1,1 0,0,7,1,2,7,5,0,1,1,1,0,1,0 0,0,1,2,0,8,0,0,0,1,1,0,1,1 1,0,3,2,1,6,5,4,0,1,1,0,1,0 1,2,3,2,0,3,2,0,1,1,1,1,1,0 1,1,1,2,0,9,2,0,1,1,1,1,1,0 1,1,10,3,0,4,2,0,1,1,1,1,1,1 1,3,3,2,0,8,2,0,1,1,1,1,1,1 0,0,3,2,0,10,2,0,1,1,1,0,1,0 0,0,10,3,2,5,3,0,1,1,1,1,1,0 1,0,3,2,2,9,3,3,1,1,1,0,1,0 0,5,1,2,2,6,3,0,1,1,1,0,1,0 0,0,1,2,2,7,3,0,1,1,1,0,1,0 1,0,0,3,0,3,2,0,1,1,1,1,1,1 2,0,1,2,4,8,5,1,0,1,1,0,1,0 2,1,3,2,0,9,2,0,1,1,1,1,1,0 0,0,2,1,2,5,3,4,0,1,1,2,1,0 0,4,1,2,2,3,3,0,1,1,1,1,1,0 2,1,8,0,0,9,2,0,1,1,1,1,1,0 0,0,10,3,0,4,2,0,1,1,1,0,1,1 0,0,3,2,4,4,5,0,1,1,1,2,1,0 1,0,0,3,0,8,0,0,0,1,1,0,1,1 3,0,3,2,4,1,5,0,0,1,1,2,1,0 0,0,14,0,0,1,2,0,1,1,1,0,1,0 1,0,5,2,0,4,2,0,1,1,1,1,1,1 0,0,3,2,2,7,5,4,0,1,1,0,1,0 0,5,3,2,2,8,3,0,1,1,1,0,1,0 0,0,0,3,2,4,3,0,0,1,1,1,1,1 1,0,3,2,2,4,1,0,1,1,1,1,1,0 1,0,0,3,0,4,2,0,1,1,1,0,1,1 0,0,0,3,2,5,1,0,0,1,1,0,1,0 0,5,0,3,2,8,1,1,0,1,1,0,1,1 0,0,3,2,0,4,2,0,1,1,1,0,1,1 1,0,3,2,0,1,2,0,1,1,1,0,1,1 0,0,1,2,2,8,3,0,1,1,1,2,1,0 1,0,10,3,0,5,2,4,1,1,1,0,1,1 0,4,1,2,2,5,1,0,0,1,1,2,1,0 2,0,6,2,1,8,3,4,0,1,1,2,1,0 0,0,1,2,2,0,1,0,1,1,1,0,1,0 1,0,3,2,0,9,2,0,1,1,1,0,1,0 0,0,1,2,2,12,3,4,1,1,1,1,1,0 1,0,5,2,0,2,2,0,1,1,1,1,1,0 0,0,2,1,2,6,1,0,1,1,1,2,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,0 0,4,3,2,3,2,1,4,1,1,1,0,1,0 0,0,3,2,2,1,1,0,1,1,1,0,1,0 0,0,1,2,0,0,0,3,0,1,1,2,1,0 0,0,3,2,0,6,2,0,1,1,1,0,1,0 1,0,10,3,0,3,2,0,1,1,1,0,1,0 1,0,8,0,0,1,2,0,1,1,1,0,1,0 3,4,14,0,4,2,4,1,0,1,1,2,1,0 0,0,7,1,2,3,1,0,0,1,1,2,1,0 1,0,3,2,4,4,3,4,0,1,1,2,1,0 1,0,6,2,0,0,2,0,1,1,1,0,1,1 0,0,3,2,0,6,2,0,1,1,1,0,1,1 1,0,0,3,1,8,3,1,0,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,0,3,2,3,3,0,0,1,1,1,1,0 0,0,12,1,2,3,5,0,0,1,1,2,1,0 0,0,2,1,2,3,1,0,1,1,1,2,1,0 0,0,3,2,1,1,1,0,1,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,1 1,4,0,3,2,2,1,0,1,1,1,0,1,0 1,0,3,2,5,9,4,0,1,1,1,2,1,0 1,5,8,0,0,2,2,0,1,1,1,0,1,0 0,0,3,2,2,2,3,0,0,1,1,1,1,0 3,0,1,2,2,4,3,0,0,1,1,0,1,0 0,0,1,2,2,2,1,0,1,1,1,2,1,0 1,3,5,2,0,12,2,0,1,1,1,1,1,1 1,1,3,2,0,1,2,0,1,1,1,0,1,0 2,0,0,3,0,3,2,0,1,1,1,2,1,1 0,0,0,3,2,8,1,0,1,1,1,0,1,0 0,0,3,2,2,6,1,4,1,1,1,0,1,0 1,4,10,3,0,5,0,4,0,1,1,2,1,1 0,0,0,3,0,5,2,0,1,1,1,1,1,1 1,0,0,3,0,5,0,0,0,1,1,2,1,1 2,0,13,3,0,5,2,0,1,1,1,1,1,1 2,1,3,2,0,3,2,0,1,1,1,1,1,0 0,0,8,0,0,9,2,0,1,1,1,1,1,1 0,0,1,2,3,3,5,4,0,1,1,2,1,0 1,4,1,2,0,6,2,4,1,1,1,0,1,0 0,0,1,2,2,3,3,0,1,1,1,2,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,0 0,0,7,1,2,7,1,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,2,3,1,0,1,1,1,2,1,0 0,0,2,1,0,8,1,0,0,1,1,0,1,0 1,0,3,2,0,8,2,0,1,1,1,0,1,1 0,2,3,2,0,1,2,0,1,1,1,0,1,0 1,0,0,3,0,3,2,0,1,1,1,1,1,1 0,0,0,3,2,4,3,3,0,1,1,0,1,1 0,0,3,2,2,11,3,0,0,1,1,0,1,0 0,4,1,2,2,5,3,0,0,1,1,2,1,0 2,0,8,0,4,2,3,0,0,1,1,2,1,0 0,0,10,3,2,5,5,2,0,1,1,0,1,0 1,0,3,2,1,7,3,0,1,1,1,1,1,0 1,0,3,2,1,8,5,4,0,1,1,0,1,0 1,0,1,2,1,7,3,0,1,1,1,0,1,1 2,0,6,2,0,1,2,0,1,1,1,1,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,1 2,0,3,2,0,8,2,0,1,1,1,1,1,0 0,0,1,2,2,3,3,0,1,1,1,1,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,0 0,0,12,1,0,6,4,0,1,1,1,0,1,0 2,0,3,2,1,2,3,0,0,1,1,1,1,0 2,0,1,2,1,9,3,0,1,1,1,0,1,0 1,0,6,2,0,8,2,0,1,1,1,1,1,1 2,0,9,1,0,9,2,0,1,1,1,2,1,0 0,0,0,3,2,5,4,0,0,1,1,0,1,0 1,0,12,1,3,2,5,0,0,1,1,0,1,0 0,0,0,3,0,7,2,0,1,1,1,0,1,1 0,0,3,2,0,4,0,2,0,1,1,1,1,0 0,0,12,1,1,12,3,0,0,1,1,2,1,0 1,0,3,2,1,2,3,0,0,1,1,0,1,0 1,0,10,3,1,4,3,0,1,1,1,0,1,0 1,0,0,3,0,3,2,0,1,1,1,1,1,1 0,2,1,2,2,4,3,0,0,1,1,0,1,1 2,0,7,1,0,4,2,0,1,1,1,0,1,1 0,0,1,2,2,4,3,0,1,1,1,0,1,0 0,3,1,2,0,4,2,0,1,1,1,2,1,0 0,0,8,0,2,7,1,0,1,1,1,0,1,0 0,0,0,3,2,1,3,0,1,1,1,2,1,0 2,0,0,3,0,4,2,0,1,1,1,1,1,1 0,4,0,3,2,5,3,0,0,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,2,1,1 0,0,2,1,2,9,4,0,1,1,1,0,1,0 1,5,1,2,1,5,1,1,0,1,1,0,1,0 0,5,1,2,2,5,3,0,0,1,1,2,1,0 0,0,3,2,2,6,3,0,1,1,1,0,1,0 0,1,1,2,0,1,2,0,1,1,1,1,1,0 0,3,1,2,0,12,2,0,1,1,1,1,1,0 2,0,3,2,1,2,1,0,0,1,1,0,1,0 1,0,5,2,2,0,3,0,1,1,1,2,1,1 0,2,1,2,2,1,1,0,1,1,1,2,1,0 1,3,0,3,0,4,2,3,1,1,1,0,1,1 2,1,13,3,1,5,3,0,0,1,1,2,1,0 1,1,1,2,0,3,2,0,1,1,1,0,1,0 1,4,0,3,2,5,5,0,1,1,1,1,1,1 0,0,2,1,2,8,1,4,0,1,1,2,1,0 2,0,14,0,4,11,5,4,0,1,1,2,1,0 0,0,3,2,3,1,5,0,1,1,1,2,1,0 1,3,1,2,0,8,2,0,1,1,1,1,1,1 0,0,1,2,0,7,2,0,1,1,1,0,1,1 0,0,0,3,2,3,1,0,1,1,1,2,1,0 0,0,3,2,2,2,3,0,1,1,1,0,1,1 0,4,0,3,1,5,5,0,0,1,1,0,1,0 0,0,2,1,0,3,2,0,1,1,1,1,1,0 0,5,3,2,2,0,3,0,1,1,1,1,1,0 0,0,3,2,2,2,1,0,0,1,1,2,1,0 0,0,7,1,0,6,2,0,1,1,1,0,1,0 0,0,1,2,1,3,3,0,1,1,1,0,1,0 1,2,1,2,0,4,2,0,1,1,1,1,1,0 0,0,9,1,2,6,5,0,1,1,1,0,1,0 1,0,3,2,0,10,2,0,1,1,1,0,1,0 1,0,10,3,1,5,3,0,1,1,1,0,1,0 1,2,4,3,0,5,2,0,1,1,1,1,1,1 1,1,2,1,1,1,3,0,1,1,1,1,1,0 2,2,3,2,0,1,2,0,1,1,1,0,1,1 1,0,3,2,1,1,1,0,0,1,1,0,1,0 1,0,10,3,1,8,3,2,0,1,1,2,1,0 0,0,12,1,0,9,2,0,1,1,1,2,1,0 1,1,3,2,0,3,2,0,1,1,1,1,1,0 0,0,7,1,2,6,3,0,1,1,1,0,1,0 0,0,0,3,2,3,3,0,1,1,1,1,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 2,0,3,2,0,1,2,0,1,1,1,0,1,1 1,0,3,2,0,6,2,0,1,1,1,1,1,0 0,0,1,2,2,3,1,0,1,1,1,0,1,0 1,0,14,0,2,6,4,1,0,1,1,1,1,0 2,0,3,2,1,8,3,0,0,1,1,0,1,0 1,2,3,2,0,1,2,0,1,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,0,1,1 0,0,3,2,0,6,2,0,1,1,1,1,1,0 1,0,1,2,0,2,2,0,1,1,1,0,1,0 2,5,13,3,4,5,3,4,1,1,1,1,1,1 2,0,1,2,0,5,2,0,1,1,1,0,1,1 2,0,1,2,4,2,3,0,0,1,1,0,1,0 1,2,3,2,0,3,2,0,1,1,1,1,1,0 0,0,3,2,2,6,1,0,1,1,1,0,1,0 0,4,10,3,2,5,3,0,1,1,1,1,1,0 0,0,0,3,0,4,2,0,1,1,1,0,1,0 0,0,3,2,2,6,1,0,0,1,1,2,1,0 0,0,3,2,0,7,2,0,1,1,1,1,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,1 0,0,10,3,2,3,1,1,0,1,1,2,1,0 2,0,10,3,0,5,2,0,1,1,1,0,1,0 0,0,6,2,2,4,3,0,1,1,1,0,1,0 0,5,9,1,2,2,3,0,1,1,1,2,1,0 0,0,1,2,2,4,1,4,1,1,1,2,1,0 2,0,1,2,4,1,3,0,1,1,1,2,1,0 0,0,3,2,2,11,3,0,0,1,1,0,1,0 1,2,0,3,0,1,2,0,1,1,1,1,1,0 2,0,10,3,0,4,2,0,1,1,1,2,1,1 0,0,0,3,1,2,1,0,0,1,1,0,1,0 0,0,10,3,2,5,3,4,0,1,1,0,1,0 1,2,3,2,0,1,2,0,1,1,1,0,1,0 0,3,3,2,2,2,3,2,0,1,1,2,1,0 1,2,3,2,1,2,3,0,0,1,1,1,1,0 0,0,3,2,0,3,2,0,1,1,1,1,1,0 1,0,12,1,4,2,3,0,0,1,1,0,1,0 0,0,4,3,0,5,2,0,1,1,1,1,1,1 1,0,0,3,1,8,3,0,0,1,1,0,1,0 1,1,0,3,1,3,3,0,1,1,1,1,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,0,3,2,0,3,0,1,1,1,0,1,0 0,0,1,2,0,5,2,0,1,1,1,2,1,0 1,0,1,2,0,5,2,0,1,1,1,1,1,0 1,0,0,3,2,4,1,0,1,1,1,0,1,0 0,0,0,3,2,8,3,0,0,1,1,0,1,0 0,0,3,2,2,8,1,0,1,1,1,0,1,0 1,0,3,2,2,4,3,0,1,1,1,0,1,0 1,0,0,3,5,4,3,0,0,1,1,1,1,1 1,0,10,3,1,2,5,0,0,1,1,2,1,0 1,0,2,1,0,4,2,0,1,1,1,0,1,0 0,0,1,2,0,2,2,0,1,1,1,0,1,0 0,0,0,3,2,4,3,0,1,1,1,0,1,0 0,0,2,1,3,2,3,0,1,1,1,0,1,0 0,0,3,2,0,2,2,0,1,1,1,1,1,0 1,0,3,2,2,2,3,0,1,1,1,2,1,0 0,0,2,1,2,2,1,0,1,1,1,2,1,0 2,0,0,3,0,8,2,0,1,1,1,0,1,1 1,0,5,2,2,8,3,0,0,1,1,1,1,0 0,4,10,3,2,5,1,0,0,1,1,2,1,0 0,0,2,1,2,2,1,0,1,1,1,2,1,0 1,0,2,1,0,2,2,0,1,1,1,0,1,0 2,0,3,2,1,8,5,0,0,1,1,0,1,1 1,1,3,2,0,9,2,0,1,1,1,1,1,0 2,0,3,2,0,7,2,0,1,1,1,1,1,0 1,0,5,2,1,2,5,0,0,1,1,0,1,0 1,0,0,3,5,4,3,0,0,1,1,0,1,0 0,0,3,2,2,3,3,0,1,1,1,1,1,0 2,0,6,2,2,7,3,0,0,1,1,0,1,0 0,0,5,2,2,8,1,0,0,1,1,2,1,0 0,2,1,2,2,6,1,0,0,1,1,0,1,0 1,4,6,2,1,5,3,0,0,1,1,2,1,0 3,0,4,3,0,9,2,0,1,1,1,2,1,1 0,0,3,2,2,1,1,0,1,1,1,0,1,0 1,0,3,2,0,0,2,0,1,1,1,0,1,0 1,0,0,3,3,5,5,0,0,1,1,1,1,1 0,0,14,0,0,1,2,3,1,1,1,1,1,1 1,0,11,0,0,6,2,0,1,1,1,0,1,0 1,0,7,1,1,8,5,0,0,1,1,0,1,0 0,0,1,2,2,6,3,0,1,1,1,1,1,0 2,0,10,3,0,5,2,0,1,1,1,0,1,0 2,3,3,2,2,4,4,0,0,1,1,0,1,0 1,2,3,2,1,4,5,0,1,1,1,0,1,0 1,0,3,2,1,2,3,4,1,1,1,0,1,0 1,0,0,3,1,4,5,0,0,1,1,0,1,0 1,0,1,2,2,4,3,0,1,1,1,0,1,0 0,5,1,2,2,2,1,0,0,1,1,2,1,0 2,0,1,2,1,3,3,0,1,1,1,1,1,1 0,0,3,2,0,4,2,0,1,1,1,0,1,1 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,5,2,0,4,2,0,1,1,1,1,1,1 0,0,3,2,3,6,3,0,1,1,1,1,1,0 0,0,3,2,0,1,2,0,1,1,1,1,1,0 1,0,5,2,0,0,2,0,1,1,1,0,1,1 0,0,3,2,0,7,0,0,0,1,1,2,1,0 1,0,12,1,1,6,5,0,0,1,1,0,1,0 0,0,6,2,0,7,0,0,0,1,1,2,1,0 0,0,3,2,0,1,2,0,1,1,1,1,1,0 0,0,3,2,5,8,1,0,0,1,1,0,1,0 1,3,10,3,0,4,2,0,1,1,1,1,1,1 1,4,1,2,0,12,2,0,1,1,1,1,1,0 2,4,0,3,4,5,3,0,0,1,1,1,1,0 1,0,3,2,1,6,3,0,0,1,1,0,1,0 0,0,5,2,2,0,1,0,0,1,1,0,1,0 1,0,1,2,0,3,2,0,1,1,1,0,1,1 0,0,0,3,2,5,3,0,1,1,1,1,1,0 1,0,3,2,0,7,2,4,1,1,1,0,1,1 2,0,0,3,0,3,2,0,1,1,1,2,1,1 1,0,0,3,0,0,2,0,1,1,1,2,1,1 0,0,1,2,2,2,3,2,1,1,1,0,1,0 1,0,3,2,1,3,3,0,0,1,1,2,1,0 0,0,5,2,1,6,3,0,0,1,1,0,1,0 1,0,3,2,2,6,3,4,1,1,1,2,1,0 1,0,3,2,0,6,2,0,1,1,1,0,1,0 2,0,6,2,4,7,3,0,0,1,1,1,1,0 0,0,1,2,2,3,1,0,1,1,1,2,1,0 2,0,1,2,0,5,2,0,1,1,1,0,1,1 0,0,2,1,2,3,5,0,0,1,1,1,1,0 0,0,1,2,0,4,2,0,1,1,1,0,1,0 1,4,5,2,2,5,1,4,1,1,1,0,1,0 1,5,0,3,1,8,3,0,0,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 1,1,4,3,2,5,3,0,1,1,1,2,1,0 1,0,0,3,0,5,0,1,0,1,1,0,1,1 0,0,5,2,1,0,5,0,0,1,1,0,1,0 0,0,9,1,2,2,3,0,1,1,1,1,1,0 0,0,3,2,2,7,1,0,0,1,1,0,1,0 0,0,1,2,2,1,3,0,1,1,1,0,1,0 1,1,3,2,0,1,2,0,1,1,1,2,1,0 1,0,10,3,2,5,3,0,1,1,1,0,1,1 0,0,3,2,2,10,1,0,0,1,1,2,1,0 0,0,3,2,2,1,1,0,1,1,1,0,1,0 0,0,3,2,0,7,2,0,1,1,1,1,1,1 0,0,14,0,2,1,3,0,1,1,1,0,1,0 0,0,12,1,1,3,5,0,0,1,1,2,1,0 1,0,3,2,1,1,3,0,1,1,1,0,1,0 0,0,3,2,2,8,3,0,1,1,1,0,1,0 0,4,1,2,1,8,5,4,0,1,1,0,1,0 1,5,3,2,4,2,5,0,0,1,1,2,1,0 0,0,1,2,0,3,2,0,1,1,1,1,1,0 0,5,3,2,2,2,3,0,0,1,1,2,1,0 1,0,0,3,0,5,0,0,0,1,1,1,1,1 0,0,3,2,0,7,2,0,1,1,1,1,1,0 1,2,0,3,0,3,2,1,1,1,1,1,1,1 0,0,0,3,2,5,3,0,1,1,1,1,1,0 1,0,3,2,1,10,3,0,1,1,1,1,1,0 0,0,3,2,0,10,2,0,1,1,1,1,1,1 1,0,3,2,1,9,3,0,1,1,1,1,1,0 1,0,8,0,1,2,3,0,1,1,1,0,1,0 1,1,1,2,1,10,5,0,0,1,1,1,1,0 1,0,1,2,1,3,3,0,1,1,1,1,1,0 3,4,12,1,1,10,3,4,1,1,1,2,1,0 0,0,3,2,2,2,3,4,0,1,1,1,1,0 0,0,10,3,2,5,3,0,0,1,1,0,1,0 2,0,14,0,1,2,3,0,0,1,1,0,1,0 2,1,0,3,0,1,2,0,1,1,1,2,1,0 0,0,3,2,2,8,1,0,1,1,1,1,1,0 1,4,0,3,1,5,4,0,0,1,1,1,1,0 1,0,5,2,0,5,0,0,0,1,1,2,1,1 1,2,1,2,0,4,2,0,1,1,1,1,1,0 0,0,1,2,2,8,3,0,1,1,1,0,1,0 0,0,3,2,1,1,3,0,1,1,1,1,1,0 1,0,3,2,2,3,5,0,0,1,1,0,1,0 0,0,4,3,6,5,0,0,0,1,1,1,1,1 0,0,0,3,2,3,3,0,0,1,1,0,1,0 0,0,3,2,2,8,1,0,0,1,1,2,1,0 2,2,0,3,0,3,2,0,1,1,1,1,1,1 0,0,10,3,2,5,1,0,0,1,1,0,1,0 1,1,0,3,0,4,2,0,1,1,1,1,1,0 1,1,3,2,0,9,2,0,1,1,1,1,1,1 0,0,3,2,2,8,1,4,0,1,1,0,1,0 2,0,3,2,1,3,5,0,0,1,1,0,1,0 0,4,3,2,0,0,2,0,1,1,1,1,1,1 0,0,12,1,2,9,1,0,1,1,1,0,1,0 0,0,1,2,2,1,1,0,1,1,1,2,1,0 1,0,0,3,2,4,1,0,1,1,1,0,1,0 1,0,6,2,1,6,3,0,0,1,1,2,1,0 0,2,0,3,0,0,2,0,1,1,1,1,1,1 0,0,2,1,2,2,1,0,1,1,1,2,1,0 1,0,3,2,4,9,5,0,1,1,1,1,1,0 1,0,3,2,1,4,3,0,0,1,1,0,1,0 0,0,5,2,2,3,1,0,0,1,1,2,1,0 0,0,2,1,3,2,1,4,0,1,1,0,1,0 1,0,6,2,0,10,2,0,1,1,1,1,1,1 2,3,1,2,1,8,3,4,0,1,1,0,1,0 2,0,8,0,3,2,3,0,0,1,1,2,1,0 1,0,3,2,2,3,3,0,0,1,1,1,1,1 0,0,0,3,2,8,3,0,1,1,1,1,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,0 0,0,1,2,1,8,5,0,0,1,1,0,1,0 2,4,1,2,1,5,3,2,1,1,1,0,1,0 0,0,1,2,2,5,3,3,0,1,1,2,1,0 1,0,10,3,2,5,3,0,0,1,1,0,1,1 2,1,3,2,0,9,2,0,1,1,1,1,1,0 0,0,12,1,2,1,1,0,0,1,1,2,1,0 1,4,0,3,1,5,5,2,0,1,1,0,1,0 1,1,3,2,0,1,2,0,1,1,1,1,1,0 1,0,1,2,1,1,3,0,1,1,1,1,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 2,0,3,2,0,2,2,0,1,1,1,1,1,0 0,5,6,2,2,8,1,0,1,1,1,2,1,0 0,0,3,2,0,0,2,0,1,1,1,0,1,1 1,0,0,3,0,2,2,0,1,1,1,0,1,0 0,0,2,1,0,10,2,0,1,1,1,1,1,1 1,0,7,1,2,1,4,4,1,1,1,0,1,0 1,3,3,2,0,0,2,0,1,1,1,1,1,1 1,0,1,2,0,4,2,0,1,1,1,1,1,0 1,3,1,2,3,6,3,0,1,1,1,0,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,0 0,0,1,2,0,3,2,0,1,1,1,1,1,1 0,0,3,2,3,2,5,0,0,1,1,2,1,0 1,1,3,2,0,9,2,0,1,1,1,1,1,1 1,0,3,2,0,1,2,0,1,1,1,0,1,0 2,0,3,2,0,10,2,0,1,1,1,2,1,0 3,1,3,2,1,4,3,0,1,1,1,2,1,0 1,0,1,2,0,0,2,0,1,1,1,2,1,1 1,0,1,2,0,4,2,0,1,1,1,1,1,1 0,0,3,2,2,7,1,0,1,1,1,0,1,0 0,0,9,1,2,3,1,0,0,1,1,2,1,0 1,5,3,2,3,6,5,0,1,1,1,0,1,0 1,0,3,2,1,1,3,0,1,1,1,1,1,0 1,0,3,2,3,7,1,4,1,1,1,0,1,0 0,0,3,2,2,2,4,0,1,1,1,0,1,0 1,0,1,2,0,4,2,0,1,1,1,1,1,0 2,0,3,2,0,10,2,0,1,1,1,2,1,1 1,0,3,2,5,10,3,0,1,1,1,0,1,1 0,0,1,2,6,6,0,0,0,1,1,0,1,0 1,3,0,3,2,4,3,0,0,1,1,1,1,0 1,0,1,2,1,10,3,0,1,1,1,1,1,0 0,0,9,1,2,5,1,0,1,1,1,2,1,0 0,0,1,2,0,7,2,0,1,1,1,0,1,0 1,0,0,3,2,3,3,0,0,1,1,1,1,0 1,0,3,2,2,7,3,0,1,1,1,1,1,0 1,0,0,3,0,3,2,0,1,1,1,1,1,1 0,0,3,2,2,3,5,0,0,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,3,2,0,4,2,0,1,1,1,0,1,1 1,4,3,2,0,5,2,0,1,1,1,0,1,0 1,4,0,3,0,5,2,0,1,1,1,0,1,0 0,0,3,2,2,6,1,0,1,1,1,2,1,0 0,0,3,2,2,1,1,0,1,1,1,0,1,0 0,4,12,1,2,9,3,0,1,1,1,0,1,0 1,0,9,1,0,1,2,0,1,1,1,0,1,1 0,0,3,2,2,8,5,4,0,1,1,0,1,0 0,0,3,2,2,2,1,0,0,1,1,0,1,0 2,1,3,2,0,3,2,0,1,1,1,0,1,1 0,1,3,2,2,1,1,0,1,1,1,0,1,0 0,5,1,2,2,2,1,4,1,1,1,2,1,0 0,0,6,2,2,4,3,0,0,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 2,0,6,2,1,5,3,0,0,1,1,0,1,0 1,2,1,2,0,4,2,0,1,1,1,2,1,1 1,0,1,2,0,4,2,0,1,1,1,0,1,1 2,0,3,2,2,2,4,4,0,1,1,2,1,0 0,4,3,2,2,12,3,0,1,1,1,0,1,0 3,1,3,2,0,9,2,0,1,1,1,2,1,0 2,1,0,3,0,4,2,0,1,1,1,2,1,0 2,0,3,2,0,2,2,0,1,1,1,0,1,0 1,0,1,2,0,8,2,0,1,1,1,2,1,0 0,0,3,2,1,1,3,0,1,1,1,0,1,0 1,0,6,2,0,1,2,0,1,1,1,0,1,1 0,0,0,3,0,5,2,0,1,1,1,0,1,1 0,0,1,2,1,4,3,0,1,1,1,1,1,0 1,1,13,3,0,5,2,0,1,1,1,1,1,1 0,0,3,2,2,8,3,0,1,1,1,0,1,0 0,0,9,1,2,1,5,0,1,1,1,0,1,0 1,5,0,3,2,5,3,0,1,1,1,1,1,0 0,0,1,2,2,1,5,0,1,1,1,0,1,0 1,1,3,2,0,10,2,0,1,1,1,1,1,1 0,0,3,2,1,3,3,0,1,1,1,1,1,1 1,0,10,3,1,4,3,0,0,1,1,0,1,0 1,4,0,3,0,5,2,0,1,1,1,0,1,1 3,0,3,2,0,10,2,0,1,1,1,0,1,0 1,4,6,2,0,9,2,0,1,1,1,0,1,0 0,0,3,2,2,1,1,0,1,1,1,0,1,0 3,1,8,0,0,9,2,0,1,1,1,2,1,0 0,0,6,2,2,2,1,0,0,1,1,2,1,0 1,0,0,3,0,8,2,0,1,1,1,0,1,1 0,4,3,2,1,12,3,0,0,1,1,0,1,0 1,0,3,2,0,4,0,0,0,1,1,1,1,0 1,1,1,2,3,4,3,0,0,1,1,1,1,0 2,0,1,2,0,8,0,0,0,1,1,0,1,0 1,2,1,2,0,4,2,0,1,1,1,0,1,1 0,5,1,2,2,2,1,4,0,1,1,0,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 1,0,10,3,2,5,3,0,1,1,1,1,1,0 0,0,3,2,2,8,4,0,0,1,1,0,1,0 0,0,9,1,0,10,2,0,1,1,1,0,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 0,0,3,2,2,3,1,4,0,1,1,2,1,0 0,0,1,2,0,3,2,0,1,1,1,1,1,0 0,0,1,2,0,1,2,0,1,1,1,0,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,0 0,0,1,2,3,5,3,0,1,1,1,0,1,1 1,0,0,3,1,8,3,0,0,1,1,0,1,0 1,5,0,3,2,4,5,0,0,1,1,0,1,0 0,0,3,2,2,8,1,0,0,1,1,0,1,0 1,4,0,3,2,5,3,0,1,1,1,1,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,1 0,1,2,1,1,3,5,0,1,1,1,0,1,0 1,0,1,2,1,8,5,0,0,1,1,0,1,0 1,1,0,3,2,5,3,0,1,1,1,2,1,1 0,0,3,2,2,4,3,0,1,1,1,0,1,0 1,0,0,3,0,5,2,0,1,1,1,0,1,1 2,1,3,2,0,7,2,0,1,1,1,2,1,0 1,0,0,3,1,7,3,0,1,1,1,0,1,0 0,1,2,1,2,9,1,0,1,1,1,2,1,0 0,4,3,2,2,2,1,1,1,1,1,2,1,0 0,0,6,2,2,3,3,4,1,1,1,1,1,0 0,0,1,2,2,3,3,0,1,1,1,0,1,0 1,0,5,2,0,3,2,0,1,1,1,0,1,0 0,0,10,3,2,5,3,0,0,1,1,0,1,0 0,0,7,1,2,6,1,0,1,1,1,2,1,0 1,0,7,1,3,2,3,4,1,1,1,0,1,0 0,0,6,2,1,7,3,0,1,1,1,0,1,0 1,0,9,1,2,12,4,4,1,1,1,0,1,0 1,4,0,3,1,5,3,0,0,1,1,1,1,1 2,0,3,2,1,8,5,0,0,1,1,0,1,1 1,0,3,2,2,7,3,0,1,1,1,0,1,0 2,4,1,2,4,4,3,0,1,1,1,1,1,0 0,4,0,3,2,5,3,0,0,1,1,1,1,1 1,0,5,2,1,1,3,0,1,1,1,0,1,0 1,2,3,2,0,4,2,0,1,1,1,1,1,1 0,0,0,3,2,4,1,0,0,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,1,2,1,8,3,0,0,1,1,0,1,0 0,0,1,2,2,4,5,0,0,1,1,2,1,0 2,0,3,2,0,8,2,0,1,1,1,0,1,1 1,1,2,1,0,9,2,0,1,1,1,1,1,0 1,0,0,3,1,3,5,1,0,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,1,1,0 2,4,1,2,4,4,3,0,1,1,1,0,1,0 1,2,1,2,0,4,2,0,1,1,1,1,1,1 2,4,2,1,4,12,5,4,0,1,1,0,1,0 0,0,3,2,3,7,3,0,1,1,1,1,1,0 2,3,3,2,2,8,5,0,0,1,1,0,1,0 1,0,0,3,0,3,2,0,1,1,1,1,1,0 0,0,0,3,2,8,1,0,0,1,1,2,1,0 0,0,2,1,2,2,1,0,0,1,1,2,1,0 1,2,3,2,0,4,2,0,1,1,1,1,1,1 1,0,1,2,0,1,2,0,1,1,1,1,1,0 1,0,14,0,3,2,4,0,0,1,1,0,1,0 0,0,3,2,2,4,5,4,0,1,1,0,1,0 1,0,1,2,5,2,1,0,0,1,1,2,1,0 0,0,1,2,2,8,5,0,0,1,1,2,1,0 1,0,3,2,4,8,5,0,0,1,1,2,1,0 3,1,15,0,4,4,3,0,0,1,1,1,1,0 0,0,3,2,3,2,5,0,0,1,1,2,1,0 0,0,0,3,0,10,2,0,1,1,1,0,1,0 1,0,3,2,0,10,2,0,1,1,1,0,1,0 0,0,0,3,2,4,3,0,0,1,1,0,1,0 1,4,3,2,3,8,5,4,0,1,1,0,1,0 1,2,1,2,0,4,2,0,1,1,1,1,1,1 0,0,0,3,2,3,3,0,1,1,1,1,1,1 0,0,1,2,6,1,2,0,1,1,1,2,1,0 0,0,1,2,0,7,2,0,1,1,1,0,1,1 0,0,0,3,2,0,3,0,1,1,1,2,1,0 1,4,4,3,1,5,5,0,0,1,1,2,1,0 0,5,1,2,2,8,3,0,0,1,1,0,1,0 0,4,0,3,2,12,3,0,1,1,1,0,1,0 0,0,3,2,0,4,2,0,1,1,1,1,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,3,2,0,8,0,0,0,1,1,2,1,1 1,0,13,3,0,5,2,1,1,1,1,0,1,1 0,0,1,2,2,8,1,4,0,1,1,2,1,0 0,0,0,3,2,8,3,0,0,1,1,0,1,0 1,0,3,2,1,4,5,0,0,1,1,1,1,0 0,0,3,2,2,7,4,4,1,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 1,0,1,2,1,6,5,0,0,1,1,0,1,0 1,0,1,2,0,3,2,0,1,1,1,0,1,0 0,4,0,3,2,3,5,4,0,1,1,2,1,0 2,0,3,2,1,8,3,4,1,1,1,0,1,0 1,0,3,2,1,1,5,0,1,1,1,1,1,0 0,0,3,2,0,4,2,0,1,1,1,0,1,0 1,0,11,0,0,9,4,0,1,1,1,0,1,0 1,0,3,2,0,8,2,0,1,1,1,0,1,1 1,0,0,3,0,3,2,0,1,1,1,1,1,1 0,0,6,2,2,3,3,0,0,1,1,2,1,0 1,0,3,2,0,1,0,0,0,1,1,0,1,1 1,3,1,2,0,8,2,0,1,1,1,0,1,1 0,0,1,2,2,8,1,0,0,1,1,2,1,0 0,0,3,2,2,7,1,4,1,1,1,0,1,0 0,0,3,2,2,9,1,0,1,1,1,0,1,0 1,0,5,2,2,1,3,0,1,1,1,1,1,0 2,3,1,2,0,5,2,0,1,1,1,0,1,1 1,0,3,2,0,10,2,0,1,1,1,1,1,0 1,5,3,2,0,6,2,0,1,1,1,0,1,0 1,3,1,2,1,8,5,4,1,1,1,0,1,0 1,0,6,2,1,8,3,0,0,1,1,0,1,0 1,0,3,2,2,10,5,4,1,1,1,0,1,0 0,0,5,2,2,0,3,1,0,1,1,0,1,0 0,0,6,2,0,4,2,0,1,1,1,2,1,1 0,0,3,2,2,6,5,0,1,1,1,0,1,0 0,0,3,2,2,2,1,0,1,1,1,2,1,0 0,0,3,2,2,1,1,0,1,1,1,0,1,0 0,0,0,3,2,4,1,0,0,1,1,0,1,0 0,0,5,2,2,3,1,0,1,1,1,2,1,0 0,1,1,2,2,5,1,0,0,1,1,2,1,0 1,0,0,3,2,5,3,0,0,1,1,1,1,1 0,1,7,1,0,1,2,0,1,1,1,1,1,0 0,0,3,2,3,8,3,0,0,1,1,2,1,0 0,0,0,3,0,5,2,0,1,1,1,0,1,0 0,0,1,2,2,2,3,0,0,1,1,2,1,0 1,0,1,2,0,3,2,0,1,1,1,0,1,1 1,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,0,3,0,0,2,0,1,1,1,1,1,1 0,0,2,1,2,5,1,0,1,1,1,2,1,0 1,1,1,2,0,1,2,0,1,1,1,1,1,0 0,0,0,3,0,3,4,0,0,1,1,2,1,0 0,0,3,2,1,3,3,0,0,1,1,0,1,0 1,4,6,2,1,8,3,4,0,1,1,0,1,0 2,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,3,2,1,1,3,0,1,1,1,0,1,0 1,0,0,3,2,4,3,0,1,1,1,1,1,0 0,0,6,2,0,4,2,4,1,1,1,0,1,1 2,0,1,2,1,8,3,0,0,1,1,0,1,0 1,0,1,2,1,4,3,0,0,1,1,0,1,0 0,0,2,1,2,6,4,0,1,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,0,1,1 0,0,3,2,0,3,2,0,1,1,1,1,1,0 0,0,1,2,0,0,2,0,1,1,1,0,1,0 1,1,3,2,1,1,3,0,1,1,1,0,1,0 1,1,6,2,0,4,2,0,1,1,1,0,1,0 0,5,1,2,2,8,1,4,1,1,1,2,1,0 1,0,3,2,1,5,5,0,0,1,1,0,1,0 1,3,3,2,2,8,5,4,0,1,1,0,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 1,0,0,3,0,1,2,0,1,1,1,1,1,0 2,0,2,1,1,8,3,0,0,1,1,0,1,0 0,0,7,1,2,7,1,0,1,1,1,0,1,0 0,0,10,3,0,5,0,0,0,1,1,2,1,1 0,0,1,2,0,0,0,0,0,1,1,0,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,1 0,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,3,2,1,2,5,0,0,1,1,2,1,0 1,0,10,3,1,4,5,0,0,1,1,2,1,0 1,1,3,2,0,9,2,0,1,1,1,0,1,0 0,0,0,3,3,3,3,0,0,1,1,0,1,0 2,0,2,1,4,7,3,0,0,1,1,0,1,0 0,0,1,2,2,8,1,0,1,1,1,1,1,0 1,0,3,2,1,7,1,0,1,1,1,0,1,0 0,0,0,3,4,3,5,0,0,1,1,1,1,0 0,0,1,2,0,10,2,2,1,1,1,0,1,1 0,0,0,3,2,10,1,0,0,1,1,1,1,0 2,0,4,3,1,0,5,0,1,1,1,0,1,1 3,4,1,2,4,5,3,0,1,1,1,2,1,0 1,0,0,3,0,3,2,0,1,1,1,1,1,1 1,0,0,3,1,4,5,3,1,1,1,0,1,0 0,0,3,2,1,8,3,0,0,1,1,0,1,0 0,3,6,2,2,8,5,4,0,1,1,0,1,0 0,0,0,3,2,5,3,0,0,1,1,0,1,0 0,0,6,2,2,8,5,4,0,1,1,2,1,0 0,4,10,3,0,5,2,1,1,1,1,0,1,1 0,0,1,2,2,6,1,0,1,1,1,2,1,0 0,0,2,1,2,6,1,0,1,1,1,2,1,0 1,1,3,2,0,1,2,0,1,1,1,0,1,0 0,0,4,3,2,5,3,0,1,1,1,1,1,1 1,0,3,2,0,8,2,0,1,1,1,1,1,1 2,1,4,3,1,5,3,0,1,1,1,1,1,0 0,0,1,2,2,3,1,0,1,1,1,1,1,0 0,0,1,2,0,3,2,0,1,1,1,1,1,0 1,0,3,2,1,6,5,4,0,1,1,0,1,0 0,0,2,1,2,6,1,0,1,1,1,2,1,0 1,0,3,2,1,3,4,0,0,1,1,2,1,0 0,0,3,2,2,1,3,0,1,1,1,0,1,0 0,0,1,2,2,1,3,0,1,1,1,0,1,0 0,0,1,2,5,8,1,0,1,1,1,0,1,0 2,3,10,3,2,4,3,0,0,1,1,0,1,1 1,0,3,2,4,3,5,0,0,1,1,2,1,0 1,0,3,2,0,0,2,0,1,1,1,1,1,1 0,0,3,2,2,2,3,0,0,1,1,1,1,0 0,1,3,2,2,9,1,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,0 0,0,5,2,2,4,1,0,1,1,1,1,1,0 0,4,3,2,2,9,1,2,1,1,1,1,1,0 0,0,3,2,0,4,0,0,0,1,1,2,1,0 0,0,0,3,2,5,3,0,1,1,1,1,1,0 0,0,3,2,3,7,1,0,1,1,1,1,1,0 0,0,3,2,1,8,3,0,0,1,1,0,1,0 0,0,3,2,2,2,3,0,1,1,1,2,1,0 0,0,1,2,2,2,1,0,1,1,1,0,1,0 1,4,1,2,1,8,5,0,0,1,1,2,1,0 0,0,3,2,1,1,1,0,1,1,1,0,1,0 1,0,3,2,2,3,1,0,0,1,1,2,1,0 0,0,3,2,2,1,3,4,1,1,1,0,1,0 0,1,2,1,3,10,3,0,1,1,1,1,1,0 0,0,1,2,2,2,3,0,1,1,1,0,1,0 2,0,0,3,0,2,2,0,1,1,1,2,1,0 0,0,1,2,1,8,1,0,0,1,1,0,1,0 0,4,0,3,2,5,3,0,0,1,1,0,1,0 1,0,9,1,2,2,5,4,0,1,1,1,1,0 1,4,3,2,0,2,2,0,1,1,1,0,1,0 1,0,3,2,0,10,2,0,1,1,1,0,1,1 2,0,3,2,0,1,2,4,1,1,1,0,1,0 1,5,1,2,1,8,5,0,0,1,1,0,1,0 0,0,3,2,2,6,1,4,1,1,1,0,1,0 1,1,1,2,1,1,5,0,1,1,1,1,1,0 2,3,11,0,0,8,2,4,1,1,1,0,1,0 1,1,4,3,2,5,3,0,1,1,1,1,1,1 2,1,1,2,0,9,2,0,1,1,1,1,1,1 0,0,1,2,2,7,3,0,0,1,1,0,1,0 0,0,3,2,2,2,3,0,1,1,1,1,1,0 2,1,12,1,3,3,4,3,1,1,1,0,1,0 1,0,6,2,0,5,2,0,1,1,1,1,1,0 0,2,3,2,2,4,3,0,1,1,1,1,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,1 0,4,0,3,0,5,2,0,1,1,1,0,1,0 0,0,10,3,2,4,3,0,0,1,1,1,1,0 1,0,9,1,0,0,2,0,1,1,1,1,1,1 1,0,1,2,1,1,3,0,1,1,1,1,1,0 0,0,1,2,0,5,2,0,1,1,1,1,1,0 0,1,1,2,0,4,2,0,1,1,1,0,1,0 2,1,3,2,0,3,2,0,1,1,1,1,1,0 1,2,5,2,0,4,2,0,1,1,1,1,1,1 1,5,1,2,3,5,5,4,0,1,1,0,1,0 2,0,3,2,3,3,3,0,1,1,1,2,1,0 0,0,1,2,2,1,1,0,1,1,1,0,1,0 1,1,0,3,1,5,5,0,1,1,1,1,1,0 2,1,5,2,0,1,0,0,0,1,1,2,1,0 0,0,3,2,2,3,1,0,0,1,1,1,1,0 0,0,3,2,1,6,5,0,1,1,1,0,1,0 2,0,3,2,0,10,2,0,1,1,1,1,1,0 1,0,3,2,1,2,3,0,0,1,1,0,1,0 1,0,3,2,0,10,2,0,1,1,1,0,1,0 2,1,3,2,0,2,2,0,1,1,1,0,1,1 1,0,0,3,1,8,5,0,0,1,1,0,1,0 1,2,3,2,0,3,2,0,1,1,1,0,1,0 0,5,3,2,1,8,5,0,0,1,1,2,1,0 0,0,6,2,0,1,2,4,1,1,1,0,1,0 1,0,12,1,1,1,5,0,0,1,1,0,1,0 1,0,11,0,0,2,2,1,1,1,1,1,1,0 0,0,1,2,2,3,5,0,0,1,1,0,1,0 1,0,1,2,5,1,5,0,1,1,1,0,1,1 1,0,1,2,0,5,2,0,1,1,1,0,1,0 1,0,0,3,1,5,5,0,0,1,1,0,1,0 3,0,3,2,2,8,3,0,0,1,1,0,1,1 0,0,6,2,0,8,2,0,1,1,1,0,1,0 0,0,3,2,2,6,3,0,1,1,1,0,1,0 0,0,7,1,2,3,1,0,1,1,1,2,1,0 1,0,1,2,0,1,2,0,1,1,1,1,1,1 2,1,12,1,0,1,2,0,1,1,1,2,1,0 0,5,10,3,2,5,5,0,1,1,1,0,1,0 1,0,1,2,1,1,3,0,1,1,1,0,1,0 0,0,3,2,2,4,1,0,1,1,1,0,1,0 1,0,1,2,0,3,2,0,1,1,1,1,1,0 1,0,1,2,1,0,3,0,0,1,1,2,1,0 1,1,3,2,0,9,2,0,1,1,1,1,1,0 1,0,3,2,3,6,3,4,1,1,1,1,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 1,0,3,2,0,3,0,4,0,1,1,2,1,1 1,1,3,2,0,3,2,0,1,1,1,0,1,0 0,0,1,2,2,6,1,0,1,1,1,0,1,0 1,0,3,2,0,2,2,0,1,1,1,0,1,0 0,0,1,2,2,7,5,0,0,1,1,0,1,0 2,1,6,2,0,9,2,0,1,1,1,1,1,0 1,0,0,3,0,0,0,0,0,1,1,2,1,1 1,0,3,2,0,3,2,0,1,1,1,1,1,0 0,0,6,2,1,8,5,0,0,1,1,2,1,0 0,0,3,2,2,2,1,4,1,1,1,0,1,0 0,5,1,2,2,6,1,0,1,1,1,2,1,0 1,1,1,2,0,5,2,0,1,1,1,1,1,0 0,0,3,2,2,8,1,0,0,1,1,2,1,0 1,1,3,2,1,1,1,0,1,1,1,0,1,0 1,1,3,2,0,1,2,0,1,1,1,2,1,0 0,0,3,2,2,8,1,0,1,1,1,0,1,0 0,0,3,2,2,10,3,0,1,1,1,0,1,0 1,1,6,2,0,2,2,0,1,1,1,1,1,0 0,0,1,2,0,7,2,4,1,1,1,2,1,0 0,5,3,2,2,2,5,4,0,1,1,0,1,0 0,0,0,3,2,10,1,0,1,1,1,2,1,0 2,0,10,3,0,4,2,0,1,1,1,1,1,1 0,0,14,0,0,2,2,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,1 1,0,6,2,0,7,2,4,1,1,1,0,1,0 2,1,3,2,4,9,5,0,1,1,1,2,1,0 1,0,3,2,0,4,2,0,1,1,1,1,1,1 1,1,3,2,0,2,0,0,0,1,1,1,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,1 0,0,10,3,0,5,2,0,1,1,1,1,1,0 1,0,3,2,1,1,3,0,1,1,1,1,1,0 2,1,15,0,1,2,5,0,0,1,1,0,1,0 0,1,3,2,0,1,2,0,1,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,1,2,2,8,1,0,0,1,1,0,1,0 1,0,3,2,1,1,3,0,1,1,1,0,1,0 1,0,3,2,0,6,2,0,1,1,1,0,1,1 1,1,3,2,0,3,2,0,1,1,1,0,1,0 1,0,3,2,0,4,2,0,1,1,1,0,1,1 0,0,0,3,2,5,1,0,0,1,1,2,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 2,2,2,1,1,7,5,4,1,1,1,0,1,0 0,4,0,3,2,5,3,1,0,1,1,0,1,0 2,0,3,2,0,1,2,0,1,1,1,0,1,1 2,0,12,1,0,10,2,0,1,1,1,1,1,1 0,0,3,2,3,7,3,0,1,1,1,1,1,0 0,0,5,2,0,4,2,0,1,1,1,0,1,1 2,0,6,2,0,5,2,0,1,1,1,0,1,1 2,2,7,1,0,4,2,4,1,1,1,0,1,0 1,0,3,2,5,1,5,0,1,1,1,0,1,0 0,0,0,3,2,2,3,0,0,1,1,2,1,0 1,0,6,2,2,8,1,0,0,1,1,0,1,0 1,0,11,0,4,1,3,0,1,1,1,0,1,0 1,0,0,3,3,5,5,4,0,1,1,2,1,0 1,3,3,2,1,8,3,0,1,1,1,0,1,0 0,0,6,2,2,2,3,0,1,1,1,2,1,0 1,3,5,2,0,5,2,0,1,1,1,1,1,1 0,0,14,0,0,6,4,0,1,1,1,0,1,0 1,0,3,2,4,8,3,0,0,1,1,2,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,1 1,0,3,2,1,7,3,0,0,1,1,1,1,0 2,1,3,2,0,9,2,0,1,1,1,2,1,0 0,0,5,2,0,6,2,0,1,1,1,1,1,0 0,0,3,2,0,1,2,0,1,1,1,1,1,0 0,0,8,0,2,7,3,0,1,1,1,1,1,0 0,0,5,2,0,3,2,0,1,1,1,1,1,0 0,0,0,3,0,5,0,0,0,1,1,1,1,1 0,0,3,2,3,5,3,0,1,1,1,1,1,0 0,0,12,1,0,10,2,0,1,1,1,0,1,0 1,0,1,2,1,2,5,0,0,1,1,1,1,0 1,4,3,2,0,12,2,0,1,1,1,1,1,1 2,0,0,3,0,4,2,0,1,1,1,0,1,1 2,0,10,3,2,5,3,0,1,1,1,0,1,0 2,0,0,3,1,4,5,0,0,1,1,0,1,1 0,0,3,2,2,1,1,0,1,1,1,1,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 0,0,5,2,2,4,1,0,0,1,1,1,1,0 0,0,1,2,2,3,5,0,1,1,1,1,1,0 1,0,5,2,0,1,2,0,1,1,1,0,1,1 1,0,10,3,0,4,2,4,1,1,1,1,1,1 0,0,12,1,0,1,2,0,1,1,1,0,1,0 0,0,12,1,2,7,3,0,1,1,1,0,1,0 1,0,3,2,0,5,2,0,1,1,1,1,1,0 0,0,0,3,0,5,2,4,1,1,1,2,1,0 2,0,3,2,0,2,2,1,1,1,1,2,1,0 1,1,8,0,0,4,2,0,1,1,1,1,1,1 1,0,3,2,3,7,3,0,1,1,1,1,1,0 1,2,0,3,0,5,2,0,1,1,1,1,1,1 0,0,0,3,0,5,2,0,1,1,1,0,1,0 1,0,1,2,0,3,2,0,1,1,1,0,1,1 0,0,0,3,2,4,3,0,1,1,1,1,1,0 0,0,3,2,2,6,3,0,1,1,1,1,1,0 0,0,0,3,0,8,2,0,1,1,1,1,1,0 1,0,1,2,2,7,1,0,1,1,1,0,1,0 0,0,3,2,2,2,3,0,0,1,1,0,1,0 0,0,1,2,2,3,4,0,0,1,1,0,1,0 0,0,1,2,6,4,0,0,0,1,1,0,1,1 0,1,3,2,2,2,5,0,0,1,1,1,1,0 0,0,3,2,1,1,5,0,0,1,1,2,1,0 3,0,8,0,4,7,3,0,0,1,1,2,1,0 2,0,0,3,0,5,2,0,1,1,1,2,1,0 1,4,3,2,0,1,2,0,1,1,1,0,1,0 0,2,1,2,2,10,5,0,1,1,1,0,1,0 0,0,1,2,0,3,2,0,1,1,1,1,1,1 0,4,0,3,0,12,2,0,1,1,1,0,1,0 1,0,0,3,0,3,2,0,1,1,1,1,1,1 1,0,1,2,0,4,2,0,1,1,1,1,1,1 2,0,1,2,0,3,2,0,1,1,1,2,1,1 0,0,1,2,2,2,3,0,0,1,1,2,1,0 1,2,0,3,0,4,2,0,1,1,1,1,1,1 0,0,1,2,2,8,1,0,1,1,1,1,1,0 0,0,1,2,2,7,1,0,1,1,1,0,1,0 0,0,5,2,2,2,4,0,1,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,1 0,0,1,2,0,10,2,0,1,1,1,0,1,0 0,0,9,1,2,2,1,0,0,1,1,2,1,0 0,0,5,2,2,1,1,0,1,1,1,0,1,0 1,2,3,2,0,3,2,0,1,1,1,1,1,1 1,0,12,1,0,3,2,0,1,1,1,0,1,0 0,0,3,2,2,8,1,0,1,1,1,0,1,0 0,0,3,2,1,8,3,4,0,1,1,0,1,0 1,0,2,1,1,7,5,4,0,1,1,0,1,0 2,2,0,3,0,4,2,0,1,1,1,1,1,0 0,0,3,2,1,7,3,0,1,1,1,0,1,0 2,1,4,3,1,5,3,0,1,1,1,1,1,1 1,0,3,2,1,8,5,0,0,1,1,0,1,0 1,0,0,3,0,8,2,0,1,1,1,1,1,1 2,1,12,1,4,1,4,0,1,1,1,2,1,0 0,0,3,2,0,10,2,0,1,1,1,0,1,0 1,1,3,2,2,1,3,0,1,1,1,1,1,0 0,0,3,2,1,2,5,4,0,1,1,2,1,0 0,0,3,2,2,2,3,0,0,1,1,2,1,0 0,5,1,2,0,12,2,0,1,1,1,0,1,0 0,0,3,2,2,3,4,0,1,1,1,0,1,0 1,0,3,2,2,7,3,0,1,1,1,1,1,1 1,0,3,2,0,1,2,0,1,1,1,0,1,0 3,0,5,2,2,4,3,0,1,1,1,1,1,1 0,0,6,2,2,4,3,0,0,1,1,0,1,0 1,0,3,2,0,4,2,0,1,1,1,0,1,0 0,0,0,3,2,5,3,0,0,1,1,2,1,0 1,0,1,2,1,7,3,4,0,1,1,0,1,0 3,1,4,3,0,5,2,0,1,1,1,1,1,1 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,4,1,2,0,1,2,4,1,1,1,0,1,1 0,0,3,2,2,1,1,0,1,1,1,2,1,0 2,1,5,2,0,4,2,1,1,1,1,0,1,0 0,0,10,3,0,5,2,4,1,1,1,2,1,0 1,0,1,2,0,1,2,0,1,1,1,1,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,1 1,0,0,3,0,4,2,0,1,1,1,0,1,1 0,0,1,2,2,3,1,0,0,1,1,0,1,0 1,2,0,3,0,2,2,4,1,1,1,1,1,1 1,0,10,3,2,2,5,0,0,1,1,2,1,0 0,0,6,2,2,6,4,0,1,1,1,2,1,0 0,1,0,3,2,4,1,0,1,1,1,0,1,0 0,1,1,2,1,9,5,0,1,1,1,1,1,0 1,0,2,1,3,2,5,4,1,1,1,2,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,1 2,1,15,0,0,1,2,0,1,1,1,0,1,0 0,0,7,1,0,1,2,3,1,1,1,0,1,0 0,5,1,2,2,2,3,0,1,1,1,0,1,0 0,0,1,2,2,7,1,4,1,1,1,0,1,0 1,0,1,2,2,7,3,4,0,1,1,0,1,0 1,4,1,2,0,2,2,0,1,1,1,0,1,0 0,0,12,1,2,2,5,0,0,1,1,2,1,0 2,5,1,2,0,2,2,4,1,1,1,0,1,0 0,0,1,2,0,9,2,0,1,1,1,2,1,0 1,0,0,3,3,4,3,0,1,1,1,1,1,1 1,1,0,3,1,1,3,0,1,1,1,0,1,0 0,0,1,2,2,4,1,0,1,1,1,0,1,0 1,0,6,2,1,1,3,0,1,1,1,0,1,0 0,4,1,2,0,1,2,0,1,1,1,0,1,1 2,1,1,2,0,3,2,0,1,1,1,1,1,0 2,0,0,3,0,4,2,0,1,1,1,0,1,1 0,0,3,2,0,6,2,0,1,1,1,1,1,0 0,0,1,2,2,6,1,0,1,1,1,2,1,0 0,0,3,2,0,8,2,0,1,1,1,0,1,0 1,0,4,3,0,5,2,0,1,1,1,0,1,1 1,0,10,3,2,5,3,1,0,1,1,0,1,0 0,0,2,1,2,3,1,0,0,1,1,2,1,0 1,1,1,2,2,1,3,0,1,1,1,0,1,0 1,5,3,2,0,10,2,0,1,1,1,0,1,0 1,0,3,2,2,4,3,0,1,1,1,0,1,0 0,0,1,2,0,3,0,0,0,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,1,0,3,0,3,2,0,1,1,1,0,1,1 0,0,3,2,0,1,2,0,1,1,1,1,1,1 1,4,3,2,0,10,2,0,1,1,1,1,1,0 2,0,1,2,0,7,2,1,1,1,1,0,1,1 1,5,6,2,3,12,5,0,1,1,1,0,1,0 1,0,3,2,0,4,2,0,1,1,1,1,1,0 0,0,2,1,2,4,1,0,0,1,1,2,1,0 1,1,1,2,0,1,2,0,1,1,1,1,1,0 1,0,0,3,2,5,3,0,0,1,1,2,1,0 0,0,10,3,0,5,2,0,1,1,1,1,1,1 0,0,3,2,5,8,3,4,1,1,1,0,1,0 1,0,3,2,2,5,3,0,0,1,1,0,1,0 1,2,1,2,0,3,0,0,0,1,1,2,1,0 1,0,0,3,2,4,3,0,1,1,1,1,1,0 1,0,1,2,0,0,2,0,1,1,1,0,1,1 0,0,3,2,2,1,5,0,1,1,1,0,1,0 1,0,15,0,0,9,2,0,1,1,1,0,1,0 1,4,3,2,0,10,2,0,1,1,1,0,1,0 2,1,3,2,0,1,2,0,1,1,1,1,1,0 0,0,3,2,3,4,5,0,0,1,1,0,1,0 2,0,3,2,0,3,0,0,0,1,1,0,1,1 1,3,0,3,2,5,1,0,1,1,1,0,1,0 0,0,0,3,2,4,3,0,1,1,1,1,1,0 0,0,1,2,2,8,1,0,1,1,1,0,1,1 0,0,0,3,2,3,3,0,1,1,1,0,1,1 1,0,1,2,1,0,5,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,0 1,5,0,3,3,5,5,0,0,1,1,0,1,0 1,0,3,2,3,2,5,0,0,1,1,1,1,0 1,0,1,2,0,4,2,0,1,1,1,1,1,1 1,0,3,2,0,1,2,0,1,1,1,1,1,0 0,0,5,2,2,2,5,2,0,1,1,0,1,0 0,4,3,2,0,12,2,0,1,1,1,2,1,0 1,0,3,2,2,2,5,0,0,1,1,0,1,0 0,0,3,2,0,4,2,0,1,1,1,0,1,0 1,0,10,3,1,4,3,0,1,1,1,1,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 2,0,4,3,0,4,2,1,1,1,1,0,1,0 0,4,1,2,0,4,2,2,1,1,1,0,1,0 1,2,1,2,0,3,2,0,1,1,1,1,1,1 0,0,0,3,0,4,0,0,0,1,1,2,1,1 1,0,1,2,0,4,2,0,1,1,1,1,1,1 0,0,0,3,5,3,3,0,0,1,1,1,1,0 2,0,3,2,0,10,2,0,1,1,1,1,1,0 0,0,3,2,2,1,1,0,1,1,1,1,1,0 1,3,3,2,0,8,2,0,1,1,1,0,1,1 0,5,1,2,2,12,1,0,1,1,1,0,1,0 2,4,10,3,0,4,2,0,1,1,1,1,1,1 1,4,10,3,2,5,3,0,0,1,1,1,1,0 1,0,1,2,0,1,2,0,1,1,1,1,1,0 2,0,3,2,4,2,5,0,0,1,1,1,1,0 1,1,1,2,0,2,2,0,1,1,1,1,1,0 0,0,0,3,0,3,2,0,1,1,1,0,1,1 1,1,3,2,0,4,0,0,0,1,1,2,1,0 1,0,12,1,0,9,2,0,1,1,1,0,1,0 0,0,3,2,2,2,3,0,0,1,1,2,1,0 1,0,10,3,1,5,3,0,0,1,1,1,1,1 1,3,0,3,0,5,2,0,1,1,1,0,1,1 1,1,0,3,0,4,2,0,1,1,1,0,1,0 0,1,3,2,0,1,2,0,1,1,1,2,1,0 0,0,1,2,2,2,3,0,1,1,1,0,1,0 2,0,1,2,0,5,2,0,1,1,1,0,1,1 0,1,6,2,0,9,2,0,1,1,1,1,1,0 0,0,1,2,2,2,5,4,0,1,1,2,1,0 0,0,1,2,5,8,4,0,0,1,1,0,1,0 0,0,12,1,2,10,1,0,1,1,1,0,1,0 3,1,3,2,4,4,3,0,1,1,1,2,1,0 0,0,0,3,2,0,1,0,0,1,1,1,1,0 0,0,3,2,2,8,1,0,0,1,1,0,1,0 0,0,1,2,0,8,2,0,1,1,1,0,1,1 0,0,3,2,2,1,1,0,1,1,1,0,1,0 0,0,1,2,0,8,0,0,0,1,1,0,1,1 0,0,1,2,2,5,1,0,1,1,1,0,1,0 3,0,3,2,4,2,3,4,1,1,1,2,1,0 1,0,3,2,0,3,0,0,0,1,1,2,1,0 0,1,10,3,2,5,3,0,1,1,1,0,1,1 1,0,0,3,0,0,2,4,1,1,1,0,1,1 1,0,0,3,0,3,2,0,1,1,1,1,1,1 1,4,4,3,0,5,2,1,1,1,1,0,1,1 0,0,12,1,2,8,1,0,0,1,1,2,1,0 2,0,9,1,1,9,3,0,1,1,1,0,1,0 3,0,3,2,4,12,3,0,0,1,1,2,1,0 0,0,1,2,2,2,3,0,0,1,1,2,1,0 0,0,3,2,2,1,3,0,1,1,1,1,1,0 1,0,8,0,3,2,4,0,1,1,1,0,1,0 1,0,3,2,2,1,1,0,0,1,1,0,1,0 1,2,4,3,0,5,2,0,1,1,1,0,1,1 0,5,5,2,2,8,1,0,0,1,1,0,1,0 0,2,1,2,2,3,4,0,1,1,1,0,1,0 2,1,0,3,0,3,2,0,1,1,1,0,1,1 1,0,1,2,0,5,2,0,1,1,1,1,1,1 2,1,3,2,0,3,2,0,1,1,1,1,1,0 0,0,5,2,1,5,1,0,0,1,1,0,1,0 0,1,1,2,2,9,1,0,1,1,1,1,1,0 1,0,7,1,1,1,5,0,1,1,1,0,1,0 0,0,0,3,2,0,3,4,0,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,0,9,2,0,1,1,1,0,1,0 2,0,3,2,4,2,5,4,0,1,1,2,1,0 3,0,13,3,4,4,5,0,1,1,1,0,1,0 2,2,1,2,0,4,0,0,0,1,1,2,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 2,0,3,2,0,6,2,0,1,1,1,0,1,0 0,0,2,1,0,10,2,0,1,1,1,0,1,0 2,5,3,2,0,10,2,0,1,1,1,0,1,0 1,0,3,2,0,3,2,0,1,1,1,0,1,1 2,0,3,2,2,3,1,0,0,1,1,0,1,0 0,2,3,2,1,3,1,0,1,1,1,0,1,0 0,0,3,2,0,10,2,0,1,1,1,0,1,0 2,5,3,2,1,8,3,0,0,1,1,0,1,0 0,5,0,3,1,0,3,0,0,1,1,0,1,0 1,4,2,1,0,2,2,0,1,1,1,1,1,0 1,0,8,0,1,2,5,0,0,1,1,0,1,0 0,2,3,2,0,3,2,0,1,1,1,1,1,0 0,0,13,3,0,5,2,0,1,1,1,1,1,0 1,0,1,2,2,4,3,4,0,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,1 0,0,5,2,5,1,3,0,1,1,1,1,1,0 2,0,12,1,2,2,1,0,0,1,1,2,1,0 1,1,3,2,0,10,2,0,1,1,1,0,1,1 0,0,12,1,2,1,1,0,1,1,1,0,1,0 0,0,7,1,2,3,3,0,0,1,1,2,1,0 1,3,10,3,0,5,2,0,1,1,1,0,1,1 0,0,10,3,2,5,3,0,0,1,1,0,1,0 1,0,0,3,0,5,2,0,1,1,1,0,1,1 0,0,3,2,0,1,2,0,1,1,1,0,1,0 1,2,0,3,0,4,0,0,0,1,1,1,1,1 0,0,10,3,0,5,2,0,1,1,1,0,1,1 0,0,4,3,2,5,1,0,1,1,1,0,1,0 0,0,3,2,2,9,3,0,1,1,1,2,1,0 1,2,4,3,0,5,2,0,1,1,1,1,1,1 1,1,10,3,2,5,1,0,1,1,1,1,1,0 0,4,1,2,1,2,5,0,0,1,1,2,1,0 0,0,6,2,2,2,3,4,0,1,1,1,1,0 1,1,10,3,0,5,2,0,1,1,1,1,1,0 1,0,5,2,0,3,2,0,1,1,1,1,1,1 1,0,0,3,0,8,0,0,0,1,1,0,1,1 1,0,12,1,1,4,5,0,0,1,1,0,1,0 1,0,3,2,2,1,3,4,0,1,1,1,1,0 2,0,3,2,2,8,5,0,0,1,1,0,1,0 0,0,1,2,2,9,1,0,1,1,1,2,1,0 1,4,3,2,0,1,2,0,1,1,1,0,1,0 2,4,3,2,0,6,2,0,1,1,1,1,1,1 0,0,3,2,2,6,1,0,0,1,1,2,1,0 1,0,7,1,0,10,2,0,1,1,1,0,1,0 0,0,3,2,0,4,1,0,1,1,1,0,1,0 1,0,11,0,1,1,3,0,1,1,1,0,1,0 1,0,1,2,0,2,4,0,1,1,1,2,1,0 0,5,0,3,2,5,3,0,1,1,1,0,1,0 0,5,0,3,2,0,1,1,1,1,1,0,1,0 1,3,1,2,0,8,2,0,1,1,1,0,1,1 0,0,4,3,0,5,2,0,1,1,1,0,1,1 3,0,10,3,0,2,2,0,1,1,1,2,1,0 2,2,3,2,0,4,2,0,1,1,1,1,1,1 0,0,3,2,5,8,1,0,0,1,1,0,1,0 1,0,6,2,0,8,2,0,1,1,1,0,1,1 0,0,3,2,3,2,3,0,1,1,1,0,1,0 0,0,3,2,3,1,3,0,1,1,1,1,1,0 2,0,3,2,5,1,4,0,1,1,1,0,1,0 1,4,10,3,0,5,0,0,0,1,1,1,1,1 1,0,3,2,0,10,2,0,1,1,1,1,1,1 1,0,1,2,4,2,3,0,0,1,1,0,1,0 1,2,1,2,0,4,2,0,1,1,1,0,1,0 0,0,3,2,2,2,1,0,1,1,1,2,1,0 1,0,0,3,1,5,5,0,0,1,1,1,1,1 1,5,13,3,0,5,2,0,1,1,1,1,1,1 0,0,3,2,0,6,2,0,1,1,1,0,1,0 1,0,1,2,0,3,2,0,1,1,1,1,1,1 0,0,1,2,2,4,3,0,1,1,1,2,1,0 0,0,10,3,0,5,2,0,1,1,1,1,1,0 1,4,1,2,0,12,2,0,1,1,1,0,1,0 0,0,5,2,0,10,1,0,1,1,1,0,1,0 3,0,0,3,0,8,2,0,1,1,1,2,1,1 0,0,1,2,1,8,5,0,0,1,1,0,1,0 1,0,3,2,0,4,2,0,1,1,1,1,1,0 0,2,2,1,2,9,1,0,1,1,1,1,1,0 2,0,3,2,2,2,3,0,1,1,1,2,1,0 0,5,0,3,2,5,3,0,1,1,1,2,1,0 1,0,8,0,1,3,5,0,0,1,1,1,1,0 0,0,0,3,2,3,4,0,1,1,1,1,1,0 1,0,3,2,1,4,5,0,0,1,1,0,1,0 0,0,2,1,2,6,1,0,1,1,1,2,1,0 1,0,3,2,1,1,5,0,1,1,1,0,1,0 1,0,1,2,0,4,2,2,1,1,1,0,1,1 0,0,3,2,0,6,2,0,1,1,1,0,1,0 1,0,3,2,1,7,5,0,0,1,1,2,1,0 1,0,1,2,0,7,2,0,1,1,1,0,1,0 3,0,3,2,4,2,5,0,0,1,1,2,1,0 0,0,5,2,2,2,3,0,0,1,1,2,1,0 0,0,3,2,2,3,3,2,1,1,1,1,1,0 0,4,0,3,2,5,1,0,0,1,1,0,1,0 1,0,14,0,0,2,2,4,1,1,1,0,1,0 0,0,0,3,2,8,1,1,0,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,0 1,1,7,1,0,10,2,4,1,1,1,0,1,0 0,0,0,3,0,5,2,0,1,1,1,1,1,1 2,2,0,3,0,4,2,0,1,1,1,2,1,0 0,0,8,0,2,9,3,0,1,1,1,2,1,0 1,0,3,2,1,12,3,0,1,1,1,0,1,0 0,0,6,2,2,1,3,3,1,1,1,0,1,0 1,0,3,2,0,4,2,0,1,1,1,1,1,1 0,0,2,1,2,3,1,0,0,1,1,2,1,0 1,0,0,3,1,4,3,0,1,1,1,1,1,0 1,0,3,2,0,6,2,0,1,1,1,0,1,0 2,4,10,3,4,5,5,4,0,1,1,0,1,0 0,0,3,2,0,4,2,0,1,1,1,0,1,0 0,0,3,2,2,8,3,0,0,1,1,2,1,0 0,0,3,2,2,8,4,0,1,1,1,0,1,0 1,0,3,2,1,8,3,0,0,1,1,1,1,0 1,4,1,2,1,8,5,0,0,1,1,2,1,0 1,0,0,3,2,6,1,0,1,1,1,0,1,0 0,0,1,2,2,7,1,0,1,1,1,2,1,0 1,0,3,2,0,2,0,0,0,1,1,2,1,0 0,0,1,2,2,1,1,0,1,1,1,2,1,0 1,0,1,2,1,1,3,0,1,1,1,0,1,0 0,0,12,1,2,9,1,0,1,1,1,2,1,0 0,1,0,3,2,3,3,0,1,1,1,1,1,1 2,0,10,3,0,4,2,0,1,1,1,1,1,1 0,0,7,1,0,7,0,3,0,1,1,0,1,0 0,0,3,2,0,8,2,0,1,1,1,0,1,0 0,0,1,2,2,0,1,0,1,1,1,2,1,0 1,0,0,3,1,6,3,0,1,1,1,0,1,0 0,4,2,1,2,8,1,2,0,1,1,2,1,0 0,0,3,2,0,2,2,0,1,1,1,0,1,0 1,1,13,3,0,5,2,0,1,1,1,1,1,1 3,1,14,0,0,9,2,0,1,1,1,0,1,0 1,5,3,2,0,12,2,0,1,1,1,0,1,1 0,0,5,2,2,5,3,0,0,1,1,1,1,0 0,0,1,2,2,3,1,0,1,1,1,2,1,0 0,0,1,2,2,1,5,3,1,1,1,1,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,5,2,2,9,3,0,1,1,1,0,1,0 2,0,3,2,0,5,2,4,1,1,1,1,1,0 2,1,6,2,0,2,0,0,0,1,1,1,1,0 1,4,1,2,0,12,2,0,1,1,1,2,1,0 1,0,5,2,0,3,2,0,1,1,1,1,1,1 0,0,3,2,0,7,2,0,1,1,1,1,1,0 2,1,1,2,0,4,2,0,1,1,1,1,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,0 1,5,0,3,0,5,0,0,0,1,1,2,1,1 1,0,10,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,0,2,2,0,1,1,1,1,1,0 2,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,6,2,2,4,5,4,0,1,1,0,1,0 0,0,3,2,2,2,4,4,0,1,1,0,1,0 0,0,15,0,2,2,5,0,1,1,1,2,1,0 1,4,3,2,3,2,3,4,0,1,1,0,1,0 1,1,3,2,0,5,2,0,1,1,1,1,1,0 0,4,3,2,1,7,1,0,1,1,1,1,1,0 1,0,1,2,1,4,5,0,0,1,1,2,1,0 2,0,6,2,0,0,2,0,1,1,1,0,1,1 1,0,3,2,1,8,3,0,0,1,1,0,1,0 0,4,1,2,2,2,1,0,1,1,1,2,1,0 0,0,14,0,0,6,3,0,1,1,1,0,1,0 1,0,3,2,1,7,5,0,1,1,1,0,1,0 1,4,6,2,0,8,0,0,0,1,1,0,1,1 0,0,3,2,0,2,2,0,1,1,1,0,1,1 0,0,1,2,0,8,0,0,0,1,1,1,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,1,2,0,1,2,0,1,1,1,2,1,0 0,3,0,3,1,5,3,0,0,1,1,1,1,1 1,0,3,2,3,1,3,0,1,1,1,0,1,0 2,0,10,3,1,8,5,0,1,1,1,1,1,0 1,0,13,3,0,4,2,0,1,1,1,0,1,0 0,0,3,2,2,8,3,0,0,1,1,0,1,0 1,4,5,2,1,8,5,0,0,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,2,1,0 1,0,3,2,0,6,2,1,1,1,1,0,1,1 1,3,6,2,0,8,2,0,1,1,1,2,1,1 0,0,0,3,2,4,3,0,0,1,1,0,1,0 2,0,3,2,1,2,5,0,0,1,1,0,1,0 1,3,0,3,0,4,2,0,1,1,1,0,1,0 1,0,10,3,0,8,2,4,1,1,1,0,1,0 0,0,1,2,0,7,2,0,1,1,1,0,1,1 0,1,0,3,2,0,1,0,1,1,1,0,1,0 0,2,0,3,2,4,3,0,1,1,1,0,1,0 0,0,1,2,2,6,1,0,1,1,1,2,1,0 2,0,14,0,0,7,2,4,1,1,1,0,1,0 0,0,2,1,2,4,1,0,1,1,1,0,1,0 0,0,1,2,2,8,3,0,0,1,1,0,1,0 0,0,15,0,2,9,3,0,1,1,1,1,1,0 0,0,3,2,0,7,2,0,1,1,1,1,1,0 0,0,3,2,2,1,3,0,1,1,1,2,1,0 0,0,6,2,1,1,3,0,1,1,1,1,1,0 0,0,1,2,2,6,1,0,1,1,1,1,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 1,4,5,2,1,12,3,0,1,1,1,0,1,0 0,0,3,2,2,6,5,0,1,1,1,1,1,0 0,0,10,3,2,5,1,0,1,1,1,1,1,0 1,5,0,3,1,5,3,3,0,1,1,0,1,0 0,0,1,2,2,8,3,0,1,1,1,1,1,0 2,4,3,2,4,8,3,0,0,1,1,2,1,0 0,0,3,2,2,3,3,0,0,1,1,1,1,0 0,0,3,2,0,7,2,0,1,1,1,1,1,0 1,5,3,2,1,8,3,0,0,1,1,2,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,0,3,5,3,3,0,0,1,1,2,1,0 2,1,3,2,0,5,2,0,1,1,1,2,1,0 0,0,6,2,1,0,5,0,0,1,1,0,1,0 0,0,3,2,0,8,0,0,0,1,1,0,1,0 1,3,1,2,0,8,2,0,1,1,1,0,1,1 1,0,1,2,1,7,3,0,0,1,1,2,1,0 0,1,1,2,3,8,5,0,0,1,1,1,1,0 0,0,14,0,2,9,4,0,1,1,1,2,1,0 0,0,7,1,2,8,5,0,0,1,1,0,1,0 2,0,2,1,0,10,2,0,1,1,1,2,1,0 1,0,6,2,0,3,2,0,1,1,1,1,1,1 2,0,10,3,0,4,2,0,1,1,1,1,1,1 2,2,0,3,1,4,3,0,1,1,1,1,1,1 1,4,10,3,0,5,2,0,1,1,1,1,1,0 1,0,1,2,2,8,3,0,0,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,1 0,2,0,3,0,3,2,0,1,1,1,1,1,0 0,0,3,2,2,1,5,0,1,1,1,0,1,0 1,0,1,2,0,4,0,0,0,1,1,0,1,1 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,3,2,1,0,3,0,0,1,1,0,1,0 1,4,3,2,3,2,3,0,1,1,1,0,1,0 0,0,1,2,3,0,5,4,0,1,1,0,1,0 1,0,3,2,1,7,3,0,1,1,1,0,1,0 0,0,3,2,0,4,0,0,0,1,1,1,1,0 0,0,1,2,2,3,1,0,1,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,1 0,0,3,2,0,1,2,0,1,1,1,0,1,0 1,4,0,3,0,5,0,0,0,1,1,0,1,1 1,0,3,2,1,3,5,0,0,1,1,1,1,0 0,4,10,3,2,5,3,0,0,1,1,0,1,0 0,1,3,2,0,7,1,0,1,1,1,0,1,0 0,0,10,3,2,4,3,0,1,1,1,1,1,0 1,0,3,2,1,4,5,0,0,1,1,0,1,0 2,0,8,0,0,9,2,0,1,1,1,0,1,0 0,0,1,2,3,5,5,0,0,1,1,1,1,1 0,3,1,2,2,7,1,0,1,1,1,0,1,0 0,0,3,2,0,6,2,0,1,1,1,1,1,0 1,0,8,0,0,1,2,0,1,1,1,1,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 1,4,5,2,1,2,5,0,1,1,1,1,1,1 1,0,3,2,0,1,2,0,1,1,1,0,1,1 0,0,3,2,0,3,2,0,1,1,1,0,1,1 0,5,13,3,2,5,3,0,1,1,1,1,1,0 1,0,3,2,2,6,1,0,1,1,1,0,1,0 1,1,0,3,1,2,3,0,0,1,1,0,1,0 0,0,1,2,2,3,3,0,0,1,1,1,1,0 0,1,10,3,1,5,3,0,1,1,1,1,1,0 0,0,2,1,2,6,1,0,1,1,1,2,1,0 0,0,12,1,2,3,1,0,0,1,1,2,1,0 1,0,3,2,0,2,2,0,1,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,1 3,0,3,2,4,8,3,0,0,1,1,2,1,0 2,1,3,2,0,9,2,0,1,1,1,1,1,0 0,0,6,2,2,1,1,0,1,1,1,0,1,0 1,1,3,2,1,2,3,0,0,1,1,1,1,0 1,0,3,2,0,8,0,0,0,1,1,0,1,1 1,4,4,3,2,5,3,0,1,1,1,1,1,0 1,1,4,3,0,5,2,0,1,1,1,1,1,1 0,0,0,3,0,5,0,0,0,1,1,2,1,0 0,0,3,2,2,6,3,4,1,1,1,2,1,0 1,0,4,3,0,5,2,0,1,1,1,1,1,1 0,0,2,1,2,2,1,0,0,1,1,2,1,0 1,0,3,2,0,10,2,0,1,1,1,0,1,0 0,0,3,2,2,7,1,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 1,0,3,2,0,1,2,0,1,1,1,0,1,1 1,0,3,2,1,4,5,0,0,1,1,2,1,0 0,0,10,3,2,5,1,0,0,1,1,0,1,0 2,0,3,2,0,10,2,0,1,1,1,0,1,1 2,0,3,2,0,10,2,0,1,1,1,1,1,0 0,0,1,2,2,1,3,0,1,1,1,0,1,0 1,1,1,2,0,7,2,0,1,1,1,2,1,0 0,4,0,3,2,5,3,0,0,1,1,1,1,0 1,0,3,2,5,1,5,4,1,1,1,0,1,0 0,0,3,2,2,2,5,0,0,1,1,2,1,0 0,4,3,2,2,10,1,4,0,1,1,2,1,0 1,0,3,2,0,10,2,4,1,1,1,1,1,1 1,0,6,2,0,5,2,0,1,1,1,0,1,0 0,1,1,2,2,8,1,0,0,1,1,0,1,0 0,0,2,1,2,2,1,0,1,1,1,2,1,0 0,5,1,2,2,1,1,0,1,1,1,2,1,0 1,0,3,2,0,7,2,0,1,1,1,1,1,1 0,0,3,2,1,1,3,0,1,1,1,0,1,0 1,0,10,3,0,5,2,0,1,1,1,1,1,1 0,0,3,2,0,8,2,2,1,1,1,0,1,0 0,0,3,2,2,7,3,0,0,1,1,0,1,0 0,0,3,2,2,8,1,0,0,1,1,2,1,0 0,0,3,2,2,6,3,0,1,1,1,0,1,0 0,0,3,2,2,6,3,4,1,1,1,0,1,0 1,0,10,3,1,5,5,3,1,1,1,2,1,1 0,0,1,2,0,3,2,0,1,1,1,1,1,0 0,0,3,2,2,4,3,0,1,1,1,2,1,0 1,0,5,2,0,0,2,0,1,1,1,1,1,1 1,1,0,3,0,4,2,0,1,1,1,1,1,0 0,0,1,2,2,8,3,0,1,1,1,1,1,0 1,0,3,2,5,8,5,0,0,1,1,0,1,0 1,0,1,2,0,10,2,0,1,1,1,0,1,1 0,0,3,2,0,4,0,0,0,1,1,2,1,0 0,0,2,1,2,2,1,0,1,1,1,0,1,0 1,0,1,2,0,3,2,0,1,1,1,1,1,1 1,4,1,2,4,2,5,0,0,1,1,0,1,0 1,0,10,3,0,5,2,0,1,1,1,0,1,0 2,4,10,3,0,4,2,4,1,1,1,0,1,1 0,0,6,2,2,8,1,0,0,1,1,0,1,0 0,0,3,2,2,6,4,0,1,1,1,2,1,0 0,5,0,3,0,8,2,0,1,1,1,2,1,0 0,0,10,3,0,5,2,0,1,1,1,1,1,0 1,0,0,3,1,4,5,0,0,1,1,2,1,0 0,0,0,3,0,5,2,0,1,1,1,1,1,1 1,0,1,2,0,1,2,1,1,1,1,1,1,0 0,0,3,2,0,2,2,0,1,1,1,2,1,0 1,0,3,2,0,10,2,0,1,1,1,0,1,0 2,5,0,3,0,5,2,0,1,1,1,0,1,1 0,0,3,2,0,8,2,0,1,1,1,1,1,1 0,0,2,1,0,3,0,3,0,1,1,2,1,0 1,0,3,2,2,9,3,0,1,1,1,1,1,0 0,0,3,2,0,10,2,0,1,1,1,2,1,0 2,1,12,1,0,1,2,0,1,1,1,2,1,0 1,0,3,2,1,3,3,0,0,1,1,0,1,0 1,0,6,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,2,2,5,0,0,1,1,2,1,0 0,0,3,2,2,10,3,0,1,1,1,1,1,0 1,0,3,2,1,3,3,0,0,1,1,0,1,0 2,0,5,2,0,8,0,0,0,1,1,0,1,0 1,5,10,3,0,4,0,4,0,1,1,0,1,0 1,1,3,2,0,1,2,0,1,1,1,0,1,0 1,0,3,2,1,1,3,0,0,1,1,0,1,0 2,1,1,2,0,1,2,0,1,1,1,0,1,0 2,0,10,3,0,5,2,0,1,1,1,1,1,1 0,0,3,2,2,2,1,0,0,1,1,0,1,0 0,0,3,2,0,10,2,4,1,1,1,0,1,0 1,0,1,2,3,10,3,0,1,1,1,0,1,0 3,0,3,2,1,8,4,0,0,1,1,2,1,0 0,3,7,1,2,8,4,4,1,1,1,0,1,0 0,0,3,2,2,3,5,0,1,1,1,2,1,0 2,0,1,2,4,3,3,0,1,1,1,2,1,0 0,0,3,2,2,2,1,4,1,1,1,1,1,0 1,0,3,2,0,9,2,0,1,1,1,1,1,0 0,0,12,1,1,7,3,0,1,1,1,0,1,0 2,2,9,1,0,3,2,0,1,1,1,2,1,0 1,3,3,2,3,3,4,2,0,1,1,0,1,0 2,0,1,2,0,1,2,4,1,1,1,0,1,1 1,0,8,0,0,1,2,0,1,1,1,1,1,0 0,0,3,2,0,10,2,0,1,1,1,0,1,0 1,4,3,2,0,10,2,0,1,1,1,0,1,1 0,0,1,2,2,8,1,0,0,1,1,2,1,0 0,4,3,2,0,12,2,0,1,1,1,1,1,1 1,1,1,2,0,1,2,0,1,1,1,1,1,1 0,1,3,2,2,2,1,0,0,1,1,1,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,1 1,0,0,3,0,3,2,0,1,1,1,0,1,1 2,0,3,2,0,10,2,0,1,1,1,0,1,0 0,0,3,2,2,6,3,0,1,1,1,1,1,0 2,0,3,2,0,5,2,0,1,1,1,0,1,0 0,0,0,3,0,3,0,0,0,1,1,2,1,0 1,0,1,2,1,8,1,0,1,1,1,1,1,0 0,0,1,2,0,1,2,1,1,1,1,0,1,1 1,1,0,3,0,4,2,0,1,1,1,1,1,1 1,5,13,3,3,4,1,1,1,1,1,1,1,0 0,0,8,0,0,1,2,0,1,1,1,0,1,0 0,0,14,0,2,1,3,3,1,1,1,2,1,0 0,0,3,2,0,12,1,0,1,1,1,0,1,0 0,0,0,3,2,8,3,0,0,1,1,1,1,0 2,0,0,3,5,5,4,4,0,1,1,2,1,0 1,0,3,2,0,10,2,0,1,1,1,0,1,1 0,0,1,2,0,5,0,0,0,1,1,0,1,0 0,0,0,3,2,5,1,0,1,1,1,2,1,0 0,0,1,2,0,4,2,0,1,1,1,0,1,0 1,1,10,3,2,5,3,0,0,1,1,1,1,1 1,0,5,2,0,4,2,0,1,1,1,0,1,1 0,0,0,3,2,4,3,0,1,1,1,0,1,0 1,0,3,2,1,3,3,0,1,1,1,1,1,0 1,0,2,1,0,1,2,0,1,1,1,0,1,0 1,0,0,3,2,5,3,0,1,1,1,0,1,0 1,4,3,2,3,10,5,0,0,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 1,0,14,0,3,1,3,3,1,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 0,1,3,2,0,2,0,0,0,1,1,2,1,0 0,0,3,2,2,7,3,4,1,1,1,2,1,0 2,0,7,1,0,1,2,0,1,1,1,0,1,0 1,0,5,2,1,5,5,0,0,1,1,2,1,0 1,0,3,2,1,7,5,0,0,1,1,0,1,0 0,0,3,2,2,1,1,0,1,1,1,0,1,0 1,3,4,3,0,13,2,0,1,1,1,1,1,1 1,0,1,2,0,10,2,4,1,1,1,1,1,1 0,0,3,2,2,2,3,1,1,1,1,0,1,0 1,0,7,1,1,1,5,0,0,1,1,1,1,0 0,0,1,2,2,5,5,0,0,1,1,2,1,0 0,0,3,2,0,1,2,0,1,1,1,1,1,0 2,0,3,2,2,8,3,4,0,1,1,2,1,0 2,0,3,2,0,7,2,0,1,1,1,0,1,1 0,0,1,2,2,1,3,0,1,1,1,0,1,0 0,0,3,2,5,2,5,0,0,1,1,1,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,1,2,2,6,1,4,1,1,1,0,1,0 1,0,3,2,1,8,3,0,0,1,1,0,1,0 0,0,1,2,2,8,1,0,0,1,1,2,1,0 1,3,10,3,0,0,2,0,1,1,1,1,1,1 1,0,3,2,2,4,3,0,0,1,1,0,1,0 1,0,3,2,5,5,5,0,0,1,1,0,1,1 1,0,3,2,1,2,3,0,0,1,1,0,1,0 1,0,1,2,0,6,2,0,1,1,1,0,1,1 0,0,3,2,2,2,5,4,0,1,1,2,1,0 1,0,6,2,0,1,2,0,1,1,1,2,1,0 0,0,10,3,2,5,3,0,1,1,1,1,1,1 1,2,0,3,1,3,3,0,0,1,1,1,1,0 1,1,3,2,0,10,2,0,1,1,1,1,1,0 0,4,3,2,2,12,3,0,1,1,1,1,1,0 0,0,5,2,2,5,3,0,1,1,1,1,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,5,2,2,4,3,0,1,1,1,0,1,0 0,0,3,2,0,4,0,0,0,1,1,0,1,0 1,0,4,3,0,5,2,0,1,1,1,1,1,1 0,0,2,1,2,6,1,4,0,1,1,0,1,0 0,0,3,2,2,8,1,0,0,1,1,0,1,0 1,0,1,2,2,4,5,4,0,1,1,1,1,0 1,0,0,3,0,5,0,0,0,1,1,1,1,0 0,5,4,3,2,5,3,0,0,1,1,1,1,1 1,3,0,3,0,5,2,0,1,1,1,1,1,1 0,0,12,1,2,10,1,0,1,1,1,1,1,0 1,4,1,2,0,2,0,4,0,1,1,2,1,0 1,0,1,2,2,1,5,0,1,1,1,2,1,0 0,0,10,3,2,8,3,1,1,1,1,1,1,1 0,0,3,2,0,4,2,0,1,1,1,1,1,1 1,0,1,2,1,4,3,0,1,1,1,0,1,0 1,0,14,0,0,1,2,0,1,1,1,1,1,0 0,0,4,3,0,5,2,0,1,1,1,1,1,0 0,0,9,1,3,8,1,0,1,1,1,0,1,0 2,0,3,2,1,3,4,0,0,1,1,0,1,0 1,0,3,2,0,3,2,0,1,1,1,1,1,1 2,2,3,2,0,10,2,0,1,1,1,1,1,0 0,0,2,1,2,7,3,0,1,1,1,0,1,0 0,0,3,2,2,1,1,0,1,1,1,0,1,0 1,0,6,2,0,5,0,0,0,1,1,1,1,1 2,1,13,3,0,5,2,0,1,1,1,2,1,1 0,1,0,3,0,3,2,0,1,1,1,1,1,0 0,0,0,3,0,5,2,0,1,1,1,1,1,0 0,0,9,1,0,9,2,0,1,1,1,1,1,0 1,5,1,2,2,0,3,0,0,1,1,1,1,0 1,0,0,3,2,5,3,1,0,1,1,2,1,0 1,0,14,0,0,2,2,0,1,1,1,0,1,0 2,4,10,3,0,8,2,0,1,1,1,0,1,0 1,0,0,3,2,4,5,0,0,1,1,1,1,0 0,0,3,2,2,2,1,0,0,1,1,2,1,0 0,0,1,2,0,7,2,0,1,1,1,0,1,0 0,0,0,3,2,8,3,0,0,1,1,2,1,0 0,1,3,2,0,10,2,0,1,1,1,1,1,0 1,2,0,3,0,3,2,0,1,1,1,0,1,1 0,0,6,2,0,1,2,0,1,1,1,1,1,1 1,5,1,2,0,4,2,0,1,1,1,0,1,1 0,1,1,2,0,3,2,0,1,1,1,0,1,1 2,1,1,2,0,4,2,0,1,1,1,0,1,1 1,0,0,3,0,4,2,4,1,1,1,0,1,1 2,0,14,0,4,2,5,0,0,1,1,1,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,12,1,2,7,3,0,1,1,1,1,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 2,1,0,3,0,5,2,0,1,1,1,1,1,0 1,0,4,3,2,8,3,0,1,1,1,0,1,1 1,0,3,2,3,7,5,0,0,1,1,0,1,0 0,4,0,3,0,5,0,0,0,1,1,0,1,1 0,4,10,3,2,5,3,4,1,1,1,0,1,0 2,0,3,2,5,1,3,0,1,1,1,0,1,0 1,5,0,3,2,5,3,0,0,1,1,2,1,0 0,0,3,2,3,8,5,0,0,1,1,2,1,0 1,4,0,3,1,5,5,0,0,1,1,2,1,0 0,0,1,2,2,8,3,0,0,1,1,0,1,0 0,0,1,2,2,8,1,0,0,1,1,0,1,0 1,0,3,2,2,8,3,0,0,1,1,0,1,0 1,0,0,3,0,7,2,0,1,1,1,0,1,0 1,2,1,2,0,4,2,0,1,1,1,1,1,1 0,0,3,2,3,1,3,0,1,1,1,0,1,0 1,4,1,2,0,12,2,0,1,1,1,1,1,1 0,0,1,2,2,8,3,0,0,1,1,0,1,0 0,0,3,2,1,1,3,0,1,1,1,0,1,0 0,0,9,1,0,2,0,0,0,1,1,0,1,0 1,5,1,2,1,2,1,0,1,1,1,2,1,0 2,0,3,2,0,10,2,0,1,1,1,0,1,1 0,0,0,3,2,3,5,0,0,1,1,1,1,0 0,0,0,3,0,1,2,0,1,1,1,1,1,0 0,0,2,1,2,2,1,0,0,1,1,2,1,0 0,0,2,1,2,9,3,0,1,1,1,0,1,0 1,0,14,0,0,10,0,0,0,1,1,0,1,1 0,0,3,2,5,2,3,0,0,1,1,2,1,0 1,1,6,2,0,9,2,0,1,1,1,1,1,0 2,3,3,2,2,8,4,2,1,1,1,0,1,0 1,0,1,2,1,8,3,4,1,1,1,0,1,0 0,0,3,2,0,2,0,0,0,1,1,0,1,0 0,0,1,2,0,2,2,0,1,1,1,1,1,0 0,0,1,2,1,10,3,0,1,1,1,1,1,0 1,0,3,2,1,4,5,0,0,1,1,0,1,0 0,4,12,1,2,1,1,4,1,1,1,0,1,0 1,0,3,2,1,7,3,0,0,1,1,1,1,0 0,0,3,2,2,2,1,0,0,1,1,0,1,0 0,0,2,1,2,2,1,0,0,1,1,2,1,0 0,0,3,2,2,1,3,0,1,1,1,1,1,0 1,4,0,3,0,5,0,4,0,1,1,2,1,1 0,4,0,3,2,0,3,0,1,1,1,0,1,0 1,4,1,2,0,8,2,0,1,1,1,0,1,0 1,0,1,2,2,4,3,0,1,1,1,1,1,0 1,0,3,2,1,7,3,0,1,1,1,0,1,0 0,0,1,2,2,6,1,0,1,1,1,2,1,0 0,0,1,2,2,4,5,0,0,1,1,0,1,0 2,0,9,1,4,7,4,0,0,1,1,1,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 0,1,3,2,0,2,0,0,0,1,1,2,1,0 1,0,3,2,1,10,3,0,1,1,1,1,1,0 2,0,0,3,0,10,2,0,1,1,1,2,1,1 0,5,7,1,2,2,1,0,0,1,1,1,1,0 2,0,1,2,1,2,3,0,0,1,1,2,1,0 1,0,10,3,0,3,2,0,1,1,1,0,1,0 0,0,4,3,2,5,3,0,1,1,1,0,1,0 0,0,1,2,0,8,2,0,1,1,1,0,1,0 0,0,8,0,2,1,1,0,1,1,1,0,1,0 1,1,5,2,0,4,2,0,1,1,1,2,1,0 0,1,1,2,2,3,3,0,0,1,1,2,1,0 1,3,1,2,0,8,2,0,1,1,1,1,1,1 0,0,2,1,2,1,1,0,1,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 1,3,3,2,0,8,0,0,0,1,1,2,1,0 2,0,7,1,0,2,0,0,0,1,1,2,1,0 0,0,0,3,0,3,2,0,1,1,1,1,1,1 2,0,3,2,0,10,2,0,1,1,1,2,1,0 1,4,0,3,1,5,3,0,0,1,1,2,1,1 2,0,3,2,0,10,2,0,1,1,1,0,1,1 0,0,3,2,0,7,2,0,1,1,1,1,1,0 0,0,1,2,1,7,3,0,1,1,1,0,1,0 0,4,0,3,2,5,5,0,1,1,1,0,1,0 0,0,1,2,2,3,3,0,1,1,1,0,1,0 0,0,1,2,2,8,3,0,0,1,1,0,1,0 0,0,1,2,2,2,1,0,1,1,1,0,1,0 0,0,6,2,2,3,3,0,0,1,1,2,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,5,2,0,5,0,0,0,1,1,0,1,1 1,0,3,2,0,6,2,0,1,1,1,0,1,1 0,0,3,2,2,1,1,0,1,1,1,2,1,0 1,0,3,2,2,2,3,0,1,1,1,2,1,0 0,0,0,3,2,3,3,0,1,1,1,2,1,0 0,0,1,2,2,2,1,1,1,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,0 2,0,3,2,4,2,3,0,0,1,1,1,1,0 1,0,0,3,0,5,2,0,1,1,1,0,1,1 1,4,1,2,0,12,2,0,1,1,1,0,1,1 0,0,3,2,0,1,2,0,1,1,1,1,1,1 2,1,3,2,1,7,5,0,1,1,1,2,1,0 2,1,3,2,0,7,2,0,1,1,1,1,1,0 0,0,3,2,0,10,2,0,1,1,1,1,1,0 0,1,3,2,0,10,2,0,1,1,1,1,1,0 1,2,0,3,0,3,2,0,1,1,1,0,1,1 0,0,3,2,1,4,3,0,0,1,1,0,1,0 1,0,1,2,0,4,0,0,0,1,1,1,1,1 1,4,3,2,4,2,3,0,0,1,1,2,1,0 1,0,0,3,0,3,2,0,1,1,1,1,1,0 1,0,3,2,2,2,5,0,1,1,1,2,1,0 0,0,0,3,3,4,3,0,0,1,1,1,1,0 0,0,3,2,2,1,1,0,1,1,1,1,1,0 0,0,0,3,2,4,1,0,0,1,1,1,1,0 1,0,0,3,0,4,2,0,1,1,1,0,1,1 1,0,1,2,0,1,2,0,1,1,1,0,1,0 0,4,12,1,2,9,1,0,1,1,1,0,1,0 1,1,3,2,1,4,3,0,0,1,1,1,1,1 3,1,10,3,0,1,2,0,1,1,1,2,1,0 2,0,3,2,0,6,2,0,1,1,1,0,1,0 0,0,0,3,2,5,3,0,1,1,1,0,1,0 0,0,3,2,2,7,1,0,1,1,1,1,1,0 0,4,3,2,2,2,5,4,0,1,1,0,1,0 0,0,2,1,0,1,2,0,1,1,1,1,1,0 2,4,3,2,0,12,2,0,1,1,1,0,1,1 0,0,1,2,0,6,2,0,1,1,1,1,1,0 2,5,0,3,0,5,2,1,1,1,1,2,1,0 0,0,3,2,2,3,3,0,0,1,1,2,1,0 0,0,1,2,2,8,3,0,0,1,1,0,1,0 1,0,1,2,4,2,5,0,0,1,1,0,1,0 0,0,0,3,0,5,2,0,1,1,1,0,1,0 0,0,0,3,2,7,3,0,1,1,1,0,1,0 0,0,0,3,2,0,3,0,1,1,1,0,1,0 0,0,1,2,2,4,3,0,0,1,1,1,1,0 0,0,0,3,2,5,3,0,0,1,1,2,1,0 2,0,0,3,0,8,2,0,1,1,1,2,1,0 1,0,0,3,0,8,2,0,1,1,1,0,1,0 0,0,0,3,2,0,3,4,1,1,1,0,1,0 0,4,5,2,0,1,2,0,1,1,1,0,1,1 1,2,3,2,1,2,5,0,0,1,1,2,1,0 0,0,0,3,2,8,3,0,1,1,1,0,1,0 1,4,0,3,0,5,0,0,0,1,1,0,1,1 1,0,0,3,0,5,2,0,1,1,1,1,1,1 0,0,3,2,1,6,1,0,1,1,1,0,1,0 0,0,3,2,2,8,1,0,0,1,1,2,1,0 2,0,3,2,0,10,2,0,1,1,1,0,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 0,5,7,1,0,9,2,0,1,1,1,0,1,0 0,0,0,3,0,3,2,0,1,1,1,1,1,1 3,1,7,1,0,9,2,0,1,1,1,0,1,0 0,0,5,2,2,0,3,0,1,1,1,0,1,0 1,0,3,2,0,4,2,0,1,1,1,0,1,0 2,3,1,2,4,8,3,0,1,1,1,2,1,0 2,2,0,3,2,4,3,0,1,1,1,0,1,0 1,0,7,1,1,2,5,4,0,1,1,0,1,0 0,0,12,1,2,3,5,4,0,1,1,0,1,0 1,1,1,2,0,3,2,0,1,1,1,1,1,1 2,1,3,2,4,3,3,0,0,1,1,1,1,0 1,0,4,3,0,5,2,0,1,1,1,1,1,1 0,0,5,2,2,8,3,4,0,1,1,0,1,0 1,3,0,3,0,4,2,0,1,1,1,0,1,1 2,2,1,2,0,3,2,0,1,1,1,1,1,0 0,2,3,2,2,1,1,0,1,1,1,1,1,0 2,0,12,1,0,12,2,0,1,1,1,0,1,0 0,0,9,1,2,6,1,0,1,1,1,2,1,0 0,0,3,2,2,1,1,0,1,1,1,0,1,0 1,0,3,2,3,8,5,0,0,1,1,2,1,0 1,0,12,1,1,7,3,0,1,1,1,0,1,0 1,0,4,3,0,5,2,0,1,1,1,1,1,1 0,0,0,3,0,8,0,0,0,1,1,0,1,0 2,4,3,2,0,8,2,0,1,1,1,2,1,0 0,0,12,1,0,3,2,0,1,1,1,1,1,0 1,0,12,1,2,6,1,0,1,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,0,1,2,0,1,1,1,0,1,1 3,2,1,2,0,3,2,0,1,1,1,1,1,0 0,0,0,3,0,4,2,0,1,1,1,0,1,0 1,0,3,2,0,3,2,0,1,1,1,0,1,1 0,4,2,1,2,8,1,0,0,1,1,2,1,0 0,0,0,3,2,4,3,0,0,1,1,1,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,1 2,0,8,0,1,7,3,4,1,1,1,0,1,0 0,0,9,1,2,2,4,3,1,1,1,0,1,0 1,0,5,2,2,1,3,4,0,1,1,1,1,0 2,4,0,3,0,12,2,0,1,1,1,0,1,1 1,0,3,2,0,2,2,0,1,1,1,2,1,0 1,3,0,3,0,4,2,4,1,1,1,0,1,0 0,3,3,2,0,5,2,0,1,1,1,1,1,0 1,0,1,2,0,4,2,0,1,1,1,1,1,1 0,0,3,2,2,3,5,0,0,1,1,2,1,0 0,0,2,1,2,3,3,0,1,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 1,0,5,2,1,5,3,0,0,1,1,0,1,0 1,0,3,2,3,8,3,0,0,1,1,2,1,0 0,0,1,2,2,8,3,0,0,1,1,0,1,0 1,0,10,3,0,4,2,0,1,1,1,0,1,1 1,0,3,2,0,3,0,0,0,1,1,0,1,1 0,0,12,1,2,3,1,0,0,1,1,2,1,0 0,0,1,2,2,2,1,0,1,1,1,1,1,0 0,0,0,3,2,1,3,0,1,1,1,1,1,0 0,0,8,0,2,7,1,0,1,1,1,0,1,0 2,0,3,2,4,8,5,4,0,1,1,0,1,0 1,0,5,2,0,8,0,0,0,1,1,0,1,1 1,0,3,2,0,10,2,0,1,1,1,0,1,0 2,1,1,2,0,1,2,0,1,1,1,0,1,1 2,0,3,2,4,4,3,0,0,1,1,1,1,0 2,0,3,2,0,8,2,0,1,1,1,2,1,0 1,0,3,2,0,3,2,0,1,1,1,1,1,0 0,1,6,2,0,9,2,0,1,1,1,1,1,0 1,1,9,1,0,1,2,0,1,1,1,1,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 1,0,1,2,4,8,5,0,0,1,1,0,1,1 1,1,0,3,1,1,3,0,1,1,1,1,1,0 1,2,3,2,0,3,2,0,1,1,1,1,1,1 1,0,0,3,2,5,3,0,0,1,1,0,1,0 1,5,5,2,0,4,2,0,1,1,1,1,1,0 2,1,1,2,0,2,0,0,0,1,1,2,1,0 2,1,3,2,0,9,2,0,1,1,1,1,1,0 2,3,3,2,4,8,5,0,0,1,1,0,1,0 0,0,6,2,2,2,3,0,0,1,1,1,1,0 1,5,3,2,0,12,2,2,1,1,1,0,1,0 1,0,0,3,0,8,2,3,1,1,1,0,1,1 0,0,2,1,0,1,2,0,1,1,1,1,1,0 0,0,3,2,0,1,4,0,1,1,1,0,1,0 0,0,3,2,1,6,3,0,1,1,1,0,1,0 2,0,3,2,0,2,2,4,1,1,1,2,1,0 1,0,6,2,1,8,5,0,0,1,1,1,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,0 0,0,1,2,2,6,3,0,1,1,1,1,1,0 3,0,3,2,0,10,2,4,1,1,1,2,1,0 1,0,6,2,1,5,5,0,0,1,1,0,1,0 1,0,2,1,0,1,2,0,1,1,1,0,1,0 2,0,0,3,1,3,3,0,0,1,1,0,1,1 1,0,3,2,0,1,2,0,1,1,1,1,1,1 0,3,3,2,2,5,1,0,1,1,1,2,1,0 1,0,1,2,0,3,2,0,1,1,1,1,1,1 1,5,1,2,2,6,3,0,1,1,1,2,1,0 0,1,13,3,0,5,2,0,1,1,1,2,1,1 0,0,1,2,2,2,1,0,0,1,1,0,1,0 1,0,0,3,2,5,3,0,1,1,1,0,1,0 0,1,2,1,0,9,2,0,1,1,1,1,1,0 0,0,3,2,2,8,3,4,1,1,1,0,1,0 0,0,1,2,0,6,2,0,1,1,1,2,1,0 1,0,10,3,0,5,2,1,1,1,1,0,1,0 0,0,3,2,1,7,3,0,0,1,1,0,1,0 1,1,10,3,0,3,2,0,1,1,1,1,1,0 1,0,3,2,2,8,1,0,0,1,1,2,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,1 1,0,6,2,1,5,3,1,1,1,1,2,1,1 1,0,0,3,0,5,2,0,1,1,1,0,1,1 2,0,6,2,1,4,3,4,1,1,1,0,1,0 0,0,3,2,2,2,3,0,0,1,1,2,1,0 0,0,2,1,2,1,3,0,1,1,1,0,1,0 1,0,1,2,0,10,2,0,1,1,1,1,1,1 0,0,6,2,0,0,2,0,1,1,1,1,1,1 2,0,1,2,1,7,3,4,0,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 2,0,14,0,0,4,2,0,1,1,1,0,1,0 1,0,1,2,0,9,2,0,1,1,1,0,1,1 1,0,3,2,0,1,2,0,1,1,1,1,1,0 1,0,1,2,1,3,5,0,1,1,1,1,1,0 0,0,0,3,2,5,3,0,1,1,1,1,1,1 2,1,8,0,0,4,2,0,1,1,1,0,1,0 0,0,3,2,1,2,5,0,1,1,1,0,1,0 1,0,3,2,0,6,2,0,1,1,1,0,1,0 0,5,0,3,2,8,5,4,0,1,1,0,1,0 1,3,1,2,0,8,2,0,1,1,1,0,1,1 1,0,10,3,1,5,3,0,1,1,1,1,1,0 0,0,1,2,2,10,1,0,1,1,1,2,1,0 0,0,3,2,2,2,3,0,1,1,1,2,1,0 1,0,13,3,0,5,2,0,1,1,1,1,1,1 0,4,1,2,0,5,2,4,1,1,1,0,1,0 1,0,1,2,3,8,4,2,0,1,1,1,1,0 1,0,6,2,0,1,2,0,1,1,1,1,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 2,0,0,3,4,5,3,0,0,1,1,2,1,0 0,0,2,1,2,2,1,0,1,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 2,0,3,2,0,1,2,0,1,1,1,0,1,1 0,0,3,2,0,1,2,0,1,1,1,0,1,1 1,1,1,2,0,7,0,0,0,1,1,1,1,0 1,3,3,2,0,4,2,0,1,1,1,0,1,1 2,1,3,2,0,1,2,0,1,1,1,2,1,0 2,0,14,0,3,7,4,0,0,1,1,0,1,0 1,0,3,2,0,8,2,0,1,1,1,0,1,1 1,0,1,2,0,4,2,0,1,1,1,1,1,0 2,0,11,0,0,7,2,0,1,1,1,1,1,1 1,0,8,0,1,2,3,3,1,1,1,0,1,0 1,0,6,2,0,0,2,0,1,1,1,0,1,1 1,0,0,3,1,7,5,0,0,1,1,2,1,0 1,0,0,3,1,8,5,0,0,1,1,0,1,0 0,0,9,1,2,2,4,0,1,1,1,2,1,0 1,0,4,3,2,5,4,1,0,1,1,2,1,0 0,0,6,2,2,8,1,0,0,1,1,0,1,0 0,3,3,2,2,2,5,0,1,1,1,0,1,0 0,0,1,2,2,2,3,0,0,1,1,2,1,0 1,0,1,2,2,4,3,0,0,1,1,1,1,0 0,1,0,3,1,3,3,0,1,1,1,2,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,2,1,2,3,1,0,0,1,1,2,1,0 1,1,1,2,1,5,1,0,1,1,1,0,1,0 1,0,3,2,1,3,3,0,0,1,1,0,1,0 0,0,10,3,2,4,3,0,0,1,1,1,1,1 0,0,3,2,2,8,1,0,0,1,1,0,1,0 1,1,5,2,0,1,2,0,1,1,1,1,1,0 1,0,6,2,0,5,0,0,0,1,1,1,1,0 0,0,0,3,2,0,3,0,1,1,1,1,1,0 2,0,3,2,0,12,2,0,1,1,1,0,1,0 1,1,1,2,0,5,2,0,1,1,1,0,1,1 1,0,1,2,0,1,2,0,1,1,1,1,1,1 1,2,13,3,0,5,2,0,1,1,1,1,1,0 0,0,12,1,2,2,3,0,0,1,1,2,1,0 1,1,12,1,0,1,2,0,1,1,1,0,1,0 1,0,3,2,2,7,1,0,0,1,1,2,1,0 0,4,0,3,0,5,2,0,1,1,1,2,1,0 0,0,3,2,2,6,3,4,1,1,1,2,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,1 0,0,6,2,0,5,2,0,1,1,1,0,1,0 1,0,10,3,0,5,2,0,1,1,1,1,1,1 2,4,6,2,0,12,2,0,1,1,1,2,1,0 1,0,10,3,0,5,2,0,1,1,1,0,1,1 0,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,0,3,0,2,2,4,1,1,1,2,1,0 0,0,1,2,2,8,5,3,0,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,5,1,2,0,9,2,0,1,1,1,0,1,0 0,0,2,1,2,2,1,0,0,1,1,2,1,0 1,0,3,2,1,7,1,0,1,1,1,0,1,0 1,1,0,3,2,5,3,4,1,1,1,2,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,1 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,4,1,2,2,3,4,0,0,1,1,2,1,0 1,0,2,1,0,1,2,0,1,1,1,0,1,0 1,4,0,3,0,5,0,0,0,1,1,0,1,1 0,0,3,2,2,3,1,0,1,1,1,0,1,0 1,0,0,3,1,3,3,0,1,1,1,0,1,0 3,3,10,3,1,5,3,0,1,1,1,1,1,0 1,4,0,3,0,10,2,1,1,1,1,0,1,0 1,4,1,2,0,12,2,0,1,1,1,1,1,1 0,0,3,2,0,8,2,0,1,1,1,2,1,0 1,0,3,2,2,8,3,0,1,1,1,0,1,0 1,2,0,3,0,3,2,0,1,1,1,1,1,1 1,0,5,2,0,0,2,0,1,1,1,2,1,1 1,0,5,2,0,4,2,0,1,1,1,1,1,0 1,4,0,3,0,5,2,4,1,1,1,0,1,1 0,0,1,2,2,9,1,0,1,1,1,1,1,0 1,0,6,2,0,4,2,0,1,1,1,1,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 2,0,1,2,1,4,3,0,0,1,1,0,1,0 2,0,10,3,0,5,2,0,1,1,1,2,1,1 0,0,0,3,2,8,3,0,0,1,1,2,1,0 0,3,6,2,0,6,2,0,1,1,1,0,1,0 0,2,3,2,2,4,3,0,0,1,1,1,1,0 1,1,2,1,0,1,2,0,1,1,1,0,1,0 0,0,3,2,2,7,3,0,0,1,1,0,1,0 0,0,3,2,2,7,1,0,1,1,1,0,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,1 1,5,10,3,0,5,2,2,1,1,1,2,1,1 1,1,0,3,2,5,3,4,0,1,1,2,1,0 0,0,0,3,0,1,2,0,1,1,1,0,1,0 2,0,3,2,0,10,2,0,1,1,1,0,1,1 0,0,3,2,2,8,3,0,0,1,1,0,1,0 1,5,10,3,2,12,3,0,0,1,1,0,1,0 0,4,1,2,2,8,1,4,0,1,1,0,1,0 1,0,0,3,2,2,3,0,1,1,1,2,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,1 2,0,3,2,3,7,5,0,1,1,1,0,1,0 1,3,3,2,0,1,2,4,1,1,1,0,1,0 0,0,1,2,0,2,4,0,0,1,1,2,1,0 0,0,0,3,1,5,3,0,0,1,1,1,1,1 2,0,3,2,4,7,3,4,0,1,1,0,1,0 1,0,3,2,0,2,2,0,1,1,1,1,1,1 1,1,1,2,0,9,2,0,1,1,1,1,1,0 1,5,5,2,1,8,5,4,0,1,1,0,1,0 0,0,3,2,0,3,2,0,1,1,1,0,1,0 1,5,3,2,0,12,2,0,1,1,1,0,1,0 2,4,1,2,4,8,3,0,0,1,1,2,1,0 0,0,8,0,2,11,1,0,0,1,1,2,1,0 2,0,11,0,0,2,2,0,1,1,1,2,1,0 0,0,3,2,2,0,1,0,0,1,1,2,1,0 0,0,2,1,2,2,1,0,0,1,1,2,1,0 1,0,0,3,5,5,5,0,0,1,1,2,1,0 2,2,3,2,3,3,3,0,0,1,1,1,1,0 1,0,3,2,1,7,5,0,1,1,1,0,1,0 0,0,1,2,2,3,1,4,0,1,1,2,1,0 0,0,3,2,2,7,1,0,1,1,1,0,1,0 0,0,5,2,2,7,5,0,1,1,1,0,1,0 0,0,0,3,0,5,2,0,1,1,1,0,1,0 0,0,3,2,0,8,0,0,0,1,1,1,1,1 0,0,3,2,3,7,3,0,1,1,1,0,1,0 2,0,3,2,4,4,3,0,1,1,1,0,1,0 2,3,1,2,0,1,2,0,1,1,1,0,1,1 0,0,1,2,2,2,3,0,0,1,1,0,1,0 0,0,3,2,2,2,1,4,0,1,1,0,1,0 0,0,9,1,0,1,2,0,1,1,1,0,1,0 2,1,3,2,0,1,2,0,1,1,1,2,1,0 1,4,5,2,0,0,2,0,1,1,1,1,1,1 1,0,1,2,0,8,0,0,0,1,1,0,1,1 0,0,0,3,2,4,3,0,1,1,1,1,1,0 0,0,3,2,2,7,1,4,1,1,1,0,1,0 1,5,0,3,2,5,5,0,1,1,1,2,1,0 0,0,3,2,2,3,1,0,1,1,1,0,1,0 1,0,3,2,1,8,3,0,0,1,1,1,1,0 1,0,3,2,2,8,5,0,0,1,1,0,1,0 1,0,1,2,3,5,3,4,1,1,1,0,1,0 0,0,5,2,0,2,2,1,1,1,1,0,1,0 0,0,0,3,2,5,1,4,0,1,1,0,1,0 1,1,4,3,0,5,2,0,1,1,1,1,1,1 0,0,3,2,2,4,3,0,0,1,1,1,1,0 0,0,3,2,0,10,2,0,1,1,1,0,1,1 1,0,3,2,0,7,2,0,1,1,1,0,1,0 1,1,1,2,0,3,2,0,1,1,1,1,1,1 0,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,1,2,0,3,2,0,1,1,1,1,1,0 2,0,3,2,1,3,4,0,0,1,1,2,1,0 1,1,10,3,0,4,2,0,1,1,1,1,1,1 2,0,3,2,0,1,2,0,1,1,1,2,1,0 0,0,1,2,2,2,3,0,1,1,1,1,1,0 1,5,10,3,0,5,2,0,1,1,1,1,1,1 0,0,0,3,2,3,1,0,1,1,1,1,1,0 1,2,13,3,0,4,2,0,1,1,1,1,1,1 2,5,0,3,0,5,2,0,1,1,1,2,1,0 3,2,0,3,0,9,2,0,1,1,1,0,1,1 1,4,10,3,0,5,2,0,1,1,1,1,1,1 2,2,10,3,0,4,2,0,1,1,1,1,1,1 0,0,1,2,2,5,3,0,1,1,1,0,1,0 1,4,0,3,0,5,2,0,1,1,1,1,1,0 0,0,5,2,0,4,0,3,0,1,1,0,1,1 0,2,0,3,0,1,2,0,1,1,1,0,1,1 0,0,3,2,2,8,3,0,0,1,1,0,1,0 0,0,3,2,2,10,1,0,1,1,1,2,1,0 1,2,2,1,0,4,2,0,1,1,1,2,1,1 3,0,0,3,1,9,4,0,0,1,1,2,1,0 0,0,0,3,0,5,2,0,1,1,1,2,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,0,8,0,0,0,1,1,0,1,0 1,0,10,3,2,4,5,0,1,1,1,0,1,0 0,2,3,2,2,4,3,4,0,1,1,2,1,0 0,0,0,3,2,3,1,0,0,1,1,2,1,0 1,1,10,3,2,5,3,0,0,1,1,1,1,0 2,0,13,3,2,4,3,0,1,1,1,1,1,1 0,5,3,2,1,2,5,0,0,1,1,1,1,0 0,0,1,2,2,0,1,0,1,1,1,0,1,0 1,0,2,1,1,2,5,4,0,1,1,2,1,0 1,4,3,2,3,12,3,0,1,1,1,2,1,0 2,0,8,0,0,1,2,0,1,1,1,0,1,0 2,0,1,2,0,5,2,0,1,1,1,1,1,0 0,0,3,2,2,2,1,0,1,1,1,0,1,0 1,1,3,2,3,1,1,0,1,1,1,0,1,0 1,0,12,1,0,1,2,0,1,1,1,0,1,0 0,0,0,3,2,4,3,4,0,1,1,0,1,0 0,0,12,1,2,9,5,4,0,1,1,0,1,0 0,0,1,2,1,2,3,0,0,1,1,0,1,0 1,4,3,2,2,8,1,0,0,1,1,0,1,0 1,0,1,2,1,7,3,0,1,1,1,0,1,0 0,0,0,3,1,5,3,0,1,1,1,2,1,0 0,0,1,2,2,8,1,4,0,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,1 1,0,3,2,0,1,2,0,1,1,1,0,1,1 0,1,7,1,2,3,1,0,1,1,1,2,1,0 0,0,5,2,2,8,3,0,1,1,1,2,1,0 1,0,7,1,1,1,3,0,1,1,1,1,1,0 2,0,3,2,0,1,2,0,1,1,1,1,1,0 1,0,6,2,1,3,5,0,0,1,1,0,1,0 1,1,3,2,0,10,2,4,1,1,1,0,1,0 2,0,3,2,4,8,5,0,0,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,8,0,0,6,2,0,1,1,1,0,1,0 1,0,3,2,0,12,2,0,1,1,1,1,1,0 2,0,0,3,1,4,3,0,1,1,1,0,1,0 1,0,3,2,0,3,2,0,1,1,1,0,1,1 2,0,1,2,1,8,3,0,0,1,1,0,1,0 0,0,0,3,0,9,2,0,1,1,1,1,1,0 1,2,3,2,0,10,2,0,1,1,1,1,1,0 0,0,0,3,2,2,3,0,0,1,1,1,1,0 1,0,5,2,1,8,5,0,0,1,1,0,1,0 0,0,1,2,2,8,1,0,1,1,1,2,1,0 1,0,1,2,1,8,3,0,1,1,1,0,1,0 0,0,0,3,2,2,1,0,1,1,1,2,1,0 1,2,0,3,0,3,2,0,1,1,1,1,1,1 0,0,0,3,0,4,2,0,1,1,1,1,1,1 0,2,0,3,0,4,2,0,1,1,1,0,1,0 1,0,3,2,2,1,1,0,1,1,1,2,1,0 1,0,1,2,0,10,2,0,1,1,1,1,1,0 1,0,3,2,2,6,1,0,1,1,1,0,1,0 0,0,3,2,2,8,5,4,1,1,1,0,1,0 0,5,1,2,0,0,2,0,1,1,1,0,1,0 1,3,1,2,2,8,3,4,0,1,1,0,1,0 2,4,3,2,0,1,2,0,1,1,1,2,1,0 0,4,3,2,2,2,1,0,1,1,1,1,1,0 1,0,3,2,2,6,3,0,1,1,1,1,1,0 1,0,0,3,0,4,2,0,1,1,1,0,1,1 0,0,3,2,0,3,2,0,1,1,1,1,1,0 0,0,5,2,2,8,4,0,0,1,1,1,1,0 1,0,3,2,2,2,3,0,0,1,1,2,1,0 0,1,3,2,0,9,2,0,1,1,1,1,1,0 1,0,10,3,1,4,3,0,0,1,1,2,1,1 0,0,0,3,2,8,3,0,0,1,1,0,1,0 1,0,0,3,0,4,0,1,0,1,1,0,1,1 0,0,1,2,1,3,3,0,0,1,1,0,1,0 1,0,3,2,1,8,5,0,0,1,1,2,1,0 1,0,3,2,0,2,0,0,0,1,1,2,1,0 1,0,0,3,5,3,3,0,1,1,1,0,1,1 2,0,10,3,0,5,2,0,1,1,1,1,1,1 1,0,0,3,1,3,3,0,1,1,1,1,1,0 0,0,0,3,4,2,1,0,1,1,1,1,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,1 1,2,0,3,1,0,3,0,0,1,1,1,1,1 0,0,6,2,0,8,0,0,0,1,1,0,1,0 1,4,10,3,0,5,2,0,1,1,1,0,1,1 1,4,13,3,1,5,3,0,0,1,1,1,1,1 0,2,0,3,2,3,3,0,1,1,1,0,1,1 0,0,3,2,2,10,3,0,1,1,1,0,1,0 0,0,14,0,2,7,4,0,1,1,1,0,1,0 0,4,3,2,0,8,2,0,1,1,1,0,1,0 0,0,3,2,2,2,1,0,0,1,1,2,1,0 1,0,0,3,0,5,2,0,1,1,1,0,1,1 0,0,0,3,2,4,3,0,0,1,1,1,1,1 0,0,3,2,2,7,3,0,1,1,1,0,1,0 0,0,10,3,0,4,0,0,0,1,1,1,1,1 0,0,3,2,0,7,2,0,1,1,1,0,1,0 1,0,3,2,0,3,0,0,0,1,1,2,1,1 1,4,1,2,0,12,2,0,1,1,1,1,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 1,0,3,2,1,2,3,0,0,1,1,2,1,0 0,0,1,2,0,10,2,0,1,1,1,0,1,0 0,2,3,2,2,1,3,0,1,1,1,0,1,0 0,0,2,1,2,2,1,0,0,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 1,3,3,2,2,6,3,0,1,1,1,0,1,0 1,0,7,1,2,7,4,0,0,1,1,0,1,0 1,0,8,0,2,7,5,0,1,1,1,1,1,0 1,4,10,3,0,5,2,0,1,1,1,0,1,1 1,4,0,3,0,5,2,0,1,1,1,0,1,1 2,4,1,2,0,5,2,0,1,1,1,0,1,0 1,0,1,2,5,5,3,1,0,1,1,0,1,1 1,0,0,3,1,8,5,0,0,1,1,1,1,0 0,0,3,2,2,6,1,0,0,1,1,2,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,1 0,0,3,2,2,7,5,4,0,1,1,0,1,0 2,0,14,0,0,7,0,0,0,1,1,2,1,0 0,0,5,2,0,5,2,0,1,1,1,1,1,0 1,3,0,3,0,5,2,0,1,1,1,0,1,1 0,0,1,2,2,8,3,0,1,1,1,0,1,0 0,0,1,2,2,8,1,0,1,1,1,0,1,0 0,5,3,2,0,12,2,4,1,1,1,0,1,0 2,0,6,2,1,4,5,0,0,1,1,1,1,0 0,2,3,2,2,4,1,0,1,1,1,0,1,0 0,0,0,3,0,3,2,0,1,1,1,2,1,0 1,0,6,2,0,1,2,0,1,1,1,1,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 0,0,0,3,2,8,3,4,1,1,1,0,1,0 0,0,4,3,0,5,2,0,1,1,1,0,1,1 1,2,13,3,0,4,2,0,1,1,1,1,1,1 0,0,0,3,2,0,1,0,0,1,1,0,1,0 0,4,6,2,1,10,3,0,1,1,1,0,1,0 1,0,12,1,2,2,3,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,4,3,2,2,5,3,0,0,1,1,0,1,0 2,0,1,2,1,8,5,0,0,1,1,0,1,0 0,0,3,2,2,1,3,0,0,1,1,1,1,0 2,1,0,3,0,3,2,0,1,1,1,0,1,1 0,0,3,2,2,7,4,0,0,1,1,0,1,0 1,1,12,1,0,9,2,0,1,1,1,1,1,1 1,0,10,3,0,5,2,0,1,1,1,1,1,1 1,2,10,3,0,4,2,1,1,1,1,1,1,1 1,0,3,2,0,0,0,4,0,1,1,2,1,0 0,0,0,3,2,4,3,0,1,1,1,2,1,0 2,0,3,2,1,3,5,0,0,1,1,2,1,0 1,0,3,2,4,10,5,4,1,1,1,0,1,0 2,4,10,3,5,5,3,0,0,1,1,2,1,0 1,1,3,2,0,4,2,0,1,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 1,1,0,3,0,4,2,0,1,1,1,1,1,1 3,1,8,0,2,8,3,0,0,1,1,1,1,0 0,4,3,2,0,12,2,0,1,1,1,0,1,0 1,0,3,2,0,4,2,0,1,1,1,1,1,1 2,2,0,3,0,5,2,0,1,1,1,1,1,1 0,0,6,2,3,0,1,0,1,1,1,0,1,0 0,0,0,3,2,4,3,0,1,1,1,0,1,1 0,0,5,2,2,8,1,0,0,1,1,2,1,0 1,2,3,2,0,3,0,0,0,1,1,0,1,0 1,0,1,2,0,4,2,0,1,1,1,0,1,0 1,1,1,2,1,4,3,4,1,1,1,1,1,0 2,1,3,2,4,1,3,0,0,1,1,2,1,0 3,0,1,2,0,12,2,0,1,1,1,0,1,0 0,0,8,0,2,2,1,4,1,1,1,2,1,0 0,4,3,2,0,10,2,0,1,1,1,0,1,0 2,0,3,2,0,8,0,0,0,1,1,0,1,1 1,0,3,2,2,9,1,0,1,1,1,1,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,2,7,1,0,1,1,1,0,1,0 0,0,1,2,2,0,1,0,0,1,1,2,1,0 1,0,10,3,1,2,3,4,0,1,1,2,1,1 1,4,0,3,2,5,3,0,0,1,1,1,1,0 0,0,3,2,2,7,3,0,1,1,1,0,1,0 0,0,0,3,2,4,3,0,1,1,1,0,1,1 1,5,6,2,0,12,2,0,1,1,1,0,1,1 1,3,0,3,0,4,2,4,1,1,1,0,1,1 2,0,3,2,0,0,2,1,1,1,1,2,1,0 1,0,6,2,2,2,3,0,1,1,1,1,1,0 0,0,3,2,3,1,3,0,1,1,1,0,1,0 1,1,12,1,0,4,0,4,0,1,1,0,1,0 0,0,10,3,0,4,2,0,1,1,1,1,1,1 1,1,3,2,0,10,2,0,1,1,1,1,1,0 0,0,6,2,1,2,5,2,0,1,1,0,1,0 1,0,3,2,0,4,2,0,1,1,1,1,1,1 1,5,10,3,0,5,2,1,1,1,1,1,1,1 0,0,3,2,0,9,2,0,1,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,1,1,0 0,5,3,2,0,4,2,0,1,1,1,1,1,1 1,1,1,2,0,3,2,0,1,1,1,1,1,0 0,3,3,2,2,10,3,4,1,1,1,2,1,0 1,0,1,2,5,10,5,0,1,1,1,0,1,0 0,0,1,2,2,1,3,0,1,1,1,0,1,0 0,5,3,2,0,1,2,0,1,1,1,0,1,0 1,0,1,2,2,8,3,4,0,1,1,2,1,0 0,0,3,2,1,8,5,4,0,1,1,0,1,0 0,0,1,2,1,9,5,0,0,1,1,0,1,0 0,5,3,2,2,12,1,0,1,1,1,0,1,0 0,0,0,3,2,5,3,0,0,1,1,0,1,0 2,1,1,2,0,1,2,0,1,1,1,1,1,0 1,0,3,2,2,2,3,0,0,1,1,0,1,0 0,0,6,2,0,1,2,1,1,1,1,0,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,1 3,1,1,2,4,3,3,0,1,1,1,2,1,0 1,0,3,2,0,7,2,0,1,1,1,1,1,0 1,0,3,2,1,10,3,0,1,1,1,0,1,0 1,0,10,3,0,5,2,0,1,1,1,1,1,1 0,0,1,2,0,0,0,0,0,1,1,0,1,0 0,2,0,3,0,4,2,0,1,1,1,1,1,1 2,0,1,2,1,8,5,0,0,1,1,0,1,0 0,0,0,3,0,5,2,0,1,1,1,1,1,0 0,4,5,2,2,6,3,0,1,1,1,0,1,0 1,0,3,2,1,8,1,0,0,1,1,0,1,0 0,0,3,2,2,2,5,0,0,1,1,2,1,0 0,0,10,3,0,4,2,0,1,1,1,1,1,1 1,0,3,2,2,3,3,0,1,1,1,0,1,0 0,0,1,2,2,4,3,0,0,1,1,0,1,0 2,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,7,1,0,10,2,0,1,1,1,1,1,0 2,1,8,0,4,9,5,0,1,1,1,0,1,0 0,0,3,2,1,7,3,0,1,1,1,0,1,0 0,0,0,3,2,6,1,0,1,1,1,2,1,0 0,4,10,3,0,5,0,0,0,1,1,1,1,1 1,0,0,3,2,3,1,0,0,1,1,0,1,0 1,3,10,3,0,5,2,0,1,1,1,1,1,1 0,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,3,2,0,4,0,0,0,1,1,1,1,0 1,0,1,2,1,4,3,0,1,1,1,2,1,0 0,4,1,2,2,8,1,4,0,1,1,1,1,0 1,0,1,2,1,8,3,0,0,1,1,0,1,0 0,0,3,2,2,7,1,0,1,1,1,1,1,0 2,2,3,2,0,9,2,0,1,1,1,1,1,0 0,0,1,2,0,10,2,0,1,1,1,1,1,1 1,4,10,3,1,5,3,0,0,1,1,0,1,0 0,0,1,2,2,1,3,0,1,1,1,0,1,0 0,0,2,1,1,1,5,0,1,1,1,0,1,0 0,0,1,2,2,8,1,4,0,1,1,2,1,0 1,0,1,2,0,8,2,1,1,1,1,0,1,1 1,0,3,2,2,6,3,0,1,1,1,1,1,0 0,0,0,3,0,4,2,0,1,1,1,2,1,1 1,0,0,3,0,1,2,4,1,1,1,0,1,1 1,0,1,2,1,5,3,4,0,1,1,0,1,1 1,0,1,2,1,3,5,0,0,1,1,1,1,0 1,1,6,2,0,1,2,0,1,1,1,0,1,1 1,0,3,2,0,8,2,0,1,1,1,1,1,0 1,0,0,3,0,12,2,0,1,1,1,1,1,1 1,1,1,2,5,4,3,0,1,1,1,1,1,0 3,1,9,1,0,2,2,0,1,1,1,2,1,0 0,4,3,2,2,8,3,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,0 1,2,4,3,0,5,2,0,1,1,1,1,1,1 1,0,3,2,1,7,3,4,1,1,1,1,1,0 0,5,3,2,1,1,1,0,1,1,1,0,1,0 1,3,10,3,2,5,3,0,1,1,1,0,1,0 1,1,3,2,4,2,5,4,0,1,1,1,1,0 1,5,0,3,0,4,2,0,1,1,1,1,1,1 0,1,6,2,0,9,2,0,1,1,1,1,1,0 0,0,1,2,0,8,2,4,1,1,1,0,1,0 0,0,1,2,2,6,1,0,1,1,1,2,1,0 0,0,1,2,2,10,3,4,1,1,1,0,1,0 1,0,1,2,0,3,0,0,0,1,1,2,1,1 1,1,10,3,0,5,2,0,1,1,1,2,1,1 1,0,0,3,0,4,2,0,1,1,1,1,1,1 0,5,0,3,0,5,2,0,1,1,1,2,1,0 2,0,1,2,4,4,3,0,0,1,1,1,1,0 1,0,1,2,2,11,3,4,0,1,1,1,1,0 1,0,1,2,3,4,3,0,1,1,1,1,1,0 0,5,6,2,2,8,1,0,0,1,1,0,1,0 0,0,1,2,1,8,3,0,0,1,1,0,1,0 2,0,3,2,3,8,3,0,0,1,1,0,1,0 1,2,3,2,2,4,1,0,1,1,1,1,1,0 1,5,1,2,0,12,2,0,1,1,1,0,1,0 0,0,3,2,2,2,3,0,0,1,1,2,1,0 0,0,3,2,0,2,0,0,0,1,1,2,1,0 2,1,3,2,0,1,2,0,1,1,1,2,1,1 1,0,10,3,0,3,2,0,1,1,1,1,1,1 0,0,1,2,0,1,2,0,1,1,1,1,1,0 0,0,0,3,0,4,2,0,1,1,1,0,1,1 0,0,3,2,0,7,2,0,1,1,1,1,1,0 0,0,1,2,2,8,4,0,0,1,1,0,1,0 1,0,9,1,0,10,2,0,1,1,1,0,1,0 0,0,3,2,2,7,1,0,1,1,1,0,1,0 0,0,1,2,2,2,1,0,1,1,1,2,1,0 0,0,1,2,2,2,3,0,0,1,1,0,1,0 0,0,0,3,0,0,2,0,1,1,1,0,1,1 1,0,1,2,1,2,5,0,0,1,1,0,1,0 0,0,9,1,2,5,5,0,0,1,1,0,1,0 2,0,0,3,0,0,0,0,0,1,1,0,1,1 1,0,3,2,0,3,2,0,1,1,1,0,1,0 0,4,0,3,2,5,3,0,0,1,1,1,1,0 1,1,3,2,1,3,3,0,1,1,1,2,1,0 2,0,7,1,0,7,0,0,0,1,1,0,1,0 0,0,3,2,2,7,5,4,1,1,1,0,1,0 0,0,3,2,2,6,1,0,1,1,1,0,1,0 0,4,10,3,2,5,3,0,0,1,1,1,1,0 0,0,1,2,2,5,1,0,0,1,1,0,1,0 1,0,12,1,1,3,3,0,0,1,1,0,1,0 0,2,3,2,0,10,2,0,1,1,1,0,1,1 0,0,7,1,0,1,2,0,1,1,1,0,1,0 0,0,1,2,0,3,2,0,1,1,1,0,1,0 2,1,3,2,0,2,2,0,1,1,1,2,1,0 0,1,10,3,1,3,3,1,1,1,1,1,1,0 1,0,7,1,0,1,2,0,1,1,1,0,1,0 0,0,0,3,0,5,0,4,0,1,1,2,1,0 1,1,0,3,0,3,2,0,1,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,3,2,1,9,1,0,1,1,1,1,1,0 0,0,0,3,2,3,1,0,1,1,1,1,1,0 1,5,3,2,1,8,5,0,0,1,1,2,1,0 2,3,10,3,0,4,2,0,1,1,1,0,1,1 1,0,4,3,0,1,2,0,1,1,1,0,1,0 1,1,3,2,0,10,2,0,1,1,1,1,1,1 1,0,10,3,2,5,3,0,1,1,1,1,1,0 2,0,0,3,0,5,2,0,1,1,1,1,1,1 2,0,3,2,0,0,2,0,1,1,1,0,1,0 1,3,0,3,0,5,2,1,1,1,1,0,1,1 0,0,1,2,2,8,1,0,0,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,2,9,4,0,1,1,1,2,1,0 1,3,3,2,0,10,2,4,1,1,1,1,1,0 0,0,0,3,2,4,3,0,1,1,1,0,1,0 1,0,6,2,0,1,2,0,1,1,1,0,1,1 2,2,3,2,0,4,2,0,1,1,1,1,1,0 1,0,1,2,0,7,2,0,1,1,1,0,1,0 1,3,3,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,2,3,3,0,1,1,1,2,1,0 1,0,3,2,0,2,4,1,0,1,1,2,1,0 0,0,0,3,2,3,3,0,0,1,1,1,1,0 1,0,10,3,0,1,2,0,1,1,1,1,1,0 1,0,10,3,1,4,3,0,0,1,1,0,1,1 0,0,12,1,2,3,5,0,0,1,1,0,1,0 0,0,3,2,0,10,2,0,1,1,1,0,1,1 2,0,3,2,5,2,3,1,1,1,1,0,1,0 0,0,3,2,2,3,4,2,0,1,1,1,1,0 1,0,5,2,1,4,5,0,0,1,1,1,1,1 0,0,3,2,0,4,2,0,1,1,1,1,1,1 2,5,0,3,1,4,5,4,0,1,1,0,1,0 2,0,3,2,0,4,2,0,1,1,1,1,1,0 0,0,5,2,2,5,3,0,0,1,1,1,1,0 0,0,3,2,2,6,3,0,1,1,1,2,1,0 1,0,0,3,2,4,3,0,0,1,1,1,1,1 1,0,3,2,1,2,5,4,1,1,1,0,1,0 0,0,0,3,2,4,3,0,1,1,1,2,1,0 1,4,3,2,2,1,3,0,1,1,1,1,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,10,3,1,3,3,0,1,1,1,0,1,1 1,0,1,2,0,0,1,0,0,1,1,0,1,1 1,0,0,3,1,4,3,0,1,1,1,1,1,1 1,0,10,3,0,2,2,0,1,1,1,2,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,5,3,2,2,8,1,0,0,1,1,2,1,0 1,0,10,3,0,5,2,0,1,1,1,0,1,1 1,0,2,1,0,10,2,0,1,1,1,0,1,0 1,0,0,3,1,5,5,4,0,1,1,2,1,0 2,6,3,2,0,6,2,0,1,1,1,1,1,1 0,0,3,2,2,6,4,0,1,1,1,1,1,0 0,0,3,2,2,1,1,0,1,1,1,0,1,0 0,0,3,2,2,8,3,0,0,1,1,0,1,0 1,0,5,2,0,2,2,4,1,1,1,0,1,0 0,0,0,3,0,8,2,0,1,1,1,2,1,0 0,0,1,2,2,4,5,0,0,1,1,2,1,0 0,0,3,2,2,2,1,4,1,1,1,0,1,0 0,4,1,2,1,12,5,4,0,1,1,0,1,0 2,5,10,3,1,5,3,0,0,1,1,2,1,0 1,0,10,3,0,5,2,0,1,1,1,1,1,1 0,0,3,2,0,6,2,0,1,1,1,2,1,0 1,0,0,3,0,3,2,0,1,1,1,0,1,1 0,0,8,0,0,9,2,0,1,1,1,0,1,0 2,1,4,3,0,5,2,0,1,1,1,0,1,1 0,0,0,3,2,5,3,0,1,1,1,1,1,0 1,0,1,2,1,2,5,0,0,1,1,2,1,0 1,4,1,2,2,8,1,0,0,1,1,0,1,0 1,2,3,2,0,3,2,0,1,1,1,1,1,1 2,0,3,2,0,0,2,0,1,1,1,0,1,1 1,0,2,1,0,6,2,3,1,1,1,0,1,0 0,0,0,3,0,5,2,0,1,1,1,0,1,1 0,0,5,2,0,1,2,0,1,1,1,0,1,0 1,0,2,1,1,3,5,0,0,1,1,2,1,0 0,0,0,3,4,5,1,0,1,1,1,2,1,0 1,0,11,0,0,8,2,0,1,1,1,1,1,0 1,0,3,2,0,8,4,0,0,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,0 1,4,10,3,2,5,3,0,0,1,1,0,1,0 1,4,3,2,0,2,2,0,1,1,1,1,1,0 0,0,1,2,2,0,1,0,1,1,1,0,1,0 1,0,0,3,0,8,2,0,1,1,1,1,1,0 2,4,3,2,0,3,2,0,1,1,1,0,1,0 2,0,2,1,0,8,2,0,1,1,1,0,1,0 2,0,3,2,0,8,0,0,0,1,1,0,1,0 1,0,6,2,0,1,0,0,0,1,1,0,1,1 1,0,3,2,0,1,2,4,1,1,1,0,1,0 1,5,10,3,1,4,3,0,1,1,1,1,1,1 0,0,0,3,0,11,0,0,0,1,1,2,1,1 1,2,1,2,0,4,2,0,1,1,1,1,1,1 1,0,3,2,0,0,2,0,1,1,1,0,1,1 0,5,3,2,2,2,1,1,0,1,1,0,1,0 2,1,3,2,0,7,2,0,1,1,1,1,1,0 2,1,3,2,0,7,2,0,1,1,1,2,1,0 0,0,0,3,0,3,2,0,1,1,1,0,1,1 0,5,1,2,2,5,1,0,0,1,1,2,1,0 1,0,9,1,1,1,3,0,1,1,1,0,1,0 1,4,0,3,1,5,3,0,1,1,1,1,1,0 3,0,10,3,4,5,3,0,0,1,1,2,1,0 1,0,14,0,0,10,2,0,1,1,1,0,1,0 2,3,3,2,0,7,2,0,1,1,1,0,1,1 1,0,3,2,0,1,2,0,1,1,1,2,1,0 1,0,0,3,0,8,2,0,1,1,1,0,1,1 1,0,1,2,0,4,2,0,1,1,1,0,1,1 1,0,3,2,0,6,2,0,1,1,1,1,1,1 3,4,3,2,4,2,3,0,0,1,1,2,1,0 0,0,0,3,0,4,0,0,0,1,1,1,1,0 1,0,1,2,0,7,0,0,0,1,1,1,1,1 1,0,3,2,0,8,2,0,1,1,1,0,1,1 0,0,3,2,0,10,2,0,1,1,1,1,1,0 2,1,1,2,1,10,3,0,1,1,1,0,1,0 1,1,3,2,0,3,0,0,0,1,1,1,1,0 0,0,1,2,2,6,1,0,1,1,1,0,1,0 1,0,1,2,0,3,2,0,1,1,1,0,1,0 2,0,3,2,4,1,3,0,0,1,1,0,1,0 0,0,3,2,2,6,1,0,1,1,1,0,1,0 0,0,8,0,2,1,1,0,1,1,1,0,1,0 0,0,9,1,2,3,1,0,0,1,1,2,1,0 0,0,3,2,2,1,5,0,1,1,1,1,1,0 1,1,1,2,0,4,2,0,1,1,1,1,1,0 0,0,0,3,2,3,3,0,0,1,1,1,1,0 1,4,0,3,2,5,3,0,0,1,1,0,1,0 1,1,10,3,0,5,2,0,1,1,1,1,1,0 0,0,3,2,2,7,3,0,1,1,1,0,1,0 3,0,3,2,0,1,2,1,1,1,1,0,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 0,0,0,3,2,5,3,1,1,1,1,2,1,0 0,1,6,2,0,4,2,0,1,1,1,1,1,0 1,0,3,2,0,3,2,4,1,1,1,0,1,1 0,0,12,1,2,1,1,3,0,1,1,2,1,0 0,0,3,2,2,10,1,0,1,1,1,0,1,0 2,0,14,0,3,1,3,4,1,1,1,0,1,0 0,0,0,3,2,4,1,0,0,1,1,0,1,0 0,0,1,2,0,7,2,0,1,1,1,0,1,1 1,0,3,2,1,7,3,0,0,1,1,0,1,0 0,0,10,3,2,5,3,0,0,1,1,2,1,0 1,0,3,2,1,5,3,0,0,1,1,1,1,0 1,0,0,3,2,1,3,0,1,1,1,1,1,1 1,1,5,2,1,3,5,0,1,1,1,0,1,0 0,0,1,2,2,3,1,0,1,1,1,2,1,0 0,0,6,2,0,8,2,0,1,1,1,0,1,1 0,0,2,1,2,12,1,0,0,1,1,0,1,0 1,1,0,3,0,9,2,0,1,1,1,1,1,1 1,0,0,3,0,0,2,0,1,1,1,1,1,0 0,0,0,3,2,5,3,0,1,1,1,0,1,1 1,0,1,2,1,8,5,0,0,1,1,0,1,0 1,0,1,2,3,2,3,0,1,1,1,2,1,0 2,0,13,3,0,5,2,0,1,1,1,1,1,1 1,0,12,1,4,2,3,0,0,1,1,0,1,0 0,0,3,2,3,2,5,4,0,1,1,2,1,0 1,0,1,2,0,3,2,0,1,1,1,1,1,1 0,4,3,2,0,1,2,0,1,1,1,0,1,0 0,0,0,3,2,5,3,0,0,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,1 0,0,0,3,2,8,1,0,1,1,1,0,1,0 0,0,1,2,2,7,3,0,0,1,1,0,1,0 0,0,1,2,0,7,2,0,1,1,1,1,1,0 0,3,1,2,2,6,1,0,1,1,1,1,1,0 0,0,5,2,2,8,3,0,0,1,1,2,1,0 3,1,12,1,0,9,2,0,1,1,1,1,1,0 0,0,12,1,2,3,1,0,0,1,1,2,1,0 1,0,0,3,0,4,2,0,1,1,1,0,1,1 0,0,1,2,2,2,1,0,1,1,1,2,1,0 1,1,10,3,0,4,2,0,1,1,1,2,1,0 1,0,1,2,0,1,2,0,1,1,1,1,1,0 0,2,12,1,2,2,1,0,1,1,1,2,1,0 1,0,1,2,2,1,1,0,1,1,1,0,1,0 2,0,7,1,4,6,5,0,0,1,1,2,1,0 2,0,3,2,0,1,2,0,1,1,1,1,1,1 1,2,4,3,0,5,2,0,1,1,1,1,1,1 0,0,10,3,0,4,0,0,0,1,1,0,1,1 0,0,3,2,1,6,4,0,1,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,1 2,4,3,2,0,8,0,0,0,1,1,1,1,0 2,0,3,2,0,10,2,0,1,1,1,2,1,0 1,0,5,2,2,3,3,0,1,1,1,1,1,1 0,0,9,1,0,7,2,0,1,1,1,0,1,0 3,0,4,3,0,3,2,0,1,1,1,1,1,1 2,0,6,2,0,7,2,0,1,1,1,2,1,0 0,0,12,1,2,6,1,0,1,1,1,0,1,0 1,4,10,3,0,5,0,0,0,1,1,2,1,1 0,4,3,2,0,1,1,4,1,1,1,0,1,0 2,1,10,3,0,3,0,0,0,1,1,1,1,0 0,0,2,1,2,6,3,3,1,1,1,2,1,0 1,5,1,2,3,1,3,0,1,1,1,2,1,0 1,0,10,3,2,4,3,0,1,1,1,1,1,1 0,0,0,3,2,3,4,0,0,1,1,0,1,0 0,0,7,1,2,3,5,4,0,1,1,2,1,0 1,0,3,2,5,8,4,1,1,1,1,1,1,0 1,0,1,2,1,7,1,4,1,1,1,0,1,0 1,0,1,2,2,8,3,0,1,1,1,1,1,0 1,1,4,3,0,5,2,0,1,1,1,2,1,0 1,4,0,3,1,5,5,0,0,1,1,0,1,0 2,0,3,2,0,6,2,0,1,1,1,2,1,0 1,1,3,2,0,4,2,0,1,1,1,1,1,0 0,0,0,3,2,2,3,0,0,1,1,1,1,0 0,3,1,2,1,4,3,2,1,1,1,0,1,0 1,0,6,2,2,5,3,0,0,1,1,2,1,0 0,0,3,2,2,7,1,0,0,1,1,0,1,0 1,0,1,2,1,2,3,0,0,1,1,2,1,0 0,0,3,2,2,2,3,0,0,1,1,2,1,0 0,0,1,2,1,2,5,4,0,1,1,2,1,0 0,0,12,1,2,9,3,0,1,1,1,0,1,0 1,0,3,2,1,1,3,0,1,1,1,1,1,0 1,2,3,2,0,3,2,0,1,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,0,1,0 0,0,6,2,1,5,5,0,0,1,1,0,1,0 2,5,5,2,1,8,3,0,0,1,1,2,1,0 0,0,2,1,2,3,1,0,0,1,1,2,1,0 2,0,1,2,0,0,2,0,1,1,1,0,1,1 0,0,12,1,2,2,1,0,1,1,1,2,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,0,3,2,8,1,4,0,1,1,2,1,0 1,0,2,1,1,9,5,0,1,1,1,2,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,0 0,0,3,2,0,4,2,0,1,1,1,1,1,0 0,0,0,3,2,8,5,1,0,1,1,0,1,0 0,0,6,2,2,9,1,0,1,1,1,0,1,0 2,0,12,1,1,8,3,0,0,1,1,2,1,0 0,1,6,2,0,3,2,0,1,1,1,1,1,0 2,3,3,2,1,5,3,0,1,1,1,0,1,0 0,0,3,2,2,2,1,0,1,1,1,2,1,0 1,0,1,2,0,10,2,0,1,1,1,1,1,0 3,0,1,2,0,3,2,0,1,1,1,2,1,1 0,0,6,2,2,10,1,4,1,1,1,0,1,0 1,0,6,2,2,1,3,0,1,1,1,1,1,0 0,0,1,2,0,4,2,0,1,1,1,1,1,1 1,4,6,2,0,4,2,0,1,1,1,1,1,0 0,0,1,2,2,3,5,0,0,1,1,2,1,0 1,0,6,2,2,3,3,0,0,1,1,1,1,1 0,0,0,3,0,4,2,0,1,1,1,1,1,1 3,0,6,2,0,8,2,0,1,1,1,1,1,1 2,3,1,2,0,1,2,0,1,1,1,0,1,1 0,0,0,3,2,4,1,0,0,1,1,0,1,0 0,0,5,2,2,5,3,1,0,1,1,2,1,0 1,4,1,2,1,8,5,4,0,1,1,0,1,0 1,0,3,2,3,2,3,0,0,1,1,2,1,0 1,1,3,2,0,9,2,0,1,1,1,2,1,0 1,3,1,2,3,5,3,4,0,1,1,0,1,1 1,0,1,2,2,4,3,0,0,1,1,0,1,0 0,5,10,3,0,0,2,0,1,1,1,1,1,0 0,0,7,1,0,1,2,0,1,1,1,2,1,0 2,0,2,1,0,10,2,0,1,1,1,0,1,0 1,0,1,2,1,2,3,0,0,1,1,0,1,0 1,4,0,3,0,5,2,0,1,1,1,1,1,1 0,5,1,2,2,5,3,0,0,1,1,2,1,0 1,0,7,1,0,10,2,0,1,1,1,1,1,1 1,0,3,2,2,2,3,0,0,1,1,1,1,0 0,0,3,2,2,6,1,0,1,1,1,0,1,0 1,1,6,2,0,9,2,0,1,1,1,1,1,1 1,0,1,2,0,1,2,0,1,1,1,0,1,1 0,1,0,3,1,1,3,0,1,1,1,1,1,0 1,5,0,3,0,4,2,0,1,1,1,2,1,1 0,0,6,2,2,6,1,0,1,1,1,0,1,0 2,0,3,2,4,1,3,0,0,1,1,0,1,0 1,0,3,2,3,8,3,0,0,1,1,0,1,0 1,0,11,0,2,7,4,0,0,1,1,0,1,0 0,5,6,2,0,12,2,0,1,1,1,0,1,0 0,0,1,2,1,3,3,0,1,1,1,1,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 1,0,3,2,0,6,2,0,1,1,1,0,1,1 1,1,1,2,0,1,2,0,1,1,1,0,1,0 2,0,3,2,0,10,2,0,1,1,1,1,1,1 1,0,3,2,0,10,2,0,1,1,1,0,1,0 0,1,1,2,2,9,3,0,1,1,1,2,1,0 0,0,0,3,2,3,1,1,1,1,1,2,1,0 1,0,1,2,1,10,3,0,1,1,1,1,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,0,3,2,8,1,0,0,1,1,0,1,0 0,3,5,2,2,8,1,4,1,1,1,2,1,0 0,4,0,3,2,5,1,4,0,1,1,2,1,0 0,0,1,2,2,0,1,3,0,1,1,2,1,0 0,0,3,2,2,2,5,0,0,1,1,1,1,0 1,0,6,2,1,7,1,0,0,1,1,0,1,0 2,0,1,2,1,1,3,0,1,1,1,0,1,0 1,0,0,3,1,7,4,0,1,1,1,1,1,0 0,1,3,2,0,1,2,0,1,1,1,1,1,0 0,4,3,2,0,2,2,2,1,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,1,1,0 0,0,10,3,2,2,3,0,0,1,1,2,1,0 1,1,3,2,3,1,3,0,1,1,1,1,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,1 2,1,1,2,0,5,2,0,1,1,1,1,1,0 1,3,1,2,3,4,5,0,0,1,1,1,1,0 0,0,5,2,2,4,1,2,1,1,1,2,1,0 1,2,10,3,2,4,3,0,0,1,1,2,1,1 2,0,3,2,0,1,2,0,1,1,1,1,1,0 0,0,6,2,0,1,2,0,1,1,1,0,1,0 1,0,3,2,4,1,3,0,1,1,1,0,1,0 2,0,8,0,1,2,3,0,0,1,1,0,1,0 2,0,11,0,0,2,2,0,1,1,1,0,1,0 0,2,3,2,1,6,1,0,1,1,1,2,1,0 1,0,1,2,1,2,3,0,0,1,1,2,1,0 0,0,1,2,2,8,1,0,0,1,1,0,1,0 1,5,10,3,0,12,2,0,1,1,1,0,1,1 0,4,1,2,2,2,1,0,1,1,1,2,1,0 2,0,9,1,0,1,0,4,0,1,1,0,1,0 2,0,0,3,0,3,2,0,1,1,1,1,1,1 0,0,10,3,0,3,2,0,1,1,1,1,1,1 0,1,3,2,2,1,1,0,1,1,1,2,1,0 0,0,3,2,0,1,2,0,1,1,1,1,1,0 0,0,3,2,2,3,3,0,1,1,1,2,1,0 2,0,6,2,0,2,2,0,1,1,1,2,1,0 0,0,0,3,2,3,3,0,1,1,1,1,1,0 0,0,3,2,2,2,3,0,1,1,1,2,1,0 0,1,3,2,0,6,1,0,1,1,1,0,1,0 0,0,1,2,2,2,3,0,0,1,1,0,1,0 0,0,0,3,0,5,2,0,1,1,1,1,1,0 0,0,10,3,2,5,3,0,0,1,1,1,1,0 2,0,9,1,0,1,2,0,1,1,1,0,1,0 0,0,13,3,0,5,2,0,1,1,1,1,1,1 0,5,0,3,0,1,2,0,1,1,1,1,1,1 0,0,0,3,0,8,0,1,0,1,1,1,1,1 2,0,3,2,1,2,4,0,0,1,1,1,1,0 1,2,1,2,0,3,2,0,1,1,1,1,1,1 1,0,6,2,0,4,2,0,1,1,1,0,1,0 0,0,2,1,2,2,1,0,0,1,1,2,1,0 1,0,1,2,0,4,0,0,0,1,1,0,1,1 1,3,1,2,0,0,2,0,1,1,1,0,1,1 2,0,10,3,0,4,2,0,1,1,1,1,1,0 1,5,6,2,1,8,1,0,0,1,1,2,1,0 1,1,4,3,2,5,3,0,1,1,1,2,1,0 0,0,1,2,1,2,3,0,1,1,1,1,1,0 1,1,5,2,0,8,2,0,1,1,1,0,1,0 1,0,3,2,0,6,2,0,1,1,1,1,1,1 1,0,1,2,0,1,2,0,1,1,1,0,1,0 3,3,3,2,1,8,3,0,0,1,1,2,1,1 0,0,3,2,1,0,5,0,0,1,1,1,1,0 0,0,0,3,0,4,2,0,1,1,1,0,1,0 1,0,4,3,1,5,3,4,0,1,1,1,1,1 0,0,5,2,0,4,2,0,1,1,1,1,1,1 1,0,1,2,1,7,3,0,1,1,1,0,1,0 1,0,4,3,0,0,2,0,1,1,1,1,1,1 0,0,3,2,0,1,2,4,1,1,1,0,1,0 1,4,0,3,0,5,2,0,1,1,1,1,1,1 0,0,1,2,0,6,2,0,1,1,1,0,1,0 2,0,3,2,0,10,2,0,1,1,1,0,1,0 0,0,12,1,0,10,2,0,1,1,1,1,1,1 0,0,3,2,2,1,5,0,0,1,1,0,1,0 1,0,0,3,0,5,0,0,0,1,1,2,1,1 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,0,1,0 1,0,3,2,3,3,3,0,0,1,1,0,1,0 0,0,3,2,2,8,4,0,0,1,1,1,1,0 1,0,1,2,1,2,5,0,0,1,1,2,1,0 0,0,5,2,1,4,5,0,0,1,1,2,1,0 1,2,1,2,5,8,5,0,0,1,1,2,1,0 1,0,1,2,0,8,2,0,1,1,1,1,1,1 0,0,1,2,1,8,1,0,0,1,1,0,1,0 1,1,1,2,4,9,5,0,1,1,1,0,1,0 1,4,10,3,2,5,1,0,0,1,1,1,1,1 0,0,9,1,2,6,1,0,1,1,1,2,1,0 0,0,5,2,1,1,5,4,0,1,1,0,1,0 1,1,3,2,0,4,2,0,1,1,1,1,1,0 0,0,3,2,0,1,2,0,1,1,1,1,1,1 2,5,3,2,0,10,2,0,1,1,1,0,1,0 2,1,3,2,4,0,3,0,0,1,1,1,1,0 0,0,3,2,2,12,3,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,1,2,2,2,1,0,1,1,1,2,1,0 1,0,5,2,0,1,2,0,1,1,1,1,1,0 0,4,0,3,2,5,3,0,0,1,1,1,1,0 1,0,3,2,2,1,3,0,1,1,1,0,1,0 1,3,0,3,0,5,2,0,1,1,1,0,1,1 0,0,1,2,1,6,3,0,1,1,1,1,1,0 0,5,3,2,2,1,1,0,1,1,1,2,1,0 1,0,0,3,0,4,2,0,1,1,1,0,1,1 1,0,0,3,0,4,2,0,1,1,1,0,1,1 0,0,0,3,2,6,1,0,1,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,0,3,2,8,3,0,0,1,1,0,1,0 0,1,1,2,0,1,2,0,1,1,1,0,1,0 0,4,2,1,2,6,1,4,1,1,1,0,1,0 0,0,2,1,1,1,3,0,1,1,1,1,1,0 1,5,5,2,2,8,3,0,0,1,1,0,1,0 1,0,5,2,0,4,2,0,1,1,1,1,1,1 1,0,0,3,0,5,2,0,1,1,1,0,1,1 2,0,3,2,0,1,2,0,1,1,1,1,1,0 2,1,1,2,0,4,2,0,1,1,1,2,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,0 0,0,3,2,5,10,1,0,1,1,1,2,1,0 0,0,5,2,5,3,3,4,0,1,1,0,1,0 2,1,3,2,4,3,3,0,1,1,1,0,1,0 0,0,0,3,2,4,1,0,1,1,1,0,1,0 1,3,3,2,0,8,2,0,1,1,1,0,1,1 0,4,0,3,2,8,1,0,0,1,1,2,1,0 0,0,1,2,2,8,3,0,0,1,1,0,1,0 0,0,8,0,2,1,3,0,1,1,1,0,1,0 1,0,6,2,0,5,2,0,1,1,1,0,1,0 1,1,5,2,2,9,1,0,0,1,1,0,1,0 1,0,3,2,0,7,2,4,1,1,1,0,1,0 2,1,1,2,4,4,3,0,0,1,1,1,1,0 0,0,3,2,1,2,3,0,0,1,1,2,1,0 3,4,8,0,0,12,2,0,1,1,1,0,1,0 1,5,1,2,2,2,3,4,0,1,1,2,1,0 3,2,10,3,0,4,2,0,1,1,1,1,1,1 0,3,0,3,2,4,3,0,1,1,1,1,1,1 3,4,8,0,4,8,3,0,0,1,1,0,1,0 2,0,3,2,1,11,5,4,0,1,1,2,1,0 1,5,3,2,1,8,3,0,0,1,1,2,1,0 0,0,3,2,2,8,1,0,0,1,1,0,1,0 1,0,9,1,0,3,2,0,1,1,1,0,1,0 1,0,3,2,1,2,3,0,1,1,1,0,1,0 1,0,10,3,1,4,5,0,0,1,1,0,1,0 0,0,2,1,3,3,3,0,1,1,1,0,1,0 0,0,3,2,0,7,2,0,1,1,1,1,1,0 2,0,3,2,2,3,1,0,1,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,0 1,0,3,2,2,10,1,4,1,1,1,0,1,0 0,3,2,1,2,8,5,4,0,1,1,0,1,0 2,0,1,2,3,0,4,4,0,1,1,0,1,0 0,0,1,2,0,8,0,0,0,1,1,0,1,1 1,0,13,3,0,5,2,0,1,1,1,1,1,1 2,4,1,2,0,4,2,0,1,1,1,1,1,0 0,0,3,2,0,6,2,0,1,1,1,1,1,0 1,0,0,3,1,3,5,0,0,1,1,1,1,0 1,0,3,2,2,8,3,1,0,1,1,2,1,0 1,0,0,3,1,8,5,0,1,1,1,0,1,0 2,0,12,1,0,1,2,0,1,1,1,0,1,0 0,0,2,1,0,1,1,0,1,1,1,2,1,0 0,5,3,2,2,2,4,0,1,1,1,0,1,0 1,0,6,2,0,10,2,0,1,1,1,1,1,1 0,0,1,2,2,8,5,1,0,1,1,0,1,0 2,0,2,1,4,10,5,0,0,1,1,0,1,0 0,0,1,2,2,7,3,0,0,1,1,1,1,0 1,5,10,3,2,5,3,0,0,1,1,0,1,0 1,1,4,3,0,5,2,0,1,1,1,0,1,1 0,0,1,2,2,6,3,0,1,1,1,2,1,0 2,0,3,2,5,11,3,4,0,1,1,2,1,0 0,0,3,2,2,4,1,0,0,1,1,0,1,0 2,3,5,2,0,4,2,1,1,1,1,0,1,1 0,0,5,2,0,5,4,0,1,1,1,0,1,1 1,4,1,2,0,12,2,0,1,1,1,2,1,0 0,0,1,2,2,3,1,0,1,1,1,2,1,0 0,4,6,2,0,1,2,0,1,1,1,0,1,0 1,2,6,2,1,9,3,0,1,1,1,1,1,0 1,0,3,2,1,3,5,0,0,1,1,1,1,0 0,0,0,3,2,3,3,0,1,1,1,1,1,1 1,0,3,2,3,6,5,0,1,1,1,0,1,0 0,0,3,2,0,2,2,0,1,1,1,1,1,0 1,0,3,2,1,0,5,4,0,1,1,1,1,0 0,0,5,2,2,8,4,0,1,1,1,2,1,0 2,4,1,2,0,1,2,0,1,1,1,1,1,1 1,0,0,3,0,3,2,0,1,1,1,1,1,1 0,0,0,3,2,8,3,0,0,1,1,2,1,0 1,0,0,3,0,1,2,0,1,1,1,0,1,1 2,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,1,2,2,3,1,0,0,1,1,2,1,0 2,0,2,1,0,12,2,0,1,1,1,2,1,0 1,0,10,3,1,3,5,3,0,1,1,2,1,0 1,4,3,2,1,8,5,0,0,1,1,2,1,0 0,0,1,2,0,1,2,0,1,1,1,0,1,1 1,1,3,2,2,8,3,0,0,1,1,1,1,0 1,4,3,2,0,12,2,0,1,1,1,1,1,1 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,10,3,0,3,2,0,1,1,1,0,1,0 0,0,10,3,2,0,3,0,1,1,1,1,1,0 1,5,0,3,0,5,0,0,0,1,1,0,1,1 0,0,0,3,2,4,3,0,1,1,1,0,1,0 2,4,2,1,0,4,2,0,1,1,1,0,1,1 1,5,6,2,0,0,2,0,1,1,1,0,1,0 0,5,1,2,2,10,1,0,1,1,1,2,1,0 1,0,4,3,0,4,2,0,1,1,1,1,1,1 2,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,11,0,0,9,2,0,1,1,1,0,1,0 2,0,3,2,4,2,3,0,0,1,1,1,1,0 0,0,3,2,2,3,1,0,0,1,1,2,1,0 0,5,0,3,0,12,2,4,1,1,1,0,1,0 1,0,3,2,0,3,2,0,1,1,1,1,1,0 0,0,3,2,2,2,1,0,1,1,1,2,1,0 0,0,1,2,2,4,1,0,0,1,1,0,1,0 1,5,3,2,0,2,2,4,1,1,1,0,1,0 2,0,14,0,0,1,2,0,1,1,1,0,1,0 0,0,3,2,0,6,2,0,1,1,1,0,1,0 2,0,3,2,2,4,3,0,0,1,1,1,1,0 0,0,1,2,2,3,4,0,0,1,1,0,1,0 0,0,0,3,0,5,0,0,0,1,1,2,1,1 0,0,3,2,2,10,3,0,1,1,1,0,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 0,0,1,2,0,10,2,1,1,1,1,0,1,0 1,0,3,2,0,4,2,0,1,1,1,1,1,1 0,0,6,2,2,8,5,0,0,1,1,0,1,0 2,1,1,2,0,3,2,0,1,1,1,2,1,0 0,0,0,3,2,3,3,0,1,1,1,0,1,1 0,0,1,2,2,8,3,0,0,1,1,2,1,0 1,1,0,3,0,4,0,0,0,1,1,2,1,0 0,0,3,2,3,6,1,0,0,1,1,2,1,0 1,4,10,3,0,4,2,0,1,1,1,0,1,1 0,4,1,2,0,5,2,3,1,1,1,0,1,0 0,0,0,3,2,3,3,0,0,1,1,1,1,0 0,1,3,2,2,1,3,0,1,1,1,1,1,0 1,0,1,2,1,8,5,0,0,1,1,0,1,0 1,0,3,2,0,7,2,4,1,1,1,1,1,0 1,0,1,2,0,8,2,0,1,1,1,0,1,1 0,0,0,3,2,6,1,0,1,1,1,1,1,0 2,0,8,0,1,3,3,0,0,1,1,0,1,0 2,0,8,0,0,10,2,0,1,1,1,1,1,1 0,0,1,2,0,3,2,0,1,1,1,1,1,1 0,0,0,3,0,6,2,0,1,1,1,1,1,0 2,1,3,2,0,4,2,0,1,1,1,1,1,0 0,0,3,2,1,8,3,0,0,1,1,1,1,0 2,0,3,2,0,1,2,0,1,1,1,0,1,1 0,0,9,1,2,3,3,0,1,1,1,1,1,0 1,2,3,2,2,5,5,0,0,1,1,2,1,0 1,0,1,2,0,3,2,0,1,1,1,2,1,1 2,4,3,2,0,1,2,0,1,1,1,0,1,1 2,1,10,3,0,3,2,0,1,1,1,0,1,1 0,0,0,3,2,4,3,0,1,1,1,1,1,0 1,0,3,2,0,4,2,0,1,1,1,1,1,1 1,0,3,2,0,3,2,0,1,1,1,0,1,1 0,0,3,2,2,10,1,0,1,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,3,2,2,3,4,0,0,1,1,2,1,0 0,0,1,2,2,4,3,0,0,1,1,0,1,0 1,3,1,2,0,0,2,0,1,1,1,1,1,1 0,0,1,2,2,7,1,0,0,1,1,2,1,0 0,0,3,2,2,2,1,4,1,1,1,0,1,0 1,5,0,3,2,4,3,0,0,1,1,1,1,0 2,0,0,3,0,1,2,0,1,1,1,0,1,1 0,0,3,2,0,6,2,0,1,1,1,0,1,0 0,5,1,2,2,8,3,0,0,1,1,2,1,0 1,0,3,2,0,9,2,0,1,1,1,1,1,1 0,0,1,2,2,2,1,0,0,1,1,2,1,0 0,0,1,2,2,2,1,0,1,1,1,2,1,0 0,1,7,1,2,9,4,3,0,1,1,0,1,0 0,0,10,3,2,5,3,1,1,1,1,2,1,0 0,0,0,3,2,4,3,0,1,1,1,1,1,0 1,0,0,3,2,5,3,0,1,1,1,1,1,1 0,0,3,2,2,2,3,1,1,1,1,1,1,0 0,0,1,2,2,3,3,0,0,1,1,1,1,0 1,0,0,3,0,8,2,0,1,1,1,0,1,1 0,0,3,2,2,0,3,0,1,1,1,0,1,0 1,3,12,1,1,8,5,0,0,1,1,1,1,0 2,1,3,2,0,7,2,0,1,1,1,0,1,0 0,0,2,1,2,3,3,0,0,1,1,2,1,0 1,3,0,3,0,5,2,0,1,1,1,0,1,1 0,0,1,2,2,6,3,0,1,1,1,1,1,0 1,0,6,2,1,3,3,0,1,1,1,1,1,1 1,0,14,0,0,9,2,0,1,1,1,1,1,0 1,0,5,2,0,5,2,0,1,1,1,2,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,1 2,1,10,3,0,5,2,0,1,1,1,2,1,0 0,0,2,1,2,6,1,0,1,1,1,2,1,0 0,0,3,2,0,8,2,0,1,1,1,0,1,1 1,0,3,2,0,3,2,0,1,1,1,0,1,0 2,1,0,3,0,9,2,0,1,1,1,2,1,0 0,0,3,2,2,2,5,4,1,1,1,0,1,0 2,1,3,2,4,4,3,0,0,1,1,1,1,1 0,0,0,3,0,8,2,0,1,1,1,0,1,0 0,0,5,2,0,7,2,0,1,1,1,1,1,1 1,0,6,2,4,4,5,0,0,1,1,0,1,1 2,0,1,2,0,3,2,0,1,1,1,2,1,0 1,3,3,2,1,9,4,0,1,1,1,0,1,0 1,3,1,2,0,4,2,0,1,1,1,0,1,0 0,0,3,2,5,8,5,0,0,1,1,0,1,0 0,0,1,2,0,7,0,0,0,1,1,0,1,0 0,0,6,2,3,0,1,0,0,1,1,0,1,0 2,2,0,3,0,3,2,0,1,1,1,0,1,1 2,0,3,2,2,12,3,0,1,1,1,0,1,0 2,0,3,2,0,10,2,4,1,1,1,0,1,1 1,0,1,2,0,1,2,0,1,1,1,1,1,0 1,0,10,3,2,5,3,0,0,1,1,1,1,0 0,5,0,3,0,5,2,0,1,1,1,1,1,1 0,0,3,2,2,1,5,0,1,1,1,0,1,0 0,0,1,2,3,3,3,0,1,1,1,1,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,1 1,1,3,2,0,4,2,0,1,1,1,0,1,1 1,0,1,2,0,0,2,4,1,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,0,3,2,8,3,4,0,1,1,0,1,0 1,0,14,0,0,1,2,0,1,1,1,1,1,0 2,1,3,2,1,4,3,0,1,1,1,1,1,1 0,0,6,2,0,5,0,0,0,1,1,2,1,1 0,0,5,2,1,4,3,0,0,1,1,1,1,0 0,0,3,2,2,8,1,0,0,1,1,2,1,0 2,0,5,2,0,3,2,0,1,1,1,1,1,1 0,0,1,2,2,9,3,0,0,1,1,0,1,0 0,0,1,2,2,8,5,4,0,1,1,0,1,0 0,0,3,2,2,4,5,4,0,1,1,1,1,0 1,0,3,2,1,8,3,4,0,1,1,2,1,0 0,2,0,3,0,6,2,0,1,1,1,1,1,1 0,5,0,3,0,5,2,0,1,1,1,0,1,1 1,0,7,1,0,1,2,0,1,1,1,0,1,1 0,4,3,2,2,1,1,4,1,1,1,0,1,0 0,0,0,3,2,4,3,0,1,1,1,1,1,0 1,0,0,3,1,5,3,0,1,1,1,2,1,1 1,4,3,2,0,12,2,0,1,1,1,1,1,1 1,0,1,2,1,3,3,0,1,1,1,0,1,0 1,0,3,2,0,2,2,0,1,1,1,1,1,0 2,0,12,1,4,8,4,0,1,1,1,2,1,0 0,0,3,2,1,7,3,0,0,1,1,0,1,0 1,0,3,2,2,1,4,0,1,1,1,0,1,0 0,0,0,3,2,5,3,0,0,1,1,2,1,0 1,0,3,2,5,4,3,0,1,1,1,0,1,0 0,1,5,2,0,5,2,0,1,1,1,0,1,0 0,0,5,2,2,1,3,0,1,1,1,2,1,0 0,1,3,2,2,1,5,0,1,1,1,0,1,0 1,0,1,2,2,2,5,4,0,1,1,0,1,0 2,0,3,2,0,8,0,0,0,1,1,2,1,1 2,0,1,2,0,4,2,0,1,1,1,1,1,1 0,0,1,2,1,0,1,4,0,1,1,0,1,0 1,0,1,2,2,3,1,0,0,1,1,1,1,0 1,1,8,0,0,10,2,0,1,1,1,0,1,0 0,0,0,3,2,0,3,0,1,1,1,2,1,0 0,0,0,3,0,5,2,1,1,1,1,1,1,1 0,0,1,2,2,3,3,1,0,1,1,1,1,0 2,1,14,0,0,10,2,0,1,1,1,1,1,0 1,0,1,2,0,9,2,0,1,1,1,1,1,0 0,0,3,2,2,6,3,0,1,1,1,0,1,0 1,2,3,2,0,3,2,0,1,1,1,1,1,0 0,0,11,0,5,11,3,0,0,1,1,0,1,0 1,0,0,3,1,2,3,0,0,1,1,1,1,0 1,0,1,2,0,3,2,0,1,1,1,1,1,1 1,0,0,3,0,8,0,0,0,1,1,1,1,1 0,0,0,3,0,5,2,0,1,1,1,0,1,1 0,0,0,3,2,2,1,0,1,1,1,2,1,0 2,0,9,1,0,7,2,4,1,1,1,0,1,1 1,4,10,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,2,3,1,0,0,1,1,2,1,0 1,0,9,1,1,1,3,0,1,1,1,0,1,0 2,0,3,2,2,2,1,4,0,1,1,0,1,0 0,0,2,1,2,3,1,0,0,1,1,2,1,0 0,0,3,2,2,3,3,0,1,1,1,1,1,0 1,0,6,2,2,8,4,4,0,1,1,0,1,0 0,0,12,1,2,6,1,4,1,1,1,0,1,0 0,4,10,3,0,5,2,0,1,1,1,2,1,0 0,0,6,2,2,8,1,0,0,1,1,0,1,0 0,0,3,2,2,10,3,0,1,1,1,1,1,0 0,0,6,2,2,6,3,0,1,1,1,0,1,0 0,0,3,2,2,1,5,0,1,1,1,0,1,0 1,3,0,3,1,0,5,0,0,1,1,1,1,0 0,0,5,2,1,0,3,0,0,1,1,0,1,0 1,0,13,3,0,5,2,0,1,1,1,1,1,1 2,0,14,0,3,6,3,4,1,1,1,0,1,0 0,0,0,3,0,8,2,0,1,1,1,1,1,1 1,0,8,0,2,7,3,0,1,1,1,1,1,0 2,0,1,2,0,7,2,0,1,1,1,0,1,1 1,0,1,2,1,3,3,0,0,1,1,1,1,0 0,0,3,2,0,4,2,0,1,1,1,0,1,1 0,0,0,3,2,5,3,0,1,1,1,1,1,1 1,0,10,3,2,5,3,0,1,1,1,1,1,1 2,0,3,2,1,1,3,0,0,1,1,2,1,0 0,0,2,1,2,2,3,0,1,1,1,0,1,0 1,4,5,2,2,8,3,0,1,1,1,2,1,0 2,0,0,3,2,5,1,0,1,1,1,0,1,0 0,0,1,2,3,2,5,4,0,1,1,0,1,0 1,1,3,2,0,4,2,0,1,1,1,0,1,0 3,0,1,2,4,3,3,0,0,1,1,2,1,0 0,0,3,2,2,9,1,0,1,1,1,0,1,0 0,0,1,2,0,6,2,4,1,1,1,0,1,0 1,0,3,2,0,3,2,0,1,1,1,1,1,0 0,0,3,2,0,2,0,0,0,1,1,1,1,0 2,4,1,2,1,12,3,0,0,1,1,2,1,0 1,0,10,3,0,3,2,0,1,1,1,1,1,0 1,2,0,3,0,3,2,0,1,1,1,0,1,1 2,0,1,2,0,1,2,0,1,1,1,0,1,0 1,2,1,2,0,4,2,0,1,1,1,1,1,1 2,0,3,2,4,3,3,0,0,1,1,0,1,0 1,0,6,2,0,5,0,0,0,1,1,2,1,1 1,0,1,2,1,6,1,0,1,1,1,0,1,0 2,0,1,2,0,5,2,0,1,1,1,0,1,1 0,0,2,1,2,3,1,0,1,1,1,2,1,0 2,0,3,2,0,5,2,0,1,1,1,1,1,1 0,0,3,2,2,0,5,0,0,1,1,0,1,0 2,0,13,3,0,4,2,0,1,1,1,0,1,1 1,2,10,3,0,4,2,0,1,1,1,1,1,1 1,0,3,2,1,3,3,0,0,1,1,1,1,0 2,0,3,2,4,2,5,1,0,1,1,0,1,0 1,4,3,2,3,10,3,0,1,1,1,0,1,0 0,0,1,2,2,8,4,4,1,1,1,0,1,0 0,1,3,2,1,7,3,0,1,1,1,1,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,5,2,2,3,1,0,0,1,1,2,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,1 0,5,0,3,0,2,0,0,0,1,1,0,1,0 0,0,9,1,2,3,1,0,0,1,1,2,1,0 0,0,3,2,2,7,4,0,1,1,1,0,1,0 0,0,9,1,0,1,2,0,1,1,1,0,1,0 1,5,1,2,2,9,3,4,1,1,1,0,1,0 0,0,1,2,2,1,5,0,1,1,1,0,1,0 0,0,6,2,0,3,2,0,1,1,1,0,1,0 0,5,1,2,2,2,1,0,0,1,1,2,1,0 1,1,0,3,2,9,3,0,0,1,1,0,1,0 0,0,3,2,2,3,3,4,0,1,1,2,1,0 0,1,0,3,0,4,2,0,1,1,1,0,1,1 1,1,0,3,0,9,2,0,1,1,1,1,1,0 0,0,3,2,0,5,2,0,1,1,1,1,1,0 0,0,3,2,2,7,1,0,1,1,1,0,1,0 0,5,3,2,1,5,5,0,0,1,1,0,1,0 0,0,0,3,2,3,3,0,1,1,1,0,1,1 0,4,1,2,2,5,1,0,0,1,1,2,1,0 0,0,0,3,2,4,1,0,1,1,1,0,1,0 0,0,3,2,2,2,1,0,0,1,1,0,1,0 2,0,5,2,0,10,2,0,1,1,1,2,1,1 2,0,3,2,0,1,2,0,1,1,1,1,1,1 1,0,5,2,3,3,5,0,1,1,1,2,1,0 1,0,1,2,1,4,3,0,1,1,1,1,1,1 0,0,0,3,0,3,2,0,1,1,1,1,1,1 0,0,0,3,0,8,0,0,0,1,1,0,1,0 1,0,3,2,0,3,0,0,0,1,1,2,1,0 2,4,10,3,0,4,2,0,1,1,1,0,1,1 1,0,10,3,0,4,2,0,1,1,1,1,1,1 0,0,14,0,1,2,5,3,0,1,1,2,1,0 2,4,3,2,4,0,3,0,0,1,1,0,1,0 1,0,3,2,3,1,3,0,1,1,1,0,1,1 0,0,5,2,0,2,0,0,0,1,1,2,1,1 1,0,1,2,0,3,2,0,1,1,1,0,1,1 1,5,13,3,1,5,3,0,0,1,1,0,1,0 0,1,2,1,2,1,3,0,1,1,1,0,1,0 1,0,0,3,2,2,3,0,1,1,1,2,1,0 1,0,0,3,0,4,2,0,1,1,1,0,1,0 2,0,0,3,0,3,2,0,1,1,1,0,1,1 1,1,1,2,0,1,2,0,1,1,1,0,1,0 2,0,0,3,0,7,2,1,1,1,1,2,1,0 0,0,2,1,0,1,2,3,1,1,1,0,1,0 2,0,9,1,4,11,5,4,0,1,1,2,1,0 1,0,8,0,2,2,1,4,1,1,1,1,1,0 0,0,0,3,1,5,3,0,1,1,1,1,1,0 2,3,1,2,0,4,2,2,1,1,1,1,1,1 0,0,1,2,2,3,5,0,0,1,1,1,1,0 1,0,3,2,3,7,3,4,0,1,1,0,1,0 1,0,0,3,1,10,3,0,1,1,1,0,1,0 0,0,3,2,2,6,3,0,1,1,1,0,1,0 1,0,5,2,3,8,3,0,1,1,1,2,1,0 1,0,8,0,3,1,5,0,1,1,1,0,1,0 1,0,3,2,3,8,5,4,0,1,1,0,1,0 1,0,1,2,0,4,2,0,1,1,1,0,1,0 2,0,1,2,0,3,2,0,1,1,1,0,1,0 1,1,5,2,0,4,2,0,1,1,1,1,1,0 0,0,0,3,2,5,3,0,1,1,1,2,1,0 0,0,3,2,0,10,2,0,1,1,1,1,1,1 0,0,3,2,2,7,3,0,0,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,3,2,2,12,3,0,1,1,1,0,1,0 1,0,14,0,0,6,2,0,1,1,1,0,1,0 0,4,0,3,0,5,2,0,1,1,1,1,1,0 2,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,6,2,0,4,2,0,1,1,1,0,1,1 2,2,0,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,2,0,3,0,1,1,1,0,1,0 1,0,7,1,1,2,3,0,0,1,1,0,1,0 0,0,1,2,2,4,3,4,1,1,1,0,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,0 2,2,6,2,0,4,2,0,1,1,1,1,1,1 0,4,3,2,2,8,1,0,0,1,1,0,1,0 0,0,7,1,2,2,1,0,0,1,1,2,1,0 0,5,10,3,3,1,3,0,1,1,1,0,1,1 0,0,1,2,0,8,0,0,0,1,1,2,1,0 0,0,1,2,0,3,2,0,1,1,1,1,1,0 2,0,1,2,1,8,3,0,0,1,1,0,1,0 2,1,2,1,0,1,2,0,1,1,1,0,1,0 1,0,6,2,0,5,0,0,0,1,1,0,1,1 2,0,9,1,0,6,2,0,1,1,1,0,1,0 2,0,3,2,4,2,3,0,0,1,1,2,1,0 1,0,3,2,5,7,3,0,1,1,1,1,1,0 0,0,1,2,2,12,1,0,1,1,1,2,1,0 1,0,0,3,0,3,2,0,1,1,1,1,1,0 0,0,3,2,2,0,3,0,1,1,1,1,1,0 2,0,1,2,1,2,3,1,0,1,1,2,1,0 0,0,3,2,0,1,2,4,1,1,1,0,1,0 1,0,6,2,1,0,3,0,0,1,1,0,1,0 1,0,6,2,0,7,2,0,1,1,1,0,1,0 3,4,3,2,4,8,5,0,0,1,1,2,1,0 1,1,3,2,0,3,2,0,1,1,1,0,1,1 2,2,8,0,0,4,2,0,1,1,1,1,1,0 0,0,0,3,1,4,3,0,0,1,1,0,1,0 0,0,7,1,2,9,1,4,1,1,1,2,1,0 2,0,7,1,0,1,2,0,1,1,1,0,1,1 1,4,13,3,2,5,5,4,0,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 1,2,3,2,2,4,3,0,1,1,1,1,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 0,0,10,3,0,4,2,0,1,1,1,1,1,1 2,0,12,1,4,7,3,0,0,1,1,2,1,0 1,0,1,2,0,3,0,0,0,1,1,0,1,1 1,0,4,3,0,5,2,0,1,1,1,1,1,1 0,0,7,1,2,2,3,0,0,1,1,2,1,0 0,0,3,2,3,6,3,0,1,1,1,1,1,0 1,2,3,2,0,4,2,0,1,1,1,1,1,1 2,0,3,2,1,10,3,0,1,1,1,1,1,0 0,0,3,2,2,1,1,0,1,1,1,0,1,0 2,2,8,0,0,10,2,0,1,1,1,1,1,0 0,0,1,2,0,6,2,0,1,1,1,2,1,0 0,0,1,2,2,6,5,0,1,1,1,0,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 0,5,0,3,0,5,2,0,1,1,1,0,1,0 1,1,4,3,0,5,2,0,1,1,1,1,1,1 1,0,1,2,0,8,2,0,1,1,1,1,1,0 0,4,6,2,0,2,2,0,1,1,1,0,1,1 0,5,1,2,2,2,1,0,0,1,1,2,1,0 1,0,3,2,1,7,1,0,0,1,1,0,1,0 1,3,5,2,3,8,5,4,0,1,1,0,1,0 1,0,3,2,0,8,2,0,1,1,1,2,1,0 2,0,2,1,0,1,2,0,1,1,1,0,1,1 0,3,3,2,2,1,1,0,1,1,1,0,1,0 0,0,6,2,1,0,5,0,0,1,1,0,1,0 0,1,3,2,2,9,1,0,1,1,1,2,1,0 1,0,0,3,0,3,2,0,1,1,1,1,1,0 2,2,10,3,0,5,2,0,1,1,1,1,1,1 0,0,0,3,0,1,2,0,1,1,1,2,1,0 0,0,11,0,0,7,2,0,1,1,1,0,1,0 1,0,3,2,0,0,2,4,1,1,1,0,1,1 1,1,0,3,1,5,3,0,1,1,1,1,1,0 2,5,8,0,4,2,3,4,0,1,1,0,1,0 2,4,3,2,4,8,3,0,0,1,1,2,1,0 1,0,10,3,4,3,1,1,0,1,1,1,1,0 1,5,3,2,0,3,0,0,0,1,1,0,1,0 1,1,1,2,0,1,2,0,1,1,1,2,1,1 0,0,3,2,2,6,1,0,1,1,1,2,1,0 1,1,10,3,0,5,0,0,0,1,1,2,1,1 0,0,1,2,2,2,3,0,0,1,1,0,1,0 2,0,1,2,0,4,2,0,1,1,1,0,1,0 1,0,3,2,0,10,2,0,1,1,1,0,1,0 2,0,14,0,0,7,2,4,1,1,1,0,1,0 1,0,11,0,1,2,3,0,0,1,1,2,1,0 0,0,3,2,1,8,5,4,0,1,1,0,1,0 0,0,3,2,2,2,4,0,0,1,1,0,1,0 0,4,6,2,2,12,3,1,0,1,1,1,1,0 1,4,0,3,0,5,0,4,0,1,1,2,1,1 0,0,3,2,0,10,2,0,1,1,1,0,1,1 0,0,1,2,2,8,3,0,0,1,1,2,1,0 1,3,0,3,2,0,5,0,1,1,1,0,1,0 0,3,0,3,3,0,5,0,1,1,1,0,1,0 2,0,3,2,2,3,3,0,0,1,1,0,1,0 1,0,3,2,1,1,5,0,1,1,1,0,1,0 0,1,1,2,0,4,2,0,1,1,1,2,1,1 0,0,6,2,1,4,5,0,1,1,1,0,1,0 2,0,3,2,0,7,2,0,1,1,1,2,1,0 0,0,1,2,0,1,2,0,1,1,1,1,1,0 0,0,3,2,0,9,2,0,1,1,1,1,1,0 0,0,3,2,2,2,5,0,0,1,1,2,1,0 1,1,3,2,0,4,2,0,1,1,1,1,1,0 1,0,1,2,1,4,3,0,0,1,1,0,1,0 0,0,3,2,2,1,1,4,1,1,1,0,1,0 0,1,10,3,2,4,3,4,0,1,1,1,1,1 3,0,8,0,0,3,2,0,1,1,1,2,1,0 0,0,13,3,0,0,2,1,1,1,1,0,1,0 1,0,12,1,0,10,2,0,1,1,1,1,1,0 1,1,0,3,0,0,2,0,1,1,1,0,1,1 0,0,2,1,2,6,1,0,1,1,1,2,1,0 0,0,3,2,2,2,5,0,1,1,1,0,1,0 1,0,3,2,2,8,3,0,0,1,1,1,1,0 0,0,0,3,2,8,5,4,0,1,1,1,1,0 2,0,3,2,0,1,2,0,1,1,1,0,1,0 0,2,1,2,0,3,2,0,1,1,1,2,1,0 0,0,0,3,2,2,3,0,0,1,1,2,1,0 1,4,10,3,0,5,2,0,1,1,1,1,1,1 0,1,3,2,1,1,3,0,1,1,1,1,1,1 2,3,1,2,0,4,2,0,1,1,1,0,1,1 0,0,2,1,3,3,3,3,0,1,1,2,1,0 1,0,3,2,0,10,2,0,1,1,1,0,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,1 0,0,3,2,0,7,2,0,1,1,1,0,1,0 1,0,0,3,0,3,2,0,1,1,1,1,1,1 0,0,1,2,0,10,2,0,1,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 2,0,3,2,0,10,2,0,1,1,1,0,1,0 0,0,0,3,0,1,2,0,1,1,1,0,1,1 1,0,1,2,0,4,2,0,1,1,1,0,1,1 0,0,3,2,2,1,1,0,1,1,1,0,1,0 0,0,1,2,0,3,0,0,0,1,1,0,1,1 0,0,3,2,0,8,0,0,0,1,1,2,1,1 1,0,4,3,2,5,3,0,1,1,1,0,1,1 0,0,3,2,2,2,1,0,1,1,1,2,1,0 0,0,3,2,2,5,5,0,0,1,1,2,1,0 0,0,1,2,0,3,2,0,1,1,1,0,1,0 0,0,2,1,2,2,1,0,0,1,1,2,1,0 1,0,1,2,1,0,5,4,0,1,1,0,1,0 0,0,1,2,2,1,1,0,1,1,1,0,1,0 0,0,0,3,0,5,2,0,1,1,1,0,1,0 0,0,1,2,0,6,2,0,1,1,1,1,1,0 0,0,6,2,2,5,3,0,0,1,1,2,1,0 2,0,8,0,5,2,3,0,0,1,1,2,1,0 1,0,3,2,4,2,3,0,0,1,1,0,1,0 2,4,5,2,0,2,2,0,1,1,1,2,1,0 0,0,0,3,2,3,1,0,0,1,1,2,1,0 0,0,1,2,1,1,1,0,1,1,1,0,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,6,2,0,2,2,0,1,1,1,2,1,1 0,0,6,2,0,5,0,0,0,1,1,0,1,1 2,0,3,2,0,10,2,0,1,1,1,0,1,0 0,0,3,2,2,3,3,4,0,1,1,2,1,0 1,2,0,3,0,4,2,0,1,1,1,1,1,1 0,0,1,2,2,2,1,0,0,1,1,2,1,0 0,0,0,3,2,4,1,0,0,1,1,2,1,0 0,0,6,2,0,1,2,1,1,1,1,0,1,1 2,0,12,1,0,5,2,0,1,1,1,0,1,0 1,0,3,2,1,1,3,4,1,1,1,0,1,0 1,0,3,2,1,2,5,1,1,1,1,0,1,0 0,0,0,3,2,5,3,0,1,1,1,0,1,0 0,0,2,1,2,3,1,0,0,1,1,2,1,0 1,0,11,0,4,2,5,0,0,1,1,0,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 1,4,3,2,0,6,2,4,1,1,1,0,1,0 2,2,3,2,0,3,2,0,1,1,1,1,1,1 0,0,0,3,2,3,5,4,1,1,1,1,1,0 0,0,1,2,0,3,2,1,1,1,1,0,1,1 0,0,1,2,0,1,2,0,1,1,1,1,1,0 0,0,3,2,0,6,2,0,1,1,1,1,1,0 0,0,12,1,0,6,2,0,1,1,1,0,1,0 0,0,12,1,0,7,2,0,1,1,1,0,1,0 0,5,0,3,2,8,3,4,0,1,1,0,1,0 2,1,0,3,0,5,2,0,1,1,1,2,1,1 2,0,1,2,2,5,3,0,0,1,1,2,1,0 1,4,10,3,0,5,0,4,0,1,1,2,1,1 0,0,1,2,2,1,3,0,1,1,1,0,1,0 0,0,3,2,2,2,1,0,1,1,1,0,1,0 2,1,3,2,0,1,2,0,1,1,1,0,1,0 0,0,5,2,2,2,1,0,0,1,1,2,1,0 0,0,10,3,0,4,2,0,1,1,1,1,1,0 1,1,0,3,3,10,3,0,1,1,1,1,1,0 2,0,1,2,0,4,2,0,1,1,1,1,1,1 1,0,3,2,0,3,2,0,1,1,1,1,1,1 0,0,0,3,2,2,3,0,1,1,1,0,1,0 1,4,8,0,0,7,2,0,1,1,1,0,1,0 1,0,13,3,4,5,3,0,0,1,1,1,1,1 1,0,3,2,2,7,3,4,0,1,1,2,1,0 0,0,3,2,1,2,3,0,0,1,1,2,1,0 2,1,8,0,0,1,2,0,1,1,1,1,1,0 2,0,3,2,1,5,3,0,0,1,1,1,1,0 1,5,0,3,1,4,3,0,1,1,1,1,1,1 1,0,1,2,5,10,5,0,1,1,1,0,1,0 1,3,1,2,1,8,5,1,0,1,1,0,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,0 2,0,1,2,0,4,2,0,1,1,1,1,1,1 0,0,3,2,2,8,1,0,0,1,1,2,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,0 0,0,4,3,2,2,3,0,0,1,1,2,1,0 1,0,5,2,0,4,2,0,1,1,1,1,1,1 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 0,5,6,2,0,0,2,0,1,1,1,0,1,0 1,3,4,3,0,8,2,0,1,1,1,1,1,1 1,0,3,2,1,0,5,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 2,0,3,2,4,11,4,4,0,1,1,2,1,0 2,0,4,3,0,5,0,0,0,1,1,1,1,1 2,4,1,2,4,2,3,0,0,1,1,1,1,0 0,3,5,2,2,0,3,1,0,1,1,1,1,1 0,0,2,1,3,6,4,0,1,1,1,0,1,0 1,4,1,2,0,8,0,0,0,1,1,1,1,0 0,0,3,2,2,8,1,0,0,1,1,0,1,0 1,0,12,1,0,1,2,0,1,1,1,0,1,0 0,0,3,2,0,7,0,0,0,1,1,0,1,0 0,0,3,2,2,7,3,0,1,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,0 0,2,3,2,2,2,4,0,1,1,1,2,1,0 3,0,8,0,0,6,2,0,1,1,1,2,1,0 0,1,2,1,0,5,2,2,1,1,1,2,1,0 1,1,4,3,0,5,2,0,1,1,1,1,1,1 0,0,3,2,0,8,2,4,1,1,1,0,1,0 0,0,13,3,0,5,2,0,1,1,1,1,1,1 1,1,0,3,0,3,2,0,1,1,1,1,1,1 0,0,3,2,2,7,1,0,1,1,1,1,1,0 1,5,3,2,0,7,2,1,1,1,1,0,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,1 0,0,2,1,2,6,1,0,1,1,1,2,1,0 1,1,3,2,0,5,2,0,1,1,1,1,1,1 1,0,0,3,0,5,0,0,0,1,1,0,1,1 2,0,14,0,0,8,2,4,1,1,1,0,1,0 1,0,1,2,0,3,2,0,1,1,1,1,1,0 1,2,6,2,0,2,2,0,1,1,1,1,1,0 1,2,4,3,0,5,2,0,1,1,1,1,1,1 1,0,10,3,0,3,2,0,1,1,1,2,1,0 1,0,2,1,0,7,2,0,1,1,1,2,1,0 2,1,3,2,3,9,3,0,1,1,1,1,1,0 1,0,1,2,0,4,0,1,0,1,1,0,1,1 0,0,3,2,2,7,3,0,1,1,1,0,1,0 0,0,1,2,2,2,1,0,1,1,1,0,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,1 1,0,3,2,2,8,3,0,0,1,1,2,1,0 1,0,3,2,0,1,2,4,1,1,1,1,1,0 0,0,10,3,0,5,0,0,0,1,1,1,1,1 2,0,0,3,0,3,2,1,1,1,1,1,1,1 1,0,0,3,0,3,2,0,1,1,1,1,1,1 2,0,2,1,0,7,2,4,1,1,1,0,1,0 0,0,0,3,0,4,2,0,1,1,1,0,1,1 1,0,10,3,5,4,3,1,1,1,1,2,1,1 0,0,0,3,0,5,2,0,1,1,1,0,1,1 0,3,3,2,2,5,1,0,0,1,1,0,1,0 3,0,8,0,0,9,2,0,1,1,1,2,1,0 0,0,3,2,2,4,3,0,0,1,1,1,1,0 1,4,10,3,0,4,2,0,1,1,1,1,1,1 1,0,1,2,0,8,0,0,0,1,1,2,1,0 2,5,1,2,0,5,2,1,1,1,1,1,1,1 0,1,3,2,0,4,2,0,1,1,1,2,1,0 0,0,2,1,2,6,1,0,1,1,1,0,1,0 1,4,1,2,0,10,2,4,1,1,1,0,1,0 0,4,10,3,2,5,3,0,0,1,1,0,1,0 2,0,10,3,1,4,3,0,0,1,1,1,1,1 2,4,12,1,0,4,2,0,1,1,1,0,1,0 0,0,1,2,2,3,3,0,1,1,1,2,1,0 0,5,12,1,2,1,5,0,1,1,1,0,1,0 0,0,3,2,2,8,1,0,0,1,1,0,1,0 0,0,3,2,0,2,2,4,1,1,1,0,1,0 0,0,2,1,2,6,1,0,1,1,1,2,1,0 1,0,1,2,0,4,2,0,1,1,1,1,1,1 1,0,3,2,0,2,2,0,1,1,1,0,1,1 0,0,1,2,2,8,1,0,0,1,1,2,1,0 0,0,1,2,0,3,0,0,0,1,1,0,1,0 1,0,9,1,4,7,3,0,1,1,1,0,1,1 0,0,6,2,2,7,1,0,1,1,1,0,1,0 2,0,10,3,0,8,2,0,1,1,1,0,1,0 0,3,3,2,1,8,3,4,0,1,1,0,1,0 0,0,5,2,2,6,1,0,1,1,1,2,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,1 2,1,1,2,0,3,2,0,1,1,1,1,1,1 1,0,1,2,0,1,2,0,1,1,1,0,1,0 2,5,1,2,1,8,3,0,0,1,1,0,1,0 1,0,5,2,1,3,3,0,1,1,1,0,1,0 0,0,0,3,0,0,2,0,1,1,1,0,1,0 0,0,3,2,2,12,5,0,0,1,1,2,1,0 0,1,3,2,2,9,5,0,1,1,1,1,1,0 1,0,3,2,0,4,2,0,1,1,1,0,1,0 0,0,3,2,2,8,3,0,0,1,1,0,1,0 0,0,10,3,2,5,3,0,1,1,1,1,1,0 1,0,1,2,0,8,2,0,1,1,1,0,1,0 0,0,0,3,2,3,1,4,0,1,1,0,1,0 0,0,1,2,1,3,5,4,0,1,1,0,1,0 2,1,6,2,0,4,2,0,1,1,1,2,1,0 1,0,10,3,0,5,2,0,1,1,1,2,1,1 2,1,6,2,0,4,2,0,1,1,1,2,1,0 2,4,3,2,2,2,3,0,1,1,1,0,1,0 0,0,5,2,0,1,2,0,1,1,1,0,1,0 0,0,2,1,2,8,1,0,0,1,1,2,1,0 1,4,2,1,0,1,2,0,1,1,1,0,1,0 1,0,3,2,0,1,2,4,1,1,1,0,1,1 1,2,5,2,0,4,2,0,1,1,1,1,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,0 0,0,2,1,2,2,3,0,0,1,1,2,1,0 2,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,0,3,2,4,3,0,1,1,1,2,1,0 1,0,1,2,1,8,5,0,0,1,1,2,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,1 0,0,12,1,2,7,1,0,1,1,1,0,1,0 0,0,1,2,2,0,3,0,1,1,1,0,1,0 0,0,3,2,1,0,5,0,0,1,1,0,1,0 1,2,0,3,0,4,2,0,1,1,1,0,1,1 0,0,3,2,0,8,2,0,1,1,1,0,1,1 1,0,3,2,5,2,5,0,0,1,1,2,1,0 0,5,0,3,2,5,3,0,1,1,1,2,1,0 2,0,0,3,0,5,2,0,1,1,1,2,1,1 0,5,1,2,2,6,1,0,1,1,1,0,1,0 0,0,2,1,2,2,1,4,1,1,1,2,1,0 0,0,3,2,1,3,3,0,1,1,1,2,1,0 0,0,2,1,0,6,2,0,1,1,1,0,1,0 0,0,9,1,2,6,4,0,1,1,1,0,1,0 1,0,3,2,2,10,3,0,1,1,1,1,1,0 0,0,14,0,2,2,3,0,0,1,1,0,1,0 1,2,5,2,0,4,2,0,1,1,1,1,1,1 2,1,0,3,1,3,3,0,1,1,1,2,1,0 0,0,3,2,2,8,5,0,0,1,1,0,1,0 0,0,1,2,2,3,3,0,1,1,1,2,1,0 0,0,2,1,0,12,2,0,1,1,1,0,1,0 3,1,6,2,1,5,3,0,0,1,1,1,1,1 2,1,2,1,4,4,3,0,0,1,1,1,1,1 1,0,1,2,0,6,2,0,1,1,1,0,1,0 0,0,1,2,3,8,1,0,0,1,1,0,1,0 1,0,3,2,0,3,2,0,1,1,1,1,1,1 0,5,3,2,2,8,5,0,0,1,1,0,1,0 2,0,1,2,0,6,2,0,1,1,1,1,1,0 1,0,12,1,0,1,2,0,1,1,1,0,1,0 1,0,3,2,1,10,3,0,1,1,1,1,1,0 1,1,5,2,2,3,1,0,1,1,1,1,1,0 2,0,14,0,0,10,2,0,1,1,1,2,1,0 1,0,12,1,0,7,2,4,1,1,1,0,1,0 1,0,0,3,0,1,2,0,1,1,1,1,1,0 0,5,10,3,2,5,3,0,0,1,1,0,1,0 0,0,0,3,0,3,2,0,1,1,1,1,1,0 1,0,1,2,4,8,3,0,0,1,1,1,1,0 1,4,1,2,1,0,5,0,0,1,1,2,1,0 1,0,12,1,0,10,2,0,1,1,1,0,1,0 0,0,10,3,2,4,3,0,0,1,1,2,1,0 1,0,0,3,0,5,2,0,1,1,1,0,1,1 2,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,2,1,2,3,1,4,0,1,1,2,1,0 2,0,3,2,0,10,2,0,1,1,1,1,1,1 0,0,1,2,0,8,2,0,1,1,1,1,1,0 1,0,3,2,1,1,5,4,1,1,1,1,1,0 1,0,3,2,0,8,2,0,1,1,1,1,1,0 1,0,10,3,2,5,3,0,1,1,1,1,1,1 2,0,8,0,4,10,3,4,1,1,1,0,1,0 0,3,6,2,2,5,3,0,0,1,1,0,1,0 0,0,2,1,2,2,3,0,1,1,1,0,1,0 1,3,0,3,0,5,2,1,1,1,1,0,1,1 2,1,3,2,0,9,2,0,1,1,1,1,1,0 1,0,1,2,0,3,2,0,1,1,1,1,1,1 1,0,3,2,0,2,2,0,1,1,1,2,1,0 0,0,2,1,2,2,1,0,1,1,1,2,1,0 2,0,3,2,1,12,3,0,1,1,1,2,1,0 1,0,6,2,0,1,2,0,1,1,1,0,1,1 3,4,11,0,4,9,3,1,1,1,1,2,1,0 0,0,1,2,2,8,3,0,0,1,1,1,1,0 0,0,3,2,0,3,2,0,1,1,1,1,1,0 1,0,7,1,1,10,3,0,1,1,1,0,1,0 0,5,3,2,2,2,5,0,0,1,1,1,1,0 0,1,1,2,0,4,2,0,1,1,1,1,1,0 2,1,10,3,3,9,3,0,1,1,1,2,1,0 1,0,3,2,1,2,3,0,0,1,1,0,1,0 1,0,0,3,1,2,5,1,0,1,1,0,1,0 1,1,0,3,0,4,0,0,0,1,1,2,1,1 1,0,7,1,0,6,2,0,1,1,1,0,1,0 0,0,6,2,2,8,1,4,0,1,1,0,1,0 1,1,1,2,0,5,2,0,1,1,1,1,1,1 0,0,3,2,0,10,0,0,0,1,1,1,1,0 0,0,1,2,2,2,3,0,0,1,1,2,1,0 2,0,1,2,0,3,2,0,1,1,1,2,1,0 0,0,0,3,2,1,5,0,0,1,1,0,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,1 0,0,1,2,1,8,3,0,0,1,1,2,1,0 0,0,1,2,2,2,3,0,1,1,1,1,1,0 0,0,0,3,0,0,2,0,1,1,1,0,1,1 2,4,3,2,4,8,3,0,0,1,1,0,1,0 0,0,1,2,0,1,2,0,1,1,1,1,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 2,0,3,2,0,10,2,0,1,1,1,0,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 1,0,1,2,2,3,3,0,1,1,1,1,1,0 1,0,1,2,0,5,2,0,1,1,1,0,1,1 1,0,10,3,2,5,3,0,1,1,1,0,1,0 0,5,10,3,2,5,1,0,1,1,1,2,1,0 0,0,7,1,2,6,1,0,1,1,1,0,1,0 2,3,0,3,0,4,2,0,1,1,1,0,1,1 0,0,7,1,2,6,1,0,1,1,1,2,1,0 1,0,3,2,2,10,3,0,1,1,1,0,1,0 1,0,7,1,0,1,2,0,1,1,1,1,1,0 1,0,13,3,1,3,3,0,1,1,1,1,1,1 0,0,1,2,0,8,0,4,0,1,1,0,1,0 1,1,10,3,1,10,3,0,1,1,1,1,1,1 1,0,3,2,3,7,5,0,0,1,1,0,1,0 1,0,3,2,0,8,2,0,1,1,1,0,1,0 1,0,0,3,0,8,2,0,1,1,1,1,1,1 0,0,3,2,0,6,2,0,1,1,1,0,1,0 0,0,1,2,2,3,5,0,0,1,1,2,1,0 1,0,3,2,0,3,2,0,1,1,1,1,1,0 1,0,3,2,0,8,2,0,1,1,1,1,1,0 0,0,5,2,2,8,5,1,1,1,1,2,1,0 1,0,5,2,1,1,5,0,1,1,1,0,1,0 1,0,0,3,0,8,2,4,1,1,1,1,1,1 0,4,3,2,1,2,1,4,0,1,1,0,1,0 0,0,3,2,2,3,1,0,1,1,1,0,1,0 0,4,9,1,2,8,1,4,0,1,1,2,1,0 0,0,0,3,2,0,1,0,0,1,1,2,1,0 2,0,3,2,0,2,2,0,1,1,1,0,1,0 1,0,13,3,0,5,2,0,1,1,1,1,1,1 2,0,0,3,1,8,3,0,0,1,1,2,1,0 1,1,12,1,0,1,2,0,1,1,1,0,1,0 1,0,1,2,1,8,3,0,1,1,1,1,1,0 2,0,10,3,0,4,2,0,1,1,1,1,1,1 2,0,8,0,0,3,2,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 1,2,0,3,0,4,2,0,1,1,1,1,1,1 1,0,3,2,2,6,4,0,1,1,1,0,1,0 2,0,3,2,1,5,3,0,0,1,1,0,1,0 0,0,3,2,2,8,5,0,0,1,1,0,1,0 0,1,3,2,0,9,2,0,1,1,1,1,1,0 1,0,3,2,0,10,2,0,1,1,1,0,1,0 0,4,0,3,0,5,2,0,1,1,1,0,1,1 1,0,3,2,1,4,3,0,0,1,1,1,1,0 0,0,6,2,1,0,3,0,0,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,1,2,2,8,3,0,1,1,1,1,1,0 1,1,3,2,3,9,3,0,1,1,1,1,1,0 2,0,1,2,0,5,2,0,1,1,1,0,1,1 0,0,6,2,2,1,5,0,1,1,1,0,1,1 0,0,1,2,2,9,5,0,1,1,1,1,1,0 1,1,10,3,0,4,0,0,0,1,1,2,1,1 0,4,1,2,0,0,2,0,1,1,1,1,1,1 0,0,6,2,2,8,4,0,1,1,1,0,1,0 2,0,3,2,0,4,2,0,1,1,1,2,1,0 2,0,3,2,0,4,2,0,1,1,1,0,1,0 1,0,12,1,0,7,2,4,1,1,1,1,1,0 2,0,4,3,0,4,2,0,1,1,1,1,1,1 2,2,3,2,0,8,0,0,0,1,1,2,1,1 1,0,10,3,0,5,2,0,1,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,0 1,0,3,2,1,0,3,0,1,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,2,1,2,2,1,0,0,1,1,2,1,0 0,0,1,2,0,6,2,0,1,1,1,2,1,0 0,4,1,2,1,0,5,0,0,1,1,0,1,0 2,2,12,1,0,4,2,0,1,1,1,0,1,1 2,0,1,2,0,3,2,0,1,1,1,1,1,0 0,0,3,2,0,8,0,0,0,1,1,2,1,0 1,5,10,3,2,8,3,0,0,1,1,0,1,0 1,1,12,1,3,4,5,0,0,1,1,2,1,0 2,0,10,3,0,4,2,0,1,1,1,0,1,1 1,0,0,3,1,1,3,0,1,1,1,1,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,0 2,0,0,3,4,8,3,0,0,1,1,1,1,1 0,5,3,2,0,2,2,0,1,1,1,0,1,0 0,0,0,3,2,11,4,0,0,1,1,2,1,0 1,2,3,2,2,1,3,0,1,1,1,1,1,0 2,1,3,2,1,8,5,0,0,1,1,1,1,0 0,0,5,2,2,8,3,4,0,1,1,0,1,0 1,0,1,2,0,0,2,0,1,1,1,0,1,1 1,4,10,3,0,5,2,0,1,1,1,2,1,0 1,5,1,2,0,12,2,1,1,1,1,0,1,0 2,2,0,3,0,0,2,0,1,1,1,0,1,1 0,0,1,2,2,8,1,4,1,1,1,0,1,0 0,0,1,2,1,8,3,0,0,1,1,1,1,0 0,0,1,2,2,3,3,1,0,1,1,1,1,0 1,0,11,0,0,7,2,0,1,1,1,0,1,0 1,0,3,2,2,2,5,4,1,1,1,0,1,0 1,1,14,0,0,9,2,0,1,1,1,2,1,0 0,0,3,2,2,8,3,0,0,1,1,0,1,0 1,0,3,2,2,4,3,0,1,1,1,1,1,0 2,2,1,2,4,4,3,0,0,1,1,2,1,0 1,0,14,0,2,2,3,1,1,1,1,0,1,0 1,0,1,2,0,4,0,0,0,1,1,0,1,1 0,0,3,2,2,4,3,0,1,1,1,1,1,0 1,0,3,2,0,1,2,4,1,1,1,0,1,0 0,0,3,2,2,8,1,0,0,1,1,1,1,0 1,0,1,2,0,3,2,0,1,1,1,0,1,0 0,0,3,2,0,7,2,0,1,1,1,1,1,0 1,0,1,2,1,3,3,0,0,1,1,2,1,0 1,5,0,3,0,0,2,0,1,1,1,0,1,1 0,0,0,3,0,3,2,0,1,1,1,1,1,1 1,0,3,2,2,7,1,4,0,1,1,0,1,0 1,0,3,2,1,1,3,0,1,1,1,0,1,0 0,0,12,1,2,2,5,4,0,1,1,2,1,0 1,0,0,3,0,3,2,0,1,1,1,0,1,1 0,0,1,2,2,3,1,0,0,1,1,2,1,0 0,0,10,3,2,5,1,1,0,1,1,0,1,1 0,0,0,3,1,4,3,0,0,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,1,1,1 0,0,1,2,1,0,4,0,0,1,1,0,1,0 1,3,0,3,0,8,2,0,1,1,1,1,1,1 1,0,1,2,3,1,5,0,0,1,1,2,1,0 1,4,3,2,1,1,3,0,1,1,1,0,1,0 2,0,3,2,4,4,3,0,0,1,1,2,1,0 0,0,3,2,0,10,2,0,1,1,1,1,1,0 0,0,2,1,2,12,3,0,0,1,1,2,1,0 1,1,3,2,0,5,0,0,0,1,1,1,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,14,0,0,2,2,0,1,1,1,0,1,0 0,0,3,2,2,6,1,0,1,1,1,0,1,0 0,0,3,2,0,7,2,0,1,1,1,1,1,0 1,0,2,1,1,1,3,0,1,1,1,0,1,0 3,1,8,0,4,9,3,0,1,1,1,2,1,0 0,0,3,2,2,3,3,0,1,1,1,1,1,0 0,4,0,3,2,4,3,0,1,1,1,0,1,0 0,0,0,3,2,2,1,4,1,1,1,1,1,0 1,0,3,2,0,0,2,0,1,1,1,0,1,0 2,0,6,2,0,8,2,0,1,1,1,1,1,0 1,0,13,3,0,5,2,0,1,1,1,1,1,0 0,0,2,1,2,2,1,0,1,1,1,2,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 0,4,3,2,2,10,5,0,0,1,1,0,1,0 0,0,3,2,2,7,4,4,1,1,1,0,1,0 1,2,1,2,0,4,2,0,1,1,1,0,1,1 0,0,12,1,0,10,2,0,1,1,1,1,1,0 0,1,0,3,2,3,3,0,1,1,1,0,1,0 2,4,1,2,3,2,3,4,0,1,1,0,1,0 0,0,3,2,2,8,3,0,1,1,1,0,1,0 2,0,1,2,0,8,2,0,1,1,1,1,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 0,0,1,2,2,7,3,1,1,1,1,0,1,0 0,0,1,2,0,7,2,0,1,1,1,0,1,0 3,0,3,2,5,3,3,0,1,1,1,2,1,0 2,0,10,3,1,3,3,0,0,1,1,0,1,0 0,0,3,2,2,2,4,0,1,1,1,2,1,0 1,0,14,0,5,11,4,0,0,1,1,0,1,0 1,3,3,2,0,8,2,0,1,1,1,0,1,0 1,0,3,2,2,7,3,0,1,1,1,0,1,0 1,0,3,2,0,1,2,4,1,1,1,2,1,0 2,0,1,2,4,3,3,0,0,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 2,1,1,2,0,9,2,0,1,1,1,1,1,1 0,0,0,3,2,3,3,0,1,1,1,1,1,0 1,0,3,2,0,6,2,0,1,1,1,0,1,1 0,0,0,3,0,5,2,0,1,1,1,1,1,1 0,1,1,2,0,9,2,0,1,1,1,0,1,0 1,0,3,2,2,4,1,0,1,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,4,3,2,5,4,0,0,1,1,0,1,0 0,0,1,2,0,8,2,0,1,1,1,0,1,0 1,5,5,2,1,8,5,0,0,1,1,0,1,0 2,3,10,3,0,0,2,1,1,1,1,0,1,1 1,4,6,2,0,12,2,0,1,1,1,1,1,1 1,0,12,1,3,7,1,0,1,1,1,0,1,0 0,0,1,2,2,4,3,0,0,1,1,0,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 0,0,3,2,0,1,2,0,1,1,1,1,1,0 1,0,3,2,2,4,3,0,1,1,1,1,1,0 1,0,1,2,1,2,3,0,0,1,1,2,1,0 0,0,3,2,2,8,1,0,0,1,1,0,1,0 1,0,6,2,0,1,2,0,1,1,1,1,1,1 1,0,1,2,1,0,5,0,0,1,1,0,1,0 2,0,3,2,0,6,2,0,1,1,1,2,1,0 2,0,3,2,1,6,4,0,0,1,1,0,1,0 0,0,1,2,2,1,1,0,1,1,1,2,1,0 0,0,3,2,0,4,0,0,0,1,1,0,1,1 1,0,3,2,0,1,2,0,1,1,1,0,1,1 0,0,12,1,0,2,0,0,0,1,1,0,1,0 0,0,8,0,2,7,4,0,1,1,1,0,1,0 1,1,3,2,0,4,2,0,1,1,1,1,1,0 1,5,13,3,2,5,3,0,1,1,1,1,1,1 0,0,0,3,2,3,3,0,1,1,1,1,1,1 0,4,0,3,2,12,3,0,0,1,1,1,1,0 1,3,3,2,2,2,3,0,1,1,1,0,1,0 1,0,0,3,0,3,2,0,1,1,1,2,1,0 1,0,10,3,0,1,2,0,1,1,1,1,1,1 0,0,1,2,2,7,1,0,0,1,1,2,1,0 0,0,3,2,1,1,4,0,1,1,1,0,1,0 0,0,9,1,2,6,4,0,1,1,1,2,1,0 0,1,0,3,0,0,2,0,1,1,1,0,1,1 0,0,3,2,0,1,2,0,1,1,1,1,1,1 1,0,3,2,1,3,5,0,0,1,1,2,1,0 0,0,3,2,2,2,1,4,0,1,1,0,1,0 0,0,1,2,2,8,3,0,0,1,1,0,1,0 1,0,0,3,0,1,2,1,1,1,1,0,1,0 2,1,14,0,0,9,2,0,1,1,1,1,1,0 0,0,1,2,2,8,3,0,0,1,1,0,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 0,5,0,3,2,8,5,0,0,1,1,0,1,0 1,0,1,2,0,0,0,0,0,1,1,0,1,0 1,1,8,0,0,9,2,0,1,1,1,1,1,1 0,0,3,2,0,1,2,0,1,1,1,1,1,0 0,0,5,2,2,3,1,0,0,1,1,2,1,0 0,3,3,2,1,4,5,0,0,1,1,0,1,0 1,0,0,3,0,3,2,0,1,1,1,0,1,0 1,0,12,1,2,10,3,0,1,1,1,0,1,0 1,0,12,1,0,9,2,0,1,1,1,2,1,0 0,0,7,1,1,1,3,0,1,1,1,1,1,0 1,0,0,3,2,3,3,0,0,1,1,1,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,1 0,1,3,2,0,3,2,0,1,1,1,1,1,0 0,0,12,1,2,2,1,4,1,1,1,2,1,0 1,1,3,2,0,4,2,0,1,1,1,1,1,0 2,0,3,2,4,3,3,4,0,1,1,2,1,0 0,0,3,2,0,2,0,0,0,1,1,2,1,0 1,0,15,0,0,2,2,0,1,1,1,0,1,0 2,0,0,3,1,5,3,1,0,1,1,0,1,0 2,0,3,2,0,2,2,0,1,1,1,0,1,0 2,0,3,2,1,8,3,0,0,1,1,0,1,0 2,0,1,2,4,3,3,0,1,1,1,2,1,0 0,0,2,1,2,2,1,0,1,1,1,2,1,0 0,0,1,2,2,2,3,0,1,1,1,2,1,0 1,4,2,1,5,1,3,4,1,1,1,0,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,0 1,5,3,2,0,1,2,0,1,1,1,0,1,0 1,0,3,2,1,10,5,0,1,1,1,0,1,0 1,5,3,2,4,4,3,0,0,1,1,0,1,0 2,0,3,2,1,8,3,0,0,1,1,2,1,0 1,0,0,3,4,4,5,0,0,1,1,2,1,0 1,1,10,3,1,4,5,0,0,1,1,1,1,0 1,2,4,3,0,5,2,0,1,1,1,1,1,1 1,0,3,2,2,0,3,4,0,1,1,0,1,0 0,5,1,2,2,2,1,0,0,1,1,2,1,0 0,0,2,1,0,7,2,0,1,1,1,1,1,0 0,0,1,2,1,8,3,0,1,1,1,2,1,0 0,0,0,3,2,2,3,0,1,1,1,1,1,0 2,1,3,2,0,8,0,0,0,1,1,2,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,1,2,2,0,1,0,1,1,1,0,1,0 2,1,1,2,0,5,2,0,1,1,1,2,1,0 1,0,8,0,0,1,2,0,1,1,1,1,1,0 0,0,6,2,2,4,3,0,1,1,1,0,1,0 1,0,7,1,1,10,3,0,1,1,1,0,1,0 1,0,7,1,0,1,2,0,1,1,1,1,1,1 0,0,1,2,2,4,1,1,0,1,1,0,1,0 0,0,0,3,2,12,4,0,1,1,1,1,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,5,2,2,3,3,0,1,1,1,0,1,0 0,0,1,2,0,0,2,4,1,1,1,0,1,0 1,0,3,2,0,10,2,0,1,1,1,0,1,1 1,0,3,2,0,5,2,0,1,1,1,0,1,0 1,0,1,2,1,8,3,0,1,1,1,0,1,0 0,5,3,2,2,2,3,4,0,1,1,0,1,0 0,0,6,2,2,5,1,0,0,1,1,2,1,0 0,0,0,3,0,8,0,0,0,1,1,0,1,1 1,2,0,3,0,4,2,0,1,1,1,1,1,1 2,0,3,2,1,8,3,0,0,1,1,1,1,0 0,0,3,2,2,6,1,0,1,1,1,2,1,0 0,0,6,2,1,1,3,0,1,1,1,0,1,0 2,0,12,1,0,1,2,0,1,1,1,0,1,1 1,0,2,1,3,3,5,0,0,1,1,0,1,0 1,0,9,1,0,7,2,0,1,1,1,0,1,0 1,1,0,3,0,4,2,0,1,1,1,1,1,1 0,4,1,2,2,6,3,0,1,1,1,0,1,0 0,1,3,2,0,9,2,0,1,1,1,0,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 2,0,14,0,0,2,2,0,1,1,1,0,1,0 1,0,2,1,2,2,4,1,1,1,1,2,1,0 0,0,12,1,2,2,1,0,1,1,1,2,1,0 0,0,3,2,2,1,1,0,1,1,1,1,1,0 2,1,3,2,0,4,2,0,1,1,1,2,1,1 0,0,3,2,2,2,1,0,1,1,1,2,1,0 0,0,1,2,3,8,3,0,1,1,1,0,1,0 1,0,10,3,0,5,2,0,1,1,1,1,1,0 0,0,3,2,0,8,2,4,1,1,1,0,1,1 1,0,3,2,0,5,2,0,1,1,1,0,1,1 2,0,0,3,1,5,3,0,0,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,2,1,1 0,0,5,2,2,8,1,0,0,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,1 0,1,3,2,0,4,2,0,1,1,1,0,1,0 1,0,10,3,2,8,3,0,0,1,1,0,1,0 0,0,4,3,2,5,3,0,1,1,1,1,1,0 2,0,3,2,0,7,2,0,1,1,1,0,1,1 1,0,1,2,0,3,2,0,1,1,1,0,1,0 1,3,5,2,0,8,0,4,0,1,1,0,1,1 0,3,5,2,1,5,5,4,0,1,1,0,1,0 1,2,0,3,2,3,3,0,1,1,1,1,1,0 1,0,1,2,0,5,2,0,1,1,1,0,1,1 1,5,3,2,0,1,2,0,1,1,1,0,1,1 1,2,1,2,1,3,3,0,0,1,1,0,1,0 1,4,3,2,0,1,2,0,1,1,1,0,1,1 1,0,4,3,2,9,4,0,1,1,1,1,1,0 0,0,6,2,0,0,4,0,0,1,1,0,1,0 0,0,6,2,2,8,1,0,0,1,1,2,1,0 0,0,3,2,0,2,0,4,0,1,1,0,1,0 1,2,1,2,1,3,1,0,0,1,1,1,1,0 0,3,3,2,0,5,2,0,1,1,1,0,1,0 1,0,0,3,1,3,1,0,1,1,1,1,1,0 1,2,3,2,1,1,3,0,1,1,1,0,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,0 0,3,3,2,2,6,1,0,1,1,1,1,1,0 2,1,5,2,0,3,2,0,1,1,1,2,1,1 2,0,1,2,4,3,5,0,0,1,1,0,1,0 1,3,0,3,0,8,2,1,1,1,1,0,1,1 1,0,3,2,1,8,5,4,0,1,1,0,1,0 1,0,3,2,2,6,1,0,1,1,1,1,1,0 0,0,1,2,2,3,3,0,1,1,1,1,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,1 1,0,0,3,0,4,2,0,1,1,1,0,1,1 0,0,2,1,2,2,1,0,1,1,1,0,1,0 1,0,3,2,0,10,2,0,1,1,1,0,1,0 0,0,1,2,0,1,2,0,1,1,1,1,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,1,2,2,4,3,4,1,1,1,2,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,1,2,2,11,1,0,0,1,1,1,1,0 2,0,2,1,1,7,3,4,0,1,1,0,1,0 0,0,10,3,2,4,3,0,0,1,1,0,1,1 0,0,3,2,0,4,2,0,1,1,1,1,1,1 2,2,3,2,0,4,2,0,1,1,1,0,1,1 0,0,1,2,2,3,1,4,0,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,0 0,0,0,3,0,3,2,0,1,1,1,1,1,1 0,0,1,2,2,5,1,4,0,1,1,0,1,0 0,0,8,0,1,0,3,0,0,1,1,1,1,0 1,5,0,3,1,5,3,0,1,1,1,0,1,0 0,0,3,2,2,5,3,0,0,1,1,2,1,1 0,0,7,1,0,7,2,0,1,1,1,0,1,0 0,0,3,2,2,3,5,0,0,1,1,1,1,0 1,0,6,2,1,3,3,0,0,1,1,1,1,0 0,0,1,2,2,2,1,0,1,1,1,2,1,0 0,4,1,2,0,2,2,0,1,1,1,0,1,0 0,0,1,2,2,6,1,1,1,1,1,0,1,0 2,0,3,2,1,3,3,0,1,1,1,0,1,0 0,0,2,1,2,2,1,0,0,1,1,2,1,0 1,0,8,0,0,6,2,0,1,1,1,1,1,0 1,1,0,3,0,5,2,0,1,1,1,1,1,1 0,4,0,3,2,12,5,4,0,1,1,0,1,0 0,0,3,2,2,2,1,0,0,1,1,0,1,0 0,4,1,2,2,4,1,0,1,1,1,2,1,0 1,0,1,2,0,2,2,0,1,1,1,0,1,0 3,4,3,2,4,2,3,0,0,1,1,0,1,0 0,0,3,2,2,2,3,4,0,1,1,2,1,0 2,2,1,2,0,1,2,0,1,1,1,2,1,0 0,0,1,2,2,2,1,0,1,1,1,2,1,0 0,0,3,2,0,0,2,0,1,1,1,2,1,1 0,0,3,2,1,7,3,0,1,1,1,0,1,0 1,0,0,3,1,4,3,0,0,1,1,1,1,1 0,0,0,3,2,5,3,1,1,1,1,2,1,0 0,0,1,2,2,2,3,0,1,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 2,4,3,2,1,8,3,4,1,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,5,2,0,0,2,0,1,1,1,0,1,1 1,1,0,3,0,9,2,0,1,1,1,1,1,0 0,0,3,2,2,6,1,0,1,1,1,0,1,0 1,2,0,3,0,4,2,0,1,1,1,1,1,0 1,3,3,2,0,3,2,0,1,1,1,0,1,0 2,2,14,0,0,4,2,1,1,1,1,0,1,1 0,0,3,2,2,3,1,4,0,1,1,2,1,0 0,0,1,2,2,8,1,0,0,1,1,2,1,0 0,0,6,2,1,8,5,0,0,1,1,2,1,0 0,0,6,2,0,3,2,0,1,1,1,0,1,0 2,0,3,2,0,8,2,0,1,1,1,1,1,0 2,1,3,2,0,9,2,0,1,1,1,1,1,0 2,0,3,2,0,1,2,0,1,1,1,1,1,0 0,4,1,2,2,0,3,0,1,1,1,0,1,0 2,0,1,2,0,2,2,0,1,1,1,2,1,0 1,0,1,2,2,4,3,0,1,1,1,0,1,1 2,0,1,2,1,4,3,0,0,1,1,0,1,0 0,0,1,2,1,3,3,0,1,1,1,1,1,0 0,0,0,3,0,1,2,4,1,1,1,0,1,0 3,1,3,2,0,9,2,0,1,1,1,2,1,0 1,1,1,2,0,1,2,0,1,1,1,2,1,0 1,0,6,2,1,1,3,4,1,1,1,0,1,0 1,1,3,2,0,5,2,0,1,1,1,0,1,1 0,0,3,2,0,7,2,0,1,1,1,0,1,0 1,0,5,2,0,1,2,0,1,1,1,1,1,1 0,0,3,2,0,7,2,0,1,1,1,0,1,0 1,5,3,2,1,8,3,0,1,1,1,0,1,0 0,5,1,2,2,3,1,0,0,1,1,2,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,2,1,3,1,5,0,1,1,1,0,1,0 1,1,3,2,0,1,2,0,1,1,1,1,1,0 2,1,10,3,3,3,5,0,0,1,1,2,1,0 0,0,0,3,2,4,3,0,1,1,1,2,1,0 0,0,6,2,2,7,3,0,1,1,1,0,1,0 1,4,0,3,0,4,2,2,1,1,1,1,1,1 1,4,1,2,1,12,5,4,0,1,1,0,1,0 0,0,0,3,0,3,2,0,1,1,1,0,1,1 1,5,6,2,0,4,2,0,1,1,1,0,1,1 0,0,1,2,2,2,1,0,1,1,1,2,1,0 2,4,3,2,0,2,2,0,1,1,1,0,1,0 0,0,1,2,2,8,1,0,0,1,1,2,1,0 1,4,0,3,0,8,0,0,0,1,1,0,1,1 2,3,1,2,2,5,3,0,1,1,1,0,1,1 1,0,12,1,4,3,5,4,0,1,1,0,1,0 1,0,9,1,0,1,2,0,1,1,1,0,1,0 2,0,3,2,0,7,0,0,0,1,1,2,1,0 2,0,1,2,0,10,2,4,1,1,1,0,1,1 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,10,3,0,5,2,0,1,1,1,1,1,1 1,0,1,2,2,0,3,0,1,1,1,2,1,0 0,1,2,1,2,5,1,0,0,1,1,2,1,0 0,0,5,2,0,3,2,0,1,1,1,1,1,1 0,0,9,1,0,7,2,0,1,1,1,0,1,0 0,0,0,3,2,5,3,0,1,1,1,0,1,0 0,0,1,2,2,8,3,0,0,1,1,2,1,0 0,1,3,2,0,1,2,0,1,1,1,2,1,0 0,0,9,1,2,2,1,0,0,1,1,2,1,0 1,5,0,3,0,12,2,0,1,1,1,0,1,1 1,0,1,2,2,5,3,0,1,1,1,0,1,0 2,0,3,2,2,4,3,0,0,1,1,1,1,0 0,0,1,2,0,7,0,0,0,1,1,2,1,0 0,0,0,3,0,4,2,0,1,1,1,0,1,0 0,0,3,2,2,1,5,0,1,1,1,1,1,0 1,1,4,3,0,5,2,0,1,1,1,1,1,1 0,1,12,1,0,9,2,0,1,1,1,1,1,1 1,0,0,3,1,10,3,0,1,1,1,1,1,0 0,0,12,1,0,1,2,0,1,1,1,0,1,0 2,1,10,3,0,3,2,0,1,1,1,0,1,1 1,0,10,3,0,8,0,0,0,1,1,1,1,1 0,0,1,2,2,8,1,0,0,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,1,1,0 1,0,10,3,0,4,2,1,1,1,1,0,1,1 0,0,3,2,0,7,2,0,1,1,1,0,1,1 1,0,1,2,0,7,2,0,1,1,1,1,1,1 1,0,0,3,1,5,3,0,1,1,1,1,1,0 0,0,1,2,2,8,1,0,1,1,1,2,1,0 2,0,5,2,2,4,3,0,0,1,1,2,1,0 0,0,3,2,0,4,2,0,1,1,1,1,1,1 0,1,3,2,5,1,3,0,1,1,1,1,1,1 1,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,0,3,2,5,3,0,1,1,1,0,1,1 0,0,3,2,2,1,4,0,1,1,1,1,1,0 1,0,2,1,0,10,2,0,1,1,1,0,1,0 0,4,0,3,0,10,2,0,1,1,1,0,1,1 2,0,1,2,4,10,3,0,1,1,1,2,1,0 0,0,3,2,0,0,0,0,0,1,1,2,1,1 1,1,0,3,0,4,2,0,1,1,1,0,1,1 2,4,10,3,0,5,0,0,0,1,1,2,1,0 0,0,0,3,2,4,3,0,0,1,1,0,1,0 0,0,3,2,2,1,1,0,1,1,1,1,1,0 2,0,8,0,0,10,2,0,1,1,1,1,1,1 1,4,10,3,1,5,5,0,1,1,1,1,1,1 0,0,2,1,2,1,1,0,1,1,1,1,1,0 0,0,1,2,1,5,3,0,1,1,1,2,1,0 1,0,12,1,1,0,5,4,0,1,1,2,1,0 1,2,1,2,2,4,3,0,1,1,1,1,1,1 1,2,3,2,0,4,2,0,1,1,1,1,1,0 2,0,3,2,0,3,2,0,1,1,1,0,1,0 0,0,1,2,2,8,1,0,1,1,1,2,1,0 1,0,12,1,3,3,1,1,0,1,1,0,1,0 3,1,0,3,4,9,3,0,1,1,1,0,1,1 0,4,1,2,0,4,2,0,1,1,1,1,1,1 0,0,3,2,0,10,2,0,1,1,1,1,1,1 0,0,1,2,2,3,1,4,0,1,1,2,1,0 0,0,2,1,2,3,5,0,1,1,1,2,1,0 1,0,1,2,0,8,2,0,1,1,1,0,1,1 1,0,1,2,5,3,3,0,1,1,1,0,1,0 1,0,12,1,0,10,2,0,1,1,1,1,1,1 0,0,0,3,2,4,3,0,0,1,1,2,1,0 1,0,3,2,1,8,3,4,0,1,1,0,1,0 1,1,4,3,0,5,2,0,1,1,1,1,1,1 0,0,3,2,2,1,1,0,1,1,1,0,1,0 2,0,0,3,0,3,2,0,1,1,1,0,1,1 0,0,3,2,2,3,3,0,0,1,1,2,1,0 0,0,3,2,0,10,2,0,1,1,1,0,1,0 2,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,1,2,0,3,2,0,1,1,1,0,1,1 1,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,1,2,5,4,0,1,1,0,1,0 1,4,3,2,5,2,5,0,0,1,1,2,1,0 0,0,1,2,2,1,1,0,1,1,1,2,1,0 0,0,10,3,2,4,3,0,0,1,1,0,1,0 0,3,1,2,0,8,2,4,1,1,1,2,1,0 2,1,4,3,2,5,3,0,0,1,1,2,1,0 1,0,2,1,0,1,2,0,1,1,1,0,1,0 1,4,0,3,0,5,0,0,0,1,1,2,1,1 1,0,10,3,0,4,2,0,1,1,1,1,1,0 1,3,6,2,2,8,5,0,1,1,1,1,1,0 2,4,3,2,4,2,3,0,0,1,1,2,1,0 1,0,3,2,3,2,3,4,0,1,1,2,1,0 0,0,1,2,2,6,1,0,1,1,1,0,1,0 1,0,10,3,2,3,3,0,0,1,1,0,1,0 1,4,1,2,0,9,2,0,1,1,1,0,1,0 0,0,1,2,0,5,0,0,0,1,1,0,1,1 1,1,0,3,0,3,2,4,1,1,1,1,1,0 1,0,1,2,0,4,2,0,1,1,1,1,1,1 1,0,6,2,0,5,2,0,1,1,1,0,1,1 1,0,10,3,0,4,2,0,1,1,1,1,1,1 1,0,3,2,1,11,5,4,0,1,1,2,1,0 1,2,3,2,0,4,2,0,1,1,1,1,1,1 0,0,0,3,1,5,3,0,0,1,1,2,1,0 1,1,1,2,0,2,0,0,0,1,1,1,1,0 1,0,1,2,0,5,2,0,1,1,1,2,1,1 0,5,3,2,2,8,1,4,0,1,1,0,1,0 1,0,11,0,0,9,2,0,1,1,1,1,1,0 1,1,4,3,0,5,2,0,1,1,1,1,1,1 1,0,3,2,0,3,2,0,1,1,1,1,1,0 1,0,1,2,0,2,2,0,1,1,1,2,1,0 1,0,0,3,2,5,3,0,0,1,1,0,1,0 0,0,3,2,0,7,2,0,1,1,1,1,1,0 1,0,3,2,1,6,5,4,0,1,1,0,1,0 0,0,10,3,5,5,3,1,0,1,1,0,1,0 0,0,7,1,2,7,3,0,0,1,1,2,1,0 0,0,9,1,2,7,3,4,0,1,1,0,1,0 1,4,1,2,1,4,3,0,0,1,1,0,1,0 0,0,12,1,2,6,1,0,1,1,1,2,1,0 0,0,9,1,2,7,1,0,1,1,1,2,1,0 1,0,6,2,2,3,5,0,0,1,1,1,1,1 1,3,0,3,0,12,2,0,1,1,1,1,1,1 0,0,6,2,2,2,5,0,0,1,1,2,1,0 2,0,10,3,0,5,2,0,1,1,1,0,1,1 0,0,1,2,0,3,0,0,0,1,1,0,1,0 0,3,1,2,2,8,1,4,0,1,1,2,1,0 0,0,1,2,2,1,1,0,1,1,1,0,1,0 1,3,3,2,0,10,2,4,1,1,1,1,1,1 2,0,0,3,1,5,3,0,0,1,1,2,1,0 0,0,1,2,0,3,1,3,0,1,1,2,1,0 1,4,10,3,0,5,2,0,1,1,1,0,1,1 1,3,5,2,0,4,2,0,1,1,1,0,1,1 0,0,1,2,2,3,1,0,0,1,1,2,1,0 1,0,0,3,0,0,2,0,1,1,1,0,1,1 0,0,9,1,2,2,3,0,1,1,1,2,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,3,2,0,8,2,4,1,1,1,0,1,1 0,0,1,2,2,2,3,0,0,1,1,2,1,0 1,0,3,2,3,1,5,0,0,1,1,0,1,0 0,0,10,3,2,5,3,0,1,1,1,1,1,0 1,3,1,2,0,4,2,0,1,1,1,0,1,1 0,0,1,2,2,3,1,0,0,1,1,2,1,0 0,0,3,2,2,7,4,0,1,1,1,0,1,0 0,0,3,2,2,6,1,0,1,1,1,1,1,0 1,0,3,2,2,2,3,4,0,1,1,0,1,0 1,1,5,2,4,5,5,0,0,1,1,2,1,0 1,0,0,3,0,8,2,1,1,1,1,1,1,0 1,0,6,2,1,3,3,0,1,1,1,1,1,1 0,0,11,0,2,2,3,1,0,1,1,0,1,0 1,6,3,2,0,7,1,0,0,1,1,0,1,1 0,0,3,2,0,1,2,0,1,1,1,1,1,0 2,5,3,2,0,10,2,0,1,1,1,1,1,0 0,0,1,2,1,7,3,0,0,1,1,0,1,0 0,0,3,2,2,8,3,0,0,1,1,2,1,0 1,1,1,2,1,3,5,0,0,1,1,0,1,0 0,0,1,2,1,8,5,0,0,1,1,1,1,0 2,4,3,2,0,2,2,0,1,1,1,0,1,1 0,0,3,2,2,6,1,0,0,1,1,0,1,0 2,0,0,3,1,5,5,4,0,1,1,0,1,0 0,0,1,2,1,8,5,0,0,1,1,2,1,0 1,0,0,3,0,5,0,0,0,1,1,1,1,1 1,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,2,10,1,0,1,1,1,0,1,0 0,0,3,2,2,10,3,4,1,1,1,2,1,0 1,2,1,2,0,4,2,0,1,1,1,1,1,1 0,0,2,1,2,1,3,0,1,1,1,0,1,0 0,0,3,2,1,7,5,0,0,1,1,2,1,0 0,0,3,2,0,7,0,0,0,1,1,0,1,1 1,0,3,2,2,2,5,4,1,1,1,1,1,0 1,0,7,1,1,10,3,0,1,1,1,2,1,0 0,0,3,2,0,4,2,0,1,1,1,0,1,0 0,0,0,3,2,5,1,0,0,1,1,0,1,0 1,4,0,3,0,5,2,0,1,1,1,0,1,1 1,0,14,0,0,7,2,0,1,1,1,0,1,0 0,0,0,3,0,5,2,0,1,1,1,0,1,1 2,0,8,0,0,3,2,0,1,1,1,1,1,0 1,1,0,3,0,4,2,0,1,1,1,1,1,0 0,0,3,2,0,1,2,2,1,1,1,1,1,0 1,2,4,3,0,5,2,0,1,1,1,0,1,1 2,0,1,2,0,12,2,0,1,1,1,0,1,0 0,0,12,1,1,10,1,0,1,1,1,0,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 1,0,1,2,3,3,5,0,0,1,1,2,1,0 2,0,3,2,0,10,2,0,1,1,1,1,1,1 1,0,3,2,1,7,1,0,0,1,1,0,1,0 2,1,3,2,0,1,2,0,1,1,1,2,1,0 1,0,3,2,0,8,2,0,1,1,1,2,1,0 0,0,3,2,0,2,2,0,1,1,1,0,1,0 0,0,1,2,0,1,2,0,1,1,1,1,1,1 1,0,5,2,2,2,5,4,0,1,1,2,1,0 1,0,3,2,1,7,5,0,1,1,1,1,1,0 2,1,3,2,0,10,2,0,1,1,1,2,1,0 2,0,3,2,0,4,2,0,1,1,1,1,1,1 2,4,14,0,0,10,2,0,1,1,1,0,1,0 0,4,3,2,2,8,1,4,1,1,1,2,1,0 0,0,3,2,1,1,3,0,1,1,1,1,1,0 1,1,3,2,2,1,3,0,1,1,1,2,1,0 2,1,3,2,0,1,2,0,1,1,1,0,1,0 1,1,3,2,0,9,2,0,1,1,1,1,1,0 1,0,12,1,0,10,2,0,1,1,1,1,1,0 0,0,5,2,2,8,3,4,0,1,1,2,1,0 1,4,1,2,0,4,0,0,0,1,1,1,1,0 1,0,6,2,2,5,3,0,0,1,1,0,1,0 0,4,1,2,2,8,3,4,0,1,1,0,1,0 2,0,3,2,0,9,2,0,1,1,1,1,1,0 1,3,6,2,0,5,2,0,1,1,1,0,1,1 2,0,3,2,0,8,2,0,1,1,1,1,1,1 1,0,3,2,0,6,2,0,1,1,1,0,1,0 1,0,3,2,0,2,4,0,0,1,1,0,1,0 0,0,3,2,2,1,1,0,1,1,1,0,1,0 0,0,1,2,2,6,1,0,1,1,1,2,1,0 2,0,1,2,0,8,0,0,0,1,1,0,1,1 1,4,10,3,0,5,2,0,1,1,1,1,1,1 1,0,1,2,0,1,2,0,1,1,1,1,1,0 0,0,1,2,2,6,4,0,1,1,1,0,1,0 0,0,3,2,0,4,2,0,1,1,1,1,1,1 0,1,2,1,0,3,0,0,0,1,1,2,1,0 1,0,0,3,0,3,2,0,1,1,1,1,1,1 1,0,15,0,2,2,3,0,1,1,1,2,1,0 0,0,3,2,0,6,2,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,12,1,2,8,1,0,0,1,1,2,1,0 0,0,6,2,2,2,3,0,0,1,1,0,1,0 1,4,5,2,0,4,2,0,1,1,1,0,1,0 1,0,3,2,2,8,4,0,0,1,1,0,1,0 1,0,1,2,5,4,5,0,0,1,1,1,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,0 1,5,0,3,0,5,2,0,1,1,1,0,1,0 1,0,12,1,0,7,0,4,0,1,1,2,1,0 0,0,3,2,2,3,3,0,0,1,1,2,1,0 0,0,1,2,2,8,3,0,0,1,1,0,1,0 3,4,3,2,2,1,1,0,1,1,1,0,1,1 1,0,3,2,0,1,2,0,1,1,1,0,1,1 1,0,0,3,0,5,0,0,0,1,1,0,1,1 0,1,3,2,3,2,5,0,0,1,1,2,1,0 1,4,0,3,0,5,2,0,1,1,1,2,1,1 1,0,7,1,0,9,2,0,1,1,1,1,1,0 0,0,3,2,0,4,0,0,0,1,1,0,1,1 1,3,12,1,3,8,5,4,0,1,1,0,1,0 0,0,1,2,0,8,4,0,0,1,1,0,1,0 0,0,0,3,2,5,3,0,1,1,1,1,1,0 2,0,3,2,0,1,2,0,1,1,1,1,1,0 1,0,1,2,0,3,2,0,1,1,1,0,1,1 1,0,3,2,2,8,3,0,0,1,1,0,1,0 1,0,0,3,1,5,5,0,1,1,1,0,1,1 0,0,1,2,2,5,1,0,1,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 2,0,1,2,2,1,5,0,1,1,1,0,1,0 1,1,3,2,2,9,3,0,1,1,1,1,1,0 1,5,13,3,2,5,3,4,0,1,1,2,1,0 0,0,0,3,2,5,1,0,0,1,1,1,1,0 0,0,3,2,0,8,0,0,0,1,1,2,1,0 0,0,3,2,2,8,3,0,1,1,1,1,1,0 1,0,1,2,1,8,3,0,0,1,1,2,1,0 1,0,0,3,1,4,3,0,1,1,1,0,1,1 0,0,2,1,1,1,5,3,1,1,1,2,1,0 1,0,1,2,2,5,5,0,0,1,1,1,1,0 2,4,0,3,1,8,3,0,0,1,1,1,1,0 0,0,3,2,2,1,5,4,1,1,1,0,1,0 0,0,1,2,2,2,1,0,1,1,1,2,1,0 0,0,3,2,0,7,0,4,0,1,1,2,1,0 0,0,0,3,2,3,3,0,1,1,1,1,1,0 0,0,3,2,2,2,1,4,1,1,1,2,1,0 1,2,0,3,0,3,2,0,1,1,1,1,1,0 2,4,12,1,0,2,2,4,1,1,1,2,1,0 1,1,1,2,0,2,2,0,1,1,1,1,1,0 1,0,7,1,0,6,2,0,1,1,1,1,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 2,1,3,2,0,9,2,0,1,1,1,0,1,0 0,1,5,2,0,0,2,0,1,1,1,1,1,0 1,0,15,0,2,2,3,0,0,1,1,2,1,0 0,1,3,2,0,1,2,0,1,1,1,1,1,1 0,4,3,2,0,1,2,0,1,1,1,0,1,0 0,0,2,1,2,3,1,4,0,1,1,2,1,0 1,0,12,1,0,8,0,0,0,1,1,2,1,0 3,1,3,2,0,9,2,0,1,1,1,1,1,0 0,0,3,2,1,4,3,0,0,1,1,0,1,0 1,0,10,3,0,5,2,0,1,1,1,1,1,1 0,0,3,2,3,3,5,0,0,1,1,1,1,0 1,0,1,2,1,11,3,0,0,1,1,2,1,0 0,0,3,2,2,8,3,0,0,1,1,2,1,0 0,0,1,2,2,8,1,0,0,1,1,2,1,0 0,0,3,2,1,2,5,0,0,1,1,2,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 0,5,1,2,2,8,1,0,0,1,1,2,1,0 0,0,0,3,0,3,2,4,1,1,1,1,1,1 1,0,3,2,1,7,3,0,0,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,13,3,0,5,2,0,1,1,1,1,1,1 1,0,0,3,3,5,3,4,0,1,1,0,1,0 0,0,6,2,0,1,2,0,1,1,1,0,1,1 1,2,1,2,0,3,2,0,1,1,1,1,1,1 1,0,3,2,2,2,3,4,0,1,1,1,1,0 1,4,0,3,0,12,2,0,1,1,1,0,1,1 0,0,1,2,2,6,1,1,1,1,1,0,1,0 1,0,0,3,0,0,2,4,1,1,1,1,1,1 1,2,0,3,2,4,3,0,1,1,1,1,1,0 2,1,3,2,0,4,2,2,1,1,1,2,1,1 0,0,4,3,0,5,2,0,1,1,1,1,1,1 1,0,0,3,0,8,2,0,1,1,1,1,1,0 2,0,3,2,4,8,3,4,0,1,1,0,1,0 0,0,0,3,2,4,3,0,0,1,1,1,1,0 0,0,3,2,1,7,5,0,0,1,1,1,1,0 0,0,1,2,2,1,3,0,1,1,1,0,1,0 1,0,0,3,0,8,2,4,1,1,1,1,1,1 3,1,4,3,0,4,2,0,1,1,1,2,1,0 0,0,3,2,2,0,5,0,0,1,1,0,1,0 0,5,3,2,1,12,3,0,1,1,1,0,1,0 1,0,3,2,0,4,2,0,1,1,1,1,1,0 1,1,3,2,1,3,3,0,0,1,1,2,1,0 1,0,1,2,3,3,3,0,1,1,1,0,1,0 0,0,3,2,2,1,3,0,1,1,1,1,1,0 0,0,1,2,2,8,1,0,0,1,1,1,1,0 1,0,1,2,0,4,0,0,0,1,1,1,1,0 0,0,10,3,1,4,3,0,0,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,0 0,5,0,3,0,1,2,0,1,1,1,0,1,0 0,0,0,3,2,3,3,0,0,1,1,0,1,0 0,4,10,3,2,5,3,0,1,1,1,0,1,1 0,0,1,2,2,7,1,4,1,1,1,2,1,0 0,0,3,2,2,1,4,0,1,1,1,0,1,0 3,0,3,2,4,2,3,0,0,1,1,2,1,0 0,0,0,3,2,2,3,0,0,1,1,2,1,0 1,5,10,3,0,5,2,0,1,1,1,2,1,1 1,0,3,2,0,1,2,0,1,1,1,1,1,0 1,0,1,2,1,7,5,4,0,1,1,0,1,0 2,0,1,2,0,2,2,0,1,1,1,1,1,1 0,0,2,1,2,8,1,0,0,1,1,2,1,0 0,5,10,3,2,5,5,0,1,1,1,0,1,0 0,0,0,3,2,5,3,4,0,1,1,0,1,0 1,0,6,2,0,4,2,0,1,1,1,0,1,1 0,0,1,2,0,8,0,0,0,1,1,0,1,0 0,0,2,1,0,7,2,0,1,1,1,0,1,0 0,0,1,2,2,1,3,1,1,1,1,1,1,0 1,4,0,3,0,1,2,0,1,1,1,1,1,1 0,5,5,2,0,5,2,0,1,1,1,1,1,0 1,0,3,2,0,10,2,1,1,1,1,0,1,0 0,4,3,2,0,12,2,0,1,1,1,0,1,1 1,0,2,1,1,1,3,0,1,1,1,0,1,0 0,1,3,2,0,5,2,0,1,1,1,1,1,0 1,0,0,3,2,5,3,0,1,1,1,1,1,0 1,0,3,2,1,8,3,0,0,1,1,0,1,0 0,0,1,2,2,8,3,0,1,1,1,0,1,0 0,0,3,2,2,1,3,0,1,1,1,1,1,0 0,4,3,2,2,12,3,0,1,1,1,0,1,0 0,0,3,2,1,4,3,0,1,1,1,1,1,0 1,4,10,3,0,4,2,0,1,1,1,1,1,1 2,0,3,2,0,1,2,0,1,1,1,1,1,1 2,0,3,2,0,2,2,0,1,1,1,0,1,0 1,0,1,2,0,5,2,0,1,1,1,1,1,0 0,0,1,2,0,1,2,0,1,1,1,1,1,1 1,0,12,1,3,2,5,4,0,1,1,2,1,0 1,0,11,0,5,9,3,0,1,1,1,2,1,0 3,1,1,2,0,2,0,0,0,1,1,2,1,0 0,0,3,2,2,1,3,0,1,1,1,1,1,0 1,0,1,2,0,9,2,0,1,1,1,1,1,0 2,0,7,1,1,7,3,0,1,1,1,1,1,1 0,0,1,2,2,6,1,0,1,1,1,2,1,0 0,0,1,2,2,3,3,0,1,1,1,2,1,0 1,0,3,2,0,7,2,4,1,1,1,0,1,0 1,0,1,2,0,0,2,0,1,1,1,1,1,0 2,1,14,0,3,2,5,0,0,1,1,2,1,0 0,0,1,2,0,3,2,0,1,1,1,1,1,0 2,4,0,3,1,4,3,4,1,1,1,0,1,0 1,0,1,2,2,2,1,0,1,1,1,2,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,1 2,0,1,2,0,7,2,0,1,1,1,0,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,0 0,0,3,2,2,10,3,0,1,1,1,0,1,0 0,0,9,1,5,10,5,0,1,1,1,0,1,0 0,0,3,2,2,3,3,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 0,3,3,2,2,8,1,0,0,1,1,0,1,0 0,4,5,2,2,12,1,4,0,1,1,2,1,0 0,0,1,2,2,8,3,0,0,1,1,0,1,0 2,1,1,2,1,3,3,0,0,1,1,0,1,0 0,0,3,2,2,2,4,0,0,1,1,2,1,0 1,4,10,3,0,5,0,0,0,1,1,0,1,1 0,0,3,2,2,3,1,0,0,1,1,2,1,0 0,0,14,0,2,1,1,0,1,1,1,0,1,0 0,0,3,2,0,6,2,0,1,1,1,0,1,0 1,1,1,2,2,1,1,0,1,1,1,1,1,0 1,1,0,3,0,4,2,0,1,1,1,0,1,1 0,0,3,2,2,2,1,0,1,1,1,0,1,0 1,0,3,2,0,2,2,0,1,1,1,0,1,0 0,0,1,2,2,0,1,0,1,1,1,2,1,0 1,0,3,2,2,8,1,1,1,1,1,2,1,0 2,0,0,3,0,5,2,0,1,1,1,0,1,1 1,0,6,2,0,4,2,4,1,1,1,1,1,1 1,0,8,0,0,10,2,0,1,1,1,1,1,0 1,4,13,3,0,4,2,0,1,1,1,0,1,1 1,0,10,3,0,5,2,0,1,1,1,1,1,1 1,2,1,2,0,4,2,0,1,1,1,1,1,0 1,0,3,2,0,1,2,2,1,1,1,1,1,0 2,0,3,2,0,4,1,4,0,1,1,0,1,0 1,0,1,2,2,4,3,0,0,1,1,0,1,0 0,0,10,3,2,5,3,0,1,1,1,1,1,0 1,0,12,1,3,10,5,0,0,1,1,1,1,0 0,0,14,0,0,6,2,0,1,1,1,0,1,0 1,0,6,2,0,7,2,0,1,1,1,0,1,1 1,4,10,3,0,5,2,0,1,1,1,1,1,1 1,0,3,2,0,8,2,0,1,1,1,0,1,1 1,0,2,1,0,7,2,0,1,1,1,0,1,0 2,1,10,3,0,5,2,0,1,1,1,1,1,1 0,0,3,2,2,2,3,0,1,1,1,2,1,0 1,5,3,2,0,1,0,4,0,1,1,0,1,1 0,0,3,2,2,7,1,1,1,1,1,0,1,0 1,0,6,2,2,9,1,0,1,1,1,0,1,0 0,4,10,3,2,5,3,0,0,1,1,0,1,0 1,0,3,2,4,1,5,0,0,1,1,0,1,0 0,0,3,2,2,1,3,0,1,1,1,1,1,0 1,0,10,3,0,0,2,0,1,1,1,1,1,1 0,0,0,3,2,3,1,0,1,1,1,2,1,0 0,3,3,2,0,1,2,0,1,1,1,1,1,1 0,0,2,1,2,3,1,4,1,1,1,2,1,0 1,0,10,3,1,4,3,0,0,1,1,1,1,1 1,0,0,3,1,5,5,4,0,1,1,0,1,0 2,0,1,2,0,1,2,0,1,1,1,0,1,1 1,2,3,2,0,4,2,0,1,1,1,1,1,1 1,2,5,2,0,5,2,0,1,1,1,1,1,1 0,0,1,2,0,1,2,0,1,1,1,0,1,0 0,0,0,3,1,3,3,0,0,1,1,0,1,0 1,1,13,3,3,5,3,0,1,1,1,0,1,0 0,0,1,2,2,2,1,0,1,1,1,2,1,0 1,1,1,2,0,9,2,0,1,1,1,1,1,0 1,0,0,3,0,3,0,0,0,1,1,0,1,1 1,0,3,2,0,1,0,1,0,1,1,0,1,1 0,0,3,2,1,1,3,0,1,1,1,0,1,0 2,4,3,2,0,2,2,0,1,1,1,2,1,0 1,3,10,3,0,13,2,0,1,1,1,0,1,1 1,0,3,2,0,7,2,0,1,1,1,0,1,1 1,0,3,2,0,10,2,0,1,1,1,1,1,0 1,4,3,2,2,2,1,0,1,1,1,2,1,0 0,3,0,3,0,5,2,0,1,1,1,0,1,1 1,0,5,2,0,1,2,0,1,1,1,0,1,0 1,4,5,2,0,8,2,0,1,1,1,0,1,0 0,0,15,0,2,9,3,0,1,1,1,0,1,0 2,0,1,2,2,4,3,0,1,1,1,2,1,1 1,4,10,3,0,5,0,0,0,1,1,2,1,0 0,0,4,3,2,5,3,0,1,1,1,1,1,0 0,5,0,3,2,5,1,0,1,1,1,2,1,0 0,0,3,2,2,10,1,0,1,1,1,2,1,0 0,0,1,2,3,3,3,0,1,1,1,0,1,0 2,0,3,2,0,4,2,0,1,1,1,1,1,0 0,0,3,2,1,1,3,0,1,1,1,1,1,0 0,0,0,3,0,0,2,0,1,1,1,1,1,0 0,0,1,2,2,2,3,0,1,1,1,2,1,0 0,0,2,1,0,8,2,0,1,1,1,0,1,0 0,0,2,1,2,4,3,0,1,1,1,1,1,0 0,0,0,3,0,5,2,0,1,1,1,2,1,0 1,0,0,3,0,3,2,0,1,1,1,1,1,0 1,0,1,2,0,7,0,0,0,1,1,0,1,1 1,4,0,3,0,5,2,0,1,1,1,1,1,1 0,0,1,2,0,5,0,0,0,1,1,0,1,1 0,0,3,2,0,8,0,4,0,1,1,2,1,0 0,0,1,2,2,2,1,0,1,1,1,0,1,0 0,2,4,3,0,5,2,0,1,1,1,1,1,1 0,0,1,2,2,1,3,0,1,1,1,2,1,0 0,0,6,2,2,8,1,0,1,1,1,2,1,0 1,0,10,3,3,4,3,0,0,1,1,1,1,0 1,5,10,3,0,5,0,0,0,1,1,2,1,1 2,0,3,2,4,8,5,0,0,1,1,0,1,0 2,2,10,3,0,4,2,0,1,1,1,0,1,1 0,0,0,3,0,3,2,0,1,1,1,0,1,1 1,4,0,3,1,8,5,0,0,1,1,2,1,0 2,0,3,2,0,4,2,0,1,1,1,2,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,3,2,0,10,2,0,1,1,1,0,1,0 0,0,0,3,0,4,2,0,1,1,1,0,1,1 2,0,1,2,1,8,3,0,0,1,1,2,1,0 1,0,1,2,1,2,3,0,0,1,1,0,1,0 1,0,14,0,0,2,0,0,0,1,1,0,1,0 0,0,2,1,2,3,1,0,0,1,1,2,1,0 2,0,3,2,1,8,5,4,0,1,1,0,1,0 0,0,1,2,2,4,3,0,1,1,1,1,1,0 1,1,0,3,0,4,0,0,0,1,1,2,1,1 1,1,5,2,0,4,2,0,1,1,1,1,1,0 1,0,1,2,0,7,2,0,1,1,1,0,1,1 0,0,0,3,0,4,0,0,0,1,1,1,1,1 0,0,6,2,2,1,1,1,1,1,1,2,1,0 1,0,5,2,0,4,2,0,1,1,1,0,1,1 1,2,4,3,2,4,3,0,1,1,1,2,1,0 0,0,3,2,2,7,1,0,1,1,1,0,1,0 0,0,3,2,1,10,4,0,1,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,2,1,1,7,5,0,0,1,1,0,1,0 1,1,0,3,0,3,2,0,1,1,1,0,1,1 2,0,0,3,0,8,2,0,1,1,1,0,1,1 1,1,0,3,0,3,2,0,1,1,1,1,1,0 0,0,6,2,0,1,2,0,1,1,1,0,1,0 1,1,0,3,0,9,2,0,1,1,1,1,1,0 1,0,3,2,0,4,2,0,1,1,1,0,1,0 1,0,14,0,0,8,0,0,0,1,1,0,1,0 0,0,3,2,2,7,1,0,1,1,1,1,1,0 0,0,12,1,1,3,1,0,0,1,1,2,1,0 2,2,0,3,0,4,2,0,1,1,1,1,1,0 0,0,1,2,2,3,3,4,0,1,1,0,1,0 2,1,5,2,4,5,3,0,0,1,1,1,1,1 1,0,9,1,1,2,3,0,0,1,1,1,1,0 0,0,3,2,2,8,3,4,0,1,1,2,1,0 1,0,1,2,0,8,2,0,1,1,1,0,1,0 2,4,3,2,5,2,3,0,0,1,1,2,1,0 0,0,6,2,0,6,2,0,1,1,1,2,1,0 0,0,0,3,2,4,4,0,1,1,1,1,1,0 2,0,3,2,4,6,4,0,0,1,1,2,1,0 0,0,1,2,2,8,3,0,0,1,1,0,1,0 0,0,3,2,2,3,4,0,1,1,1,1,1,0 0,0,1,2,2,3,3,0,1,1,1,1,1,0 0,0,3,2,0,3,0,0,0,1,1,0,1,0 1,0,3,2,0,3,2,0,1,1,1,1,1,0 0,0,1,2,2,6,1,0,1,1,1,2,1,0 2,0,3,2,4,11,3,0,0,1,1,2,1,0 2,0,0,3,1,8,3,0,0,1,1,0,1,0 1,0,1,2,1,8,5,0,0,1,1,2,1,0 1,1,0,3,0,3,2,0,1,1,1,1,1,1 1,0,3,2,0,8,0,1,0,1,1,2,1,0 2,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,3,2,1,5,1,0,1,1,1,2,1,0 0,2,3,2,0,1,2,0,1,1,1,0,1,0 1,0,0,3,1,8,3,0,0,1,1,0,1,0 0,0,1,2,2,2,1,0,1,1,1,2,1,0 2,0,2,1,1,2,3,0,0,1,1,0,1,0 0,0,5,2,2,5,3,0,0,1,1,2,1,0 0,3,1,2,3,5,3,0,0,1,1,0,1,0 1,0,3,2,0,6,2,0,1,1,1,1,1,1 0,0,0,3,0,5,0,0,0,1,1,0,1,0 0,0,1,2,2,4,1,0,1,1,1,2,1,0 3,1,2,1,0,1,2,0,1,1,1,2,1,0 0,1,1,2,0,1,2,0,1,1,1,1,1,1 1,3,0,3,0,4,2,2,1,1,1,0,1,0 1,3,0,3,0,8,2,0,1,1,1,0,1,1 1,0,3,2,0,8,0,0,0,1,1,0,1,0 0,0,1,2,2,3,1,4,0,1,1,2,1,0 1,0,3,2,1,3,3,0,0,1,1,1,1,0 1,0,0,3,2,3,3,0,0,1,1,2,1,0 0,0,6,2,0,1,2,0,1,1,1,1,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,0 0,0,3,2,2,0,3,0,1,1,1,0,1,0 2,0,3,2,1,8,3,0,1,1,1,1,1,0 1,0,1,2,0,0,2,0,1,1,1,1,1,1 1,0,3,2,2,1,5,0,1,1,1,0,1,0 1,0,1,2,1,3,3,0,1,1,1,0,1,0 0,0,3,2,0,3,2,0,1,1,1,1,1,0 1,0,0,3,2,8,3,0,1,1,1,0,1,0 0,0,0,3,2,0,3,0,0,1,1,0,1,0 1,0,1,2,0,2,2,0,1,1,1,2,1,0 1,0,0,3,0,3,2,0,1,1,1,1,1,0 0,0,1,2,2,2,5,0,1,1,1,0,1,0 1,0,3,2,2,7,3,4,1,1,1,0,1,0 1,0,3,2,1,1,3,0,1,1,1,0,1,0 0,5,10,3,2,5,3,0,1,1,1,1,1,0 0,0,0,3,2,5,3,0,1,1,1,0,1,0 0,0,2,1,2,10,3,4,1,1,1,2,1,0 0,0,3,2,0,2,2,1,1,1,1,1,1,0 0,0,3,2,2,1,3,0,1,1,1,1,1,0 0,0,2,1,0,10,2,0,1,1,1,1,1,0 1,0,3,2,1,6,3,1,1,1,1,0,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,0 2,4,0,3,0,5,0,0,0,1,1,0,1,1 0,4,3,2,0,2,2,4,1,1,1,2,1,1 0,0,0,3,0,3,2,0,1,1,1,0,1,0 2,0,11,0,0,6,2,0,1,1,1,0,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 0,0,1,2,2,9,3,0,1,1,1,1,1,0 1,0,5,2,1,1,3,0,1,1,1,0,1,0 2,0,1,2,0,2,2,0,1,1,1,2,1,0 0,0,3,2,0,1,2,2,1,1,1,0,1,0 2,0,0,3,0,8,0,0,0,1,1,0,1,1 2,0,1,2,0,3,2,0,1,1,1,1,1,1 3,0,8,0,4,11,5,4,0,1,1,2,1,0 0,0,0,3,2,3,1,0,0,1,1,0,1,0 1,0,3,2,1,7,5,0,0,1,1,0,1,0 1,0,3,2,0,3,2,0,1,1,1,0,1,0 0,3,3,2,1,1,5,4,1,1,1,1,1,0 1,0,1,2,3,1,4,1,1,1,1,0,1,0 1,0,0,3,0,3,2,0,1,1,1,0,1,1 0,0,0,3,0,8,0,0,0,1,1,2,1,1 1,0,3,2,1,12,3,0,1,1,1,0,1,0 1,0,14,0,0,6,2,0,1,1,1,2,1,0 0,4,10,3,2,5,4,1,0,1,1,0,1,0 0,0,8,0,0,7,2,4,1,1,1,0,1,0 0,0,2,1,2,10,3,0,1,1,1,0,1,0 1,5,3,2,1,12,5,0,1,1,1,1,1,0 1,0,1,2,4,4,5,1,0,1,1,0,1,0 2,0,5,2,0,4,2,0,1,1,1,2,1,0 0,1,4,3,0,5,2,0,1,1,1,1,1,0 0,0,3,2,2,8,1,0,0,1,1,2,1,0 0,4,1,2,0,2,2,0,1,1,1,0,1,0 1,0,1,2,0,6,2,0,1,1,1,1,1,0 0,0,1,2,0,8,2,0,1,1,1,0,1,1 1,0,3,2,0,7,2,0,1,1,1,1,1,0 0,0,0,3,2,2,1,0,0,1,1,2,1,0 0,0,2,1,2,7,5,3,1,1,1,0,1,0 1,0,0,3,0,4,0,0,0,1,1,0,1,1 0,0,3,2,2,1,1,0,1,1,1,0,1,0 0,0,3,2,2,1,3,0,1,1,1,2,1,0 1,3,1,2,2,4,5,0,0,1,1,0,1,0 2,5,0,3,0,4,2,0,1,1,1,1,1,1 0,2,0,3,0,4,2,0,1,1,1,1,1,1 2,1,1,2,4,5,5,0,1,1,1,2,1,0 1,0,1,2,3,5,3,0,1,1,1,1,1,0 0,0,1,2,0,6,2,0,1,1,1,1,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 0,5,5,2,2,0,3,0,1,1,1,1,1,0 0,0,1,2,2,8,1,0,0,1,1,2,1,0 1,0,12,1,0,7,2,0,1,1,1,0,1,0 1,0,10,3,0,5,2,0,1,1,1,1,1,0 1,0,14,0,0,7,2,0,1,1,1,0,1,0 1,0,4,3,0,5,2,0,1,1,1,1,1,1 1,2,0,3,0,3,2,0,1,1,1,1,1,1 1,0,5,2,4,8,5,4,0,1,1,0,1,0 0,0,3,2,2,1,3,0,1,1,1,0,1,0 1,0,3,2,1,8,3,0,0,1,1,1,1,0 1,0,6,2,1,4,5,0,0,1,1,0,1,0 1,1,3,2,0,3,2,0,1,1,1,1,1,0 1,0,3,2,1,2,5,0,0,1,1,2,1,0 0,0,1,2,2,2,3,0,0,1,1,2,1,0 1,4,10,3,1,4,5,0,0,1,1,0,1,0 1,0,5,2,1,4,5,0,1,1,1,1,1,0 0,0,0,3,0,3,2,0,1,1,1,1,1,1 0,0,3,2,2,10,1,0,1,1,1,1,1,1 1,0,14,0,3,2,5,0,0,1,1,0,1,0 1,1,0,3,0,4,2,0,1,1,1,1,1,1 0,0,1,2,0,4,0,0,0,1,1,1,1,1 0,0,14,0,2,3,1,0,0,1,1,2,1,0 0,1,6,2,1,1,3,0,1,1,1,1,1,1 0,0,1,2,2,6,1,0,1,1,1,2,1,0 0,0,7,1,0,1,2,0,1,1,1,0,1,0 1,0,0,3,0,6,2,0,1,1,1,0,1,1 1,0,10,3,2,8,3,0,1,1,1,1,1,0 1,1,3,2,5,9,5,0,1,1,1,1,1,0 1,0,0,3,0,3,2,0,1,1,1,1,1,1 0,0,3,2,2,8,3,0,0,1,1,0,1,0 0,0,3,2,2,4,3,0,0,1,1,0,1,0 0,0,1,2,2,5,1,0,0,1,1,2,1,0 0,5,3,2,3,2,1,0,0,1,1,2,1,0 1,0,1,2,1,3,5,0,0,1,1,0,1,0 2,0,4,3,0,5,2,0,1,1,1,0,1,1 2,0,8,0,1,9,4,0,1,1,1,0,1,0 0,5,13,3,0,0,2,0,1,1,1,1,1,1 1,0,7,1,0,6,2,0,1,1,1,0,1,0 1,0,10,3,0,0,2,0,1,1,1,0,1,1 2,0,0,3,0,4,2,0,1,1,1,2,1,1 1,4,10,3,2,5,3,0,0,1,1,0,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,0 0,0,14,0,2,10,3,0,1,1,1,2,1,0 1,1,3,2,0,2,2,0,1,1,1,1,1,0 0,0,1,2,2,3,3,0,0,1,1,0,1,0 0,1,3,2,2,2,1,0,1,1,1,1,1,0 1,0,3,2,0,0,2,0,1,1,1,0,1,0 0,4,3,2,0,1,2,0,1,1,1,1,1,1 0,0,2,1,2,2,1,0,1,1,1,2,1,0 2,0,8,0,0,6,2,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 0,0,3,2,0,8,0,0,0,1,1,2,1,0 0,0,1,2,0,8,0,0,0,1,1,0,1,0 0,0,3,2,0,8,2,0,1,1,1,1,1,0 0,5,1,2,2,5,1,0,1,1,1,2,1,0 1,2,3,2,5,4,3,0,1,1,1,1,1,1 1,0,3,2,0,6,2,0,1,1,1,1,1,0 0,0,12,1,3,2,5,0,0,1,1,0,1,0 1,4,1,2,0,12,2,0,1,1,1,0,1,0 2,2,2,1,0,3,2,0,1,1,1,0,1,0 1,4,1,2,2,1,3,0,1,1,1,0,1,0 0,5,1,2,0,1,1,0,1,1,1,1,1,1 2,4,3,2,1,8,5,0,0,1,1,2,1,0 0,0,3,2,0,1,2,4,1,1,1,2,1,0 1,4,10,3,0,5,2,0,1,1,1,0,1,1 1,5,13,3,0,5,2,1,1,1,1,0,1,0 1,0,3,2,0,10,2,4,1,1,1,0,1,0 2,0,13,3,0,4,2,0,1,1,1,0,1,1 1,5,13,3,1,4,3,0,0,1,1,0,1,0 1,4,3,2,0,10,2,0,1,1,1,0,1,0 1,0,3,2,0,4,2,0,1,1,1,1,1,0 1,0,1,2,0,10,2,0,1,1,1,0,1,1 1,4,6,2,0,12,2,2,1,1,1,0,1,0 0,2,5,2,2,9,1,0,1,1,1,2,1,0 1,0,3,2,2,5,3,0,1,1,1,0,1,0 0,0,3,2,2,3,1,0,1,1,1,0,1,0 1,0,1,2,0,2,2,0,1,1,1,1,1,1 2,0,2,1,1,3,3,0,1,1,1,1,1,0 1,0,1,2,2,0,5,0,0,1,1,0,1,0 0,0,0,3,2,0,3,0,1,1,1,0,1,0 1,0,0,3,2,1,3,0,1,1,1,0,1,0 1,0,5,2,2,5,3,0,1,1,1,2,1,0 0,0,3,2,2,9,3,0,1,1,1,0,1,0 1,0,1,2,1,2,5,0,0,1,1,2,1,0 1,0,1,2,0,7,2,2,1,1,1,0,1,0 0,0,2,1,2,3,4,0,0,1,1,2,1,0 1,0,0,3,0,3,2,0,1,1,1,0,1,1 0,0,10,3,0,5,2,0,1,1,1,0,1,0 2,0,3,2,0,6,2,0,1,1,1,0,1,0 2,0,3,2,1,3,3,0,0,1,1,2,1,0 0,0,6,2,2,3,3,0,1,1,1,0,1,0 0,0,1,2,2,1,5,0,1,1,1,0,1,0 1,0,3,2,0,3,2,0,1,1,1,0,1,0 2,0,1,2,0,3,2,0,1,1,1,1,1,0 2,0,3,2,0,5,2,0,1,1,1,1,1,0 1,4,6,2,1,4,3,0,1,1,1,1,1,0 1,0,4,3,1,5,3,0,1,1,1,1,1,1 1,0,1,2,0,8,2,0,1,1,1,1,1,0 0,0,0,3,2,7,3,0,1,1,1,1,1,0 0,0,1,2,2,8,3,0,0,1,1,1,1,0 1,0,3,2,0,8,0,0,0,1,1,2,1,0 1,0,3,2,1,2,1,0,0,1,1,1,1,0 0,0,1,2,2,2,1,4,0,1,1,0,1,0 1,0,0,3,0,4,2,4,1,1,1,0,1,1 1,0,5,2,0,4,2,0,1,1,1,1,1,0 0,5,0,3,0,8,2,0,1,1,1,1,1,0 0,0,3,2,2,2,1,0,0,1,1,2,1,0 1,0,6,2,1,1,3,0,1,1,1,1,1,0 0,0,3,2,0,4,1,1,0,1,1,0,1,0 0,0,9,1,2,9,4,0,1,1,1,0,1,0 2,5,4,3,0,5,2,0,1,1,1,0,1,1 1,4,3,2,0,1,2,0,1,1,1,1,1,0 1,0,11,0,0,7,2,0,1,1,1,0,1,0 0,0,12,1,2,2,1,0,0,1,1,2,1,0 1,2,3,2,0,9,2,0,1,1,1,0,1,1 0,0,1,2,2,8,3,0,0,1,1,1,1,0 0,0,0,3,2,5,3,0,1,1,1,1,1,0 1,4,12,1,0,10,2,0,1,1,1,0,1,0 1,0,4,3,0,5,2,0,1,1,1,1,1,1 1,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,2,2,1,0,0,1,1,0,1,0 1,0,0,3,0,5,2,0,1,1,1,0,1,1 1,0,1,2,0,0,2,0,1,1,1,0,1,1 0,0,3,2,2,1,3,0,1,1,1,2,1,0 1,0,1,2,3,10,5,0,1,1,1,1,1,1 1,0,1,2,0,3,2,0,1,1,1,1,1,1 1,0,6,2,2,7,3,0,1,1,1,0,1,0 0,0,3,2,2,0,5,4,0,1,1,0,1,0 1,4,3,2,3,8,5,4,0,1,1,0,1,0 3,0,6,2,1,3,3,0,0,1,1,2,1,0 0,0,0,3,2,0,3,0,1,1,1,0,1,1 0,0,3,2,2,7,1,0,0,1,1,0,1,0 1,0,6,2,0,2,0,0,0,1,1,0,1,0 0,0,2,1,2,11,1,0,0,1,1,2,1,0 2,0,1,2,0,0,2,0,1,1,1,2,1,0 0,0,3,2,0,2,2,0,1,1,1,1,1,0 1,2,1,2,3,8,3,0,1,1,1,0,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,1 0,4,0,3,2,5,3,0,1,1,1,1,1,0 0,0,0,3,2,5,3,0,0,1,1,1,1,0 1,0,3,2,1,4,3,4,0,1,1,0,1,0 0,0,3,2,2,4,3,0,1,1,1,0,1,0 1,0,10,3,0,5,2,0,1,1,1,0,1,1 0,0,0,3,0,3,2,0,1,1,1,0,1,0 1,0,1,2,3,3,3,0,1,1,1,1,1,0 0,0,1,2,0,7,2,0,1,1,1,0,1,0 1,2,3,2,2,4,1,0,1,1,1,0,1,0 0,0,1,2,2,3,3,0,1,1,1,2,1,0 3,1,3,2,0,9,2,0,1,1,1,1,1,0 0,0,14,0,2,7,3,0,1,1,1,2,1,0 0,0,3,2,2,1,3,0,1,1,1,0,1,0 1,0,3,2,5,2,3,4,1,1,1,0,1,0 1,1,0,3,0,4,2,0,1,1,1,1,1,0 2,1,6,2,0,1,2,0,1,1,1,2,1,0 0,0,5,2,0,4,0,0,0,1,1,1,1,1 3,0,0,3,2,2,3,0,0,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,0,1,1 1,1,10,3,0,9,2,0,1,1,1,1,1,0 0,5,3,2,2,8,3,0,1,1,1,2,1,0 0,0,3,2,2,3,1,0,1,1,1,0,1,0 2,0,1,2,1,8,3,0,0,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,1 0,0,3,2,0,2,4,0,0,1,1,2,1,0 1,3,10,3,0,4,2,0,1,1,1,0,1,1 0,4,0,3,2,5,3,0,1,1,1,0,1,0 0,0,3,2,2,3,3,0,0,1,1,0,1,0 1,0,0,3,0,6,2,0,1,1,1,0,1,0 2,1,1,2,0,3,0,0,0,1,1,1,1,1 0,0,3,2,2,1,4,0,1,1,1,1,1,0 1,0,10,3,1,4,3,0,1,1,1,1,1,1 1,1,6,2,0,9,2,0,1,1,1,1,1,1 0,0,0,3,1,10,5,0,0,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,0,3,2,3,1,4,1,1,1,0,1,0 0,0,6,2,0,1,2,0,1,1,1,1,1,1 0,0,3,2,0,1,2,0,1,1,1,1,1,1 0,0,2,1,2,3,1,0,1,1,1,2,1,0 1,0,10,3,0,8,2,0,1,1,1,0,1,1 1,0,3,2,1,2,3,0,0,1,1,2,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 1,1,6,2,0,3,2,0,1,1,1,1,1,1 0,0,3,2,2,2,1,0,0,1,1,2,1,0 1,3,6,2,2,8,3,0,0,1,1,0,1,0 0,0,6,2,2,3,4,0,0,1,1,0,1,0 0,0,3,2,2,2,5,2,0,1,1,0,1,0 1,0,3,2,1,8,5,0,0,1,1,1,1,0 1,0,3,2,0,7,2,4,1,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,0,1,1 3,0,1,2,4,8,3,0,0,1,1,2,1,0 0,1,3,2,2,1,5,0,1,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,2,8,1,4,1,1,1,0,1,0 3,1,2,1,2,9,3,0,1,1,1,2,1,0 2,0,3,2,0,1,2,0,1,1,1,0,1,1 1,1,10,3,1,5,3,0,0,1,1,2,1,0 0,0,3,2,2,9,1,0,1,1,1,0,1,0 0,4,1,2,2,5,1,0,0,1,1,2,1,0 1,5,3,2,2,8,3,0,0,1,1,2,1,0 0,3,3,2,2,1,1,0,1,1,1,2,1,0 1,1,0,3,0,1,2,0,1,1,1,1,1,1 2,1,10,3,0,3,2,0,1,1,1,0,1,0 2,2,3,2,0,3,2,0,1,1,1,1,1,1 0,0,3,2,1,8,5,0,0,1,1,1,1,0 0,0,3,2,0,8,2,0,1,1,1,1,1,0 1,0,5,2,0,4,2,0,1,1,1,0,1,1 2,5,5,2,2,8,3,0,0,1,1,1,1,0 2,0,14,0,0,2,2,4,1,1,1,0,1,0 0,0,1,2,0,2,4,1,1,1,1,2,1,0 1,0,1,2,3,0,5,0,0,1,1,1,1,0 1,0,3,2,1,8,5,0,0,1,1,2,1,0 1,3,3,2,2,8,3,0,1,1,1,1,1,1 0,0,3,2,2,3,5,0,0,1,1,2,1,0 0,0,3,2,2,2,5,0,0,1,1,0,1,0 2,2,0,3,1,4,3,0,1,1,1,1,1,1 0,0,7,1,1,2,5,0,0,1,1,2,1,0 1,1,0,3,0,5,2,0,1,1,1,1,1,1 1,4,0,3,1,5,3,4,1,1,1,0,1,0 0,0,1,2,2,0,3,4,0,1,1,1,1,0 1,0,0,3,1,4,3,0,1,1,1,1,1,1 0,0,2,1,2,9,4,0,1,1,1,2,1,0 0,0,3,2,0,10,2,0,1,1,1,1,1,1 1,0,3,2,3,7,3,0,1,1,1,0,1,0 0,0,0,3,2,4,3,0,1,1,1,0,1,0 0,0,1,2,0,10,2,0,1,1,1,1,1,0 0,5,0,3,2,5,3,0,0,1,1,1,1,0 1,0,3,2,0,3,2,0,1,1,1,2,1,0 1,0,3,2,0,10,2,0,1,1,1,0,1,0 0,4,1,2,0,10,2,0,1,1,1,0,1,1 0,0,0,3,6,3,0,0,0,1,1,0,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,1 1,0,1,2,0,2,2,0,1,1,1,1,1,0 0,0,4,3,2,5,3,0,1,1,1,0,1,1 1,0,10,3,0,4,2,0,1,1,1,1,1,1 0,0,5,2,2,7,1,4,1,1,1,1,1,0 0,0,1,2,2,8,1,0,1,1,1,2,1,0 1,0,2,1,0,10,2,0,1,1,1,1,1,0 0,0,1,2,2,3,1,0,1,1,1,1,1,0 1,0,0,3,1,4,5,0,1,1,1,1,1,1 0,0,5,2,1,2,3,0,0,1,1,2,1,0 1,0,5,2,2,5,1,0,1,1,1,0,1,0 0,0,1,2,0,8,2,0,1,1,1,0,1,0 2,1,7,1,0,9,2,0,1,1,1,2,1,0 2,5,4,3,0,5,2,1,1,1,1,0,1,1 0,0,1,2,1,2,3,0,0,1,1,0,1,0 0,0,9,1,0,6,2,0,1,1,1,0,1,0 0,0,0,3,0,9,2,0,1,1,1,0,1,0 0,0,1,2,2,0,1,0,0,1,1,2,1,0 0,0,3,2,2,2,1,4,1,1,1,0,1,0 0,0,12,1,2,6,1,0,1,1,1,2,1,0 0,0,0,3,2,4,1,0,1,1,1,0,1,0 0,0,2,1,2,0,1,0,1,1,1,0,1,0 0,0,3,2,2,3,3,1,1,1,1,2,1,0 0,0,1,2,0,4,2,0,1,1,1,1,1,0 0,0,1,2,2,2,1,0,1,1,1,2,1,0 1,0,10,3,0,5,2,1,1,1,1,0,1,1 1,0,0,3,0,8,2,0,1,1,1,0,1,1 0,0,3,2,2,7,1,4,1,1,1,0,1,0 1,5,10,3,1,5,5,0,0,1,1,0,1,0 2,0,10,3,2,5,3,0,1,1,1,1,1,0 2,0,3,2,0,12,2,0,1,1,1,0,1,0 0,0,3,2,2,10,1,0,1,1,1,2,1,0 0,4,3,2,0,10,2,4,1,1,1,0,1,0 0,0,12,1,1,1,3,2,1,1,1,0,1,0 1,0,3,2,0,8,0,0,0,1,1,0,1,0 0,0,3,2,1,10,3,0,1,1,1,0,1,0 0,0,3,2,5,8,4,0,0,1,1,0,1,0 2,0,2,1,4,7,3,0,0,1,1,0,1,0 3,0,3,2,0,5,2,0,1,1,1,2,1,0 0,0,9,1,2,2,4,4,1,1,1,2,1,0 1,5,1,2,2,5,3,4,0,1,1,0,1,0 1,2,0,3,0,3,2,0,1,1,1,1,1,0 0,0,3,2,2,8,3,0,0,1,1,0,1,0 1,0,2,1,2,1,5,0,1,1,1,0,1,0 1,0,6,2,0,4,2,0,1,1,1,1,1,1 0,0,3,2,2,7,5,4,1,1,1,1,1,0 1,4,10,3,1,5,5,0,0,1,1,1,1,0 1,1,3,2,2,9,3,0,1,1,1,0,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 1,4,3,2,0,12,2,0,1,1,1,0,1,1 1,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,0,3,0,3,2,0,1,1,1,1,1,1 0,0,1,2,2,2,1,0,0,1,1,2,1,0 0,0,3,2,2,2,3,0,0,1,1,2,1,0 0,0,1,2,2,2,3,0,0,1,1,1,1,0 2,0,1,2,1,1,3,0,1,1,1,0,1,0 0,0,1,2,0,3,0,0,0,1,1,2,1,0 1,4,6,2,0,8,2,0,1,1,1,2,1,0 0,0,3,2,0,8,2,0,1,1,1,0,1,0 0,0,3,2,2,7,3,0,1,1,1,1,1,0 0,0,1,2,2,2,5,0,0,1,1,2,1,0 0,5,1,2,0,8,0,0,0,1,1,0,1,0 0,0,14,0,2,2,3,0,1,1,1,2,1,0 1,0,5,2,0,3,0,0,0,1,1,0,1,0 0,0,3,2,2,4,1,0,1,1,1,0,1,0 0,0,2,1,2,6,1,0,0,1,1,2,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 1,0,3,2,1,1,3,0,1,1,1,1,1,0 1,0,1,2,0,8,0,0,0,1,1,2,1,0 0,0,1,2,2,2,3,0,1,1,1,2,1,0 1,2,6,2,1,4,3,0,0,1,1,1,1,1 1,2,0,3,0,4,2,0,1,1,1,1,1,0 0,0,9,1,2,2,1,0,1,1,1,2,1,0 0,0,3,2,3,12,3,0,1,1,1,1,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,2,6,4,0,1,1,1,0,1,0 0,0,3,2,1,7,1,0,1,1,1,0,1,0 1,1,3,2,0,3,2,0,1,1,1,1,1,0 1,0,3,2,2,2,3,0,0,1,1,0,1,0 0,0,14,0,0,1,2,3,1,1,1,0,1,0 1,0,3,2,1,1,3,0,1,1,1,0,1,0 0,5,3,2,2,0,1,0,0,1,1,2,1,0 1,1,4,3,2,5,3,0,1,1,1,1,1,1 1,0,15,0,2,2,3,4,0,1,1,0,1,0 0,0,3,2,0,10,3,0,1,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,2,2,3,0,0,1,1,2,1,0 1,0,7,1,0,12,2,0,1,1,1,2,1,0 0,0,3,2,1,1,1,0,1,1,1,2,1,0 1,4,10,3,3,5,5,0,0,1,1,0,1,0 1,3,0,3,2,0,1,4,1,1,1,0,1,0 0,0,3,2,2,6,5,0,1,1,1,0,1,0 0,0,5,2,0,1,2,0,1,1,1,1,1,1 0,4,0,3,0,5,0,0,0,1,1,1,1,0 2,5,3,2,4,8,5,0,0,1,1,2,1,0 3,0,3,2,0,8,2,0,1,1,1,2,1,0 0,5,0,3,0,4,0,0,0,1,1,2,1,0 0,0,1,2,2,5,3,0,0,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,1 0,0,1,2,2,0,3,0,1,1,1,0,1,0 0,2,0,3,2,5,3,0,0,1,1,0,1,0 0,0,1,2,0,3,2,0,1,1,1,0,1,0 0,0,0,3,0,8,2,0,1,1,1,0,1,1 0,0,1,2,2,3,3,0,0,1,1,2,1,0 0,0,3,2,2,3,1,0,1,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,0 0,0,14,0,2,1,4,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 3,0,3,2,5,2,3,0,1,1,1,0,1,0 0,0,1,2,1,0,5,0,0,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 0,1,2,1,2,6,3,0,1,1,1,0,1,0 3,0,3,2,4,2,3,0,0,1,1,2,1,0 1,0,3,2,0,10,2,0,1,1,1,0,1,1 1,0,3,2,1,4,3,0,0,1,1,1,1,0 1,3,1,2,0,0,2,0,1,1,1,0,1,1 0,0,3,2,2,10,3,0,1,1,1,0,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 2,0,11,0,2,2,3,0,1,1,1,0,1,0 0,4,0,3,2,5,3,0,0,1,1,2,1,0 1,0,3,2,0,8,2,0,1,1,1,0,1,0 2,0,5,2,0,1,2,0,1,1,1,0,1,1 0,0,2,1,2,6,1,0,1,1,1,2,1,0 0,0,3,2,0,7,2,0,1,1,1,1,1,0 0,1,3,2,0,10,2,0,1,1,1,1,1,0 0,1,3,2,0,1,2,0,1,1,1,1,1,0 0,0,1,2,2,1,1,0,1,1,1,0,1,0 1,0,3,2,0,3,0,0,0,1,1,0,1,0 0,0,12,1,0,10,2,0,1,1,1,1,1,0 0,0,3,2,0,5,2,0,1,1,1,0,1,0 0,0,0,3,2,3,3,0,1,1,1,0,1,0 0,0,0,3,2,3,3,0,1,1,1,0,1,0 1,0,3,2,0,4,2,0,1,1,1,1,1,0 0,0,12,1,2,6,1,2,1,1,1,2,1,0 0,0,3,2,1,8,5,0,0,1,1,2,1,0 1,3,1,2,0,4,2,0,1,1,1,0,1,1 1,0,7,1,0,7,2,0,1,1,1,0,1,0 1,0,3,2,0,8,2,4,1,1,1,1,1,1 1,5,1,2,0,8,2,4,1,1,1,0,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 1,1,10,3,2,3,3,0,1,1,1,1,1,1 1,1,3,2,0,9,2,0,1,1,1,1,1,0 2,0,0,3,1,2,3,0,0,1,1,2,1,0 0,0,2,1,2,6,1,0,0,1,1,2,1,0 0,0,1,2,2,8,1,4,1,1,1,2,1,0 0,0,10,3,0,5,0,0,0,1,1,0,1,1 0,0,9,1,2,6,1,0,1,1,1,2,1,0 0,0,1,2,0,1,2,0,1,1,1,1,1,1 1,4,3,2,3,8,5,0,0,1,1,0,1,0 0,0,3,2,2,10,4,0,1,1,1,2,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 0,0,1,2,0,1,2,0,1,1,1,1,1,0 0,0,3,2,0,3,2,0,1,1,1,0,1,1 0,0,1,2,2,2,1,0,0,1,1,0,1,0 1,4,10,3,1,5,5,0,0,1,1,2,1,0 0,0,3,2,2,8,1,1,1,1,1,0,1,0 1,1,2,1,0,2,2,0,1,1,1,1,1,0 1,0,12,1,4,2,5,0,0,1,1,0,1,0 2,4,4,3,0,5,2,0,1,1,1,2,1,1 2,0,8,0,4,11,5,0,0,1,1,2,1,0 1,0,3,2,1,10,3,0,1,1,1,1,1,0 1,0,2,1,4,8,5,0,0,1,1,0,1,0 0,4,0,3,0,12,2,0,1,1,1,1,1,0 2,0,0,3,0,5,2,0,1,1,1,1,1,0 0,0,1,2,2,0,3,4,0,1,1,0,1,0 2,1,0,3,1,3,3,0,1,1,1,1,1,1 1,0,0,3,1,5,5,4,0,1,1,2,1,1 1,0,3,2,0,8,0,0,0,1,1,0,1,1 0,0,2,1,2,8,3,0,0,1,1,2,1,0 0,0,3,2,2,6,1,4,1,1,1,0,1,0 1,0,2,1,0,7,2,0,1,1,1,0,1,0 1,0,1,2,0,4,2,0,1,1,1,0,1,1 2,0,1,2,0,1,2,0,1,1,1,0,1,1 1,0,5,2,0,6,2,0,1,1,1,0,1,1 1,0,0,3,0,4,2,0,1,1,1,1,1,1 1,4,10,3,3,5,3,0,1,1,1,1,1,0 1,0,0,3,0,1,2,1,1,1,1,2,1,0 0,5,0,3,2,8,3,3,0,1,1,0,1,0 0,0,3,2,2,8,1,4,1,1,1,0,1,0 0,0,5,2,1,4,5,4,0,1,1,1,1,0 0,0,3,2,0,7,0,4,0,1,1,0,1,0 0,0,10,3,2,8,5,0,0,1,1,0,1,0 1,0,2,1,2,2,5,4,0,1,1,0,1,0 0,0,1,2,2,2,3,0,0,1,1,1,1,0 0,0,3,2,2,9,3,0,1,1,1,2,1,0 0,0,3,2,2,6,1,0,1,1,1,0,1,0 0,0,0,3,2,4,3,0,0,1,1,0,1,0 0,0,2,1,0,2,0,0,0,1,1,2,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,1 2,5,3,2,5,10,3,0,0,1,1,1,1,0 0,0,0,3,2,4,3,0,0,1,1,1,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,0 0,0,1,2,0,1,2,0,1,1,1,1,1,1 1,2,6,2,0,4,2,0,1,1,1,1,1,1 1,1,1,2,0,5,2,0,1,1,1,0,1,0 0,0,3,2,2,4,1,0,1,1,1,2,1,0 1,0,6,2,0,8,2,0,1,1,1,0,1,0 1,4,0,3,0,5,0,0,0,1,1,1,1,0 1,0,1,2,3,7,3,0,1,1,1,1,1,1 1,4,1,2,4,8,5,0,0,1,1,2,1,0 2,0,0,3,1,4,3,0,0,1,1,1,1,0 0,0,3,2,2,6,1,0,1,1,1,0,1,0 0,4,1,2,0,12,2,0,1,1,1,0,1,1 1,0,10,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,0,7,2,0,1,1,1,1,1,1 1,4,7,1,0,10,2,0,1,1,1,0,1,0 1,0,6,2,0,4,2,0,1,1,1,1,1,0 0,0,2,1,2,3,1,0,1,1,1,2,1,0 0,0,0,3,0,5,2,0,1,1,1,1,1,1 1,0,10,3,0,8,0,0,0,1,1,0,1,1 2,0,0,3,0,3,2,4,1,1,1,1,1,1 0,0,1,2,2,1,1,0,1,1,1,0,1,0 2,1,2,1,0,9,2,0,1,1,1,0,1,0 2,3,3,2,0,5,2,0,1,1,1,0,1,0 0,0,3,2,1,1,3,0,1,1,1,2,1,0 0,0,0,3,2,4,3,0,0,1,1,1,1,0 0,0,3,2,2,1,1,0,1,1,1,0,1,0 1,0,3,2,0,10,2,4,1,1,1,0,1,1 2,4,3,2,4,8,3,0,0,1,1,2,1,1 0,0,1,2,2,8,1,0,1,1,1,2,1,0 2,2,13,3,0,1,2,0,1,1,1,1,1,1 1,0,3,2,0,1,2,4,1,1,1,2,1,0 2,2,14,0,0,3,2,0,1,1,1,0,1,0 0,0,1,2,2,0,3,0,0,1,1,2,1,0 0,0,3,2,2,8,3,4,0,1,1,0,1,0 0,0,1,2,2,0,3,4,0,1,1,1,1,0 1,0,0,3,1,0,5,0,0,1,1,0,1,1 0,0,1,2,2,8,3,0,0,1,1,0,1,0 1,5,1,2,1,0,3,0,1,1,1,0,1,0 0,0,6,2,0,1,2,0,1,1,1,1,1,0 2,0,3,2,0,7,2,0,1,1,1,2,1,0 0,0,3,2,2,7,3,2,1,1,1,0,1,0 0,0,1,2,2,8,3,0,1,1,1,0,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,1,2,0,8,4,0,0,1,1,0,1,1 2,1,0,3,0,5,2,0,1,1,1,2,1,1 1,0,10,3,1,5,3,0,1,1,1,1,1,0 0,0,1,2,0,1,2,0,1,1,1,1,1,0 1,2,2,1,0,4,2,0,1,1,1,0,1,0 0,0,1,2,2,5,3,0,1,1,1,0,1,0 0,2,5,2,1,2,5,0,1,1,1,0,1,0 0,0,1,2,2,8,1,0,0,1,1,0,1,0 1,0,0,3,0,3,2,0,1,1,1,0,1,1 1,0,3,2,1,5,5,0,0,1,1,0,1,0 0,0,3,2,2,8,1,4,0,1,1,2,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,1 0,0,1,2,3,8,5,4,0,1,1,2,1,0 0,0,3,2,2,3,1,0,1,1,1,0,1,0 1,0,8,0,4,2,5,0,0,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 2,2,10,3,1,4,5,0,0,1,1,2,1,0 0,1,3,2,0,9,2,0,1,1,1,0,1,0 1,0,3,2,2,2,3,4,1,1,1,1,1,0 0,0,2,1,2,7,1,0,1,1,1,2,1,0 1,0,3,2,4,11,1,4,0,1,1,2,1,0 0,0,3,2,2,2,1,0,0,1,1,2,1,0 1,4,10,3,1,5,5,0,0,1,1,1,1,0 0,0,0,3,2,10,1,0,1,1,1,0,1,0 1,0,10,3,1,5,3,0,0,1,1,0,1,0 0,0,12,1,2,2,3,0,1,1,1,2,1,0 1,0,3,2,0,8,2,0,1,1,1,0,1,1 0,0,1,2,2,6,1,0,1,1,1,0,1,0 1,0,1,2,0,4,2,0,1,1,1,1,1,1 1,0,1,2,1,7,3,0,0,1,1,0,1,0 1,0,0,3,2,4,3,0,1,1,1,0,1,0 1,0,12,1,0,7,2,0,1,1,1,0,1,0 0,0,1,2,1,2,1,0,1,1,1,2,1,0 0,0,1,2,2,8,1,4,1,1,1,2,1,0 2,1,0,3,0,4,2,0,1,1,1,2,1,1 1,0,1,2,3,7,5,4,1,1,1,1,1,0 0,0,6,2,1,3,3,0,1,1,1,1,1,0 1,3,0,3,0,4,2,1,1,1,1,0,1,1 0,0,3,2,1,1,5,0,1,1,1,1,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,1 0,0,3,2,0,1,2,0,1,1,1,1,1,0 1,0,1,2,0,5,0,0,0,1,1,0,1,0 2,0,3,2,2,1,3,0,1,1,1,0,1,0 2,5,13,3,0,5,2,0,1,1,1,0,1,1 1,0,3,2,1,7,3,0,1,1,1,0,1,0 1,2,5,2,0,4,2,0,1,1,1,1,1,1 1,0,0,3,0,4,2,0,1,1,1,1,1,1 3,1,1,2,0,3,2,0,1,1,1,2,1,0 1,5,0,3,0,8,2,0,1,1,1,0,1,1 0,1,2,1,2,8,1,0,0,1,1,2,1,0 0,0,9,1,1,7,1,0,1,1,1,0,1,0 0,0,9,1,2,8,1,0,0,1,1,2,1,0 1,0,7,1,0,2,0,1,0,1,1,0,1,0 0,0,3,2,1,8,1,0,0,1,1,0,1,0 0,0,1,2,2,2,1,0,1,1,1,0,1,0 2,5,10,3,0,4,2,0,1,1,1,0,1,1 0,1,0,3,2,5,3,1,0,1,1,2,1,0 1,0,15,0,2,3,5,4,0,1,1,0,1,0 2,0,3,2,3,3,5,4,0,1,1,2,1,0 0,0,3,2,2,1,1,0,1,1,1,0,1,0 0,2,3,2,0,4,2,0,1,1,1,1,1,0 2,0,1,2,0,4,2,0,1,1,1,0,1,1 0,0,12,1,3,2,3,4,1,1,1,0,1,0 0,0,1,2,0,10,0,0,0,1,1,1,1,0 2,1,3,2,0,1,2,0,1,1,1,2,1,0 0,0,1,2,1,6,3,2,1,1,1,0,1,0 0,4,0,3,2,5,1,0,0,1,1,0,1,0 1,0,1,2,0,10,2,0,1,1,1,1,1,0 0,1,9,1,0,1,2,0,1,1,1,1,1,1 1,0,3,2,0,1,2,0,1,1,1,1,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,0 1,0,3,2,0,10,2,0,1,1,1,0,1,0 1,1,0,3,4,4,5,0,1,1,1,1,1,0 1,0,11,0,2,7,5,1,0,1,1,0,1,0 1,0,1,2,0,8,0,4,0,1,1,0,1,0 2,0,1,2,2,2,3,0,0,1,1,0,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 1,0,12,1,3,3,3,0,1,1,1,0,1,0 1,5,1,2,1,2,3,0,0,1,1,0,1,0 2,3,3,2,0,0,2,0,1,1,1,0,1,0 0,0,1,2,2,4,3,0,1,1,1,0,1,1 2,0,6,2,0,4,2,0,1,1,1,0,1,0 1,0,3,2,1,4,3,0,0,1,1,0,1,0 1,0,5,2,3,3,3,4,0,1,1,0,1,0 1,0,14,0,3,7,5,0,0,1,1,0,1,0 2,1,10,3,1,5,3,0,1,1,1,2,1,0 2,0,3,2,4,2,4,0,1,1,1,2,1,0 0,0,1,2,0,2,2,0,1,1,1,1,1,0 0,0,10,3,2,8,3,1,1,1,1,1,1,0 2,1,1,2,0,3,2,0,1,1,1,1,1,0 1,0,8,0,0,7,2,4,1,1,1,0,1,0 0,0,3,2,0,0,2,0,1,1,1,0,1,0 2,0,10,3,0,5,2,0,1,1,1,0,1,1 0,0,1,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,1,4,1,0,0,1,1,0,1,0 2,1,3,2,0,9,2,0,1,1,1,0,1,0 0,0,2,1,0,2,2,0,1,1,1,2,1,0 1,1,9,1,4,3,5,1,0,1,1,0,1,0 0,0,1,2,3,6,1,4,1,1,1,2,1,0 1,3,0,3,2,8,3,4,1,1,1,1,1,0 0,0,1,2,2,10,3,0,1,1,1,0,1,0 0,1,1,2,2,2,3,0,0,1,1,2,1,0 1,0,1,2,0,10,2,0,1,1,1,2,1,1 2,0,3,2,4,2,4,4,0,1,1,0,1,0 1,0,0,3,0,1,2,0,1,1,1,0,1,1 0,4,3,2,0,2,2,0,1,1,1,0,1,0 0,0,3,2,1,8,4,0,0,1,1,0,1,0 0,0,1,2,2,6,1,0,1,1,1,2,1,0 2,0,0,3,0,3,2,0,1,1,1,1,1,1 0,0,3,2,2,1,1,0,1,1,1,1,1,0 0,0,0,3,2,5,5,0,0,1,1,0,1,0 1,0,3,2,1,3,3,0,0,1,1,0,1,0 0,0,3,2,0,10,2,0,1,1,1,1,1,0 0,0,1,2,2,1,3,4,1,1,1,0,1,0 0,0,1,2,2,1,3,0,1,1,1,0,1,0 0,0,1,2,0,12,2,4,1,1,1,1,1,0 0,0,3,2,3,3,1,0,1,1,1,0,1,0 1,3,3,2,0,4,2,0,1,1,1,0,1,1 0,0,1,2,5,1,4,0,1,1,1,0,1,0 2,0,0,3,0,4,2,0,1,1,1,1,1,0 1,0,3,2,1,1,4,0,1,1,1,0,1,0 2,0,3,2,0,3,2,0,1,1,1,1,1,0 1,0,1,2,0,5,2,0,1,1,1,0,1,1 0,0,3,2,2,3,1,0,1,1,1,0,1,0 1,0,0,3,2,1,3,0,1,1,1,2,1,0 1,0,12,1,0,1,2,0,1,1,1,0,1,0 0,0,5,2,2,0,3,0,1,1,1,1,1,0 0,0,2,1,0,9,2,0,1,1,1,0,1,0 1,0,5,2,2,8,3,0,1,1,1,2,1,0 3,1,8,0,0,9,2,0,1,1,1,1,1,0 0,0,3,2,0,8,2,0,1,1,1,0,1,0 0,0,3,2,2,10,1,4,1,1,1,0,1,0 2,1,2,1,1,2,3,0,0,1,1,0,1,1 0,0,1,2,1,3,3,0,1,1,1,1,1,0 1,0,2,1,0,1,2,0,1,1,1,1,1,0 2,0,7,1,0,12,2,0,1,1,1,2,1,0 0,0,6,2,0,3,2,0,1,1,1,1,1,0 1,0,1,2,0,3,2,0,1,1,1,1,1,0 1,4,0,3,0,8,2,0,1,1,1,1,1,1 0,0,12,1,2,3,1,0,0,1,1,2,1,0 1,0,3,2,2,2,3,0,1,1,1,0,1,0 0,1,0,3,0,9,2,0,1,1,1,1,1,0 0,4,1,2,0,8,2,0,1,1,1,2,1,0 0,0,3,2,0,4,2,0,1,1,1,0,1,1 0,0,3,2,0,10,2,4,1,1,1,2,1,0 0,0,2,1,2,6,1,0,1,1,1,2,1,0 0,2,3,2,0,3,2,1,1,1,1,1,1,0 1,2,10,3,0,4,2,0,1,1,1,1,1,1 1,5,10,3,4,5,5,0,0,1,1,1,1,0 1,2,0,3,0,3,2,0,1,1,1,1,1,1 0,0,3,2,2,10,1,0,1,1,1,0,1,0 0,0,3,2,2,9,1,0,1,1,1,0,1,0 1,2,0,3,0,5,2,0,1,1,1,1,1,1 0,0,3,2,1,4,3,0,1,1,1,1,1,0 2,1,6,2,0,2,0,0,0,1,1,0,1,0 0,0,1,2,0,8,0,0,0,1,1,0,1,0 0,0,3,2,2,12,4,0,1,1,1,0,1,0 0,0,3,2,0,6,2,0,1,1,1,0,1,0 1,3,1,2,1,8,4,2,0,1,1,2,1,0 2,1,1,2,0,4,2,0,1,1,1,2,1,0 1,5,13,3,2,5,3,0,1,1,1,1,1,1 1,2,0,3,0,3,2,0,1,1,1,0,1,1 0,3,3,2,0,12,2,0,1,1,1,1,1,0 1,0,0,3,0,0,2,0,1,1,1,0,1,1 0,0,1,2,2,2,3,0,0,1,1,2,1,0 0,0,5,2,2,6,3,0,1,1,1,1,1,0 1,1,3,2,0,1,2,0,1,1,1,1,1,1 0,0,1,2,0,0,2,0,1,1,1,0,1,1 0,0,2,1,2,3,3,0,1,1,1,1,1,0 1,0,0,3,2,4,3,0,0,1,1,1,1,0 0,0,10,3,0,5,2,0,1,1,1,1,1,1 1,1,3,2,3,4,3,0,1,1,1,1,1,0 0,0,3,2,2,8,1,0,0,1,1,2,1,0 2,0,4,3,0,5,2,0,1,1,1,1,1,1 0,0,3,2,0,8,2,0,1,1,1,0,1,0 0,1,3,2,0,1,2,4,1,1,1,0,1,0 1,0,10,3,1,4,3,0,1,1,1,0,1,0 1,0,0,3,2,3,1,0,1,1,1,0,1,0 0,0,3,2,2,1,3,0,1,1,1,0,1,0 0,0,1,2,2,1,5,0,1,1,1,1,1,0 1,4,10,3,1,5,5,1,0,1,1,1,1,0 2,2,0,3,0,3,2,0,1,1,1,0,1,1 0,1,1,2,2,3,1,0,1,1,1,2,1,0 2,0,1,2,1,5,3,0,0,1,1,0,1,0 1,1,10,3,2,5,3,0,1,1,1,1,1,0 1,0,13,3,0,5,2,0,1,1,1,2,1,0 2,4,7,1,0,2,2,0,1,1,1,0,1,0 0,0,0,3,0,0,2,0,1,1,1,0,1,0 1,0,0,3,5,4,3,0,0,1,1,1,1,1 2,1,3,2,0,10,2,0,1,1,1,1,1,0 0,0,2,1,2,5,1,0,1,1,1,0,1,1 1,0,9,1,0,8,2,0,1,1,1,0,1,0 0,0,6,2,0,1,2,0,1,1,1,0,1,1 0,0,10,3,1,4,3,0,0,1,1,0,1,0 2,0,3,2,0,6,0,4,0,1,1,0,1,0 1,0,10,3,0,5,0,0,0,1,1,2,1,1 1,4,10,3,0,5,2,0,1,1,1,1,1,1 1,0,2,1,0,1,2,0,1,1,1,0,1,0 1,0,3,2,2,8,3,0,1,1,1,0,1,0 0,0,0,3,2,5,3,1,1,1,1,0,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 1,4,0,3,0,5,2,4,1,1,1,0,1,0 0,0,3,2,2,8,1,4,0,1,1,1,1,0 1,3,3,2,1,2,5,0,1,1,1,0,1,0 0,0,9,1,0,7,2,0,1,1,1,1,1,0 0,0,3,2,2,7,1,0,1,1,1,1,1,0 3,0,0,3,0,4,2,0,1,1,1,0,1,1 1,4,5,2,3,8,5,4,0,1,1,0,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,3,2,0,3,2,0,1,1,1,1,1,1 3,0,3,2,4,8,3,0,0,1,1,2,1,0 1,0,3,2,2,2,4,0,0,1,1,2,1,0 0,0,3,2,0,9,2,2,1,1,1,1,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 1,0,10,3,0,5,0,0,0,1,1,0,1,1 1,0,3,2,0,1,2,4,1,1,1,0,1,0 1,0,1,2,0,6,2,0,1,1,1,0,1,1 0,0,3,2,0,3,2,0,1,1,1,1,1,0 1,1,3,2,0,10,2,4,1,1,1,0,1,1 1,0,10,3,1,5,3,0,0,1,1,1,1,0 1,0,3,2,0,8,2,0,1,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,1,2,0,3,2,0,1,1,1,1,1,1 1,2,0,3,0,4,2,0,1,1,1,0,1,1 0,0,1,2,2,3,1,0,1,1,1,2,1,0 1,0,13,3,5,5,3,1,1,1,1,1,1,1 0,0,2,1,2,6,4,2,1,1,1,0,1,0 0,0,6,2,2,8,1,0,1,1,1,0,1,0 2,1,3,2,4,1,3,0,1,1,1,2,1,0 0,3,1,2,1,4,3,4,1,1,1,0,1,0 1,2,0,3,5,3,5,0,0,1,1,1,1,0 1,1,6,2,2,8,3,0,0,1,1,1,1,0 1,0,4,3,0,5,0,1,0,1,1,0,1,0 0,0,2,1,0,2,0,0,0,1,1,2,1,0 1,0,3,2,1,9,3,0,1,1,1,0,1,0 2,1,3,2,0,1,2,0,1,1,1,0,1,0 2,1,10,3,0,5,2,0,1,1,1,1,1,1 0,0,3,2,2,6,3,0,1,1,1,2,1,0 1,0,1,2,0,3,2,0,1,1,1,1,1,1 0,4,3,2,0,4,2,0,1,1,1,0,1,0 2,0,8,0,0,10,2,0,1,1,1,0,1,1 0,0,0,3,2,1,3,0,1,1,1,0,1,0 1,0,12,1,0,1,2,0,1,1,1,1,1,1 1,0,1,2,0,3,2,0,1,1,1,0,1,0 1,0,0,3,0,5,2,0,1,1,1,0,1,1 1,0,0,3,0,3,2,0,1,1,1,1,1,0 1,0,1,2,0,7,2,0,1,1,1,0,1,0 0,0,0,3,0,5,2,0,1,1,1,0,1,0 2,2,0,3,4,9,5,0,0,1,1,2,1,0 1,0,1,2,0,1,2,4,1,1,1,0,1,0 1,4,3,2,0,12,2,0,1,1,1,0,1,0 0,0,1,2,2,8,3,0,0,1,1,0,1,0 0,0,3,2,2,2,4,0,1,1,1,2,1,0 0,0,2,1,2,3,1,0,0,1,1,2,1,0 0,0,1,2,2,3,1,4,0,1,1,2,1,0 0,0,1,2,5,3,5,2,1,1,1,0,1,0 1,2,5,2,0,10,2,0,1,1,1,1,1,1 2,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,3,2,2,3,1,1,0,1,1,2,1,0 2,5,10,3,2,5,5,0,0,1,1,2,1,0 1,0,8,0,2,2,3,0,1,1,1,2,1,0 1,0,8,0,0,7,2,2,1,1,1,0,1,0 0,0,3,2,2,8,1,0,0,1,1,0,1,0 1,0,1,2,1,4,3,0,0,1,1,0,1,0 0,0,3,2,0,3,2,0,1,1,1,1,1,1 0,0,1,2,2,7,1,0,1,1,1,1,1,0 0,0,3,2,0,3,0,0,0,1,1,1,1,0 0,0,1,2,2,9,1,0,1,1,1,2,1,0 0,0,6,2,2,8,3,0,0,1,1,0,1,0 1,1,3,2,0,9,2,0,1,1,1,1,1,0 0,5,0,3,2,3,3,0,0,1,1,0,1,0 0,0,0,3,0,5,2,0,1,1,1,1,1,1 1,2,13,3,2,5,3,0,0,1,1,0,1,0 2,0,3,2,4,0,3,4,0,1,1,1,1,0 0,0,1,2,0,3,2,0,1,1,1,0,1,0 0,0,1,2,2,8,3,0,0,1,1,1,1,0 2,0,3,2,4,0,5,0,0,1,1,2,1,0 1,4,10,3,0,4,2,0,1,1,1,1,1,1 2,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,0,3,0,3,2,0,1,1,1,2,1,1 2,0,2,1,0,10,2,0,1,1,1,2,1,0 1,0,12,1,0,9,2,0,1,1,1,1,1,0 0,0,3,2,2,6,1,0,1,1,1,0,1,0 2,1,3,2,4,2,3,4,0,1,1,2,1,0 3,5,1,2,4,8,3,0,0,1,1,2,1,0 0,0,0,3,0,8,0,0,0,1,1,0,1,0 0,0,6,2,0,10,2,0,1,1,1,0,1,0 0,0,3,2,2,3,1,4,0,1,1,2,1,0 1,3,1,2,3,8,3,4,0,1,1,0,1,0 1,4,10,3,0,5,2,0,1,1,1,1,1,1 0,0,3,2,2,1,1,0,1,1,1,0,1,0 1,5,1,2,1,1,5,0,1,1,1,0,1,0 1,0,0,3,1,4,5,0,0,1,1,1,1,0 2,0,3,2,0,5,2,0,1,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,0,3,1,8,3,0,0,1,1,2,1,0 0,2,1,2,0,4,2,0,1,1,1,1,1,1 0,1,3,2,1,0,3,0,1,1,1,1,1,0 1,0,1,2,0,3,2,0,1,1,1,1,1,1 0,0,1,2,2,8,1,4,0,1,1,0,1,0 3,0,8,0,4,2,5,4,1,1,1,2,1,0 1,0,3,2,0,3,0,4,0,1,1,0,1,0 2,0,3,2,0,4,2,0,1,1,1,0,1,1 0,0,1,2,2,7,1,0,0,1,1,0,1,0 1,0,0,3,0,7,2,0,1,1,1,0,1,0 1,0,0,3,0,4,0,0,0,1,1,0,1,1 1,0,3,2,1,4,5,0,0,1,1,0,1,0 0,0,3,2,0,3,2,0,1,1,1,2,1,0 0,0,3,2,2,7,3,0,1,1,1,0,1,0 0,3,4,3,2,5,3,1,0,1,1,2,1,0 1,0,6,2,1,8,3,0,0,1,1,2,1,0 2,0,3,2,0,8,2,0,1,1,1,0,1,0 1,3,6,2,1,0,3,0,0,1,1,0,1,0 1,1,1,2,0,7,2,0,1,1,1,0,1,0 1,0,3,2,0,3,2,0,1,1,1,1,1,0 1,4,0,3,0,5,2,0,1,1,1,1,1,1 1,0,6,2,0,10,2,0,1,1,1,0,1,0 0,0,3,2,0,10,2,0,1,1,1,0,1,0 0,0,1,2,2,3,3,0,1,1,1,2,1,0 2,2,10,3,0,3,2,0,1,1,1,1,1,1 0,0,1,2,2,3,1,0,0,1,1,2,1,0 2,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,0,3,0,1,2,0,1,1,1,1,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,3,2,0,3,2,0,1,1,1,0,1,0 0,0,3,2,2,2,3,0,1,1,1,1,1,0 0,1,0,3,0,9,2,0,1,1,1,1,1,0 1,0,14,0,3,6,5,0,0,1,1,0,1,0 0,0,1,2,2,8,3,0,1,1,1,0,1,0 0,0,1,2,2,8,1,4,0,1,1,0,1,0 1,0,0,3,0,5,2,0,1,1,1,0,1,1 2,1,3,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,1,2,1,0,0,1,1,2,1,0 0,0,0,3,2,3,3,0,0,1,1,1,1,1 0,0,12,1,2,2,1,0,1,1,1,0,1,0 1,0,3,2,0,6,2,1,1,1,1,0,1,0 0,0,2,1,0,10,2,0,1,1,1,0,1,1 0,0,3,2,0,3,0,0,0,1,1,0,1,0 0,0,0,3,2,2,1,0,0,1,1,2,1,0 0,0,3,2,5,10,3,0,1,1,1,1,1,0 1,0,1,2,0,8,0,0,0,1,1,2,1,0 1,0,1,2,1,4,3,0,0,1,1,1,1,0 0,0,2,1,2,1,3,0,1,1,1,0,1,0 0,0,0,3,0,2,2,0,1,1,1,0,1,0 1,0,10,3,0,5,2,1,1,1,1,0,1,0 2,0,1,2,0,8,2,0,1,1,1,2,1,0 2,0,3,2,1,2,5,4,0,1,1,2,1,0 1,4,0,3,1,5,5,0,0,1,1,1,1,0 0,0,1,2,2,3,1,4,1,1,1,0,1,0 1,1,0,3,1,4,3,0,1,1,1,1,1,0 1,0,3,2,2,2,3,0,0,1,1,0,1,0 0,0,2,1,2,3,1,0,0,1,1,2,1,0 1,4,10,3,2,5,3,0,1,1,1,2,1,1 0,0,1,2,2,8,3,0,0,1,1,0,1,0 0,0,1,2,2,3,3,0,1,1,1,1,1,0 1,0,1,2,0,8,2,0,1,1,1,2,1,1 1,0,10,3,0,5,2,0,1,1,1,1,1,0 1,1,0,3,0,5,2,0,1,1,1,0,1,1 0,0,1,2,2,9,3,0,1,1,1,0,1,0 2,1,1,2,2,2,5,0,0,1,1,0,1,0 1,0,0,3,1,4,5,4,0,1,1,1,1,1 1,2,0,3,0,0,2,3,1,1,1,0,1,1 0,0,1,2,2,3,1,0,0,1,1,2,1,0 0,0,1,2,2,9,3,0,1,1,1,1,1,0 0,0,3,2,2,7,3,0,1,1,1,1,1,0 2,0,3,2,2,4,3,0,1,1,1,1,1,0 1,0,9,1,0,1,2,0,1,1,1,1,1,0 0,0,5,2,2,8,1,1,0,1,1,2,1,0 1,1,6,2,0,5,2,0,1,1,1,1,1,1 0,0,1,2,2,8,3,0,0,1,1,0,1,0 3,0,3,2,4,3,5,0,0,1,1,2,1,0 0,0,1,2,1,1,3,0,1,1,1,0,1,0 0,0,1,2,1,4,3,0,0,1,1,0,1,0 2,0,3,2,1,1,3,0,0,1,1,0,1,0 0,0,0,3,2,8,1,0,0,1,1,0,1,0 0,0,14,0,2,9,3,0,1,1,1,2,1,0 1,0,1,2,0,1,2,0,1,1,1,1,1,1 0,0,3,2,0,1,2,0,1,1,1,0,1,0 1,1,5,2,0,5,0,0,0,1,1,2,1,1 0,0,1,2,2,3,1,0,0,1,1,2,1,0 2,0,3,2,0,1,2,0,1,1,1,0,1,0 0,4,0,3,2,5,1,0,0,1,1,2,1,0 1,0,1,2,3,1,5,0,1,1,1,1,1,0 0,0,1,2,2,5,3,0,1,1,1,0,1,0 2,0,0,3,0,4,2,0,1,1,1,0,1,1 0,1,11,0,0,4,2,0,1,1,1,1,1,0 1,5,13,3,0,4,2,1,1,1,1,0,1,1 0,0,2,1,2,2,1,0,1,1,1,2,1,0 0,0,0,3,2,5,3,0,1,1,1,0,1,0 0,4,3,2,0,1,2,0,1,1,1,1,1,1 1,1,0,3,1,4,3,0,0,1,1,2,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,0,3,5,8,1,4,0,1,1,2,1,0 0,0,1,2,2,0,3,0,0,1,1,0,1,0 0,4,1,2,2,1,3,0,1,1,1,0,1,0 0,0,12,1,2,1,3,0,1,1,1,1,1,0 1,0,3,2,0,6,2,0,1,1,1,0,1,0 1,0,3,2,0,3,2,0,1,1,1,1,1,0 2,4,14,0,2,7,3,0,1,1,1,2,1,0 1,2,0,3,0,4,2,0,1,1,1,1,1,0 0,0,7,1,0,4,0,0,0,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,1,1,0 1,5,1,2,5,8,3,1,1,1,1,1,1,0 0,5,0,3,2,5,1,0,0,1,1,2,1,0 1,0,1,2,2,2,3,0,0,1,1,2,1,0 1,0,1,2,2,4,3,0,1,1,1,1,1,1 3,0,8,0,4,4,3,0,0,1,1,2,1,0 1,1,3,2,2,1,1,0,1,1,1,2,1,0 0,1,3,2,0,1,2,0,1,1,1,0,1,1 1,0,1,2,0,6,2,0,1,1,1,1,1,0 1,0,1,2,1,7,3,0,0,1,1,0,1,0 1,0,3,2,3,1,3,0,1,1,1,0,1,0 1,0,10,3,0,3,2,0,1,1,1,1,1,1 0,0,3,2,2,7,1,0,1,1,1,0,1,0 0,0,0,3,2,5,3,0,0,1,1,0,1,0 0,0,1,2,1,2,3,0,0,1,1,2,1,0 2,0,3,2,0,10,2,0,1,1,1,2,1,0 0,4,0,3,2,0,3,0,1,1,1,2,1,0 1,1,7,1,1,2,3,2,0,1,1,2,1,0 1,0,0,3,0,10,2,0,1,1,1,1,1,0 1,0,1,2,1,2,5,0,0,1,1,2,1,0 1,0,5,2,4,8,5,0,0,1,1,0,1,0 1,0,1,2,1,5,5,0,0,1,1,0,1,0 1,0,10,3,0,3,2,0,1,1,1,1,1,1 0,0,6,2,0,1,2,0,1,1,1,0,1,1 0,4,3,2,0,2,2,0,1,1,1,0,1,0 0,5,0,3,2,5,3,0,1,1,1,1,1,1 0,0,0,3,2,4,3,0,1,1,1,1,1,0 0,0,0,3,2,3,3,0,1,1,1,1,1,0 1,5,3,2,0,5,2,4,1,1,1,1,1,1 1,0,1,2,0,1,2,0,1,1,1,0,1,0 1,0,1,2,2,1,3,0,1,1,1,1,1,0 1,0,6,2,3,8,5,4,0,1,1,0,1,0 2,0,2,1,0,10,2,0,1,1,1,1,1,0 0,0,1,2,2,0,1,0,0,1,1,0,1,0 1,0,3,2,0,2,2,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,0 0,4,6,2,2,0,3,0,0,1,1,1,1,1 1,0,5,2,0,3,0,1,0,1,1,0,1,0 0,0,1,2,2,1,1,0,0,1,1,0,1,0 2,3,3,2,2,8,3,0,1,1,1,0,1,1 0,0,10,3,2,3,5,4,0,1,1,2,1,0 0,0,6,2,0,1,2,0,1,1,1,0,1,0 0,1,0,3,2,5,3,0,0,1,1,0,1,0 1,1,0,3,1,3,5,0,0,1,1,0,1,0 1,0,3,2,2,2,5,4,1,1,1,2,1,0 0,0,2,1,0,7,2,0,1,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,1,1,1 2,4,0,3,1,5,3,0,0,1,1,2,1,0 1,0,3,2,1,2,5,0,0,1,1,2,1,0 2,0,3,2,5,1,3,0,1,1,1,1,1,0 1,0,5,2,3,4,5,0,0,1,1,0,1,0 1,0,3,2,1,10,3,0,1,1,1,0,1,0 1,4,1,2,0,12,2,0,1,1,1,0,1,1 0,0,1,2,2,3,1,0,0,1,1,0,1,0 2,2,0,3,0,4,2,0,1,1,1,0,1,1 1,0,3,2,0,7,2,1,1,1,1,0,1,0 2,0,3,2,4,10,3,0,1,1,1,2,1,0 1,1,3,2,0,9,2,0,1,1,1,1,1,0 0,0,7,1,0,6,2,0,1,1,1,0,1,0 0,0,3,2,0,4,2,0,1,1,1,1,1,1 0,0,3,2,0,10,2,0,1,1,1,1,1,1 1,0,3,2,2,1,4,0,1,1,1,0,1,0 1,5,10,3,1,5,3,0,1,1,1,1,1,1 1,5,3,2,2,2,5,0,0,1,1,1,1,0 1,0,6,2,0,2,2,0,1,1,1,1,1,0 0,0,5,2,0,9,0,0,0,1,1,1,1,0 1,4,1,2,0,12,2,0,1,1,1,0,1,1 1,0,0,3,0,0,0,4,0,1,1,0,1,1 0,0,0,3,2,8,3,0,0,1,1,0,1,0 1,2,4,3,0,5,2,0,1,1,1,1,1,1 2,1,2,1,0,9,2,0,1,1,1,1,1,0 1,4,3,2,1,2,1,0,0,1,1,2,1,0 0,0,8,0,3,7,5,4,0,1,1,0,1,0 0,0,2,1,2,6,1,0,1,1,1,2,1,0 1,0,10,3,3,3,5,0,0,1,1,1,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 1,2,12,1,0,4,2,0,1,1,1,1,1,0 0,0,1,2,2,3,1,0,0,1,1,0,1,0 1,0,13,3,0,5,2,0,1,1,1,0,1,1 0,0,1,2,2,8,3,0,0,1,1,2,1,0 1,4,0,3,1,12,3,4,0,1,1,1,1,1 1,0,3,2,1,4,3,0,0,1,1,0,1,1 1,3,3,2,0,0,2,0,1,1,1,0,1,0 0,0,3,2,0,2,2,0,1,1,1,0,1,0 1,0,3,2,1,1,3,0,1,1,1,1,1,0 0,0,10,3,0,4,0,0,0,1,1,0,1,1 1,1,3,2,0,9,2,0,1,1,1,1,1,0 1,0,1,2,1,3,5,0,1,1,1,1,1,0 1,0,0,3,0,9,2,0,1,1,1,0,1,0 0,0,6,2,2,3,3,0,1,1,1,1,1,1 0,0,3,2,0,6,2,0,1,1,1,2,1,0 1,0,0,3,0,6,2,0,1,1,1,2,1,0 1,0,1,2,2,8,3,0,1,1,1,2,1,0 0,4,0,3,0,5,2,0,1,1,1,0,1,1 0,0,0,3,0,5,0,0,0,1,1,1,1,1 0,0,0,3,2,3,1,0,0,1,1,2,1,0 1,4,1,2,0,4,0,0,0,1,1,2,1,1 0,0,3,2,2,8,4,4,1,1,1,0,1,0 1,0,1,2,2,1,3,0,1,1,1,0,1,0 1,4,3,2,1,12,5,4,0,1,1,0,1,1 1,0,1,2,0,10,2,0,1,1,1,1,1,0 1,1,1,2,0,3,2,0,1,1,1,1,1,1 2,1,2,1,0,9,2,0,1,1,1,0,1,0 3,1,3,2,0,9,2,0,1,1,1,1,1,0 0,0,1,2,2,3,4,4,0,1,1,0,1,0 3,0,3,2,1,8,3,0,0,1,1,2,1,0 1,0,3,2,1,4,3,0,1,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,1 2,0,3,2,1,2,3,4,1,1,1,0,1,0 1,0,3,2,2,8,1,0,1,1,1,0,1,0 1,0,3,2,1,3,3,0,1,1,1,0,1,0 1,1,0,3,2,2,1,0,0,1,1,2,1,0 0,0,3,2,2,7,1,0,0,1,1,0,1,0 1,0,6,2,0,3,2,0,1,1,1,0,1,1 0,0,0,3,2,8,1,0,0,1,1,0,1,0 0,1,1,2,0,4,2,3,1,1,1,1,1,1 0,0,1,2,2,8,3,0,0,1,1,0,1,0 1,5,7,1,0,5,2,0,1,1,1,0,1,0 0,0,6,2,0,1,2,0,1,1,1,0,1,0 0,0,0,3,2,5,3,4,0,1,1,0,1,0 1,0,11,0,1,7,3,0,1,1,1,0,1,0 2,1,0,3,0,9,2,0,1,1,1,2,1,0 2,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,2,10,1,0,1,1,1,0,1,0 1,1,12,1,3,1,3,4,1,1,1,0,1,0 0,0,1,2,2,10,1,0,1,1,1,2,1,0 1,1,1,2,0,9,2,0,1,1,1,1,1,0 0,0,0,3,2,1,3,4,1,1,1,0,1,0 0,0,2,1,5,1,1,0,1,1,1,0,1,0 1,4,10,3,0,4,2,0,1,1,1,1,1,0 0,0,0,3,2,5,4,0,0,1,1,2,1,0 0,0,4,3,0,5,2,1,1,1,1,0,1,0 2,0,3,2,0,12,2,0,1,1,1,0,1,1 0,0,12,1,0,2,2,0,1,1,1,2,1,0 0,1,2,1,2,5,3,0,0,1,1,2,1,0 1,0,1,2,0,10,2,0,1,1,1,0,1,1 0,0,1,2,0,7,2,0,1,1,1,1,1,0 1,0,3,2,0,4,2,0,1,1,1,0,1,1 0,1,3,2,2,6,3,0,1,1,1,2,1,0 0,0,5,2,2,0,1,0,0,1,1,2,1,0 2,0,3,2,0,8,2,0,1,1,1,2,1,0 0,0,3,2,2,6,1,0,1,1,1,2,1,0 0,0,1,2,1,8,4,0,0,1,1,0,1,0 0,0,3,2,0,6,2,0,1,1,1,0,1,0 2,0,9,1,0,1,2,0,1,1,1,0,1,0 3,1,2,1,4,3,3,0,1,1,1,0,1,0 1,0,0,3,1,1,3,0,1,1,1,0,1,0 1,0,3,2,0,2,2,4,1,1,1,0,1,0 2,5,3,2,0,4,2,0,1,1,1,1,1,1 1,0,3,2,1,1,3,0,1,1,1,0,1,0 1,4,0,3,0,12,2,0,1,1,1,1,1,1 0,0,12,1,0,1,2,0,1,1,1,0,1,0 0,0,3,2,2,4,1,0,0,1,1,0,1,0 1,0,1,2,1,7,3,0,1,1,1,0,1,0 1,0,0,3,1,4,3,0,0,1,1,1,1,1 0,1,3,2,0,1,2,0,1,1,1,0,1,0 1,0,3,2,0,12,2,0,1,1,1,0,1,1 0,0,1,2,2,6,3,0,1,1,1,0,1,0 0,0,3,2,3,8,3,3,1,1,1,2,1,0 2,3,3,2,0,8,2,0,1,1,1,1,1,1 1,0,0,3,0,3,2,0,1,1,1,1,1,1 1,0,3,2,1,8,5,0,0,1,1,0,1,0 1,0,5,2,0,4,2,0,1,1,1,1,1,1 1,0,0,3,1,3,3,0,0,1,1,1,1,1 1,0,3,2,0,10,2,0,1,1,1,0,1,0 1,1,3,2,0,1,2,0,1,1,1,0,1,1 0,1,3,2,2,2,3,0,1,1,1,2,1,0 3,1,1,2,0,0,2,0,1,1,1,2,1,0 1,0,3,2,1,7,1,4,1,1,1,0,1,0 1,0,1,2,0,2,2,0,1,1,1,2,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,1 1,0,3,2,0,6,2,0,1,1,1,0,1,0 0,0,8,0,0,1,2,0,1,1,1,0,1,1 1,4,3,2,0,4,2,0,1,1,1,1,1,0 0,0,0,3,0,5,0,0,0,1,1,2,1,1 0,5,6,2,1,4,3,0,0,1,1,1,1,0 0,0,1,2,0,4,2,0,1,1,1,1,1,0 1,5,10,3,1,5,3,0,0,1,1,0,1,0 0,0,9,1,2,2,1,0,0,1,1,2,1,0 0,0,3,2,2,8,5,0,0,1,1,0,1,0 3,0,8,0,0,2,2,0,1,1,1,1,1,0 1,1,13,3,2,5,3,0,1,1,1,2,1,0 1,0,3,2,1,4,5,0,0,1,1,1,1,0 1,1,0,3,0,3,2,0,1,1,1,1,1,1 2,3,3,2,5,6,3,0,1,1,1,0,1,0 2,0,3,2,2,8,3,4,0,1,1,2,1,0 1,3,5,2,0,5,2,0,1,1,1,0,1,1 1,0,3,2,5,10,3,0,1,1,1,1,1,0 1,0,6,2,3,8,1,0,0,1,1,0,1,0 0,0,1,2,2,2,1,0,1,1,1,2,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,0 2,0,3,2,1,6,5,0,1,1,1,2,1,0 0,1,6,2,3,3,3,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 0,0,0,3,2,1,3,0,1,1,1,0,1,0 1,0,0,3,0,6,2,0,1,1,1,1,1,0 0,0,0,3,0,3,2,0,1,1,1,1,1,0 0,0,3,2,0,1,2,0,1,1,1,2,1,1 0,0,3,2,2,7,1,0,1,1,1,2,1,0 2,0,1,2,0,1,2,0,1,1,1,2,1,0 0,0,3,2,0,1,2,0,1,1,1,2,1,0 0,0,0,3,2,1,3,0,1,1,1,2,1,0 0,0,5,2,0,4,2,0,1,1,1,1,1,1 1,0,0,3,0,4,2,4,1,1,1,0,1,1 2,1,3,2,0,1,2,0,1,1,1,2,1,0 1,4,1,2,0,12,2,0,1,1,1,0,1,0 2,2,3,2,0,1,0,0,0,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,0 0,4,1,2,1,12,3,0,1,1,1,0,1,0 0,0,1,2,0,0,2,0,1,1,1,0,1,1 0,0,3,2,2,9,3,0,1,1,1,2,1,0 0,0,9,1,0,2,2,4,1,1,1,0,1,0 1,2,5,2,0,9,2,0,1,1,1,1,1,1 0,0,1,2,2,2,3,0,1,1,1,0,1,0 1,4,0,3,0,4,2,4,1,1,1,1,1,1 0,0,3,2,0,1,2,0,1,1,1,1,1,1 0,0,7,1,2,2,4,0,1,1,1,0,1,0 1,3,3,2,0,0,2,0,1,1,1,0,1,1 0,0,0,3,2,4,1,0,1,1,1,1,1,0 2,1,0,3,0,1,2,0,1,1,1,0,1,0 0,3,1,2,1,8,5,0,1,1,1,0,1,0 1,0,12,1,0,1,2,0,1,1,1,0,1,0 1,2,1,2,0,9,2,0,1,1,1,1,1,0 0,0,1,2,1,8,5,0,0,1,1,0,1,0 0,0,2,1,2,2,1,3,1,1,1,0,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,1 1,5,10,3,0,4,2,0,1,1,1,1,1,1 2,0,3,2,2,8,1,0,0,1,1,2,1,0 0,0,3,2,0,6,0,4,0,1,1,0,1,0 0,0,3,2,2,6,3,0,1,1,1,0,1,0 0,0,3,2,2,8,5,0,0,1,1,0,1,0 0,0,5,2,2,0,5,0,0,1,1,0,1,0 1,0,0,3,2,8,3,4,0,1,1,0,1,0 1,0,5,2,0,3,2,0,1,1,1,1,1,1 1,4,3,2,3,8,5,0,0,1,1,0,1,0 0,0,3,2,1,8,5,4,0,1,1,0,1,0 2,1,7,1,0,10,2,0,1,1,1,1,1,0 1,0,3,2,2,1,5,0,1,1,1,0,1,0 0,4,0,3,0,5,2,4,1,1,1,0,1,0 1,0,1,2,2,7,3,0,0,1,1,0,1,0 0,0,3,2,1,2,1,0,0,1,1,2,1,0 0,0,2,1,2,2,1,0,1,1,1,2,1,0 1,1,3,2,0,4,2,0,1,1,1,0,1,1 1,0,0,3,2,5,3,0,1,1,1,2,1,0 0,0,0,3,2,0,3,0,1,1,1,0,1,0 0,1,1,2,2,5,1,0,1,1,1,2,1,0 1,1,3,2,0,9,2,0,1,1,1,1,1,0 0,0,1,2,2,5,3,0,0,1,1,1,1,0 0,0,3,2,2,2,1,0,0,1,1,2,1,0 2,4,1,2,0,12,2,0,1,1,1,2,1,0 1,0,0,3,2,2,3,4,0,1,1,1,1,1 0,0,2,1,1,10,1,4,1,1,1,1,1,0 0,0,3,2,2,8,3,0,0,1,1,2,1,0 0,0,3,2,0,8,2,0,1,1,1,1,1,0 0,0,3,2,2,3,4,0,0,1,1,2,1,0 0,0,0,3,2,0,3,0,0,1,1,0,1,1 1,0,1,2,0,3,2,0,1,1,1,1,1,0 0,0,0,3,2,4,3,0,0,1,1,0,1,0 0,0,3,2,2,6,4,0,1,1,1,1,1,0 2,0,3,2,1,2,4,0,0,1,1,0,1,0 0,0,3,2,2,10,1,0,1,1,1,0,1,0 1,1,1,2,0,3,2,0,1,1,1,1,1,0 1,0,1,2,0,7,0,4,0,1,1,1,1,1 2,0,12,1,1,2,3,4,1,1,1,1,1,0 1,5,0,3,0,5,2,0,1,1,1,0,1,1 0,0,3,2,0,7,2,0,1,1,1,1,1,0 1,0,8,0,0,11,0,4,0,1,1,2,1,0 1,4,10,3,1,5,3,0,0,1,1,1,1,0 1,0,3,2,2,8,4,0,0,1,1,0,1,0 2,4,10,3,0,5,2,4,1,1,1,1,1,1 2,1,0,3,4,5,3,0,0,1,1,2,1,0 0,4,10,3,2,5,3,0,1,1,1,1,1,0 1,4,4,3,3,5,3,4,1,1,1,0,1,0 0,0,1,2,1,2,5,0,0,1,1,1,1,0 0,4,0,3,0,12,2,0,1,1,1,1,1,0 0,0,2,1,2,5,1,0,1,1,1,0,1,0 0,0,12,1,1,2,3,0,0,1,1,2,1,0 0,0,3,2,2,7,5,4,0,1,1,0,1,0 2,0,3,2,0,9,2,0,1,1,1,0,1,1 0,0,3,2,0,9,2,0,1,1,1,0,1,0 0,0,2,1,1,3,4,0,0,1,1,2,1,0 0,0,3,2,0,4,2,0,1,1,1,1,1,0 0,0,3,2,0,8,0,0,0,1,1,0,1,0 2,5,1,2,0,5,2,0,1,1,1,0,1,1 1,0,2,1,1,10,5,0,1,1,1,1,1,0 1,0,3,2,0,3,2,0,1,1,1,1,1,1 0,0,3,2,2,9,1,0,1,1,1,1,1,0 0,0,3,2,0,8,0,0,0,1,1,2,1,0 2,3,3,2,0,10,2,0,1,1,1,0,1,0 1,0,3,2,2,8,3,0,1,1,1,1,1,0 1,0,8,0,1,2,5,4,0,1,1,0,1,0 0,0,13,3,2,4,3,0,0,1,1,0,1,0 1,0,1,2,1,4,3,0,1,1,1,1,1,0 1,0,3,2,1,2,5,0,0,1,1,0,1,0 0,0,1,2,2,4,1,0,1,1,1,0,1,0 1,4,10,3,2,5,3,0,0,1,1,1,1,1 3,0,8,0,0,2,2,0,1,1,1,2,1,0 0,0,3,2,2,9,1,0,1,1,1,0,1,0 3,1,1,2,0,4,2,0,1,1,1,2,1,0 2,1,3,2,0,1,2,0,1,1,1,2,1,0 0,0,3,2,2,7,4,0,1,1,1,2,1,0 0,0,3,2,2,3,4,4,0,1,1,2,1,0 0,2,1,2,1,4,3,0,0,1,1,0,1,0 1,1,0,3,1,3,5,1,0,1,1,2,1,0 0,0,0,3,2,2,3,0,0,1,1,2,1,0 2,0,3,2,1,7,5,0,1,1,1,0,1,0 0,0,3,2,0,8,2,4,1,1,1,0,1,0 0,0,0,3,0,3,2,0,1,1,1,1,1,1 2,0,1,2,0,5,2,0,1,1,1,1,1,0 1,0,6,2,4,7,3,0,1,1,1,0,1,0 1,0,9,1,0,1,2,0,1,1,1,0,1,0 0,0,11,0,5,9,5,0,1,1,1,0,1,0 1,0,3,2,2,3,5,0,0,1,1,2,1,0 1,0,3,2,2,6,1,0,0,1,1,2,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 3,2,4,3,0,5,2,0,1,1,1,1,1,1 3,0,1,2,0,1,2,0,1,1,1,0,1,0 1,0,4,3,0,2,0,0,0,1,1,1,1,1 2,0,1,2,0,8,2,0,1,1,1,0,1,1 1,0,3,2,0,0,2,0,1,1,1,0,1,0 1,0,1,2,1,3,3,0,0,1,1,2,1,0 0,0,3,2,0,1,2,4,1,1,1,0,1,0 1,0,0,3,0,5,2,1,1,1,1,1,1,1 1,0,1,2,0,5,2,4,1,1,1,1,1,1 1,0,3,2,1,3,5,0,1,1,1,1,1,0 0,0,3,2,0,8,0,0,0,1,1,2,1,0 2,0,1,2,2,8,5,0,0,1,1,0,1,0 0,0,1,2,2,0,5,4,0,1,1,0,1,0 1,1,0,3,1,5,5,0,0,1,1,2,1,0 0,0,3,2,2,2,3,0,0,1,1,0,1,0 1,0,2,1,0,1,2,0,1,1,1,1,1,0 0,0,0,3,2,8,3,0,0,1,1,0,1,0 0,0,0,3,2,7,3,0,1,1,1,0,1,0 1,0,3,2,0,6,2,0,1,1,1,2,1,0 0,0,1,2,2,4,1,0,0,1,1,2,1,0 1,1,1,2,1,2,3,0,1,1,1,2,1,0 1,0,1,2,0,1,2,0,1,1,1,1,1,1 0,0,0,3,0,3,2,0,1,1,1,1,1,1 1,0,5,2,2,8,3,0,1,1,1,2,1,0 1,0,3,2,0,2,0,1,0,1,1,2,1,0 0,0,1,2,2,2,3,0,1,1,1,2,1,0 1,0,10,3,0,3,2,0,1,1,1,1,1,1 0,0,1,2,2,10,1,0,1,1,1,2,1,0 0,0,3,2,2,10,3,0,1,1,1,1,1,0 3,1,5,2,0,4,2,0,1,1,1,2,1,1 0,0,1,2,1,1,3,0,1,1,1,0,1,0 0,0,3,2,2,6,1,0,1,1,1,1,1,0 0,0,1,2,2,8,3,0,0,1,1,1,1,0 0,0,2,1,0,9,2,0,1,1,1,1,1,1 1,0,10,3,1,5,5,0,0,1,1,0,1,0 3,0,3,2,4,3,3,0,0,1,1,2,1,0 0,0,3,2,0,5,2,0,1,1,1,1,1,0 1,1,0,3,0,4,2,0,1,1,1,0,1,1 1,3,3,2,0,8,0,0,0,1,1,0,1,1 0,0,1,2,2,8,1,0,0,1,1,2,1,0 1,0,9,1,0,10,2,0,1,1,1,1,1,0 2,2,4,3,1,5,3,0,1,1,1,0,1,1 1,0,0,3,1,8,5,0,0,1,1,0,1,0 0,0,0,3,2,8,1,4,0,1,1,2,1,0 0,0,0,3,2,8,3,0,1,1,1,1,1,0 2,1,1,2,0,2,2,0,1,1,1,0,1,0 3,0,1,2,2,8,1,0,0,1,1,2,1,0 0,0,3,2,0,10,0,0,0,1,1,2,1,1 0,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,7,1,1,10,3,0,1,1,1,0,1,0 1,3,3,2,0,1,2,4,1,1,1,0,1,1 1,0,3,2,3,2,5,0,0,1,1,2,1,0 1,0,1,2,2,3,3,0,1,1,1,0,1,0 2,4,10,3,0,5,2,0,1,1,1,1,1,1 0,0,1,2,1,4,3,0,0,1,1,1,1,0 1,0,1,2,0,1,2,0,1,1,1,1,1,0 0,2,1,2,0,4,2,0,1,1,1,1,1,1 1,1,0,3,0,3,2,0,1,1,1,1,1,1 0,0,12,1,2,3,3,0,0,1,1,2,1,0 1,0,0,3,0,2,2,0,1,1,1,0,1,1 1,0,1,2,0,3,2,0,1,1,1,0,1,1 0,0,3,2,0,2,0,0,0,1,1,2,1,1 2,0,9,1,2,1,5,0,1,1,1,0,1,0 0,1,0,3,0,3,2,0,1,1,1,0,1,0 1,4,3,2,0,10,2,0,1,1,1,0,1,1 2,1,11,0,0,1,2,0,1,1,1,0,1,0 0,0,6,2,2,0,1,0,1,1,1,1,1,0 2,0,0,3,0,5,2,4,1,1,1,1,1,1 0,4,3,2,0,12,2,0,1,1,1,1,1,0 1,0,8,0,0,6,2,0,1,1,1,0,1,0 2,1,10,3,1,3,3,3,1,1,1,0,1,0 0,0,2,1,0,10,2,0,1,1,1,2,1,0 1,0,1,2,0,4,2,0,1,1,1,1,1,1 0,0,3,2,0,10,2,0,1,1,1,1,1,0 2,1,11,0,0,2,2,0,1,1,1,2,1,0 0,0,3,2,0,2,2,0,1,1,1,0,1,0 1,0,2,1,2,7,3,4,1,1,1,0,1,0 0,0,1,2,2,8,5,0,0,1,1,1,1,0 0,0,12,1,2,6,5,0,1,1,1,0,1,0 2,0,1,2,1,3,3,0,1,1,1,1,1,1 0,0,0,3,2,5,1,0,1,1,1,0,1,0 0,0,3,2,2,7,3,0,1,1,1,0,1,0 0,0,6,2,0,0,2,0,1,1,1,0,1,0 1,0,1,2,0,10,2,0,1,1,1,1,1,1 0,2,1,2,0,3,2,0,1,1,1,1,1,1 1,0,13,3,2,4,3,0,1,1,1,1,1,1 1,0,3,2,0,7,2,0,1,1,1,0,1,0 1,0,1,2,1,1,5,4,1,1,1,2,1,0 1,4,3,2,0,12,2,0,1,1,1,1,1,0 1,0,3,2,0,12,2,0,1,1,1,0,1,0 2,0,4,3,4,5,5,0,1,1,1,1,1,1 1,0,1,2,1,8,3,0,1,1,1,1,1,0 1,0,13,3,0,5,2,1,1,1,1,0,1,1 2,2,0,3,0,3,2,0,1,1,1,1,1,1 3,0,12,1,0,12,2,0,1,1,1,0,1,0 0,4,1,2,2,8,1,0,0,1,1,2,1,0 1,4,10,3,0,5,2,0,1,1,1,0,1,1 0,4,2,1,2,2,1,4,1,1,1,2,1,0 0,0,8,0,2,6,3,0,1,1,1,0,1,0 0,0,12,1,1,7,3,0,0,1,1,0,1,0 1,0,1,2,0,3,2,0,1,1,1,2,1,0 2,0,3,2,1,8,3,0,0,1,1,2,1,0 1,0,12,1,0,1,2,0,1,1,1,0,1,0 0,0,3,2,2,7,1,0,1,1,1,0,1,0 0,0,8,0,2,2,3,0,0,1,1,2,1,0 1,0,6,2,0,0,2,0,1,1,1,0,1,1 0,0,6,2,2,1,3,0,1,1,1,0,1,0 1,0,3,2,1,9,3,0,1,1,1,1,1,0 1,1,14,0,0,9,2,0,1,1,1,1,1,0 1,0,0,3,1,3,3,0,1,1,1,0,1,1 1,4,10,3,2,5,3,0,0,1,1,1,1,0 0,0,2,1,2,2,1,0,1,1,1,0,1,0 1,1,3,2,1,1,3,0,1,1,1,1,1,0 0,1,0,3,2,4,3,0,0,1,1,0,1,0 1,3,0,3,0,8,2,0,1,1,1,0,1,1 2,0,3,2,0,3,2,0,1,1,1,0,1,0 0,0,6,2,0,0,0,0,0,1,1,2,1,1 0,0,1,2,1,4,3,0,1,1,1,0,1,0 0,2,3,2,0,9,2,0,1,1,1,1,1,0 0,0,12,1,2,7,1,0,1,1,1,0,1,0 1,0,1,2,1,3,3,0,1,1,1,0,1,1 0,0,3,2,2,2,1,4,1,1,1,2,1,0 0,0,1,2,2,3,3,0,0,1,1,1,1,0 1,2,4,3,2,5,3,0,0,1,1,1,1,1 2,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,5,2,2,3,3,0,0,1,1,1,1,0 1,0,3,2,0,8,2,0,1,1,1,1,1,0 2,0,0,3,1,8,3,0,0,1,1,0,1,0 2,0,1,2,0,4,0,0,0,1,1,1,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 1,0,1,2,0,3,2,0,1,1,1,1,1,1 1,5,1,2,0,4,2,0,1,1,1,0,1,1 1,0,3,2,1,1,5,0,1,1,1,2,1,0 2,3,3,2,4,8,3,0,1,1,1,0,1,0 0,0,3,2,0,7,2,0,1,1,1,1,1,1 2,0,1,2,0,3,2,0,1,1,1,1,1,1 1,0,13,3,0,5,2,0,1,1,1,1,1,1 1,0,8,0,0,1,2,0,1,1,1,0,1,0 2,0,3,2,1,8,3,0,0,1,1,0,1,0 1,0,3,2,1,8,3,0,1,1,1,0,1,0 0,0,9,1,0,7,4,0,1,1,1,0,1,0 0,0,0,3,2,4,3,0,1,1,1,1,1,0 0,4,1,2,3,2,1,4,0,1,1,2,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,2,1,5,0,1,1,1,1,1,0 0,0,2,1,2,3,1,0,0,1,1,2,1,0 0,0,5,2,0,1,2,0,1,1,1,1,1,0 1,3,3,2,2,8,3,0,1,1,1,0,1,1 2,0,5,2,0,4,2,0,1,1,1,0,1,1 0,0,7,1,2,6,3,0,1,1,1,2,1,0 1,3,10,3,2,4,3,0,0,1,1,1,1,0 1,1,1,2,0,1,2,0,1,1,1,0,1,0 1,0,7,1,2,9,3,0,1,1,1,0,1,0 1,3,0,3,1,5,3,4,0,1,1,0,1,0 0,0,1,2,2,2,1,0,0,1,1,0,1,0 1,1,0,3,2,3,3,0,1,1,1,1,1,0 1,0,2,1,4,7,4,0,1,1,1,2,1,0 0,0,3,2,0,8,2,0,1,1,1,0,1,0 0,0,3,2,1,7,3,0,1,1,1,1,1,0 1,1,12,1,0,4,2,0,1,1,1,1,1,0 1,0,0,3,1,3,4,4,1,1,1,0,1,0 0,0,3,2,1,8,3,0,0,1,1,0,1,0 1,0,10,3,2,5,3,0,0,1,1,0,1,0 2,3,3,2,0,8,2,0,1,1,1,0,1,1 0,0,0,3,1,3,3,0,1,1,1,0,1,1 0,0,1,2,2,7,3,0,1,1,1,0,1,0 1,0,1,2,1,6,4,4,1,1,1,0,1,0 0,0,3,2,3,1,1,4,1,1,1,0,1,0 2,1,1,2,0,5,2,0,1,1,1,1,1,0 1,0,1,2,0,8,2,0,1,1,1,0,1,1 1,5,3,2,1,12,5,0,0,1,1,0,1,0 0,0,1,2,0,4,2,0,1,1,1,0,1,1 0,0,1,2,2,3,1,4,1,1,1,2,1,0 2,0,14,0,2,10,3,4,1,1,1,0,1,0 2,0,2,1,0,7,2,4,1,1,1,1,1,0 0,0,5,2,0,1,2,4,1,1,1,0,1,0 0,0,3,2,2,7,5,1,1,1,1,0,1,0 2,4,3,2,4,4,5,0,0,1,1,0,1,0 0,0,3,2,2,3,1,0,1,1,1,2,1,0 0,5,0,3,0,5,2,0,1,1,1,1,1,0 0,0,3,2,0,6,2,0,1,1,1,1,1,0 2,4,3,2,0,10,2,0,1,1,1,2,1,0 1,0,6,2,0,1,2,0,1,1,1,0,1,0 1,0,1,2,2,4,5,4,0,1,1,0,1,0 0,0,3,2,2,2,1,4,1,1,1,0,1,0 2,4,0,3,4,8,5,1,0,1,1,2,1,0 0,0,2,1,2,3,3,0,0,1,1,2,1,0 2,1,10,3,1,0,3,0,0,1,1,2,1,0 1,4,5,2,1,4,5,0,1,1,1,1,1,0 0,5,3,2,2,5,3,4,0,1,1,0,1,0 0,0,1,2,2,7,3,0,1,1,1,0,1,0 2,0,0,3,4,3,3,0,1,1,1,2,1,0 1,0,13,3,0,3,2,0,1,1,1,0,1,1 1,4,7,1,4,2,3,0,0,1,1,1,1,0 2,0,3,2,1,4,3,0,0,1,1,0,1,0 0,0,0,3,2,5,3,0,1,1,1,2,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,1 1,0,3,2,0,1,2,0,1,1,1,1,1,0 1,0,1,2,0,5,2,0,1,1,1,0,1,1 2,1,0,3,0,4,2,0,1,1,1,1,1,0 1,0,2,1,4,1,5,0,1,1,1,0,1,0 0,0,3,2,0,3,2,0,1,1,1,0,1,0 2,0,0,3,1,4,3,0,0,1,1,0,1,0 0,0,0,3,2,3,3,0,0,1,1,1,1,0 0,0,2,1,3,10,3,4,1,1,1,0,1,0 0,0,0,3,0,0,2,0,1,1,1,1,1,1 2,0,1,2,0,2,2,0,1,1,1,2,1,1 1,3,6,2,1,6,5,4,1,1,1,0,1,0 2,0,3,2,4,1,3,0,1,1,1,0,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,1 2,2,0,3,0,4,2,0,1,1,1,1,1,1 1,0,0,3,0,5,2,0,1,1,1,0,1,1 0,0,12,1,2,2,5,0,1,1,1,0,1,0 1,0,1,2,1,4,3,0,0,1,1,0,1,0 1,0,3,2,1,6,3,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,0 1,0,0,3,0,8,2,0,1,1,1,1,1,1 1,1,6,2,0,4,2,0,1,1,1,2,1,0 0,0,12,1,0,1,2,0,1,1,1,1,1,0 2,0,10,3,0,4,2,0,1,1,1,1,1,1 0,0,1,2,0,7,2,3,1,1,1,0,1,1 0,0,3,2,1,4,5,0,0,1,1,1,1,0 2,4,1,2,4,8,4,0,0,1,1,2,1,0 1,4,0,3,0,8,0,0,0,1,1,0,1,1 2,0,0,3,0,3,2,0,1,1,1,0,1,0 0,0,3,2,2,6,1,4,0,1,1,0,1,0 1,0,3,2,1,0,5,0,1,1,1,0,1,0 1,3,3,2,0,8,2,0,1,1,1,1,1,1 0,0,2,1,2,2,1,0,1,1,1,2,1,0 1,0,1,2,0,1,2,0,1,1,1,1,1,0 3,0,3,2,4,3,3,0,0,1,1,2,1,0 0,5,0,3,2,8,3,0,0,1,1,2,1,0 2,0,1,2,0,4,2,0,1,1,1,2,1,0 0,4,3,2,2,2,3,0,0,1,1,2,1,0 0,0,3,2,2,3,5,0,1,1,1,1,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,0 1,0,1,2,2,1,3,0,1,1,1,1,1,0 2,3,3,2,4,8,5,0,0,1,1,0,1,0 1,0,0,3,0,3,2,0,1,1,1,1,1,1 1,0,3,2,1,1,3,0,1,1,1,0,1,0 0,0,12,1,2,3,1,0,1,1,1,0,1,0 1,0,3,2,0,6,2,0,1,1,1,1,1,0 1,0,1,2,1,8,5,4,0,1,1,0,1,0 0,0,1,2,2,3,4,1,0,1,1,2,1,0 0,0,1,2,2,7,1,0,0,1,1,2,1,0 2,0,5,2,4,8,4,0,0,1,1,0,1,0 0,1,3,2,1,7,5,0,1,1,1,0,1,0 0,0,12,1,2,1,3,0,1,1,1,1,1,0 1,0,2,1,1,9,3,0,1,1,1,1,1,0 0,0,0,3,3,0,3,4,1,1,1,0,1,0 0,0,1,2,2,3,3,0,0,1,1,2,1,0 2,0,3,2,3,8,5,0,0,1,1,0,1,0 1,0,0,3,0,5,2,0,1,1,1,2,1,1 1,4,3,2,0,10,2,0,1,1,1,2,1,1 1,0,3,2,1,7,5,0,0,1,1,0,1,0 0,5,0,3,0,5,0,1,0,1,1,0,1,1 0,0,3,2,2,12,3,3,1,1,1,0,1,0 0,0,3,2,2,6,1,0,1,1,1,0,1,0 2,1,0,3,4,3,3,0,1,1,1,2,1,0 1,4,1,2,0,1,2,0,1,1,1,0,1,0 0,0,12,1,0,10,2,0,1,1,1,1,1,0 0,0,1,2,2,3,3,0,1,1,1,0,1,0 1,4,0,3,1,1,3,0,1,1,1,0,1,0 1,0,3,2,1,6,1,0,0,1,1,0,1,0 2,0,3,2,0,2,2,0,1,1,1,2,1,0 0,0,3,2,0,3,0,0,0,1,1,2,1,0 0,0,2,1,5,3,1,1,1,1,1,2,1,0 0,0,11,0,2,10,4,3,1,1,1,0,1,0 1,5,10,3,0,4,2,0,1,1,1,0,1,1 0,0,13,3,0,5,2,0,1,1,1,1,1,1 0,0,0,3,2,5,3,0,1,1,1,2,1,0 0,3,5,2,2,8,1,4,0,1,1,0,1,0 0,0,0,3,0,3,2,0,1,1,1,1,1,1 2,0,3,2,0,7,2,0,1,1,1,0,1,0 1,1,3,2,0,4,2,0,1,1,1,2,1,0 2,0,3,2,2,1,4,0,0,1,1,2,1,0 3,1,8,0,0,9,2,0,1,1,1,2,1,0 0,0,13,3,1,5,3,0,1,1,1,0,1,1 1,1,3,2,3,3,5,0,0,1,1,2,1,0 2,2,0,3,0,3,2,0,1,1,1,2,1,0 1,0,6,2,0,0,2,0,1,1,1,0,1,1 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,5,3,2,2,12,4,1,0,1,1,0,1,0 1,0,0,3,0,4,0,0,0,1,1,1,1,1 0,1,3,2,2,1,5,0,1,1,1,0,1,0 1,0,0,3,1,2,3,0,0,1,1,0,1,1 2,0,3,2,4,2,5,0,0,1,1,0,1,0 1,0,5,2,0,0,2,0,1,1,1,1,1,1 3,0,3,2,4,2,3,0,0,1,1,2,1,0 0,0,1,2,2,5,3,0,0,1,1,2,1,0 3,0,3,2,0,6,2,0,1,1,1,2,1,0 0,0,3,2,5,2,4,3,1,1,1,0,1,0 0,0,9,1,0,5,2,0,1,1,1,1,1,0 0,0,0,3,0,3,2,0,1,1,1,0,1,0 1,0,0,3,1,4,3,0,1,1,1,0,1,1 0,0,3,2,0,10,2,4,1,1,1,0,1,0 2,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,0,3,0,0,0,0,0,1,1,2,1,0 2,5,3,2,0,4,2,0,1,1,1,2,1,0 1,1,3,2,0,1,2,1,1,1,1,1,1,0 1,3,0,3,2,4,3,0,0,1,1,0,1,0 1,0,10,3,1,5,5,0,0,1,1,0,1,1 2,0,0,3,0,4,2,0,1,1,1,0,1,1 1,0,3,2,0,10,2,0,1,1,1,0,1,1 1,0,1,2,2,6,5,4,1,1,1,0,1,0 2,0,0,3,0,3,2,0,1,1,1,1,1,1 0,0,0,3,2,4,3,0,1,1,1,1,1,0 1,0,1,2,1,8,5,0,0,1,1,0,1,0 0,0,14,0,0,7,2,0,1,1,1,1,1,0 1,3,3,2,1,8,5,0,0,1,1,0,1,0 1,2,3,2,0,1,2,0,1,1,1,1,1,1 1,0,4,3,0,5,2,0,1,1,1,1,1,1 1,0,10,3,0,4,2,0,1,1,1,0,1,1 0,0,3,2,2,1,3,0,1,1,1,0,1,0 1,0,10,3,0,5,0,0,0,1,1,2,1,0 1,0,5,2,1,3,3,0,0,1,1,0,1,1 0,0,1,2,1,7,5,0,0,1,1,1,1,1 0,0,1,2,0,1,0,0,0,1,1,0,1,0 1,0,8,0,0,7,2,4,1,1,1,2,1,1 0,0,1,2,2,4,1,0,0,1,1,0,1,0 1,1,3,2,0,9,2,0,1,1,1,1,1,0 1,0,1,2,0,3,2,0,1,1,1,0,1,0 0,0,3,2,2,2,1,4,0,1,1,0,1,0 1,0,10,3,1,5,3,0,0,1,1,1,1,0 0,0,2,1,2,3,1,0,0,1,1,2,1,0 0,0,1,2,2,3,1,0,1,1,1,2,1,0 1,0,0,3,0,2,2,3,1,1,1,0,1,1 1,0,1,2,0,0,2,0,1,1,1,0,1,0 0,0,10,3,2,4,3,0,1,1,1,1,1,0 1,0,4,3,1,5,3,0,1,1,1,1,1,1 0,0,6,2,1,3,3,0,1,1,1,2,1,0 0,0,6,2,0,4,0,0,0,1,1,1,1,0 0,0,0,3,2,8,3,0,0,1,1,2,1,0 0,0,1,2,1,1,3,0,1,1,1,0,1,0 1,0,3,2,0,8,0,0,0,1,1,2,1,0 0,0,0,3,0,5,2,0,1,1,1,0,1,1 0,0,1,2,2,9,3,0,0,1,1,0,1,0 0,0,1,2,2,1,1,0,1,1,1,2,1,0 1,0,12,1,0,8,2,4,1,1,1,0,1,0 1,4,10,3,4,5,5,0,0,1,1,1,1,0 1,0,3,2,0,8,0,0,0,1,1,0,1,1 1,1,4,3,0,3,2,0,1,1,1,2,1,0 0,0,0,3,0,5,0,0,0,1,1,0,1,1 2,0,1,2,0,4,2,0,1,1,1,2,1,1 1,0,3,2,4,4,3,0,0,1,1,0,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,2,4,1,0,1,1,1,0,1,0 1,2,10,3,0,3,2,1,1,1,1,0,1,1 0,0,6,2,0,1,0,0,0,1,1,0,1,0 0,0,2,1,2,1,3,0,0,1,1,2,1,0 0,0,0,3,2,8,1,4,0,1,1,0,1,0 0,0,3,2,2,8,5,0,0,1,1,2,1,0 1,4,0,3,0,12,2,0,1,1,1,1,1,0 0,0,1,2,2,4,3,0,0,1,1,1,1,0 0,0,3,2,1,3,5,0,0,1,1,2,1,0 1,4,0,3,0,5,2,0,1,1,1,2,1,0 1,0,0,3,0,3,2,0,1,1,1,1,1,1 0,0,0,3,2,8,1,0,1,1,1,2,1,0 2,0,3,2,2,1,3,0,1,1,1,0,1,0 1,0,1,2,1,3,5,0,1,1,1,1,1,0 2,0,3,2,3,8,4,4,0,1,1,0,1,0 0,0,1,2,2,10,3,0,1,1,1,1,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,0 1,0,5,2,0,1,2,0,1,1,1,0,1,1 0,0,1,2,2,8,3,0,0,1,1,0,1,0 0,0,1,2,2,8,3,0,1,1,1,1,1,0 0,0,6,2,0,1,2,0,1,1,1,0,1,1 0,0,1,2,2,7,1,0,1,1,1,0,1,0 0,0,0,3,1,5,3,0,0,1,1,0,1,0 0,0,3,2,2,2,3,0,1,1,1,1,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 0,4,1,2,0,10,2,0,1,1,1,0,1,0 0,5,3,2,0,12,2,0,1,1,1,2,1,0 1,0,12,1,1,7,3,0,0,1,1,2,1,0 1,0,0,3,1,5,3,0,1,1,1,0,1,1 0,0,6,2,1,3,5,0,0,1,1,0,1,0 0,0,3,2,1,2,5,0,0,1,1,0,1,0 0,0,0,3,2,8,3,0,1,1,1,2,1,0 2,0,8,0,0,2,2,0,1,1,1,0,1,0 2,0,0,3,0,2,2,4,1,1,1,2,1,0 0,0,3,2,3,2,5,2,0,1,1,1,1,0 1,0,6,2,0,8,2,0,1,1,1,1,1,1 1,0,3,2,0,1,2,0,1,1,1,0,1,1 0,0,3,2,0,7,2,0,1,1,1,2,1,0 2,0,2,1,0,2,2,4,1,1,1,2,1,1 0,5,10,3,0,5,2,1,1,1,1,2,1,0 0,3,0,3,2,12,3,0,1,1,1,1,1,0 0,0,3,2,1,3,5,0,0,1,1,2,1,0 0,0,1,2,2,3,5,0,0,1,1,2,1,0 0,0,0,3,2,2,1,0,0,1,1,2,1,0 1,1,1,2,0,1,2,0,1,1,1,1,1,0 0,0,14,0,0,6,0,0,0,1,1,0,1,0 1,0,10,3,2,5,3,0,1,1,1,1,1,0 0,4,10,3,0,4,0,0,0,1,1,0,1,1 1,0,10,3,0,2,2,1,1,1,1,0,1,0 2,0,10,3,0,4,2,0,1,1,1,0,1,1 1,1,1,2,2,1,5,0,1,1,1,2,1,0 1,0,1,2,0,4,2,0,1,1,1,1,1,1 1,0,3,2,0,3,4,0,0,1,1,2,1,0 1,0,10,3,1,8,3,0,1,1,1,0,1,0 0,0,0,3,2,0,3,0,0,1,1,2,1,1 0,5,1,2,2,12,3,4,1,1,1,2,1,0 1,0,3,2,2,8,5,0,0,1,1,0,1,0 0,0,3,2,2,4,3,0,0,1,1,0,1,0 1,0,6,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,2,2,5,0,0,1,1,2,1,0 0,4,0,3,2,5,1,0,0,1,1,2,1,0 0,0,0,3,0,4,2,1,1,1,1,1,1,1 1,0,10,3,0,4,2,0,1,1,1,0,1,1 1,0,5,2,0,8,4,1,0,1,1,2,1,1 0,0,1,2,2,2,3,0,0,1,1,1,1,0 0,0,0,3,2,8,3,1,0,1,1,0,1,0 1,5,1,2,2,4,3,0,1,1,1,0,1,0 0,5,1,2,2,8,3,0,0,1,1,2,1,0 0,0,3,2,2,1,1,0,1,1,1,1,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 2,0,0,3,0,12,2,0,1,1,1,1,1,1 0,5,3,2,2,2,1,0,0,1,1,0,1,0 2,2,0,3,0,4,2,0,1,1,1,0,1,0 0,0,6,2,2,5,3,0,0,1,1,2,1,0 1,5,1,2,0,0,2,0,1,1,1,1,1,0 0,0,3,2,2,8,3,0,1,1,1,1,1,0 0,0,3,2,3,8,3,0,0,1,1,0,1,0 0,0,2,1,2,6,1,0,1,1,1,2,1,0 1,1,3,2,0,9,2,0,1,1,1,1,1,0 0,0,3,2,1,4,5,0,0,1,1,2,1,0 2,0,0,3,1,3,3,1,0,1,1,2,1,0 1,3,1,2,0,2,2,0,1,1,1,0,1,0 1,1,6,2,0,3,2,0,1,1,1,1,1,1 0,5,3,2,0,8,0,0,0,1,1,0,1,0 0,0,1,2,1,8,3,0,0,1,1,2,1,0 0,0,2,1,2,8,1,0,0,1,1,2,1,0 2,0,3,2,1,8,3,0,0,1,1,0,1,0 0,0,1,2,1,8,5,0,0,1,1,0,1,0 0,4,2,1,0,2,4,0,1,1,1,1,1,0 1,1,3,2,0,1,2,0,1,1,1,0,1,1 1,0,3,2,1,1,3,0,1,1,1,0,1,0 1,2,0,3,0,5,2,0,1,1,1,0,1,1 0,1,0,3,2,5,1,0,1,1,1,2,1,0 1,0,1,2,1,5,3,0,1,1,1,0,1,1 1,0,3,2,4,5,5,3,0,1,1,2,1,0 0,0,7,1,1,11,3,0,0,1,1,0,1,0 0,0,1,2,1,7,5,1,0,1,1,0,1,0 1,0,3,2,0,3,2,0,1,1,1,1,1,1 0,4,1,2,0,12,2,0,1,1,1,0,1,0 1,0,5,2,1,8,5,0,0,1,1,0,1,1 1,0,1,2,0,7,2,3,1,1,1,0,1,0 0,0,0,3,2,0,3,0,0,1,1,2,1,0 0,0,0,3,2,4,1,0,0,1,1,0,1,0 1,0,0,3,1,0,3,0,0,1,1,1,1,0 2,0,10,3,0,8,2,1,1,1,1,0,1,1 0,0,3,2,2,2,1,0,1,1,1,2,1,0 0,0,1,2,0,1,2,0,1,1,1,1,1,0 2,0,0,3,3,4,3,0,1,1,1,1,1,0 2,0,3,2,2,11,5,0,0,1,1,0,1,0 1,0,12,1,0,10,2,4,1,1,1,0,1,0 2,1,1,2,0,1,2,0,1,1,1,0,1,0 1,1,1,2,2,1,3,0,0,1,1,2,1,0 1,4,3,2,2,2,5,0,0,1,1,0,1,0 0,0,3,2,3,0,5,4,0,1,1,2,1,0 0,0,3,2,0,10,2,4,1,1,1,1,1,0 0,0,3,2,0,5,2,0,1,1,1,2,1,0 1,0,12,1,2,6,3,0,1,1,1,0,1,0 1,0,3,2,0,3,2,0,1,1,1,1,1,1 1,1,3,2,0,1,2,0,1,1,1,0,1,0 1,2,1,2,0,4,2,0,1,1,1,0,1,0 0,0,0,3,1,3,3,0,1,1,1,0,1,0 1,4,0,3,0,5,2,0,1,1,1,0,1,1 1,0,3,2,0,3,1,0,0,1,1,2,1,0 1,0,10,3,0,4,2,0,1,1,1,0,1,1 1,0,3,2,1,2,5,0,0,1,1,2,1,0 2,5,3,2,0,8,2,0,1,1,1,0,1,1 0,0,6,2,2,3,1,0,0,1,1,0,1,0 0,0,1,2,2,8,5,4,0,1,1,2,1,0 0,0,1,2,2,2,5,0,0,1,1,2,1,0 0,0,3,2,2,0,3,0,0,1,1,0,1,0 0,0,3,2,0,7,2,0,1,1,1,1,1,0 1,0,1,2,2,4,3,3,1,1,1,1,1,1 0,0,1,2,0,7,2,0,1,1,1,0,1,0 1,0,3,2,1,1,3,0,1,1,1,1,1,1 1,0,3,2,0,1,2,0,1,1,1,1,1,0 2,0,3,2,1,11,5,0,0,1,1,1,1,0 0,0,1,2,2,8,1,0,0,1,1,1,1,0 1,0,5,2,0,8,1,0,0,1,1,2,1,0 0,0,6,2,0,0,2,0,1,1,1,0,1,1 0,0,0,3,2,5,3,0,0,1,1,0,1,0 0,0,6,2,0,5,2,0,1,1,1,1,1,0 0,5,3,2,0,12,2,0,1,1,1,1,1,0 0,0,10,3,2,4,3,0,1,1,1,1,1,0 1,5,10,3,2,1,3,0,1,1,1,1,1,0 0,5,0,3,0,5,2,0,1,1,1,2,1,1 1,0,0,3,0,5,2,0,1,1,1,1,1,1 3,1,3,2,0,9,2,0,1,1,1,1,1,0 0,0,1,2,2,3,3,4,1,1,1,0,1,0 1,0,6,2,1,1,3,0,1,1,1,0,1,0 0,0,10,3,2,4,1,0,0,1,1,1,1,1 1,0,3,2,2,1,4,0,1,1,1,0,1,0 1,0,1,2,0,4,2,0,1,1,1,1,1,1 1,0,1,2,1,4,5,0,0,1,1,1,1,0 0,0,1,2,2,8,1,3,1,1,1,0,1,0 1,0,0,3,1,5,3,0,1,1,1,0,1,0 0,0,3,2,1,7,3,0,0,1,1,0,1,0 0,0,2,1,2,8,3,0,0,1,1,0,1,0 2,5,3,2,0,1,2,0,1,1,1,0,1,0 1,3,10,3,0,4,4,0,1,1,1,0,1,1 0,0,3,2,1,9,3,0,1,1,1,0,1,0 0,0,0,3,2,1,3,0,1,1,1,0,1,0 1,0,0,3,0,5,2,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 1,0,1,2,1,1,3,0,1,1,1,0,1,0 2,0,3,2,5,1,3,0,1,1,1,0,1,0 1,4,10,3,0,5,2,0,1,1,1,0,1,1 0,0,0,3,2,3,3,0,0,1,1,1,1,0 1,0,2,1,1,12,3,0,0,1,1,2,1,0 1,0,1,2,0,3,2,0,1,1,1,0,1,1 1,5,1,2,0,3,2,0,1,1,1,0,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 0,0,5,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,2,8,5,0,1,1,1,1,1,0 0,0,1,2,2,8,1,0,1,1,1,2,1,0 2,0,3,2,2,8,1,0,0,1,1,0,1,0 1,0,1,2,1,7,5,0,0,1,1,0,1,0 0,0,9,1,2,9,1,0,1,1,1,2,1,0 1,5,10,3,0,5,2,1,1,1,1,1,1,0 0,0,3,2,2,6,1,4,1,1,1,0,1,0 0,0,1,2,2,12,3,2,0,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,1 1,4,0,3,2,5,3,0,0,1,1,1,1,1 0,0,1,2,2,5,1,0,1,1,1,0,1,0 1,0,10,3,0,1,2,4,1,1,1,0,1,0 0,0,5,2,2,1,1,0,1,1,1,2,1,0 0,0,9,1,2,1,3,0,1,1,1,0,1,0 1,0,3,2,0,3,2,0,1,1,1,0,1,1 0,1,0,3,0,5,4,0,0,1,1,2,1,1 1,3,1,2,1,8,5,0,0,1,1,0,1,0 2,0,1,2,0,10,2,0,1,1,1,1,1,1 0,0,1,2,2,8,1,0,0,1,1,2,1,0 2,1,10,3,0,9,2,0,1,1,1,0,1,0 1,0,0,3,0,7,0,0,0,1,1,2,1,0 2,4,1,2,1,8,3,4,0,1,1,1,1,1 0,0,1,2,2,8,1,0,0,1,1,2,1,0 0,4,2,1,2,5,1,0,0,1,1,2,1,0 0,0,1,2,2,2,1,0,0,1,1,0,1,0 0,0,6,2,2,4,3,4,0,1,1,0,1,0 1,0,1,2,0,4,0,0,0,1,1,2,1,1 1,0,3,2,1,8,3,0,0,1,1,0,1,0 0,0,3,2,2,6,3,0,1,1,1,2,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,1 1,0,1,2,0,5,2,0,1,1,1,1,1,1 2,1,10,3,0,5,2,0,1,1,1,2,1,1 0,0,0,3,2,8,1,0,1,1,1,0,1,0 0,1,0,3,0,4,2,0,1,1,1,1,1,1 1,1,0,3,0,1,2,1,1,1,1,2,1,0 0,0,12,1,2,1,3,4,0,1,1,1,1,0 1,0,6,2,0,1,2,0,1,1,1,0,1,1 0,4,0,3,0,5,0,0,0,1,1,1,1,0 1,0,3,2,0,2,0,0,0,1,1,0,1,0 1,0,1,2,1,7,5,4,0,1,1,0,1,0 0,0,1,2,2,8,1,4,1,1,1,0,1,0 1,2,13,3,0,3,2,1,1,1,1,0,1,1 2,1,10,3,5,3,3,0,0,1,1,2,1,0 1,0,3,2,0,6,2,0,1,1,1,0,1,0 0,0,3,2,1,7,3,0,0,1,1,0,1,0 0,0,1,2,0,1,2,0,1,1,1,0,1,0 1,0,4,3,0,5,2,0,1,1,1,1,1,1 0,0,12,1,2,2,1,0,1,1,1,2,1,0 0,0,3,2,2,3,1,0,1,1,1,0,1,0 0,0,3,2,1,2,5,4,0,1,1,0,1,0 0,0,2,1,2,6,3,0,1,1,1,0,1,0 2,0,1,2,0,1,2,0,1,1,1,1,1,0 2,0,8,0,4,2,3,0,0,1,1,0,1,0 1,0,13,3,0,8,2,0,1,1,1,0,1,0 0,0,7,1,2,6,3,0,0,1,1,0,1,0 1,1,8,0,0,1,2,0,1,1,1,2,1,0 0,0,12,1,2,2,3,4,1,1,1,2,1,0 1,0,3,2,0,6,2,0,1,1,1,1,1,0 1,0,0,3,0,8,2,0,1,1,1,0,1,1 1,0,0,3,0,0,2,0,1,1,1,0,1,1 2,0,3,2,1,4,3,0,0,1,1,0,1,0 0,0,3,2,2,1,1,0,1,1,1,2,1,0 0,0,2,1,2,3,1,0,1,1,1,2,1,0 1,0,3,2,0,6,2,0,1,1,1,0,1,0 0,0,3,2,2,6,1,1,1,1,1,2,1,0 1,0,0,3,2,4,1,0,1,1,1,0,1,0 0,0,3,2,2,0,3,0,0,1,1,0,1,0 2,0,1,2,1,8,5,0,0,1,1,0,1,0 2,0,8,0,4,2,3,0,0,1,1,2,1,0 1,0,1,2,0,0,2,0,1,1,1,1,1,0 0,0,3,2,2,7,1,0,0,1,1,1,1,0 3,1,8,0,0,4,2,0,1,1,1,0,1,0 1,1,0,3,3,0,3,0,1,1,1,1,1,0 1,5,3,2,0,6,2,0,1,1,1,0,1,0 1,0,1,2,0,1,2,2,1,1,1,1,1,1 2,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 1,0,14,0,3,1,5,4,0,1,1,0,1,0 1,0,1,2,1,7,3,0,1,1,1,0,1,0 2,0,10,3,2,5,3,0,1,1,1,0,1,1 2,1,4,3,0,5,2,0,1,1,1,1,1,1 0,0,1,2,2,7,1,4,0,1,1,0,1,0 1,0,8,0,0,1,2,3,1,1,1,0,1,0 2,2,12,1,0,4,2,0,1,1,1,1,1,1 2,0,3,2,0,9,2,0,1,1,1,0,1,0 1,0,0,3,3,3,3,0,1,1,1,1,1,1 0,0,3,2,0,1,4,0,1,1,1,0,1,0 0,0,5,2,2,1,3,0,1,1,1,0,1,0 2,0,3,2,0,3,2,0,1,1,1,2,1,0 1,4,10,3,0,5,2,0,1,1,1,0,1,1 1,0,3,2,0,8,2,0,1,1,1,1,1,0 0,0,3,2,2,8,1,0,0,1,1,0,1,0 2,1,3,2,0,9,2,0,1,1,1,2,1,1 1,0,5,2,2,4,3,0,0,1,1,0,1,0 0,0,5,2,2,8,1,0,0,1,1,2,1,0 0,0,1,2,2,4,4,0,1,1,1,0,1,0 0,0,4,3,2,5,3,0,1,1,1,1,1,1 0,0,0,3,2,5,3,0,0,1,1,0,1,0 0,0,3,2,2,1,1,0,1,1,1,0,1,0 0,0,0,3,0,0,2,0,1,1,1,0,1,0 1,0,10,3,0,5,0,0,0,1,1,1,1,1 0,0,7,1,2,6,1,0,1,1,1,0,1,0 1,0,6,2,2,5,1,0,0,1,1,0,1,0 0,0,10,3,2,8,3,0,0,1,1,0,1,0 1,0,3,2,3,3,5,0,0,1,1,1,1,0 0,4,3,2,0,5,2,0,1,1,1,0,1,0 0,0,0,3,3,5,5,4,0,1,1,2,1,0 2,0,10,3,0,5,2,0,1,1,1,1,1,1 1,1,5,2,1,3,3,0,0,1,1,1,1,0 1,0,10,3,2,4,3,0,0,1,1,1,1,1 1,0,5,2,1,5,5,0,0,1,1,1,1,0 1,1,8,0,0,9,2,0,1,1,1,1,1,0 3,4,10,3,0,4,2,0,1,1,1,2,1,0 0,0,9,1,2,2,1,0,0,1,1,2,1,0 0,0,3,2,0,3,2,0,1,1,1,1,1,1 0,0,0,3,0,0,2,0,1,1,1,1,1,0 1,0,1,2,0,7,2,0,1,1,1,1,1,1 0,3,3,2,0,8,2,0,1,1,1,1,1,1 1,2,0,3,3,3,5,0,1,1,1,0,1,1 0,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,2,0,3,0,5,2,0,1,1,1,1,1,0 0,0,3,2,2,3,3,0,0,1,1,2,1,0 1,4,6,2,0,12,2,0,1,1,1,0,1,0 2,1,3,2,0,1,2,0,1,1,1,2,1,0 2,0,1,2,4,2,3,0,0,1,1,2,1,0 2,5,3,2,1,8,3,0,0,1,1,2,1,0 1,5,3,2,3,3,5,4,0,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,0 1,1,10,3,1,5,3,0,0,1,1,2,1,0 0,4,0,3,2,5,1,0,1,1,1,1,1,0 0,0,3,2,2,7,3,4,0,1,1,0,1,0 1,0,13,3,0,4,2,0,1,1,1,0,1,1 1,0,12,1,1,8,5,0,0,1,1,0,1,0 2,0,1,2,1,12,5,0,0,1,1,0,1,0 0,0,3,2,0,10,2,0,1,1,1,1,1,1 1,0,7,1,1,7,3,4,0,1,1,1,1,0 1,0,3,2,1,3,3,0,1,1,1,1,1,0 0,0,2,1,2,3,1,0,0,1,1,2,1,0 1,0,4,3,0,5,2,0,1,1,1,1,1,1 0,0,5,2,2,3,1,0,0,1,1,0,1,0 0,0,3,2,0,10,2,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,1 1,3,0,3,0,12,2,0,1,1,1,1,1,1 2,0,3,2,0,0,2,0,1,1,1,0,1,0 0,0,3,2,2,6,1,4,0,1,1,0,1,0 2,0,10,3,0,5,2,0,1,1,1,1,1,0 0,5,3,2,0,7,2,0,1,1,1,1,1,0 0,0,3,2,0,9,2,0,1,1,1,0,1,0 1,4,5,2,0,1,2,0,1,1,1,0,1,1 1,0,5,2,0,1,2,0,1,1,1,0,1,0 1,0,1,2,4,4,3,0,0,1,1,1,1,0 2,1,3,2,0,9,2,1,1,1,1,1,1,0 3,1,1,2,0,9,2,0,1,1,1,2,1,0 0,0,3,2,0,8,0,0,0,1,1,1,1,0 0,0,6,2,2,4,3,0,0,1,1,0,1,0 2,2,4,3,1,5,3,0,1,1,1,2,1,0 1,1,0,3,0,3,2,0,1,1,1,1,1,1 0,4,10,3,0,5,0,0,0,1,1,2,1,1 1,1,0,3,0,4,2,0,1,1,1,0,1,1 1,3,3,2,0,8,2,0,1,1,1,1,1,0 0,0,1,2,2,2,3,4,1,1,1,2,1,0 0,3,6,2,2,8,3,3,1,1,1,1,1,0 2,1,0,3,1,9,3,0,1,1,1,2,1,0 0,5,10,3,2,5,3,0,0,1,1,2,1,0 1,4,5,2,0,8,0,0,0,1,1,2,1,1 1,5,3,2,0,12,2,0,1,1,1,1,1,1 2,0,1,2,1,0,3,4,0,1,1,0,1,0 1,4,0,3,3,5,5,0,0,1,1,1,1,0 1,0,1,2,1,1,5,0,1,1,1,0,1,0 0,2,3,2,2,1,1,0,1,1,1,0,1,0 1,0,3,2,1,0,3,0,0,1,1,2,1,0 2,1,14,0,0,1,2,4,1,1,1,2,1,0 0,0,9,1,0,10,2,0,1,1,1,0,1,0 0,1,3,2,0,9,2,0,1,1,1,1,1,0 0,0,3,2,2,2,1,0,0,1,1,2,1,0 1,5,0,3,0,12,2,0,1,1,1,1,1,0 1,0,1,2,3,5,3,0,1,1,1,1,1,1 1,0,9,1,1,6,3,4,1,1,1,0,1,0 1,0,5,2,3,7,3,0,1,1,1,0,1,0 1,5,3,2,0,1,2,0,1,1,1,1,1,0 0,0,1,2,2,6,5,0,1,1,1,2,1,0 0,2,6,2,1,4,3,0,0,1,1,1,1,1 2,0,13,3,2,5,3,0,1,1,1,1,1,0 1,0,2,1,5,1,3,4,1,1,1,0,1,0 1,1,1,2,0,1,2,0,1,1,1,2,1,0 1,0,10,3,0,0,2,0,1,1,1,1,1,1 1,0,0,3,0,3,2,0,1,1,1,0,1,1 2,5,10,3,0,5,2,0,1,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,1 2,0,3,2,0,6,2,0,1,1,1,1,1,0 0,0,10,3,2,5,3,0,0,1,1,2,1,0 0,0,3,2,2,7,5,4,0,1,1,2,1,0 0,0,5,2,2,8,1,4,0,1,1,2,1,0 1,0,13,3,2,5,5,0,0,1,1,0,1,0 1,0,1,2,0,5,2,0,1,1,1,0,1,1 1,0,12,1,0,7,2,0,1,1,1,0,1,0 0,0,3,2,2,12,3,0,1,1,1,1,1,0 0,0,0,3,0,8,2,0,1,1,1,1,1,1 1,0,5,2,0,5,2,4,1,1,1,1,1,0 0,0,6,2,2,5,3,0,0,1,1,2,1,0 0,0,5,2,2,2,5,4,1,1,1,1,1,0 1,2,13,3,0,4,2,0,1,1,1,0,1,1 1,4,9,1,0,4,2,0,1,1,1,0,1,0 0,0,3,2,0,10,2,0,1,1,1,1,1,0 0,1,3,2,2,1,3,0,1,1,1,1,1,0 2,0,7,1,4,3,3,0,0,1,1,2,1,0 2,0,3,2,0,9,2,0,1,1,1,1,1,0 0,0,6,2,0,5,2,0,1,1,1,0,1,0 2,0,0,3,1,3,3,0,0,1,1,2,1,0 1,0,3,2,0,2,0,4,0,1,1,1,1,0 0,0,0,3,0,3,2,0,1,1,1,0,1,1 1,3,1,2,0,8,2,1,1,1,1,0,1,1 1,0,3,2,2,10,3,0,1,1,1,0,1,0 1,2,1,2,0,3,2,0,1,1,1,1,1,1 2,0,3,2,0,7,2,0,1,1,1,1,1,0 1,0,1,2,2,1,3,4,1,1,1,0,1,0 2,1,0,3,0,4,0,0,0,1,1,0,1,1 0,0,12,1,2,1,1,0,1,1,1,0,1,0 1,0,5,2,0,3,2,0,1,1,1,0,1,1 1,0,0,3,0,4,2,0,1,1,1,1,1,1 1,4,3,2,0,12,0,4,0,1,1,1,1,0 2,2,0,3,1,3,3,0,0,1,1,0,1,0 1,0,8,0,0,7,2,0,1,1,1,0,1,0 0,4,0,3,2,5,3,0,0,1,1,2,1,0 0,0,12,1,0,1,4,0,1,1,1,1,1,0 0,0,0,3,0,4,2,4,1,1,1,1,1,1 0,0,3,2,0,5,2,0,1,1,1,1,1,1 1,5,1,2,1,5,1,0,0,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,1 0,0,7,1,2,1,4,0,1,1,1,0,1,0 1,0,1,2,1,7,5,0,0,1,1,1,1,0 0,0,1,2,2,3,1,0,0,1,1,0,1,0 2,0,0,3,0,5,2,0,1,1,1,2,1,1 0,0,14,0,0,1,2,0,1,1,1,0,1,0 0,0,1,2,2,5,1,0,0,1,1,2,1,0 0,0,3,2,2,0,4,4,0,1,1,2,1,0 0,0,2,1,2,2,1,0,1,1,1,2,1,0 1,3,3,2,0,8,2,0,1,1,1,1,1,1 1,4,1,2,1,8,1,0,1,1,1,1,1,1 0,0,0,3,2,5,3,0,1,1,1,0,1,0 0,0,3,2,2,6,1,0,1,1,1,0,1,0 3,0,8,0,0,3,2,0,1,1,1,2,1,1 2,0,0,3,1,5,3,0,0,1,1,2,1,0 2,1,10,3,0,10,2,0,1,1,1,2,1,0 1,4,5,2,0,4,2,0,1,1,1,0,1,0 2,0,1,2,0,4,2,0,1,1,1,0,1,1 0,1,2,1,1,1,3,0,1,1,1,1,1,0 0,0,3,2,2,3,1,2,0,1,1,0,1,0 2,0,3,2,0,3,2,0,1,1,1,1,1,1 1,1,1,2,0,9,2,0,1,1,1,1,1,1 1,0,3,2,2,6,3,0,1,1,1,0,1,1 0,0,1,2,2,10,3,0,1,1,1,1,1,0 1,0,3,2,1,0,3,0,1,1,1,0,1,1 2,5,3,2,4,8,3,0,0,1,1,0,1,0 0,0,6,2,0,8,0,0,0,1,1,0,1,0 0,0,2,1,2,6,1,0,1,1,1,2,1,0 2,0,7,1,0,1,2,0,1,1,1,0,1,0 1,0,12,1,0,10,2,0,1,1,1,1,1,0 0,0,3,2,2,2,4,0,0,1,1,2,1,0 0,0,10,3,0,5,2,1,1,1,1,1,1,1 0,4,1,2,3,8,5,4,0,1,1,0,1,0 0,2,3,2,0,4,2,0,1,1,1,0,1,1 0,1,3,2,0,10,2,0,1,1,1,0,1,0 1,4,0,3,0,5,2,0,1,1,1,0,1,1 0,0,3,2,0,1,2,0,1,1,1,0,1,0 2,0,2,1,0,1,2,0,1,1,1,0,1,1 0,0,9,1,2,1,1,0,1,1,1,2,1,0 0,0,2,1,2,2,1,0,1,1,1,0,1,0 0,0,6,2,2,5,3,0,1,1,1,1,1,0 0,0,3,2,0,3,2,0,1,1,1,2,1,0 1,1,1,2,0,1,2,0,1,1,1,0,1,0 2,0,1,2,0,7,2,0,1,1,1,0,1,0 0,0,1,2,2,8,3,0,0,1,1,0,1,0 0,0,6,2,0,9,2,0,1,1,1,2,1,0 0,4,6,2,1,5,5,4,0,1,1,0,1,0 1,0,3,2,1,10,3,0,1,1,1,0,1,0 1,0,1,2,1,8,5,0,0,1,1,2,1,0 0,0,0,3,2,6,4,0,0,1,1,0,1,0 1,0,3,2,0,0,2,0,1,1,1,1,1,1 1,0,8,0,0,7,2,0,1,1,1,1,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,4,3,0,8,0,0,0,1,1,2,1,1 1,1,4,3,0,5,2,0,1,1,1,1,1,1 0,0,3,2,2,6,3,4,1,1,1,2,1,0 2,0,0,3,0,3,2,0,1,1,1,0,1,0 2,3,0,3,0,4,2,4,1,1,1,1,1,0 0,0,3,2,2,2,4,0,0,1,1,2,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,0 0,0,3,2,2,6,1,0,1,1,1,2,1,0 0,0,1,2,2,5,4,0,1,1,1,2,1,0 1,0,5,2,2,4,3,0,1,1,1,1,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 1,0,3,2,0,1,2,0,1,1,1,1,1,1 0,3,1,2,2,8,3,4,0,1,1,1,1,0 1,4,3,2,4,4,5,0,0,1,1,0,1,0 0,0,2,1,0,1,2,0,1,1,1,0,1,0 2,0,10,3,0,5,2,0,1,1,1,1,1,0 0,0,13,3,0,5,2,0,1,1,1,1,1,1 1,0,10,3,0,5,2,0,1,1,1,1,1,1 2,0,5,2,0,4,2,0,1,1,1,0,1,1 1,0,14,0,0,7,2,0,1,1,1,1,1,0 1,0,13,3,0,5,2,0,1,1,1,2,1,0 2,0,3,2,0,3,2,0,1,1,1,0,1,1 0,0,1,2,0,7,2,0,1,1,1,0,1,0 1,2,10,3,0,4,2,0,1,1,1,1,1,1 1,4,7,1,0,2,0,0,0,1,1,2,1,0 0,0,0,3,0,5,2,0,1,1,1,0,1,1 2,0,6,2,2,9,3,0,1,1,1,1,1,0 1,0,2,1,1,2,5,0,0,1,1,0,1,0 2,4,3,2,0,1,2,0,1,1,1,1,1,0 1,0,3,2,0,4,2,4,1,1,1,0,1,1 0,0,3,2,0,4,2,0,1,1,1,0,1,0 1,0,0,3,2,4,3,1,1,1,1,0,1,0 2,3,3,2,0,10,2,4,1,1,1,0,1,0 1,4,1,2,0,12,2,4,1,1,1,0,1,1 1,0,12,1,3,6,5,0,0,1,1,0,1,0 0,0,3,2,6,7,2,4,1,1,1,0,1,0 1,0,10,3,1,4,3,0,0,1,1,1,1,0 0,0,1,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 1,0,3,2,0,8,2,0,1,1,1,0,1,0 1,3,0,3,0,5,2,0,1,1,1,1,1,1 0,2,0,3,2,4,3,0,1,1,1,1,1,0 0,0,2,1,2,2,1,4,1,1,1,2,1,0 0,0,2,1,2,1,3,0,0,1,1,0,1,0 0,1,3,2,0,9,2,0,1,1,1,1,1,0 0,0,2,1,3,4,5,0,0,1,1,2,1,0 0,0,0,3,2,4,1,0,0,1,1,2,1,0 0,0,1,2,0,8,2,0,1,1,1,0,1,0 1,0,0,3,0,5,2,0,1,1,1,0,1,1 1,0,0,3,3,4,3,0,1,1,1,2,1,0 1,1,0,3,0,4,2,0,1,1,1,1,1,0 1,4,1,2,0,5,2,4,1,1,1,0,1,1 1,0,0,3,0,5,2,1,1,1,1,1,1,1 0,0,3,2,0,2,2,4,1,1,1,2,1,0 0,0,10,3,2,5,3,0,0,1,1,0,1,0 0,1,1,2,2,1,1,0,1,1,1,2,1,0 0,0,3,2,2,0,3,0,0,1,1,1,1,0 0,4,10,3,1,5,5,0,0,1,1,1,1,0 1,0,3,2,1,2,3,0,0,1,1,0,1,0 1,0,3,2,0,1,2,2,1,1,1,0,1,0 1,0,1,2,2,8,1,2,0,1,1,0,1,0 0,0,5,2,2,0,1,0,1,1,1,1,1,0 1,0,12,1,0,10,2,0,1,1,1,0,1,1 0,0,0,3,0,1,2,1,1,1,1,1,1,0 0,0,1,2,2,8,1,0,0,1,1,2,1,0 0,0,1,2,2,3,1,0,1,1,1,0,1,0 1,1,3,2,0,9,2,0,1,1,1,1,1,0 1,0,0,3,0,1,2,0,1,1,1,1,1,1 1,0,3,2,0,7,2,0,1,1,1,0,1,1 0,0,2,1,0,6,1,4,1,1,1,2,1,0 1,1,3,2,1,4,5,0,0,1,1,1,1,1 1,1,0,3,0,3,2,0,1,1,1,0,1,1 1,0,3,2,2,3,3,0,0,1,1,1,1,1 0,0,8,0,2,11,4,0,0,1,1,0,1,0 0,5,0,3,5,6,3,0,0,1,1,2,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 2,0,11,0,0,7,2,4,1,1,1,0,1,0 0,0,1,2,2,3,3,0,1,1,1,2,1,0 2,0,3,2,1,3,3,0,0,1,1,2,1,0 0,0,10,3,2,8,3,0,0,1,1,0,1,0 0,2,1,2,0,7,2,0,1,1,1,0,1,0 2,0,0,3,1,4,3,0,0,1,1,0,1,0 0,0,11,0,2,2,4,0,1,1,1,0,1,0 1,0,3,2,2,7,3,0,0,1,1,0,1,0 0,0,1,2,2,8,1,0,1,1,1,1,1,0 0,0,3,2,2,5,1,0,0,1,1,2,1,0 0,0,1,2,2,2,3,0,1,1,1,2,1,0 0,4,3,2,0,12,2,0,1,1,1,0,1,1 0,0,0,3,2,8,3,0,0,1,1,0,1,0 0,0,3,2,2,2,4,2,1,1,1,0,1,0 1,0,3,2,1,1,3,0,1,1,1,0,1,0 1,1,1,2,0,7,2,0,1,1,1,2,1,0 1,1,0,3,0,5,2,0,1,1,1,1,1,0 1,5,1,2,0,12,2,0,1,1,1,0,1,0 1,0,3,2,0,6,2,0,1,1,1,0,1,0 1,3,6,2,0,5,0,0,0,1,1,1,1,1 0,0,1,2,2,0,1,0,0,1,1,2,1,0 1,1,0,3,1,9,3,0,1,1,1,1,1,0 1,0,3,2,4,8,4,4,0,1,1,0,1,0 0,1,4,3,0,5,0,0,0,1,1,1,1,1 0,0,0,3,2,0,1,0,0,1,1,0,1,0 1,4,10,3,0,5,2,0,1,1,1,0,1,1 0,0,1,2,2,3,4,0,1,1,1,0,1,0 1,0,11,0,0,2,2,0,1,1,1,1,1,0 0,4,3,2,0,2,2,0,1,1,1,0,1,0 0,0,1,2,0,3,2,0,1,1,1,1,1,0 0,0,3,2,0,1,2,0,1,1,1,1,1,1 1,3,1,2,5,4,3,0,0,1,1,0,1,0 1,2,4,3,0,5,2,0,1,1,1,1,1,1 1,0,12,1,0,7,2,0,1,1,1,0,1,1 0,3,1,2,2,8,3,4,0,1,1,1,1,0 1,0,0,3,0,5,0,0,0,1,1,2,1,1 0,0,1,2,2,4,3,0,1,1,1,0,1,0 1,0,3,2,1,2,3,0,0,1,1,2,1,0 1,0,13,3,1,5,3,1,1,1,1,0,1,1 1,0,10,3,0,3,2,0,1,1,1,1,1,1 1,0,3,2,0,6,0,0,0,1,1,1,1,1 0,0,10,3,0,3,0,1,0,1,1,2,1,1 0,0,12,1,2,6,1,0,1,1,1,2,1,0 0,0,1,2,0,0,2,0,1,1,1,0,1,1 1,0,10,3,0,5,0,0,0,1,1,2,1,1 1,0,1,2,2,2,3,0,1,1,1,1,1,0 2,4,12,1,0,8,0,0,0,1,1,2,1,0 2,3,0,3,0,5,2,0,1,1,1,0,1,1 0,0,10,3,0,7,2,0,1,1,1,0,1,1 1,0,0,3,0,8,2,0,1,1,1,0,1,1 0,0,3,2,2,6,4,4,1,1,1,0,1,0 0,0,0,3,0,3,3,1,0,1,1,1,1,1 1,0,1,2,0,3,2,0,1,1,1,0,1,1 0,0,3,2,2,1,5,0,1,1,1,0,1,0 0,0,2,1,2,2,1,0,0,1,1,2,1,0 0,0,1,2,0,2,0,1,0,1,1,0,1,0 2,0,3,2,1,8,5,0,0,1,1,0,1,0 0,0,3,2,0,7,2,2,1,1,1,0,1,0 2,0,8,0,1,7,5,0,0,1,1,0,1,0 0,0,1,2,2,2,3,0,1,1,1,2,1,0 0,0,3,2,2,4,3,0,1,1,1,0,1,0 0,0,2,1,2,6,1,0,1,1,1,1,1,0 0,0,3,2,0,6,4,0,1,1,1,0,1,0 0,0,3,2,2,6,3,0,1,1,1,0,1,0 1,0,9,1,0,10,2,4,1,1,1,0,1,0 1,4,10,3,0,4,2,4,1,1,1,1,1,1 0,0,3,2,1,3,3,0,0,1,1,2,1,0 1,0,10,3,0,5,0,0,0,1,1,0,1,1 1,1,3,2,0,9,2,0,1,1,1,1,1,0 0,0,10,3,0,4,2,0,1,1,1,1,1,1 1,2,0,3,0,3,2,0,1,1,1,1,1,1 2,0,3,2,0,12,2,0,1,1,1,0,1,0 2,1,0,3,0,3,2,0,1,1,1,2,1,0 0,0,0,3,2,3,3,0,1,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,1 1,0,10,3,0,4,2,0,1,1,1,2,1,0 0,5,1,2,2,8,1,0,0,1,1,2,1,0 1,2,3,2,0,1,2,0,1,1,1,1,1,0 0,0,0,3,0,0,2,0,1,1,1,0,1,1 1,0,10,3,0,4,2,0,1,1,1,1,1,1 0,0,1,2,2,2,1,0,0,1,1,2,1,0 1,4,0,3,2,5,3,0,0,1,1,1,1,0 2,0,3,2,1,0,3,0,0,1,1,0,1,0 1,3,0,3,0,5,2,0,1,1,1,0,1,0 1,0,10,3,0,8,2,0,1,1,1,1,1,0 0,0,3,2,2,8,3,0,1,1,1,0,1,0 1,1,1,2,0,3,2,0,1,1,1,2,1,0 2,3,3,2,1,8,3,0,0,1,1,0,1,0 2,0,10,3,4,4,3,0,0,1,1,2,1,0 3,0,3,2,4,4,3,0,0,1,1,0,1,1 0,0,12,1,2,6,4,0,1,1,1,0,1,0 0,4,3,2,0,6,2,4,1,1,1,0,1,0 0,0,6,2,2,1,1,0,1,1,1,0,1,0 0,0,7,1,0,10,2,0,1,1,1,1,1,0 0,0,3,2,2,8,1,0,0,1,1,0,1,0 1,0,14,0,3,2,5,4,0,1,1,0,1,0 1,0,0,3,0,5,2,0,1,1,1,0,1,1 0,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,1,2,0,10,2,4,1,1,1,1,1,1 0,0,3,2,2,7,1,4,0,1,1,2,1,0 2,1,0,3,0,4,2,0,1,1,1,1,1,1 2,1,3,2,0,5,2,0,1,1,1,1,1,1 1,0,3,2,0,2,4,4,0,1,1,2,1,0 0,0,3,2,2,2,3,0,0,1,1,2,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 2,0,3,2,1,8,3,0,0,1,1,0,1,0 0,0,12,1,1,6,5,0,0,1,1,1,1,0 1,0,0,3,2,6,3,0,1,1,1,0,1,0 0,0,0,3,2,8,3,1,0,1,1,0,1,0 0,3,3,2,2,13,1,0,1,1,1,0,1,0 3,0,4,3,0,5,2,0,1,1,1,2,1,1 1,3,0,3,0,8,2,0,1,1,1,0,1,1 1,0,3,2,0,6,2,0,1,1,1,2,1,0 0,0,5,2,0,1,2,0,1,1,1,1,1,0 0,0,3,2,2,8,1,0,0,1,1,2,1,0 0,0,3,2,1,1,3,0,1,1,1,1,1,0 2,0,2,1,0,12,2,0,1,1,1,2,1,0 1,0,0,3,2,4,1,0,1,1,1,0,1,0 0,0,0,3,0,5,2,0,1,1,1,0,1,1 0,0,3,2,2,4,3,0,1,1,1,0,1,0 1,5,10,3,0,4,2,0,1,1,1,1,1,1 1,0,3,2,2,5,3,0,1,1,1,1,1,0 2,3,0,3,4,5,5,2,0,1,1,0,1,0 2,0,7,1,4,7,3,0,0,1,1,2,1,0 0,1,3,2,1,2,5,0,0,1,1,0,1,0 0,4,10,3,1,5,3,3,0,1,1,0,1,0 0,0,5,2,2,3,1,0,0,1,1,2,1,0 1,0,3,2,1,6,3,0,1,1,1,0,1,0 1,4,1,2,1,1,3,0,1,1,1,0,1,0 1,0,8,0,0,3,0,0,0,1,1,2,1,0 0,0,3,2,3,2,5,0,0,1,1,0,1,0 0,0,0,3,3,3,3,0,1,1,1,1,1,0 0,0,0,3,0,3,2,0,1,1,1,1,1,0 0,0,1,2,0,8,2,0,1,1,1,1,1,1 1,3,3,2,0,8,0,4,0,1,1,0,1,1 0,0,1,2,0,7,2,0,1,1,1,0,1,0 0,0,1,2,0,1,2,0,1,1,1,1,1,0 0,0,14,0,0,7,2,0,1,1,1,0,1,0 0,4,0,3,1,5,5,0,0,1,1,0,1,0 0,0,1,2,2,6,1,0,1,1,1,2,1,0 0,0,3,2,0,3,2,0,1,1,1,0,1,0 2,0,1,2,1,2,3,4,0,1,1,0,1,0 0,0,3,2,2,3,1,0,0,1,1,0,1,0 0,5,1,2,2,2,1,4,1,1,1,2,1,0 0,0,2,1,1,7,3,0,1,1,1,0,1,0 1,0,3,2,0,2,0,0,0,1,1,2,1,0 1,0,0,3,0,4,2,0,1,1,1,0,1,1 1,0,3,2,2,8,5,4,0,1,1,0,1,0 0,0,3,2,2,5,3,0,1,1,1,2,1,0 1,0,7,1,0,7,2,0,1,1,1,0,1,0 2,0,3,2,1,1,3,0,0,1,1,0,1,0 1,2,0,3,0,1,2,0,1,1,1,2,1,1 0,0,3,2,2,3,1,0,0,1,1,2,1,0 0,0,1,2,1,8,5,0,1,1,1,0,1,0 0,0,12,1,5,2,4,0,1,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,10,3,1,4,3,0,0,1,1,0,1,0 2,4,1,2,0,8,0,4,0,1,1,1,1,1 1,1,3,2,0,8,2,4,1,1,1,2,1,0 0,0,3,2,2,2,5,0,0,1,1,0,1,0 1,0,3,2,1,8,5,0,0,1,1,0,1,0 1,1,3,2,5,1,3,0,0,1,1,0,1,0 2,4,8,0,0,1,2,0,1,1,1,0,1,0 0,0,3,2,0,11,4,0,0,1,1,2,1,0 0,0,1,2,2,3,1,0,1,1,1,2,1,0 0,0,1,2,2,8,3,0,1,1,1,0,1,0 2,0,3,2,3,2,3,0,0,1,1,1,1,0 1,1,0,3,1,2,5,0,0,1,1,1,1,0 0,0,0,3,0,3,2,0,1,1,1,0,1,1 1,0,14,0,0,1,2,0,1,1,1,1,1,0 1,0,9,1,3,10,3,4,1,1,1,0,1,0 0,0,1,2,0,8,2,0,1,1,1,0,1,0 1,0,1,2,2,2,3,0,1,1,1,0,1,0 0,0,0,3,0,1,0,0,0,1,1,0,1,1 1,0,1,2,1,4,3,0,0,1,1,0,1,1 0,0,8,0,0,8,2,0,1,1,1,0,1,0 1,3,1,2,1,8,5,4,1,1,1,0,1,0 2,0,1,2,0,2,2,0,1,1,1,1,1,1 1,0,1,2,0,11,2,0,1,1,1,2,1,0 0,0,1,2,2,2,3,0,1,1,1,2,1,0 1,4,0,3,2,5,3,4,0,1,1,0,1,0 0,5,0,3,2,8,3,0,0,1,1,0,1,0 0,2,5,2,0,1,2,0,1,1,1,1,1,1 0,0,1,2,2,1,3,0,1,1,1,0,1,0 0,0,1,2,2,7,1,0,1,1,1,1,1,1 0,0,3,2,2,7,3,0,1,1,1,0,1,0 0,0,1,2,1,8,3,0,0,1,1,0,1,0 2,3,0,3,5,4,3,4,1,1,1,0,1,1 1,0,3,2,1,4,5,0,0,1,1,2,1,0 1,0,0,3,0,3,2,0,1,1,1,0,1,1 1,5,0,3,0,8,2,3,1,1,1,0,1,1 2,0,7,1,3,2,5,4,0,1,1,0,1,0 1,0,5,2,0,12,2,0,1,1,1,1,1,0 2,1,3,2,0,4,0,0,0,1,1,0,1,0 1,0,4,3,1,5,5,0,0,1,1,1,1,1 0,4,3,2,2,12,1,0,0,1,1,2,1,0 0,0,3,2,0,1,2,0,1,1,1,2,1,0 1,0,3,2,0,3,2,0,1,1,1,1,1,0 0,0,6,2,2,0,1,4,1,1,1,0,1,0 2,0,1,2,4,3,5,0,0,1,1,2,1,0 0,0,1,2,0,3,2,0,1,1,1,0,1,1 2,0,1,2,0,3,2,0,1,1,1,1,1,1 1,2,4,3,0,5,2,0,1,1,1,1,1,1 1,0,3,2,0,10,2,4,1,1,1,0,1,0 2,0,1,2,4,7,3,0,0,1,1,2,1,0 1,0,8,0,0,6,2,4,1,1,1,0,1,0 0,0,0,3,0,3,2,0,1,1,1,0,1,1 2,3,3,2,0,8,2,0,1,1,1,1,1,1 0,0,3,2,0,3,2,0,1,1,1,1,1,1 2,1,3,2,0,1,2,0,1,1,1,0,1,0 0,0,6,2,2,1,1,0,1,1,1,0,1,0 0,5,3,2,2,2,1,0,0,1,1,2,1,0 1,1,3,2,2,4,3,4,1,1,1,1,1,0 2,4,3,2,0,1,2,0,1,1,1,0,1,0 0,0,0,3,2,8,1,0,0,1,1,2,1,0 1,0,15,0,2,7,3,0,1,1,1,2,1,0 1,0,0,3,0,1,2,0,1,1,1,1,1,1 0,0,3,2,2,6,5,0,1,1,1,0,1,0 2,4,3,2,0,6,2,1,1,1,1,1,1,1 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,1 0,0,3,2,1,0,5,2,0,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,1 1,0,3,2,1,6,5,0,0,1,1,1,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,1 1,1,0,3,1,5,3,0,1,1,1,2,1,1 1,0,0,3,2,0,3,0,1,1,1,2,1,1 1,1,15,0,0,10,2,4,1,1,1,0,1,0 1,0,3,2,0,10,2,4,1,1,1,1,1,1 0,0,0,3,2,5,3,0,1,1,1,0,1,1 1,0,0,3,5,4,3,0,0,1,1,1,1,1 1,0,1,2,2,4,3,0,1,1,1,0,1,0 0,0,1,2,2,4,3,0,0,1,1,2,1,0 2,0,7,1,1,8,4,0,0,1,1,2,1,0 1,0,0,3,0,4,2,0,1,1,1,0,1,1 1,4,3,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,0,10,2,4,1,1,1,2,1,0 2,0,3,2,1,12,1,0,1,1,1,2,1,0 1,0,3,2,1,3,3,0,0,1,1,0,1,0 1,0,3,2,0,3,2,0,1,1,1,1,1,0 0,0,3,2,0,3,2,0,1,1,1,0,1,1 1,0,1,2,3,1,5,0,0,1,1,1,1,0 0,0,1,2,0,4,2,0,1,1,1,0,1,1 0,0,1,2,2,8,1,0,1,1,1,2,1,0 1,0,9,1,3,7,5,4,1,1,1,0,1,0 0,0,0,3,2,3,1,0,1,1,1,1,1,0 0,0,6,2,0,1,2,0,1,1,1,0,1,0 3,4,3,2,0,2,2,0,1,1,1,0,1,0 1,0,3,2,2,8,3,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 2,4,6,2,4,8,3,0,0,1,1,0,1,0 0,2,7,1,2,1,5,0,1,1,1,0,1,0 1,5,1,2,3,5,5,0,0,1,1,2,1,0 0,0,5,2,0,8,0,0,0,1,1,0,1,0 2,4,10,3,2,4,3,2,0,1,1,0,1,0 2,0,3,2,0,8,0,0,0,1,1,1,1,0 1,2,10,3,2,4,3,0,1,1,1,1,1,1 1,1,4,3,0,5,2,0,1,1,1,0,1,1 0,0,1,2,0,6,2,0,1,1,1,0,1,1 2,0,1,2,0,10,2,0,1,1,1,1,1,0 0,5,0,3,0,12,2,0,1,1,1,0,1,0 1,4,1,2,2,12,3,0,1,1,1,1,1,0 1,0,0,3,0,3,2,0,1,1,1,0,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,0 0,2,3,2,2,7,3,0,1,1,1,1,1,0 1,0,1,2,0,7,2,0,1,1,1,0,1,1 0,0,2,1,3,2,5,4,1,1,1,0,1,0 1,4,10,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 2,1,3,2,2,3,3,0,1,1,1,2,1,1 1,0,1,2,1,0,3,0,0,1,1,2,1,0 0,0,6,2,2,4,3,0,1,1,1,1,1,0 0,0,1,2,0,1,2,0,1,1,1,1,1,0 1,0,10,3,0,3,2,0,1,1,1,0,1,1 2,0,8,0,1,8,3,0,0,1,1,0,1,0 0,0,3,2,2,10,5,0,1,1,1,0,1,0 1,0,1,2,0,3,0,0,0,1,1,0,1,0 1,0,1,2,0,4,2,0,1,1,1,1,1,1 0,0,3,2,2,10,1,0,1,1,1,2,1,0 0,0,1,2,2,1,1,0,1,1,1,0,1,0 2,0,1,2,0,3,2,0,1,1,1,1,1,1 1,0,5,2,1,8,5,4,0,1,1,0,1,0 0,5,1,2,2,5,1,0,1,1,1,0,1,0 0,0,1,2,2,8,1,0,0,1,1,0,1,0 0,0,3,2,2,2,3,0,1,1,1,1,1,0 0,5,6,2,1,12,3,0,1,1,1,0,1,0 1,0,0,3,0,3,2,0,1,1,1,0,1,1 1,4,3,2,2,2,3,4,1,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,3,2,4,4,0,1,1,0,1,0 1,0,10,3,0,5,0,0,0,1,1,0,1,1 1,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,1,2,2,8,3,0,1,1,1,0,1,0 0,0,3,2,2,1,1,0,1,1,1,2,1,0 1,0,0,3,2,3,4,0,0,1,1,0,1,0 0,0,6,2,0,0,2,0,1,1,1,0,1,0 0,0,9,1,2,3,4,0,0,1,1,2,1,0 1,0,3,2,1,3,5,0,1,1,1,2,1,0 0,5,0,3,3,4,5,4,0,1,1,2,1,0 1,0,1,2,2,6,5,4,0,1,1,1,1,0 1,0,1,2,0,1,2,0,1,1,1,2,1,1 0,0,14,0,0,1,2,0,1,1,1,0,1,0 0,0,4,3,2,5,3,0,0,1,1,0,1,0 0,0,1,2,0,12,2,0,1,1,1,0,1,0 1,2,0,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,2,3,1,1,1,1,1,2,1,0 1,5,3,2,0,4,0,0,0,1,1,0,1,1 1,4,3,2,1,10,3,0,1,1,1,0,1,0 2,0,3,2,0,1,2,0,1,1,1,2,1,1 1,0,1,2,0,3,2,0,1,1,1,1,1,0 0,0,3,2,2,8,3,4,1,1,1,0,1,0 1,0,1,2,0,10,2,0,1,1,1,1,1,1 0,0,3,2,0,1,2,0,1,1,1,1,1,0 0,0,3,2,2,10,3,0,1,1,1,0,1,0 1,0,3,2,0,5,2,0,1,1,1,1,1,1 0,0,3,2,2,6,3,0,1,1,1,0,1,0 1,0,11,0,0,1,2,3,1,1,1,0,1,0 0,0,3,2,2,0,3,0,1,1,1,1,1,0 1,1,0,3,0,3,2,0,1,1,1,1,1,1 0,0,1,2,2,8,1,1,0,1,1,0,1,0 0,0,1,2,2,0,3,0,0,1,1,0,1,0 2,0,3,2,1,6,5,0,1,1,1,0,1,0 1,0,7,1,0,1,2,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 2,4,0,3,0,4,2,0,1,1,1,0,1,1 1,0,6,2,0,0,2,0,1,1,1,1,1,0 0,0,3,2,1,2,5,0,0,1,1,2,1,0 0,0,3,2,0,1,2,0,1,1,1,1,1,1 0,0,2,1,2,8,1,0,1,1,1,2,1,0 0,0,5,2,0,5,0,0,0,1,1,0,1,1 0,1,3,2,2,3,1,0,1,1,1,0,1,0 0,1,12,1,5,1,1,0,1,1,1,2,1,0 0,4,3,2,2,1,3,2,1,1,1,0,1,0 1,0,3,2,2,10,3,4,1,1,1,1,1,0 2,1,3,2,0,3,2,0,1,1,1,2,1,0 0,1,6,2,0,1,2,0,1,1,1,1,1,0 1,0,3,2,0,6,2,0,1,1,1,1,1,0 2,0,3,2,0,8,0,0,0,1,1,0,1,1 2,4,0,3,0,4,2,0,1,1,1,0,1,1 0,0,3,2,2,4,1,0,0,1,1,2,1,0 1,0,1,2,0,0,2,0,1,1,1,0,1,1 0,0,7,1,2,9,4,0,1,1,1,0,1,0 2,2,0,3,0,5,2,0,1,1,1,2,1,1 1,4,3,2,0,2,2,4,1,1,1,0,1,0 0,5,1,2,2,2,1,0,0,1,1,2,1,0 0,0,1,2,0,3,2,0,1,1,1,1,1,1 1,0,1,2,1,1,1,0,1,1,1,0,1,0 1,0,3,2,2,9,3,0,1,1,1,1,1,0 0,0,6,2,1,8,3,0,0,1,1,2,1,0 1,1,3,2,0,4,2,0,1,1,1,1,1,0 0,0,0,3,2,3,3,0,0,1,1,2,1,1 2,1,0,3,0,3,2,0,1,1,1,2,1,0 1,1,3,2,0,10,2,0,1,1,1,1,1,1 1,0,3,2,1,3,3,0,0,1,1,0,1,0 1,0,0,3,0,5,2,0,1,1,1,0,1,1 0,0,5,2,0,2,2,0,1,1,1,2,1,0 0,1,3,2,0,10,2,0,1,1,1,1,1,0 1,0,1,2,0,10,2,3,1,1,1,1,1,1 1,4,10,3,0,5,2,0,1,1,1,0,1,1 0,0,0,3,2,8,1,0,0,1,1,2,1,0 1,0,6,2,1,2,3,0,0,1,1,2,1,0 0,0,3,2,1,8,5,4,1,1,1,0,1,0 0,0,3,2,2,1,3,0,1,1,1,1,1,0 0,0,0,3,2,4,3,0,1,1,1,2,1,0 1,1,10,3,0,4,2,0,1,1,1,2,1,1 1,0,4,3,1,5,5,0,0,1,1,1,1,0 1,0,0,3,0,3,2,0,1,1,1,1,1,1 1,0,3,2,0,10,2,0,1,1,1,1,1,0 1,0,3,2,1,1,5,0,1,1,1,1,1,0 2,0,1,2,1,8,3,0,0,1,1,0,1,0 1,0,0,3,0,5,2,0,1,1,1,0,1,1 2,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,8,0,3,7,5,4,0,1,1,0,1,0 1,0,0,3,2,5,3,1,1,1,1,1,1,1 0,0,3,2,0,1,2,0,1,1,1,1,1,0 1,0,0,3,0,4,2,0,1,1,1,2,1,1 0,0,3,2,2,2,3,4,0,1,1,2,1,0 0,0,1,2,0,4,0,0,0,1,1,1,1,0 0,0,1,2,2,6,1,0,1,1,1,0,1,0 1,0,3,2,4,0,3,0,1,1,1,2,1,1 0,0,7,1,2,3,3,0,0,1,1,2,1,0 1,5,10,3,1,4,5,0,1,1,1,1,1,1 1,4,0,3,0,5,2,0,1,1,1,1,1,1 1,0,3,2,1,6,3,0,1,1,1,0,1,0 1,1,5,2,2,10,3,0,1,1,1,1,1,0 0,0,2,1,2,2,1,0,1,1,1,2,1,0 1,0,0,3,1,3,3,0,0,1,1,0,1,0 1,4,10,3,0,5,2,0,1,1,1,0,1,1 1,0,3,2,3,1,5,0,0,1,1,0,1,0 0,0,2,1,2,3,5,2,1,1,1,1,1,0 0,0,1,2,2,4,3,0,1,1,1,0,1,0 2,0,10,3,0,4,2,0,1,1,1,0,1,0 0,0,1,2,2,2,3,0,0,1,1,0,1,0 2,2,3,2,1,3,3,0,1,1,1,1,1,0 0,0,1,2,2,2,3,0,0,1,1,2,1,0 0,0,3,2,2,10,3,0,1,1,1,1,1,0 0,0,10,3,1,4,3,0,1,1,1,1,1,1 1,4,10,3,2,5,3,4,0,1,1,2,1,0 1,0,12,1,3,2,5,0,0,1,1,0,1,0 0,3,4,3,2,5,3,0,1,1,1,1,1,1 2,0,7,1,0,12,2,0,1,1,1,0,1,0 0,0,3,2,2,1,1,0,1,1,1,0,1,0 1,1,0,3,0,1,2,0,1,1,1,1,1,1 0,0,1,2,0,1,2,0,1,1,1,0,1,0 2,0,8,0,3,7,3,0,1,1,1,0,1,0 0,0,1,2,0,8,2,0,1,1,1,1,1,0 0,0,3,2,2,4,1,4,0,1,1,0,1,0 0,0,1,2,2,8,1,0,0,1,1,2,1,0 1,0,1,2,3,3,5,0,0,1,1,0,1,0 1,0,0,3,1,5,3,0,0,1,1,1,1,1 0,1,1,2,0,3,2,0,1,1,1,0,1,0 1,5,1,2,2,0,5,4,0,1,1,1,1,0 1,0,1,2,0,4,2,0,1,1,1,0,1,0 1,0,1,2,0,1,2,4,1,1,1,1,1,1 0,0,1,2,2,8,1,0,0,1,1,2,1,0 1,0,1,2,2,8,4,0,0,1,1,0,1,0 1,0,2,1,0,7,2,0,1,1,1,1,1,1 2,1,4,3,1,0,3,0,1,1,1,0,1,0 1,0,2,1,0,1,2,0,1,1,1,1,1,0 1,0,6,2,2,8,1,0,1,1,1,0,1,1 0,0,3,2,2,2,1,4,1,1,1,0,1,0 0,4,3,2,0,10,2,0,1,1,1,0,1,0 1,4,0,3,1,5,5,0,0,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 1,5,0,3,0,5,0,4,0,1,1,0,1,0 1,0,0,3,0,5,2,0,1,1,1,0,1,1 1,0,3,2,1,1,3,0,1,1,1,0,1,0 1,2,1,2,0,4,4,1,0,1,1,1,1,0 2,0,3,2,3,7,5,4,0,1,1,0,1,0 1,0,8,0,3,2,3,0,0,1,1,2,1,0 0,0,1,2,2,8,1,0,0,1,1,2,1,0 1,0,6,2,1,0,3,0,0,1,1,0,1,0 1,0,2,1,0,3,2,0,1,1,1,1,1,0 2,5,3,2,2,0,1,4,0,1,1,0,1,0 1,0,6,2,0,6,2,0,1,1,1,0,1,0 1,0,3,2,1,8,3,0,0,1,1,1,1,0 0,3,9,1,0,1,2,0,1,1,1,0,1,0 1,5,0,3,0,5,0,4,0,1,1,0,1,1 1,5,3,2,0,2,0,0,0,1,1,2,1,0 0,0,1,2,2,8,3,0,0,1,1,1,1,0 0,0,3,2,2,6,3,0,1,1,1,0,1,0 2,0,3,2,5,10,3,0,1,1,1,0,1,0 0,1,1,2,0,1,2,0,1,1,1,1,1,1 1,0,2,1,0,2,2,0,1,1,1,2,1,0 1,2,0,3,0,3,2,0,1,1,1,0,1,1 0,0,0,3,2,11,3,0,0,1,1,1,1,0 2,0,3,2,1,1,3,0,1,1,1,0,1,0 1,0,0,3,5,4,3,0,1,1,1,0,1,1 1,0,3,2,1,4,5,0,0,1,1,1,1,1 0,0,0,3,0,10,2,0,1,1,1,0,1,0 2,0,3,2,1,2,5,0,0,1,1,2,1,0 0,1,10,3,2,5,1,0,1,1,1,1,1,0 1,0,3,2,0,2,2,0,1,1,1,2,1,0 1,0,0,3,0,10,2,4,1,1,1,1,1,1 2,0,3,2,1,8,5,0,0,1,1,2,1,0 1,1,2,1,0,10,2,4,1,1,1,1,1,0 1,0,12,1,0,10,2,0,1,1,1,0,1,0 2,0,1,2,0,3,2,0,1,1,1,0,1,0 1,0,1,2,2,0,3,0,1,1,1,1,1,0 0,4,1,2,2,8,1,2,0,1,1,0,1,0 0,0,0,3,2,3,1,0,1,1,1,0,1,1 1,6,3,2,0,4,2,0,1,1,1,0,1,0 1,1,0,3,0,3,2,0,1,1,1,0,1,1 1,4,0,3,0,5,2,0,1,1,1,0,1,1 0,0,9,1,2,7,1,0,0,1,1,0,1,0 1,4,3,2,0,10,2,0,1,1,1,0,1,1 1,0,6,2,0,10,2,0,1,1,1,1,1,0 0,0,3,2,3,10,1,0,1,1,1,2,1,0 1,0,6,2,0,1,2,0,1,1,1,0,1,0 1,4,3,2,0,4,2,0,1,1,1,0,1,1 1,1,3,2,0,1,2,0,1,1,1,1,1,0 0,0,3,2,2,8,1,0,0,1,1,2,1,0 1,4,10,3,2,5,3,0,1,1,1,1,1,0 1,2,3,2,0,4,2,0,1,1,1,1,1,1 0,3,6,2,0,8,2,0,1,1,1,1,1,1 0,0,5,2,0,5,2,0,1,1,1,0,1,0 0,0,0,3,2,5,1,0,0,1,1,0,1,0 0,0,3,2,2,2,1,0,0,1,1,0,1,0 0,0,0,3,2,4,3,0,0,1,1,0,1,0 0,0,1,2,2,4,3,0,0,1,1,1,1,0 2,0,0,3,0,4,2,0,1,1,1,0,1,1 1,3,0,3,2,0,1,0,1,1,1,0,1,0 0,0,3,2,2,1,4,4,1,1,1,2,1,0 1,1,6,2,0,3,2,0,1,1,1,1,1,1 0,0,3,2,2,3,1,0,0,1,1,2,1,1 2,1,0,3,2,4,3,0,1,1,1,2,1,0 0,0,1,2,2,8,1,0,1,1,1,0,1,0 0,0,2,1,0,1,2,0,1,1,1,0,1,0 0,0,12,1,2,1,3,0,1,1,1,1,1,0 1,0,1,2,0,3,2,0,1,1,1,1,1,0 0,0,2,1,2,2,1,0,1,1,1,2,1,0 1,0,1,2,0,3,2,0,1,1,1,1,1,1 1,0,14,0,1,7,5,0,1,1,1,1,1,0 1,0,6,2,0,1,2,0,1,1,1,0,1,1 1,0,14,0,1,3,4,0,0,1,1,2,1,0 0,0,3,2,2,7,5,0,0,1,1,0,1,0 1,5,5,2,0,0,2,0,1,1,1,0,1,0 0,0,1,2,1,4,5,0,1,1,1,1,1,1 0,0,10,3,2,3,3,0,1,1,1,0,1,0 2,0,0,3,0,1,2,4,1,1,1,0,1,0 0,0,3,2,0,8,0,0,0,1,1,0,1,0 0,0,3,2,0,7,2,0,1,1,1,1,1,1 1,0,3,2,0,7,2,0,1,1,1,1,1,1 1,0,0,3,2,4,3,0,1,1,1,1,1,0 2,0,7,1,1,10,3,0,1,1,1,1,1,0 0,0,0,3,2,0,1,0,0,1,1,0,1,0 1,0,1,2,0,10,2,0,1,1,1,0,1,1 1,1,0,3,0,5,2,0,1,1,1,1,1,0 0,0,3,2,3,2,1,0,0,1,1,0,1,0 1,1,7,1,0,10,2,0,1,1,1,1,1,1 1,0,3,2,0,6,2,0,1,1,1,1,1,1 2,0,13,3,3,11,5,0,0,1,1,2,1,0 0,0,3,2,0,8,0,0,0,1,1,0,1,0 0,0,0,3,2,5,1,0,0,1,1,0,1,1 0,0,3,2,2,6,1,0,1,1,1,0,1,0 1,5,6,2,0,5,0,1,0,1,1,0,1,1 1,0,5,2,2,5,3,0,0,1,1,0,1,0 2,4,1,2,4,4,3,0,0,1,1,0,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 1,1,6,2,0,9,2,0,1,1,1,1,1,1 1,5,3,2,1,5,1,0,1,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,2,1,1,0,1,1,1,0,1,0 2,1,13,3,0,5,2,0,1,1,1,1,1,1 0,0,0,3,0,10,2,0,1,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,0 0,0,6,2,2,0,3,0,0,1,1,0,1,0 0,1,6,2,2,9,1,0,1,1,1,1,1,1 1,3,0,3,0,12,2,0,1,1,1,0,1,1 3,1,13,3,0,5,2,0,1,1,1,2,1,1 0,0,12,1,2,9,3,4,1,1,1,2,1,0 0,0,3,2,2,12,3,0,1,1,1,0,1,0 1,0,1,2,0,5,2,0,1,1,1,0,1,1 1,0,3,2,1,4,3,0,0,1,1,0,1,0 0,5,0,3,2,8,1,1,0,1,1,1,1,0 3,1,13,3,0,4,2,0,1,1,1,2,1,0 1,5,1,2,2,12,3,0,0,1,1,2,1,0 3,0,0,3,1,3,5,0,0,1,1,2,1,0 0,1,1,2,3,5,5,4,0,1,1,0,1,0 0,0,0,3,0,3,2,0,1,1,1,0,1,0 0,0,3,2,2,6,3,0,1,1,1,1,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,0,1,2,0,1,1,1,1,1,1 0,0,2,1,0,6,2,0,1,1,1,0,1,0 1,0,0,3,0,6,2,0,1,1,1,1,1,0 0,0,1,2,0,3,2,0,1,1,1,0,1,0 0,0,3,2,1,8,3,0,0,1,1,0,1,0 0,0,1,2,1,3,1,0,0,1,1,2,1,0 1,1,6,2,0,3,2,0,1,1,1,0,1,0 0,0,1,2,2,8,4,0,0,1,1,0,1,0 1,0,0,3,2,3,3,0,0,1,1,1,1,1 2,0,0,3,4,4,4,0,0,1,1,0,1,0 0,4,1,2,2,4,1,0,0,1,1,2,1,0 1,0,12,1,0,1,2,0,1,1,1,1,1,0 1,0,6,2,3,2,3,0,0,1,1,2,1,0 1,0,3,2,2,8,3,0,1,1,1,0,1,0 0,0,3,2,2,2,3,0,0,1,1,1,1,0 2,2,3,2,0,8,0,0,0,1,1,2,1,0 0,0,3,2,2,10,3,0,1,1,1,1,1,0 0,0,3,2,0,4,2,0,1,1,1,1,1,1 0,0,3,2,2,8,1,0,1,1,1,0,1,0 0,0,1,2,2,2,3,0,0,1,1,2,1,0 0,0,1,2,2,7,1,0,0,1,1,2,1,0 0,0,8,0,2,7,3,0,1,1,1,0,1,0 0,0,3,2,2,4,3,0,0,1,1,1,1,0 3,0,1,2,1,3,3,0,0,1,1,2,1,1 2,1,7,1,0,1,0,2,0,1,1,2,1,0 3,0,1,2,2,2,1,0,1,1,1,2,1,0 0,0,3,2,0,1,0,4,0,1,1,1,1,0 0,0,3,2,2,1,1,4,0,1,1,0,1,0 0,4,3,2,2,8,3,0,0,1,1,2,1,0 0,0,0,3,2,3,5,0,0,1,1,1,1,0 1,4,1,2,0,0,2,4,1,1,1,0,1,0 0,0,10,3,2,5,3,0,0,1,1,0,1,1 1,5,3,2,0,4,2,0,1,1,1,0,1,1 0,0,3,2,2,3,5,0,0,1,1,1,1,0 0,0,3,2,2,12,5,0,1,1,1,2,1,0 1,0,1,2,0,5,2,0,1,1,1,0,1,1 2,0,10,3,4,3,5,0,0,1,1,2,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,1 1,0,7,1,0,10,2,0,1,1,1,1,1,0 0,0,3,2,0,3,2,0,1,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 1,1,3,2,0,1,2,4,1,1,1,0,1,0 2,0,10,3,0,5,2,0,1,1,1,0,1,1 2,1,10,3,0,3,2,0,1,1,1,1,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,5,10,3,0,5,2,0,1,1,1,0,1,1 0,0,3,2,2,3,3,0,0,1,1,0,1,0 1,0,5,2,0,4,0,0,0,1,1,1,1,1 1,0,7,1,1,2,5,0,0,1,1,0,1,0 0,0,3,2,0,3,2,0,1,1,1,1,1,0 0,0,3,2,2,6,1,0,1,1,1,2,1,0 2,0,3,2,0,3,2,0,1,1,1,1,1,0 1,0,3,2,1,3,3,0,1,1,1,1,1,1 2,4,10,3,0,5,2,0,1,1,1,0,1,1 1,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,10,3,1,5,3,0,1,1,1,1,1,1 0,0,1,2,2,6,3,0,1,1,1,2,1,0 1,0,6,2,1,5,3,0,0,1,1,1,1,0 1,3,10,3,0,5,2,0,1,1,1,0,1,1 0,0,3,2,2,8,5,0,0,1,1,0,1,0 1,0,3,2,1,4,3,0,0,1,1,0,1,0 0,4,1,2,0,12,2,0,1,1,1,0,1,0 1,0,1,2,0,1,2,4,1,1,1,2,1,1 0,0,3,2,2,1,1,4,1,1,1,0,1,0 1,0,3,2,2,1,5,0,1,1,1,0,1,0 2,0,3,2,0,7,2,4,1,1,1,0,1,0 1,3,3,2,1,8,3,0,0,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,6,2,1,1,1,0,1,1,1,2,1,0 0,0,3,2,2,2,3,0,1,1,1,1,1,0 0,0,3,2,5,8,4,0,0,1,1,2,1,0 2,0,0,3,0,4,0,0,0,1,1,2,1,0 1,0,1,2,0,8,2,4,1,1,1,0,1,1 1,0,13,3,0,5,0,0,0,1,1,2,1,1 0,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,3,2,3,1,5,0,1,1,1,0,1,1 1,0,10,3,1,4,5,0,0,1,1,0,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,1 0,0,10,3,0,4,2,0,1,1,1,0,1,1 1,0,3,2,0,10,2,0,1,1,1,0,1,0 0,1,3,2,0,9,2,0,1,1,1,1,1,0 0,0,3,2,2,6,1,0,1,1,1,0,1,0 0,0,3,2,0,6,2,0,1,1,1,1,1,0 0,0,11,0,0,1,2,0,1,1,1,0,1,0 2,0,12,1,3,2,3,0,0,1,1,0,1,0 0,0,0,3,2,5,3,0,0,1,1,0,1,0 1,0,2,1,0,10,2,4,1,1,1,0,1,0 0,3,3,2,0,8,2,0,1,1,1,0,1,0 0,0,1,2,2,6,4,0,1,1,1,2,1,0 0,0,10,3,2,0,3,1,1,1,1,0,1,0 1,0,3,2,1,1,5,0,1,1,1,1,1,0 0,6,3,2,2,9,1,0,0,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 0,0,1,2,1,4,5,0,1,1,1,1,1,1 1,0,3,2,1,8,5,4,0,1,1,1,1,0 0,0,6,2,0,7,2,0,1,1,1,0,1,0 2,0,2,1,0,10,2,4,1,1,1,1,1,0 1,4,10,3,0,5,0,4,0,1,1,1,1,1 1,0,0,3,1,5,3,0,1,1,1,1,1,0 1,0,3,2,0,10,2,0,1,1,1,2,1,0 1,0,6,2,1,0,3,0,1,1,1,0,1,0 2,1,3,2,0,7,2,0,1,1,1,0,1,0 0,0,3,2,2,6,1,0,1,1,1,2,1,0 0,5,1,2,2,8,3,0,0,1,1,0,1,0 1,0,0,3,0,0,2,0,1,1,1,2,1,1 0,0,13,3,2,1,4,4,1,1,1,2,1,0 0,5,6,2,0,0,2,0,1,1,1,1,1,0 1,0,1,2,1,4,5,0,0,1,1,1,1,0 1,0,6,2,0,4,2,0,1,1,1,1,1,1 1,5,1,2,0,8,2,0,1,1,1,0,1,0 0,2,5,2,0,1,2,0,1,1,1,1,1,0 2,5,13,3,0,5,2,0,1,1,1,1,1,1 1,0,0,3,0,3,2,0,1,1,1,0,1,0 0,0,0,3,0,3,2,0,1,1,1,1,1,1 0,0,5,2,0,0,2,4,1,1,1,1,1,0 0,0,1,2,2,12,1,0,1,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,1,1,0 0,0,3,2,2,1,3,0,1,1,1,0,1,0 0,0,1,2,2,2,3,0,0,1,1,2,1,0 1,1,8,0,0,4,0,0,0,1,1,1,1,0 2,2,0,3,0,3,2,0,1,1,1,0,1,1 1,0,3,2,0,3,2,0,1,1,1,0,1,1 0,0,6,2,1,8,5,0,0,1,1,0,1,0 1,0,1,2,0,5,2,0,1,1,1,0,1,1 1,0,8,0,0,7,0,0,0,1,1,0,1,0 1,5,0,3,1,5,3,0,0,1,1,1,1,0 1,0,1,2,1,4,3,0,0,1,1,0,1,0 1,1,3,2,0,9,2,0,1,1,1,1,1,1 0,0,3,2,2,1,3,0,1,1,1,0,1,0 2,2,0,3,0,4,2,0,1,1,1,1,1,1 1,4,3,2,0,8,0,0,0,1,1,0,1,1 0,0,0,3,2,7,3,0,1,1,1,1,1,0 1,0,3,2,1,7,5,0,1,1,1,0,1,0 1,0,6,2,1,2,1,0,1,1,1,2,1,0 0,0,3,2,2,1,1,1,1,1,1,1,1,0 1,0,10,3,0,5,2,0,1,1,1,0,1,1 1,0,3,2,1,1,3,0,1,1,1,1,1,0 1,1,1,2,0,9,2,0,1,1,1,1,1,0 0,0,3,2,2,8,1,0,0,1,1,0,1,0 2,3,0,3,0,8,2,4,1,1,1,2,1,1 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,0,8,2,0,1,1,1,0,1,0 0,0,3,2,0,4,2,0,1,1,1,0,1,0 1,2,4,3,2,5,3,0,1,1,1,1,1,1 0,0,3,2,0,1,2,0,1,1,1,1,1,0 0,3,3,2,1,2,3,0,0,1,1,0,1,0 1,4,10,3,0,5,2,0,1,1,1,1,1,1 0,0,0,3,2,3,3,0,0,1,1,1,1,0 1,0,8,0,0,10,2,4,1,1,1,0,1,0 2,4,3,2,4,8,3,0,0,1,1,0,1,0 0,0,1,2,0,3,2,0,1,1,1,1,1,1 0,0,10,3,2,4,3,0,1,1,1,1,1,1 0,0,10,3,0,4,2,0,1,1,1,0,1,1 0,0,1,2,1,1,3,0,1,1,1,1,1,0 1,1,4,3,0,5,2,0,1,1,1,1,1,1 0,0,9,1,2,6,1,0,1,1,1,2,1,0 1,0,0,3,2,8,3,0,1,1,1,1,1,0 1,0,0,3,0,3,2,0,1,1,1,1,1,1 1,1,6,2,1,1,3,0,1,1,1,0,1,0 1,0,3,2,0,4,2,0,1,1,1,1,1,1 0,0,3,2,2,5,3,0,0,1,1,0,1,0 1,4,1,2,0,12,2,0,1,1,1,1,1,0 0,1,1,2,2,4,5,0,1,1,1,2,1,0 0,0,1,2,2,2,3,0,0,1,1,2,1,0 0,0,1,2,0,1,2,0,1,1,1,0,1,1 1,0,1,2,2,1,3,0,1,1,1,0,1,0 0,4,0,3,0,1,2,0,1,1,1,1,1,0 0,0,14,0,2,9,3,0,1,1,1,1,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,0 2,3,10,3,1,5,3,0,1,1,1,1,1,0 2,1,5,2,0,3,2,0,1,1,1,2,1,1 1,0,3,2,2,6,3,0,1,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 2,0,0,3,0,5,2,1,1,1,1,0,1,0 1,0,3,2,2,7,1,0,1,1,1,0,1,0 2,0,3,2,1,8,3,0,0,1,1,2,1,0 0,0,3,2,1,3,3,0,0,1,1,0,1,0 0,0,1,2,2,8,5,4,0,1,1,0,1,0 2,0,2,1,4,2,3,4,1,1,1,0,1,0 1,4,1,2,0,5,0,0,0,1,1,0,1,0 0,0,8,0,2,6,1,0,1,1,1,2,1,0 1,0,6,2,0,3,2,0,1,1,1,1,1,0 0,0,3,2,0,7,2,0,1,1,1,1,1,1 0,0,1,2,2,0,5,4,0,1,1,0,1,0 0,0,5,2,2,3,5,4,0,1,1,0,1,0 1,0,3,2,0,5,0,0,0,1,1,1,1,1 3,0,2,1,0,12,2,4,1,1,1,1,1,1 1,0,1,2,1,3,3,0,0,1,1,1,1,0 1,0,3,2,0,2,2,0,1,1,1,0,1,1 1,0,3,2,0,1,2,0,1,1,1,1,1,1 1,0,0,3,1,10,3,0,1,1,1,1,1,0 0,0,3,2,2,10,3,1,1,1,1,0,1,0 0,0,13,3,0,5,2,0,1,1,1,0,1,1 1,0,1,2,0,1,2,0,1,1,1,1,1,1 1,0,1,2,0,4,2,0,1,1,1,1,1,1 1,2,3,2,0,4,2,0,1,1,1,1,1,1 1,0,3,2,0,1,2,0,1,1,1,1,1,0 1,0,5,2,0,4,2,0,1,1,1,1,1,1 0,0,14,0,0,1,2,0,1,1,1,0,1,0 2,4,0,3,2,4,3,0,1,1,1,0,1,1 2,1,3,2,0,3,2,0,1,1,1,1,1,1 0,0,3,2,2,7,1,0,1,1,1,0,1,0 0,0,1,2,1,5,3,0,0,1,1,0,1,0 2,0,3,2,0,3,2,0,1,1,1,1,1,1 0,0,15,0,2,9,3,0,1,1,1,1,1,0 1,0,3,2,4,10,3,0,0,1,1,1,1,1 0,0,1,2,2,7,3,0,1,1,1,0,1,0 1,2,1,2,1,1,3,0,1,1,1,0,1,0 1,2,1,2,0,3,2,0,1,1,1,1,1,1 1,0,3,2,1,8,5,0,0,1,1,0,1,0 0,0,0,3,0,3,2,0,1,1,1,0,1,1 1,0,3,2,1,3,3,0,0,1,1,0,1,0 0,0,3,2,2,3,1,1,0,1,1,0,1,0 0,0,3,2,0,2,0,0,0,1,1,2,1,0 0,0,2,1,2,2,1,0,0,1,1,2,1,0 0,0,1,2,3,2,5,3,0,1,1,1,1,0 0,0,2,1,0,2,2,0,1,1,1,2,1,0 1,0,0,3,2,8,4,0,0,1,1,0,1,0 0,0,9,1,1,2,5,4,0,1,1,0,1,0 0,0,3,2,2,10,3,0,1,1,1,1,1,0 0,0,3,2,2,8,3,0,1,1,1,0,1,0 0,0,12,1,2,3,1,0,0,1,1,2,1,0 0,4,3,2,3,2,5,0,0,1,1,0,1,0 0,0,3,2,2,7,1,4,1,1,1,0,1,0 0,1,3,2,2,4,3,3,1,1,1,2,1,0 1,4,1,2,0,5,2,0,1,1,1,0,1,1 0,0,10,3,2,5,1,0,1,1,1,0,1,1 0,0,0,3,2,8,1,0,0,1,1,0,1,0 0,2,1,2,2,1,1,0,1,1,1,2,1,0 1,2,1,2,0,1,2,0,1,1,1,1,1,1 0,0,7,1,1,1,3,0,1,1,1,0,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,1,12,3,4,1,1,1,0,1,0 0,0,12,1,2,2,4,0,1,1,1,2,1,0 1,5,13,3,0,5,2,0,1,1,1,0,1,1 1,0,3,2,0,5,2,0,1,1,1,0,1,1 0,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,2,1,1,6,3,0,1,1,1,1,1,0 0,0,1,2,2,2,3,0,0,1,1,0,1,0 1,0,1,2,0,2,2,0,1,1,1,2,1,1 1,1,3,2,0,4,2,0,1,1,1,1,1,1 1,0,0,3,0,6,2,0,1,1,1,0,1,0 0,0,4,3,0,5,2,0,1,1,1,1,1,1 0,0,3,2,2,2,3,4,0,1,1,1,1,0 1,4,0,3,1,8,3,0,0,1,1,2,1,0 1,5,1,2,1,0,3,3,0,1,1,1,1,0 1,0,3,2,2,8,1,0,1,1,1,1,1,0 0,0,5,2,2,5,1,0,0,1,1,2,1,0 0,0,3,2,2,10,1,0,1,1,1,1,1,0 1,0,6,2,2,5,5,0,0,1,1,2,1,0 1,0,13,3,0,5,2,1,1,1,1,1,1,1 0,0,3,2,2,2,1,0,0,1,1,2,1,0 1,0,3,2,2,7,1,0,1,1,1,1,1,1 1,5,10,3,1,5,5,0,0,1,1,1,1,0 0,0,3,2,0,2,2,0,1,1,1,1,1,0 2,0,7,1,2,1,3,0,1,1,1,2,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,0,3,0,3,2,0,1,1,1,1,1,1 0,0,3,2,0,1,2,0,1,1,1,1,1,0 1,1,3,2,0,1,2,0,1,1,1,0,1,0 1,3,1,2,2,8,3,0,0,1,1,0,1,0 2,3,10,3,1,5,3,0,0,1,1,2,1,0 0,0,2,1,0,7,4,0,1,1,1,0,1,0 0,0,1,2,2,2,1,0,1,1,1,2,1,0 1,4,3,2,2,1,3,0,1,1,1,0,1,0 0,0,0,3,2,0,1,0,1,1,1,0,1,0 0,0,5,2,2,5,1,0,1,1,1,0,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 1,2,3,2,0,4,2,0,1,1,1,1,1,1 0,0,3,2,2,2,4,4,1,1,1,0,1,0 1,0,1,2,0,3,2,0,1,1,1,1,1,0 2,5,0,3,0,5,2,0,1,1,1,0,1,1 1,4,1,2,0,9,2,0,1,1,1,0,1,0 0,0,1,2,2,2,3,0,0,1,1,2,1,0 1,5,13,3,1,5,3,0,0,1,1,1,1,1 1,4,0,3,0,4,2,4,1,1,1,0,1,1 0,0,3,2,0,7,2,0,1,1,1,0,1,0 1,5,5,2,1,4,5,0,0,1,1,2,1,0 1,0,3,2,2,1,3,0,0,1,1,1,1,0 0,0,0,3,2,4,3,0,0,1,1,0,1,0 0,0,1,2,0,4,2,0,1,1,1,1,1,0 1,0,3,2,0,8,0,0,0,1,1,0,1,0 1,4,0,3,0,5,2,0,1,1,1,1,1,1 1,4,2,1,3,5,5,3,0,1,1,2,1,0 0,0,7,1,2,2,1,0,1,1,1,0,1,0 0,0,1,2,2,1,1,0,1,1,1,1,1,0 1,0,3,2,0,9,2,0,1,1,1,1,1,0 2,0,1,2,1,0,3,0,1,1,1,1,1,0 0,0,7,1,0,7,2,0,1,1,1,0,1,0 0,0,1,2,2,3,1,0,1,1,1,2,1,0 1,0,8,0,0,10,2,0,1,1,1,0,1,0 0,0,3,2,2,3,1,0,0,1,1,0,1,0 0,0,6,2,5,7,3,4,1,1,1,0,1,0 0,0,2,1,2,4,3,4,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 1,0,6,2,0,8,0,4,0,1,1,0,1,0 1,0,3,2,0,3,0,0,0,1,1,1,1,0 1,5,0,3,0,5,0,0,0,1,1,0,1,1 0,0,0,3,0,2,2,0,1,1,1,2,1,0 1,0,3,2,1,6,3,0,0,1,1,2,1,0 0,0,4,3,0,5,2,0,1,1,1,1,1,0 0,0,12,1,0,9,2,0,1,1,1,2,1,0 0,0,0,3,2,6,1,0,1,1,1,2,1,0 0,0,0,3,0,4,2,0,1,1,1,0,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,2,3,5,0,1,1,1,1,1,0 3,0,14,0,4,2,3,1,0,1,1,2,1,0 0,0,3,2,0,1,2,0,1,1,1,1,1,0 2,0,5,2,1,3,3,0,0,1,1,0,1,0 1,0,14,0,0,6,2,0,1,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,0,1,1 0,0,0,3,2,4,3,0,0,1,1,2,1,0 2,1,0,3,0,3,2,0,1,1,1,0,1,1 2,3,1,2,1,8,3,0,0,1,1,0,1,0 1,0,0,3,1,3,5,0,0,1,1,1,1,0 1,4,8,0,1,2,5,0,0,1,1,0,1,0 1,1,1,2,5,2,5,0,0,1,1,0,1,0 0,5,1,2,0,4,2,0,1,1,1,0,1,1 0,1,3,2,0,9,2,0,1,1,1,1,1,0 1,0,10,3,4,7,4,1,0,1,1,0,1,0 0,0,0,3,2,2,3,0,0,1,1,2,1,0 2,0,1,2,0,5,2,0,1,1,1,0,1,1 0,0,3,2,1,2,3,0,1,1,1,2,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,1 0,0,5,2,2,8,1,0,0,1,1,0,1,0 0,0,3,2,0,7,2,0,1,1,1,1,1,0 2,0,3,2,0,1,2,0,1,1,1,1,1,0 0,0,6,2,1,5,5,0,0,1,1,0,1,0 0,0,1,2,2,2,1,0,1,1,1,0,1,0 0,0,1,2,0,2,2,2,1,1,1,0,1,0 0,0,3,2,2,3,1,0,1,1,1,2,1,0 0,1,6,2,0,9,2,0,1,1,1,0,1,0 0,0,0,3,0,3,2,0,1,1,1,1,1,1 2,0,0,3,0,3,2,0,1,1,1,2,1,1 1,0,1,2,1,1,3,0,1,1,1,0,1,0 2,0,1,2,0,3,2,0,1,1,1,2,1,0 1,0,0,3,1,4,3,0,0,1,1,2,1,0 0,0,3,2,2,1,1,0,1,1,1,0,1,0 0,0,0,3,2,3,3,0,1,1,1,0,1,0 0,0,14,0,5,11,4,0,0,1,1,2,1,0 0,0,1,2,2,8,3,0,0,1,1,2,1,0 3,1,2,1,0,9,2,0,1,1,1,0,1,1 1,0,0,3,0,5,2,0,1,1,1,0,1,1 1,1,8,0,0,1,2,0,1,1,1,2,1,0 1,0,1,2,2,3,3,0,1,1,1,1,1,0 1,0,3,2,0,5,0,0,0,1,1,0,1,1 1,0,2,1,0,10,2,0,1,1,1,1,1,0 0,0,0,3,0,5,2,0,1,1,1,0,1,1 1,0,0,3,0,4,2,0,1,1,1,1,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,1 0,0,0,3,2,1,3,0,1,1,1,0,1,0 1,0,10,3,0,4,2,4,1,1,1,1,1,1 1,0,1,2,1,0,5,0,0,1,1,2,1,0 0,0,3,2,2,3,1,0,0,1,1,1,1,0 0,0,3,2,2,5,1,0,0,1,1,2,1,0 2,1,13,3,0,5,2,0,1,1,1,1,1,1 0,0,1,2,2,5,1,0,1,1,1,2,1,0 1,2,5,2,2,4,3,0,1,1,1,1,1,0 2,0,8,0,0,1,2,0,1,1,1,0,1,1 1,0,1,2,0,3,0,0,0,1,1,2,1,0 0,0,1,2,0,1,2,0,1,1,1,1,1,1 1,0,0,3,0,5,2,0,1,1,1,1,1,1 2,4,1,2,0,4,2,0,1,1,1,0,1,0 1,0,1,2,1,8,3,0,0,1,1,0,1,0 1,1,3,2,0,8,0,0,0,1,1,2,1,0 0,0,0,3,0,5,2,0,1,1,1,1,1,0 1,4,3,2,1,2,3,0,0,1,1,0,1,0 1,0,0,3,1,5,5,0,1,1,1,0,1,0 1,0,3,2,1,2,3,0,0,1,1,2,1,0 0,0,1,2,1,7,3,0,0,1,1,0,1,0 0,0,3,2,2,7,3,0,1,1,1,0,1,0 0,0,3,2,2,6,1,0,1,1,1,0,1,0 1,0,0,3,2,0,3,0,1,1,1,0,1,0 0,0,1,2,2,3,1,0,0,1,1,0,1,0 1,4,12,1,0,1,2,0,1,1,1,0,1,0 2,0,5,2,4,7,5,4,0,1,1,0,1,0 1,4,0,3,0,5,2,0,1,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,0,1,1 2,0,3,2,0,7,2,0,1,1,1,0,1,1 0,0,1,2,5,4,3,0,0,1,1,0,1,0 1,1,1,2,1,2,3,0,0,1,1,0,1,0 1,1,3,2,0,1,2,0,1,1,1,0,1,0 0,0,0,3,2,8,3,0,1,1,1,2,1,0 1,0,3,2,1,8,3,0,0,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,1,1,0 1,3,1,2,0,8,2,0,1,1,1,0,1,1 1,4,1,2,0,7,2,0,1,1,1,0,1,1 1,1,3,2,1,9,5,0,1,1,1,1,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,4,3,2,9,3,0,0,1,1,2,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,1 0,0,1,2,2,10,1,1,1,1,1,2,1,0 0,0,0,3,2,3,1,0,0,1,1,0,1,0 1,1,3,2,1,1,5,0,1,1,1,1,1,0 0,0,0,3,2,3,3,0,0,1,1,1,1,0 3,0,12,1,4,11,3,0,0,1,1,1,1,0 1,0,8,0,0,7,2,0,1,1,1,0,1,0 0,0,0,3,1,4,3,0,1,1,1,0,1,0 0,0,3,2,2,8,5,4,1,1,1,0,1,0 0,0,2,1,2,3,1,0,0,1,1,2,1,0 1,1,1,2,0,1,2,0,1,1,1,1,1,0 1,1,3,2,0,1,2,0,1,1,1,0,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,1 2,0,5,2,1,3,3,0,1,1,1,2,1,0 0,0,0,3,1,5,3,0,1,1,1,1,1,0 1,3,1,2,2,8,3,0,0,1,1,0,1,0 1,3,0,3,3,4,5,4,0,1,1,1,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,1 0,0,3,2,2,7,1,4,0,1,1,0,1,0 2,0,3,2,0,1,2,0,1,1,1,1,1,0 1,5,8,0,0,10,2,0,1,1,1,0,1,0 0,0,2,1,2,3,1,0,0,1,1,2,1,0 1,0,1,2,0,3,2,0,1,1,1,1,1,1 0,0,0,3,0,5,2,0,1,1,1,1,1,1 1,0,0,3,0,4,2,0,1,1,1,0,1,0 3,0,1,2,0,8,2,0,1,1,1,2,1,0 1,0,0,3,2,7,3,0,1,1,1,2,1,0 2,0,3,2,1,8,3,1,0,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 1,5,10,3,0,5,2,0,1,1,1,1,1,1 1,0,1,2,0,4,2,0,1,1,1,1,1,1 1,0,3,2,0,10,2,0,1,1,1,0,1,0 0,1,1,2,2,2,1,0,0,1,1,2,1,0 1,0,3,2,0,7,2,0,1,1,1,1,1,0 2,2,7,1,0,1,2,0,1,1,1,1,1,1 0,0,0,3,0,1,2,0,1,1,1,2,1,0 2,0,3,2,4,1,4,1,0,1,1,0,1,0 1,4,0,3,0,5,0,0,0,1,1,2,1,0 1,2,1,2,0,4,0,0,0,1,1,1,1,1 0,0,1,2,2,4,1,4,1,1,1,0,1,0 0,0,1,2,2,11,3,0,0,1,1,2,1,0 0,0,3,2,0,10,2,0,1,1,1,0,1,0 0,0,0,3,2,5,3,0,0,1,1,1,1,0 0,0,0,3,0,12,2,4,1,1,1,0,1,1 0,0,3,2,2,8,3,0,0,1,1,0,1,0 0,0,3,2,1,8,3,0,0,1,1,1,1,0 0,0,2,1,2,3,1,0,0,1,1,2,1,0 0,0,9,1,2,3,1,0,0,1,1,2,1,0 1,0,3,2,2,4,3,0,0,1,1,0,1,0 0,0,2,1,2,1,3,0,1,1,1,1,1,0 0,0,1,2,0,1,2,0,1,1,1,0,1,0 1,2,4,3,0,5,2,1,1,1,1,1,1,1 1,4,10,3,5,5,5,0,0,1,1,1,1,1 1,5,3,2,2,8,3,0,0,1,1,2,1,0 0,0,3,2,5,6,3,2,1,1,1,0,1,0 1,5,10,3,4,5,5,0,0,1,1,0,1,0 2,0,6,2,0,5,2,0,1,1,1,1,1,0 0,0,1,2,0,9,2,0,1,1,1,2,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,0,3,0,4,2,0,1,1,1,0,1,1 1,0,4,3,2,4,3,0,1,1,1,1,1,1 1,0,6,2,0,7,2,0,1,1,1,1,1,1 0,0,3,2,0,10,2,0,1,1,1,1,1,1 0,0,3,2,2,1,3,0,0,1,1,0,1,0 0,0,3,2,2,7,5,4,0,1,1,1,1,0 1,0,1,2,0,10,2,0,1,1,1,0,1,0 0,3,3,2,2,2,1,0,1,1,1,0,1,0 2,2,10,3,4,8,3,0,0,1,1,2,1,0 2,0,3,2,2,11,3,0,1,1,1,0,1,0 0,0,1,2,2,7,1,0,1,1,1,0,1,0 0,4,1,2,0,12,2,3,1,1,1,0,1,1 1,3,0,3,0,8,2,0,1,1,1,1,1,0 1,0,1,2,2,6,5,4,0,1,1,0,1,0 1,0,3,2,1,2,1,4,0,1,1,0,1,0 3,0,0,3,2,11,3,0,0,1,1,0,1,0 1,0,8,0,0,6,2,0,1,1,1,1,1,0 1,0,1,2,0,4,2,0,1,1,1,0,1,1 0,0,0,3,2,5,3,4,1,1,1,1,1,0 0,0,1,2,2,10,3,0,1,1,1,0,1,0 0,0,0,3,6,3,0,1,0,1,1,1,1,1 0,0,1,2,2,6,1,0,1,1,1,2,1,0 0,5,0,3,2,5,3,0,0,1,1,2,1,0 1,0,1,2,0,10,2,0,1,1,1,1,1,0 0,0,1,2,2,3,3,0,1,1,1,1,1,0 1,0,0,3,0,5,2,1,1,1,1,0,1,1 1,0,1,2,2,2,3,1,1,1,1,1,1,0 1,1,3,2,0,4,2,0,1,1,1,0,1,0 2,2,3,2,0,4,2,0,1,1,1,1,1,0 2,0,0,3,0,4,2,0,1,1,1,0,1,1 2,1,3,2,0,9,2,0,1,1,1,1,1,1 0,1,3,2,2,1,3,0,1,1,1,1,1,0 1,2,13,3,2,5,3,0,1,1,1,1,1,1 2,5,3,2,0,1,2,0,1,1,1,0,1,0 0,0,0,3,2,3,3,2,1,1,1,1,1,0 1,3,0,3,0,4,2,0,1,1,1,0,1,1 1,0,3,2,0,10,2,0,1,1,1,1,1,1 0,0,3,2,0,2,2,1,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,0 0,4,5,2,2,4,1,0,0,1,1,0,1,0 1,1,10,3,2,5,3,2,0,1,1,1,1,0 1,0,0,3,2,3,1,0,1,1,1,0,1,0 0,1,7,1,0,1,2,0,1,1,1,2,1,0 0,0,12,1,2,7,3,0,1,1,1,1,1,0 0,3,3,2,2,8,5,3,0,1,1,1,1,0 1,0,3,2,0,3,4,0,0,1,1,2,1,1 0,4,10,3,2,5,3,0,1,1,1,2,1,0 0,0,9,1,2,2,3,0,1,1,1,0,1,0 0,0,1,2,2,5,3,4,1,1,1,1,1,0 1,4,4,3,0,5,2,0,1,1,1,2,1,1 1,3,10,3,2,5,3,0,1,1,1,0,1,0 2,0,12,1,0,7,2,0,1,1,1,1,1,1 0,0,1,2,2,3,3,0,0,1,1,2,1,0 0,0,6,2,2,12,3,0,1,1,1,0,1,0 1,0,3,2,1,12,3,0,1,1,1,0,1,0 0,0,3,2,5,2,5,4,0,1,1,2,1,0 2,0,3,2,0,10,2,0,1,1,1,1,1,1 1,2,6,2,2,4,3,0,1,1,1,1,1,0 1,2,0,3,0,4,2,0,1,1,1,1,1,1 2,0,3,2,0,4,2,0,1,1,1,0,1,0 1,0,1,2,0,2,2,4,1,1,1,0,1,1 1,0,13,3,0,5,2,0,1,1,1,0,1,0 0,5,1,2,2,5,1,0,1,1,1,2,1,0 0,4,10,3,0,4,2,0,1,1,1,0,1,0 2,0,3,2,0,3,2,0,1,1,1,2,1,0 1,0,3,2,0,10,0,0,0,1,1,2,1,0 0,0,9,1,3,2,5,0,0,1,1,1,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,10,3,1,4,4,1,0,1,1,0,1,0 2,0,10,3,3,4,3,4,1,1,1,2,1,0 0,0,1,2,2,8,3,0,0,1,1,0,1,0 0,0,3,2,0,0,2,0,1,1,1,0,1,0 0,0,1,2,2,2,5,0,0,1,1,2,1,0 2,0,2,1,4,8,3,0,0,1,1,1,1,0 0,0,1,2,1,2,5,0,0,1,1,2,1,0 0,0,1,2,2,8,1,0,1,1,1,2,1,0 0,0,1,2,0,10,2,0,1,1,1,1,1,1 1,0,3,2,1,8,3,0,0,1,1,0,1,0 0,0,3,2,2,8,3,0,0,1,1,0,1,0 1,0,3,2,1,10,4,0,1,1,1,1,1,0 2,0,1,2,1,4,3,0,1,1,1,0,1,0 1,0,10,3,2,5,5,1,0,1,1,0,1,1 0,0,3,2,5,7,3,0,0,1,1,0,1,0 0,1,0,3,1,5,3,0,0,1,1,1,1,0 1,0,6,2,1,8,5,0,0,1,1,2,1,0 2,0,1,2,0,8,2,0,1,1,1,0,1,1 0,4,1,2,2,8,3,0,1,1,1,0,1,0 1,1,10,3,0,4,0,0,0,1,1,1,1,1 2,0,3,2,1,4,4,0,0,1,1,1,1,0 1,3,4,3,0,5,2,0,1,1,1,1,1,1 1,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,5,2,3,1,0,1,1,0,1,0 0,0,0,3,0,5,2,0,1,1,1,1,1,0 1,0,3,2,4,7,3,0,0,1,1,0,1,0 0,0,3,2,0,8,2,0,1,1,1,0,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,0 0,0,3,2,0,10,2,0,1,1,1,0,1,0 1,1,10,3,0,5,2,0,1,1,1,1,1,1 1,2,1,2,0,4,2,0,1,1,1,1,1,0 0,0,12,1,0,8,0,0,0,1,1,0,1,0 2,0,3,2,0,8,2,0,1,1,1,0,1,0 0,0,12,1,2,2,1,2,0,1,1,0,1,0 1,1,9,1,2,1,1,0,1,1,1,0,1,0 1,0,8,0,0,10,2,0,1,1,1,0,1,0 0,0,1,2,2,8,1,0,1,1,1,0,1,0 0,0,2,1,2,2,3,0,0,1,1,2,1,0 0,0,3,2,2,1,3,0,1,1,1,1,1,0 2,0,3,2,0,2,2,0,1,1,1,2,1,0 0,0,0,3,2,4,1,0,1,1,1,0,1,0 1,0,2,1,2,7,3,3,0,1,1,0,1,0 1,5,6,2,0,2,2,0,1,1,1,1,1,1 0,0,0,3,0,7,2,0,1,1,1,0,1,0 1,2,1,2,0,3,2,0,1,1,1,0,1,0 1,0,3,2,2,2,3,0,1,1,1,0,1,0 1,0,3,2,1,12,3,0,1,1,1,0,1,0 0,0,3,2,0,3,2,0,1,1,1,1,1,0 0,0,0,3,0,3,2,0,1,1,1,1,1,0 0,0,0,3,2,3,3,0,0,1,1,0,1,0 0,1,13,3,0,5,2,0,1,1,1,1,1,1 1,0,3,2,0,0,2,1,1,1,1,0,1,1 1,0,8,0,0,5,0,0,0,1,1,0,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,2,1,0 0,0,3,2,2,4,5,0,1,1,1,0,1,0 0,0,3,2,2,1,3,0,1,1,1,0,1,0 0,0,3,2,2,1,3,0,1,1,1,0,1,0 2,0,3,2,0,3,2,0,1,1,1,2,1,0 1,0,1,2,1,8,5,0,0,1,1,0,1,0 0,0,2,1,2,2,1,0,1,1,1,2,1,0 2,1,0,3,0,4,2,0,1,1,1,2,1,1 0,0,3,2,1,1,1,0,1,1,1,0,1,0 1,0,0,3,3,2,3,0,1,1,1,0,1,0 1,0,3,2,2,10,3,4,1,1,1,0,1,0 0,3,0,3,0,4,0,3,0,1,1,0,1,1 0,0,12,1,0,2,0,4,0,1,1,2,1,0 0,0,3,2,3,10,1,0,0,1,1,2,1,0 0,0,3,2,2,2,4,0,1,1,1,2,1,0 0,0,2,1,0,12,2,0,1,1,1,0,1,0 1,1,5,2,0,9,2,0,1,1,1,1,1,0 3,2,1,2,0,3,2,0,1,1,1,2,1,1 1,3,1,2,0,1,2,0,1,1,1,0,1,0 0,0,12,1,0,1,2,0,1,1,1,0,1,0 0,0,1,2,2,2,5,0,0,1,1,2,1,0 0,0,0,3,5,5,3,1,1,1,1,0,1,0 1,0,3,2,1,0,3,0,1,1,1,1,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,1 0,0,1,2,2,8,4,4,0,1,1,0,1,0 0,0,3,2,1,6,3,0,1,1,1,1,1,0 0,0,3,2,2,2,1,0,0,1,1,0,1,0 1,0,3,2,1,7,3,0,1,1,1,0,1,0 1,0,1,2,0,7,2,0,1,1,1,0,1,1 2,2,5,2,0,3,2,0,1,1,1,1,1,1 0,0,1,2,2,2,3,0,1,1,1,2,1,0 0,0,8,0,0,6,2,0,1,1,1,1,1,0 2,1,3,2,0,8,0,0,0,1,1,2,1,0 1,4,10,3,4,5,3,4,0,1,1,0,1,1 2,2,0,3,0,4,2,0,1,1,1,0,1,1 1,0,3,2,0,2,2,0,1,1,1,0,1,0 1,4,3,2,0,4,2,0,1,1,1,0,1,1 1,5,10,3,0,5,2,0,1,1,1,2,1,1 3,2,3,2,0,4,2,0,1,1,1,0,1,0 2,4,10,3,0,5,2,0,1,1,1,1,1,1 0,0,1,2,2,3,1,0,0,1,1,0,1,0 1,5,1,2,2,8,3,0,0,1,1,0,1,0 1,0,0,3,1,3,5,0,0,1,1,0,1,1 1,1,3,2,0,2,2,0,1,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 1,4,3,2,0,12,2,0,1,1,1,0,1,1 0,0,1,2,2,3,4,3,0,1,1,2,1,0 0,0,1,2,1,8,5,0,0,1,1,0,1,0 0,4,0,3,2,10,1,0,1,1,1,2,1,0 1,0,3,2,1,7,5,0,0,1,1,0,1,0 0,0,9,1,2,8,1,0,0,1,1,2,1,0 0,3,0,3,0,8,2,0,1,1,1,0,1,0 1,3,0,3,0,12,2,0,1,1,1,1,1,1 0,0,1,2,2,0,4,0,1,1,1,0,1,0 1,0,1,2,0,4,2,0,1,1,1,2,1,1 0,0,3,2,2,8,1,0,1,1,1,1,1,0 1,0,9,1,1,8,5,0,0,1,1,0,1,0 2,0,8,0,0,7,2,0,1,1,1,0,1,0 2,0,2,1,0,8,2,0,1,1,1,0,1,1 1,1,1,2,0,4,2,0,1,1,1,2,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 0,4,12,1,2,5,1,0,0,1,1,2,1,0 2,1,12,1,0,4,2,0,1,1,1,2,1,0 1,0,1,2,1,3,5,0,0,1,1,0,1,0 0,0,1,2,2,0,3,0,0,1,1,0,1,0 2,0,14,0,0,7,2,0,1,1,1,0,1,0 0,3,0,3,2,5,3,0,1,1,1,1,1,0 2,0,3,2,4,3,3,0,0,1,1,2,1,0 1,1,13,3,0,5,2,0,1,1,1,1,1,1 1,3,3,2,0,2,2,0,1,1,1,0,1,1 2,0,0,3,0,4,0,0,0,1,1,2,1,1 0,0,1,2,2,5,1,0,1,1,1,2,1,0 1,0,6,2,1,2,3,0,1,1,1,2,1,0 1,0,1,2,0,8,0,0,0,1,1,0,1,0 0,0,5,2,2,3,3,0,1,1,1,0,1,0 1,0,3,2,0,6,2,0,1,1,1,0,1,0 1,5,3,2,2,8,4,0,0,1,1,0,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 0,0,3,2,3,8,5,0,0,1,1,2,1,0 2,0,1,2,0,0,2,0,1,1,1,1,1,0 0,5,1,2,2,10,3,0,1,1,1,0,1,0 0,0,3,2,1,3,3,0,1,1,1,0,1,0 0,0,3,2,1,8,5,0,0,1,1,0,1,0 1,3,0,3,0,8,2,0,1,1,1,1,1,1 2,0,1,2,2,8,3,0,0,1,1,2,1,0 0,0,0,3,2,3,3,0,0,1,1,0,1,0 1,4,10,3,0,5,2,0,1,1,1,1,1,0 0,0,3,2,0,1,2,0,1,1,1,1,1,0 2,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,3,2,0,4,2,0,1,1,1,1,1,1 1,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,3,2,4,5,3,0,1,1,1,0,1,1 1,0,1,2,0,1,2,0,1,1,1,1,1,1 0,0,0,3,2,5,3,0,0,1,1,1,1,0 0,0,0,3,2,4,3,0,0,1,1,0,1,1 0,0,0,3,0,5,2,0,1,1,1,0,1,1 1,0,11,0,0,6,2,0,1,1,1,0,1,0 1,1,5,2,5,9,3,0,1,1,1,1,1,0 0,0,1,2,2,12,1,0,1,1,1,2,1,0 0,0,1,2,1,2,3,0,0,1,1,2,1,0 1,1,0,3,0,3,2,0,1,1,1,1,1,1 0,0,1,2,2,8,1,0,0,1,1,2,1,0 0,0,0,3,0,5,2,0,1,1,1,1,1,1 2,0,9,1,1,11,5,4,0,1,1,2,1,0 2,0,3,2,0,7,2,0,1,1,1,1,1,0 0,0,12,1,2,2,1,0,0,1,1,2,1,0 1,0,3,2,1,0,3,0,0,1,1,0,1,0 0,0,0,3,2,5,4,0,0,1,1,0,1,0 1,5,1,2,0,5,2,0,1,1,1,0,1,1 0,1,0,3,1,4,3,0,1,1,1,1,1,1 0,0,1,2,0,6,2,0,1,1,1,0,1,0 1,5,3,2,0,1,2,0,1,1,1,0,1,0 2,0,14,0,0,2,4,0,0,1,1,2,1,0 1,0,3,2,2,8,5,0,1,1,1,0,1,0 1,0,10,3,0,0,2,1,1,1,1,1,1,1 0,0,3,2,2,6,3,0,1,1,1,1,1,0 0,0,1,2,2,1,1,4,1,1,1,0,1,0 0,0,1,2,2,6,1,0,1,1,1,0,1,0 0,1,1,2,0,1,2,0,1,1,1,1,1,0 2,0,3,2,4,7,3,0,0,1,1,0,1,0 2,4,12,1,0,2,0,0,0,1,1,2,1,1 1,0,3,2,1,1,4,0,1,1,1,1,1,1 0,0,3,2,0,3,2,0,1,1,1,1,1,0 1,4,10,3,2,0,3,0,1,1,1,0,1,0 0,0,6,2,2,0,1,0,0,1,1,2,1,0 1,3,0,3,0,4,2,0,1,1,1,0,1,0 1,2,3,2,0,5,2,0,1,1,1,1,1,0 1,4,10,3,0,5,0,0,0,1,1,2,1,1 2,1,0,3,0,5,0,0,0,1,1,2,1,1 0,1,3,2,2,1,3,0,1,1,1,2,1,0 1,0,8,0,0,1,2,0,1,1,1,0,1,0 0,0,3,2,2,3,5,0,0,1,1,0,1,0 2,0,3,2,4,10,3,0,1,1,1,2,1,0 1,0,1,2,1,10,5,0,1,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 0,0,9,1,0,8,2,0,1,1,1,1,1,0 1,5,5,2,1,0,3,4,0,1,1,0,1,0 0,0,3,2,2,0,3,0,1,1,1,1,1,0 2,0,3,2,0,10,2,4,1,1,1,0,1,1 1,1,1,2,0,10,2,0,1,1,1,1,1,0 0,0,3,2,1,8,4,0,0,1,1,0,1,0 0,0,1,2,1,4,3,0,0,1,1,0,1,0 1,0,13,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,2,10,1,0,1,1,1,1,1,0 0,0,1,2,2,3,5,4,0,1,1,0,1,0 1,4,3,2,0,2,0,0,0,1,1,2,1,0 1,0,1,2,0,3,2,0,1,1,1,0,1,0 0,0,0,3,1,4,5,0,1,1,1,1,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,1,2,0,3,2,0,1,1,1,0,1,0 2,0,12,1,0,6,2,0,1,1,1,0,1,0 2,2,6,2,0,4,2,0,1,1,1,0,1,1 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,0,3,2,0,1,1,1,0,1,1 1,0,1,2,0,5,2,0,1,1,1,1,1,0 1,3,5,2,1,8,5,0,0,1,1,0,1,0 2,1,2,1,0,4,2,0,1,1,1,1,1,1 1,4,3,2,0,2,2,0,1,1,1,0,1,0 1,0,3,2,0,0,2,0,1,1,1,1,1,1 1,0,10,3,1,2,5,4,0,1,1,2,1,0 1,5,3,2,2,2,1,0,0,1,1,0,1,0 0,0,3,2,3,8,4,0,1,1,1,1,1,0 0,0,1,2,0,0,2,0,1,1,1,0,1,1 1,0,0,3,5,3,5,1,1,1,1,0,1,0 1,4,10,3,0,4,0,0,0,1,1,0,1,1 1,1,0,3,0,3,2,0,1,1,1,1,1,1 1,5,0,3,0,4,2,0,1,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,1 3,0,0,3,0,8,2,0,1,1,1,2,1,1 1,0,1,2,0,1,2,0,1,1,1,0,1,0 1,0,3,2,0,1,2,4,1,1,1,0,1,0 2,0,3,2,0,4,2,0,1,1,1,0,1,1 0,0,3,2,2,6,3,0,1,1,1,0,1,0 0,0,0,3,0,0,2,0,1,1,1,2,1,0 0,0,3,2,0,8,1,0,0,1,1,2,1,0 0,0,1,2,2,12,1,0,1,1,1,2,1,0 0,1,0,3,0,3,2,0,1,1,1,1,1,0 2,3,3,2,0,8,2,0,1,1,1,0,1,0 1,0,5,2,0,8,0,0,0,1,1,1,1,0 0,0,1,2,2,4,3,0,0,1,1,1,1,0 0,0,1,2,2,3,1,0,1,1,1,2,1,0 0,0,0,3,0,4,2,0,1,1,1,0,1,1 1,0,1,2,1,4,3,0,0,1,1,1,1,0 1,0,10,3,0,5,2,0,1,1,1,1,1,1 0,1,1,2,0,9,2,0,1,1,1,1,1,1 0,0,1,2,0,10,2,0,1,1,1,2,1,0 2,2,12,1,0,9,2,0,1,1,1,1,1,0 1,0,6,2,0,8,2,0,1,1,1,0,1,0 3,0,3,2,0,12,2,0,1,1,1,2,1,0 0,0,3,2,0,8,2,0,1,1,1,1,1,0 0,0,3,2,2,0,3,0,0,1,1,0,1,0 1,1,10,3,1,4,3,0,1,1,1,2,1,0 0,0,1,2,2,8,1,0,0,1,1,0,1,0 0,0,1,2,0,0,2,0,1,1,1,0,1,1 1,3,12,1,2,1,3,4,1,1,1,0,1,0 1,0,0,3,1,4,3,0,0,1,1,0,1,0 2,5,0,3,0,4,2,0,1,1,1,0,1,1 1,0,3,2,0,2,2,1,1,1,1,2,1,0 0,0,1,2,2,8,1,0,1,1,1,0,1,0 0,4,1,2,0,12,2,0,1,1,1,0,1,1 0,5,10,3,2,5,3,0,1,1,1,1,1,0 2,4,0,3,1,5,3,0,0,1,1,0,1,0 0,0,3,2,0,10,2,0,1,1,1,2,1,0 0,0,5,2,0,0,0,4,0,1,1,0,1,0 0,1,3,2,2,2,1,0,0,1,1,1,1,0 0,0,1,2,2,8,3,0,0,1,1,0,1,0 0,0,5,2,2,0,1,0,0,1,1,2,1,0 0,0,0,3,0,6,2,0,1,1,1,0,1,0 3,0,3,2,2,8,4,0,0,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,1 0,1,3,2,1,10,3,0,1,1,1,0,1,0 1,4,2,1,1,2,5,4,0,1,1,2,1,0 0,0,2,1,2,3,1,0,0,1,1,0,1,0 3,0,0,3,1,4,5,0,0,1,1,0,1,1 1,0,0,3,0,0,0,0,0,1,1,2,1,0 1,1,1,2,0,5,0,0,0,1,1,2,1,0 0,0,3,2,2,8,1,0,0,1,1,0,1,0 1,0,12,1,1,7,5,0,0,1,1,0,1,0 1,0,14,0,1,7,5,0,0,1,1,0,1,0 2,0,8,0,3,7,3,0,0,1,1,0,1,0 0,0,0,3,2,5,3,0,1,1,1,0,1,1 1,3,6,2,1,4,5,0,1,1,1,0,1,0 2,1,8,0,2,2,5,4,0,1,1,1,1,0 2,4,1,2,0,5,0,0,0,1,1,2,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,1 1,0,3,2,0,1,0,0,0,1,1,0,1,1 2,0,0,3,1,4,3,0,0,1,1,0,1,1 1,0,3,2,1,8,3,0,0,1,1,0,1,0 1,5,3,2,0,12,2,0,1,1,1,1,1,1 1,0,3,2,2,8,3,0,0,1,1,1,1,0 0,0,3,2,2,2,3,0,1,1,1,0,1,0 0,0,1,2,1,3,3,0,1,1,1,1,1,0 0,0,0,3,3,3,3,0,1,1,1,1,1,1 0,0,2,1,2,2,4,0,0,1,1,2,1,0 0,0,8,0,0,7,2,0,1,1,1,0,1,0 0,0,1,2,2,8,5,4,0,1,1,2,1,0 0,1,5,2,2,4,3,0,1,1,1,2,1,0 0,0,1,2,0,10,2,0,1,1,1,1,1,0 1,0,3,2,2,9,3,0,1,1,1,1,1,0 1,3,0,3,0,4,2,0,1,1,1,1,1,1 1,0,0,3,0,3,2,0,1,1,1,1,1,1 1,0,3,2,0,10,2,4,1,1,1,0,1,0 2,0,7,1,0,1,2,0,1,1,1,1,1,0 0,2,3,2,2,9,1,0,1,1,1,2,1,0 1,4,10,3,0,5,0,0,0,1,1,2,1,1 0,0,3,2,0,7,2,4,1,1,1,0,1,0 0,0,1,2,5,9,5,0,0,1,1,0,1,0 1,0,10,3,3,0,5,0,0,1,1,2,1,0 0,0,4,3,0,3,2,0,1,1,1,0,1,1 0,4,3,2,1,8,3,2,0,1,1,2,1,0 1,0,1,2,0,3,0,0,0,1,1,0,1,0 0,0,1,2,2,10,1,1,1,1,1,0,1,0 1,1,10,3,0,4,2,0,1,1,1,0,1,1 0,0,3,2,1,4,5,0,0,1,1,0,1,0 1,2,0,3,0,3,2,0,1,1,1,0,1,1 0,0,3,2,2,3,5,4,0,1,1,1,1,0 0,5,1,2,2,2,3,0,0,1,1,2,1,0 1,3,0,3,0,5,2,0,1,1,1,0,1,1 1,0,8,0,2,10,3,3,1,1,1,1,1,0 0,0,3,2,2,6,3,4,0,1,1,1,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 1,0,1,2,1,4,5,0,1,1,1,1,1,0 2,0,7,1,0,2,0,0,0,1,1,2,1,0 1,2,0,3,0,4,2,0,1,1,1,1,1,1 1,1,3,2,0,1,2,0,1,1,1,0,1,0 2,4,9,1,1,10,3,0,1,1,1,0,1,0 0,0,6,2,2,8,3,0,0,1,1,0,1,0 0,0,6,2,1,1,3,0,1,1,1,0,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 0,0,3,2,2,0,4,0,1,1,1,0,1,0 1,0,1,2,1,0,3,0,1,1,1,1,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 0,0,6,2,0,1,2,0,1,1,1,0,1,1 0,0,7,1,0,7,2,0,1,1,1,1,1,0 2,0,3,2,0,11,0,4,0,1,1,2,1,0 1,4,3,2,4,2,3,0,0,1,1,1,1,0 2,0,1,2,0,3,2,0,1,1,1,0,1,0 0,0,1,2,0,5,2,0,1,1,1,1,1,0 2,5,10,3,0,5,2,0,1,1,1,2,1,0 0,0,3,2,2,1,1,0,1,1,1,1,1,0 1,5,0,3,0,12,2,0,1,1,1,0,1,1 2,0,3,2,0,7,2,0,1,1,1,0,1,1 0,0,3,2,2,8,1,0,1,1,1,0,1,0 1,0,10,3,1,5,5,0,0,1,1,0,1,1 0,0,1,2,2,2,3,0,0,1,1,2,1,0 1,4,3,2,4,5,5,2,0,1,1,2,1,0 1,0,0,3,1,4,3,0,1,1,1,1,1,0 1,0,9,1,2,2,1,0,1,1,1,0,1,0 0,0,5,2,2,6,1,0,1,1,1,0,1,0 0,4,3,2,2,8,1,0,1,1,1,1,1,0 1,3,0,3,0,5,2,0,1,1,1,0,1,1 0,4,0,3,2,12,3,0,0,1,1,2,1,0 0,4,5,2,2,12,1,0,1,1,1,0,1,0 0,0,3,2,2,6,3,0,1,1,1,0,1,0 2,0,3,2,0,8,2,0,1,1,1,0,1,0 0,0,1,2,0,8,0,0,0,1,1,0,1,0 0,0,1,2,2,8,3,0,0,1,1,0,1,0 2,1,0,3,0,4,2,0,1,1,1,2,1,0 0,0,1,2,1,7,3,4,1,1,1,0,1,0 1,5,3,2,0,0,2,0,1,1,1,0,1,0 1,0,3,2,1,1,3,0,1,1,1,0,1,0 0,0,3,2,2,2,3,0,1,1,1,0,1,0 1,0,2,1,2,2,3,4,1,1,1,0,1,0 0,0,2,1,2,2,1,0,0,1,1,2,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 0,0,3,2,0,10,2,0,1,1,1,0,1,0 1,0,3,2,0,9,2,0,1,1,1,1,1,1 0,0,1,2,0,0,2,0,1,1,1,0,1,0 1,0,2,1,0,3,2,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,3,0,3,0,4,2,0,1,1,1,0,1,1 1,0,0,3,0,5,2,0,1,1,1,1,1,1 0,2,3,2,1,1,3,4,1,1,1,1,1,0 1,3,3,2,2,10,3,0,1,1,1,1,1,0 0,0,0,3,2,3,3,1,1,1,1,1,1,0 0,4,3,2,0,1,2,0,1,1,1,1,1,0 0,1,3,2,0,9,2,0,1,1,1,1,1,0 1,0,0,3,1,4,3,0,0,1,1,0,1,0 2,1,3,2,4,1,3,0,1,1,1,1,1,0 2,0,0,3,0,4,2,0,1,1,1,0,1,1 0,0,3,2,0,7,2,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,0 0,0,5,2,0,3,0,0,0,1,1,1,1,1 0,0,3,2,0,6,2,0,1,1,1,0,1,0 1,0,3,2,0,2,4,4,0,1,1,0,1,0 1,4,6,2,1,4,3,2,1,1,1,1,1,0 0,0,6,2,2,3,1,0,1,1,1,0,1,0 1,3,0,3,0,5,2,0,1,1,1,0,1,1 0,0,14,0,2,7,3,0,0,1,1,1,1,0 0,0,3,2,1,3,3,0,1,1,1,1,1,0 1,0,3,2,1,1,5,0,0,1,1,0,1,0 0,0,12,1,2,9,1,0,1,1,1,2,1,0 2,2,6,2,1,4,5,0,1,1,1,2,1,0 0,1,3,2,0,1,2,0,1,1,1,2,1,0 1,1,10,3,1,5,3,0,0,1,1,1,1,0 0,0,2,1,2,9,1,0,1,1,1,2,1,0 1,4,3,2,3,8,4,0,0,1,1,2,1,0 2,1,3,2,0,10,2,0,1,1,1,2,1,0 2,1,12,1,0,9,2,0,1,1,1,1,1,1 1,0,3,2,1,2,3,0,0,1,1,2,1,0 1,0,0,3,0,1,2,0,1,1,1,2,1,0 1,0,3,2,0,7,2,0,1,1,1,2,1,0 0,3,3,2,2,0,1,0,0,1,1,0,1,0 1,0,10,3,2,5,3,1,0,1,1,0,1,0 2,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,0,3,2,8,3,0,1,1,1,0,1,0 0,0,1,2,1,4,5,0,0,1,1,0,1,0 1,4,3,2,0,2,2,4,1,1,1,0,1,0 1,4,6,2,1,5,5,0,0,1,1,1,1,0 2,0,8,0,0,3,2,0,1,1,1,1,1,0 1,5,6,2,0,4,2,0,1,1,1,2,1,1 1,0,0,3,3,3,3,0,0,1,1,0,1,0 0,0,2,1,2,2,1,0,0,1,1,2,1,0 0,5,1,2,2,8,4,0,1,1,1,2,1,0 0,4,0,3,1,5,1,0,1,1,1,0,1,0 1,0,3,2,1,7,3,0,1,1,1,0,1,0 0,0,1,2,2,8,1,0,1,1,1,2,1,0 0,0,1,2,0,6,2,0,1,1,1,0,1,0 0,4,10,3,0,5,2,0,1,1,1,0,1,0 1,2,3,2,0,3,2,0,1,1,1,1,1,0 2,0,3,2,1,8,3,0,0,1,1,2,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,6,2,0,8,2,4,1,1,1,0,1,0 0,0,3,2,2,2,3,0,1,1,1,2,1,0 0,0,0,3,2,4,3,0,1,1,1,1,1,0 1,0,9,1,0,2,2,0,1,1,1,0,1,0 0,1,3,2,0,9,2,0,1,1,1,1,1,0 0,0,3,2,0,0,2,0,1,1,1,0,1,0 1,0,1,2,0,3,2,0,1,1,1,1,1,1 0,5,1,2,2,8,1,0,1,1,1,2,1,0 1,0,6,2,0,5,2,1,1,1,1,0,1,1 1,0,6,2,0,1,2,0,1,1,1,0,1,0 3,0,14,0,0,2,2,0,1,1,1,2,1,0 0,0,4,3,2,5,3,0,0,1,1,0,1,0 0,0,1,2,2,2,3,4,0,1,1,2,1,0 0,0,4,3,0,5,2,0,1,1,1,2,1,1 1,0,3,2,0,3,2,0,1,1,1,2,1,1 1,0,3,2,3,0,3,4,0,1,1,0,1,0 0,4,0,3,2,12,3,0,0,1,1,1,1,0 2,0,3,2,0,3,2,0,1,1,1,0,1,0 1,0,3,2,2,2,3,0,1,1,1,2,1,0 1,0,0,3,2,8,5,4,0,1,1,1,1,0 0,0,1,2,2,2,1,0,1,1,1,0,1,0 1,0,3,2,3,7,5,4,0,1,1,0,1,0 1,0,3,2,1,7,5,0,0,1,1,1,1,0 2,1,0,3,0,5,2,0,1,1,1,0,1,1 1,0,10,3,0,4,2,0,1,1,1,1,1,1 1,2,1,2,0,9,2,0,1,1,1,1,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,1 2,0,7,1,4,6,5,0,1,1,1,0,1,0 0,0,5,2,2,9,3,4,0,1,1,0,1,0 0,3,1,2,2,8,3,0,1,1,1,1,1,0 2,0,1,2,4,4,3,0,0,1,1,0,1,0 2,0,3,2,0,1,2,0,1,1,1,0,1,1 2,0,0,3,0,5,2,0,1,1,1,0,1,1 1,0,2,1,0,1,2,0,1,1,1,1,1,0 1,0,1,2,3,3,3,0,1,1,1,1,1,0 0,0,6,2,2,3,3,2,1,1,1,1,1,0 1,0,6,2,1,2,5,0,0,1,1,2,1,0 1,0,1,2,1,3,5,0,1,1,1,1,1,0 0,0,1,2,2,0,3,0,0,1,1,0,1,0 0,2,3,2,2,8,1,0,0,1,1,2,1,0 1,1,4,3,0,5,2,0,1,1,1,2,1,1 2,1,1,2,0,1,2,0,1,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,1,1,0 0,0,3,2,0,7,2,0,1,1,1,1,1,1 2,1,3,2,0,3,0,0,0,1,1,1,1,0 0,0,1,2,2,2,1,1,0,1,1,0,1,0 0,0,1,2,2,8,1,0,0,1,1,2,1,0 0,4,0,3,2,0,3,0,0,1,1,0,1,0 0,0,5,2,2,7,3,0,0,1,1,1,1,0 1,0,2,1,3,0,5,0,0,1,1,0,1,0 2,0,1,2,4,8,3,0,0,1,1,2,1,0 0,4,0,3,2,5,3,0,0,1,1,2,1,0 1,2,4,3,0,5,2,0,1,1,1,1,1,1 1,4,1,2,0,8,0,0,0,1,1,0,1,1 2,0,0,3,0,3,2,0,1,1,1,1,1,0 0,0,3,2,2,7,1,0,1,1,1,0,1,0 1,2,0,3,2,5,5,0,0,1,1,1,1,0 1,0,8,0,0,8,2,0,1,1,1,1,1,0 0,1,0,3,0,1,2,0,1,1,1,2,1,0 1,0,0,3,0,0,2,0,1,1,1,0,1,1 0,0,1,2,2,8,1,0,0,1,1,0,1,0 1,0,3,2,0,6,0,0,0,1,1,0,1,1 0,0,9,1,0,1,2,0,1,1,1,1,1,1 0,3,0,3,0,5,2,0,1,1,1,0,1,0 1,0,6,2,0,4,2,0,1,1,1,1,1,1 1,1,12,1,0,4,2,0,1,1,1,0,1,0 0,0,6,2,0,10,2,0,1,1,1,0,1,0 1,4,10,3,0,4,2,0,1,1,1,0,1,1 0,0,3,2,0,1,2,0,1,1,1,1,1,1 1,0,3,2,3,2,5,0,0,1,1,0,1,0 1,5,4,3,0,5,2,0,1,1,1,0,1,1 1,1,6,2,0,4,2,0,1,1,1,0,1,1 1,0,7,1,2,7,3,0,1,1,1,2,1,0 1,2,0,3,2,4,3,0,0,1,1,1,1,1 2,0,4,3,1,2,3,0,1,1,1,1,1,1 0,0,1,2,2,2,1,0,0,1,1,2,1,0 1,0,3,2,2,6,3,4,0,1,1,0,1,0 1,0,3,2,2,1,3,0,0,1,1,1,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,0 0,0,9,1,2,8,1,0,1,1,1,2,1,0 1,5,3,2,0,12,2,0,1,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,1 2,0,3,2,0,4,2,0,1,1,1,0,1,0 1,5,10,3,1,5,5,0,0,1,1,0,1,0 0,0,5,2,2,2,1,0,1,1,1,2,1,0 0,1,0,3,0,4,2,0,1,1,1,2,1,1 1,0,3,2,0,10,2,0,1,1,1,0,1,0 0,0,3,2,1,10,5,0,1,1,1,1,1,0 0,0,0,3,0,4,0,0,0,1,1,1,1,1 1,1,6,2,0,1,2,0,1,1,1,2,1,0 2,0,10,3,1,3,3,0,1,1,1,0,1,1 1,0,3,2,0,4,0,0,0,1,1,1,1,0 2,0,7,1,0,10,2,0,1,1,1,1,1,0 2,0,0,3,0,4,2,0,1,1,1,0,1,1 0,0,1,2,2,2,1,0,1,1,1,2,1,0 2,0,0,3,0,3,2,0,1,1,1,1,1,1 2,0,3,2,4,1,5,4,0,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,1,1,1 0,0,0,3,2,8,1,0,0,1,1,0,1,0 1,0,1,2,0,3,2,0,1,1,1,1,1,1 0,3,3,2,2,10,1,0,1,1,1,0,1,0 0,0,3,2,0,3,0,0,0,1,1,0,1,0 1,0,3,2,0,6,2,0,1,1,1,0,1,1 0,0,3,2,0,1,2,3,1,1,1,2,1,0 1,4,3,2,1,8,3,0,0,1,1,0,1,0 1,0,1,2,1,2,5,0,0,1,1,1,1,0 1,0,3,2,0,3,2,0,1,1,1,0,1,0 1,0,1,2,1,7,3,0,0,1,1,0,1,0 0,0,10,3,2,5,3,1,1,1,1,1,1,1 1,0,3,2,0,1,2,0,1,1,1,1,1,1 0,4,3,2,2,2,1,4,1,1,1,0,1,0 0,1,1,2,5,1,3,0,1,1,1,0,1,0 1,0,0,3,2,8,3,0,0,1,1,1,1,0 0,0,10,3,0,1,2,0,1,1,1,0,1,0 0,5,1,2,2,4,3,0,1,1,1,0,1,0 1,5,1,2,1,4,3,0,0,1,1,0,1,0 0,0,3,2,0,3,2,0,1,1,1,0,1,0 1,0,3,2,1,6,5,0,1,1,1,0,1,0 0,0,0,3,0,3,2,0,1,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,10,3,1,3,3,0,1,1,1,1,1,0 0,0,0,3,0,8,2,0,1,1,1,1,1,1 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,0,1,0,0,0,1,1,0,1,0 1,4,1,2,1,4,3,0,0,1,1,1,1,0 1,0,14,0,0,2,0,1,0,1,1,0,1,1 2,0,0,3,0,12,0,0,0,1,1,1,1,1 1,5,10,3,2,8,3,4,0,1,1,1,1,0 0,0,1,2,2,10,1,0,1,1,1,2,1,0 1,0,5,2,0,1,2,0,1,1,1,0,1,1 0,0,2,1,0,1,2,0,1,1,1,1,1,0 2,1,10,3,0,9,2,0,1,1,1,1,1,0 0,0,1,2,0,8,0,0,0,1,1,0,1,0 1,0,3,2,0,5,2,0,1,1,1,0,1,0 3,0,3,2,2,8,3,0,0,1,1,0,1,1 1,0,0,3,0,3,2,0,1,1,1,1,1,1 1,0,8,0,2,2,1,0,1,1,1,0,1,0 0,0,9,1,2,2,1,0,1,1,1,2,1,0 1,0,11,0,0,9,2,0,1,1,1,1,1,0 0,1,3,2,5,2,3,0,0,1,1,0,1,0 0,0,3,2,2,3,1,0,0,1,1,0,1,0 0,0,5,2,2,7,3,0,0,1,1,1,1,1 2,5,1,2,0,4,2,0,1,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,1,2,2,8,3,0,0,1,1,0,1,0 1,2,4,3,0,5,2,0,1,1,1,1,1,1 1,0,1,2,2,8,4,3,1,1,1,0,1,0 1,0,5,2,0,7,2,0,1,1,1,1,1,0 1,0,11,0,2,8,5,0,0,1,1,2,1,0 0,0,4,3,0,5,2,0,1,1,1,1,1,1 0,0,1,2,2,8,1,0,0,1,1,2,1,0 0,0,0,3,2,8,1,4,0,1,1,0,1,0 1,4,1,2,0,12,2,0,1,1,1,0,1,1 1,0,3,2,0,12,2,4,1,1,1,0,1,1 0,0,1,2,2,6,1,4,1,1,1,2,1,0 1,0,3,2,2,2,1,0,1,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,3,2,3,0,0,1,1,2,1,0 1,0,3,2,2,9,3,0,1,1,1,1,1,0 0,0,1,2,2,7,1,4,0,1,1,1,1,0 0,0,1,2,1,8,5,4,0,1,1,1,1,0 0,0,3,2,0,8,2,0,1,1,1,0,1,0 0,1,12,1,2,3,1,0,0,1,1,0,1,0 1,0,1,2,0,4,2,0,1,1,1,0,1,1 0,0,0,3,0,5,0,0,0,1,1,1,1,0 1,0,1,2,0,1,2,0,1,1,1,1,1,1 0,0,1,2,2,6,1,4,1,1,1,2,1,0 1,0,1,2,0,4,2,0,1,1,1,1,1,1 0,4,6,2,2,4,1,0,0,1,1,0,1,0 1,3,0,3,2,8,3,0,1,1,1,1,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,1 1,3,3,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,2,3,1,0,1,1,1,0,1,0 0,0,3,2,0,2,2,0,1,1,1,1,1,0 0,0,3,2,2,3,1,0,0,1,1,1,1,0 0,0,1,2,2,8,3,0,0,1,1,2,1,0 0,4,3,2,2,1,3,0,1,1,1,2,1,0 1,1,3,2,0,10,2,0,1,1,1,1,1,0 0,0,2,1,2,6,3,0,1,1,1,0,1,0 3,1,4,3,0,5,2,0,1,1,1,2,1,0 0,0,10,3,2,4,3,0,0,1,1,0,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,1 1,0,3,2,0,1,2,0,1,1,1,0,1,1 1,0,1,2,1,7,3,4,0,1,1,0,1,0 0,0,3,2,2,3,1,0,0,1,1,2,1,0 1,0,10,3,0,3,2,0,1,1,1,0,1,0 2,3,3,2,0,8,2,4,1,1,1,0,1,0 1,0,6,2,2,5,3,0,1,1,1,0,1,0 0,0,0,3,0,5,2,0,1,1,1,0,1,1 2,0,9,1,1,12,3,0,1,1,1,2,1,0 1,0,3,2,3,8,5,4,0,1,1,0,1,0 0,0,5,2,0,3,2,0,1,1,1,1,1,1 1,0,3,2,0,2,0,0,0,1,1,0,1,0 0,0,0,3,2,5,3,0,0,1,1,2,1,0 1,0,1,2,0,1,2,0,1,1,1,1,1,1 0,0,3,2,2,1,1,0,1,1,1,0,1,0 0,0,1,2,2,7,5,4,1,1,1,0,1,0 1,1,0,3,0,4,2,0,1,1,1,1,1,1 1,0,0,3,1,5,5,4,0,1,1,1,1,0 1,2,4,3,2,3,3,0,0,1,1,1,1,0 1,4,0,3,0,5,2,0,1,1,1,1,1,0 0,0,0,3,2,3,3,0,0,1,1,2,1,0 0,4,0,3,2,5,3,0,0,1,1,2,1,0 1,1,5,2,0,4,2,0,1,1,1,1,1,0 0,0,3,2,2,4,1,0,0,1,1,1,1,0 2,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,0,10,2,3,1,1,1,0,1,0 1,1,3,2,0,10,2,0,1,1,1,1,1,0 1,0,9,1,0,1,2,0,1,1,1,0,1,1 1,0,3,2,1,2,3,0,1,1,1,0,1,0 0,0,0,3,2,2,3,0,0,1,1,2,1,0 0,0,3,2,2,3,1,4,0,1,1,2,1,0 0,2,3,2,1,2,5,0,1,1,1,2,1,0 0,0,0,3,2,5,1,0,1,1,1,1,1,0 2,0,1,2,4,4,3,0,1,1,1,1,1,0 2,5,0,3,0,5,2,0,1,1,1,1,1,0 1,0,3,2,2,11,4,4,0,1,1,0,1,0 0,1,6,2,2,9,1,0,1,1,1,0,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,1 2,5,5,2,1,8,3,0,1,1,1,2,1,0 0,2,0,3,0,4,2,0,1,1,1,1,1,1 1,1,1,2,0,3,2,0,1,1,1,2,1,0 1,1,3,2,0,9,2,0,1,1,1,1,1,0 1,0,1,2,1,3,5,4,0,1,1,2,1,0 1,0,0,3,0,5,2,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,2,1,0 1,4,3,2,0,8,0,2,0,1,1,0,1,0 0,0,1,2,2,2,3,0,0,1,1,1,1,0 2,0,3,2,4,2,3,0,0,1,1,2,1,0 1,4,10,3,0,5,2,0,1,1,1,1,1,1 2,0,3,2,0,10,2,0,1,1,1,2,1,1 1,0,3,2,2,8,1,4,0,1,1,0,1,0 0,0,3,2,2,7,3,0,1,1,1,0,1,0 0,3,3,2,2,5,5,4,0,1,1,0,1,0 1,0,3,2,1,2,5,0,0,1,1,0,1,0 1,4,12,1,0,2,2,0,1,1,1,0,1,0 0,0,3,2,0,6,2,0,1,1,1,0,1,0 1,0,3,2,0,10,2,4,1,1,1,1,1,0 0,1,6,2,2,1,3,0,1,1,1,1,1,0 2,0,3,2,1,10,3,0,1,1,1,1,1,1 0,3,3,2,2,2,1,0,0,1,1,0,1,0 2,0,3,2,1,3,3,0,0,1,1,2,1,0 0,0,3,2,2,3,1,0,0,1,1,2,1,0 1,0,10,3,0,1,2,0,1,1,1,1,1,1 0,0,4,3,0,5,2,1,1,1,1,0,1,0 3,0,1,2,0,12,2,0,1,1,1,0,1,0 0,5,1,2,0,12,2,0,1,1,1,1,1,0 2,1,3,2,0,9,2,0,1,1,1,2,1,0 1,0,0,3,0,7,2,0,1,1,1,0,1,1 1,0,3,2,0,3,2,0,1,1,1,1,1,1 1,0,1,2,1,10,3,0,1,1,1,1,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,2,8,1,0,0,1,1,2,1,0 0,0,6,2,0,1,2,0,1,1,1,0,1,0 1,0,1,2,1,7,3,4,1,1,1,0,1,0 1,5,10,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,2,6,5,0,1,1,1,1,1,0 1,0,12,1,0,1,2,0,1,1,1,0,1,0 0,0,12,1,2,2,1,0,0,1,1,2,1,0 1,0,5,2,0,1,2,0,1,1,1,1,1,0 2,2,3,2,0,3,2,0,1,1,1,1,1,0 0,0,6,2,2,3,3,0,1,1,1,0,1,0 1,2,4,3,0,5,2,0,1,1,1,0,1,1 1,4,3,2,0,4,2,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 0,2,3,2,2,8,3,0,0,1,1,0,1,0 1,4,3,2,2,12,5,4,1,1,1,0,1,0 3,0,12,1,4,0,3,0,0,1,1,2,1,0 1,0,3,2,2,8,3,0,0,1,1,0,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,0 0,3,0,3,0,8,0,1,0,1,1,0,1,1 2,0,3,2,4,3,5,0,0,1,1,2,1,0 0,0,2,1,0,1,2,0,1,1,1,0,1,0 0,0,2,1,0,6,2,0,1,1,1,0,1,0 1,0,1,2,3,8,3,0,0,1,1,0,1,0 2,5,1,2,1,10,3,0,1,1,1,0,1,0 3,1,7,1,4,2,3,0,0,1,1,0,1,0 2,2,3,2,0,4,2,0,1,1,1,0,1,0 0,0,1,2,0,3,2,0,1,1,1,1,1,0 0,0,3,2,2,2,1,4,1,1,1,2,1,0 1,0,1,2,1,0,5,0,0,1,1,0,1,0 1,0,10,3,0,0,2,0,1,1,1,2,1,0 2,0,6,2,1,8,3,0,0,1,1,0,1,0 0,0,3,2,2,7,1,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,2,1,0 0,0,12,1,0,2,2,0,1,1,1,2,1,0 1,0,3,2,0,4,2,0,1,1,1,1,1,0 0,0,5,2,2,3,1,0,0,1,1,2,1,0 0,0,2,1,2,1,3,0,1,1,1,0,1,0 0,0,3,2,2,8,1,0,0,1,1,2,1,0 1,0,3,2,0,5,2,0,1,1,1,0,1,0 1,2,10,3,3,4,5,1,1,1,1,1,1,0 1,4,10,3,0,4,2,0,1,1,1,0,1,0 1,0,0,3,1,5,3,0,1,1,1,1,1,1 0,0,3,2,2,2,4,0,0,1,1,1,1,0 0,5,10,3,2,5,3,0,0,1,1,0,1,0 0,0,0,3,0,5,2,0,1,1,1,0,1,1 1,0,4,3,2,5,3,1,0,1,1,1,1,1 2,0,12,1,4,10,3,0,1,1,1,0,1,0 0,0,0,3,2,8,5,0,0,1,1,1,1,0 1,0,1,2,1,4,5,0,0,1,1,0,1,0 1,0,2,1,0,2,2,0,1,1,1,1,1,0 0,0,0,3,2,5,3,0,0,1,1,0,1,0 0,4,10,3,2,5,3,0,0,1,1,0,1,0 0,0,1,2,2,6,1,0,1,1,1,2,1,0 1,0,2,1,1,8,3,0,1,1,1,0,1,0 0,0,10,3,2,2,5,4,0,1,1,2,1,0 1,0,1,2,0,3,2,4,1,1,1,1,1,1 1,0,1,2,2,1,3,0,1,1,1,0,1,0 0,0,3,2,2,1,1,0,0,1,1,1,1,0 1,0,1,2,2,6,1,0,1,1,1,0,1,0 0,0,3,2,0,5,2,0,1,1,1,2,1,0 0,1,3,2,0,3,2,0,1,1,1,1,1,1 1,0,3,2,1,10,3,0,1,1,1,1,1,0 1,0,7,1,2,11,3,0,0,1,1,2,1,0 1,0,1,2,0,1,2,0,1,1,1,1,1,0 1,0,1,2,0,3,2,0,1,1,1,1,1,0 0,0,3,2,0,7,0,4,0,1,1,2,1,0 1,0,0,3,0,5,2,1,1,1,1,0,1,1 2,0,12,1,5,1,3,0,1,1,1,1,1,0 0,0,1,2,2,0,1,0,0,1,1,0,1,0 2,0,1,2,0,2,2,1,1,1,1,0,1,0 1,1,1,2,0,1,2,0,1,1,1,1,1,0 0,0,1,2,2,3,5,0,1,1,1,0,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,3,2,0,6,2,0,1,1,1,0,1,1 1,0,3,2,1,2,3,0,0,1,1,0,1,0 0,5,3,2,1,8,3,0,1,1,1,0,1,0 1,0,3,2,1,2,5,4,0,1,1,2,1,0 1,3,6,2,0,8,2,0,1,1,1,1,1,1 0,0,12,1,0,6,2,0,1,1,1,2,1,0 1,0,3,2,3,3,5,0,0,1,1,0,1,0 0,0,3,2,0,10,2,0,1,1,1,1,1,0 0,1,6,2,2,2,3,0,1,1,1,0,1,0 1,4,5,2,0,12,2,0,1,1,1,0,1,1 1,0,1,2,0,10,2,0,1,1,1,1,1,1 0,0,10,3,2,5,3,0,0,1,1,1,1,0 0,2,10,3,2,3,1,0,0,1,1,0,1,1 0,0,3,2,0,1,2,0,1,1,1,1,1,0 0,0,4,3,2,5,3,0,1,1,1,1,1,0 0,0,1,2,2,8,5,4,0,1,1,0,1,0 1,0,0,3,0,8,0,0,0,1,1,0,1,1 0,0,3,2,2,6,5,4,0,1,1,0,1,0 0,0,3,2,2,1,1,0,1,1,1,0,1,0 0,0,2,1,2,3,1,0,0,1,1,2,1,0 2,1,3,2,0,9,2,0,1,1,1,1,1,0 2,0,11,0,0,10,2,0,1,1,1,0,1,0 1,1,3,2,2,9,3,0,1,1,1,1,1,0 0,0,0,3,2,8,1,0,0,1,1,0,1,0 1,1,3,2,0,1,2,4,1,1,1,1,1,1 2,0,1,2,0,4,2,0,1,1,1,1,1,0 1,4,5,2,1,12,3,1,1,1,1,1,1,1 0,0,1,2,2,3,1,0,0,1,1,0,1,0 0,0,3,2,2,10,1,0,1,1,1,0,1,0 1,0,14,0,0,2,2,0,1,1,1,2,1,0 0,0,3,2,0,1,2,0,1,1,1,1,1,0 0,1,3,2,0,10,2,0,1,1,1,1,1,1 0,0,2,1,2,3,1,0,0,1,1,2,1,0 0,0,1,2,2,3,3,0,1,1,1,0,1,0 0,0,3,2,0,4,4,1,1,1,1,1,1,0 0,4,1,2,0,8,0,0,0,1,1,0,1,0 1,0,10,3,0,3,2,0,1,1,1,0,1,1 0,0,0,3,0,3,2,0,1,1,1,2,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,0 2,4,6,2,0,4,2,0,1,1,1,2,1,0 0,0,3,2,0,1,2,4,1,1,1,0,1,0 0,0,3,2,5,2,1,0,0,1,1,2,1,0 0,0,1,2,0,0,2,0,1,1,1,1,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 2,2,1,2,0,1,2,0,1,1,1,1,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,1 0,1,3,2,2,2,1,0,0,1,1,0,1,0 0,0,1,2,2,2,1,0,1,1,1,2,1,0 1,0,0,3,2,5,3,0,0,1,1,2,1,0 1,0,0,3,0,5,2,0,1,1,1,2,1,0 0,0,3,2,2,7,3,0,1,1,1,1,1,0 1,0,3,2,2,2,3,4,1,1,1,0,1,0 0,0,1,2,2,5,3,0,1,1,1,0,1,0 0,0,1,2,2,2,3,1,1,1,1,2,1,0 1,0,3,2,1,3,3,0,0,1,1,0,1,0 0,0,1,2,2,8,5,0,0,1,1,0,1,0 1,0,1,2,1,3,3,0,1,1,1,0,1,0 2,2,1,2,0,3,2,0,1,1,1,1,1,1 0,0,2,1,2,6,1,0,1,1,1,2,1,0 0,5,1,2,2,5,1,0,1,1,1,2,1,0 1,0,1,2,1,0,3,2,1,1,1,0,1,1 1,0,3,2,0,1,2,0,1,1,1,0,1,1 0,0,0,3,2,4,3,0,1,1,1,0,1,0 0,0,3,2,1,3,5,0,0,1,1,1,1,0 1,0,0,3,0,3,0,0,0,1,1,2,1,1 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,0,3,2,0,1,1,1,1,1,1 0,3,6,2,1,8,1,4,0,1,1,0,1,0 1,4,1,2,4,8,5,0,0,1,1,0,1,0 0,0,1,2,2,2,1,0,1,1,1,2,1,0 1,1,3,2,1,2,5,0,0,1,1,1,1,0 2,1,3,2,0,3,0,0,0,1,1,0,1,0 1,1,3,2,0,9,2,0,1,1,1,1,1,1 1,0,13,3,0,5,2,0,1,1,1,1,1,1 0,0,1,2,0,4,2,0,1,1,1,0,1,0 0,0,0,3,2,5,3,0,1,1,1,0,1,0 2,0,3,2,0,2,2,0,1,1,1,2,1,0 2,0,0,3,2,8,3,0,0,1,1,0,1,0 0,0,10,3,0,5,2,3,1,1,1,1,1,1 0,0,3,2,2,4,3,0,1,1,1,1,1,0 2,0,1,2,0,1,2,0,1,1,1,0,1,0 3,2,14,0,0,4,2,1,1,1,1,2,1,0 0,0,3,2,0,8,2,0,1,1,1,1,1,0 0,0,2,1,0,1,2,0,1,1,1,1,1,0 2,0,3,2,1,3,3,0,1,1,1,0,1,0 2,2,4,3,1,5,3,0,1,1,1,1,1,1 1,0,1,2,0,4,2,0,1,1,1,1,1,0 1,0,3,2,0,10,2,0,1,1,1,0,1,0 0,4,3,2,0,12,2,4,1,1,1,1,1,1 1,0,0,3,1,5,5,0,0,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 1,5,5,2,2,8,3,4,1,1,1,0,1,0 0,0,2,1,0,6,2,0,1,1,1,0,1,0 0,4,1,2,2,2,5,4,0,1,1,0,1,0 1,4,1,2,0,4,2,0,1,1,1,0,1,1 2,0,8,0,0,6,2,0,1,1,1,2,1,0 0,1,3,2,0,1,2,0,1,1,1,0,1,0 1,1,5,2,0,3,2,1,1,1,1,1,1,0 2,0,3,2,2,8,4,0,0,1,1,0,1,0 0,0,5,2,2,3,1,0,0,1,1,0,1,0 0,0,5,2,0,4,0,0,0,1,1,0,1,0 0,1,1,2,0,3,2,0,1,1,1,1,1,1 0,0,2,1,3,1,3,4,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 0,0,5,2,2,6,3,0,1,1,1,2,1,0 1,0,3,2,0,3,2,0,1,1,1,0,1,0 0,4,0,3,1,5,5,0,0,1,1,0,1,0 2,0,10,3,0,5,2,0,1,1,1,1,1,1 2,0,0,3,1,8,3,0,0,1,1,2,1,0 0,0,3,2,2,3,1,1,0,1,1,0,1,0 0,0,3,2,2,1,1,0,1,1,1,1,1,0 1,0,0,3,0,3,2,0,1,1,1,1,1,1 1,2,8,0,0,5,2,0,1,1,1,1,1,0 0,5,1,2,2,0,1,0,1,1,1,2,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 1,2,1,2,2,3,3,0,1,1,1,1,1,0 0,0,3,2,3,1,1,0,1,1,1,0,1,0 2,1,3,2,0,9,2,0,1,1,1,1,1,0 0,0,2,1,2,2,1,4,1,1,1,0,1,0 1,0,1,2,0,2,2,0,1,1,1,0,1,0 1,0,3,2,3,2,5,4,0,1,1,2,1,0 0,0,3,2,2,3,3,0,0,1,1,2,1,0 0,0,3,2,2,10,3,0,1,1,1,0,1,0 0,2,3,2,0,3,2,0,1,1,1,0,1,1 2,1,8,0,0,1,2,0,1,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 1,5,0,3,0,4,2,0,1,1,1,0,1,1 0,4,3,2,2,8,3,4,0,1,1,2,1,0 1,3,0,3,0,12,2,0,1,1,1,0,1,0 2,1,3,2,0,3,2,0,1,1,1,1,1,0 0,0,12,1,2,2,4,0,1,1,1,2,1,0 2,0,1,2,0,10,2,0,1,1,1,1,1,0 0,4,0,3,2,5,3,0,0,1,1,0,1,0 1,0,3,2,2,5,3,4,0,1,1,0,1,0 0,0,0,3,2,3,3,0,0,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,1 2,4,10,3,0,5,2,0,1,1,1,1,1,1 2,0,3,2,1,12,3,0,1,1,1,0,1,0 1,5,0,3,3,5,5,0,0,1,1,0,1,0 1,1,3,2,0,9,2,0,1,1,1,1,1,0 1,3,0,3,0,5,0,0,0,1,1,1,1,1 1,3,0,3,0,4,2,0,1,1,1,0,1,1 0,0,3,2,0,12,2,0,1,1,1,0,1,1 0,0,9,1,2,2,1,0,0,1,1,2,1,0 0,1,13,3,0,5,2,0,1,1,1,0,1,1 0,0,3,2,2,7,1,0,1,1,1,0,1,0 2,0,0,3,0,5,2,0,1,1,1,0,1,1 0,0,1,2,2,3,1,0,1,1,1,2,1,0 2,1,3,2,3,1,3,4,1,1,1,0,1,0 0,0,2,1,2,6,1,0,1,1,1,2,1,0 0,4,0,3,2,12,3,0,0,1,1,1,1,0 1,5,0,3,0,5,2,0,1,1,1,2,1,1 0,5,3,2,0,2,0,0,0,1,1,0,1,0 1,0,3,2,0,10,2,0,1,1,1,0,1,0 0,0,3,2,2,3,4,4,0,1,1,2,1,0 1,0,6,2,3,1,3,0,0,1,1,0,1,0 0,0,1,2,2,2,3,0,1,1,1,2,1,0 2,4,3,2,0,12,2,0,1,1,1,0,1,0 1,1,0,3,1,2,5,0,0,1,1,2,1,0 2,0,12,1,4,10,3,0,0,1,1,0,1,0 1,0,1,2,3,3,3,0,0,1,1,2,1,0 1,4,0,3,0,4,2,0,1,1,1,0,1,0 1,2,4,3,0,5,2,0,1,1,1,1,1,1 0,0,3,2,2,7,3,0,1,1,1,0,1,0 0,0,1,2,2,8,1,0,0,1,1,0,1,0 1,0,1,2,0,3,2,0,1,1,1,1,1,0 0,0,5,2,0,5,0,0,0,1,1,0,1,1 0,0,2,1,2,3,1,0,0,1,1,2,1,0 0,0,5,2,2,8,4,4,0,1,1,1,1,0 3,0,12,1,4,2,3,0,0,1,1,2,1,0 0,0,3,2,2,8,1,0,0,1,1,0,1,0 0,4,1,2,2,8,3,0,0,1,1,0,1,0 0,0,10,3,2,4,3,0,1,1,1,1,1,0 2,0,3,2,0,1,2,0,1,1,1,0,1,0 1,4,6,2,3,1,5,4,1,1,1,0,1,0 1,0,1,2,1,3,3,0,1,1,1,0,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,1 1,0,9,1,0,7,2,0,1,1,1,1,1,0 0,0,9,1,2,3,1,0,0,1,1,2,1,0 2,4,0,3,0,5,2,0,1,1,1,0,1,1 1,0,10,3,1,2,3,0,0,1,1,1,1,0 0,0,3,2,2,8,3,0,0,1,1,2,1,0 0,0,1,2,2,4,3,0,0,1,1,2,1,0 1,0,13,3,0,5,2,0,1,1,1,0,1,1 0,3,1,2,2,0,1,0,1,1,1,2,1,0 0,1,3,2,2,1,4,0,1,1,1,0,1,0 3,2,13,3,4,5,3,0,1,1,1,2,1,1 1,0,0,3,2,3,3,0,1,1,1,1,1,0 1,2,12,1,0,4,2,0,1,1,1,1,1,0 0,0,3,2,2,0,1,0,0,1,1,2,1,0 1,0,1,2,2,1,3,0,1,1,1,0,1,0 0,0,3,2,2,2,3,4,0,1,1,1,1,0 1,0,3,2,0,6,2,4,1,1,1,0,1,0 1,3,1,2,0,4,2,0,1,1,1,0,1,0 2,0,1,2,2,5,3,0,0,1,1,2,1,1 0,0,0,3,1,10,3,0,1,1,1,0,1,0 0,0,15,0,0,1,2,0,1,1,1,2,1,0 0,0,0,3,2,4,3,0,1,1,1,0,1,0 2,5,0,3,2,4,3,0,0,1,1,0,1,0 2,0,13,3,2,5,3,0,1,1,1,0,1,0 2,0,3,2,0,1,2,0,1,1,1,2,1,0 0,0,2,1,2,3,4,0,1,1,1,2,1,0 0,0,3,2,2,7,1,0,1,1,1,0,1,0 1,1,3,2,0,3,2,0,1,1,1,1,1,0 1,0,5,2,0,5,2,0,1,1,1,0,1,1 1,0,14,0,0,7,2,0,1,1,1,0,1,0 0,1,3,2,2,4,3,0,1,1,1,1,1,0 1,0,1,2,2,3,3,0,0,1,1,0,1,0 0,0,6,2,0,5,2,0,1,1,1,1,1,1 2,0,1,2,0,5,2,0,1,1,1,2,1,1 0,0,1,2,1,3,3,0,0,1,1,0,1,0 0,0,1,2,2,10,5,4,1,1,1,2,1,0 0,0,4,3,0,5,2,1,1,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,0 1,1,14,0,0,1,2,0,1,1,1,2,1,0 0,0,1,2,0,1,2,0,1,1,1,1,1,0 1,0,9,1,1,2,5,0,0,1,1,1,1,0 0,3,2,1,2,8,1,2,0,1,1,2,1,0 0,0,0,3,2,8,3,4,1,1,1,1,1,0 1,2,5,2,0,4,0,0,0,1,1,2,1,1 0,0,14,0,2,6,3,0,1,1,1,0,1,0 2,0,1,2,0,10,2,0,1,1,1,1,1,1 1,0,1,2,1,2,5,0,0,1,1,2,1,0 1,0,0,3,1,1,3,1,0,1,1,0,1,0 1,0,3,2,0,7,2,4,1,1,1,1,1,0 1,0,3,2,2,2,3,4,1,1,1,1,1,0 2,5,0,3,0,5,2,0,1,1,1,0,1,0 0,0,9,1,2,2,1,4,0,1,1,2,1,0 0,0,3,2,0,8,0,1,0,1,1,0,1,0 0,1,6,2,1,2,5,0,0,1,1,1,1,0 0,0,0,3,2,0,3,3,1,1,1,0,1,0 2,0,1,2,0,8,2,0,1,1,1,2,1,1 0,1,7,1,2,1,5,0,1,1,1,1,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,0 2,2,3,2,0,10,2,0,1,1,1,0,1,0 2,0,1,2,3,7,4,4,0,1,1,2,1,0 0,0,0,3,0,3,2,0,1,1,1,1,1,1 1,0,6,2,0,1,2,0,1,1,1,0,1,1 0,3,3,2,0,2,0,0,0,1,1,0,1,1 1,1,4,3,0,5,0,0,0,1,1,2,1,1 0,0,1,2,2,3,3,0,0,1,1,2,1,0 1,0,7,1,4,4,5,0,0,1,1,1,1,0 1,0,1,2,0,7,2,0,1,1,1,2,1,0 1,1,12,1,1,2,1,0,0,1,1,2,1,0 0,0,0,3,0,5,0,3,0,1,1,0,1,0 1,0,1,2,3,6,3,0,1,1,1,0,1,0 1,2,1,2,2,3,3,0,1,1,1,1,1,0 1,2,1,2,0,4,2,0,1,1,1,1,1,1 0,0,1,2,2,2,3,0,0,1,1,2,1,0 1,0,3,2,0,10,2,0,1,1,1,1,1,0 0,2,3,2,0,2,2,0,1,1,1,1,1,0 0,0,2,1,3,6,4,0,0,1,1,0,1,0 0,0,3,2,2,2,1,4,0,1,1,0,1,0 1,0,7,1,1,7,5,0,0,1,1,0,1,0 1,0,5,2,1,1,3,0,1,1,1,1,1,0 0,4,2,1,2,5,1,4,0,1,1,0,1,0 0,0,0,3,0,3,2,0,1,1,1,0,1,1 0,0,1,2,0,3,2,0,1,1,1,1,1,0 1,3,3,2,0,2,2,0,1,1,1,0,1,0 0,0,0,3,0,1,2,0,1,1,1,0,1,0 0,0,2,1,2,2,1,0,0,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,1 1,2,4,3,0,5,2,0,1,1,1,1,1,1 2,0,7,1,4,2,5,4,0,1,1,0,1,0 1,1,0,3,0,4,2,0,1,1,1,1,1,1 0,0,0,3,0,8,2,0,1,1,1,0,1,1 0,0,3,2,1,2,5,0,0,1,1,0,1,0 1,0,3,2,3,8,3,0,0,1,1,1,1,1 1,0,3,2,3,6,5,2,1,1,1,1,1,0 1,1,0,3,0,1,2,0,1,1,1,0,1,1 1,4,10,3,1,5,3,0,0,1,1,2,1,1 2,0,8,0,4,11,3,0,0,1,1,1,1,0 0,0,6,2,0,3,2,0,1,1,1,0,1,0 1,5,1,2,1,4,5,0,1,1,1,0,1,0 2,0,1,2,2,5,3,0,0,1,1,2,1,0 1,0,1,2,0,4,2,0,1,1,1,1,1,1 0,0,5,2,0,3,2,0,1,1,1,2,1,1 0,0,1,2,2,6,1,0,1,1,1,2,1,0 0,0,1,2,2,8,1,4,0,1,1,0,1,0 1,0,1,2,2,3,3,4,0,1,1,0,1,0 1,2,13,3,0,3,2,1,1,1,1,0,1,1 1,0,6,2,1,0,3,0,0,1,1,0,1,0 1,0,3,2,1,10,3,0,1,1,1,1,1,0 0,0,3,2,2,3,1,0,1,1,1,0,1,0 2,3,0,3,0,4,2,0,1,1,1,0,1,1 1,4,1,2,0,5,2,0,1,1,1,0,1,1 1,0,5,2,0,4,2,0,1,1,1,1,1,0 0,0,9,1,2,2,1,0,1,1,1,2,1,0 0,0,2,1,2,9,5,0,1,1,1,1,1,0 1,0,1,2,1,7,1,0,1,1,1,0,1,0 1,3,1,2,1,8,3,0,0,1,1,2,1,0 2,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,1,2,0,8,0,0,0,1,1,0,1,0 0,0,3,2,1,7,5,0,0,1,1,0,1,0 1,0,3,2,1,10,1,0,1,1,1,0,1,0 0,0,3,2,2,8,1,0,0,1,1,2,1,0 0,0,3,2,0,8,2,0,1,1,1,0,1,1 0,0,3,2,3,1,1,0,1,1,1,0,1,0 0,0,1,2,2,8,5,3,0,1,1,0,1,0 2,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,6,2,1,1,3,0,1,1,1,0,1,0 0,0,8,0,2,1,1,0,1,1,1,2,1,0 0,4,3,2,2,12,3,4,1,1,1,0,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,1 1,0,1,2,1,3,5,0,1,1,1,1,1,0 0,3,1,2,2,4,3,4,1,1,1,0,1,0 0,0,3,2,2,6,1,4,1,1,1,1,1,0 1,0,13,3,0,3,2,0,1,1,1,1,1,1 0,0,3,2,2,8,1,4,0,1,1,0,1,0 0,0,3,2,2,7,3,0,1,1,1,0,1,0 0,0,9,1,0,1,2,4,1,1,1,2,1,0 0,0,1,2,2,2,3,0,1,1,1,1,1,0 1,0,7,1,0,0,0,0,0,1,1,1,1,0 1,0,3,2,0,6,2,0,1,1,1,1,1,0 1,0,3,2,3,8,5,0,0,1,1,1,1,0 1,0,10,3,2,5,3,0,0,1,1,0,1,0 0,0,3,2,2,3,3,0,1,1,1,0,1,0 0,0,0,3,0,5,0,1,0,1,1,0,1,1 0,4,3,2,2,1,1,0,1,1,1,0,1,0 0,1,0,3,0,4,2,0,1,1,1,0,1,0 0,0,0,3,0,4,2,0,1,1,1,0,1,1 1,0,3,2,0,10,2,0,1,1,1,0,1,0 0,0,0,3,2,5,3,0,1,1,1,1,1,0 2,0,10,3,0,4,2,0,1,1,1,1,1,1 1,0,1,2,1,6,3,2,0,1,1,0,1,0 0,0,3,2,2,2,3,4,1,1,1,0,1,0 0,0,2,1,2,2,1,0,0,1,1,2,1,0 0,0,1,2,0,3,0,0,0,1,1,2,1,0 2,4,5,2,4,8,5,0,0,1,1,0,1,0 1,0,3,2,1,1,3,0,1,1,1,0,1,0 1,0,0,3,0,3,2,0,1,1,1,2,1,1 1,0,1,2,4,3,3,0,0,1,1,0,1,0 2,1,0,3,0,5,2,0,1,1,1,1,1,0 0,0,0,3,2,3,3,0,1,1,1,0,1,0 0,0,3,2,3,2,4,0,1,1,1,2,1,0 2,0,14,0,0,9,2,0,1,1,1,1,1,0 0,0,1,2,0,5,2,0,1,1,1,2,1,0 1,5,12,1,0,9,2,0,1,1,1,2,1,0 0,5,0,3,2,5,3,3,0,1,1,0,1,0 0,0,2,1,2,4,3,4,1,1,1,1,1,0 3,0,8,0,4,2,5,4,0,1,1,2,1,0 1,0,11,0,3,7,4,4,1,1,1,1,1,0 0,0,5,2,2,2,3,0,0,1,1,0,1,0 0,0,1,2,2,6,4,0,1,1,1,2,1,0 0,0,1,2,2,2,3,0,1,1,1,0,1,0 1,3,0,3,0,8,2,4,1,1,1,0,1,1 3,0,3,2,0,3,0,0,0,1,1,2,1,0 0,0,10,3,2,5,3,0,0,1,1,0,1,0 1,0,3,2,1,2,3,0,0,1,1,2,1,0 1,1,0,3,1,4,3,0,1,1,1,2,1,0 1,1,10,3,0,4,0,0,0,1,1,0,1,1 0,0,3,2,5,3,5,0,0,1,1,2,1,0 2,0,1,2,4,4,3,0,0,1,1,0,1,0 1,0,7,1,1,10,1,0,1,1,1,0,1,0 2,1,10,3,0,7,2,0,1,1,1,2,1,1 0,0,3,2,2,1,1,0,1,1,1,0,1,0 1,0,0,3,0,5,0,0,0,1,1,1,1,1 1,0,0,3,0,5,2,0,1,1,1,1,1,1 2,3,3,2,2,8,5,4,1,1,1,0,1,0 1,0,5,2,0,3,2,0,1,1,1,1,1,1 1,4,6,2,2,8,3,4,0,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,2,1,0 1,0,2,1,1,12,3,0,0,1,1,0,1,0 1,0,12,1,0,10,2,0,1,1,1,1,1,0 0,0,12,1,2,2,3,0,1,1,1,2,1,0 0,0,1,2,2,7,4,0,1,1,1,0,1,0 0,0,3,2,2,1,1,0,1,1,1,0,1,0 1,1,10,3,0,4,0,0,0,1,1,2,1,1 0,0,3,2,0,1,2,0,1,1,1,0,1,0 2,0,3,2,0,4,2,0,1,1,1,1,1,1 2,0,1,2,1,4,3,0,0,1,1,0,1,0 3,4,5,2,1,5,5,4,0,1,1,2,1,0 0,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,1,7,3,0,0,1,1,1,1,0 0,4,1,2,2,12,3,0,1,1,1,1,1,1 0,0,1,2,0,4,2,0,1,1,1,1,1,1 1,0,3,2,0,1,2,0,1,1,1,0,1,1 2,0,1,2,0,10,2,0,1,1,1,1,1,0 1,0,3,2,1,4,3,0,0,1,1,0,1,0 0,0,3,2,4,7,5,0,0,1,1,0,1,0 1,3,3,2,1,8,5,0,1,1,1,0,1,0 0,0,3,2,2,4,4,0,0,1,1,0,1,0 1,0,3,2,2,7,3,0,1,1,1,1,1,0 1,0,5,2,0,0,2,0,1,1,1,0,1,1 1,0,14,0,0,9,2,0,1,1,1,1,1,0 0,0,3,2,0,9,2,0,1,1,1,0,1,0 1,0,3,2,1,1,3,4,1,1,1,0,1,0 0,0,3,2,2,3,1,0,1,1,1,1,1,0 1,0,1,2,2,1,5,0,1,1,1,0,1,0 1,2,1,2,0,4,2,0,1,1,1,1,1,1 0,0,3,2,2,1,3,0,1,1,1,0,1,0 0,5,3,2,2,8,3,4,0,1,1,0,1,0 1,0,10,3,0,3,2,0,1,1,1,2,1,0 1,0,1,2,0,10,2,0,1,1,1,1,1,1 1,2,3,2,0,1,2,0,1,1,1,1,1,0 0,0,7,1,2,1,1,0,1,1,1,1,1,0 1,0,14,0,0,1,2,0,1,1,1,0,1,0 0,4,6,2,2,8,5,0,1,1,1,0,1,0 0,0,1,2,0,0,2,0,1,1,1,1,1,0 1,0,0,3,0,3,2,0,1,1,1,1,1,1 1,0,1,2,0,2,0,0,0,1,1,0,1,0 0,0,1,2,2,4,3,0,0,1,1,0,1,0 0,0,0,3,2,3,3,0,1,1,1,2,1,0 1,1,3,2,0,2,2,0,1,1,1,1,1,1 1,0,5,2,0,10,2,0,1,1,1,1,1,1 1,0,5,2,0,5,2,0,1,1,1,0,1,1 0,0,1,2,2,3,4,0,0,1,1,2,1,0 0,0,3,2,2,2,1,0,1,1,1,2,1,0 0,0,1,2,2,8,1,0,0,1,1,0,1,0 0,0,3,2,2,1,1,0,1,1,1,0,1,0 1,4,10,3,0,5,2,0,1,1,1,0,1,1 1,0,3,2,1,2,1,4,0,1,1,0,1,0 0,0,0,3,2,3,4,4,1,1,1,1,1,0 0,0,1,2,1,5,3,0,0,1,1,0,1,0 0,0,0,3,2,5,3,0,1,1,1,1,1,0 0,0,5,2,2,3,5,4,1,1,1,2,1,0 1,0,0,3,1,4,3,0,0,1,1,0,1,0 2,5,3,2,0,8,2,0,1,1,1,0,1,0 1,0,3,2,0,2,2,0,1,1,1,0,1,1 1,2,6,2,0,1,2,0,1,1,1,0,1,0 1,0,1,2,1,11,5,2,0,1,1,2,1,0 2,1,5,2,1,5,5,0,1,1,1,0,1,0 0,0,3,2,1,2,3,0,0,1,1,2,1,0 1,0,1,2,1,8,3,0,0,1,1,1,1,0 0,4,1,2,0,1,2,0,1,1,1,1,1,0 1,0,7,1,0,10,2,4,1,1,1,0,1,0 0,0,9,1,2,2,1,0,1,1,1,2,1,0 2,0,3,2,0,10,2,0,1,1,1,1,1,0 0,0,0,3,2,4,5,0,1,1,1,0,1,0 1,0,5,2,0,7,2,0,1,1,1,1,1,0 2,0,4,3,0,5,2,0,1,1,1,0,1,1 1,0,5,2,0,0,2,0,1,1,1,0,1,1 2,4,3,2,4,10,5,0,0,1,1,2,1,0 1,0,1,2,2,2,1,0,1,1,1,1,1,0 1,1,3,2,0,1,2,0,1,1,1,1,1,0 1,2,3,2,0,1,2,0,1,1,1,1,1,1 0,0,5,2,0,10,2,4,1,1,1,1,1,0 0,0,0,3,2,4,3,0,1,1,1,1,1,0 1,0,1,2,1,8,5,0,0,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,0 0,0,2,1,2,1,4,0,1,1,1,0,1,0 2,0,14,0,1,7,3,0,0,1,1,0,1,0 0,0,1,2,0,3,2,0,1,1,1,1,1,0 1,0,3,2,0,6,2,0,1,1,1,0,1,1 1,0,3,2,0,4,2,0,1,1,1,1,1,1 0,0,11,0,2,4,1,0,1,1,1,2,1,0 2,0,14,0,1,7,5,0,1,1,1,0,1,0 0,0,6,2,0,8,0,0,0,1,1,0,1,1 2,0,3,2,1,2,3,0,1,1,1,2,1,0 1,2,1,2,0,3,2,0,1,1,1,1,1,1 2,4,1,2,0,4,0,0,0,1,1,0,1,1 0,0,7,1,2,6,1,0,1,1,1,1,1,0 0,0,1,2,0,7,2,4,1,1,1,1,1,0 2,0,10,3,0,5,2,0,1,1,1,2,1,1 2,0,3,2,0,10,2,0,1,1,1,2,1,0 0,0,3,2,2,10,5,0,1,1,1,0,1,0 0,0,3,2,0,8,0,0,0,1,1,2,1,0 0,0,2,1,3,2,5,0,0,1,1,2,1,0 0,0,1,2,2,10,3,4,1,1,1,1,1,0 1,0,3,2,0,10,2,4,1,1,1,0,1,1 2,5,5,2,1,5,3,0,0,1,1,0,1,0 1,0,12,1,2,2,5,0,0,1,1,0,1,0 0,0,1,2,2,8,3,0,0,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 1,4,0,3,0,12,2,1,1,1,1,1,1,0 2,5,10,3,0,4,2,0,1,1,1,0,1,1 1,0,3,2,0,4,2,0,1,1,1,1,1,0 0,0,0,3,2,3,3,0,0,1,1,1,1,0 0,0,3,2,2,6,3,0,0,1,1,2,1,0 1,0,5,2,0,3,2,0,1,1,1,1,1,0 1,2,3,2,1,8,3,0,0,1,1,0,1,0 0,0,0,3,1,8,3,0,0,1,1,1,1,1 0,0,1,2,2,5,1,0,0,1,1,2,1,0 0,0,0,3,2,4,4,0,0,1,1,0,1,0 1,1,1,2,0,2,2,0,1,1,1,2,1,1 0,0,5,2,2,5,3,0,0,1,1,1,1,0 0,0,1,2,2,8,1,0,0,1,1,0,1,0 1,4,0,3,1,5,1,4,0,1,1,0,1,0 0,0,3,2,0,4,2,0,1,1,1,0,1,1 1,0,3,2,0,3,2,0,1,1,1,1,1,1 1,0,3,2,1,8,5,0,1,1,1,0,1,0 0,4,0,3,2,4,3,0,1,1,1,0,1,0 0,0,3,2,2,2,4,0,0,1,1,2,1,0 1,0,1,2,1,6,3,4,1,1,1,0,1,0 0,0,1,2,2,6,4,0,1,1,1,0,1,0 0,0,3,2,1,2,3,0,0,1,1,2,1,0 1,0,13,3,3,4,3,0,0,1,1,1,1,1 2,0,3,2,0,5,2,0,1,1,1,0,1,1 1,0,12,1,2,4,3,0,0,1,1,0,1,0 1,0,3,2,0,2,2,0,1,1,1,1,1,0 0,0,1,2,2,2,5,4,0,1,1,0,1,0 1,2,1,2,0,4,2,0,1,1,1,1,1,1 0,0,3,2,0,1,2,0,1,1,1,1,1,1 1,5,1,2,1,0,5,4,0,1,1,1,1,0 1,0,3,2,4,1,3,0,0,1,1,1,1,1 1,0,1,2,0,6,2,3,1,1,1,0,1,0 0,0,3,2,2,9,3,0,1,1,1,1,1,0 2,0,2,1,0,2,2,0,1,1,1,0,1,1 0,0,14,0,2,6,1,4,0,1,1,0,1,0 1,0,3,2,1,4,3,0,1,1,1,1,1,0 0,0,3,2,2,6,3,4,1,1,1,2,1,0 0,0,9,1,0,10,2,4,1,1,1,1,1,0 2,4,1,2,4,8,3,0,0,1,1,0,1,0 0,0,3,2,0,1,2,0,1,1,1,1,1,1 1,0,6,2,0,6,2,0,1,1,1,1,1,1 1,0,3,2,3,7,3,0,0,1,1,0,1,0 0,0,0,3,2,3,3,0,0,1,1,0,1,0 1,0,1,2,1,3,3,0,1,1,1,0,1,0 0,0,0,3,2,4,1,0,0,1,1,0,1,0 0,0,2,1,2,2,3,0,0,1,1,0,1,0 0,0,2,1,2,2,1,0,0,1,1,0,1,0 0,0,0,3,2,4,1,0,0,1,1,0,1,0 1,0,0,3,2,8,1,1,0,1,1,0,1,0 1,0,10,3,0,5,2,1,1,1,1,0,1,1 2,0,2,1,1,7,3,0,0,1,1,0,1,0 0,0,1,2,2,4,1,0,0,1,1,0,1,0 0,3,10,3,1,4,3,0,0,1,1,0,1,0 1,5,0,3,0,5,2,0,1,1,1,1,1,0 1,0,1,2,3,3,5,0,0,1,1,2,1,0 1,4,3,2,5,12,3,0,1,1,1,1,1,1 1,0,4,3,0,5,2,0,1,1,1,1,1,1 0,0,1,2,2,2,1,0,0,1,1,2,1,0 0,5,0,3,2,5,1,0,1,1,1,1,1,0 1,0,1,2,1,7,3,4,1,1,1,0,1,0 0,1,8,0,1,9,3,0,1,1,1,1,1,0 1,0,0,3,1,2,1,0,0,1,1,0,1,0 0,0,6,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,2,1,1,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,5,2,5,1,3,0,1,1,1,1,1,0 0,5,10,3,2,5,3,0,1,1,1,0,1,0 0,4,10,3,2,5,3,0,1,1,1,1,1,0 0,0,12,1,2,2,1,0,1,1,1,2,1,0 0,0,3,2,0,2,2,0,1,1,1,1,1,0 3,0,3,2,1,6,3,0,0,1,1,2,1,0 0,0,1,2,0,4,2,0,1,1,1,1,1,1 0,3,1,2,2,8,3,0,0,1,1,0,1,0 1,0,2,1,2,1,5,0,1,1,1,0,1,0 0,0,0,3,2,3,3,0,0,1,1,1,1,0 1,0,1,2,1,7,3,0,1,1,1,0,1,0 1,3,0,3,0,8,2,0,1,1,1,0,1,0 0,0,1,2,2,8,1,0,0,1,1,0,1,0 0,0,12,1,2,6,1,0,1,1,1,0,1,0 0,0,1,2,0,1,2,0,1,1,1,0,1,1 1,0,1,2,0,8,2,0,1,1,1,0,1,1 1,0,5,2,1,0,3,0,0,1,1,0,1,0 0,0,3,2,2,4,3,0,1,1,1,1,1,0 0,0,2,1,3,1,1,4,1,1,1,0,1,0 0,0,9,1,2,2,1,0,1,1,1,2,1,0 3,0,1,2,0,5,2,0,1,1,1,2,1,0 1,0,1,2,0,1,2,0,1,1,1,0,1,0 1,0,1,2,2,2,3,0,0,1,1,2,1,0 0,0,10,3,2,8,1,0,1,1,1,2,1,0 0,4,5,2,0,2,2,0,1,1,1,1,1,0 0,0,1,2,2,8,5,0,0,1,1,1,1,0 0,0,3,2,2,1,1,0,1,1,1,2,1,0 1,0,9,1,0,10,2,0,1,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 1,1,4,3,0,5,2,0,1,1,1,2,1,1 1,3,3,2,0,6,2,0,1,1,1,0,1,0 1,0,3,2,0,3,2,0,1,1,1,0,1,0 0,0,3,2,2,7,5,0,1,1,1,0,1,0 0,0,3,2,2,1,4,0,1,1,1,0,1,0 2,1,1,2,0,9,2,0,1,1,1,0,1,0 2,0,3,2,1,8,5,0,0,1,1,0,1,0 1,0,0,3,0,3,2,0,1,1,1,1,1,1 0,0,9,1,2,1,1,0,1,1,1,2,1,0 1,0,3,2,0,7,2,0,1,1,1,0,1,1 0,0,7,1,0,7,2,0,1,1,1,0,1,0 0,0,3,2,0,7,0,4,0,1,1,0,1,0 1,2,1,2,0,4,2,0,1,1,1,1,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 0,0,1,2,2,3,1,1,0,1,1,2,1,0 3,0,3,2,4,11,3,0,0,1,1,0,1,0 0,0,14,0,0,9,2,0,1,1,1,1,1,0 1,0,1,2,3,8,5,0,0,1,1,0,1,0 1,0,3,2,0,6,2,4,1,1,1,0,1,1 0,0,3,2,2,3,5,0,0,1,1,2,1,0 1,0,1,2,2,0,5,0,0,1,1,1,1,1 0,0,2,1,1,2,5,0,0,1,1,2,1,0 0,0,1,2,2,3,1,0,0,1,1,2,1,0 1,0,10,3,4,4,5,0,1,1,1,0,1,1 1,0,8,0,0,6,2,0,1,1,1,0,1,0 1,5,3,2,4,2,3,0,0,1,1,2,1,0 0,4,0,3,2,4,3,0,0,1,1,1,1,0 1,0,8,0,0,1,2,0,1,1,1,0,1,0 1,0,1,2,1,8,3,0,0,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 1,1,3,2,0,4,2,0,1,1,1,0,1,0 1,0,1,2,1,2,5,0,0,1,1,1,1,0 1,5,1,2,0,12,2,0,1,1,1,0,1,1 0,4,0,3,3,5,3,0,1,1,1,0,1,0 1,0,3,2,4,7,3,4,0,1,1,0,1,0 0,0,0,3,0,4,2,0,1,1,1,0,1,1 1,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,1,2,1,1,5,0,1,1,1,2,1,0 0,0,3,2,2,12,1,4,0,1,1,2,1,0 0,4,3,2,2,8,3,4,0,1,1,0,1,0 0,0,1,2,2,2,1,0,0,1,1,2,1,0 0,0,3,2,2,1,1,0,1,1,1,0,1,0 3,0,3,2,4,6,3,0,1,1,1,2,1,0 2,0,15,0,3,10,3,4,1,1,1,0,1,1 1,1,0,3,3,2,5,0,0,1,1,1,1,0 0,0,3,2,2,8,1,0,1,1,1,2,1,0 0,0,12,1,2,1,3,0,1,1,1,0,1,0 1,5,3,2,0,6,2,0,1,1,1,0,1,0 2,0,3,2,0,8,0,0,0,1,1,0,1,0 1,3,9,1,0,12,2,0,1,1,1,1,1,1 0,0,6,2,0,0,2,3,1,1,1,0,1,0 0,0,3,2,2,1,3,4,1,1,1,0,1,0 1,0,3,2,0,3,2,0,1,1,1,0,1,1 0,0,1,2,2,6,1,0,1,1,1,2,1,0 2,4,1,2,1,8,3,0,0,1,1,2,1,0 0,0,1,2,1,8,3,0,0,1,1,1,1,0 2,0,3,2,0,2,2,0,1,1,1,2,1,0 1,0,3,2,0,6,2,4,1,1,1,0,1,0 0,0,6,2,0,8,2,0,1,1,1,1,1,1 0,0,6,2,0,7,2,0,1,1,1,0,1,0 0,0,1,2,1,1,3,0,1,1,1,0,1,0 1,0,0,3,2,10,3,0,1,1,1,0,1,0 0,0,0,3,2,5,3,0,0,1,1,0,1,0 0,0,1,2,0,4,2,1,1,1,1,1,1,0 1,0,12,1,0,6,2,0,1,1,1,0,1,1 0,0,3,2,2,8,5,2,0,1,1,0,1,0 1,3,1,2,0,5,2,0,1,1,1,0,1,1 0,0,6,2,2,7,3,0,1,1,1,1,1,0 0,0,1,2,0,8,4,0,0,1,1,2,1,0 0,0,2,1,2,3,1,0,0,1,1,2,1,0 1,0,3,2,1,3,3,0,0,1,1,2,1,0 0,0,0,3,2,5,1,0,1,1,1,1,1,0 1,0,1,2,0,3,2,0,1,1,1,1,1,1 1,0,1,2,0,4,2,0,1,1,1,0,1,0 1,3,1,2,2,1,3,4,1,1,1,0,1,0 1,1,4,3,0,5,2,0,1,1,1,1,1,1 2,0,2,1,0,7,2,0,1,1,1,0,1,1 0,0,3,2,2,6,4,3,1,1,1,2,1,0 3,1,8,0,5,9,5,0,1,1,1,2,1,0 2,0,3,2,1,8,3,0,0,1,1,0,1,0 1,0,1,2,4,2,5,0,0,1,1,2,1,0 0,0,6,2,2,3,1,0,1,1,1,1,1,0 0,0,6,2,0,1,2,0,1,1,1,1,1,1 1,4,10,3,0,5,2,0,1,1,1,0,1,1 0,0,1,2,2,3,4,0,1,1,1,0,1,0 1,0,1,2,3,2,5,2,0,1,1,2,1,0 2,0,2,1,0,6,2,0,1,1,1,0,1,0 1,1,1,2,0,1,2,0,1,1,1,0,1,0 0,1,3,2,2,3,3,0,1,1,1,1,1,0 0,0,0,3,1,5,5,0,0,1,1,1,1,0 0,4,3,2,0,1,2,0,1,1,1,0,1,0 2,0,3,2,0,2,4,0,1,1,1,0,1,0 1,0,9,1,2,6,1,0,1,1,1,0,1,0 1,0,1,2,1,4,3,0,0,1,1,0,1,0 2,1,10,3,0,5,2,0,1,1,1,2,1,1 0,0,3,2,2,3,3,0,0,1,1,2,1,0 2,2,10,3,1,5,5,0,1,1,1,1,1,0 0,0,9,1,2,2,1,0,0,1,1,2,1,0 1,0,3,2,1,8,5,4,0,1,1,0,1,0 0,0,1,2,2,8,1,0,1,1,1,0,1,0 1,0,12,1,0,7,2,0,1,1,1,0,1,0 1,0,13,3,0,5,2,0,1,1,1,1,1,1 2,1,12,1,0,4,2,0,1,1,1,2,1,0 1,0,0,3,2,5,3,0,1,1,1,1,1,1 0,0,0,3,2,2,1,0,0,1,1,2,1,0 0,0,3,2,2,1,3,0,1,1,1,0,1,0 2,1,8,0,0,2,2,0,1,1,1,2,1,0 1,0,1,2,0,8,2,0,1,1,1,1,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,1 0,0,3,2,2,8,1,0,0,1,1,0,1,0 0,0,7,1,2,2,3,0,1,1,1,1,1,0 1,4,0,3,0,5,2,0,1,1,1,1,1,1 1,0,3,2,0,3,2,4,1,1,1,1,1,0 0,0,12,1,2,2,1,0,1,1,1,2,1,0 1,5,3,2,0,12,2,2,1,1,1,1,1,0 2,0,3,2,4,11,5,4,0,1,1,2,1,0 1,0,0,3,3,9,5,0,0,1,1,1,1,0 0,0,3,2,2,8,3,0,0,1,1,1,1,0 0,0,0,3,1,0,3,0,0,1,1,0,1,0 0,0,3,2,0,2,2,1,1,1,1,2,1,0 0,0,3,2,0,0,2,0,1,1,1,0,1,0 2,0,6,2,4,0,5,0,0,1,1,2,1,0 2,1,4,3,0,5,2,0,1,1,1,2,1,1 0,0,7,1,0,2,4,0,0,1,1,2,1,0 0,4,6,2,1,8,1,0,0,1,1,0,1,0 1,0,0,3,0,3,2,0,1,1,1,1,1,1 1,1,2,1,0,2,2,0,1,1,1,0,1,0 0,4,3,2,5,7,5,0,0,1,1,1,1,0 1,0,3,2,0,10,2,0,1,1,1,0,1,0 0,0,2,1,2,3,1,0,0,1,1,2,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,1 1,1,0,3,0,3,2,0,1,1,1,0,1,1 2,0,1,2,1,4,5,0,1,1,1,1,1,0 0,2,0,3,2,6,1,0,1,1,1,0,1,0 1,1,3,2,0,3,2,1,1,1,1,1,1,0 1,0,1,2,0,8,2,0,1,1,1,0,1,1 1,2,0,3,0,0,2,0,1,1,1,1,1,1 1,0,5,2,2,5,3,0,0,1,1,2,1,0 2,2,4,3,0,4,2,0,1,1,1,1,1,1 2,2,3,2,0,4,2,0,1,1,1,0,1,1 1,0,12,1,3,6,5,4,1,1,1,0,1,0 0,0,2,1,0,2,2,0,1,1,1,0,1,0 2,0,3,2,1,10,3,0,1,1,1,0,1,1 0,0,4,3,0,5,2,0,1,1,1,1,1,1 1,0,8,0,0,1,2,0,1,1,1,1,1,0 0,0,0,3,2,5,3,0,0,1,1,1,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,1 0,0,8,0,0,9,1,0,0,1,1,1,1,0 1,3,1,2,0,8,2,0,1,1,1,0,1,0 1,0,1,2,0,2,2,0,1,1,1,0,1,1 0,0,2,1,2,3,3,2,1,1,1,0,1,0 0,0,0,3,2,4,3,0,0,1,1,1,1,0 1,0,10,3,0,4,2,0,1,1,1,1,1,1 2,0,13,3,4,0,5,0,1,1,1,0,1,1 2,0,8,0,0,8,2,0,1,1,1,0,1,0 0,0,0,3,0,2,2,0,1,1,1,0,1,0 2,0,1,2,4,2,5,4,0,1,1,2,1,0 1,3,1,2,0,1,2,0,1,1,1,0,1,1 1,0,1,2,0,4,2,0,1,1,1,1,1,1 0,0,10,3,2,3,1,0,0,1,1,1,1,0 2,0,3,2,1,3,4,0,0,1,1,2,1,0 0,5,1,2,3,5,3,0,0,1,1,2,1,0 0,0,3,2,2,2,4,4,0,1,1,2,1,0 1,0,6,2,1,4,3,0,1,1,1,1,1,0 1,0,1,2,1,8,3,0,0,1,1,0,1,0 1,1,6,2,3,4,5,0,0,1,1,0,1,0 0,0,2,1,0,1,2,0,1,1,1,0,1,1 0,0,0,3,2,5,3,1,1,1,1,1,1,0 1,0,1,2,0,1,2,4,1,1,1,0,1,1 1,5,0,3,0,8,2,0,1,1,1,1,1,0 0,4,10,3,0,5,2,0,1,1,1,1,1,1 0,0,0,3,2,4,3,4,0,1,1,0,1,0 1,0,10,3,0,5,2,0,1,1,1,1,1,0 1,0,1,2,1,1,3,0,1,1,1,1,1,0 0,0,1,2,2,8,1,0,0,1,1,2,1,0 3,0,1,2,1,5,5,0,0,1,1,2,1,0 1,0,0,3,2,3,3,0,1,1,1,0,1,1 1,4,10,3,2,5,3,0,0,1,1,1,1,0 0,4,1,2,2,1,1,0,1,1,1,0,1,0 0,5,3,2,0,2,2,0,1,1,1,0,1,0 1,0,3,2,0,2,2,0,1,1,1,0,1,0 1,0,6,2,2,4,3,0,1,1,1,2,1,0 1,1,1,2,2,5,3,4,0,1,1,1,1,1 0,0,0,3,2,5,3,0,1,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,1 0,5,3,2,2,8,1,4,0,1,1,2,1,0 0,0,12,1,0,10,2,0,1,1,1,1,1,0 0,0,0,3,2,4,3,0,0,1,1,1,1,0 1,0,10,3,0,5,2,0,1,1,1,1,1,1 0,0,1,2,2,3,1,0,0,1,1,2,1,0 2,4,3,2,1,4,5,2,1,1,1,2,1,0 1,0,6,2,1,5,5,0,0,1,1,2,1,0 0,0,0,3,2,0,1,0,1,1,1,0,1,0 1,0,6,2,3,8,3,0,0,1,1,0,1,0 1,0,3,2,0,1,2,0,1,1,1,1,1,0 0,0,3,2,0,9,2,0,1,1,1,1,1,0 1,0,0,3,1,5,3,0,0,1,1,2,1,0 0,1,0,3,0,3,2,0,1,1,1,0,1,0 0,0,3,2,2,4,3,0,1,1,1,1,1,0 0,0,2,1,2,1,1,0,1,1,1,2,1,0 1,0,1,2,2,4,3,0,0,1,1,0,1,0 1,4,10,3,0,5,2,0,1,1,1,1,1,1 0,0,3,2,2,2,3,4,1,1,1,0,1,0 0,0,1,2,2,8,5,4,0,1,1,0,1,0 1,5,3,2,0,9,4,0,1,1,1,0,1,0 0,2,3,2,0,10,2,0,1,1,1,1,1,0 1,0,3,2,0,3,2,0,1,1,1,1,1,0 0,0,5,2,0,1,2,0,1,1,1,0,1,1 2,5,12,1,4,2,3,0,0,1,1,2,1,0 1,3,10,3,0,2,2,4,1,1,1,0,1,0 1,0,1,2,1,4,3,0,0,1,1,0,1,0 0,0,9,1,0,6,2,0,1,1,1,0,1,0 0,0,3,2,0,7,0,0,0,1,1,0,1,0 0,4,0,3,2,5,1,0,0,1,1,1,1,0 2,0,6,2,0,7,2,0,1,1,1,0,1,0 3,4,3,2,0,3,2,0,1,1,1,2,1,0 1,0,3,2,0,1,2,0,1,1,1,0,1,0 1,0,3,2,0,7,0,0,0,1,1,0,1,0 1,0,3,2,2,8,3,0,1,1,1,0,1,0 1,4,3,2,0,4,2,0,1,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 1,0,6,2,0,5,2,0,1,1,1,0,1,0 2,0,0,3,1,4,5,0,1,1,1,1,1,1 1,0,1,2,0,5,0,0,0,1,1,2,1,1 1,0,3,2,0,1,2,0,1,1,1,1,1,1 1,0,1,2,0,4,2,0,1,1,1,1,1,1 1,2,0,3,0,4,2,0,1,1,1,1,1,0 0,0,3,2,2,8,4,0,0,1,1,0,1,0 1,0,3,2,0,10,2,0,1,1,1,0,1,1 1,0,0,3,0,3,2,0,1,1,1,1,1,1 2,2,6,2,0,4,2,0,1,1,1,1,1,0 0,0,1,2,0,5,2,0,1,1,1,0,1,0 1,0,0,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,1,7,3,0,0,1,1,0,1,0 0,0,3,2,3,1,3,0,1,1,1,1,1,0 0,0,3,2,0,8,2,0,1,1,1,0,1,0 0,0,0,3,2,4,4,0,0,1,1,0,1,0 1,0,9,1,4,6,3,1,1,1,1,0,1,0 1,0,0,3,2,4,3,0,0,1,1,0,1,0 0,0,0,3,0,3,0,0,0,1,1,1,1,0 0,0,0,3,2,3,3,0,0,1,1,0,1,0 2,4,13,3,0,12,2,0,1,1,1,1,1,1 2,4,4,3,0,5,2,0,1,1,1,0,1,1 1,0,12,1,1,3,5,0,0,1,1,2,1,0 0,0,1,2,2,5,3,0,1,1,1,2,1,0 0,0,3,2,0,10,2,0,1,1,1,1,1,0 1,0,10,3,2,4,1,0,1,1,1,0,1,1 0,0,10,3,0,8,0,0,0,1,1,2,1,1 0,0,5,2,0,4,2,0,1,1,1,1,1,1 0,0,3,2,0,3,2,0,1,1,1,1,1,0 1,0,3,2,0,8,1,0,0,1,1,2,1,0 2,5,0,3,0,5,2,0,1,1,1,0,1,1 0,0,0,3,0,3,2,0,1,1,1,1,1,1 0,0,3,2,1,1,3,0,1,1,1,0,1,0 2,0,12,1,1,2,5,0,0,1,1,1,1,0 1,0,0,3,2,5,3,0,0,1,1,1,1,0 0,0,1,2,2,3,3,0,1,1,1,2,1,0 1,0,4,3,0,5,2,1,1,1,1,2,1,0 0,0,3,2,0,3,2,0,1,1,1,0,1,0 0,0,0,3,2,5,1,4,1,1,1,0,1,0 0,0,3,2,1,8,5,0,0,1,1,0,1,0 0,0,3,2,0,7,2,0,1,1,1,0,1,1 0,0,3,2,0,5,2,0,1,1,1,2,1,0 0,1,1,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,2,3,3,0,1,1,1,0,1,0 2,1,3,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,2,2,3,0,0,1,1,0,1,0 2,1,1,2,0,1,2,0,1,1,1,2,1,0 1,1,10,3,0,3,2,0,1,1,1,1,1,0 0,0,0,3,2,3,3,0,1,1,1,1,1,0 0,4,5,2,1,4,3,1,0,1,1,0,1,0 2,0,6,2,1,2,4,1,0,1,1,0,1,0 2,0,8,0,0,10,2,0,1,1,1,1,1,1 1,5,3,2,0,12,2,2,1,1,1,0,1,0 0,0,1,2,2,2,4,0,0,1,1,0,1,0 0,0,3,2,0,0,0,1,0,1,1,1,1,1 0,0,3,2,2,8,5,4,0,1,1,0,1,0 1,4,0,3,1,5,5,0,0,1,1,1,1,0 0,0,1,2,1,8,4,0,0,1,1,2,1,0 1,0,3,2,2,1,1,4,1,1,1,0,1,0 1,0,3,2,1,1,5,0,0,1,1,0,1,0 1,0,1,2,0,4,2,0,1,1,1,1,1,1 0,0,3,2,2,4,1,1,0,1,1,2,1,0 0,0,2,1,0,1,2,0,1,1,1,1,1,0 0,2,3,2,1,3,5,0,1,1,1,1,1,1 0,0,0,3,2,6,3,0,1,1,1,2,1,0 2,1,3,2,0,3,2,0,1,1,1,2,1,0 2,0,8,0,0,10,2,0,1,1,1,1,1,0 0,0,3,2,2,2,1,0,0,1,1,2,1,0 0,0,3,2,3,2,3,0,0,1,1,2,1,0 1,1,0,3,1,1,3,0,1,1,1,2,1,1 1,0,3,2,0,5,0,0,0,1,1,0,1,1 2,1,4,3,0,5,2,0,1,1,1,2,1,0 0,0,3,2,2,6,3,0,1,1,1,0,1,0 0,4,1,2,0,10,2,4,1,1,1,0,1,1 0,0,3,2,0,1,2,0,1,1,1,1,1,0 1,0,8,0,0,10,2,0,1,1,1,0,1,0 0,3,3,2,0,1,0,0,0,1,1,0,1,1 1,0,3,2,0,10,2,4,1,1,1,1,1,0 0,4,3,2,0,12,2,4,1,1,1,0,1,0 0,0,1,2,1,2,3,0,0,1,1,2,1,0 0,0,0,3,2,5,3,1,1,1,1,1,1,0 2,0,9,1,0,1,2,0,1,1,1,0,1,0 0,0,4,3,0,5,2,0,1,1,1,1,1,1 0,0,3,2,2,6,1,0,0,1,1,2,1,0 2,0,1,2,0,5,2,0,1,1,1,1,1,1 1,0,0,3,1,0,3,0,1,1,1,0,1,0 1,3,10,3,2,8,3,0,1,1,1,1,1,0 1,0,6,2,0,8,2,0,1,1,1,1,1,0 0,0,6,2,0,3,2,0,1,1,1,1,1,1 1,1,0,3,0,3,2,0,1,1,1,0,1,1 0,0,7,1,2,1,1,0,1,1,1,2,1,0 0,0,2,1,3,1,3,0,1,1,1,0,1,0 0,0,3,2,1,7,3,4,1,1,1,0,1,0 0,0,3,2,2,7,3,0,1,1,1,0,1,0 1,2,3,2,0,4,2,0,1,1,1,0,1,1 2,0,6,2,0,5,2,0,1,1,1,0,1,1 1,0,0,3,2,0,3,0,0,1,1,0,1,0 1,0,10,3,0,5,2,0,1,1,1,1,1,1 1,4,10,3,0,4,2,0,1,1,1,1,1,1 0,0,3,2,2,7,1,0,1,1,1,0,1,0 3,2,1,2,1,4,3,0,0,1,1,0,1,0 0,0,1,2,0,12,2,0,1,1,1,0,1,0 2,0,3,2,4,3,4,0,0,1,1,2,1,0 0,0,1,2,2,3,3,0,0,1,1,1,1,0 1,0,4,3,0,5,2,0,1,1,1,1,1,1 1,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,1,2,2,1,1,0,1,1,1,0,1,0 2,1,3,2,4,9,3,0,1,1,1,2,1,0 2,0,3,2,3,11,3,0,0,1,1,2,1,0 1,0,6,2,2,8,5,4,0,1,1,0,1,0 2,0,5,2,1,5,3,0,1,1,1,2,1,0 0,0,3,2,0,6,2,0,1,1,1,0,1,0 1,0,3,2,0,8,2,0,1,1,1,0,1,0 2,0,3,2,0,3,2,0,1,1,1,1,1,0 0,0,3,2,0,1,2,0,1,1,1,0,1,0 0,0,3,2,2,2,1,0,0,1,1,0,1,0 1,4,10,3,1,2,3,0,1,1,1,0,1,0 0,0,0,3,2,5,1,0,1,1,1,0,1,0 1,0,0,3,1,5,3,0,0,1,1,2,1,0 1,0,0,3,0,5,2,0,1,1,1,1,1,0 1,0,0,3,1,8,1,1,1,1,1,0,1,0 0,2,0,3,0,4,2,0,1,1,1,1,1,1 ================================================ FILE: NLP/AutoTitle_F/configs/make_vocab.yaml ================================================ makevocab: True max_lines: 0 train_path: '../data/preprocessed/train_set_last1_all.csv' val_path: '../data/preprocessed/val_set_last1_1000.csv' test_path: '../data/preprocessed/test_set_last1_1000.csv' vocab_path: '../data/preprocessed/vocab_200000' vocab_max_size: 200000 vocab_min_freq: 5 truncated: False rand_state: 443 ================================================ FILE: NLP/AutoTitle_F/configs/predict.yaml ================================================ seed: 1445 checkpoint_restore: './data/logs/best_rouge_l_checkpoint.pt' validation_test_path: './data/results/test.data' #validation_test_path: './data/results/validation.data' vocab_path: './data/preprocessed/dataset_50k_600/vocab_50000' beam_size: 5 shuffle: False num_workers: 1 gpus: [0] pointer_gen: True is_coverage: False is_semantic_similary: False model: 'seq2seq' optim: 'AdagradCustom' use_cuda: True trunc_norm_init_std: 0.0001 rand_unif_init_mag: 0.02 use_maxpool_init_ctx: False eps: 0.000000000001 cov_loss_wt: 1.0 share_vocab: True emb_dim: 300 hidden_dim: 256 encoder_num_layers: 1 dropout: 0.5 encoder_bidirec: True decoder_num_layers: 1 decoder_hidden_size: 512 global_emb: False max_dec_steps: 14 min_dec_steps: 5 ================================================ FILE: NLP/AutoTitle_F/configs/process.yaml ================================================ test: False aug: False max_enc_steps: 200 max_dec_steps: 20 pointer_gen: True coverage: False train_path: '../data/preprocessed/train_set_last_all.csv' val_path: '../data/preprocessed/val_set_last_1000.csv' test_path: '../data/preprocessed/test_set_last_1000.csv' vocab_path: '../data/preprocessed/vocab_200000' pre_word_embedding_path: '../data/embedding/GoogleNews-vectors-negative300.bin' save: True max_size: 50004 train_data_path: '../data/preprocessed/dataset_50k_200/train.data' val_data_path: '../data/preprocessed/dataset_50k_200/val.data' test_data_path: '../data/preprocessed/dataset_50k_200/test.data' vocab_path_50: '../data/preprocessed/dataset_50k_200/vocab_50000' ================================================ FILE: NLP/AutoTitle_F/configs/train_model.yaml ================================================ seed: 1314 gpus: [0] checkpoint_restore: './data/logs/2018-12-06-01-53/95000.checkpoint.pt' log: './data/logs/' vocab_path: './data/preprocessed/dataset_50k_600/vocab_50000' train_ds_path: './data/preprocessed/dataset_50k_600/train.data' val_ds_path: './data/preprocessed/dataset_50k_600/val.data' test_ds_path: './data/preprocessed/dataset_50k_600/test.data' batch_size: 32 shuffle: False num_workers: 2 pointer_gen: True is_coverage: False is_semantic_similary: False model: 'seq2seq' optim: 'AdagradCustom' score_fn: '' epoch: 35 use_cuda: True trunc_norm_init_std: 0.0001 rand_unif_init_mag: 0.02 use_maxpool_init_ctx: False eps: 0.000000000001 cov_loss_wt: 1.0 simil_wt: 0.0001 learning_rate: 0.15 adagrad_init_acc: 0.1 max_grad_norm: 2.0 #learning_rate_decay: 0.95 #start_decay_at: 5 schedule: False share_vocab: True emb_dim: 300 hidden_dim: 256 encoder_num_layers: 2 dropout: 0.5 encoder_bidirec: True decoder_num_layers: 1 decoder_hidden_size: 512 global_emb: False max_tgt_len: 20 metrics: ['bleu_1', 'bleu_2', 'rouge_l', 'cider'] eval_interval: 1000 save_interval: 1500 print_interval: 10 beam_size: 5 max_dec_steps: 20 min_dec_steps: 5 ================================================ FILE: NLP/AutoTitle_F/data/__init__.py ================================================ #!/usr/bin/python # -*- coding: utf-8 -*- # @Time : 2018/10/27 上午11:09 # @Author : ComeOnJian # @File : __init__.py.py from data.batcher import * from data.data import * ================================================ FILE: NLP/AutoTitle_F/data/batcher.py ================================================ #!/usr/bin/python # -*- coding: utf-8 -*- # @Time : 2018/10/24 下午4:52 # @Author : ComeOnJian # @File : batcher.py import data import sys sys.path.append('../') import util import numpy as np import pandas as pd from tqdm import tqdm import random import torch import torch.utils.data as torch_data from torch.autograd import Variable class Example(object): def __init__(self, article, abstract_sentence, vocab, config): # Get ids of special tokens start_decoding = vocab.word2id(data.BOS_WORD) stop_decoding = vocab.word2id(data.EOS_WORD) # Process the article # if article == 'nan': # article_words = [''] # else: article_words = article.split() if len(article_words) > config.max_enc_steps: article_words = article_words[:config.max_enc_steps] self.enc_len = len(article_words) # store the length after truncation but before padding self.enc_input = [vocab.word2id(w) for w in article_words] # list of word ids; OOVs are represented by the id for UNK token # Process the abstract abstract_words = abstract_sentence.split() # list of strings abs_ids = [vocab.word2id(w) for w in abstract_words] # list of word ids; OOVs are represented by the id for UNK token # Get the decoder input sequence and target sequence self.dec_input, self.target = self.get_dec_inp_seqs(abs_ids, config.max_dec_steps, start_decoding, stop_decoding) # If using pointer-generator mode, we need to store some extra info if config.pointer_gen: # Store a version of the enc_input where in-article OOVs are represented by their temporary OOV id; also store the in-article OOVs words themselves self.enc_input_extend_vocab, self.article_oovs = data.article2ids(article_words, vocab) # Get a verison of the reference summary where in-article OOVs are represented by their temporary article OOV id abs_ids_extend_vocab = data.abstract2ids(abstract_words, vocab, self.article_oovs) # Overwrite decoder target sequence so it uses the temp article OOV ids _, self.target = self.get_dec_inp_seqs(abs_ids_extend_vocab, config.max_dec_steps, start_decoding, stop_decoding) # Store the original strings # self.original_article = article self.original_abstract = abstract_sentence def get_dec_inp_seqs(self, sequence, max_len, start_id, stop_id): dec_input = [start_id] + sequence[:] target = sequence[:] if len(dec_input)>max_len: dec_input = dec_input[:max_len] target = target[:max_len] else: target.append(stop_id) return dec_input, target def pad_decoder_inp(self, max_len, pad_id): while len(self.dec_input) < max_len: self.dec_input.append(pad_id) while len(self.target) < max_len: self.target.append(pad_id) def pad_encoder_input(self, max_len, pad_id, pointer_gen=True): while len(self.enc_input) < max_len: self.enc_input.append(pad_id) if pointer_gen: while len(self.enc_input_extend_vocab) < max_len: self.enc_input_extend_vocab.append(pad_id) class Batch(object): def __init__(self, example_list, batch_size): self.batch_size = batch_size self.pad_id = data.PAD # id of the PAD token used to pad sequences # 根据example_list的enc_len长度进行降序排列 example_list.sort(key=lambda ex: ex.enc_len, reverse=True) self.init_encoder_seq(example_list) # initialize the input to the encoder self.init_decoder_seq(example_list) # initialize the input and targets for the decoder self.store_orig_strings(example_list) # store the original strings def init_encoder_seq(self, example_list ,pointer_gen = True): # Determine the maximum length of the encoder input sequence in this batch max_enc_seq_len = max([ex.enc_len for ex in example_list]) # Pad the encoder input sequences up to the length of the longest sequence for ex in example_list: ex.pad_encoder_input(max_enc_seq_len, self.pad_id) # Initialize the numpy arrays # Note: our enc_batch can have different length (second dimension) for each batch because we use dynamic_rnn for the encoder. self.enc_batch = np.zeros((self.batch_size, max_enc_seq_len), dtype=np.int32) self.enc_lens = np.zeros((self.batch_size), dtype=np.int32) self.enc_padding_mask = np.zeros((self.batch_size, max_enc_seq_len), dtype=np.float32) # Fill in the numpy arrays for i, ex in enumerate(example_list): self.enc_batch[i, :] = ex.enc_input[:] self.enc_lens[i] = ex.enc_len for j in range(ex.enc_len): self.enc_padding_mask[i][j] = 1 # For pointer-generator mode, need to store some extra info if pointer_gen: # Determine the max number of in-article OOVs in this batch self.max_art_oovs = max([len(ex.article_oovs) for ex in example_list]) # Store the in-article OOVs themselves self.art_oovs = [ex.article_oovs for ex in example_list] # Store the version of the enc_batch that uses the article OOV ids self.enc_batch_extend_vocab = np.zeros((self.batch_size, max_enc_seq_len), dtype=np.int32) for i, ex in enumerate(example_list): self.enc_batch_extend_vocab[i, :] = ex.enc_input_extend_vocab[:] def init_decoder_seq(self, example_list): max_dec_seq_len = max([len(ex.dec_input) for ex in example_list]) # Pad the inputs and targets for ex in example_list: ex.pad_decoder_inp(max_dec_seq_len, self.pad_id) # Initialize the numpy arrays. self.dec_batch = np.zeros((self.batch_size, max_dec_seq_len), dtype=np.int32) self.target_batch = np.zeros((self.batch_size, max_dec_seq_len), dtype=np.int32) # Fill in the numpy arrays for i, ex in enumerate(example_list): self.dec_batch[i, :] = ex.dec_input[:] self.target_batch[i, :] = ex.target[:] def store_orig_strings(self, example_list): # self.original_articles = [ex.original_article for ex in example_list] # list of lists self.original_abstracts = [ex.original_abstract for ex in example_list] # list of lists ################### construct model input ################### class DocDataset(torch_data.Dataset): def __init__(self, path, vocab, config): df_data = pd.read_csv(path, sep='\t', header=None) if config.test: df_data.columns = ['id', 'content'] else: df_data.columns = ['id', 'content', 'title'] print(df_data.shape) self.samples = [] for source, target, i in tqdm(zip(df_data['content'], df_data['title'], df_data['id'])): if config.aug: # 数据增强 rate = random.random() if rate > 0.5: source = self.drpout(source) else: source = self.shuffle(source) try: self.samples.append(Example(str(source), target, vocab, config)) except Exception: print('setence id: {} has problem,--{}'.format(i, target)) continue def __getitem__(self, index): return self.samples[index] def __len__(self): return len(self.samples) def drpout(self,text, p = 0.5): # random delete some text text = text.strip().split() len_ = len(text) indexs = np.random.choice(len_, int(len_*p)) for i in indexs: text[i] = '' return " ".join(text) def shuffle(self, text): text = np.random.permutation(text.strip().split()) return ' '.join(text) def padding(example_list): batch_size = len(example_list) # + + 20 = 22 # decoder模式下: batch = Batch(example_list, batch_size) return batch def get_loader(dataset, batch_size, shuffle, num_workers, mode='train'): if mode =='beam_decoder': # 每个样本重复batch_size次 samples = [] for i in range(len(dataset)): for j in range(batch_size): samples.append(dataset[i]) dataset.samples = samples data_loader = torch.utils.data.DataLoader(dataset=dataset, batch_size=batch_size, shuffle=shuffle, num_workers=num_workers, collate_fn=padding) return data_loader def get_input_from_batch(batch, use_cuda, use_point_gen = True, use_coverage = False, trian = True, test=False): ##################### encoder ###################### batch_size = batch.batch_size source = Variable(torch.from_numpy(batch.enc_batch).long(),volatile=not trian) source_padding_mask = Variable(torch.from_numpy(batch.enc_padding_mask).float(),volatile=not trian) source_lengths = torch.from_numpy(batch.enc_lens) # numpy array extra_zeros = None source_batch_extend_vocab = None if use_point_gen: source_batch_extend_vocab = Variable(torch.from_numpy(batch.enc_batch_extend_vocab).long(),volatile=not trian) if batch.max_art_oovs>0: extra_zeros = Variable(torch.zeros((batch_size, batch.max_art_oovs)),volatile=not trian) coverage = None if use_coverage: coverage = Variable(torch.zeros(source.size())) if use_cuda: source = source.cuda() source_padding_mask = source_padding_mask.cuda() if source_batch_extend_vocab is not None: source_batch_extend_vocab = source_batch_extend_vocab.cuda() if extra_zeros is not None: extra_zeros = extra_zeros.cuda() if coverage is not None: coverage = coverage.cuda() if test: return source, source_padding_mask, source_lengths, source_batch_extend_vocab, extra_zeros, coverage ##################### decoder ###################### encoder_inputs = Variable(torch.from_numpy(batch.dec_batch).long(), volatile=not trian) # 有 pad ,oov没有word_id,为unk target = Variable(torch.from_numpy(batch.target_batch).long(), volatile=not trian) # 有 pad,oov有word_id target_raw = batch.original_abstracts # list if use_cuda: target = target.cuda() encoder_inputs = encoder_inputs.cuda() return source, source_padding_mask, source_lengths, source_batch_extend_vocab, extra_zeros, coverage, \ encoder_inputs, target, target_raw def get_temp_vocab(config): from collections import Counter df_data1 = pd.read_csv(config.train_path, sep='\t', header=None) df_data1.columns = ['id', 'content', 'title'] df_data2 = pd.read_csv(config.val_path, sep='\t', header=None) df_data2.columns = ['id', 'content', 'title'] df_data3 = pd.read_csv(config.test_path, sep='\t', header=None) df_data3.columns = ['id', 'content', 'title'] df_all = pd.concat([df_data1, df_data2, df_data3], ignore_index=True) print(df_all.shape) print('finish read...') vocab_counter = Counter() for index, row in df_all.iterrows(): title_words = str(row['title']).lower().split() content_words = str(row['content']).lower().split() vocab_counter.update(title_words) vocab_counter.update(content_words) df_all.at[index, 'title'] = " ".join(title_words) df_all.at[index, 'content'] = " ".join(content_words) print("Writing vocab file...") with open(config.vocab_path, 'w') as writer: for word, count in vocab_counter.most_common(200000): writer.write(word + ' ' + str(count) + '\n') print("Finished writing vocab file") df_all[:-2000].to_csv('../data/preprocessed/train_set_last_all.csv', sep='\t', header=None, index=None, encoding='utf-8') df_all[-2000:-1000].to_csv('../data/preprocessed/val_set_last_1000.csv', sep='\t', header=None, index=None, encoding='utf-8') df_all[-1000:].to_csv('../data/preprocessed/test_set_last_1000.csv', sep='\t', header=None, index=None, encoding='utf-8') def build_vaildation_set(): class Config: pass config = Config() setattr(config,'test', False) setattr(config,'aug', False) setattr(config,'save', True) setattr(config,'max_enc_steps', 600) setattr(config,'max_dec_steps', 20) setattr(config,'pointer_gen', True) setattr(config,'coverage', False) vocab_path = './preprocessed/dataset_50k_600/vocab_50000' vaildation_path = './results/test_set_add_title.csv' vocab = torch.load(vocab_path) vaildation_dataset = DocDataset(vaildation_path, vocab, config) if config.save: torch.save(vaildation_dataset, './results/test.data') def main(): from torch.nn import init config = util.read_config('../configs/process.yaml') # get_temp_vocab(config) vocab = data.Vocab(config.vocab_path, max_size=config.max_size) # vocab.build_vectors(config.pre_word_embedding_path, 300, unk_init=init.xavier_uniform) if config.save: torch.save(vocab, config.vocab_path_50) val_data = DocDataset(config.val_path, vocab, config) test_data = DocDataset(config.test_path, vocab, config) if config.save: torch.save(val_data, config.val_data_path) torch.save(test_data, config.test_data_path) train_data = DocDataset(config.train_path, vocab, config) if config.save: torch.save(train_data, config.train_data_path) if __name__ == '__main__': # main() build_vaildation_set() pass ================================================ FILE: NLP/AutoTitle_F/data/data.py ================================================ #!/usr/bin/python # -*- coding: utf-8 -*- # @Time : 2018/10/24 下午4:30 # @Author : ComeOnJian # @File : data.py from gensim.models import KeyedVectors import torch PAD = 0 UNK = 1 BOS = 2 EOS = 3 PAD_WORD = '' # padding word UNK_WORD = '' # unknow word BOS_WORD = '' # target start word EOS_WORD = '' # target end word class Vocab(object): def __init__(self, vocab_nfile, max_size=None): self._word_to_id = {} self._id_to_word = {} self._count = 0 # keeps track of total number of words in the Vocab # [PAD], [UNK], [START] and [STOP] get the ids 0,1,2,3. for w in [PAD_WORD, UNK_WORD, BOS_WORD, EOS_WORD]: self._word_to_id[w] = self._count self._id_to_word[self._count] = w self._count += 1 # Read the vocab file and add words up to max_size with open(vocab_nfile, 'r') as vocab_f: for line in vocab_f: pieces = line.split() if len(pieces) != 2: print('Warning: incorrectly formatted line in vocabulary file: %s\n' % line) continue w = pieces[0] if w in {PAD_WORD, UNK_WORD, BOS_WORD, EOS_WORD}: print(', , , shouldn\'t be in the vocab file, but %s is' % w) continue if w in self._word_to_id: print('Duplicated word in vocabulary file: %s' % w) continue self._word_to_id[w] = self._count self._id_to_word[self._count] = w self._count += 1 if max_size != 0 and self._count >= max_size: print("max_size of vocab was specified as %i; we now have %i words. Stopping reading." % (max_size, self._count)) break print("Finished constructing vocabulary of %i total words. Last word added: %s" % (self._count, self._id_to_word[self._count - 1])) def word2id(self, word): if word not in self._word_to_id: return self._word_to_id[UNK_WORD] return self._word_to_id[word] def id2word(self, word_id): if word_id not in self._id_to_word: raise ValueError('Id not found in vocab: %d' % word_id) return self._id_to_word[word_id] def size(self): return self._count def build_vectors(self, pre_word_embedding_path, dim , unk_init=torch.Tensor.zero_): # unk_init=init.xavier_uniform print('load w2v vector from {}...'.format(pre_word_embedding_path)) pre_word_embedding = KeyedVectors.load_word2vec_format(pre_word_embedding_path, binary=True) self.vectors = torch.Tensor(self.size(), dim) unknow_count = 0 for idx, word in self._id_to_word.items(): if word in pre_word_embedding.vocab: wv_index = pre_word_embedding.vocab[word].index else: wv_index = None if wv_index is not None: self.vectors[idx] = torch.Tensor(pre_word_embedding.vectors[wv_index]) else: self.vectors[idx] = unk_init(self.vectors[idx].unsqueeze(0)).view(-1) unknow_count += 1 print('the doc vocab length is %d and unkonw count is %d...' % (self.size(), unknow_count)) def article2ids(article_words, vocab): ids = [] oovs = [] unk_id = vocab.word2id(UNK_WORD) for w in article_words: i = vocab.word2id(w) if i == unk_id: # If w is OOV if w not in oovs: # Add to list of OOVs oovs.append(w) oov_num = oovs.index(w) # This is 0 for the first article OOV, 1 for the second article OOV... ids.append(vocab.size() + oov_num) # This is e.g. 50000 for the first article OOV, 50001 for the second... else: ids.append(i) return ids, oovs def abstract2ids(abstract_words, vocab, article_oovs): ids = [] unk_id = vocab.word2id(UNK_WORD) for w in abstract_words: i = vocab.word2id(w) if i == unk_id: # If w is an OOV word if w in article_oovs: # If w is an in-article OOV vocab_idx = vocab.size() + article_oovs.index(w) # Map to its temporary article OOV number ids.append(vocab_idx) else: # If w is an out-of-article OOV ids.append(unk_id) # Map to the UNK token id else: ids.append(i) return ids def outputids2words(id_list, vocab, article_oovs): words = [] for i in id_list: try: w = vocab.id2word(i) # might be [UNK] except ValueError as e: # w is OOV assert article_oovs is not None, "Error: model produced a word ID that isn't in the vocabulary. This should not happen in baseline (no pointer-generator) mode" article_oov_idx = i - vocab.size() try: w = article_oovs[article_oov_idx] except ValueError as e: # i doesn't correspond to an article oov raise ValueError('Error: model produced word ID %i which corresponds to article OOV %i but this example only has %i article OOVs' % (i, article_oov_idx, len(article_oovs))) words.append(w) return " ".join(words) def abstract2sents(abstract): cur = 0 sents = [] try: start_p = abstract.index(BOS_WORD, cur) end_p = abstract.index(EOS_WORD, start_p + 1) cur = end_p + len(EOS_WORD) sents.append(abstract[start_p+len(BOS_WORD):end_p]) except ValueError as e: # no more sentences return sents def show_art_oovs(article, vocab): unk_token = vocab.word2id(UNK_WORD) words = article.split(' ') words = [("__%s__" % w) if vocab.word2id(w)==unk_token else w for w in words] out_str = ' '.join(words) return out_str def show_abs_oovs(abstract, vocab, article_oovs): unk_token = vocab.word2id(UNK_WORD) words = abstract.split(' ') new_words = [] for w in words: if vocab.word2id(w) == unk_token: # w is oov if article_oovs is None: # baseline mode new_words.append("__%s__" % w) else: # pointer-generator mode if w in article_oovs: new_words.append("__%s__" % w) else: new_words.append("!!__%s__!!" % w) else: # w is in-vocab word new_words.append(w) out_str = ' '.join(new_words) return out_str ================================================ FILE: NLP/AutoTitle_F/data/data_processed.py ================================================ #!/usr/bin/python # -*- coding: utf-8 -*- # @Time : 2018/10/24 下午4:51 # @Author : ComeOnJian # @File : data_processed.py from stanfordcorenlp import StanfordCoreNLP import nltk import re import sys sys.path.append('../') import util from collections import Counter from string import punctuation # nlp_tokenizer = StanfordCoreNLP('/home/jwj/pythonPro/stanford-corenlp-full-2018-02-27/', lang='en') nlp_tokenizer = StanfordCoreNLP('/home/mlc/pythonPro/stanford-corenlp-full-2018-02-27/', lang='en') sent_tokenizer = nltk.data.load('tokenizers/punkt/english.pickle') add_punc = ',。、【】“”:;()《》‘’{}?!⑦()、%^>℃:.”“^-——=擅长于的&#@¥' all_punc = punctuation+add_punc #################### 文本的清洗 ########################### def transform_other_word(str_text,reg_dict): for token_str,replac_str in reg_dict.items(): str_text = str_text.replace(token_str, replac_str) return str_text def clean_text(text, contractions): text = transform_other_word(text, contractions) text = re.sub('&', '', text) text = re.sub('[_"\-;%()|+&=*%.,!?:#$@\[\]/]', ' ', text) text = re.sub('\'', ' ', text) text = text.replace("\r", " ") text = text.replace("\n", " ") return text def pre_word_token(df, config, test = False, lower = True, is_make_title = False): """ :param df: 数据 :param config:配置信息 :return: """ if test: for index, row in df.iterrows(): content = str(row['content']).strip("'<>() ") if lower: content = content.lower() content_words = word_tokenizer(content) df.at[index, 'content'] = " ".join(content_words) # 虚构title if is_make_title: df.at[index, 'title'] = "test" df.to_csv('./results/test_set_add_title.csv', sep='\t', header=None, index=None, encoding='utf-8') else: if config.makevocab: vocab_counter = Counter() delete_ids = [] # 去重 df.drop_duplicates(['title'], inplace=True) df.drop_duplicates(['content'], inplace=True) for index, row in df.iterrows(): try: title = str(row['title']).strip("'<>() ") content = str(row['content']).strip("'<>() ") if lower: title = title.lower() content = content.lower() title_words = word_tokenizer(title) content_words = word_tokenizer(content) if len(title_words) == 1: delete_ids.append(index) print('ignore id: {} sentence...,due to title length is 1'.format(row['id'])) continue df.at[index,'title'] = " ".join(title_words) df.at[index, 'content'] = " ".join(content_words) ### bulid Vocab if config.makevocab: vocab_counter.update(title_words) vocab_counter.update(content_words) if index % 5000 == 0: print('has deal with %d sentence...'% index) except Exception: print('id :{} sentence can not deal with, because the sentence length is {} exceed corenlp max_length 100000'.format(row['id'],len(content_words))) delete_ids.append(index) continue # print('ignore {} sentence, due to due to title length is 1, truncated {} sentence, due to doc length exceed {}' # .format(ignore_count, truncated_count, config.truncated_source_length)) if config.makevocab: print("Writing vocab file...") with open(config.vocab_path, 'w') as writer: for word, count in vocab_counter.most_common(config.vocab_max_size): writer.write(word + ' ' + str(count) + '\n') print("Finished writing vocab file") print('ignore sentence has %d'%(len(delete_ids))) df.drop(delete_ids,inplace=True) df[:-2000].to_csv(config.train_path,sep='\t', header=None,index=None,encoding='utf-8') df[-2000:-1000].to_csv(config.val_path,sep='\t', header=None,index=None,encoding='utf-8') df[-1000:].to_csv(config.test_path,sep='\t', header=None,index=None,encoding='utf-8') nlp_tokenizer.close() def pre_sentence_token(df, lower=True, makevocab=True): if makevocab: vocab_counter = Counter() all_titles = [] all_contents = [] file_i = 1 for index, row in df.iterrows(): try: title = str(row['title']).strip("'<>() ") content = str(row['content']).strip("'<>() ") if lower: title = title.lower() content = content.lower() title_words = word_tokenizer(title) if len(title_words)==1: print('ignore id: {} sentence...,due to title length is 1'.format(row['id'])) continue if makevocab: vocab_counter.update(title_words) contents = [] # 存放内容每句的句子 content_sentences = sentence_tokenizer(content) for content_s in content_sentences: content_words = word_tokenizer(content_s) if makevocab: vocab_counter.update(content_words) contents.append(content_words) ### bulid Vocab if title_words and contents: # 标题和内容都不为空 all_titles.append(title_words) all_contents.append(contents) if index % 5000 == 0: print('has deal with %d sentence...' % index) # 每100000存储一个文件 if index % 100000 == 0: data = {} data['article'] = all_contents data['abstract'] = all_titles util.save_object(data, './preprocessed/train/all_data_{}.pickle'.format(file_i)) file_i += 1 # 清空data,和数组 all_contents = [] all_titles = [] data.clear() except Exception: print('id :{} sentence can not deal with, because the sentence has exception...'.format(row['id'])) continue # save data data = {} data['article'] = all_contents data['abstract'] = all_titles util.save_object(data, './preprocessed/train/all_data_{}.pickle'.format(file_i)) print("Writing vocab file...") with open('./preprocessed/all_data_vocab_200000', 'w') as writer: for word, count in vocab_counter.most_common(200000): writer.write(word + ' ' + str(count) + '\n') nlp_tokenizer.close() def word_tokenizer(text): text_list = nlp_tokenizer.word_tokenize(text) res = [] for word in text_list: if word != " " and word not in all_punc: res.append(word) return res def sentence_tokenizer(text): return sent_tokenizer.tokenize(text) ###################### main step ###################### # step 1 train word token # config = util.read_config('../configs/preprocess_data.yaml') # dfs = [] # for i in range(9): # file_n = './data/bytecup2018/bytecup.corpus.train.%d.txt' % (i) # df = util.read_json_to_pd(file_n, max_lines = config.max_lines) # dfs.append(df) # print('load %d file...'%i) # all_df = pd.concat(dfs) # # shuffle # all_df = all_df.sample(frac=1,random_state=config.rand_state).reset_index(drop=True) # pre_word_token(all_df, config) # step 2 validation_set word token # file_n = './bytecup2018/bytecup.corpus.test_set.txt' # test_df = util.read_json_to_pd(file_n, max_lines = 1000, is_contain_title = False) # pre_word_token(test_df, config=None, test=True, lower=True, is_make_title=True) ######## fast_abstrcative ####### # import pandas as pd # dfs = [] # for i in range(9): # file_n = './bytecup2018/bytecup.corpus.train.%d.txt' % (i) # df = util.read_json_to_pd(file_n, max_lines = 0) # dfs.append(df) # print('load %d file...'%i) # all_df = pd.concat(dfs) # print('去重前: ',all_df.shape) # all_df = all_df.sample(frac=1,random_state=123).reset_index(drop=True) # # 去重 # all_df.drop_duplicates(['title', 'content'], inplace=True) # all_df.reset_index(drop=True) # print('去重后: ',all_df.shape) # pre_sentence_token(all_df, lower=True, makevocab=True) # data = {} # data['article'] = [] # data['abstract'] = [] # for i in range(1,9): # dic = util.load_object('./preprocessed/train/all_data_{}.pickle'.format(i)) # print(i, len(dic['article']), len(dic['abstract'])) # data['article'] += dic['article'] # data['abstract'] += dic['abstract'] # print(len(data['article'])) # print(len(data['abstract'])) # # ## 存储val # val_dict = {} # val_dict['article'] = data['article'][-1000:] # val_dict['abstract'] = data['abstract'][-1000:] # util.save_object(val_dict, './preprocessed/train/val_data.pickle') # val_dict.clear() # # for i in range(7): # start_i = i * 100000 # end_i = (i+1) * 100000 # t_d = {} # if i==6: # t_d['article'] = data['article'][:-1000][start_i:] # t_d['abstract'] = data['abstract'][:-1000][start_i:] # else: # t_d['article'] = data['article'][:-1000][start_i: end_i] # t_d['abstract'] = data['abstract'][:-1000][start_i:end_i] # util.save_object(t_d, './preprocessed/train/train_data_{}.pickle'.format(i+1)) # print('finish {}'.format(i)) # t_d.clear() ================================================ FILE: NLP/AutoTitle_F/models/__init__.py ================================================ #!/usr/bin/python # -*- coding: utf-8 -*- # @Time : 2018/10/24 上午11:15 # @Author : ComeOnJian # @File : __init__.py.py from models.seq2seq import * from models.optims import * from models.adaptive import * from models.lr_scheduler import * ================================================ FILE: NLP/AutoTitle_F/models/adaptive.py ================================================ #!/usr/bin/python # -*- coding: utf-8 -*- # @Time : 2018/10/23 下午3:26 # @Author : ComeOnJian # @File : adaptive.py import torch import torch.nn as nn from torch.nn import Linear, Sequential, ModuleList from torch.nn.functional import log_softmax from collections import namedtuple _ASMoutput = namedtuple('ASMoutput', ['output', 'loss']) class AdaptiveLogSoftmaxWithLoss(nn.Module): r"""Efficient softmax approximation as described in `Efficient softmax approximation for GPUs`_ by Edouard Grave, Armand Joulin, Moustapha Cissé, David Grangier, and Hervé Jégou. Adaptive softmax is an approximate strategy for training models with large output spaces. It is most effective when the label distribution is highly imbalanced, for example in natural language modelling, where the word frequency distribution approximately follows the `Zipf's law`_. Adaptive softmax partitions the labels into several clusters, according to their frequency. These clusters may contain different number of targets each. Additionally, clusters containing less frequent labels assign lower dimensional embeddings to those labels, which speeds up the computation. For each minibatch, only clusters for which at least one target is present are evaluated. The idea is that the clusters which are accessed frequently (like the first one, containing most frequent labels), should also be cheap to compute -- that is, contain a small number of assigned labels. We highly recommend taking a look at the original paper for more details. * :attr:`cutoffs` should be an ordered Sequence of integers sorted in the increasing order. It controls number of clusters and the partitioning of targets into clusters. For example setting ``cutoffs = [10, 100, 1000]`` means that first `10` targets will be assigned to the 'head' of the adaptive softmax, targets `11, 12, ..., 100` will be assigned to the first cluster, and targets `101, 102, ..., 1000` will be assigned to the second cluster, while targets `1001, 1002, ..., n_classes - 1` will be assigned to the last, third cluster * :attr:`div_value` is used to compute the size of each additional cluster, which is given as :math:`\left\lfloor\frac{in\_features}{div\_value^{idx}}\right\rfloor`, where :math:`idx` is the cluster index (with clusters for less frequent words having larger indices, and indices starting from :math:`1`). * :attr:`head_bias` if set to True, adds a bias term to the 'head' of the adaptive softmax. See paper for details. Set to False in the official implementation. .. warning:: Labels passed as inputs to this module should be sorted accoridng to their frequency. This means that the most frequent label should be represented by the index `0`, and the least frequent label should be represented by the index `n_classes - 1`. .. note:: This module returns a ``NamedTuple`` with ``output`` and ``loss`` fields. See further documentation for details. .. note:: To compute log-probabilities for all classes, the ``log_prob`` method can be used. Args: in_features (int): Number of features in the input tensor n_classes (int): Number of classes in the dataset. cutoffs (Sequence): Cutoffs used to assign targets to their buckets. div_value (float, optional): value used as an exponent to compute sizes of the clusters. Default: 4.0 Returns: ``NamedTuple`` with ``output`` and ``loss`` fields: * **output** is a Tensor of size ``N`` containing computed target log probabilities for each example * **loss** is a Scalar representing the computed negative log likelihood loss Shape: - input: :math:`(N, in\_features)` - target: :math:`(N)` where each value satisfies :math:`0 <= target[i] <= n\_classes` - output: :math:`(N)` - loss: ``Scalar`` .. _Efficient softmax approximation for GPUs: https://arxiv.org/abs/1609.04309 .. _Zipf's law: https://en.wikipedia.org/wiki/Zipf%27s_law """ def __init__(self, in_features, n_classes, cutoffs, div_value=4., head_bias=False): super(AdaptiveLogSoftmaxWithLoss, self).__init__() cutoffs = list(cutoffs) if (cutoffs != sorted(cutoffs)) \ or (min(cutoffs) <= 0) \ or (max(cutoffs) >= (n_classes - 1)) \ or (len(set(cutoffs)) != len(cutoffs)) \ or any([int(c) != c for c in cutoffs]): raise ValueError("cutoffs should be a sequence of unique, positive " "integers sorted in an increasing order, where " "each value is between 1 and n_classes-1") self.in_features = in_features self.n_classes = n_classes self.cutoffs = cutoffs + [n_classes] self.div_value = div_value self.head_bias = head_bias self.shortlist_size = self.cutoffs[0] self.n_clusters = len(self.cutoffs) - 1 self.head_size = self.shortlist_size + self.n_clusters self.head = Linear(self.in_features, self.head_size, bias=self.head_bias) self.tail = ModuleList() for i in range(self.n_clusters): hsz = int(self.in_features // (self.div_value ** (i + 1))) osz = self.cutoffs[i + 1] - self.cutoffs[i] projection = Sequential( Linear(self.in_features, hsz, bias=False), Linear(hsz, osz, bias=False) ) self.tail.append(projection) def reset_parameters(self): self.head.reset_parameters() for i2h, h2o in self.tail: i2h.reset_parameters() h2o.reset_parameters() def forward(self, input, target): if input.size(0) != target.size(0): raise RuntimeError('Input and target should have the same size ' 'in the batch dimension.') used_rows = 0 batch_size = target.size(0) output = input.new_zeros(batch_size) gather_inds = target.new_empty(batch_size) # 从3开始,因为需要排除UNK = 0, PAD = 1, BOS = 2 cutoff_values = [3] + self.cutoffs for i in range(len(cutoff_values) - 1): low_idx = cutoff_values[i] high_idx = cutoff_values[i + 1] target_mask = (target >= low_idx) & (target < high_idx) row_indices = target_mask.nonzero().squeeze() if row_indices.numel() == 0: continue if i == 0: gather_inds.index_copy_(0, row_indices, target[target_mask]) else: relative_target = target[target_mask] - low_idx input_subset = input.index_select(0, row_indices) cluster_output = self.tail[i - 1](input_subset) cluster_index = self.shortlist_size + i - 1 gather_inds.index_fill_(0, row_indices, cluster_index) cluster_logprob = log_softmax(cluster_output, dim=1) local_logprob = cluster_logprob.gather(1, relative_target.unsqueeze(1)) output.index_copy_(0, row_indices, local_logprob.squeeze(1)) used_rows += row_indices.numel() if used_rows != batch_size: raise RuntimeError("Target values should be in [0, {}], " "but values in range [{}, {}] " "were found. ".format(self.n_classes - 1, target.min().item(), target.max().item())) head_output = self.head(input) head_logprob = log_softmax(head_output, dim=1) output += head_logprob.gather(1, gather_inds.unsqueeze(1)).squeeze() loss = (-output).mean() return _ASMoutput(output, loss) def _get_full_log_prob(self, input, head_output): """ Given input tensor, and output of `self.head`, compute the log of the full distribution """ out = input.new_empty((head_output.size(0), self.n_classes)) head_logprob = log_softmax(head_output, dim=1) out[:, :self.shortlist_size] = head_logprob[:, :self.shortlist_size] for i, (start_idx, stop_idx) in enumerate(zip(self.cutoffs, self.cutoffs[1:])): cluster_output = self.tail[i](input) cluster_logprob = log_softmax(cluster_output, dim=1) output_logprob = cluster_logprob + head_logprob[:, self.shortlist_size + i].unsqueeze(1) out[:, start_idx:stop_idx] = output_logprob return out def log_prob(self, input): """ Computes log probabilities for all :math:`n\_classes` Args: input (Tensor): a minibatch of examples Returns: log-probabilities of for each class :math:`c` in range :math:`0 <= c <= n\_classes`, where :math:`n\_classes` is a parameter passed to ``AdaptiveLogSoftmaxWithLoss`` constructor. Shape: - Input: :math:`(N, in\_features)` - Output: :math:`(N, n\_classes)` """ head_output = self.head(input) return self._get_full_log_prob(input, head_output) def predict(self, input): """ This is equivalent to `self.log_pob(input).argmax(dim=1)`, but is more efficient in some cases. Args: input (Tensor): a minibatch of examples Returns: output (Tensor): a class with the highest probability for each example Shape: - Input: :math:`(N, in\_features)` - Output: :math:`(N)` """ head_output = self.head(input) output = torch.argmax(head_output, dim=1) not_in_shortlist = (output >= self.shortlist_size) all_in_shortlist = not (not_in_shortlist.any()) if all_in_shortlist: return output elif not_in_shortlist.all(): log_prob = self._get_full_log_prob(input, head_output) return torch.argmax(log_prob, dim=1) else: log_prob = self._get_full_log_prob(input[not_in_shortlist], head_output[not_in_shortlist]) output[not_in_shortlist] = torch.argmax(log_prob, dim=1) return output ================================================ FILE: NLP/AutoTitle_F/models/loss.py ================================================ #!/usr/bin/python # -*- coding: utf-8 -*- # @Time : 2018/10/17 下午5:10 # @Author : ComeOnJian # @File : loss.py import torch import torch.nn as nn from torch.autograd import Variable import models.adaptive as adaptive PAD = 0 ############ ################### def criterion(tgt_vocab_size, use_cuda): weight = torch.ones(tgt_vocab_size) weight[PAD] = 0 # 如果 reduce = False,那么 size_average 参数失效,直接返回向量形式的 loss # 如果 reduce = True,那么 loss 返回的是标量。 # 如果 size_average = True,返回 loss.mean(). 如果 size_average = False,返回 loss.sum(); crit = nn.CrossEntropyLoss(weight, size_average=False) if use_cuda: crit.cuda() return crit def adaptive_criterion(config, use_cuda): # 适合切5-10份 # splits = [2800, 20000, config.tgt_vocab_size - 1] # 中型vocab # splits = [4200, 35000, 180000] # 大型vocab crit = adaptive.AdaptiveLogSoftmaxWithLoss(in_features=config.encoder_hidder_size, n_classes=config.tgt_vocab_size, cutoffs=config.splits) if use_cuda: crit.cuda() return crit def ml_criterion(hidden_outputs, decoder, targets, criterion, sim_score=0): """maximum likelihood loss""" # targets # [seq_length, batch] outputs = hidden_outputs.view(-1, hidden_outputs.size(2)) # [seq_length,batch,encoder_hidder_size] -> [seq_length * batch, encoder_hidder_size] scores = decoder.compute_score(outputs) # [seq_length * batch, encoder_hidder_size] -> [seq_length * batch, tgt_vocab_size] loss = criterion(scores, targets.view(-1)) + sim_score # [1] # pred = scores.max(1)[1] # [seq_length * batch, tgt_vocab_size] -> [seq_length * batch] # num_correct = pred.data.eq(targets.data).masked_select(targets.ne(PAD).data).sum() num_total = targets.ne(PAD).data.sum() loss.div(num_total).backward() loss = loss.data[0] del outputs, scores torch.cuda.empty_cache() return loss, num_total #, num_correct def ml_criterion_memory_efficiency(hidden_outputs, decoder, targets, criterion, config): outputs = Variable(hidden_outputs.data, requires_grad=True, volatile=False) num_total, loss = 0, 0 outputs_split = torch.split(outputs, config.max_generator_batches) targets_split = torch.split(targets, config.max_generator_batches) for i, (out_t, targ_t) in enumerate(zip(outputs_split, targets_split)): out_t = out_t.view(-1, out_t.size(2)) scores_t = decoder.compute_score(out_t) loss_t = criterion(scores_t, targ_t.view(-1)) num_total_t = targ_t.ne(PAD).data.sum() num_total += num_total_t loss += loss_t.data[0] loss_t.div(num_total_t).backward() grad_output = outputs.grad.data hidden_outputs.backward(grad_output) return loss, num_total def ml_criterion_sampled_loss(hidden_outputs, decoder, targets, config, sim_score=0): pass def ml_criterion_adaptive_sampled_loss(hidden_outputs, decoder, targets, criterion): outputs = hidden_outputs.view(-1, hidden_outputs.size(2)) # [seq_length,batch,encoder_hidder_size] -> [seq_length * batch, encoder_hidder_size] scores = decoder.compute_score(outputs) # [seq_length * batch, encoder_hidder_size] -> [seq_length * batch, tgt_vocab_size] raw_loss = criterion(scores, targets.view(-1)) # [1] # pred = scores.max(1)[1] # [seq_length * batch, tgt_vocab_size] -> [seq_length * batch] # num_correct = pred.data.eq(targets.data).masked_select(targets.ne(PAD).data).sum() num_total = targets.ne(PAD).data.sum() raw_loss[1].div(num_total).backward() loss = raw_loss[1].data[0] del outputs, scores torch.cuda.empty_cache() return loss, num_total, raw_loss# , num_correct def rl_criterion(): pass ================================================ FILE: NLP/AutoTitle_F/models/lr_scheduler.py ================================================ #!/usr/bin/python # -*- coding: utf-8 -*- # @Time : 2018/10/18 上午9:55 # @Author : ComeOnJian # @File : lr_scheduler.py import math from bisect import bisect_right from torch.optim.optimizer import Optimizer class _LRScheduler(object): def __init__(self, optimizer, last_epoch=-1): if not isinstance(optimizer, Optimizer): raise TypeError('{} is not an Optimizer'.format( type(optimizer).__name__)) self.optimizer = optimizer if last_epoch == -1: for group in optimizer.param_groups: group.setdefault('initial_lr', group['lr']) else: for i, group in enumerate(optimizer.param_groups): if 'initial_lr' not in group: raise KeyError("param 'initial_lr' is not specified " "in param_groups[{}] when resuming an optimizer".format(i)) self.base_lrs = list(map(lambda group: group['initial_lr'], optimizer.param_groups)) self.step(last_epoch + 1) self.last_epoch = last_epoch def get_lr(self): raise NotImplementedError def step(self, epoch=None): if epoch is None: epoch = self.last_epoch + 1 self.last_epoch = epoch for param_group, lr in zip(self.optimizer.param_groups, self.get_lr()): param_group['lr'] = lr class LambdaLR(_LRScheduler): """Sets the learning rate of each parameter group to the initial lr times a given function. When last_epoch=-1, sets initial lr as lr. Args: optimizer (Optimizer): Wrapped optimizer. lr_lambda (function or list): A function which computes a multiplicative factor given an integer parameter epoch, or a list of such functions, one for each group in optimizer.param_groups. last_epoch (int): The index of last epoch. Default: -1. Example: >>> # Assuming optimizer has two groups. >>> lambda1 = lambda epoch: epoch // 30 >>> lambda2 = lambda epoch: 0.95 ** epoch >>> scheduler = LambdaLR(optimizer, lr_lambda=[lambda1, lambda2]) >>> for epoch in range(100): >>> scheduler.step() >>> train(...) >>> validate(...) """ def __init__(self, optimizer, lr_lambda, last_epoch=-1): self.optimizer = optimizer if not isinstance(lr_lambda, list) and not isinstance(lr_lambda, tuple): self.lr_lambdas = [lr_lambda] * len(optimizer.param_groups) else: if len(lr_lambda) != len(optimizer.param_groups): raise ValueError("Expected {} lr_lambdas, but got {}".format( len(optimizer.param_groups), len(lr_lambda))) self.lr_lambdas = list(lr_lambda) self.last_epoch = last_epoch super(LambdaLR, self).__init__(optimizer, last_epoch) def get_lr(self): return [base_lr * lmbda(self.last_epoch) for lmbda, base_lr in zip(self.lr_lambdas, self.base_lrs)] class StepLR(_LRScheduler): """Sets the learning rate of each parameter group to the initial lr decayed by gamma every step_size epochs. When last_epoch=-1, sets initial lr as lr. Args: optimizer (Optimizer): Wrapped optimizer. step_size (int): Period of learning rate decay. gamma (float): Multiplicative factor of learning rate decay. Default: 0.1. last_epoch (int): The index of last epoch. Default: -1. Example: >>> # Assuming optimizer uses lr = 0.5 for all groups >>> # lr = 0.05 if epoch < 30 >>> # lr = 0.005 if 30 <= epoch < 60 >>> # lr = 0.0005 if 60 <= epoch < 90 >>> # ... >>> scheduler = StepLR(optimizer, step_size=30, gamma=0.1) >>> for epoch in range(100): >>> scheduler.step() >>> train(...) >>> validate(...) """ def __init__(self, optimizer, step_size, gamma=0.1, last_epoch=-1): self.step_size = step_size self.gamma = gamma super(StepLR, self).__init__(optimizer, last_epoch) def get_lr(self): return [base_lr * self.gamma ** (self.last_epoch // self.step_size) for base_lr in self.base_lrs] class MultiStepLR(_LRScheduler): """Set the learning rate of each parameter group to the initial lr decayed by gamma once the number of epoch reaches one of the milestones. When last_epoch=-1, sets initial lr as lr. Args: optimizer (Optimizer): Wrapped optimizer. milestones (list): List of epoch indices. Must be increasing. gamma (float): Multiplicative factor of learning rate decay. Default: 0.1. last_epoch (int): The index of last epoch. Default: -1. Example: >>> # Assuming optimizer uses lr = 0.5 for all groups >>> # lr = 0.05 if epoch < 30 >>> # lr = 0.005 if 30 <= epoch < 80 >>> # lr = 0.0005 if epoch >= 80 >>> scheduler = MultiStepLR(optimizer, milestones=[30,80], gamma=0.1) >>> for epoch in range(100): >>> scheduler.step() >>> train(...) >>> validate(...) """ def __init__(self, optimizer, milestones, gamma=0.1, last_epoch=-1): if not list(milestones) == sorted(milestones): raise ValueError('Milestones should be a list of' ' increasing integers. Got {}', milestones) self.milestones = milestones self.gamma = gamma super(MultiStepLR, self).__init__(optimizer, last_epoch) def get_lr(self): return [base_lr * self.gamma ** bisect_right(self.milestones, self.last_epoch) for base_lr in self.base_lrs] class ExponentialLR(_LRScheduler): """Set the learning rate of each parameter group to the initial lr decayed by gamma every epoch. When last_epoch=-1, sets initial lr as lr. Args: optimizer (Optimizer): Wrapped optimizer. gamma (float): Multiplicative factor of learning rate decay. last_epoch (int): The index of last epoch. Default: -1. """ def __init__(self, optimizer, gamma, last_epoch=-1): self.gamma = gamma super(ExponentialLR, self).__init__(optimizer, last_epoch) def get_lr(self): return [base_lr * self.gamma ** self.last_epoch for base_lr in self.base_lrs] class CosineAnnealingLR(_LRScheduler): """Set the learning rate of each parameter group using a cosine annealing schedule, where :math:`\eta_{max}` is set to the initial lr and :math:`T_{cur}` is the number of epochs since the last restart in SGDR: .. math:: \eta_t = \eta_{min} + \frac{1}{2}(\eta_{max} - \eta_{min})(1 + \cos(\frac{T_{cur}}{T_{max}}\pi)) When last_epoch=-1, sets initial lr as lr. It has been proposed in `SGDR: Stochastic Gradient Descent with Warm Restarts`_. Note that this only implements the cosine annealing part of SGDR, and not the restarts. Args: optimizer (Optimizer): Wrapped optimizer. T_max (int): Maximum number of iterations. eta_min (float): Minimum learning rate. Default: 0. last_epoch (int): The index of last epoch. Default: -1. .. _SGDR\: Stochastic Gradient Descent with Warm Restarts: https://arxiv.org/abs/1608.03983 """ def __init__(self, optimizer, T_max, eta_min=0, last_epoch=-1): self.T_max = T_max self.eta_min = eta_min super(CosineAnnealingLR, self).__init__(optimizer, last_epoch) def get_lr(self): return [self.eta_min + (base_lr - self.eta_min) * (1 + math.cos(self.last_epoch / self.T_max * math.pi)) / 2 for base_lr in self.base_lrs] class ReduceLROnPlateau(object): """Reduce learning rate when a metric has stopped improving. Models often benefit from reducing the learning rate by a factor of 2-10 once learning stagnates. This scheduler reads a metrics quantity and if no improvement is seen for a 'patience' number of epochs, the learning rate is reduced. Args: optimizer (Optimizer): Wrapped optimizer. mode (str): One of `min`, `max`. In `min` mode, lr will be reduced when the quantity monitored has stopped decreasing; in `max` mode it will be reduced when the quantity monitored has stopped increasing. Default: 'min'. factor (float): Factor by which the learning rate will be reduced. new_lr = lr * factor. Default: 0.1. patience (int): Number of epochs with no improvement after which learning rate will be reduced. Default: 10. verbose (bool): If True, prints a message to stdout for each update. Default: False. threshold (float): Threshold for measuring the new optimum, to only focus on significant changes. Default: 1e-4. threshold_mode (str): One of `rel`, `abs`. In `rel` mode, dynamic_threshold = best * ( 1 + threshold ) in 'max' mode or best * ( 1 - threshold ) in `min` mode. In `abs` mode, dynamic_threshold = best + threshold in `max` mode or best - threshold in `min` mode. Default: 'rel'. cooldown (int): Number of epochs to wait before resuming normal operation after lr has been reduced. Default: 0. min_lr (float or list): A scalar or a list of scalars. A lower bound on the learning rate of all param groups or each group respectively. Default: 0. eps (float): Minimal decay applied to lr. If the difference between new and old lr is smaller than eps, the update is ignored. Default: 1e-8. Example: >>> optimizer = torch.optim.SGD(model.parameters(), lr=0.1, momentum=0.9) >>> scheduler = ReduceLROnPlateau(optimizer, 'min') >>> for epoch in range(10): >>> train(...) >>> val_loss = validate(...) >>> # Note that step should be called after validate() >>> scheduler.step(val_loss) """ def __init__(self, optimizer, mode='min', factor=0.1, patience=10, verbose=False, threshold=1e-4, threshold_mode='rel', cooldown=0, min_lr=0, eps=1e-8): if factor >= 1.0: raise ValueError('Factor should be < 1.0.') self.factor = factor if not isinstance(optimizer, Optimizer): raise TypeError('{} is not an Optimizer'.format( type(optimizer).__name__)) self.optimizer = optimizer if isinstance(min_lr, list) or isinstance(min_lr, tuple): if len(min_lr) != len(optimizer.param_groups): raise ValueError("expected {} min_lrs, got {}".format( len(optimizer.param_groups), len(min_lr))) self.min_lrs = list(min_lr) else: self.min_lrs = [min_lr] * len(optimizer.param_groups) self.patience = patience self.verbose = verbose self.cooldown = cooldown self.cooldown_counter = 0 self.mode = mode self.threshold = threshold self.threshold_mode = threshold_mode self.best = None self.num_bad_epochs = None self.mode_worse = None # the worse value for the chosen mode self.is_better = None self.eps = eps self.last_epoch = -1 self._init_is_better(mode=mode, threshold=threshold, threshold_mode=threshold_mode) self._reset() def _reset(self): """Resets num_bad_epochs counter and cooldown counter.""" self.best = self.mode_worse self.cooldown_counter = 0 self.num_bad_epochs = 0 def step(self, metrics, epoch=None): current = metrics if epoch is None: epoch = self.last_epoch = self.last_epoch + 1 self.last_epoch = epoch if self.is_better(current, self.best): self.best = current self.num_bad_epochs = 0 else: self.num_bad_epochs += 1 if self.in_cooldown: self.cooldown_counter -= 1 self.num_bad_epochs = 0 # ignore any bad epochs in cooldown if self.num_bad_epochs > self.patience: self._reduce_lr(epoch) self.cooldown_counter = self.cooldown self.num_bad_epochs = 0 def _reduce_lr(self, epoch): for i, param_group in enumerate(self.optimizer.param_groups): old_lr = float(param_group['lr']) new_lr = max(old_lr * self.factor, self.min_lrs[i]) if old_lr - new_lr > self.eps: param_group['lr'] = new_lr if self.verbose: print('Epoch {:5d}: reducing learning rate' ' of group {} to {:.4e}.'.format(epoch, i, new_lr)) @property def in_cooldown(self): return self.cooldown_counter > 0 def _init_is_better(self, mode, threshold, threshold_mode): if mode not in {'min', 'max'}: raise ValueError('mode ' + mode + ' is unknown!') if threshold_mode not in {'rel', 'abs'}: raise ValueError('threshold mode ' + mode + ' is unknown!') if mode == 'min' and threshold_mode == 'rel': rel_epsilon = 1. - threshold self.is_better = lambda a, best: a < best * rel_epsilon self.mode_worse = float('Inf') elif mode == 'min' and threshold_mode == 'abs': self.is_better = lambda a, best: a < best - threshold self.mode_worse = float('Inf') elif mode == 'max' and threshold_mode == 'rel': rel_epsilon = threshold + 1. self.is_better = lambda a, best: a > best * rel_epsilon self.mode_worse = -float('Inf') else: # mode == 'max' and epsilon_mode == 'abs': self.is_better = lambda a, best: a > best + threshold self.mode_worse = -float('Inf') ================================================ FILE: NLP/AutoTitle_F/models/optims.py ================================================ #!/usr/bin/python # -*- coding: utf-8 -*- # @Time : 2018/10/18 上午9:51 # @Author : ComeOnJian # @File : optims.py import torch.optim as optim from torch.nn.utils import clip_grad_norm import torch from torch.optim.optimizer import Optimizer class Optim(object): def set_parameters(self, params): self.params = list(params) # careful: params may be a generator if self.method == 'sgd': self.optimizer = optim.SGD(self.params, lr=self.lr) elif self.method == 'adagrad': self.optimizer = optim.Adagrad(self.params, lr=self.lr) elif self.method == 'adadelta': self.optimizer = optim.Adadelta(self.params, lr=self.lr) elif self.method == 'adam': self.optimizer = optim.Adam(self.params, lr=self.lr) elif self.method == 'rmsprop': self.optimizer = optim.RMSprop(self.params, lr=self.lr) elif self.method == 'AdagradCustom': self.optimizer = AdagradCustom(self.params, lr=self.lr, initial_accumulator_value=self.initial_accumulator_value) else: raise RuntimeError("Invalid optim method: " + self.method) def __init__(self, method, lr, max_grad_norm, lr_decay=1, start_decay_at=None, initial_accumulator_value=None): self.last_ppl = None self.lr = lr self.max_grad_norm = max_grad_norm self.method = method self.lr_decay = lr_decay self.start_decay_at = start_decay_at self.start_decay = False self.initial_accumulator_value = initial_accumulator_value def step(self): # Compute gradients norm. if self.max_grad_norm: clip_grad_norm(self.params, self.max_grad_norm) self.optimizer.step() # decay learning rate if val perf does not improve or we hit the start_decay_at limit def updateLearningRate(self, ppl, epoch): if self.start_decay_at is not None and epoch >= self.start_decay_at: self.start_decay = True if self.last_ppl is not None and ppl > self.last_ppl: self.start_decay = True if self.start_decay: self.lr = self.lr * self.lr_decay print("Decaying learning rate to %g" % self.lr) self.last_ppl = ppl self.optimizer.param_groups[0]['lr'] = self.lr class AdagradCustom(Optimizer): """Implements Adagrad algorithm. It has been proposed in `Adaptive Subgradient Methods for Online Learning and Stochastic Optimization`_. Arguments: params (iterable): iterable of parameters to optimize or dicts defining parameter groups lr (float, optional): learning rate (default: 1e-2) lr_decay (float, optional): learning rate decay (default: 0) weight_decay (float, optional): weight decay (L2 penalty) (default: 0) .. _Adaptive Subgradient Methods for Online Learning and Stochastic Optimization: http://jmlr.org/papers/v12/duchi11a.html """ def __init__(self, params, lr=1e-2, lr_decay=0, weight_decay=0, initial_accumulator_value=0): defaults = dict(lr=lr, lr_decay=lr_decay, weight_decay=weight_decay, initial_accumulator_value=initial_accumulator_value) super(AdagradCustom, self).__init__(params, defaults) for group in self.param_groups: for p in group['params']: state = self.state[p] state['step'] = 0 state['sum'] = torch.zeros_like(p.data).fill_(initial_accumulator_value) def share_memory(self): for group in self.param_groups: for p in group['params']: state = self.state[p] state['sum'].share_memory_() def step(self, closure=None): """Performs a single optimization step. Arguments: closure (callable, optional): A closure that reevaluates the model and returns the loss. """ loss = None if closure is not None: loss = closure() for group in self.param_groups: for p in group['params']: if p.grad is None: continue grad = p.grad.data state = self.state[p] state['step'] += 1 if group['weight_decay'] != 0: if p.grad.data.is_sparse: raise RuntimeError("weight_decay option is not compatible with sparse gradients") grad = grad.add(group['weight_decay'], p.data) clr = group['lr'] / (1 + (state['step'] - 1) * group['lr_decay']) if grad.is_sparse: grad = grad.coalesce() # the update is non-linear so indices must be unique grad_indices = grad._indices() grad_values = grad._values() size = grad.size() def make_sparse(values): constructor = grad.new if grad_indices.dim() == 0 or values.dim() == 0: return constructor().resize_as_(grad) return constructor(grad_indices, values, size) state['sum'].add_(make_sparse(grad_values.pow(2))) std = state['sum']._sparse_mask(grad) std_values = std._values().sqrt_().add_(1e-10) p.data.add_(-clr, make_sparse(grad_values / std_values)) else: state['sum'].addcmul_(1, grad, grad) std = state['sum'].sqrt().add_(1e-10) p.data.addcdiv_(-clr, grad, std) return loss ================================================ FILE: NLP/AutoTitle_F/models/seq2seq.py ================================================ #!/usr/bin/python # -*- coding: utf-8 -*- # @Time : 2018/10/17 上午10:50 # @Author : ComeOnJian # @File : seq2seq.py import torch import torch.nn as nn import torch.nn.functional as F from torch.autograd import Variable from torch.nn.utils.rnn import pack_padded_sequence as pack from torch.nn.utils.rnn import pad_packed_sequence as unpack nn.SELU PAD = 0 UNK = 1 BOS = 2 EOS = 3 # init param def init_lstm_wt(lstm, init_v): for names in lstm._all_weights: for name in names: if name.startswith('weight_'): wt = getattr(lstm, name) wt.data.uniform_(-init_v, init_v) elif name.startswith('bias_'): # set forget bias to 1 bias = getattr(lstm, name) n = bias.size(0) start, end = n // 4, n // 2 bias.data.fill_(0.) bias.data[start:end].fill_(1.) def init_linear_wt(linear, init_v): # init_v = config.trunc_norm_init_std linear.weight.data.normal_(std=init_v) if linear.bias is not None: linear.bias.data.normal_(std=init_v) def init_wt_normal(wt, init_v): wt.data.normal_(std=init_v) def init_wt_unif(wt, init_v): # init_v = config.trunc_norm_init_std wt.data.uniform_(-init_v, init_v) ## encoder class Encoder(nn.Module): def __init__(self, config, embedding_weight = None): super(Encoder, self).__init__() # word embedding self.embedding = nn.Embedding(config.src_vocab_size, config.emb_dim) if embedding_weight is None: init_wt_normal(self.embedding.weight, config.trunc_norm_init_std) else: self.embedding.weight.data.copy_(embedding_weight) self.lstm = nn.LSTM(config.emb_dim, config.hidden_dim, num_layers=config.encoder_num_layers, batch_first=True, bidirectional=config.encoder_bidirec) init_lstm_wt(self.lstm, config.rand_unif_init_mag) #seq_lens should be in descending order def forward(self, input, seq_lens): embedded = self.embedding(input) packed = pack(embedded, seq_lens, batch_first=True) output, hidden = self.lstm(packed) # hidden ->(h,c) -> h or c num_layer x B x n h, _ = unpack(output, batch_first=True) # h dim = B x t_k x n h = h.contiguous() max_h, _ = h.max(dim=1) return h, hidden, max_h class ReduceState(nn.Module): def __init__(self,config): super(ReduceState, self).__init__() self.reduce_h = nn.Linear(config.hidden_dim * 2, config.hidden_dim) init_linear_wt(self.reduce_h, config.rand_unif_init_mag) self.reduce_c = nn.Linear(config.hidden_dim * 2 , config.hidden_dim) init_linear_wt(self.reduce_c, config.rand_unif_init_mag) self.config = config def forward(self, hidden): h, c = hidden # h, c dim = 2 x b x hidden_dim h_in = h.transpose(0, 1).contiguous().view(-1, self.config.hidden_dim * 2 ) hidden_reduced_h = F.relu(self.reduce_h(h_in)) c_in = c.transpose(0, 1).contiguous().view(-1, self.config.hidden_dim * 2 ) hidden_reduced_c = F.relu(self.reduce_c(c_in)) return (hidden_reduced_h.unsqueeze(0), hidden_reduced_c.unsqueeze(0)) # h, c dim = 1 x b x hidden_dim ## decoder class Decoder(nn.Module): def __init__(self, config, embedding_weight = None): super(Decoder, self).__init__() self.attention_network = Attention(config) # decoder self.embedding = nn.Embedding(config.tgt_vocab_size, config.emb_dim) if embedding_weight is None: init_wt_normal(self.embedding.weight, config.trunc_norm_init_std) else: self.embedding.weight.data.copy_(embedding_weight) self.x_context = nn.Linear(config.hidden_dim * 2 + config.emb_dim, config.emb_dim) self.lstm = nn.LSTM(config.emb_dim, config.hidden_dim, num_layers=1, batch_first=True, bidirectional=False) init_lstm_wt(self.lstm, config.rand_unif_init_mag) if config.pointer_gen: self.p_gen_linear = nn.Linear(config.hidden_dim * 4 + config.emb_dim, 1) #p_vocab self.out1 = nn.Linear(config.hidden_dim * 3, config.hidden_dim) self.out2 = nn.Linear(config.hidden_dim, config.tgt_vocab_size) init_linear_wt(self.out2,config.trunc_norm_init_std) self.config = config def forward(self, y_t_1, s_t_1, encoder_outputs, enc_padding_mask, c_t_1, extra_zeros, enc_batch_extend_vocab, coverage, step): if not self.training and step == 0: h_decoder, c_decoder = s_t_1 s_t_hat = torch.cat((h_decoder.view(-1, self.config.hidden_dim), c_decoder.view(-1, self.config.hidden_dim)), 1) # B x 2*hidden_dim c_t, _, coverage_next = self.attention_network(s_t_hat, encoder_outputs, enc_padding_mask, coverage) coverage = coverage_next y_t_1_embd = self.embedding(y_t_1) x = self.x_context(torch.cat((c_t_1, y_t_1_embd), 1)) lstm_out, s_t = self.lstm(x.unsqueeze(1), s_t_1) h_decoder, c_decoder = s_t s_t_hat = torch.cat((h_decoder.view(-1, self.config.hidden_dim), c_decoder.view(-1, self.config.hidden_dim)), 1) # B x 2*hidden_dim c_t, attn_dist, coverage_next = self.attention_network(s_t_hat, encoder_outputs, enc_padding_mask, coverage) if self.training or step > 0: coverage = coverage_next p_gen = None if self.config.pointer_gen: p_gen_input = torch.cat((c_t, s_t_hat, x), 1) # B x (2*2*hidden_dim + emb_dim) p_gen = self.p_gen_linear(p_gen_input) p_gen = F.sigmoid(p_gen) output = torch.cat((lstm_out.view(-1, self.config.hidden_dim), c_t), 1) # B x hidden_dim * 3 output = self.out1(output) # B x hidden_dim #output = F.relu(output) output = self.out2(output) # B x vocab_size vocab_dist = F.softmax(output, dim=1) if self.config.pointer_gen: vocab_dist_ = p_gen * vocab_dist attn_dist_ = (1 - p_gen) * attn_dist if extra_zeros is not None: vocab_dist_ = torch.cat([vocab_dist_, extra_zeros], 1) final_dist = vocab_dist_.scatter_add(1, enc_batch_extend_vocab, attn_dist_) else: final_dist = vocab_dist return final_dist, s_t, c_t, attn_dist, p_gen, coverage ## attention class Attention(nn.Module): def __init__(self,config): super(Attention, self).__init__() # attention self.W_h = nn.Linear(config.hidden_dim * 2, config.hidden_dim * 2, bias=False) if config.is_coverage: self.W_c = nn.Linear(1, config.hidden_dim * 2, bias=False) self.decode_proj = nn.Linear(config.hidden_dim * 2 , config.hidden_dim * 2) self.v = nn.Linear(config.hidden_dim * 2, 1, bias=False) self.config = config def forward(self, s_t_hat, h, enc_padding_mask, coverage): b, t_k, n = list(h.size()) h = h.view(-1, n) # B * t_k x 2*hidden_dim encoder_feature = self.W_h(h) #b dec_fea = self.decode_proj(s_t_hat) # B x 2*hidden_dim dec_fea_expanded = dec_fea.unsqueeze(1).expand(b, t_k, n).contiguous() # B x t_k x 2*hidden_dim dec_fea_expanded = dec_fea_expanded.view(-1, n) # B * t_k x 2*hidden_dim att_features = encoder_feature + dec_fea_expanded # B * t_k x 2*hidden_dim if self.config.is_coverage: coverage_input = coverage.view(-1, 1) # B * t_k x 1 coverage_feature = self.W_c(coverage_input) # B * t_k x 2*hidden_dim att_features = att_features + coverage_feature e = F.tanh(att_features) # B * t_k x 2*hidden_dim scores = self.v(e) # B * t_k x 1 scores = scores.view(-1, t_k) # B x t_k attn_dist_ = F.softmax(scores, dim=1) * enc_padding_mask # B x t_k normalization_factor = attn_dist_.sum(1, keepdim=True) attn_dist = attn_dist_ / normalization_factor attn_dist = attn_dist.unsqueeze(1) # B x 1 x t_k h = h.view(-1, t_k, n) # B x t_k x 2*hidden_dim c_t = torch.bmm(attn_dist, h) # B x 1 x n c_t = c_t.view(-1, self.config.hidden_dim * 2) # B x 2*hidden_dim attn_dist = attn_dist.view(-1, t_k) # B x t_k if self.config.is_coverage: coverage = coverage.view(-1, t_k) coverage = coverage + attn_dist return c_t, attn_dist, coverage #包含全局info self attention + cnn class Global_Attention(nn.Module): pass ## beam sample class Beam(object): def __init__(self, tokens, log_probs, state, context, coverage): self.tokens = tokens self.log_probs = log_probs self.state = state self.context = context self.coverage = coverage def extend(self, token, log_prob, state, context, coverage): return Beam(tokens = self.tokens + [token], log_probs = self.log_probs + [log_prob], state = state, context = context, coverage = coverage) @property def latest_token(self): return self.tokens[-1] @property def avg_log_prob(self): return sum(self.log_probs) / len(self.tokens) # seq2seq class seq2seq(nn.Module): def __init__(self, config, use_cuda, pretrain = None): super(seq2seq, self).__init__() if pretrain is not None: src_embedding = pretrain['src_emb'] tgt_embedding = pretrain['tgt_emb'] else: src_embedding = None tgt_embedding = None self.encoder = Encoder(config, embedding_weight=src_embedding) self.decoder = Decoder(config, embedding_weight=tgt_embedding) self.reduce_state = ReduceState(config) if config.share_vocab: self.decoder.embedding.weight = self.encoder.embedding.weight self.use_cuda = use_cuda self.config = config def forward(self, sources, sources_lengths, source_padding_mask, sources_batch_extend_vocab, extra_zeros, coverage, encoder_inputs, targets): encoder_outputs, encoder_hidden, max_encoder_output = self.encoder(sources, sources_lengths.tolist()) s_t_1 = self.reduce_state(encoder_hidden) size = len(sources_lengths.tolist()) c_t_1 = Variable(torch.zeros((size, 2 * self.config.hidden_dim)),volatile= False) if self.config.use_maxpool_init_ctx: c_t_1 = max_encoder_output if self.config.use_cuda: c_t_1 = c_t_1.cuda() if self.config.is_semantic_similary: self.en_h = s_t_1[0].squeeze(0) # b x hidden_dim step_losses = [] max_l = targets.size()[1] for di in range(max_l): y_t_1 = encoder_inputs[:, di] # Teacher forcing final_dist, s_t_1, c_t_1, attn_dist, p_gen, next_coverage = self.decoder(y_t_1, s_t_1, encoder_outputs, source_padding_mask, c_t_1, extra_zeros, sources_batch_extend_vocab, coverage, di) target = targets[:, di] gold_probs = torch.gather(final_dist, 1, target.unsqueeze(1)).squeeze() step_loss = -torch.log(gold_probs + self.config.eps) if self.config.is_coverage: step_coverage_loss = torch.sum(torch.min(attn_dist, coverage), 1) step_loss = step_loss + self.config.cov_loss_wt * step_coverage_loss coverage = next_coverage step_mask = target.ne(PAD).float() step_loss = step_loss * step_mask step_losses.append(step_loss) step_losses = torch.stack(step_losses, 1) num_total = targets.data.ne(PAD).sum() mean_loss = torch.sum(step_losses) / num_total if self.config.is_semantic_similary: self.de_h = s_t_1[0].squeeze(0) - self.en_h mean_loss = mean_loss - self.config.simil_wt * F.cosine_similarity(self.en_h,self.de_h,eps=self.config.eps) mean_loss.backward() return mean_loss.data[0] def rein_forward(self, sources, sources_lengths, source_padding_mask, sources_batch_extend_vocab, extra_zeros, coverage, tag_max_l, mode = 'sample'): # mode = 'sample_max' or 'sample' if mode != 'sample' and mode != 'sample_max': raise ValueError('mode param must is sample or sample_max') encoder_outputs, encoder_hidden, max_encoder_output = self.encoder(sources, sources_lengths.tolist()) s_t_1 = self.reduce_state(encoder_hidden) size = len(sources_lengths.tolist()) c_t_1 = Variable(torch.zeros((size, 2 * self.config.hidden_dim)), volatile=(mode=='sample_max')) if self.config.use_maxpool_init_ctx: c_t_1 = max_encoder_output y_t_1 = Variable(torch.LongTensor(size).fill_(BOS), volatile=(mode=='sample_max')) if self.config.use_cuda: c_t_1 = c_t_1.cuda() y_t_1 = y_t_1.cuda() # 不用teach forcing,根据采样分布sample选取 sample_y = [] log_probs = [] for di in range(tag_max_l): final_dist, s_t_1, c_t_1, attn_dist, p_gen, next_coverage = self.decoder(y_t_1, s_t_1, encoder_outputs, source_padding_mask, c_t_1, extra_zeros, sources_batch_extend_vocab, coverage, di) if mode == 'sample': y_t_1 = torch.multinomial(final_dist, 1).view(-1) # word_id可能oov,需要将 oov 换成unk gold_probs = torch.gather(final_dist, 1, y_t_1.unsqueeze(1)).squeeze() elif mode == 'sample_max': gold_probs, y_t_1 = torch.max(final_dist, 1) sample_y.append(y_t_1) y_t_1 = self.variable_to_init_id(y_t_1) step_loss = -torch.log(gold_probs + self.config.eps) if self.config.is_coverage: step_coverage_loss = torch.sum(torch.min(attn_dist, coverage), 1) step_loss = step_loss + self.config.cov_loss_wt * step_coverage_loss coverage = next_coverage step_mask = sample_y[-1].ne(PAD).float() step_loss = step_loss * step_mask log_probs.append(step_loss) log_probs = torch.stack(log_probs, 1) sample_y = torch.stack(sample_y, 1) return log_probs, sample_y # [B, max_seq_l] def beam_sample(self, sources, sources_lengths, source_padding_mask, sources_batch_extend_vocab, extra_zeros, coverage, beam_size): encoder_outputs, encoder_hidden, max_encoder_output = self.encoder(sources, sources_lengths.tolist()) b = max_encoder_output.size()[0] s_t_0 = self.reduce_state(encoder_hidden) c_t_0 = Variable(torch.zeros((b, 2 * self.config.hidden_dim)), volatile=False) if self.config.use_maxpool_init_ctx: c_t_0 = max_encoder_output if self.config.use_cuda: c_t_0 = c_t_0.cuda() dec_h, dec_c = s_t_0 # 1 x 2*hidden_size dec_h = dec_h.squeeze(dim=0) #默认会把前两个都squeeze了 dec_c = dec_c.squeeze(dim=0) # decoder batch preparation, it has beam_size example initially everything is repeated beams = [Beam(tokens=[BOS], log_probs=[0.0], state=(dec_h[0], dec_c[0]), context=c_t_0[0], coverage=(coverage[0] if self.config.is_coverage else None)) for _ in range(beam_size)] results = [] steps = 0 while steps < self.config.max_dec_steps and len(results) < beam_size: latest_tokens = [h.latest_token for h in beams] latest_tokens = [t if t < self.config.tgt_vocab_size else UNK for t in latest_tokens] y_t_1 = Variable(torch.LongTensor(latest_tokens),volatile=False) if self.use_cuda: y_t_1 = y_t_1.cuda() all_state_h = [] all_state_c = [] all_context = [] for h in beams: state_h, state_c = h.state all_state_h.append(state_h) all_state_c.append(state_c) all_context.append(h.context) s_t_1 = (torch.stack(all_state_h, 0).unsqueeze(0), torch.stack(all_state_c, 0).unsqueeze(0)) c_t_1 = torch.stack(all_context, 0) coverage_t_1 = None if self.config.is_coverage: all_coverage = [] for h in beams: all_coverage.append(h.coverage) coverage_t_1 = torch.stack(all_coverage, 0) final_dist, s_t, c_t, attn_dist, p_gen, coverage_t = self.decoder(y_t_1, s_t_1, encoder_outputs, source_padding_mask, c_t_1, extra_zeros, sources_batch_extend_vocab, coverage_t_1, steps) topk_log_probs, topk_ids = torch.topk(final_dist, beam_size * 2) dec_h, dec_c = s_t dec_h = dec_h.squeeze() dec_c = dec_c.squeeze() all_beams = [] num_orig_beams = 1 if steps == 0 else len(beams) for i in range(num_orig_beams): h = beams[i] state_i = (dec_h[i], dec_c[i]) context_i = c_t[i] coverage_i = (coverage_t[i] if self.config.is_coverage else None) for j in range(self.config.beam_size * 2): # for each of the top 2*beam_size hyps: new_beam = h.extend(token=topk_ids[i, j].data[0], log_prob=topk_log_probs[i, j].data[0], state=state_i, context=context_i, coverage=coverage_i) all_beams.append(new_beam) beams = [] for h in self.sort_beams(all_beams): if h.latest_token == EOS: if steps >= self.config.min_dec_steps: results.append(h) else: beams.append(h) if len(beams) == beam_size or len(results) == beam_size: break steps += 1 if len(results) == 0: results = beams beams_sorted = self.sort_beams(results) output_ids = [int(t) for t in beams_sorted[0].tokens[1:]] return output_ids def sort_beams(self, beams): beams.sort(key=lambda h: h.avg_log_prob, reverse=True) return beams def variable_to_init_id(self, v): li = [t if t < self.config.tgt_vocab_size else UNK for t in v.data.tolist()] v_data = torch.LongTensor(li) if self.config.use_cuda: v_data = v_data.cuda() v.data = v_data return v # def comput_rewardCritierion(self, inputs, ): # pass ================================================ FILE: NLP/AutoTitle_F/pycocoevalcap/README.md ================================================ # coco-caption Original README can be found at [tylin/coco-caption](https://github.com/tylin/coco-caption/blob/3f0fe9b819c0ea881a56441e4de1146924a394eb/README.md). ## License All files in the pycocoevalcap directory are under [BSD 2-clause "Simplified" License](https://github.com/tylin/coco-caption/blob/3f0fe9b819c0ea881a56441e4de1146924a394eb/license.txt) ================================================ FILE: NLP/AutoTitle_F/pycocoevalcap/__init__.py ================================================ __author__ = 'tylin' ================================================ FILE: NLP/AutoTitle_F/pycocoevalcap/bleu/LICENSE ================================================ Copyright (c) 2015 Xinlei Chen, Hao Fang, Tsung-Yi Lin, and Ramakrishna Vedantam Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ================================================ FILE: NLP/AutoTitle_F/pycocoevalcap/bleu/__init__.py ================================================ __author__ = 'tylin' # from bleu ================================================ FILE: NLP/AutoTitle_F/pycocoevalcap/bleu/bleu.py ================================================ #!/usr/bin/env python # # File Name : bleu.py # # Description : Wrapper for BLEU scorer. # # Creation Date : 06-01-2015 # Last Modified : Thu 19 Mar 2015 09:13:28 PM PDT # Authors : Hao Fang and Tsung-Yi Lin from .bleu_scorer import BleuScorer class Bleu: def __init__(self, n=4): # default compute Blue score up to 4 self._n = n self._hypo_for_image = {} self.ref_for_image = {} def compute_score(self,hyps, refs): # assert(gts.keys() == res.keys()) # imgIds = gts.keys() bleu_scorer = BleuScorer(n=self._n) # for id in imgIds: # hypo = res[id] # ref = gts[id] for (hyp, ref) in zip(hyps, refs): # Sanity check. bleu_scorer += (hyp, [ref]) #score, scores = bleu_scorer.compute_score(option='shortest') score, scores = bleu_scorer.compute_score(option='closest', verbose=0) #score, scores = bleu_scorer.compute_score(option='average', verbose=1) # return (bleu, bleu_info) return score, scores def method(self): return "Bleu" ================================================ FILE: NLP/AutoTitle_F/pycocoevalcap/bleu/bleu_scorer.py ================================================ #!/usr/bin/env python # bleu_scorer.py # David Chiang # Copyright (c) 2004-2006 University of Maryland. All rights # reserved. Do not redistribute without permission from the # author. Not for commercial use. # Modified by: # Hao Fang # Tsung-Yi Lin '''Provides: cook_refs(refs, n=4): Transform a list of reference sentences as strings into a form usable by cook_test(). cook_test(test, refs, n=4): Transform a test sentence as a string (together with the cooked reference sentences) into a form usable by score_cooked(). ''' import copy import sys, math, re from collections import defaultdict import six from six.moves import xrange as range def precook(s, n=4, out=False): """Takes a string as input and returns an object that can be given to either cook_refs or cook_test. This is optional: cook_refs and cook_test can take string arguments as well.""" words = s.split() counts = defaultdict(int) for k in range(1,n+1): for i in range(len(words)-k+1): ngram = tuple(words[i:i+k]) counts[ngram] += 1 return (len(words), counts) def cook_refs(refs, eff=None, n=4): ## lhuang: oracle will call with "average" '''Takes a list of reference sentences for a single segment and returns an object that encapsulates everything that BLEU needs to know about them.''' reflen = [] maxcounts = {} for ref in refs: rl, counts = precook(ref, n) reflen.append(rl) for (ngram,count) in six.iteritems(counts): maxcounts[ngram] = max(maxcounts.get(ngram,0), count) # Calculate effective reference sentence length. if eff == "shortest": reflen = min(reflen) elif eff == "average": reflen = float(sum(reflen))/len(reflen) ## lhuang: N.B.: leave reflen computaiton to the very end!! ## lhuang: N.B.: in case of "closest", keep a list of reflens!! (bad design) return (reflen, maxcounts) def cook_test(test, reflen_refmaxcounts, eff=None, n=4): '''Takes a test sentence and returns an object that encapsulates everything that BLEU needs to know about it.''' reflen, refmaxcounts = reflen_refmaxcounts testlen, counts = precook(test, n, True) result = {} # Calculate effective reference sentence length. if eff == "closest": result["reflen"] = min((abs(l-testlen), l) for l in reflen)[1] else: ## i.e., "average" or "shortest" or None result["reflen"] = reflen result["testlen"] = testlen result["guess"] = [max(0,testlen-k+1) for k in range(1,n+1)] result['correct'] = [0]*n for (ngram, count) in six.iteritems(counts): result["correct"][len(ngram)-1] += min(refmaxcounts.get(ngram,0), count) return result class BleuScorer(object): """Bleu scorer. """ __slots__ = "n", "crefs", "ctest", "_score", "_ratio", "_testlen", "_reflen", "special_reflen" # special_reflen is used in oracle (proportional effective ref len for a node). def copy(self): ''' copy the refs.''' new = BleuScorer(n=self.n) new.ctest = copy.copy(self.ctest) new.crefs = copy.copy(self.crefs) new._score = None return new def __init__(self, test=None, refs=None, n=4, special_reflen=None): ''' singular instance ''' self.n = n self.crefs = [] self.ctest = [] self.cook_append(test, refs) self.special_reflen = special_reflen def cook_append(self, test, refs): '''called by constructor and __iadd__ to avoid creating new instances.''' if refs is not None: self.crefs.append(cook_refs(refs)) if test is not None: cooked_test = cook_test(test, self.crefs[-1]) self.ctest.append(cooked_test) ## N.B.: -1 else: self.ctest.append(None) # lens of crefs and ctest have to match self._score = None ## need to recompute def ratio(self, option=None): self.compute_score(option=option) return self._ratio def score_ratio(self, option=None): '''return (bleu, len_ratio) pair''' return (self.fscore(option=option), self.ratio(option=option)) def score_ratio_str(self, option=None): return "%.4f (%.2f)" % self.score_ratio(option) def reflen(self, option=None): self.compute_score(option=option) return self._reflen def testlen(self, option=None): self.compute_score(option=option) return self._testlen def retest(self, new_test): if type(new_test) is str: new_test = [new_test] assert len(new_test) == len(self.crefs), new_test self.ctest = [] for t, rs in zip(new_test, self.crefs): self.ctest.append(cook_test(t, rs)) self._score = None return self def rescore(self, new_test): ''' replace test(s) with new test(s), and returns the new score.''' return self.retest(new_test).compute_score() def size(self): assert len(self.crefs) == len(self.ctest), "refs/test mismatch! %d<>%d" % (len(self.crefs), len(self.ctest)) return len(self.crefs) def __iadd__(self, other): '''add an instance (e.g., from another sentence).''' if type(other) is tuple: ## avoid creating new BleuScorer instances self.cook_append(other[0], other[1]) else: assert self.compatible(other), "incompatible BLEUs." self.ctest.extend(other.ctest) self.crefs.extend(other.crefs) self._score = None ## need to recompute return self def compatible(self, other): return isinstance(other, BleuScorer) and self.n == other.n def single_reflen(self, option="average"): return self._single_reflen(self.crefs[0][0], option) def _single_reflen(self, reflens, option=None, testlen=None): if option == "shortest": reflen = min(reflens) elif option == "average": reflen = float(sum(reflens))/len(reflens) elif option == "closest": reflen = min((abs(l-testlen), l) for l in reflens)[1] else: assert False, "unsupported reflen option %s" % option return reflen def recompute_score(self, option=None, verbose=0): self._score = None return self.compute_score(option, verbose) def compute_score(self, option=None, verbose=0): n = self.n small = 1e-9 tiny = 1e-15 ## so that if guess is 0 still return 0 bleu_list = [[] for _ in range(n)] if self._score is not None: return self._score if option is None: option = "average" if len(self.crefs) == 1 else "closest" self._testlen = 0 self._reflen = 0 totalcomps = {'testlen':0, 'reflen':0, 'guess':[0]*n, 'correct':[0]*n} # for each sentence for comps in self.ctest: testlen = comps['testlen'] self._testlen += testlen if self.special_reflen is None: ## need computation reflen = self._single_reflen(comps['reflen'], option, testlen) else: reflen = self.special_reflen self._reflen += reflen for key in ['guess','correct']: for k in range(n): totalcomps[key][k] += comps[key][k] # append per image bleu score bleu = 1. for k in range(n): bleu *= (float(comps['correct'][k]) + tiny) \ /(float(comps['guess'][k]) + small) bleu_list[k].append(bleu ** (1./(k+1))) ratio = (testlen + tiny) / (reflen + small) ## N.B.: avoid zero division if ratio < 1: for k in range(n): bleu_list[k][-1] *= math.exp(1 - 1/ratio) if verbose > 1: print(comps, reflen) totalcomps['reflen'] = self._reflen totalcomps['testlen'] = self._testlen bleus = [] bleu = 1. for k in range(n): bleu *= float(totalcomps['correct'][k] + tiny) \ / (totalcomps['guess'][k] + small) bleus.append(bleu ** (1./(k+1))) ratio = (self._testlen + tiny) / (self._reflen + small) ## N.B.: avoid zero division if ratio < 1: for k in range(n): bleus[k] *= math.exp(1 - 1/ratio) if verbose > 0: print(totalcomps) print("ratio:", ratio) self._score = bleus return self._score, bleu_list ================================================ FILE: NLP/AutoTitle_F/pycocoevalcap/cider/__init__.py ================================================ __author__ = 'tylin' ================================================ FILE: NLP/AutoTitle_F/pycocoevalcap/cider/cider.py ================================================ # Filename: cider.py # # Description: Describes the class to compute the CIDEr (Consensus-Based Image Description Evaluation) Metric # by Vedantam, Zitnick, and Parikh (http://arxiv.org/abs/1411.5726) # # Creation Date: Sun Feb 8 14:16:54 2015 # # Authors: Ramakrishna Vedantam and Tsung-Yi Lin from .cider_scorer import CiderScorer import pdb class Cider: """ Main Class to compute the CIDEr metric """ def __init__(self, test=None, refs=None, n=4, sigma=6.0): # set cider to sum over 1 to 4-grams self._n = n # set the standard deviation parameter for gaussian penalty self._sigma = sigma def compute_score(self, hyps, refs): """ Main function to compute CIDEr score :param hypo_for_image (dict) : dictionary with key and value ref_for_image (dict) : dictionary with key and value :return: cider (float) : computed CIDEr score for the corpus """ # assert(gts.keys() == res.keys()) # imgIds = gts.keys() cider_scorer = CiderScorer(n=self._n, sigma=self._sigma) # for id in imgIds: # hypo = res[id] # ref = gts[id] for (hyp, ref) in zip(hyps, refs): # Sanity check. # assert(type(hypo) is list) # assert(len(hypo) == 1) # assert(type(ref) is list) # assert(len(ref) > 0) cider_scorer += (hyp, [ref]) (score, scores) = cider_scorer.compute_score() return score, scores def method(self): return "CIDEr" ================================================ FILE: NLP/AutoTitle_F/pycocoevalcap/cider/cider_scorer.py ================================================ #!/usr/bin/env python # Tsung-Yi Lin # Ramakrishna Vedantam import copy import math from collections import defaultdict import numpy as np from six.moves import xrange as range import six def precook(s, n=4, out=False): """ Takes a string as input and returns an object that can be given to either cook_refs or cook_test. This is optional: cook_refs and cook_test can take string arguments as well. :param s: string : sentence to be converted into ngrams :param n: int : number of ngrams for which representation is calculated :return: term frequency vector for occuring ngrams """ words = s.split() counts = defaultdict(int) for k in range(1,n+1): for i in range(len(words)-k+1): ngram = tuple(words[i:i+k]) counts[ngram] += 1 return counts def cook_refs(refs, n=4): ## lhuang: oracle will call with "average" '''Takes a list of reference sentences for a single segment and returns an object that encapsulates everything that BLEU needs to know about them. :param refs: list of string : reference sentences for some image :param n: int : number of ngrams for which (ngram) representation is calculated :return: result (list of dict) ''' return [precook(ref, n) for ref in refs] def cook_test(test, n=4): '''Takes a test sentence and returns an object that encapsulates everything that BLEU needs to know about it. :param test: list of string : hypothesis sentence for some image :param n: int : number of ngrams for which (ngram) representation is calculated :return: result (dict) ''' return precook(test, n, True) class CiderScorer(object): """CIDEr scorer. """ def copy(self): ''' copy the refs.''' new = CiderScorer(n=self.n) new.ctest = copy.copy(self.ctest) new.crefs = copy.copy(self.crefs) return new def __init__(self, test=None, refs=None, n=4, sigma=6.0): ''' singular instance ''' self.n = n self.sigma = sigma self.crefs = [] self.ctest = [] self.document_frequency = defaultdict(float) self.cook_append(test, refs) self.ref_len = None def cook_append(self, test, refs): '''called by constructor and __iadd__ to avoid creating new instances.''' if refs is not None: self.crefs.append(cook_refs(refs)) if test is not None: self.ctest.append(cook_test(test)) ## N.B.: -1 else: self.ctest.append(None) # lens of crefs and ctest have to match def size(self): assert len(self.crefs) == len(self.ctest), "refs/test mismatch! %d<>%d" % (len(self.crefs), len(self.ctest)) return len(self.crefs) def __iadd__(self, other): '''add an instance (e.g., from another sentence).''' if type(other) is tuple: ## avoid creating new CiderScorer instances self.cook_append(other[0], other[1]) else: self.ctest.extend(other.ctest) self.crefs.extend(other.crefs) return self def compute_doc_freq(self): ''' Compute term frequency for reference data. This will be used to compute idf (inverse document frequency later) The term frequency is stored in the object :return: None ''' for refs in self.crefs: # refs, k ref captions of one image for ngram in set([ngram for ref in refs for (ngram,count) in six.iteritems(ref)]): self.document_frequency[ngram] += 1 # maxcounts[ngram] = max(maxcounts.get(ngram,0), count) def compute_cider(self): def counts2vec(cnts): """ Function maps counts of ngram to vector of tfidf weights. The function returns vec, an array of dictionary that store mapping of n-gram and tf-idf weights. The n-th entry of array denotes length of n-grams. :param cnts: :return: vec (array of dict), norm (array of float), length (int) """ vec = [defaultdict(float) for _ in range(self.n)] length = 0 norm = [0.0 for _ in range(self.n)] for (ngram,term_freq) in six.iteritems(cnts): # give word count 1 if it doesn't appear in reference corpus df = np.log(max(1.0, self.document_frequency[ngram])) # ngram index n = len(ngram)-1 # tf (term_freq) * idf (precomputed idf) for n-grams vec[n][ngram] = float(term_freq)*(self.ref_len - df) # compute norm for the vector. the norm will be used for computing similarity norm[n] += pow(vec[n][ngram], 2) if n == 1: length += term_freq norm = [np.sqrt(n) for n in norm] return vec, norm, length def sim(vec_hyp, vec_ref, norm_hyp, norm_ref, length_hyp, length_ref): ''' Compute the cosine similarity of two vectors. :param vec_hyp: array of dictionary for vector corresponding to hypothesis :param vec_ref: array of dictionary for vector corresponding to reference :param norm_hyp: array of float for vector corresponding to hypothesis :param norm_ref: array of float for vector corresponding to reference :param length_hyp: int containing length of hypothesis :param length_ref: int containing length of reference :return: array of score for each n-grams cosine similarity ''' delta = float(length_hyp - length_ref) # measure consine similarity val = np.array([0.0 for _ in range(self.n)]) for n in range(self.n): # ngram for (ngram,count) in six.iteritems(vec_hyp[n]): # vrama91 : added clipping val[n] += min(vec_hyp[n][ngram], vec_ref[n][ngram]) * vec_ref[n][ngram] if (norm_hyp[n] != 0) and (norm_ref[n] != 0): val[n] /= (norm_hyp[n]*norm_ref[n]) assert(not math.isnan(val[n])) # vrama91: added a length based gaussian penalty val[n] *= np.e**(-(delta**2)/(2*self.sigma**2)) return val # compute log reference length self.ref_len = np.log(float(len(self.crefs))) scores = [] for test, refs in zip(self.ctest, self.crefs): # compute vector for test captions vec, norm, length = counts2vec(test) # compute vector for ref captions score = np.array([0.0 for _ in range(self.n)]) for ref in refs: vec_ref, norm_ref, length_ref = counts2vec(ref) score += sim(vec, vec_ref, norm, norm_ref, length, length_ref) # change by vrama91 - mean of ngram scores, instead of sum score_avg = np.mean(score) # divide by number of references score_avg /= len(refs) # multiply score by 10 score_avg *= 10.0 # append score of an image to the score list scores.append(score_avg) return scores def compute_score(self, option=None, verbose=0): # compute idf self.compute_doc_freq() # assert to check document frequency assert(len(self.ctest) >= max(self.document_frequency.values())) # compute cider score score = self.compute_cider() # debug # print score return np.mean(np.array(score)), np.array(score) ================================================ FILE: NLP/AutoTitle_F/pycocoevalcap/license.txt ================================================ Copyright (c) 2015, Xinlei Chen, Hao Fang, Tsung-Yi Lin, and Ramakrishna Vedantam All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. The views and conclusions contained in the software and documentation are those of the authors and should not be interpreted as representing official policies, either expressed or implied, of the FreeBSD Project. ================================================ FILE: NLP/AutoTitle_F/pycocoevalcap/meteor/__init__.py ================================================ __author__ = 'tylin' ================================================ FILE: NLP/AutoTitle_F/pycocoevalcap/meteor/meteor.py ================================================ #!/usr/bin/env python # Python wrapper for METEOR implementation, by Xinlei Chen # Acknowledge Michael Denkowski for the generous discussion and help import atexit import sys import os import subprocess import threading # Assumes meteor-1.5.jar is in the same directory as meteor.py. Change as needed. METEOR_JAR = 'meteor-1.5.jar' def enc(s): return s.encode('utf-8') def dec(s): return s.decode('utf-8') class Meteor: def __init__(self): # Used to guarantee thread safety self.lock = threading.Lock() meteor_cmd = ['java', '-jar', '-Xmx2G', METEOR_JAR, '-', '-', '-stdio', '-l', 'en', '-norm'] env = os.environ.copy() env['LC_ALL'] = "C" self.meteor_p = subprocess.Popen(meteor_cmd, cwd=os.path.dirname(os.path.abspath(__file__)), env=env, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE) atexit.register(self.close) def close(self): with self.lock: if self.meteor_p: self.meteor_p.kill() self.meteor_p.wait() self.meteor_p = None # if the user calls close() manually, remove the # reference from atexit so the object can be garbage-collected. if atexit is not None and atexit.unregister is not None: atexit.unregister(self.close) def compute_score(self, gts, res): assert (gts.keys() == res.keys()) imgIds = gts.keys() scores = [] eval_line = 'EVAL' with self.lock: for i in imgIds: assert (len(res[i]) == 1) stat = self._stat(res[i][0], gts[i]) eval_line += ' ||| {}'.format(stat) self.meteor_p.stdin.write(enc('{}\n'.format(eval_line))) self.meteor_p.stdin.flush() for i in range(0, len(imgIds)): scores.append(float(dec(self.meteor_p.stdout.readline().strip()))) score = float(dec(self.meteor_p.stdout.readline()).strip()) return score, scores def method(self): return "METEOR" def _stat(self, hypothesis_str, reference_list): # SCORE ||| reference 1 words ||| reference n words ||| hypothesis words hypothesis_str = hypothesis_str.replace('|||', '').replace(' ', ' ') score_line = ' ||| '.join(('SCORE', ' ||| '.join(reference_list), hypothesis_str)) self.meteor_p.stdin.write(enc(score_line)) self.meteor_p.stdin.write(enc('\n')) self.meteor_p.stdin.flush() return dec(self.meteor_p.stdout.readline()).strip() def _score(self, hypothesis_str, reference_list): with self.lock: # SCORE ||| reference 1 words ||| reference n words ||| hypothesis words hypothesis_str = hypothesis_str.replace('|||', '').replace(' ', ' ') score_line = ' ||| '.join(('SCORE', ' ||| '.join(reference_list), hypothesis_str)) self.meteor_p.stdin.write(enc('{}\n'.format(score_line))) self.meteor_p.stdin.flush() stats = dec(self.meteor_p.stdout.readline()).strip() eval_line = 'EVAL ||| {}'.format(stats) # EVAL ||| stats self.meteor_p.stdin.write(enc('{}\n'.format(eval_line))) self.meteor_p.stdin.flush() score = float(dec(self.meteor_p.stdout.readline()).strip()) # bug fix: there are two values returned by the jar file, one average, and one all, so do it twice # thanks for Andrej for pointing this out score = float(dec(self.meteor_p.stdout.readline()).strip()) return score def __del__(self): self.close() ================================================ FILE: NLP/AutoTitle_F/pycocoevalcap/meteor/tests/test_meteor.py ================================================ # -*- coding: utf-8 -*- from __future__ import unicode_literals import unittest from nlgeval.pycocoevalcap.meteor.meteor import Meteor class TestMeteor(unittest.TestCase): def test_compute_score(self): m = Meteor() s = m.compute_score({0: ["test"]}, {0: ["test"]}) self.assertEqual(s, (1.0, [1.0])) s = m.compute_score({0: ["テスト"]}, {0: ["テスト"]}) self.assertEqual(s, (1.0, [1.0])) ================================================ FILE: NLP/AutoTitle_F/pycocoevalcap/rouge/__init__.py ================================================ __author__ = 'vrama91' ================================================ FILE: NLP/AutoTitle_F/pycocoevalcap/rouge/rouge.py ================================================ #!/usr/bin/env python # # File Name : rouge.py # # Description : Computes ROUGE-L metric as described by Lin and Hovey (2004) # # Creation Date : 2015-01-07 06:03 # Author : Ramakrishna Vedantam import numpy as np import pdb def my_lcs(string, sub): """ Calculates longest common subsequence for a pair of tokenized strings :param string : list of str : tokens from a string split using whitespace :param sub : list of str : shorter string, also split using whitespace :returns: length (list of int): length of the longest common subsequence between the two strings Note: my_lcs only gives length of the longest common subsequence, not the actual LCS """ if(len(string)< len(sub)): sub, string = string, sub lengths = [[0 for i in range(0,len(sub)+1)] for j in range(0,len(string)+1)] for j in range(1,len(sub)+1): for i in range(1,len(string)+1): if(string[i-1] == sub[j-1]): lengths[i][j] = lengths[i-1][j-1] + 1 else: lengths[i][j] = max(lengths[i-1][j] , lengths[i][j-1]) return lengths[len(string)][len(sub)] class Rouge(): ''' Class for computing ROUGE-L score for a set of candidate sentences for the MS COCO test set ''' def __init__(self): # vrama91: updated the value below based on discussion with Hovey self.beta = 1.2 def calc_score(self, candidate, refs): """ Compute ROUGE-L score given one candidate and references for an image :param candidate: str : candidate sentence to be evaluated :param refs: list of str : COCO reference sentences for the particular image to be evaluated :returns score: int (ROUGE-L score for the candidate evaluated against references) """ # assert(len(candidate)==1) assert(len(refs)>0) prec = [] rec = [] # split into tokens token_c = candidate.split(" ") for reference in refs: # split into tokens token_r = reference.split(" ") # compute the longest common subsequence lcs = my_lcs(token_r, token_c) prec.append(lcs/float(len(token_c))) rec.append(lcs/float(len(token_r))) prec_max = max(prec) rec_max = max(rec) if(prec_max!=0 and rec_max !=0): beta = prec_max/(float(rec_max) + 1e-12) score = ((1 + beta**2)*prec_max*rec_max)/float(rec_max + beta**2*prec_max) else: score = 0.0 return score def compute_score(self, hyps, refs): """ Computes Rouge-L score given a set of reference and candidate sentences for the dataset Invoked by evaluate_captions.py """ # assert(gts.keys() == res.keys()) # imgIds = gts.keys() score = [] for (hyp, ref) in zip(hyps, refs): # hypo = res[id] # ref = gts[id] score.append(self.calc_score(hyp, [ref])) average_score = np.mean(np.array(score)) return average_score, np.array(score) def method(self): return "Rouge" ================================================ FILE: NLP/AutoTitle_F/pycocoevalcap/test_eval.py ================================================ #!/usr/bin/python # -*- coding: utf-8 -*- # @Time : 2018/10/18 下午3:30 # @Author : ComeOnJian # @File : test_eval.py import sys sys.path.append('../') from bleu.bleu import Bleu from meteor.meteor import Meteor from rouge.rouge import Rouge from cider.cider import Cider class EvalCap: ref_list = ['this is a reference sentence for sentence2 which was generated by your model'] hyp_list = ['this is sentence2 which has been generated by your model'] refs = {idx: [lines.strip()] for (idx,lines) in enumerate(ref_list)} hyps = {idx: [lines.strip()] for (idx,lines) in enumerate(hyp_list)} scorers = [ (Bleu(4),['Bleu_1', 'Bleu_2', 'Bleu_3', 'Bleu_4']), # (Meteor(), "METEOR"), (Rouge(), "ROUGE_L"), (Cider(), "CIDEr") ] for scorer, method in scorers: print('computing %s score...' % (scorer.method())) score, scores = scorer.compute_score(hyps,refs) if type(method) == list: for sc, scs, m in zip(score, scores, method): # self.setEval(sc, m) print("%s: %0.3f" % (m, sc)) else: # self.setEval(score, method) print("%s: %0.3f" % (method, score)) def setEval(score, method): pass ================================================ FILE: NLP/AutoTitle_F/submit.py ================================================ #!/usr/bin/python # -*- coding: utf-8 -*- # @Time : 2018/10/29 下午12:55 # @Author : ComeOnJian # @File : submit.py import util import models import os from data import * import time import warnings warnings.filterwarnings("ignore") import torch import torch.nn as nn # config config = util.read_config('./configs/predict.yaml') torch.manual_seed(config.seed) # log log_path = './data/results/' # log_path = config.log + '2018-10-20-12:17:22/' if not os.path.exists(log_path): os.mkdir(log_path) logging = util.logging(log_path+'res_log.txt') # 记录本次运行的记录 # checkpoint if config.checkpoint_restore: print('loading checkpoint from {}...'.format(config.checkpoint_restore)) checkpoints = torch.load(config.checkpoint_restore) # cuda use_cuda = torch.cuda.is_available() and len(config.gpus) > 0 #use_cuda = True if use_cuda: torch.cuda.set_device(config.gpus[0]) torch.cuda.manual_seed(config.seed) print('can use cuda: {}'.format(use_cuda)) # data print('loading data...') start_time = time.time() test_dataset = torch.load(config.validation_test_path) # test_dataset1 = torch.load(config.test_ds_path) vocab = torch.load(config.vocab_path) print('loading time cost: %.3f' % (time.time()-start_time)) config.src_vocab_size = vocab.size() config.tgt_vocab_size = vocab.size() print('src_vocab_size is {}, and tgt_vocab_size is {}'.format(config.src_vocab_size, config.tgt_vocab_size)) # dataset, batch_size, shuffle, num_workers, mode='train' test_loader = get_loader(test_dataset, batch_size= config.beam_size, shuffle = config.shuffle, num_workers = config.num_workers, mode='beam_decoder') # test_loader1 = get_loader(test_dataset1, batch_size= config.beam_size, shuffle = config.shuffle, num_workers = config.num_workers, mode='beam_decoder') # model pretrain_emb = { 'src_emb': None, 'tgt_emb': None } model = getattr(models, config.model)(config, use_cuda, pretrain=pretrain_emb) if config.checkpoint_restore: # 继续训练 # model.load_state_dict(checkpoints['model']) model_dict = model.state_dict() pretrain_model_dict = checkpoints['model'].items() model_train_dict = {} for key, value in pretrain_model_dict: if key in model_dict: model_train_dict[key] = value model_dict.update(model_train_dict) model.load_state_dict(model_dict) if use_cuda: model = model.cuda() if len(config.gpus) > 1: model = nn.DataParallel(model, device_ids=config.gpus, dim=0) def predict(model, test_loader): model.eval() candidate = [] # val_loss = 0. for idx, batch in enumerate(test_loader): sources, source_padding_mask, sources_lengths, sources_batch_extend_vocab, \ extra_zeros, coverage = get_input_from_batch(batch, use_cuda, use_point_gen=config.pointer_gen, use_coverage=config.is_coverage, trian=False, test=True) output_ids = model.beam_sample(sources, sources_lengths, source_padding_mask, sources_batch_extend_vocab, extra_zeros, coverage, config.beam_size) decoder_words = outputids2words(output_ids, vocab, (batch.art_oovs[0] if config.pointer_gen else None)) # 去除 try: fst_stop_idx = decoder_words.index('') decoder_words = decoder_words[:fst_stop_idx] except ValueError: decoder_words = decoder_words candidate.append(decoder_words) util.write_results(candidate) model.train() if __name__ == '__main__': predict(model, test_loader) # eval() ================================================ FILE: NLP/AutoTitle_F/train.py ================================================ #!/usr/bin/python # -*- coding: utf-8 -*- # @Time : 2018/10/25 下午3:45 # @Author : ComeOnJian # @File : train.py import util import models import os import time from collections import OrderedDict from data import * import warnings warnings.filterwarnings("ignore") import torch import torch.nn as nn # config config = util.read_config('./configs/train_model.yaml') torch.manual_seed(config.seed) # log log_path = config.log + util.format_time(time.localtime()) + '/' # log_path = config.log + '2018-10-20-12:17:22/' if not os.path.exists(log_path): os.mkdir(log_path) logging = util.logging(log_path+'log.txt') # 记录本次运行的记录 logging_csv = util.logging_csv(log_path+'record.csv') # 记录模型训练的指标数据 # checkpoint if config.checkpoint_restore: print('loading checkpoint from {}...'.format(config.checkpoint_restore)) # map_location={'cuda:1':'cuda:0'} checkpoints = torch.load(config.checkpoint_restore) # cuda use_cuda = torch.cuda.is_available() and len(config.gpus) > 0 #use_cuda = True if use_cuda: torch.cuda.set_device(config.gpus[0]) torch.cuda.manual_seed(config.seed + 1) logging('can use cuda: {}'.format(use_cuda)) # data logging('loading data...') start_time = time.time() train_dataset = torch.load(config.train_ds_path) val_dataset = torch.load(config.val_ds_path) vocab = torch.load(config.vocab_path) logging('loading time cost: %.3f' % (time.time()-start_time)) config.src_vocab_size = vocab.size() config.tgt_vocab_size = vocab.size() logging('src_vocab_size is {}, and tgt_vocab_size is {}'.format(config.src_vocab_size, config.tgt_vocab_size)) # dataset, batch_size, shuffle, num_workers, mode='train' train_loader = get_loader(train_dataset, batch_size = config.batch_size, shuffle = not config.shuffle, num_workers = config.num_workers) val_loader = get_loader(val_dataset, batch_size= config.beam_size, shuffle = config.shuffle, num_workers = config.num_workers-1,mode='beam_decoder') # model pretrain_emb = { 'src_emb': None, 'tgt_emb': None } model = getattr(models, config.model)(config, use_cuda, pretrain=pretrain_emb) if config.checkpoint_restore: # 继续训练 # model.load_state_dict(checkpoints['model']) model_dict = model.state_dict() pretrain_model_dict = checkpoints['model'].items() model_train_dict = {} for key, value in pretrain_model_dict: if key in model_dict: model_train_dict[key] = value model_dict.update(model_train_dict) model.load_state_dict(model_dict) if use_cuda: model = model.cuda() if len(config.gpus) > 1: model = nn.DataParallel(model, device_ids=config.gpus, dim=0) # optim if config.checkpoint_restore: optim = checkpoints['optim'] else: # optim = models.Optim(config.optim, config.learning_rate, config.max_grad_norm, # lr_decay=config.learning_rate_decay, start_decay_at=config.start_decay_at) optim = models.Optim(config.optim, config.learning_rate, config.max_grad_norm, initial_accumulator_value=config.adagrad_init_acc) optim.set_parameters(model.parameters()) if config.schedule: scheduler = models.CosineAnnealingLR(optim.optimizer, T_max=config.epoch) # total number of parameters param_count = 0 for param in model.parameters(): param_count += param.view(-1).size()[0] logging('model have {} param'.format(param_count)) for k, v in config.items(): logging("%s:\t%s" % (str(k), str(v))) logging(repr(model)+"\n") # model relation data if config.checkpoint_restore: updates = checkpoints['updates'] else: updates = 0 # 模型统计指标 total_loss, start_time = 0., time.time() report_total = 0 scores = [[] for metric in config.metrics] scores = OrderedDict(zip(config.metrics, scores)) def train(epoch): global e e = epoch model.train() if config.schedule: scheduler.step() print("Decaying learning rate to %g" % scheduler.get_lr()[0]) global updates, start_time, total_loss for idx, batch in enumerate(train_loader): sources, source_padding_mask, sources_lengths, sources_batch_extend_vocab, extra_zeros, coverage, \ encoder_inputs, targets, _ = get_input_from_batch(batch, use_cuda, use_point_gen = config.pointer_gen, use_coverage = config.is_coverage, trian = True) model.zero_grad() mean_loss = model(sources, sources_lengths, source_padding_mask, sources_batch_extend_vocab, extra_zeros, coverage, encoder_inputs, targets) total_loss += mean_loss optim.step() updates += 1 # eval if updates % config.eval_interval == 0: score = eval(epoch) for metric in config.metrics: scores[metric].append(score[metric]) # if metric == 'loss' and score[metric] <= min(scores[metric]): # logging('{} has updated, {} updates turn out min value: {}'.format(metric, updates, score[metric])) # save_model(log_path + 'best_' + metric + '_checkpoint.pt') if metric == 'rouge_l' and score[metric] >= max(scores[metric]): logging('{} has updated, {} updates turn out max value: {}'.format(metric, updates, score[metric])) save_model(log_path + 'best_' + metric + '_checkpoint.pt') if metric == 'bleu_2' and score[metric] >= max(scores[metric]): logging('{} has updated, {} updates turn out max value: {}'.format(metric, updates, score[metric])) save_model(log_path + 'best_' + metric + '_checkpoint.pt') model.train() # print train result if updates % config.print_interval == 0: logging("time: %6.3f, epoch: %3d, updates: %8d, train_loss: %6.3f" % (time.time() - start_time, epoch, updates, total_loss / config.print_interval)) total_loss = 0 start_time = time.time() # save model if updates % config.save_interval == 0: save_model(log_path + '{}.checkpoint.pt'.format(updates)) torch.cuda.empty_cache() def eval(epoch): model.eval() reference, candidate = [], [] # val_loss = 0. for idx, batch in enumerate(val_loader): sources, source_padding_mask, sources_lengths, sources_batch_extend_vocab, extra_zeros, coverage, \ _, _, targets_raw = get_input_from_batch(batch, use_cuda, use_point_gen=config.pointer_gen, use_coverage=config.is_coverage, trian=False) # if updates%2000==0: output_ids = model.beam_sample(sources, sources_lengths, source_padding_mask, sources_batch_extend_vocab, extra_zeros, coverage, config.beam_size) # else: # _, sample_y = model.rein_forward(sources, sources_lengths, source_padding_mask, sources_batch_extend_vocab, extra_zeros, coverage, tag_max_l, mode = 'sample_max') reference.append(targets_raw[0]) decoder_words = outputids2words(output_ids, vocab, (batch.art_oovs[0] if config.pointer_gen else None)) # 去除 try: fst_stop_idx = decoder_words.index('') decoder_words = decoder_words[:fst_stop_idx] except ValueError: decoder_words = decoder_words candidate.append(decoder_words) score = {} result = util.eval_metrics(candidate, reference) # result['val_loss'] = val_loss result['val_loss'], (result['val_loss'] logging_csv([e, updates, result['bleu_1'], result['bleu_2'], result['rouge_l'], result['cider']]) print('eval: |bleu_1: %.4f |bleu_2: %.4f |rouge_l: %.4f |cider: %.4f' % (result['bleu_1'], result['bleu_2'], result['rouge_l'],result['cider'])) # score['val_loss'] = result['val_loss'] score['rouge_l'] = result['rouge_l'] score['bleu_1'] = result['bleu_1'] score['bleu_2'] = result['bleu_2'] score['cider'] = result['cider'] del reference, candidate, sources, source_padding_mask, sources_lengths, sources_batch_extend_vocab, extra_zeros, coverage, targets_raw torch.cuda.empty_cache() return score def main(): for i in range(6, config.epoch+1): if i < 7: config.eval_interval = 5000 config.save_interval = 5000 elif i>= 7: config.eval_interval = 200 config.save_interval = 1500 train(i) for metric in config.metrics: if metric in [ 'bleu_1', 'bleu_2', 'rouge_l']: logging("Best %s score: %.2f" % (metric, max(scores[metric]))) else: logging("Best %s score: %.2f" % (metric, min(scores[metric]))) def save_model(path): global updates model_state_dict = model.module.state_dict() if len(config.gpus) > 1 else model.state_dict() checkpoints = { 'model': model_state_dict, 'config': config, 'optim': optim, 'updates': updates} torch.save(checkpoints, path) if __name__ == '__main__': # try: main() # except Exception: # if model is not None: # save_model(log_path + 'last_{}.checkpoint.pt'.format(updates)) # exit() ================================================ FILE: NLP/GAN&NLP.md ================================================ [转载来自EternalFeather大佬] 细数生成对抗网络和自然语言处理的那些恩怨情仇 === # 文本生成的基础模型(Introduction) 在众多NLP的task中,**文本生成(Text Generation)** 是一种结合了机器学习和自然语言处理等技术层面而衍生出来的应用。他的诞生在一定程度上诠释了当今这些技术的发展水平。例如前不久出现在网络上的Drumpf推文产生器。 ![](https://i.imgur.com/ir8H6tc.png) ## 文本生成分类 文本生成的应用大体上可以分为以下几类: - 机器翻译(machine translation) - 问答系统(Question-Answering System) - 对话生成(dialogue generation) ## 核心模型介绍 使用在文本生成的模型不唯一,比较常用的是循环神经网络(RNN),使用的Cell包括了LSTM,GRU等。作为序列生成模型的核心框架,encode-decode framework开始出现在人们的视线范围之内,并在短时间内成为了广为人知的核心模型框架。 ![](https://i.imgur.com/2E2JNNG.png) 类似于编码的原理,通过encoder将一个句子序列x(可以理解为utf-8编码)编码成为数字向量(也可以是矩阵或者Tensor,可以理解为unicode)。之后decoder利用这个编码后的context information将信息还原成为另一个对应的序列y(可以理解为big5编码)。虽然编码的过程是计算机通过改变初始化的超参数改变特征在隐层的映射机理,因此难以探究其具体含义,但是这也正应证了特征的分布是真实存在的(可以通过控制变量的方式探究每一个参数的具体含义)。 对于文字生成的任务,首先最重要的一点就是如何表示文字。我们知道图像是由像素(pixel)组成的,而像素在计算机中是被编码成数字的形式,因此我们可见的颜色图案都是由0和1这些数字构成的。虽然文字本身也被赋予了各自的编码(如utf-8等),但是这些编码却很难被应用在神经网络的参数传递中。通常的做法是建立一个词库字典(vocabulary)涵盖所有可能出现的字,而这些对应的字都会表示成one-hot vector的形式(不是唯一)作为模型的输入。每一次模型都会通过当前输入的字去预测下一个时间点会出现的字最可能是什么,从而一步一步得到完整的句子序列。 而我们往往会选择使用Softmax表示所有最终的结果,通过概率表示每一个字对应的概率值来选取最有可能的候选字作为输出。就这样,模型每次以一组“样本(sample:x)-标签(label:y)”作为训练的资料,通过循环神经网络主导的encoder和decoder将x转换成y。 # 传统GANs的数学定义和问题(Related Works) GANs顾名思义是由两个模型构成的:1、生成器(Generator) 2、判别器(Discriminator)。其中生成器的目标是产生最接近真实样本的分布,从而骗过判别器的判断。而判别器相反就是尽可能准确地区分出真实样本和生成样本。 ## 损失函数 在GANs中对于判别器而言,想要达到相应的目标就应该尽可能把真实样本当成正例,而把生成样本当成反例: ![](https://i.imgur.com/b18Xa3Q.png) 而对于生成器而言其损失函数有两种: ![](https://i.imgur.com/ln5gMA0.png)和改进之后的![](https://i.imgur.com/YY1COzI.png) ## 存在的问题 相信喜欢研究GANs的你也经常看到一些这样的说法“判别器训练的越好,生成器的模型就会越不稳定越南收敛”。传统的文字故难表达其中蕴含的奥秘,因此我们来通过数学方式了解一下。(推荐文章:令人拍案叫绝的Wasserstein GAN) 首先通过![](https://i.imgur.com/ln5gMA0.png)可以知道,当判别器达到最优化状态(我们想要的理想收敛状态,处于saddle point梯度为0)时,我们可以得到: ![](https://i.imgur.com/tQM7NGV.png) 我们对其求梯度(gradient)得到: ![](https://i.imgur.com/8DbmSgz.png) 化简之后得到: ![](https://i.imgur.com/53B6aGY.png) 这个公式中的 **P** 可以理解为通过x序列得到的y属于真实样本还是生成样本的概率值。当两者相等,则结果是0.5证明模型无法给出判断,因此为欠拟合状态。 如果此时我们将判别器训练的太好,那么生成器的loss就会降不下去(来自loss vanishing的问题)。我们给![](https://i.imgur.com/ln5gMA0.png)加上一项与生成器无关的项(虽然改变了loss,但是却不改变优化生成器的梯度,同时也是判别器损失函数的反),得到: ![](https://i.imgur.com/u4eMnkB.png) 化简之后得到: ![](https://i.imgur.com/xvXF6no.png) 这个式子涉及到的物理意义被称为KL散度(Kullback-Leibler divergence)和JS散度(Jensen-Shannon divergence)两个相似度衡量指标。具体的数学表达式如下: - KL divergence ![](https://i.imgur.com/zHItvfh.png) - JS divergence ![](https://i.imgur.com/KPwBQhJ.png) 将散度的公式代入增加了辅助项后的生成器优化函数,我们可以得到: ![](https://i.imgur.com/KCea4mp.png) 现在我们明确了一个道理:那就是在GANs训练过程中,当判别器到达了一个最佳状态的时候,生成器的目标就相当于最小化真实分布和生成分布之间的JS散度。**我们越是训练判别器,生成器的损失函数(loss function)就会越接近JS散度的值**。 那么这又会引起什么问题呢?我们知道越是减小误差,JS散度就会越小,生成分布就会被带向真实分布。但是假如两个分布本身就存在维度差或者说两个分布本身就没有重合的部分呢?这个问题比较抽象,下面通过一些例子来介绍: 首先介绍一下什么叫做两个分布没有重合的部分呢?维度差有是什么呢?怎么样的分布之间才算得上具有维度差呢?Wasserstein GAN告诉我们当![](https://i.imgur.com/u2XkwvK.png)和![](https://i.imgur.com/NJKd0XN.png)的支撑集(support)是高维空间中的低维流形(manifold)时,两者重合的部分的测度(measure)为0。 解释几个专有名词: - 支撑集(Support):函数的非零部分的子集,例如ReLU的支撑集就是![](https://i.imgur.com/8fTdAaI.png),一个概率分布的支撑集就是他所有概率密度非零值得集合。 - 流形(manifold):高维空间中的曲线、曲面的概念延伸。当两个分布的本质维度(intrinsic dimension)不同时,他们的自由度(二维的自由度包括长和宽)就会不同。 - 测度(measure):高维空间中的长度、面积、体积等测量指标的概念延伸。 **打个比方**,如果我们要比较一个正方体和一个三角形的相似程度,我们就会陷入一个问题。正方体的维度是3,而三角形的维度是2,相差了“高”这一维度特征。如果把像和不像作为分类问题来看,前者比后者多出了整整一个特征,在三维的分类空间(往往会取最大的维度空间)中他们的重合部分仅仅是一个平面。这也就以为这如果三角形的底边和高都等于正方体的边长,但是我们仍然无法通过某种方法让三角形“逼近”(可以理解为变换)正方体。 在文字生成的任务中,由于GANs的生成器采用从一些杂讯信号中随机抽样组合,再通过类似DNN的全连接层进行维度扩展,从而达到能够在维度空间匹配最终结果的一个输出信号。但是不要忽略了一点,这些生成信号的本质(特征集合)还是停留在原先的杂讯信号的基础上没有改变。换句话说,即使进行了维度提升,但若是全连接层的神经元不足够强大,就没有办法还原所有的特征从而让两个比较的结果处于同一个维度空间中。 其次,从离散的角度分析,对于一个x输入信号可能会有以下几种可能: - ![](https://i.imgur.com/laWZZ2F.png) - ![](https://i.imgur.com/ho6eo5j.png) - ![](https://i.imgur.com/6qEmE69.png) - ![](https://i.imgur.com/smaw7Mr.png) 第一种情况不存在两个分布的距离这样的说法(因为两个分布本身就不存在),因此对JS散度的计算没有帮助。第二种情况和第三种情况,代入公式可以得到 ![](https://i.imgur.com/Niw4Dfp.png) 和 ![](https://i.imgur.com/SkFNT8j.png) 而唯有第四种情况的两个分布才有可能存在交集从而达到减小JS散度的目的。 说完了JS散度在分布呈现不同状态时存在的问题,那么怎么样联想到GANs中呢?可以试想一下,如果现在的![](https://i.imgur.com/GQp7abc.png)就是![](https://i.imgur.com/u2XkwvK.png),而![](https://i.imgur.com/9Tmbfhd.png)就是![](https://i.imgur.com/NJKd0XN.png)。那么当判别器训练到最佳情况的时候,![](https://i.imgur.com/NJKd0XN.png)就会为0(相当于第二种情况),此时JS散度就是一个常数![](https://i.imgur.com/2J1WgZu.png),这也就意味着生成器的损失函数对于他本身的超参数的偏微分结果为0——没有梯度!这样一来每一次的对抗学习都会让生成器陷入一个迷茫的状态,也就是梯度的消失(gradient vanishing)。 总结一下,生成器的第一种损失函数是因为在判别器接近最优状态时,生成器的误差就相当于![](https://i.imgur.com/u2XkwvK.png)和![](https://i.imgur.com/NJKd0XN.png)的JS散度。而所有的情况都指明了,在这种最优条件下,无论两个分布怎么变换,都会让梯度变成0或者无意义。这样一来**GANs训练不稳定的原因也就清楚了**。判别器训练得太好,生成器的梯度就会消失,判别器训练得不好,生成器的梯度就会不准确,四处乱跑。只有当判别器训练刚刚好火候的时候,GANs才能平稳地进行对抗训练。 那么既然这种生成器的损失函数存在这样的问题,就以为着我们无法随心所欲地让模型自己朝着收敛的目标前进,势必会对训练模型造成影响。那么如果采用改进后的第二种损失函数呢? 在论述第一个损失函数的时候我们已经证明了: ![](https://i.imgur.com/ZIYSgJI.png) 我们先对KL散度进行一些调整: ![](https://i.imgur.com/cyUf16J.png) 由这个KL散度的启发,可以得到新的损失函数表达式如下: ![](https://i.imgur.com/Gkuv6Xn.png) 由于目标是优化生成器,因此计算梯度的项只保留对生成器可微分的项即可。舍弃梯度为0的项之后得到: ![](https://i.imgur.com/HWSl6cC.png) 相比推到这里,也有很多人能看出这个式子本身存在的一些问题了吧。首先,这个损失函数的目的是要同时最小化生成分布和真实分布的KL散度,又要最大化两个分布的JS散度。但是我们知道这两个散度的物理意义是朝着同一个方向发展的(两者正相关)。所以这样的优化目的显然存在矛盾的地方,从而让我们的生成器训练不稳定。其次,KL散度本身的量化也存在一些问题,原因就是他不是一个对称的衡量单位。 ### KL散度的问题 比较一下![](https://i.imgur.com/NXU4Tem.png)和![](https://i.imgur.com/k9Of88Y.png)可以发现: - 当![](https://i.imgur.com/A3LmpuI.png)而![](https://i.imgur.com/znxr8sJ.png)时,![](https://i.imgur.com/V32hqvs.png),对![](https://i.imgur.com/NXU4Tem.png)的贡献趋近于0 - 当![](https://i.imgur.com/CSPLSng.png)而![](https://i.imgur.com/TylgMGA.png)时,![](https://i.imgur.com/F5ZQHrU.png),对![](https://i.imgur.com/k9Of88Y.png)的贡献趋近于无穷大。 这些差异意味着什么呢?我们可以这样理解,KL散度对于以上两种方式定义的不同,也就侧面反映了生成器在面对判别器两种不同情况时候给出的判断。首先第一种情况下,错误来自于 **“生成器没有办法生成真实的样本”** ,这个时候的惩罚比较小(KL散度趋于0)。而第二种错误对应的错误则来自于 **“生成器无法生成真实样本(当生成器的模型达到最佳状态的时候,判别器给出的分数仍然很低)”** ,这个时候的惩罚是非常大的(KL散度趋于无穷大)。第一种误差让生成模型缺乏多样性,因为模型只是为了尽可能模仿真实样本进行输出。而第二种误差则让生成模型缺乏准确性,因为模型一旦尝试一些不一样的方法便会受到大量的惩罚。这样的权衡之下,模型和人一样是具有惰性的,在一切条件相近的前提下,模型宁可选择那些惩罚小的苟且方式而放弃挺而走险尝试不同的东西。这样一来生成器模型往往会选择接受第一种错误,而让生成的句子千篇一律,这在特征角度被定义为塌陷模式(collapse mode)。 ## 总结 经过了上述的介绍和数学推倒,我们可以看到GANs的模型所具备的一些问题和缺陷。其中包括了在最优判别器的时候,生成器往往会出现梯度消失的问题;以及在KL散度的物理意义上来说GANs的优化目标存在一定的矛盾性以及盲目性(collapse mode)。 ## 解决方案 关于以上的问题具体可以参考Wasserstein GAN一文,介绍了如何利用新的距离衡量两个分布的关系,从而解决KL散度和JS散度的一些问题。 ### Wasserstein GAN,那些年我们一起填完的坑 我们知道最开始生成器的损失函数面临KL散度和JS散度所带来的问题,而改进之后却又有着矛盾的优化策略。这样对一个模型而言是十分致命的,因此必须有人来填补这个坑,才能让GANs真正进入人们的实现成为一门科学。 Wasserstein GAN对GAN的改进是从替换KL散度进行的,他开创了一种全新的用来计算散度(divergence)的指标——**Earth Mover (EM) distance**。Wesserstein GAN的散度计算将两个分布看作是两堆土,而目的就是计算将第一堆土堆成第二堆的形状需要搬运的总距离。如下图所示: ![](https://i.imgur.com/BIthGKR.png) 左边的那个分布想要达到右边的状态,就必须移动制高点左边的那部分,而距离和量的考量就成为了当前的关键指标。 那么这样的评估方式又有什么好处呢?为什么说他能够解决KL散度和JS散度所带来的问题呢?首先我们先要明确一下问题的本质,从之前的讨论可以看出,KL散度和JS散度在当判别器训练到最佳状态的时候存在的问题就是两个分布的重合部分可忽略或者不存在。这个时候我们得到的生成器的损失函数(是一个常数![](https://i.imgur.com/FDmECAu.png)),除非能够让两个分布重合,这个时候才会突然变化成为最优解。这样一来我们的优化就缺少了一个所谓的“演化”过程,换句话说就是我们无法通过损失函数的改变来描述从好到不好的渐变过程,这样对于模型的训练是不利的。而利用Earth Mover distance我们就可以量化每一次更新之后的差异,从而还原这个重要的过程。具体情况如下图: ![](https://i.imgur.com/mhx2hDy.png) Wasserstein散度能够通过通过不同的距离 **d** 来反应每一个时刻样本的变化情况。生成器每一次的output能否更加接近真实样本的那些“进步”都能被抓到并传回,这样就保证了对于离散数据的对抗能够持续下去。 # 传统GANs在NLP上遇到的问题(Motivation) 说完了传统的GANs模型本身的问题之后,我们需要进一步了解为什么GANs用在NLP的领域又是另外一片天地。曾经就有人问过,GANs能否被使用在文字生成领域,在Generative Adversarial Networks for Text一文(可见参考文献部分)中GANs的作者Ian Goodfellow就层明确给出了回答。让人心寒的是,作者给出的答案是否认的成分居多,并且还提出了一些理由: ![](https://i.imgur.com/1oVPCoq.png) 从文中的一些表达例如:“there is no way...”和“no one really knows...”等表达来看,当时的作者对于这一个问题保持着疑问和反对的态度是多么的强烈。 那么首先让我们来看一下这段回文中提到的一个问题,那就是“Discrete numbers(离散数字)”。保留作者的观点可以看出,GANs当初被设计的初衷是定义在真实数据的情况下,通过生成器的到的合成数据都是连续的分布。因此,**只有在数据连续的情况下,才有可能通过略微改变合成的数据,而如果是离散的数据,就无法通过改变这些数据来得到新的结果**。 这个表达听起来很难get到精髓是什么,因此作者给出了一个形象的例子。如果一张图片,其像素点是1.0,那么改变了这个值成为1.0001之后,就会成为其他的值(在计算机的表现方式中,不同的像素值代表了输出不同的颜色)。而如果输入的是一个文字“penguin”,那么接下来我们就无法用同样的方式进行输出的转换,因为**没有人知道“penguin+0.001”之后得到的新的文字会是什么**。因为对于自然语言而言,每一个文字都是离散的存在,包括“单词”,“音节”,“字母”等等。尽管有的研究也在尝试将离散的文字之间建立起连续的转换机制,例如:考虑化学物质的性质,假设我们得到了化学式A,B,C并且知道了这些物质的特性,我们就能得到三者的转换关系(D=A-B+C),同样的道理能不能用在文字上呢?我们是否可能设计出类似queen-woman+man=king这样的结果呢?尽管听起来make sense,然而当前的一些数据表示(Data representation)和嵌入方式(Word embedding)都无法完全解决这个问题(即让文字具有连续性和数学意义)。 ## 困扰GANs在NLP上应用的三大强敌 即便是短短的发言,我们依然从中看出了GANs在文字生成领域乃至整个NLP应用层面存在着巨大的挑战。然后随着后续研究者们的不断探索,一个振奋人心的消息圣诞生了:那就是我们终于又发现了新的问题!!!下面就让我们来认识一下阻碍GANs在自然语言科学领域发展的“三巨头”: - 原始的GANs设计初衷是为了应用在连续的空间数据,而在离散空间中并不能工作。那么什么是离散数据呢?文本就是一个典型的离散数据,所谓的离散,并不是逐字逐词叫做离散,而是分布的不连续特性。这样的解释是不是感觉又绕了回来了?没错,想要了解离散的概念,最简单的就是去理解什么是连续。在计算机内部的资料表示形式中,往往是通过浮点数进行的,而浮点数就是连续的数值。一些连续的分布就是指数据本身的意义就是通过数字表示的:例如图像的基本单位是像素点(pixel),并且**这些pixel本身就是一些数字**,换句话说数字就是pixel的全部。图像通过矩阵(二维)的形式将这些数字组合起来,就形成了一张图片。因此改变图片的方法无非是改变其中的数字即可。例如左上角的哪一个pixel太红了,就把红色的那个色阶的值减小一些,而输出的数值无论是多少都会有一个对应的颜色来与之对应。 而文字不同,一个句子是被定义为了一个词库的one-hot vector形式(不唯一,但是本质相同),通过类似table的形式索引字典里的每一个字。而引发问题的根本原因就是模型输出的结果都是一个大小和one-hot vector相同的概率分布。而这个分布若想要最终反应成为真实的字,就必须进过一个过程叫做“sampling”,而问题就是出在“sampling”上。我们往往通过softmax得到了一个分布,然后sample出其中最大的那一个维度的值对应的字作为输出。 ![](https://i.imgur.com/Mj1HaTX.png) 从上图的例子来看,通常模型的优化方法是通过一些优化函数改变参数的分布,从而观察输出有没有好一点(loss小一些)。但是判别器若是得到sampling之后的结果呢?我们经过参数调整得到的结果是优化后的直接表现。例如:假如倒数第二个字对应最大的0.85并不是我们想要的那个输出,我们就会减小他的值假设成为了0.65,而第三项的0.12才是我们想要的那个字,因此我们扩大他的权重成为0.32,然而经过了sampling之后,呈现在判别器面前的仍然是倒数第二个字。这时候判别器给出的答案一样还是很糟糕,这样一来生成器就会失去训练的方向(可以理解为loss飘忽不定,有可能越优化loss越高)。 ![](https://i.imgur.com/RCjbz2S.png) 也有人因此提出质疑: **既然sampling过程会造成这样的问题,那么不要sampling直接把softmax的结果丢进判别器不就好了?** 不得不说这个确实是一个可行的方法,但是却遭到了模型本身的拒绝。为什么说是“拒绝”呢?其实判别器的训练初衷是为了分辨生成样本和真实样本的差距,那么这个时候如果两个样本的表达方式存在差异(一个是one-hot vector,一个是softmax;一个是one-hot encoder,一个是probability distribution)。这个时候就会出现之前说过的两者的特征维度不重合的现象。在这里这个现象可以理解为模型在经过神经元转换后的latent space中往往存在许多的desert hole(AI技术讲座精选中的术语)。在training的时候,模型往往会因为两者的分布出现差异而故意现在那些不重叠的区域不肯跳出。从而导致模型判别的根基出现问题(模型学习到的判断方式可能就是看输出的分布是不是one-hot vector,如果不是直接over;而不是努力去比较softmax和真实的one-hot vector究竟有多像)。 如下图所示: Comparison of continuous & discrete distributions. (x : θ, y : loss) ![](https://i.imgur.com/DSnxZxQ.png) 左边的连续分布我们总能找到一个loss下降的梯度,从而移动x轴(生成器的超参数)来达到更小的loss,这个过程被称为梯度下降优化(gradient descent)。而相比于离散的数据分布可以看到,独立点之间的优化是无法得到梯度的,因此我们往往会遇到上述提到的问题。 - 在生成文字的过程中,大多数模型都是基于循环神经网络(Recurrent neural network)模型设计的,这种时序性的模型在隐层表示(latent codes)计算过程中,error往往会随着序列不断累积直到最后。这种方式的另一个根本原因和最大似然估计(Maximum log-likelihood estimate)有关,也被称之为 **“Exposure bias”**。 ![](https://i.imgur.com/ZKVx8U1.png) 在training过程中,我们每一个时刻输入的都会是真实资料对应的值,因此即使出现错误,下一个时刻的输入仍然是正确的。但是在testing的过程中,由于缺乏真实资料的辅助,如果上一个时刻的结果出现错误,我们就会用错误的记过进行下一个时刻的预测,造成错误的累加。 - 再生成文本序列的过程中,传统的GANs是对整个句子或是更大的序列单位进行评估的。这一点也是非常直观的一个反应,因为我们无法在一个人说完整句话之前就断章取义去推测这句话的好坏。但是在时序生成的过程中,因为loss在句子生成过程中的每一个字产生的时间点都会被计算,因此这个时候的error如何得到就成了一个新的问题。 ![](https://i.imgur.com/0cO4Yth.png) 最直观的想法就是将整句的分数当做每一个部分单独的分数,但是这样的方式会让句子的成分承受相同的代价,不符合我们直观的感觉。因为造成句子不好的原因可能往往来自单独的一些部分,而不是全部。 # 传承的智慧(Methods) 见识到了GANs在文本生成领域的困难重重,是时候来一波强心剂了。尽管来自模型自身和外部环境的压力十分巨大,但是仍然有不少学者费尽心机探索学术的奥秘,挖掘最古老的智慧。 ## Generating Text via Adversarial Training - 论文链接:https://zhegan27.github.io/Papers/textGAN_nips2016_workshop.pdf - Key Points:这篇论文是比较早期利用GANs进行文本生成任务的尝试,通过循环神经网络(RNN+LSTM)作为生成器,采用光滑近似(smooth approximation)的优化理论来逼近真实样本分布。 - Graph & Algorithm: ![](https://i.imgur.com/mIJ2pRu.png) ### Feature Matching **思路**:文章提出的TextGAN模型利用了不同于以往的GANs所使用的优化函数,这种优化的思路基于特征匹配原理(feature matching)。 ![](https://i.imgur.com/fkGHe16.png) 通过计算生成器输出和真实分布在隐层上特征的差异,从而比较两者的差异,并最终最小化这样的差异。 文章还采用了一个特殊的技巧,就是在判别器进行pre-training的过程中,利用真实的句子难免会让判别器的判断局限在你和那些表达。而如果加入一些十分类似却又略微不同的句子结构,势必会让模型的判断更为灵活。而作者采用了交换真实句子中两个词的位置从而得到新的句子,并利用这些新的样本来帮助判别器进行训练。从量化角度看,模型接触的信息量是相同的,能不能进行判断完全取决于模型对于文字内部关联的把握(如果利用卷积+同样的池化模式得到的结果会相近,采用序列生成模型可能会大不相同)。 论文实验部分提到了在对抗过程中想要让训练稳定进行,生成器的训练频率将会是判别器的5倍。原因是判别器采用了CNN的架构,而生成器采用LSTM,这两者的收敛难度存在一定的差异。 ## SeqGAN: Sequence Generative Adversarial Nets with Policy Gradient - 论文链接:https://arxiv.org/pdf/1609.05473.pdf - Key Points:本文利用强化学习的思路,用reward代替gradient来进行前馈训练,避免了GANs无法在离散数据传递梯度的问题。同时利用蒙特卡罗检索(Monte Carlo Search)的方法得到每一个时间点的误差信息。 - Graph & Algorithm: ![](https://i.imgur.com/X28Bdg4.png) ![](https://i.imgur.com/Bi1mLgJ.png) ### Policy Gradient **思路**:如图所示,左边的部分是判别器(核心是CNN)的优化部分,利用真实资料和生成资料来训练判别器。右边的部分则是生成器(核心是LSTM)的优化部分,利用Monte Carlo的方式得到每一个时刻的reward,并借助policy gradient的强化学习方式进行模型优化更新。 强化学习更新的四个重要的因素包括:状态(state)、行为(action)、策略(policy)和奖励(reward)。在文字生成领域,state就相当于该时刻之前已经存在的序列(之前时刻输出的所有结果组成的sequence),action是当下需要选择生成的句子成分(当前解码后的字或词,也叫token),policy为GANs的生成器模型网络,reward则是GANs的判别器网络输出的概率值(也叫做scalar)。 ### Monte Carlo Search 论文在得到部分序列(intermediate sequences)的奖励上面采用了蒙特卡罗(Monte Carlo)的方式,这样的策略通过多次平行抽样来共同决定当前的序列的可靠性。 ![](https://i.imgur.com/nQsDr9Q.png) 当解码到 t 时刻的时候,模型会对后面的 T-t 个timestep采用蒙特卡罗检索出 N 条路径,这些路径经过判别器的结果会通过平均的方式作用在 t 时刻生成的那个token上。每一个序列都会经过几次深度检索得到不同的完整序列,然后这些序列的评分就综合决定了那个**固定前缀**的分数。作者给出了具体的算法如下: ![](https://i.imgur.com/DAvLkzr.png) ### Schedule Sampling 论文还参考了一种缓解exposure bias的方法。这种方法通过一个变化门槛值控制模型训练过程的每一个时刻是使用来自真实资料的值还是来自前一个时刻的预测结果,从而在训练的时候就让模型适应各种可能的错误发生。这样的经验在test的过程中就不容易因为一时的错误而让误差累积。 ![](https://i.imgur.com/cv08KyT.png) 对于强化学习(reinforcement learning)的部分,文章采用了policy gradient的方法重新定义了生成器的目标函数: ![](https://i.imgur.com/4Jv1V4B.png) 求导结果如下: ![](https://i.imgur.com/r5qhNsB.png) 目标函数告诉我们生成器模型的目的是要尽可能提高生成序列得到的来自判别器的reward分数的期望,这个目标与最初GANs的初衷不矛盾。 对于判别器的部分,论文给出了和原先GANs相同的优化策略: ![](https://i.imgur.com/qR2aCQF.png) ## Adversarial Learning for Neural Dialogue Generation - 论文链接:https://arxiv.org/pdf/1701.06547.pdf - Key Points:这篇论文将对抗学习(adversarial learning)用在开放性对话生成(open-domain dialogue generation)领域。与SeqGAN相同的一点是,文章采用了强化学习的方式取代传统的梯度将GANs应用在离散数据中,借助奖励reward来指导生成器的训练。另外,本文还采用了teacher forcing的方式来辅助生成器的训练,能够让对抗学习的过程更加稳定。 - Graph & Algorithm: ![](https://i.imgur.com/p6nEpTF.png) **思路**:因为是开放性对话生成,因此很自然地想到了采用seq2seq来作为生成器的核心模型;另外作者选择了hierarchical encoder而非CNN作为判别器,原因是循环神经网络能够更好地拟合序列的时序特征。但是这个理由需要建立在我们能够控制好判别器的训练幅度,因为之前讨论过过度训练或者训练不足都会让对抗过程变得不稳定。 针对如何得到每一个时刻的奖励,该论文的作者给出了两种不同的方法:Monte Carlo Search以及依靠自己训练的一个能够对部分生成序列进行reward计算的模型。前面那种方法和SeqGAN的做法相同就不在进行介绍,相比之下后者的模型能够通过使用完整的(fully)和部分的(partially)解码序列来训练一个分类模型。但是这种方法存在一个问题,那就是重复的序列会让模型overfitting在固定序列的生成模式。因为早期产生的部分序列会出现在后续的更长的序列中。怎么理解呢?假设我们有一个序列“This is a man.”,在模型训练第三个序列“This is a”的时候,模型已经学习过“This”和“This is”。也就是说this这个token的权重在训练后续的时间点时会被重复训练多次,这样以来模型对于早期的前缀序列会具有很深刻的印象,导致模型overfitting在一些固定的表达法而难以跳脱。为了克服这个问题,作者就选择了每一次更新的时候仅从所有的正序列(positive sequences)和负序列(negative sequences)中分别随机sample一个来训练判别器。实验结果表明这种方法比蒙特卡罗省时,但是却无法在收敛之后达到比蒙特卡罗更好的结果。 ### Teacher Forcing 在序列生成对抗的过程中,GANs的生成器只能间接地通过判别器产生的reward来判断所产生的句子的好坏。而不是直接接触最终的真实句子(可以叫做gold-standard)获取信息。这样的方式可能存在一个隐藏的问题点,那就是一旦生成器在某个时刻产生的句子不好,判别器就会给出一个较低的reward,这个时候对于生成器而言最直观的感觉就是需要对生成序列的分布进行改变。然而因为无法接触到最终label的任何信息,因此生成器很容易迷失(只知道自己不好,但是却不知道应该如何改进)。为了解决这个问题,本文引入了teacher forcing的策略,在生成器更新的过程中,如果判别器给出的reward很小,模型就会将真实的资料作为输入指导生成器进行下一次的更新优化。就好比一个老师在学生遇到困难的时候能够帮他指引方向一样。这样一来生成器就有可能在上述的情况下仍能得到较好的结果。 ## GANS for Sequences of Discrete Elements with the Gumbel-softmax Distribution - 论文链接:https://arxiv.org/pdf/1611.04051.pdf - Key Points:Gumbel Softmax Distribution - Graph & Algorithm: ![](https://i.imgur.com/w04YQ7F.png) **思路**:不同于之前的RL方法,该论文在处理离散数据的问题上采用了新的方法——Gumbel Softmax。离散数据通常是用one-hot vector表示,并可以通过sampling的方式从一些多项式(例如softmax函数)中采样得到。采样的过程:![](https://i.imgur.com/HNIeZqu.png),其中的![](https://i.imgur.com/FMeYe1T.png)是服从Gumbel Distribution的分布函数。然而这样的函数在反向传递过程中是无法微分的,因此我们采用另一种表示方式:![](https://i.imgur.com/4aG1Sjc.png),这样的方式通过调节温度系数![](https://i.imgur.com/5nuwM7C.png)的值我们可以让softmax的分布在形式上尽可能逼近one-hot vector的形式,从而打破KL散度识别的误区。 ## Connecting Generative Adversarial Networks and Actor-Critic Methods - 论文链接:https://arxiv.org/pdf/1610.01945.pdf - Key Points:Summarize the correlation between GAN and Actor-Critic - Graph & Algorithm: ![](https://i.imgur.com/We7q6hr.png) **思路**:大多数的强化学习模型只是采用了单一的决策(policy)和价值(value)方法。而Actor-Critic则是结合了两者的一项应用于一身的模型。类似GANs的运作方式,Actor-Critic也是采用了两种方法结合的训练模式。其中actor用来决策输出的action,而critic用来对action进行价值评估。 论文提到了很多关于GANs与Actor-Critic的相同之处。actor相当于generator,都是用来为下一个时刻产生相应的输出(sentence for GANs & action for Actor-Critic)。critic相当于discriminator,都是用来评估所产生的输出所具备的价值水平。 ## Improving Neural Machine Translation with Conditional Sequence Generative Adversarial Nets - 论文链接:https://arxiv.org/pdf/1703.04887.pdf - Key Points:将SeqGAN用在机器翻译领域 - Graph & Algorithm: ![](https://i.imgur.com/YNKQOjk.png) **思路**:论文提出了CSGAN-NMT模型,用对抗学习的方式训练模型解决机器翻译的问题。生成器用的是attention based的NMT,而判别器采用的则是CNN based的分类器。(对比RNN based发现,RNN的模型在句子分类上具有较高的准确率,这样导致发生先前提到的判别器过度训练导致的梯度消失问题) 文章的训练手法和SeqGAN十分类似,首先采用MLE的方式对生成器和判别器进行预训练。之后通过policy gradients+Monte Carlo的方式将两者结合起来做对抗学习。文章还采用了一种取代Schedule Sampling的方式来应对exposure bias的问题——Professor Forcing。 ### Professor Forcing 不同于Schedule Sampling采用预设的门槛来决定什么时候采用teacher forcing的训练方式和free running。professor forcing的方法采用训练一个分类器(discriminator)来对门槛进行评估。有点类似RL中的DQN和Policy gradients的关系,具体示意图如下: ![](https://i.imgur.com/Ox01o2b.png) 这样的方法可以想象成NN-based Schedule Sampling。 ## Improved Training of Wasserstein GANs - 论文链接:http://papers.nips.cc/paper/7159-improved-training-of-wasserstein-gans.pdf - Key Points:让WGANs也能在NLP领域上发挥作用 - Graph & Algorithm: ![](https://i.imgur.com/PrcrDaQ.png) **思路**:总结WGANs与传统GANs在实作上的差异包括:1、判别器最后一层的输出去掉sigmoid(或者softmax,相当于不做正规化)。2、生成器和判别器的loss不去log。(相当于利用value代替probability)3、每次更新判别器的参数之后把它们的绝对值截断到一个不超过c的范围(weight clipping)。4、不采用基于动量(momentum)的优化函数(如Adam),转而采用RMSProp或者SGD。 作者发现利用weight clipping的方式对判别器的输出分布进行Lipschitz限制,尽可能将结果逼近可靠的Wasserstein distance的方式是导致训练不稳定的一个关键因素。因为论文提出了通过梯度惩罚(gradient penalty)来代替之前采用的Lipschitz限制。 ![](https://i.imgur.com/1QUo5yh.png) 可以从算法中看出损失函数除了原先的部分,还加入了一个梯度惩罚项。 ## MaskGAN: Better Text Generation via Filling in the______ - 论文链接:https://arxiv.org/pdf/1801.07736.pdf - Key Points:采用Mask的方式让GANs在序列生成的时候更加robust - Graph & Algorithm: ![](https://i.imgur.com/rikhKho.png) **思路**:在针对exporsure bias和部分序列reward的问题上,论文采用了fill-in-the-blank或in-filling的方式加以缓解。在训练过程中,一部分文本信息将会被去除(masked),而模型的目的是随后需要填充文本中缺失的那些部分,让他尽可能和真实资料相近。 在文本数据中有着更复杂的mode,比如词组、短语、长的谚语等,这些都是我们希望模型能够学习的。然而SeqGAN中判别器是对一整个完整的句子进行判别,可以想象对于GANs来说句子的mode更是稀疏,那么GANs学习到的句子diversity会远远不足。于是,作者想办法让GANs能够在词级别(sub-sequence)的生成上做判断。然而,当模型在sampling时,也就是完全free-running的模式下,我们并不能确定每个位置的词还和ground truth保持一致,这会给模型训练带来很大的干扰。于是作者采用了让模型做完型填空的形式(像一种改进版Schedule Sampling),在原句子中随机挖几个空(mask),然后让模型去填,之后让判别器去判断输出的是否是正确的词。 模型采用一种 curriculum learning 的方式,随着训练的进行,不断增加sequence的长度,使得模型从short-term dependencies开始,慢慢学习到long-term dependencies。 模型需要经过两轮预训练: - 用传统的 maximum likelihood training pre-train一个语言模型,之后将这个语言模型的网络权值赋值给seq2seq模型的encoder和decoder模块; - 用得到的seq2seq模型来做完型填空任务( in-filling task),用传统的 maximum likelihood training来训练,得到的seq2seq模型网络权值赋值给MaskGAN的generator和discriminator。 # Attention-Based Reward Conditional Sequence Generative Adversarial Network(AR-CSGAN proposed by ourselves) - Key Points: - **Conditional Sequence Generative Model** - **Schedule Sampling** - **Attention-Based Reward System** - **Policy Gradients Optimization** - Graph & Algorithm: - **Model overview** ![](https://i.imgur.com/rVQu9q5.png) - **Reward attention system** ![](https://i.imgur.com/dEPeXUq.png) - **Global teacher forcing** ![](https://i.imgur.com/dZC1l9f.png) - **The whole system** ![](https://i.imgur.com/3kXUwmh.png) - **Algorithm** ![](https://i.imgur.com/s06VLxG.png) - **We propose an attention-based reward conditional SeqGAN Model to assign the reward from the discriminator.** - Generating diverse, meaningful and more extended sequences - Solving the problems of making GANs difficult to work in NLP - Automatically assign the rewards from discriminator - Stable and computationally efficient - **Some special training strategies are presented, which help us to train our model stably.** - Sequence AutoEncoder - Teacher Forcing - Dynamic Learning Rate - Weight clipping # 参考(reference) - [DeepDrumpf Tweeter](https://www.csail.mit.edu/news/postdoc-develops-twitterbot-uses-ai-sound-donald-trump) - [Generative Adversarial Networks for Text](https://www.reddit.com/r/MachineLearning/comments/40ldq6/generative_adversarial_networks_for_text/) - [令人拍案叫绝的Wasserstein GAN](https://zhuanlan.zhihu.com/p/25071913) - [Role of RL in Text Generation by GAN](https://zhuanlan.zhihu.com/p/29168803) - [AI技术讲座精选:GAN 在 NLP 中的尝试](https://www.toutiao.com/i6376751517893919234/) - [《MASKGAN: BETTER TEXT GENERATION VIA FILLING IN THE __ __》阅读笔记](https://zhuanlan.zhihu.com/p/34657045) - The encode-decode framework refer to Neural responding machine for short-text conversation (2015) - ARJOVSKY, Martin; CHINTALA, Soumith; BOTTOU, Léon. Wasserstein gan. arXiv preprint arXiv:1701.07875, 2017. - ZHANG, Yizhe; GAN, Zhe; CARIN, Lawrence. Generating text via adversarial training. In: NIPS workshop on Adversarial Training. 2016. - YU, Lantao, et al. SeqGAN: Sequence Generative Adversarial Nets with Policy Gradient. In: AAAI. 2017. p. 2852-2858. - LI, Jiwei, et al. Adversarial learning for neural dialogue generation. arXiv preprint arXiv:1701.06547, 2017. - KUSNER, Matt J.; HERNÁNDEZ-LOBATO, José Miguel. Gans for sequences of discrete elements with the gumbel-softmax distribution. arXiv preprint arXiv:1611.04051, 2016. - PFAU, David; VINYALS, Oriol. Connecting generative adversarial networks and actor-critic methods. arXiv preprint arXiv:1610.01945, 2016. - YANG, Zhen, et al. Improving neural machine translation with conditional sequence generative adversarial nets. arXiv preprint arXiv:1703.04887, 2017. - GULRAJANI, Ishaan, et al. Improved training of wasserstein gans. In: Advances in Neural Information Processing Systems. 2017. p. 5767-5777. - FEDUS, William; GOODFELLOW, Ian; DAI, Andrew M. Maskgan: Better text generation via filling in the _. arXiv preprint arXiv:1801.07736, 2018. ================================================ FILE: NLP/Multi_Label/ShengCe/generate_submit.py ================================================ #!/usr/bin/python # -*- coding: utf-8 -*- # @Time : 2018/10/6 上午10:41 # @Author : ComeOnJian # @File : generate_submit.py.py import jieba.posseg as pseg import pandas as pd import numpy as np import jieba import re import util import train_model # file path stop_words_path = './data/stopword.txt' # data path all_data_path = './data/all_docs.txt' train_data_path = './data/train_1000.csv' test_data_path = './data/test_107295.csv' train_candidate_path = './data/train_1000_candidate_add_title.pickle' test_candidate_path = './data/test_107295_candidate_add_title.pickle' # train_candidate_path = './data/train_1000_candidate.pickle' # test_candidate_path = './data/test_107295_candidate.pickle' # custom dict path renming_dict_path = './data/mingxing.dict' zhongyi_dict_path = './data/zyi.dict' yinshi_dict_path = './data/yinshi.dict' yaoping_dict_path = './data/yaoping.dict' def extract_title_doc(id,title, stop_words, words_prob): # 书名号规则 title_tag = re.findall(r"《(.+?)》", title) title_tag = [i.replace(",", "") for i in title_tag] for tag in title_tag: title = title.replace('《%s》'%(tag), 'TAG') words_title = list(pseg.cut(title, HMM=True)) title_key_words = [] title_key_not_words = [] for word, pos in words_title: if len(word) > 1 and word not in stop_words: # 名字 if pos == 'nr': if word not in title_tag: title_tag.append(word) if word in words_prob: words_prob.pop(word) if len(title_tag) == 2: return title_tag # 其他名词 elif pos in ['n','nz','ns','nt','j','eng','m']: if pos == 'eng' and word == 'TAG': continue # if pos == 'eng' and len(word)>= 15: # continue if word in words_prob: if (word, words_prob[word]) not in title_key_words: title_key_words.append((word, words_prob[word])) else: title_key_not_words.append(word) title_key_words_sorted = sorted(title_key_words,key=lambda x: x[1],reverse=True) if len(title_tag) == 0: # title_key_words_sorted中抽两个,不够从doc_key_words_sorted中补充 res = get_key_from_title(id,2,title_key_words_sorted,words_prob) if len(res) == 0: return title_key_not_words[:2] else: title_tag += res return title_tag if len(title_tag) == 1: res = get_key_from_title(id, 1, title_key_words_sorted, words_prob) if len(res) == 0: return title_tag + title_key_not_words[:1] else: title_tag += res return title_tag if len(title_tag) >= 2: return title_tag[:2] def get_key_from_title(id, num, title_key_words_sorted, words_prob): """ :param num: 需要抽取的关键词个数,且需要满足prob>0.5 :param title_key_words_sorted: :param doc_key_words_sorted: """ res_title = [] if len(title_key_words_sorted) == 0: # 从 doc_key_words_sorted 中提取两个两个 doc_key_words_sorted = sorted(words_prob.items(), key=lambda x: x[1], reverse=True) res = get_key_from_doc(num, doc_key_words_sorted) res_title += res return res_title if len(title_key_words_sorted) == 1: prob = title_key_words_sorted[0][1] if prob > 0.5: res_title.append(title_key_words_sorted[0][0]) num -= 1 if title_key_words_sorted[0][0] not in words_prob: print('index %s --- value %s' % (id,title_key_words_sorted[0][0])) else: words_prob.pop(title_key_words_sorted[0][0]) # words_prob.pop(title_key_words_sorted[0][0]) doc_key_words_sorted = sorted(words_prob.items(), key=lambda x: x[1], reverse=True) res = get_key_from_doc(num,doc_key_words_sorted) res_title += res return res_title if len(title_key_words_sorted) >= 2: for index,(word, prob)in enumerate(title_key_words_sorted): if prob > 0.5: res_title.append(title_key_words_sorted[index][0]) if title_key_words_sorted[index][0] not in words_prob: print('index %s --- value %s'% (id,title_key_words_sorted[index][0])) else: words_prob.pop(title_key_words_sorted[index][0]) num -= 1 if num == 0: return res_title if num > 0: doc_key_words_sorted = sorted(words_prob.items(), key=lambda x: x[1], reverse=True) res = get_key_from_doc(num,doc_key_words_sorted) res_title += res return res_title def get_key_from_doc(num, doc_key_words_sorted): """ 从doc 中需要抽取num个关键词 :param num: :param doc_key_words_sorted: """ res = [] if num == 0: return res if len(doc_key_words_sorted) == 0: return res # 0 if len(doc_key_words_sorted) == 1: res.append(doc_key_words_sorted[0][0]) return res if len(doc_key_words_sorted) >= 2: res.append(doc_key_words_sorted[0][0]) if num == 1: return res if num == 2: res.append(doc_key_words_sorted[1][0]) return res def main(): # step 1 模型 train_data = pd.read_csv(train_data_path, sep='\001', header=None) train_data.columns = ['id', 'title', 'doc', 'key_words'] train_candidates = util.load_object(train_candidate_path) Featutes, labels = train_model.build_train_sample(train_data, train_candidates) print(np.sum(labels)) print(Featutes.shape) dt = train_model.train_class_model(Featutes, labels) # test test_data = pd.read_csv(test_data_path, sep='\001', header=None) stop_words = util.stopwordslist(stop_words_path) test_data.columns = ['id', 'title', 'doc'] ids = test_data['id'].tolist() titles = test_data['title'].tolist() docs = test_data['doc'].tolist() test_candidates = util.load_object(test_candidate_path) sample_label_probs = train_model.get_test_sample_prob(dt, test_data, test_candidates) # util.save_object(sample_label_probs, './data/sample_labels_probs_add_title.pickle') # sample_label_probs = util.load_object('./data/sample_labels_probs_add_title.pickle') # sample_label_probs = util.load_object('./data/sample_title_doc_labels_probs1.pickle') with open('last_summit2.csv','w') as file: file.write('id,label1,label2\n') for (id, title, doc, words_prob) in zip(ids, titles, docs, sample_label_probs): if id == 'D087215': print('test......') if id == 'D087268': print('test......') title = str(title).strip() last_labes = extract_title_doc(id, title, stop_words, words_prob) labels_str = ",".join(last_labes) if len(last_labes) <= 1: labels_str += ',' file.write(id + "," + labels_str) file.write("\n") if __name__ == '__main__': # load custom dict jieba.load_userdict(renming_dict_path) jieba.load_userdict(zhongyi_dict_path) jieba.load_userdict(yinshi_dict_path) jieba.load_userdict(yaoping_dict_path) main() ================================================ FILE: NLP/Multi_Label/ShengCe/train_model.py ================================================ #!/usr/bin/python # -*- coding: utf-8 -*- # @Time : 2018/10/6 上午10:42 # @Author : ComeOnJian # @File : train_model.py import util from gensim import corpora, models import jieba import jieba.posseg as pseg import pandas as pd import numpy as np # sklearn model from sklearn.tree import DecisionTreeClassifier from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score, f1_score, precision_score, recall_score # file path stop_words_path = './data/stopword.txt' corpus_path = './data/model_data/corpus.mm' corpora_dict_path = './data/model_data/dict.pickle' corpus_docs_seg_path = './data/model_data/docs_seg.pickle' # model path tfidf_path = './data/model_data/tfidf_model.model' lda_path = './data/model_data/lda_model.model' lsi_path = './data/model_data/lsi_model.model' # custom dict path renming_dict_path = './data/mingxing.dict' zhongyi_dict_path = './data/zyi.dict' yinshi_dict_path = './data/yinshi.dict' yaoping_dict_path = './data/yaoping.dict' # data path all_data_path = './data/all_docs.txt' train_data_path = './data/train_1000.csv' test_data_path = './data/test_107295.csv' train_candidate_path = './data/train_1000_candidate_add_title.pickle' test_candidate_path = './data/test_107295_candidate_add_title.pickle' random_state = 4555 def get_topic_sim(model, word_corpus, doc_corpus): doc_topic_prob = model[doc_corpus] word_topic_prob = model[word_corpus] sim = util.cal_sim(word_topic_prob, doc_topic_prob) return sim def build_topic_model(data, stop_nfile, num_topics = 50, save = True): stop_words = util.stopwordslist(stop_nfile) corpora_documents = [] # 分词好的语料 for index, row in data.iterrows(): doc = str(row['doc']).strip() doc_seg = list(jieba.cut(doc)) doc_seg_no_stop = [word for word in doc_seg if word not in stop_words] corpora_documents.append(doc_seg_no_stop) if index%3000 == 0: print('deal with sentence %d'%index) corpora_dict = corpora.Dictionary(corpora_documents) if save: util.save_object(corpora_documents, corpus_docs_seg_path) util.save_object(corpora_dict, corpora_dict_path) # corpora_documents = load_object('./data/docs_seg.pickle') # corpora_dict = load_object('./data/dict.pickle') corpus = [corpora_dict.doc2bow(doc) for doc in corpora_documents] # corpus每个元素为(word_id, fre)表示某个word在该doc中的fre词频 # save corpus if save: corpora.MmCorpus.serialize(corpus_path,corpus) # load corpus # corpus = corpora.MmCorpus('./data/corpus.mm') # tf-idf model tfidf_model = models.TfidfModel(corpus) print('tf-idf model finish...') corpus_tfidf = tfidf_model[corpus] # lda model lda_model = models.LdaModel(corpus_tfidf, id2word=corpora_dict, num_topics=num_topics) print('lda model finish...') # lsi model # corpus_tfidf = tfidf_model[corpus] lsi_model = models.LsiModel(corpus_tfidf,id2word=corpora_dict,num_topics=num_topics) print('lsi model finish...') if save: tfidf_model.save(tfidf_path) lda_model.save(lda_path) lsi_model.save(lsi_path) def bulid_candidate_words(data, stop_nfile, candidate_save_path, candidata_pos={}, first_sentence_count=30, last_sentence_count=20): # ID 标题 文本内容 stop_words = util.stopwordslist(stop_nfile) # load corpus and model corpus_dict = util.load_object(corpora_dict_path) corpus = corpora.MmCorpus(corpus_path) tfidf_model = models.TfidfModel.load(tfidf_path) lda_model = models.LdaModel.load(lda_path) lsi_model = models.LsiModel.load(lsi_path) candidate_words = [] for index, row in data.iterrows(): title = str(row['title']).strip() doc = str(row['doc']).strip() candidate_word = {} # 该行记录的候选词key为word,value为id对应的特征(选择的10个特征) # doc words_doc = list(pseg.cut(doc, HMM=True)) #[(word, flag)] # title words_title = list(pseg.cut(title, HMM=True)) # 去除停用词 words_doc = [(word, pos) for word,pos in words_doc if word not in stop_words] words_title = [(word, pos) for word,pos in words_title if word not in stop_words] doc_len = len(words_doc) # 统计去除停用词后的doc长度 title_len = len(words_title) for word_index,(word,pos) in enumerate(words_doc): if pos in candidata_pos and len(word) > 1: # 特征的最后三项分别:features[-3]doc长度,features[-2]纪录候选词的首次出现位置,features[-1]最后一次出现的位置 if word in candidate_word: word_features = candidate_word[word] word_features[-1] = (word_index+1) candidate_word[word] = word_features continue else: features = [0] * 14 features[-3] = doc_len # feature 1 词性 features[0] = candidata_pos[pos] # feature 2 候选词首次出现的位置 if doc_len == 0: firoc = 0. else: firoc = (word_index+1)/float(doc_len) features[1] = firoc features[-2] = (word_index+1) # 首次出现的位置 # feature 3 候选词的长度 features[2] = len(word) # feature 4 候选词为的字符都是数字或者字母组成 if util.is_contain_char_num(word): features[3] = 1 # feature 5 候选词对应的tfidf id = corpus_dict.token2id.get(word, len(corpus_dict.token2id)+1) if id == len(corpus_dict.token2id)+1: features[4] = 1e-8 else: for (w_id, tfidf) in tfidf_model[corpus[index]]: if id == w_id: features[4] = tfidf break # feature 6 第一句中候选词出现的次数 first_sentence = words_doc[:first_sentence_count] features[5] = util.get_count_sentence(word,first_sentence) # feature 7 最后一句中候选词出现的次数[-20:] last_sentence = words_doc[-last_sentence_count:] features[6] = util.get_count_sentence(word,last_sentence) # feature 8,9 LDA,LSI:候选词的主题分布与文档的主题分布的相似度 single_list = [word] word_corpus = tfidf_model[corpus_dict.doc2bow(single_list)] features[7] = get_topic_sim(lda_model,word_corpus,corpus[index]) features[8] = get_topic_sim(lsi_model,word_corpus,corpus[index]) # feature 11 词跨度长度由的首次出现位置和最后一次出现的位置和doc长度计算 candidate_word[word] = features for word_index, (word, pos) in enumerate(words_title): if pos in candidata_pos and len(word) > 1: if word in candidate_word: word_features = candidate_word[word] # feature 10 是否出现在标题中 word_features[9] = 1 candidate_word[word] = word_features else: features = [0] * 14 features[-3] = title_len # feature 1 词性 features[0] = candidata_pos[pos] # feature 2 候选词首次出现的位置 if title_len == 0: firoc = 0. else: firoc = (word_index + 1) / float(title_len) features[1] = firoc features[-2] = (word_index + 1) # 首次出现的位置 # feature 3 候选词的长度 features[2] = len(word) # feature 4 候选词为的字符都是数字或者字母组成 if util.is_contain_char_num(word): features[3] = 1 # feature 5 候选词对应的tfidf id = corpus_dict.token2id.get(word, len(corpus_dict.token2id) + 1) if id == len(corpus_dict.token2id) + 1: features[4] = 1e-8 else: for (w_id, tfidf) in tfidf_model[corpus[index]]: if id == w_id: features[4] = tfidf break # feature 6 第一句中候选词出现的次数 first_sentence = words_doc[:first_sentence_count] features[5] = util.get_count_sentence(word, first_sentence) # feature 7 最后一句中候选词出现的次数[-20:] last_sentence = words_doc[-last_sentence_count:] features[6] = util.get_count_sentence(word, last_sentence) # feature 8,9 LDA,LSI:候选词的主题分布与文档的主题分布的相似度 single_list = [word] word_corpus = tfidf_model[corpus_dict.doc2bow(single_list)] features[7] = get_topic_sim(lda_model, word_corpus, corpus[index]) features[8] = get_topic_sim(lsi_model, word_corpus, corpus[index]) # feature 10 是否出现在标题中 features[9] = 1 # feature 11 词跨度长度由的首次出现位置和最后一次出现的位置和doc长度计算 candidate_word[word] = features candidate_words.append(candidate_word) # save if index % 2000 == 0: print('deal with sentence %d' % index) # data['candidate_words'] = candidate_words # data.to_csv(data_candidate_path, sep='\001', header=None, index=None) util.save_object(candidate_words,candidate_save_path) def build_train_sample(data, candidate_words_list): """ :param data: DataFrame :param candidate_words: list,[dict,dict,dict,...],其中dict """ labels = [] Featutes = [] assert data.shape[0] == len(candidate_words_list) for index, row in data.iterrows(): targets = str(row['key_words']).strip().split(',') candidate_words = candidate_words_list[index] if len(candidate_words) == 0: print('%d sentence is null'%(index)) for word,feature in candidate_words.items(): doc_len = feature[-3] first_index = feature[-2] last_index = feature[-1] if doc_len <= 0: print('%s of %d sentence doc len == 0' % (word, index)) feature[-3] = 0. else: feature[-3] = (last_index - first_index) / float(doc_len) if None in feature: # feature[8] = 0. print('index: %d, word is %s feature has None, the None is %d' % (index,word,feature.index(None))) # continue Featutes += [feature[:-2]] # flag = False # for target in targets: # if word == target: # labels += [1] # [[1]] # flag = True # break # elif (word in target or target in word): # labels += [1] # [[1]] # flag = True # break # # if flag is False: # labels += [0] #[[0]] # # number is 1822, all is 2992 if word in targets: labels += [1] else: labels += [0] return np.array(Featutes,dtype='float32'),np.array(labels) def train_class_model(features,labels): X_train, X_test, y_train, y_test = train_test_split(features,labels,shuffle=True,random_state=random_state,test_size=0.1) print('x_train:',X_train.shape) print('y_train:',y_train.shape) dt = DecisionTreeClassifier(class_weight={0:1,1:10},max_depth=3) # dt = GaussianNB() # dt = RandomForestClassifier(class_weight={0: 1, 1: 10}, n_estimators=50, max_depth=3) # dt = LogisticRegression(class_weight={0:1,1:10}) print('start train...') dt.fit(X_train,y_train) # dt.fit(features,labels) print('finish train...') y_pre = dt.predict(X_test) print('accuracy: ',accuracy_score(y_test,y_pre)) print('f1 score: ',f1_score(y_test,y_pre)) print('precision_score: ',precision_score(y_test,y_pre)) print('recall_score: ',recall_score(y_test,y_pre)) return dt def get_test_sample_prob(model, test_data, test_candidates): assert test_data.shape[0] == len(test_candidates) labels = [] for index, row in test_data.iterrows(): # one sample sample_labes = {} if index==86399: print('test---') candidate_words = test_candidates[index] for word,feature in candidate_words.items(): doc_len = feature[-3] first_index = feature[-2] last_index = feature[-1] if doc_len <=0: feature[-3] = 0. else: feature[-3] = (last_index - first_index) / float(doc_len) features = np.array([feature[:-2]]) y_pre = model.predict_proba(np.array(features))[0][1] sample_labes[word] = y_pre labels.append(sample_labes) if index % 2000 == 0: print('test with sentence %d' % index) return labels if __name__ == '__main__': # load custom dict jieba.load_userdict(renming_dict_path) jieba.load_userdict(zhongyi_dict_path) jieba.load_userdict(yinshi_dict_path) jieba.load_userdict(yaoping_dict_path) # step1 训练topic相关的模型 # ID 标题 文本内容 all_data = pd.read_csv(all_data_path, sep='\001', header=None) all_data.columns = ['id', 'title', 'doc'] build_topic_model(all_data,stop_words_path,num_topics=50) print('finish build topic model...') # step2 # 抽取候选词 train_data = pd.read_csv(train_data_path,sep='\001', header=None) train_data.columns = ['id', 'title', 'doc','key_words'] bulid_candidate_words(train_data, stop_words_path,train_candidate_path, candidata_pos=util.pos_dict, first_sentence_count=30, last_sentence_count=20) print('finish build train candidate word...') test_data = pd.read_csv(test_data_path, sep='\001', header=None) test_data.columns = ['id', 'title', 'doc'] bulid_candidate_words(test_data, stop_words_path, test_candidate_path, candidata_pos=util.pos_dict, first_sentence_count=30, last_sentence_count=20) ================================================ FILE: NLP/Multi_Label/ShengCe/util.py ================================================ #!/usr/bin/python # -*- coding: utf-8 -*- # @Time : 2018/10/6 上午10:47 # @Author : ComeOnJian # @File : util.py import re import math import pickle pos_dict = { 'n': 0, 'nr': 1, 'nz': 2, 'ns': 3, 'eng': 4, 'nt': 5, 'j': 6} def stopwordslist(filepath): stopwords = [line.strip() for line in open(filepath, 'r', encoding='utf-8').readlines()] return stopwords def get_shuming(text): shuming_tag = re.findall(r"《(.+?)》", text) shuming_tag = [i.replace(",", "") for i in shuming_tag] return shuming_tag def is_contain_char_num(text): """ 判断文本text的字符是否全部由数字或者字母组成 """ char_num = re.findall(r"[a-zA-Z0-9]+", text) if text in char_num: return True else: return False def get_count_sentence(word,sentence): """ 判断word在sentence词的列表中出现的次数 """ first_count = 0 for first_word, first_pos in sentence: if word == first_word: first_count += 1 return first_count def cal_sim(word_topic_prob, doc_topic_prob): # 计算两个向量的余弦相似度 a, b, c = 0.0, 0.0, 0.0 for t1, t2 in zip(word_topic_prob, doc_topic_prob): x1 = t1[1] x2 = t2[1] a += x1 * x2 b += x1 * x1 c += x2 * x2 sim = a / math.sqrt(b * c) if not (b * c) == 0.0 else 0.0 return sim def save_object(obj,nfile): with open(nfile,'wb') as file: pickle.dump(obj,file) def load_object(nfile): with open(nfile,'rb') as file: return pickle.load(file) ================================================ FILE: NLP/Seq2Seq/__init__.py ================================================ #!/usr/bin/python # -*- coding: utf-8 -*- # @Time : 2018/7/19 下午9:20 # @Author : ComeOnJian # @File : __init__.py.py ================================================ FILE: NLP/Seq2Seq/data_util.py ================================================ #!/usr/bin/python # -*- coding: utf-8 -*- # @Time : 2018/7/20 上午9:02 # @Author : ComeOnJian # @File : data_util.py # 参考https://kingsleyhsu.github.io/2017/10/26/20171026-NLP%E9%A2%84%E5%A4%84%E7%90%86/ import re import jieba import numpy as np from tensorflow.python.platform import gfile import os from zhon.hanzi import punctuation #################### 清洗Sougou新闻语料库的工作 #################### # 文本中特殊的标志 _PAD = b"_PAD" _GO = b"_GO" _EOS = b"_EOS" _UNK = b"_UNK" _START_VOCAB = [_PAD, _GO, _EOS, _UNK] PAD_ID = 0 GO_ID = 1 EOS_ID = 2 UNK_ID = 3 # Regular expressions used to tokenize. _WORD_SPLIT = re.compile(b"([.,!?\"':;)(])") _DIGIT_RE = re.compile(br"\d") root_path = os.path.abspath(os.path.join(os.getcwd(),'../data/text_summar')) ############################## 全角和半角文本转换 ############################################## def strQ2B(ustring): """全角转半角""" rstring = "" for uchar in ustring: inside_code=ord(uchar) if inside_code == 12288: #全角空格直接转换 inside_code = 32 elif (inside_code >= 65281 and inside_code <= 65374): #全角字符(除空格)根据关系转化 inside_code -= 65248 rstring += unichr(inside_code) return rstring def strB2Q(ustring): """半角转全角""" rstring = "" for uchar in ustring: inside_code=ord(uchar) if inside_code == 32: #半角空格直接转化 inside_code = 12288 elif inside_code >= 32 and inside_code <= 126: #半角字符(除空格)根据关系转化 inside_code += 65248 rstring += unichr(inside_code) return rstring return text ############################## 文本清理工作 ############################################## def remove_url(text): r=u'((https?|ftp|file)://){,1}[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|]' return re.sub(r,'TAG_URL', text) def remove_pun_ch(text): return re.sub(ur"[%s]"%punctuation , "", text.decode('utf-8')) def remove_pun_en(text): r=u'[’!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~]+' return re.sub(r,'', text) def remove_date(text): r=u'\d{1,4}年\d{1,2}月\d{1,2}日 |\d{1,4}年\d{1,2}月|\d{1,2}月\d{1,2}日|\d{1,4}年|\d{1,2}月|\d{1,2}日' return re.sub(r, 'TAG_DATE', strQ2B(text)) def remove_num(text): r=u'\d{1,}' return re.sub(r,'TAG_NUMBER', text) def remove_num_en(text): r=u'([\uff01-\uff5e]){1,}' return re.sub(r,'TAG_NUM_EN', text) def remove_tag(text): text = remove_url(text) text = remove_pun_en(text) text = remove_pun_ch(text) #之后是Unicode text = remove_date(text) text = remove_num_en(text) text = remove_num(text) return text ############################## 文本转换为训练集和测试集的预处理工作 ############################################## def get_title_content(content_fp,title_fp): """ :param content_fp:新闻文本的内容文件路径 :param title_fp:新闻文本的标题文件路径 :return:list格式的content,title """ data_content = [] data_title = [] tmp_content = [] tmp_title = [] with open(content_fp,'r') as be_content_f: for line in be_content_f.readlines(): #截取content的内容,去除标签 tmp_content.append(line[9:-11]) with open(title_fp, 'r') as be_title_f: for line in be_title_f.readlines(): tmp_title.append(line[14:-16]) indices = len(tmp_content) a = np.arange(indices) b = np.random.permutation(a) for i in b: if(tmp_content[i] and tmp_title[i]): data_content.append(tmp_content[i]) data_title.append(tmp_title[i]) return data_content,data_title def basic_tokenizer(sentence): """Very basic tokenizer: split the sentence into a list of tokens.""" words = [] for space_separated_fragment in sentence.strip().split(): words.extend(re.split(_WORD_SPLIT, space_separated_fragment)) return [w for w in words if w] def jieba_tokenizer(sentence): sentence_seged = jieba.cut(sentence.strip()) return sentence_seged def create_vocab(vocabulary_path, data_path, max_vocabulary_size, tokenizer=None, normalize_digits=True): """ 构建词典 :param vocabulary_path:词典路径 :param data_path:训练集文本路径 :param max_vocabulary_size:词典max size :param tokenizer:词条化函数,若=None,使用basic_tokenizer :param normalize_digits:if true, 所有数字用0代替 :return: """ if not gfile.Exists(vocabulary_path): print("Creating vocabulary %s from data %s" % (vocabulary_path, data_path)) vocab = {} with gfile.GFile(data_path, mode="rb") as f: counter = 0 for line in f: counter += 1 if counter % 100000 == 0: print(" processing line %d" % counter) tokens = tokenizer(line) if tokenizer else basic_tokenizer(line) for w in tokens: word = re.sub(_DIGIT_RE, b"0", w) if normalize_digits else w if word in vocab: vocab[word] += 1 else: vocab[word] = 1 vocab_list = _START_VOCAB + sorted(vocab, key=vocab.get, reverse=True) if len(vocab_list) > max_vocabulary_size: vocab_list = vocab_list[:max_vocabulary_size] with gfile.GFile(vocabulary_path, mode="wb") as vocab_file: for w in vocab_list: vocab_file.write(w + b"\n") def initialize_vocabulary(vocabulary_path): """ 初始化词典 假设词典文件如下: dog cat :param vocabulary_path:词典所在路径 :return: vocabulary ={"dog": 0, "cat": 1}, reversed-vocabulary=["dog", "cat"]. vocabulary :词典类型 reversed vocabulary :list """ if gfile.Exists(vocabulary_path): rev_vocab = [] with gfile.GFile(vocabulary_path, mode="rb") as f: rev_vocab.extend(f.readlines()) rev_vocab = [line.strip() for line in rev_vocab] vocab = dict([(x, y) for (y, x) in enumerate(rev_vocab)]) return vocab, rev_vocab else: raise ValueError("Vocabulary file %s not found.", vocabulary_path) def sentence_to_token_ids(sentence, vocabulary, tokenizer=None, normalize_digits=True): ''' 将文件转换成id 句子"I have a dog" 用词典{"I": 1, "have": 2,"a": 4, "dog": 7"}返回[1, 2, 4, 7] 输入: sentence: 句子用bytes格式 vocabulary: 词典 tokenizer:词条化函数 normalize_digits: 是否数字化 返回: id号 ''' if tokenizer: words = tokenizer(sentence) else: words = basic_tokenizer(sentence) if not normalize_digits: return [vocabulary.get(w, UNK_ID) for w in words] # Normalize digits by 0 before looking words up in the vocabulary. return [vocabulary.get(re.sub(_DIGIT_RE, b"0", w), UNK_ID) for w in words] def data_to_token_ids(data_path, target_path, vocabulary_path, tokenizer=None, normalize_digits=True): ''' 将data文件转换成idsokenize 输入: data_path: data 文件路径 target_path:ids文件路径 vocabulary_path: 词汇表路径 tokenizer:词条化函数 normalize_digits: 数字是否处理 ''' vocab, _ = initialize_vocabulary(vocabulary_path) #vocab=dict{"dog": 0, "cat": 1} data_f = open(data_path,"r") tokens_f = open(target_path,"w+") counter = 0 for line in data_f.readlines(): counter += 1 if counter % 100000 == 0: print(" tokenizing line %d" % counter) token_ids = sentence_to_token_ids(line, vocab, tokenizer,normalize_digits) tokens_f.write(" ".join([str(tok) for tok in token_ids]) + "\n")#写到文件 def get_train_dev_sets(data_content, data_title, train_rate, dev_rate, tr_con_path, tr_title_path, dev_con_path, dev_title_path, test_con_path, test_title_path): """ 按照train_rate,dev_rate切分train_sets,dev_sets和test_sets :param data_content: :param data_title: :param train_rate: :param dev_rate: :param tr_con_path: :param tr_title_path: :param dev_con_path: :param dev_title_path: :param test_con_path: :param test_title_path: :return: """ tr_con_f = open(tr_con_path, "w+") tr_title_f = open(tr_title_path, "w+") dev_con_f = open(dev_con_path, "w+") dev_title_f = open(dev_title_path, "w+") test_con_f = open(test_con_path, "w+") test_title_f = open(test_title_path, "w+") line_num = len(data_content) train_num = int(line_num * train_rate) dev_num = int(line_num * dev_rate) for i in range(0, train_num): tr_con_f.write(data_content[i]) tr_title_f.write(data_title[i]) for i in range(train_num, dev_num + train_num): dev_con_f.write(data_content[i]) dev_title_f.write(data_title[i]) for i in range(dev_num + train_num, line_num): test_con_f.write(data_content[i]) test_title_f.write(data_title[i]) tr_con_f.close() tr_title_f.close() dev_con_f.close() dev_title_f.close() test_con_f.close() test_title_f.close() return (tr_con_path, tr_title_path, dev_con_path, dev_title_path, test_con_path, test_title_path) def prepare_headline_data(data_dir, vocabulary_size, tokenizer=None): """ 为模型训练准备数据 :param data_dir:数据存储的目录 :param vocabulary_size:词典的大小 :param tokenizer:词条化函数 :return: """ train_path = os.path.join(root_path, "train") src_train_path = os.path.join(train_path, "content-train-origin.txt") dest_train_path = os.path.join(train_path, "title-train-origin.txt") dev_path = os.path.join(root_path, "dev") src_dev_path = os.path.join(dev_path, "content-dev-origin.txt") dest_dev_path = os.path.join(dev_path, "title-dev-origin.txt") # 创建vocab vocab_path = data_dir + '/vocab' create_vocab(vocab_path,src_train_path,vocabulary_size,tokenizer) # 创建 token ids for the training data. src_train_ids_path = os.path.join(train_path, "content_train_id") dest_train_ids_path = os.path.join(train_path, "title_train_id") data_to_token_ids(src_train_path, src_train_ids_path, vocab_path, tokenizer) data_to_token_ids(dest_train_path, dest_train_ids_path, vocab_path, tokenizer) # 创建 token ids for the development data. src_dev_ids_path = os.path.join(dev_path, "content_dev_id") dest_dev_ids_path = os.path.join(dev_path, "title_dev_id") data_to_token_ids(src_dev_path, src_dev_ids_path, vocab_path, tokenizer) data_to_token_ids(dest_dev_path, dest_dev_ids_path, vocab_path, tokenizer) if __name__ == '__main__': content_fp = root_path + '/corpus_50.txt' title_fp = root_path + '/corpus_title_50.txt' jieba.load_userdict(root_path+'/dict.txt') print(content_fp) train_path = os.path.join(root_path, "train") src_train_path = os.path.join(train_path, "content-train-origin.txt") dest_train_path = os.path.join(train_path, "title-train-origin.txt") dev_path = os.path.join(root_path, "dev") src_dev_path = os.path.join(dev_path, "content-dev-origin.txt") dest_dev_path = os.path.join(dev_path, "title-dev-origin.txt") test_path = os.path.join(root_path, "test") src_test_path = os.path.join(test_path, "content-test-origin.txt") dest_test_path = os.path.join(test_path, "title-test-origin.txt") # step1 获取出文本内容 data_content,data_title = get_title_content(content_fp,title_fp) indexs = np.arange(len(data_content)) # step2 去除tag for index,content,title in zip(indexs,data_content,data_title): data_content[index] = remove_tag(content).encode('utf-8') data_title[index] = remove_tag(title).encode('utf-8') # step3 划分数据,训练集,验证集,测试集 get_train_dev_sets(data_content,data_title,train_rate=0.7,dev_rate=0.1, tr_con_path=src_train_path,tr_title_path=dest_train_path, dev_con_path=src_dev_path,dev_title_path=dest_dev_path, test_con_path=src_test_path,test_title_path=dest_test_path ) # step4 prepare_headline_data(root_path,vocabulary_size=80000,tokenizer=jieba_tokenizer) pass ================================================ FILE: NLP/Seq2Seq/main.py ================================================ #!/usr/bin/python # -*- coding: utf-8 -*- # @Time : 2018/7/24 上午10:25 # @Author : ComeOnJian # @File : main.py # 参考: https://github.com/rockingdingo/deepnlp/blob/r0.1.6/deepnlp/textsum/README.md import numpy as np from NLP.Seq2Seq.text_summarizer import * # seq2seq相关的配置 class ModelLoader(object): def __init__(self): print("Starting new Tensorflow session...") self.session = tf.Session() print("Initializing text summarization class...") self.model = self._init_model(self.session) def _init_model(self,session): model = create_model(session, True) return model def func_predict(self,sentence): """ 输入语句进行预测 :param sentence:要取摘要的语句 :return: """ vocab_path = os.path.join(FLAGS.data_dir, "vocab") vocab,rev_vocab = data_util.initialize_vocabulary(vocab_path) token_ids = data_util.sentence_to_token_ids(sentence,vocab,tokenizer=data_util.jieba_tokenizer) print (token_ids) # 该句子对应的bucket bucket_id = min([b for b in xrange(len(buckets)) if buckets[b][0] > len(token_ids)]) print ("current bucket id" + str(bucket_id)) # feed data encoder_inputs, decoder_inputs, target_weights = self.model.get_batch( {bucket_id: [(token_ids, [])]}, bucket_id) _, _, output_logits_batch = self.model.step(self.session,encoder_inputs,decoder_inputs,target_weights,bucket_id,True) # This is a greedy decoder - outputs are just argmaxes of output_logits. output_logits = [] for item in output_logits_batch: output_logits.append(item[0]) outputs = [int(np.argmax(logit)) for logit in output_logits] if data_util.EOS_ID in outputs: outputs = outputs[:outputs.index(data_util.EOS_ID)] result_str = " ".join([rev_vocab[output] for output in outputs]) return result_str if __name__ == '__main__': model = ModelLoader() print model.func_predict('中国矿业大学是一个很值得去的大学。。。。啊哈哈哈') ================================================ FILE: NLP/Seq2Seq/seq2seq_attn.py ================================================ # Copyright 2015 The TensorFlow Authors. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # ============================================================================== """Library for creating sequence-to-sequence models in TensorFlow. Sequence-to-sequence recurrent neural networks can learn complex functions that map input sequences to output sequences. These models yield very good results on a number of tasks, such as speech recognition, parsing, machine translation, or even constructing automated replies to emails. Before using this module, it is recommended to read the TensorFlow tutorial on sequence-to-sequence models. It explains the basic concepts of this module and shows an end-to-end example of how to build a translation model. https://www.tensorflow.org/versions/master/tutorials/seq2seq/index.html Here is an overview of functions available in this module. They all use a very similar interface, so after reading the above tutorial and using one of them, others should be easy to substitute. * Full sequence-to-sequence models. - basic_rnn_seq2seq: The most basic RNN-RNN model. - tied_rnn_seq2seq: The basic model with tied encoder and decoder weights. - embedding_rnn_seq2seq: The basic model with input embedding. - embedding_tied_rnn_seq2seq: The tied model with input embedding. - embedding_attention_seq2seq: Advanced model with input embedding and the neural attention mechanism; recommended for complex tasks. * Multi-task sequence-to-sequence models. - one2many_rnn_seq2seq: The embedding model with multiple decoders. * Decoders (when you write your own encoder, you can use these to decode; e.g., if you want to write a model that generates captions for images). - rnn_decoder: The basic decoder based on a pure RNN. - attention_decoder: A decoder that uses the attention mechanism. * Losses. - sequence_loss: Loss for a sequence model returning average log-perplexity. - sequence_loss_by_example: As above, but not averaging over all examples. * model_with_buckets: A convenience function to create models with bucketing (see the tutorial above for an explanation of why and how to use it). """ from __future__ import absolute_import from __future__ import division from __future__ import print_function # We disable pylint because we need python3 compatibility. from six.moves import xrange # pylint: disable=redefined-builtin from six.moves import zip # pylint: disable=redefined-builtin from tensorflow.contrib.rnn.python.ops import core_rnn from tensorflow.contrib.rnn.python.ops import core_rnn_cell from tensorflow.contrib.rnn.python.ops import core_rnn_cell_impl from tensorflow.python.framework import dtypes from tensorflow.python.framework import ops from tensorflow.python.ops import array_ops from tensorflow.python.ops import control_flow_ops from tensorflow.python.ops import embedding_ops from tensorflow.python.ops import math_ops from tensorflow.python.ops import nn_ops from tensorflow.python.ops import variable_scope from tensorflow.python.util import nest # TODO(ebrevdo): Remove once _linear is fully deprecated. linear = core_rnn_cell_impl._linear # pylint: disable=protected-access def _extract_argmax_and_embed(embedding, output_projection=None, update_embedding=True): """Get a loop_function that extracts the previous symbol and embeds it. Args: embedding: embedding tensor for symbols. output_projection: None or a pair (W, B). If provided, each fed previous output will first be multiplied by W and added B. update_embedding: Boolean; if False, the gradients will not propagate through the embeddings. Returns: A loop function. """ def loop_function(prev, _): if output_projection is not None: prev = nn_ops.xw_plus_b(prev, output_projection[0], output_projection[1]) prev_symbol = math_ops.argmax(prev, 1) # Note that gradients will not propagate through the second parameter of # embedding_lookup. emb_prev = embedding_ops.embedding_lookup(embedding, prev_symbol) if not update_embedding: emb_prev = array_ops.stop_gradient(emb_prev) return emb_prev return loop_function def rnn_decoder(decoder_inputs, initial_state, cell, loop_function=None, scope=None): """RNN decoder for the sequence-to-sequence model. Args: decoder_inputs: A list of 2D Tensors [batch_size x input_size]. initial_state: 2D Tensor with shape [batch_size x cell.state_size]. cell: core_rnn_cell.RNNCell defining the cell function and size. loop_function: If not None, this function will be applied to the i-th output in order to generate the i+1-st input, and decoder_inputs will be ignored, except for the first element ("GO" symbol). This can be used for decoding, but also for training to emulate http://arxiv.org/abs/1506.03099. Signature -- loop_function(prev, i) = next * prev is a 2D Tensor of shape [batch_size x output_size], * i is an integer, the step number (when advanced control is needed), * next is a 2D Tensor of shape [batch_size x input_size]. scope: VariableScope for the created subgraph; defaults to "rnn_decoder". Returns: A tuple of the form (outputs, state), where: outputs: A list of the same length as decoder_inputs of 2D Tensors with shape [batch_size x output_size] containing generated outputs. state: The state of each cell at the final time-step. It is a 2D Tensor of shape [batch_size x cell.state_size]. (Note that in some cases, like basic RNN cell or GRU cell, outputs and states can be the same. They are different for LSTM cells though.) """ with variable_scope.variable_scope(scope or "rnn_decoder"): state = initial_state outputs = [] prev = None for i, inp in enumerate(decoder_inputs): if loop_function is not None and prev is not None: with variable_scope.variable_scope("loop_function", reuse=True): inp = loop_function(prev, i) if i > 0: variable_scope.get_variable_scope().reuse_variables() output, state = cell(inp, state) outputs.append(output) if loop_function is not None: prev = output return outputs, state def basic_rnn_seq2seq(encoder_inputs, decoder_inputs, cell, dtype=dtypes.float32, scope=None): """Basic RNN sequence-to-sequence model. This model first runs an RNN to encode encoder_inputs into a state vector, then runs decoder, initialized with the last encoder state, on decoder_inputs. Encoder and decoder use the same RNN cell type, but don't share parameters. Args: encoder_inputs: A list of 2D Tensors [batch_size x input_size]. decoder_inputs: A list of 2D Tensors [batch_size x input_size]. cell: core_rnn_cell.RNNCell defining the cell function and size. dtype: The dtype of the initial state of the RNN cell (default: tf.float32). scope: VariableScope for the created subgraph; default: "basic_rnn_seq2seq". Returns: A tuple of the form (outputs, state), where: outputs: A list of the same length as decoder_inputs of 2D Tensors with shape [batch_size x output_size] containing the generated outputs. state: The state of each decoder cell in the final time-step. It is a 2D Tensor of shape [batch_size x cell.state_size]. """ with variable_scope.variable_scope(scope or "basic_rnn_seq2seq"): _, enc_state = core_rnn.static_rnn(cell, encoder_inputs, dtype=dtype) return rnn_decoder(decoder_inputs, enc_state, cell) def tied_rnn_seq2seq(encoder_inputs, decoder_inputs, cell, loop_function=None, dtype=dtypes.float32, scope=None): """RNN sequence-to-sequence model with tied encoder and decoder parameters. This model first runs an RNN to encode encoder_inputs into a state vector, and then runs decoder, initialized with the last encoder state, on decoder_inputs. Encoder and decoder use the same RNN cell and share parameters. Args: encoder_inputs: A list of 2D Tensors [batch_size x input_size]. decoder_inputs: A list of 2D Tensors [batch_size x input_size]. cell: core_rnn_cell.RNNCell defining the cell function and size. loop_function: If not None, this function will be applied to i-th output in order to generate i+1-th input, and decoder_inputs will be ignored, except for the first element ("GO" symbol), see rnn_decoder for details. dtype: The dtype of the initial state of the rnn cell (default: tf.float32). scope: VariableScope for the created subgraph; default: "tied_rnn_seq2seq". Returns: A tuple of the form (outputs, state), where: outputs: A list of the same length as decoder_inputs of 2D Tensors with shape [batch_size x output_size] containing the generated outputs. state: The state of each decoder cell in each time-step. This is a list with length len(decoder_inputs) -- one item for each time-step. It is a 2D Tensor of shape [batch_size x cell.state_size]. """ with variable_scope.variable_scope("combined_tied_rnn_seq2seq"): scope = scope or "tied_rnn_seq2seq" _, enc_state = core_rnn.static_rnn( cell, encoder_inputs, dtype=dtype, scope=scope) variable_scope.get_variable_scope().reuse_variables() return rnn_decoder( decoder_inputs, enc_state, cell, loop_function=loop_function, scope=scope) def embedding_rnn_decoder(decoder_inputs, initial_state, cell, num_symbols, embedding_size, output_projection=None, feed_previous=False, update_embedding_for_previous=True, scope=None): """RNN decoder with embedding and a pure-decoding option. Args: decoder_inputs: A list of 1D batch-sized int32 Tensors (decoder inputs). initial_state: 2D Tensor [batch_size x cell.state_size]. cell: core_rnn_cell.RNNCell defining the cell function. num_symbols: Integer, how many symbols come into the embedding. embedding_size: Integer, the length of the embedding vector for each symbol. output_projection: None or a pair (W, B) of output projection weights and biases; W has shape [output_size x num_symbols] and B has shape [num_symbols]; if provided and feed_previous=True, each fed previous output will first be multiplied by W and added B. feed_previous: Boolean; if True, only the first of decoder_inputs will be used (the "GO" symbol), and all other decoder inputs will be generated by: next = embedding_lookup(embedding, argmax(previous_output)), In effect, this implements a greedy decoder. It can also be used during training to emulate http://arxiv.org/abs/1506.03099. If False, decoder_inputs are used as given (the standard decoder case). update_embedding_for_previous: Boolean; if False and feed_previous=True, only the embedding for the first symbol of decoder_inputs (the "GO" symbol) will be updated by back propagation. Embeddings for the symbols generated from the decoder itself remain unchanged. This parameter has no effect if feed_previous=False. scope: VariableScope for the created subgraph; defaults to "embedding_rnn_decoder". Returns: A tuple of the form (outputs, state), where: outputs: A list of the same length as decoder_inputs of 2D Tensors. The output is of shape [batch_size x cell.output_size] when output_projection is not None (and represents the dense representation of predicted tokens). It is of shape [batch_size x num_decoder_symbols] when output_projection is None. state: The state of each decoder cell in each time-step. This is a list with length len(decoder_inputs) -- one item for each time-step. It is a 2D Tensor of shape [batch_size x cell.state_size]. Raises: ValueError: When output_projection has the wrong shape. """ with variable_scope.variable_scope(scope or "embedding_rnn_decoder") as scope: if output_projection is not None: dtype = scope.dtype proj_weights = ops.convert_to_tensor(output_projection[0], dtype=dtype) proj_weights.get_shape().assert_is_compatible_with([None, num_symbols]) proj_biases = ops.convert_to_tensor(output_projection[1], dtype=dtype) proj_biases.get_shape().assert_is_compatible_with([num_symbols]) embedding = variable_scope.get_variable("embedding", [num_symbols, embedding_size]) loop_function = _extract_argmax_and_embed( embedding, output_projection, update_embedding_for_previous) if feed_previous else None emb_inp = (embedding_ops.embedding_lookup(embedding, i) for i in decoder_inputs) return rnn_decoder( emb_inp, initial_state, cell, loop_function=loop_function) def embedding_rnn_seq2seq(encoder_inputs, decoder_inputs, cell, num_encoder_symbols, num_decoder_symbols, embedding_size, output_projection=None, feed_previous=False, dtype=None, scope=None): """Embedding RNN sequence-to-sequence model. This model first embeds encoder_inputs by a newly created embedding (of shape [num_encoder_symbols x input_size]). Then it runs an RNN to encode embedded encoder_inputs into a state vector. Next, it embeds decoder_inputs by another newly created embedding (of shape [num_decoder_symbols x input_size]). Then it runs RNN decoder, initialized with the last encoder state, on embedded decoder_inputs. Args: encoder_inputs: A list of 1D int32 Tensors of shape [batch_size]. decoder_inputs: A list of 1D int32 Tensors of shape [batch_size]. cell: core_rnn_cell.RNNCell defining the cell function and size. num_encoder_symbols: Integer; number of symbols on the encoder side. num_decoder_symbols: Integer; number of symbols on the decoder side. embedding_size: Integer, the length of the embedding vector for each symbol. output_projection: None or a pair (W, B) of output projection weights and biases; W has shape [output_size x num_decoder_symbols] and B has shape [num_decoder_symbols]; if provided and feed_previous=True, each fed previous output will first be multiplied by W and added B. feed_previous: Boolean or scalar Boolean Tensor; if True, only the first of decoder_inputs will be used (the "GO" symbol), and all other decoder inputs will be taken from previous outputs (as in embedding_rnn_decoder). If False, decoder_inputs are used as given (the standard decoder case). dtype: The dtype of the initial state for both the encoder and encoder rnn cells (default: tf.float32). scope: VariableScope for the created subgraph; defaults to "embedding_rnn_seq2seq" Returns: A tuple of the form (outputs, state), where: outputs: A list of the same length as decoder_inputs of 2D Tensors. The output is of shape [batch_size x cell.output_size] when output_projection is not None (and represents the dense representation of predicted tokens). It is of shape [batch_size x num_decoder_symbols] when output_projection is None. state: The state of each decoder cell in each time-step. This is a list with length len(decoder_inputs) -- one item for each time-step. It is a 2D Tensor of shape [batch_size x cell.state_size]. """ with variable_scope.variable_scope(scope or "embedding_rnn_seq2seq") as scope: if dtype is not None: scope.set_dtype(dtype) else: dtype = scope.dtype # Encoder. encoder_cell = core_rnn_cell.EmbeddingWrapper( cell, embedding_classes=num_encoder_symbols, embedding_size=embedding_size) _, encoder_state = core_rnn.static_rnn( encoder_cell, encoder_inputs, dtype=dtype) # Decoder. if output_projection is None: cell = core_rnn_cell.OutputProjectionWrapper(cell, num_decoder_symbols) if isinstance(feed_previous, bool): return embedding_rnn_decoder( decoder_inputs, encoder_state, cell, num_decoder_symbols, embedding_size, output_projection=output_projection, feed_previous=feed_previous) # If feed_previous is a Tensor, we construct 2 graphs and use cond. def decoder(feed_previous_bool): reuse = None if feed_previous_bool else True with variable_scope.variable_scope( variable_scope.get_variable_scope(), reuse=reuse) as scope: outputs, state = embedding_rnn_decoder( decoder_inputs, encoder_state, cell, num_decoder_symbols, embedding_size, output_projection=output_projection, feed_previous=feed_previous_bool, update_embedding_for_previous=False) state_list = [state] if nest.is_sequence(state): state_list = nest.flatten(state) return outputs + state_list outputs_and_state = control_flow_ops.cond(feed_previous, lambda: decoder(True), lambda: decoder(False)) outputs_len = len(decoder_inputs) # Outputs length same as decoder inputs. state_list = outputs_and_state[outputs_len:] state = state_list[0] if nest.is_sequence(encoder_state): state = nest.pack_sequence_as( structure=encoder_state, flat_sequence=state_list) return outputs_and_state[:outputs_len], state def embedding_tied_rnn_seq2seq(encoder_inputs, decoder_inputs, cell, num_symbols, embedding_size, num_decoder_symbols=None, output_projection=None, feed_previous=False, dtype=None, scope=None): """Embedding RNN sequence-to-sequence model with tied (shared) parameters. This model first embeds encoder_inputs by a newly created embedding (of shape [num_symbols x input_size]). Then it runs an RNN to encode embedded encoder_inputs into a state vector. Next, it embeds decoder_inputs using the same embedding. Then it runs RNN decoder, initialized with the last encoder state, on embedded decoder_inputs. The decoder output is over symbols from 0 to num_decoder_symbols - 1 if num_decoder_symbols is none; otherwise it is over 0 to num_symbols - 1. Args: encoder_inputs: A list of 1D int32 Tensors of shape [batch_size]. decoder_inputs: A list of 1D int32 Tensors of shape [batch_size]. cell: core_rnn_cell.RNNCell defining the cell function and size. num_symbols: Integer; number of symbols for both encoder and decoder. embedding_size: Integer, the length of the embedding vector for each symbol. num_decoder_symbols: Integer; number of output symbols for decoder. If provided, the decoder output is over symbols 0 to num_decoder_symbols - 1. Otherwise, decoder output is over symbols 0 to num_symbols - 1. Note that this assumes that the vocabulary is set up such that the first num_decoder_symbols of num_symbols are part of decoding. output_projection: None or a pair (W, B) of output projection weights and biases; W has shape [output_size x num_symbols] and B has shape [num_symbols]; if provided and feed_previous=True, each fed previous output will first be multiplied by W and added B. feed_previous: Boolean or scalar Boolean Tensor; if True, only the first of decoder_inputs will be used (the "GO" symbol), and all other decoder inputs will be taken from previous outputs (as in embedding_rnn_decoder). If False, decoder_inputs are used as given (the standard decoder case). dtype: The dtype to use for the initial RNN states (default: tf.float32). scope: VariableScope for the created subgraph; defaults to "embedding_tied_rnn_seq2seq". Returns: A tuple of the form (outputs, state), where: outputs: A list of the same length as decoder_inputs of 2D Tensors with shape [batch_size x output_symbols] containing the generated outputs where output_symbols = num_decoder_symbols if num_decoder_symbols is not None otherwise output_symbols = num_symbols. state: The state of each decoder cell at the final time-step. It is a 2D Tensor of shape [batch_size x cell.state_size]. Raises: ValueError: When output_projection has the wrong shape. """ with variable_scope.variable_scope( scope or "embedding_tied_rnn_seq2seq", dtype=dtype) as scope: dtype = scope.dtype if output_projection is not None: proj_weights = ops.convert_to_tensor(output_projection[0], dtype=dtype) proj_weights.get_shape().assert_is_compatible_with([None, num_symbols]) proj_biases = ops.convert_to_tensor(output_projection[1], dtype=dtype) proj_biases.get_shape().assert_is_compatible_with([num_symbols]) embedding = variable_scope.get_variable( "embedding", [num_symbols, embedding_size], dtype=dtype) emb_encoder_inputs = [ embedding_ops.embedding_lookup(embedding, x) for x in encoder_inputs ] emb_decoder_inputs = [ embedding_ops.embedding_lookup(embedding, x) for x in decoder_inputs ] output_symbols = num_symbols if num_decoder_symbols is not None: output_symbols = num_decoder_symbols if output_projection is None: cell = core_rnn_cell.OutputProjectionWrapper(cell, output_symbols) if isinstance(feed_previous, bool): loop_function = _extract_argmax_and_embed(embedding, output_projection, True) if feed_previous else None return tied_rnn_seq2seq( emb_encoder_inputs, emb_decoder_inputs, cell, loop_function=loop_function, dtype=dtype) # If feed_previous is a Tensor, we construct 2 graphs and use cond. def decoder(feed_previous_bool): loop_function = _extract_argmax_and_embed( embedding, output_projection, False) if feed_previous_bool else None reuse = None if feed_previous_bool else True with variable_scope.variable_scope( variable_scope.get_variable_scope(), reuse=reuse): outputs, state = tied_rnn_seq2seq( emb_encoder_inputs, emb_decoder_inputs, cell, loop_function=loop_function, dtype=dtype) state_list = [state] if nest.is_sequence(state): state_list = nest.flatten(state) return outputs + state_list outputs_and_state = control_flow_ops.cond(feed_previous, lambda: decoder(True), lambda: decoder(False)) outputs_len = len(decoder_inputs) # Outputs length same as decoder inputs. state_list = outputs_and_state[outputs_len:] state = state_list[0] # Calculate zero-state to know it's structure. static_batch_size = encoder_inputs[0].get_shape()[0] for inp in encoder_inputs[1:]: static_batch_size.merge_with(inp.get_shape()[0]) batch_size = static_batch_size.value if batch_size is None: batch_size = array_ops.shape(encoder_inputs[0])[0] zero_state = cell.zero_state(batch_size, dtype) if nest.is_sequence(zero_state): state = nest.pack_sequence_as( structure=zero_state, flat_sequence=state_list) return outputs_and_state[:outputs_len], state def attention_decoder(decoder_inputs, initial_state, attention_states, cell, output_size=None, num_heads=1, loop_function=None, dtype=None, scope=None, initial_state_attention=False): """RNN decoder with attention for the sequence-to-sequence model. In this context "attention" means that, during decoding, the RNN can look up information in the additional tensor attention_states, and it does this by focusing on a few entries from the tensor. This model has proven to yield especially good results in a number of sequence-to-sequence tasks. This implementation is based on http://arxiv.org/abs/1412.7449 (see below for details). It is recommended for complex sequence-to-sequence tasks. Args: decoder_inputs: A list of 2D Tensors [batch_size x input_size]. initial_state: 2D Tensor [batch_size x cell.state_size]. attention_states: 3D Tensor [batch_size x attn_length x attn_size]. cell: core_rnn_cell.RNNCell defining the cell function and size. output_size: Size of the output vectors; if None, we use cell.output_size. num_heads: Number of attention heads that read from attention_states. loop_function: If not None, this function will be applied to i-th output in order to generate i+1-th input, and decoder_inputs will be ignored, except for the first element ("GO" symbol). This can be used for decoding, but also for training to emulate http://arxiv.org/abs/1506.03099. Signature -- loop_function(prev, i) = next * prev is a 2D Tensor of shape [batch_size x output_size], * i is an integer, the step number (when advanced control is needed), * next is a 2D Tensor of shape [batch_size x input_size]. dtype: The dtype to use for the RNN initial state (default: tf.float32). scope: VariableScope for the created subgraph; default: "attention_decoder". initial_state_attention: If False (default), initial attentions are zero. If True, initialize the attentions from the initial state and attention states -- useful when we wish to resume decoding from a previously stored decoder state and attention states. Returns: A tuple of the form (outputs, state), where: outputs: A list of the same length as decoder_inputs of 2D Tensors of shape [batch_size x output_size]. These represent the generated outputs. Output i is computed from input i (which is either the i-th element of decoder_inputs or loop_function(output {i-1}, i)) as follows. First, we run the cell on a combination of the input and previous attention masks: cell_output, new_state = cell(linear(input, prev_attn), prev_state). Then, we calculate new attention masks: new_attn = softmax(V^T * tanh(W * attention_states + U * new_state)) and then we calculate the output: output = linear(cell_output, new_attn). state: The state of each decoder cell the final time-step. It is a 2D Tensor of shape [batch_size x cell.state_size]. Raises: ValueError: when num_heads is not positive, there are no inputs, shapes of attention_states are not set, or input size cannot be inferred from the input. """ if not decoder_inputs: raise ValueError("Must provide at least 1 input to attention decoder.") if num_heads < 1: raise ValueError("With less than 1 heads, use a non-attention decoder.") if attention_states.get_shape()[2].value is None: raise ValueError("Shape[2] of attention_states must be known: %s" % attention_states.get_shape()) if output_size is None: output_size = cell.output_size with variable_scope.variable_scope( scope or "attention_decoder", dtype=dtype) as scope: dtype = scope.dtype batch_size = array_ops.shape(decoder_inputs[0])[0] # Needed for reshaping. attn_length = attention_states.get_shape()[1].value if attn_length is None: attn_length = array_ops.shape(attention_states)[1] attn_size = attention_states.get_shape()[2].value # To calculate W1 * h_t we use a 1-by-1 convolution, need to reshape before. hidden = array_ops.reshape(attention_states, [-1, attn_length, 1, attn_size]) hidden_features = [] v = [] attention_vec_size = attn_size # Size of query vectors for attention. for a in xrange(num_heads): k = variable_scope.get_variable("AttnW_%d" % a, [1, 1, attn_size, attention_vec_size]) hidden_features.append(nn_ops.conv2d(hidden, k, [1, 1, 1, 1], "SAME")) v.append( variable_scope.get_variable("AttnV_%d" % a, [attention_vec_size])) state = initial_state def attention(query): """Put attention masks on hidden using hidden_features and query.""" ds = [] # Results of attention reads will be stored here. if nest.is_sequence(query): # If the query is a tuple, flatten it. query_list = nest.flatten(query) for q in query_list: # Check that ndims == 2 if specified. ndims = q.get_shape().ndims if ndims: assert ndims == 2 query = array_ops.concat(query_list, 1) for a in xrange(num_heads): with variable_scope.variable_scope("Attention_%d" % a): y = linear(query, attention_vec_size, True) y = array_ops.reshape(y, [-1, 1, 1, attention_vec_size]) # Attention mask is a softmax of v^T * tanh(...). s = math_ops.reduce_sum(v[a] * math_ops.tanh(hidden_features[a] + y), [2, 3]) a = nn_ops.softmax(s) # Now calculate the attention-weighted vector d. d = math_ops.reduce_sum( array_ops.reshape(a, [-1, attn_length, 1, 1]) * hidden, [1, 2]) ds.append(array_ops.reshape(d, [-1, attn_size])) # Modified: return ds, a return ds, a outputs = [] prev = None batch_attn_size = array_ops.stack([batch_size, attn_size]) attns = [ array_ops.zeros( batch_attn_size, dtype=dtype) for _ in xrange(num_heads) ] for a in attns: # Ensure the second shape of attention vectors is set. a.set_shape([None, attn_size]) if initial_state_attention: attns, attn_mask = attention(initial_state) # Modified: Adding attn_masks: list of 2D array with shape [batch_size, tx] # tx is the length of input sequence encoder attn_masks = [] for i, inp in enumerate(decoder_inputs): if i > 0: variable_scope.get_variable_scope().reuse_variables() # If loop_function is set, we use it instead of decoder_inputs. if loop_function is not None and prev is not None: with variable_scope.variable_scope("loop_function", reuse=True): inp = loop_function(prev, i) # Merge input and previous attentions into one vector of the right size. input_size = inp.get_shape().with_rank(2)[1] if input_size.value is None: raise ValueError("Could not infer input size from input: %s" % inp.name) x = linear([inp] + attns, input_size, True) # Run the RNN. cell_output, state = cell(x, state) # Run the attention mechanism. if i == 0 and initial_state_attention: with variable_scope.variable_scope( variable_scope.get_variable_scope(), reuse=True): attns, attn_mask = attention(state) else: attns, attn_mask = attention(state) # Append attn_mask attn_masks.append(attn_mask) with variable_scope.variable_scope("AttnOutputProjection"): output = linear([cell_output] + attns, output_size, True) if loop_function is not None: prev = output outputs.append(output) return outputs, state, attn_masks def embedding_attention_decoder(decoder_inputs, initial_state, attention_states, cell, num_symbols, embedding_size, num_heads=1, output_size=None, output_projection=None, feed_previous=False, update_embedding_for_previous=True, dtype=None, scope=None, initial_state_attention=False): """RNN decoder with embedding and attention and a pure-decoding option. Args: decoder_inputs: A list of 1D batch-sized int32 Tensors (decoder inputs). initial_state: 2D Tensor [batch_size x cell.state_size]. attention_states: 3D Tensor [batch_size x attn_length x attn_size]. cell: core_rnn_cell.RNNCell defining the cell function. num_symbols: Integer, how many symbols come into the embedding. embedding_size: Integer, the length of the embedding vector for each symbol. num_heads: Number of attention heads that read from attention_states. output_size: Size of the output vectors; if None, use output_size. output_projection: None or a pair (W, B) of output projection weights and biases; W has shape [output_size x num_symbols] and B has shape [num_symbols]; if provided and feed_previous=True, each fed previous output will first be multiplied by W and added B. feed_previous: Boolean; if True, only the first of decoder_inputs will be used (the "GO" symbol), and all other decoder inputs will be generated by: next = embedding_lookup(embedding, argmax(previous_output)), In effect, this implements a greedy decoder. It can also be used during training to emulate http://arxiv.org/abs/1506.03099. If False, decoder_inputs are used as given (the standard decoder case). update_embedding_for_previous: Boolean; if False and feed_previous=True, only the embedding for the first symbol of decoder_inputs (the "GO" symbol) will be updated by back propagation. Embeddings for the symbols generated from the decoder itself remain unchanged. This parameter has no effect if feed_previous=False. dtype: The dtype to use for the RNN initial states (default: tf.float32). scope: VariableScope for the created subgraph; defaults to "embedding_attention_decoder". initial_state_attention: If False (default), initial attentions are zero. If True, initialize the attentions from the initial state and attention states -- useful when we wish to resume decoding from a previously stored decoder state and attention states. Returns: A tuple of the form (outputs, state), where: outputs: A list of the same length as decoder_inputs of 2D Tensors with shape [batch_size x output_size] containing the generated outputs. state: The state of each decoder cell at the final time-step. It is a 2D Tensor of shape [batch_size x cell.state_size]. Raises: ValueError: When output_projection has the wrong shape. """ if output_size is None: output_size = cell.output_size if output_projection is not None: proj_biases = ops.convert_to_tensor(output_projection[1], dtype=dtype) proj_biases.get_shape().assert_is_compatible_with([num_symbols]) with variable_scope.variable_scope( scope or "embedding_attention_decoder", dtype=dtype) as scope: embedding = variable_scope.get_variable("embedding", [num_symbols, embedding_size]) loop_function = _extract_argmax_and_embed( embedding, output_projection, update_embedding_for_previous) if feed_previous else None emb_inp = [ embedding_ops.embedding_lookup(embedding, i) for i in decoder_inputs ] return attention_decoder( emb_inp, initial_state, attention_states, cell, output_size=output_size, num_heads=num_heads, loop_function=loop_function, initial_state_attention=initial_state_attention) def embedding_attention_seq2seq(encoder_inputs, decoder_inputs, cell, num_encoder_symbols, num_decoder_symbols, embedding_size, num_heads=1, output_projection=None, feed_previous=False, dtype=None, scope=None, initial_state_attention=False): """Embedding sequence-to-sequence model with attention. This model first embeds encoder_inputs by a newly created embedding (of shape [num_encoder_symbols x input_size]). Then it runs an RNN to encode embedded encoder_inputs into a state vector. It keeps the outputs of this RNN at every step to use for attention later. Next, it embeds decoder_inputs by another newly created embedding (of shape [num_decoder_symbols x input_size]). Then it runs attention decoder, initialized with the last encoder state, on embedded decoder_inputs and attending to encoder outputs. Warning: when output_projection is None, the size of the attention vectors and variables will be made proportional to num_decoder_symbols, can be large. Args: encoder_inputs: A list of 1D int32 Tensors of shape [batch_size]. decoder_inputs: A list of 1D int32 Tensors of shape [batch_size]. cell: core_rnn_cell.RNNCell defining the cell function and size. num_encoder_symbols: Integer; number of symbols on the encoder side. num_decoder_symbols: Integer; number of symbols on the decoder side. embedding_size: Integer, the length of the embedding vector for each symbol. num_heads: Number of attention heads that read from attention_states. output_projection: None or a pair (W, B) of output projection weights and biases; W has shape [output_size x num_decoder_symbols] and B has shape [num_decoder_symbols]; if provided and feed_previous=True, each fed previous output will first be multiplied by W and added B. feed_previous: Boolean or scalar Boolean Tensor; if True, only the first of decoder_inputs will be used (the "GO" symbol), and all other decoder inputs will be taken from previous outputs (as in embedding_rnn_decoder). If False, decoder_inputs are used as given (the standard decoder case). dtype: The dtype of the initial RNN state (default: tf.float32). scope: VariableScope for the created subgraph; defaults to "embedding_attention_seq2seq". initial_state_attention: If False (default), initial attentions are zero. If True, initialize the attentions from the initial state and attention states. Returns: A tuple of the form (outputs, state), where: outputs: A list of the same length as decoder_inputs of 2D Tensors with shape [batch_size x num_decoder_symbols] containing the generated outputs. state: The state of each decoder cell at the final time-step. It is a 2D Tensor of shape [batch_size x cell.state_size]. """ with variable_scope.variable_scope( scope or "embedding_attention_seq2seq", dtype=dtype) as scope: dtype = scope.dtype # Encoder. encoder_cell = core_rnn_cell.EmbeddingWrapper( cell, embedding_classes=num_encoder_symbols, embedding_size=embedding_size) encoder_outputs, encoder_state = core_rnn.static_rnn( encoder_cell, encoder_inputs, dtype=dtype) # First calculate a concatenation of encoder outputs to put attention on. top_states = [ array_ops.reshape(e, [-1, 1, cell.output_size]) for e in encoder_outputs ] attention_states = array_ops.concat(top_states, 1) # Decoder. output_size = None if output_projection is None: cell = core_rnn_cell.OutputProjectionWrapper(cell, num_decoder_symbols) output_size = num_decoder_symbols if isinstance(feed_previous, bool): return embedding_attention_decoder( decoder_inputs, encoder_state, attention_states, cell, num_decoder_symbols, embedding_size, num_heads=num_heads, output_size=output_size, output_projection=output_projection, feed_previous=feed_previous, initial_state_attention=initial_state_attention) # If feed_previous is a Tensor, we construct 2 graphs and use cond. def decoder(feed_previous_bool): reuse = None if feed_previous_bool else True with variable_scope.variable_scope( variable_scope.get_variable_scope(), reuse=reuse) as scope: outputs, state, attn_mask = embedding_attention_decoder( decoder_inputs, encoder_state, attention_states, cell, num_decoder_symbols, embedding_size, num_heads=num_heads, output_size=output_size, output_projection=output_projection, feed_previous=feed_previous_bool, update_embedding_for_previous=False, initial_state_attention=initial_state_attention) state_list = [state] if nest.is_sequence(state): state_list = nest.flatten(state) return outputs + state_list outputs_and_state = control_flow_ops.cond(feed_previous, lambda: decoder(True), lambda: decoder(False)) outputs_len = len(decoder_inputs) # Outputs length same as decoder inputs. state_list = outputs_and_state[outputs_len:] state = state_list[0] if nest.is_sequence(encoder_state): state = nest.pack_sequence_as( structure=encoder_state, flat_sequence=state_list) return outputs_and_state[:outputs_len], state def one2many_rnn_seq2seq(encoder_inputs, decoder_inputs_dict, cell, num_encoder_symbols, num_decoder_symbols_dict, embedding_size, feed_previous=False, dtype=None, scope=None): """One-to-many RNN sequence-to-sequence model (multi-task). This is a multi-task sequence-to-sequence model with one encoder and multiple decoders. Reference to multi-task sequence-to-sequence learning can be found here: http://arxiv.org/abs/1511.06114 Args: encoder_inputs: A list of 1D int32 Tensors of shape [batch_size]. decoder_inputs_dict: A dictionany mapping decoder name (string) to the corresponding decoder_inputs; each decoder_inputs is a list of 1D Tensors of shape [batch_size]; num_decoders is defined as len(decoder_inputs_dict). cell: core_rnn_cell.RNNCell defining the cell function and size. num_encoder_symbols: Integer; number of symbols on the encoder side. num_decoder_symbols_dict: A dictionary mapping decoder name (string) to an integer specifying number of symbols for the corresponding decoder; len(num_decoder_symbols_dict) must be equal to num_decoders. embedding_size: Integer, the length of the embedding vector for each symbol. feed_previous: Boolean or scalar Boolean Tensor; if True, only the first of decoder_inputs will be used (the "GO" symbol), and all other decoder inputs will be taken from previous outputs (as in embedding_rnn_decoder). If False, decoder_inputs are used as given (the standard decoder case). dtype: The dtype of the initial state for both the encoder and encoder rnn cells (default: tf.float32). scope: VariableScope for the created subgraph; defaults to "one2many_rnn_seq2seq" Returns: A tuple of the form (outputs_dict, state_dict), where: outputs_dict: A mapping from decoder name (string) to a list of the same length as decoder_inputs_dict[name]; each element in the list is a 2D Tensors with shape [batch_size x num_decoder_symbol_list[name]] containing the generated outputs. state_dict: A mapping from decoder name (string) to the final state of the corresponding decoder RNN; it is a 2D Tensor of shape [batch_size x cell.state_size]. """ outputs_dict = {} state_dict = {} with variable_scope.variable_scope( scope or "one2many_rnn_seq2seq", dtype=dtype) as scope: dtype = scope.dtype # Encoder. encoder_cell = core_rnn_cell.EmbeddingWrapper( cell, embedding_classes=num_encoder_symbols, embedding_size=embedding_size) _, encoder_state = core_rnn.static_rnn( encoder_cell, encoder_inputs, dtype=dtype) # Decoder. for name, decoder_inputs in decoder_inputs_dict.items(): num_decoder_symbols = num_decoder_symbols_dict[name] with variable_scope.variable_scope("one2many_decoder_" + str( name)) as scope: decoder_cell = core_rnn_cell.OutputProjectionWrapper( cell, num_decoder_symbols) if isinstance(feed_previous, bool): outputs, state = embedding_rnn_decoder( decoder_inputs, encoder_state, decoder_cell, num_decoder_symbols, embedding_size, feed_previous=feed_previous) else: # If feed_previous is a Tensor, we construct 2 graphs and use cond. def filled_embedding_rnn_decoder(feed_previous): """The current decoder with a fixed feed_previous parameter.""" # pylint: disable=cell-var-from-loop reuse = None if feed_previous else True vs = variable_scope.get_variable_scope() with variable_scope.variable_scope(vs, reuse=reuse): outputs, state = embedding_rnn_decoder( decoder_inputs, encoder_state, decoder_cell, num_decoder_symbols, embedding_size, feed_previous=feed_previous) # pylint: enable=cell-var-from-loop state_list = [state] if nest.is_sequence(state): state_list = nest.flatten(state) return outputs + state_list outputs_and_state = control_flow_ops.cond( feed_previous, lambda: filled_embedding_rnn_decoder(True), lambda: filled_embedding_rnn_decoder(False)) # Outputs length is the same as for decoder inputs. outputs_len = len(decoder_inputs) outputs = outputs_and_state[:outputs_len] state_list = outputs_and_state[outputs_len:] state = state_list[0] if nest.is_sequence(encoder_state): state = nest.pack_sequence_as( structure=encoder_state, flat_sequence=state_list) outputs_dict[name] = outputs state_dict[name] = state return outputs_dict, state_dict def sequence_loss_by_example(logits, targets, weights, average_across_timesteps=True, softmax_loss_function=None, name=None): """Weighted cross-entropy loss for a sequence of logits (per example). Args: logits: List of 2D Tensors of shape [batch_size x num_decoder_symbols]. targets: List of 1D batch-sized int32 Tensors of the same length as logits. weights: List of 1D batch-sized float-Tensors of the same length as logits. average_across_timesteps: If set, divide the returned cost by the total label weight. softmax_loss_function: Function (labels-batch, inputs-batch) -> loss-batch to be used instead of the standard softmax (the default if this is None). name: Optional name for this operation, default: "sequence_loss_by_example". Returns: 1D batch-sized float Tensor: The log-perplexity for each sequence. Raises: ValueError: If len(logits) is different from len(targets) or len(weights). """ if len(targets) != len(logits) or len(weights) != len(logits): raise ValueError("Lengths of logits, weights, and targets must be the same " "%d, %d, %d." % (len(logits), len(weights), len(targets))) with ops.name_scope(name, "sequence_loss_by_example", logits + targets + weights): log_perp_list = [] for logit, target, weight in zip(logits, targets, weights): if softmax_loss_function is None: # TODO(irving,ebrevdo): This reshape is needed because # sequence_loss_by_example is called with scalars sometimes, which # violates our general scalar strictness policy. target = array_ops.reshape(target, [-1]) crossent = nn_ops.sparse_softmax_cross_entropy_with_logits( labels=target, logits=logit) else: crossent = softmax_loss_function(target, logit) log_perp_list.append(crossent * weight) log_perps = math_ops.add_n(log_perp_list) if average_across_timesteps: total_size = math_ops.add_n(weights) total_size += 1e-12 # Just to avoid division by 0 for all-0 weights. log_perps /= total_size return log_perps def sequence_loss(logits, targets, weights, average_across_timesteps=True, average_across_batch=True, softmax_loss_function=None, name=None): """Weighted cross-entropy loss for a sequence of logits, batch-collapsed. Args: logits: List of 2D Tensors of shape [batch_size x num_decoder_symbols]. targets: List of 1D batch-sized int32 Tensors of the same length as logits. weights: List of 1D batch-sized float-Tensors of the same length as logits. average_across_timesteps: If set, divide the returned cost by the total label weight. average_across_batch: If set, divide the returned cost by the batch size. softmax_loss_function: Function (inputs-batch, labels-batch) -> loss-batch to be used instead of the standard softmax (the default if this is None). name: Optional name for this operation, defaults to "sequence_loss". Returns: A scalar float Tensor: The average log-perplexity per symbol (weighted). Raises: ValueError: If len(logits) is different from len(targets) or len(weights). """ with ops.name_scope(name, "sequence_loss", logits + targets + weights): cost = math_ops.reduce_sum( sequence_loss_by_example( logits, targets, weights, average_across_timesteps=average_across_timesteps, softmax_loss_function=softmax_loss_function)) if average_across_batch: batch_size = array_ops.shape(targets[0])[0] return cost / math_ops.cast(batch_size, cost.dtype) else: return cost def model_with_buckets(encoder_inputs, decoder_inputs, targets, weights, buckets, seq2seq, softmax_loss_function=None, per_example_loss=False, name=None): """Create a sequence-to-sequence model with support for bucketing. The seq2seq argument is a function that defines a sequence-to-sequence model, e.g., seq2seq = lambda x, y: basic_rnn_seq2seq( x, y, core_rnn_cell.GRUCell(24)) Args: encoder_inputs: A list of Tensors to feed the encoder; first seq2seq input. decoder_inputs: A list of Tensors to feed the decoder; second seq2seq input. targets: A list of 1D batch-sized int32 Tensors (desired output sequence). weights: List of 1D batch-sized float-Tensors to weight the targets. buckets: A list of pairs of (input size, output size) for each bucket. seq2seq: A sequence-to-sequence model function; it takes 2 input that agree with encoder_inputs and decoder_inputs, and returns a pair consisting of outputs and states (as, e.g., basic_rnn_seq2seq). softmax_loss_function: Function (inputs-batch, labels-batch) -> loss-batch to be used instead of the standard softmax (the default if this is None). per_example_loss: Boolean. If set, the returned loss will be a batch-sized tensor of losses for each sequence in the batch. If unset, it will be a scalar with the averaged loss from all examples. name: Optional name for this operation, defaults to "model_with_buckets". Returns: A tuple of the form (outputs, losses), where: outputs: The outputs for each bucket. Its j'th element consists of a list of 2D Tensors. The shape of output tensors can be either [batch_size x output_size] or [batch_size x num_decoder_symbols] depending on the seq2seq model used. losses: List of scalar Tensors, representing losses for each bucket, or, if per_example_loss is set, a list of 1D batch-sized float Tensors. Raises: ValueError: If length of encoder_inputsut, targets, or weights is smaller than the largest (last) bucket. """ if len(encoder_inputs) < buckets[-1][0]: raise ValueError("Length of encoder_inputs (%d) must be at least that of la" "st bucket (%d)." % (len(encoder_inputs), buckets[-1][0])) if len(targets) < buckets[-1][1]: raise ValueError("Length of targets (%d) must be at least that of last" "bucket (%d)." % (len(targets), buckets[-1][1])) if len(weights) < buckets[-1][1]: raise ValueError("Length of weights (%d) must be at least that of last" "bucket (%d)." % (len(weights), buckets[-1][1])) all_inputs = encoder_inputs + decoder_inputs + targets + weights losses = [] outputs = [] # Modified: Adding attn_masks attn_masks = [] with ops.name_scope(name, "model_with_buckets", all_inputs): for j, bucket in enumerate(buckets): with variable_scope.variable_scope( variable_scope.get_variable_scope(), reuse=True if j > 0 else None): bucket_outputs, _, attn_mask = seq2seq(encoder_inputs[:bucket[0]], decoder_inputs[:bucket[1]]) outputs.append(bucket_outputs) attn_masks.append(attn_mask) if per_example_loss: losses.append( sequence_loss_by_example( outputs[-1], targets[:bucket[1]], weights[:bucket[1]], softmax_loss_function=softmax_loss_function)) else: losses.append( sequence_loss( outputs[-1], targets[:bucket[1]], weights[:bucket[1]], softmax_loss_function=softmax_loss_function)) return outputs, losses, attn_masks ================================================ FILE: NLP/Seq2Seq/seq2seq_model.py ================================================ # Copyright 2015 The TensorFlow Authors. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # ============================================================================== """Sequence-to-sequence model with an attention mechanism.""" from __future__ import absolute_import from __future__ import division from __future__ import print_function import random import numpy as np from six.moves import xrange # pylint: disable=redefined-builtin import tensorflow as tf #from tensorflow.models.rnn import rnn_cell #from tensorflow.models.rnn import seq2seq import NLP.Seq2Seq.data_util as data_utils class Seq2SeqModel(object): """Sequence-to-sequence model with attention and for multiple buckets. This class implements a multi-layer recurrent neural network as encoder, and an attention-based decoder. This is the same as the model described in this paper: http://arxiv.org/abs/1412.7449 - please look there for details, or into the seq2seq library for complete model implementation. This class also allows to use GRU cells in addition to LSTM cells, and sampled softmax to handle large output vocabulary size. A single-layer version of this model, but with bi-directional encoder, was presented in http://arxiv.org/abs/1409.0473 and sampled softmax is described in Section 3 of the following paper. http://arxiv.org/abs/1412.2007 """ def __init__(self, source_vocab_size, target_vocab_size, buckets, size, num_layers, max_gradient_norm, batch_size, learning_rate, learning_rate_decay_factor, use_lstm=False, num_samples=512, forward_only=False): """Create the model. Args: source_vocab_size: size of the source vocabulary. target_vocab_size: size of the target vocabulary. buckets: a list of pairs (I, O), where I specifies maximum input length that will be processed in that bucket, and O specifies maximum output length. Training instances that have inputs longer than I or outputs longer than O will be pushed to the next bucket and padded accordingly. We assume that the list is sorted, e.g., [(2, 4), (8, 16)]. size: number of units in each layer of the model. num_layers: number of layers in the model. max_gradient_norm: gradients will be clipped to maximally this norm. batch_size: the size of the batches used during training; the model construction is independent of batch_size, so it can be changed after initialization if this is convenient, e.g., for decoding. learning_rate: learning rate to start with. learning_rate_decay_factor: decay learning rate by this much when needed. use_lstm: if true, we use LSTM cells instead of GRU cells. num_samples: number of samples for sampled softmax. forward_only: if set, we do not construct the backward pass in the model. dtype: the data type to use to store internal variables. """ # self.dtype = tf.float32 self.source_vocab_size = source_vocab_size self.target_vocab_size = target_vocab_size self.buckets = buckets self.batch_size = batch_size self.learning_rate = tf.Variable( float(learning_rate), tf.float32) self.learning_rate_decay_op = self.learning_rate.assign( self.learning_rate * learning_rate_decay_factor) self.global_step = tf.Variable(0, trainable=False) # If we use sampled softmax, we need an output projection. output_projection = None softmax_loss_function = None # Sampled softmax only makes sense if we sample less than vocabulary size. if num_samples > 0 and num_samples < self.target_vocab_size: w_t = tf.get_variable("proj_w", [self.target_vocab_size, size], tf.float32) w = tf.transpose(w_t) b = tf.get_variable("proj_b", [self.target_vocab_size], tf.float32) output_projection = (w, b) def sampled_loss(labels, inputs): labels = tf.reshape(labels, [-1, 1]) # We need to compute the sampled_softmax_loss using 32bit floats to # avoid numerical instabilities. local_w_t = tf.cast(w_t, tf.float32) local_b = tf.cast(b, tf.float32) local_inputs = tf.cast(inputs, tf.float32) return tf.cast( tf.nn.sampled_softmax_loss( weights=local_w_t, biases=local_b, labels=labels, inputs=local_inputs, num_sampled=num_samples, num_classes=self.target_vocab_size), tf.float32) softmax_loss_function = sampled_loss # Create the internal multi-layer cell for our RNN. single_cell = tf.contrib.rnn.GRUCell(size) if use_lstm: single_cell = tf.contrib.rnn.BasicLSTMCell(size, state_is_tuple=True) cell = single_cell if num_layers > 1: cell = tf.contrib.rnn.MultiRNNCell([single_cell] * num_layers, state_is_tuple=True) # The seq2seq function: we use embedding for the input and attention. def seq2seq_f(encoder_inputs, decoder_inputs, do_decode): return tf.contrib.legacy_seq2seq.embedding_attention_seq2seq( encoder_inputs, decoder_inputs, cell, num_encoder_symbols=source_vocab_size, num_decoder_symbols=target_vocab_size, embedding_size=size, output_projection=output_projection, feed_previous=do_decode, dtype=tf.float32) # Feeds for inputs. self.encoder_inputs = [] self.decoder_inputs = [] self.target_weights = [] for i in xrange(buckets[-1][0]): # Last bucket is the biggest one. self.encoder_inputs.append(tf.placeholder(tf.int32, shape=[None], name="encoder{0}".format(i))) for i in xrange(buckets[-1][1] + 1): self.decoder_inputs.append(tf.placeholder(tf.int32, shape=[None], name="decoder{0}".format(i))) self.target_weights.append(tf.placeholder(tf.float32, shape=[None], name="weight{0}".format(i))) # Our targets are decoder inputs shifted by one. targets = [self.decoder_inputs[i + 1] for i in xrange(len(self.decoder_inputs) - 1)] # Training outputs and losses. if forward_only: self.outputs, self.losses = tf.contrib.legacy_seq2seq.model_with_buckets( self.encoder_inputs, self.decoder_inputs, targets, self.target_weights, buckets, lambda x, y: seq2seq_f(x, y, True), softmax_loss_function=softmax_loss_function) # If we use output projection, we need to project outputs for decoding. if output_projection is not None: for b in xrange(len(buckets)): self.outputs[b] = [ tf.matmul(output, output_projection[0]) + output_projection[1] for output in self.outputs[b] ] else: self.outputs, self.losses = tf.contrib.legacy_seq2seq.model_with_buckets( self.encoder_inputs, self.decoder_inputs, targets, self.target_weights, buckets, lambda x, y: seq2seq_f(x, y, False), softmax_loss_function=softmax_loss_function) # Gradients and SGD update operation for training the model. params = tf.trainable_variables() if not forward_only: self.gradient_norms = [] self.updates = [] opt = tf.train.GradientDescentOptimizer(self.learning_rate) for b in xrange(len(buckets)): gradients = tf.gradients(self.losses[b], params) clipped_gradients, norm = tf.clip_by_global_norm(gradients, max_gradient_norm) self.gradient_norms.append(norm) self.updates.append(opt.apply_gradients( zip(clipped_gradients, params), global_step=self.global_step)) self.saver = tf.train.Saver(tf.global_variables()) # tf.all_variables() depreciated def step(self, session, encoder_inputs, decoder_inputs, target_weights, bucket_id, forward_only): """Run a step of the model feeding the given inputs. Args: session: tensorflow session to use. encoder_inputs: list of numpy int vectors to feed as encoder inputs. decoder_inputs: list of numpy int vectors to feed as decoder inputs. target_weights: list of numpy float vectors to feed as target weights. bucket_id: which bucket of the model to use. forward_only: whether to do the backward step or only forward. Returns: A triple consisting of gradient norm (or None if we did not do backward), average perplexity, and the outputs. Raises: ValueError: if length of encoder_inputs, decoder_inputs, or target_weights disagrees with bucket size for the specified bucket_id. """ # Check if the sizes match. encoder_size, decoder_size = self.buckets[bucket_id] if len(encoder_inputs) != encoder_size: raise ValueError("Encoder length must be equal to the one in bucket," " %d != %d." % (len(encoder_inputs), encoder_size)) if len(decoder_inputs) != decoder_size: raise ValueError("Decoder length must be equal to the one in bucket," " %d != %d." % (len(decoder_inputs), decoder_size)) if len(target_weights) != decoder_size: raise ValueError("Weights length must be equal to the one in bucket," " %d != %d." % (len(target_weights), decoder_size)) # Input feed: encoder inputs, decoder inputs, target_weights, as provided. input_feed = {} for l in xrange(encoder_size): input_feed[self.encoder_inputs[l].name] = encoder_inputs[l] for l in xrange(decoder_size): input_feed[self.decoder_inputs[l].name] = decoder_inputs[l] input_feed[self.target_weights[l].name] = target_weights[l] # Since our targets are decoder inputs shifted by one, we need one more. last_target = self.decoder_inputs[decoder_size].name input_feed[last_target] = np.zeros([self.batch_size], dtype=np.int32) # Output feed: depends on whether we do a backward step or not. if not forward_only: output_feed = [self.updates[bucket_id], # Update Op that does SGD. self.gradient_norms[bucket_id], # Gradient norm. self.losses[bucket_id]] # Loss for this batch. else: output_feed = [self.losses[bucket_id]] # Loss for this batch. for l in xrange(decoder_size): # Output logits. output_feed.append(self.outputs[bucket_id][l]) outputs = session.run(output_feed, input_feed) if not forward_only: return outputs[1], outputs[2], None # Gradient norm, loss, no outputs. else: return None, outputs[0], outputs[1:] # No gradient norm, loss, outputs. def get_batch(self, data, bucket_id): """Get a random batch of data from the specified bucket, prepare for step. To feed data in step(..) it must be a list of batch-major vectors, while data here contains single length-major cases. So the main logic of this function is to re-index data cases to be in the proper format for feeding. Args: data: a tuple of size len(self.buckets) in which each element contains lists of pairs of input and output data that we use to create a batch. bucket_id: integer, which bucket to get the batch for. Returns: The triple (encoder_inputs, decoder_inputs, target_weights) for the constructed batch that has the proper format to call step(...) later. """ encoder_size, decoder_size = self.buckets[bucket_id] encoder_inputs, decoder_inputs = [], [] # Get a random batch of encoder and decoder inputs from data, # pad them if needed, reverse encoder inputs and add GO to decoder. for _ in xrange(self.batch_size): encoder_input, decoder_input = random.choice(data[bucket_id]) # Encoder inputs are padded and then reversed. encoder_pad = [data_utils.PAD_ID] * (encoder_size - len(encoder_input)) encoder_inputs.append(list(reversed(encoder_input + encoder_pad))) # Decoder inputs get an extra "GO" symbol, and are padded then. decoder_pad_size = decoder_size - len(decoder_input) - 1 decoder_inputs.append([data_utils.GO_ID] + decoder_input + [data_utils.PAD_ID] * decoder_pad_size) # Now we create batch-major vectors from the data selected above. batch_encoder_inputs, batch_decoder_inputs, batch_weights = [], [], [] # Batch encoder inputs are just re-indexed encoder_inputs. for length_idx in xrange(encoder_size): batch_encoder_inputs.append( np.array([encoder_inputs[batch_idx][length_idx] for batch_idx in xrange(self.batch_size)], np.int32)) # Batch decoder inputs are re-indexed decoder_inputs, we create weights. for length_idx in xrange(decoder_size): batch_decoder_inputs.append( np.array([decoder_inputs[batch_idx][length_idx] for batch_idx in xrange(self.batch_size)], np.int32)) # Create target_weights to be 0 for targets that are padding. batch_weight = np.ones(self.batch_size, np.float32) for batch_idx in xrange(self.batch_size): # We set weight to 0 if the corresponding target is a PAD symbol. # The corresponding target is decoder_input shifted by 1 forward. if length_idx < decoder_size - 1: target = decoder_inputs[batch_idx][length_idx + 1] if length_idx == decoder_size - 1 or target == data_utils.PAD_ID: batch_weight[batch_idx] = 0.0 batch_weights.append(batch_weight) return batch_encoder_inputs, batch_decoder_inputs, batch_weights ================================================ FILE: NLP/Seq2Seq/text_summarizer.py ================================================ #!/usr/bin/python # -*- coding: utf-8 -*- # @Time : 2018/7/20 下午4:26 # @Author : ComeOnJian # @File : seq2seq_att_model.py import tensorflow as tf import NLP.Seq2Seq.seq2seq_model as seq2seq_model import NLP.Seq2Seq.data_util as data_util import numpy as np import os,sys,time,math class LargeConfig(object): learning_rate = 1.0 init_scale = 0.04 learning_rate_decay_factor = 0.99 max_gradient_norm = 5.0 num_samples = 4096 # Sampled Softmax batch_size = 64 size = 256 # Number of Node of each layer num_layers = 4 #the layers of lstm vocab_size = 50000 # the size of vocab class MediumConfig(object): learning_rate = 0.5 init_scale = 0.04 learning_rate_decay_factor = 0.99 max_gradient_norm = 5.0 num_samples = 2048 # Sampled Softmax batch_size = 64 size = 64 # Number of Node of each layer num_layers = 2 vocab_size = 10000 config = LargeConfig() train_dir = os.path.join(data_util.root_path, "train") data_path = data_util.root_path # set config to tf.app.flags tf.app.flags.DEFINE_float("learning_rate", config.learning_rate, "Learning rate.") tf.app.flags.DEFINE_float("learning_rate_decay_factor", config.learning_rate_decay_factor, "Learning rate decays by this much.") tf.app.flags.DEFINE_float("max_gradient_norm", config.max_gradient_norm, "Clip gradients to this norm.") tf.app.flags.DEFINE_integer("num_samples", config.num_samples, "Number of Samples for Sampled softmax") tf.app.flags.DEFINE_integer("batch_size", config.batch_size, "Batch size to use during training.") tf.app.flags.DEFINE_integer("size", config.size, "Size of each model layer.") tf.app.flags.DEFINE_integer("num_layers", config.num_layers, "Number of layers in the model.") tf.app.flags.DEFINE_integer("vocab_size", config.vocab_size, "vocabulary size.") tf.app.flags.DEFINE_string("data_dir", data_path, "Data directory") tf.app.flags.DEFINE_string("train_dir", train_dir, "Training directory.") tf.app.flags.DEFINE_integer("max_train_data_size", 0, "Limit on the size of training data (0: no limit).") tf.app.flags.DEFINE_integer("steps_per_checkpoint", 1000, "How many training steps to do per checkpoint.") tf.app.flags.DEFINE_boolean("decode", False, "Set to True for interactive decoding.") # true for prediction tf.app.flags.DEFINE_boolean("use_fp16", False, "Train using fp16 instead of fp32.") # define namespace for this model only tf.app.flags.DEFINE_string("headline_scope_name", "headline_var_scope", "Variable scope of Headline textsum model") FLAGS = tf.app.flags.FLAGS # 使用Bucket机制 buckets = [(120, 30), (200, 35), (300, 40), (400, 40), (500, 40)] def create_model(session,forward_only): """ 创建text_sum模型 :param session:tf的session :param forward_only:是否更新参数 :return:模型model """ dtype = tf.float16 if FLAGS.use_fp16 else tf.float32 # 参数初始化函数 initializer = tf.random_uniform_initializer(-config.init_scale, config.init_scale) with tf.variable_scope(FLAGS.headline_scope_name, reuse=None, initializer=initializer ,dtype=dtype): model = seq2seq_model.Seq2SeqModel( FLAGS.vocab_size, FLAGS.vocab_size, buckets, FLAGS.size, FLAGS.num_layers, FLAGS.max_gradient_norm, FLAGS.batch_size, FLAGS.learning_rate, FLAGS.learning_rate_decay_factor, use_lstm=True, # LSTM instend of GRU num_samples=FLAGS.num_samples, forward_only=forward_only ) # 先检测模型文件是否存在 ckpt = tf.train.get_checkpoint_state(FLAGS.train_dir) if ckpt: model_checkpoint_path = ckpt.model_checkpoint_path print("Reading model parameters from %s" % model_checkpoint_path) saver = tf.train.Saver() saver.restore(session, tf.train.latest_checkpoint(FLAGS.train_dir)) else: print("Created model with fresh parameters.") session.run(tf.global_variables_initializer()) return model def read_data(source_path, target_path, max_size=None): """Read data from source and target files and put into buckets. Args: source_path: path to the files with token-ids for the source language. target_path: path to the file with token-ids for the target language; it must be aligned with the source file: n-th line contains the desired output for n-th line from the source_path. max_size: maximum number of lines to read, all other will be ignored; if 0 or None, data files will be read completely (no limit). Returns: data_set: a list of length len(buckets); data_set[n] contains a list of (source, target) pairs read from the provided data files that fit into the n-th bucket, i.e., such that len(source) < buckets[n][0] and len(target) < buckets[n][1]; source and target are lists of token-ids. """ data_set = [[] for _ in buckets] with tf.gfile.GFile(source_path, mode="r") as source_file: with tf.gfile.GFile(target_path, mode="r") as target_file: source, target = source_file.readline(), target_file.readline() counter = 0 while source and target and (not max_size or counter < max_size): counter += 1 if counter % 10000 == 0: print(" reading data line %d" % counter) sys.stdout.flush() source_ids = [int(x) for x in source.split()] target_ids = [int(x) for x in target.split()] target_ids.append(data_util.EOS_ID) for bucket_id, (source_size, target_size) in enumerate(buckets): if len(source_ids) < source_size and len(target_ids) < target_size: data_set[bucket_id].append([source_ids, target_ids]) break return data_set def train(): # 准备数据 src_train, dest_train, src_dev, dest_dev, _, _ = data_util.prepare_headline_data(FLAGS.data_dir, FLAGS.vocab_size) # device config dev_config = tf.ConfigProto(device_count={"CPU": 4}, # limit to 4 CPU usage inter_op_parallelism_threads=1, intra_op_parallelism_threads=2) with tf.Session(config=dev_config) as sess: model = create_model(sess,False) dev_set = read_data(src_dev, dest_dev) train_set = read_data(src_train, dest_train, FLAGS.max_train_data_size) train_bucket_sizes = [len(train_set[b]) for b in xrange(len(buckets))] train_total_size = float(sum(train_bucket_sizes)) trainbuckets_scale = [sum(train_bucket_sizes[:i + 1]) / train_total_size for i in xrange(len(train_bucket_sizes))] # training loop step_time , loss = 0.,0. current_step = 0 previous_losses = [] #困惑度 while True: random_number_01 = np.random.random_sample() bucket_id = min([i for i in xrange(len(trainbuckets_scale)) if trainbuckets_scale[i] > random_number_01]) start_time = time.time() encoder_inputs, decoder_inputs, target_weights = model.get_batch( train_set,bucket_id) _,step_loss,_ = model.step(sess,encoder_inputs,decoder_inputs,target_weights,bucket_id,False) step_time += (time.time() - start_time) /FLAGS.steps_per_checkpoint loss += step_loss / FLAGS.steps_per_checkpoint current_step += 1 # Once in a while, we save checkpoint, print statistics, and run evals. if current_step % FLAGS.steps_per_checkpoint == 0: # Print statistics for the previous epoch. perplexity = math.exp(float(loss)) if loss < 300 else float("inf") print ("global step %d learning rate %.4f step-time %.2f perplexity " "%.2f" % (model.global_step.eval(), model.learning_rate.eval(), step_time, perplexity)) # Decrease learning rate if no improvement was seen over last 3 times. if len(previous_losses) > 2 and loss > max(previous_losses[-3:]): sess.run(model.learning_rate_decay_op) previous_losses.append(loss) checkpoint_path = os.path.join(FLAGS.train_dir, "headline_large.ckpt") model.saver.save(sess, checkpoint_path, global_step=model.global_step) step_time, loss = 0.0, 0.0 # Run evals on development set and print their perplexity. for bucket_id in xrange(len(buckets)): if len(dev_set[bucket_id]) == 0: print(" eval: empty bucket %d" % (bucket_id)) continue encoder_inputs, decoder_inputs, target_weights = model.get_batch( dev_set, bucket_id) _, eval_loss, _ = model.step(sess, encoder_inputs, decoder_inputs, target_weights, bucket_id, True) eval_ppx = math.exp(float(eval_loss)) if eval_loss < 300 else float( "inf") print(" eval: bucket %d perplexity %.2f" % (bucket_id, eval_ppx)) sys.stdout.flush() pass def main(): train() if __name__ == '__main__': tf.app.run() ================================================ FILE: NLP/Text_CNN/process_data.py ================================================ #!/usr/bin/python # coding=utf-8 # @Time : 2018/3/8 下午3:02 # @Author : ComeOnJian # @File : process_data.py import pickle # import word2vec import numpy as np from collections import defaultdict,OrderedDict import re from tqdm import tqdm import pandas as pd data_dir = '../data/rt-polaritydata/' google_new_vector_dir = '../data/' ##方式一,编写代码加载word2vec训练好的模型文件GoogleNews-vectors-negative300.bin ####参照word2vec.from_binary方法改写 def load_binary_vec(fname, vocab): word_vecs = {} with open(fname, 'rb') as fin: header = fin.readline() vocab_size, vector_size = list(map(int, header.split())) binary_len = np.dtype(np.float32).itemsize * vector_size # vectors = [] for i in tqdm(range(vocab_size)): # read word word = b'' while True: ch = fin.read(1) if ch == b' ': break word += ch # print(str(word)) word = word.decode(encoding='ISO-8859-1') if word in vocab: word_vecs[word] = np.fromstring(fin.read(binary_len), dtype=np.float32) else: fin.read(binary_len) # vector = np.fromstring(fin.read(binary_len), dtype=np.float32) # vectors.append(vector) # if include: # vectors[i] = unitvec(vector) fin.read(1) # newline return word_vecs #load MR data —— Movie reviews with one sentence per review. #Classification involves detecting positive/negative reviews def load_data_k_cv(folder,cv=10,clear_flag=True): pos_file = folder[0] neg_file = folder[1] #训练集的语料词汇表,计数 word_cab=defaultdict(float) revs = [] #最后的数据 with open(pos_file,'rb') as pos_f: for line in pos_f: rev = [] rev.append(line.decode(encoding='ISO-8859-1').strip()) if clear_flag: orign_rev = clean_string(" ".join(rev)) else: orign_rev = " ".join(rev).lower() words = set(orign_rev.split()) for word in words: word_cab[word] += 1 datum = {"y": 1, "text": orign_rev, "num_words": len(orign_rev.split()), "spilt": np.random.randint(0, cv)} revs.append(datum) with open(neg_file,'rb') as neg_f: for line in neg_f: rev = [] rev.append(line.decode(encoding='ISO-8859-1').strip()) if clear_flag: orign_rev = clean_string(" ".join(rev)) else: orign_rev = " ".join(rev).lower() words = set(orign_rev.split()) for word in words: word_cab[word] += 1 datum = {"y": 0, "text": orign_rev, "num_words": len(orign_rev.split()), "spilt": np.random.randint(0, cv)} revs.append(datum) return word_cab,revs def add_unexist_word_vec(w2v,vocab): """ 将词汇表中没有embedding的词初始化() :param w2v:经过word2vec训练好的词向量 :param vocab:总体要embedding的词汇表 """ for word in vocab: if word not in w2v and vocab[word]>=1: w2v[word] = np.random.uniform(-0.25,0.25,300) def clean_string(string,TREC=False): string = re.sub(r"[^A-Za-z0-9(),!?\'\`]", " ", string) string = re.sub(r"\'s", " \'s", string) string = re.sub(r"\'ve", " \'ve", string) string = re.sub(r"n\'t", " n\'t", string) string = re.sub(r"\'re", " \'re", string) string = re.sub(r"\'d", " \'d", string) string = re.sub(r"\'ll", " \'ll", string) string = re.sub(r",", " , ", string) string = re.sub(r"!", " ! ", string) string = re.sub(r"\(", " \( ", string) string = re.sub(r"\)", " \) ", string) string = re.sub(r"\?", " \? ", string) string = re.sub(r"\s{2,}", " ", string) return string.strip() if TREC else string.strip().lower() def get_vec_by_sentence_list(word_vecs,sentence_list,maxlen=56,values=0.,vec_size = 300): """ :param sentence_list:句子列表 :return:句子对应的矩阵向量表示 """ data = [] for sentence in sentence_list: # get a sentence sentence_vec = [] words = sentence.split() for word in words: sentence_vec.append(word_vecs[word].tolist()) # padding sentence vector to maxlen(w * h) sentence_vec = pad_sentences(sentence_vec,maxlen,values,vec_size) # add a sentence vector data.append(np.array(sentence_vec)) return data def get_index_by_sentence_list(word_ids,sentence_list,maxlen=56): indexs = [] words_length = len(word_ids) for sentence in sentence_list: # get a sentence sentence_indexs = [] words = sentence.split() for word in words: sentence_indexs.append(word_ids[word]) # padding sentence to maxlen length = len(sentence_indexs) if length < maxlen: for i in range(maxlen - length): sentence_indexs.append(words_length) # add a sentence vector indexs.append(sentence_indexs) return np.array(indexs) pass def pad_sentences(data,maxlen=56,values=0.,vec_size = 300): """padding to max length :param data:要扩展的数据集 :param maxlen:扩展的h长度 :param values:默认的值 """ length = len(data) if length < maxlen: for i in range(maxlen - length): data.append(np.array([values]*vec_size)) return data def get_train_test_data1(word_vecs,revs,cv_id=0,sent_length = 56,default_values=0.,vec_size = 300): """ 获取的训练数据和测试数据是直接的数据 :param revs: :param cv_id: :param sent_length: :return: """ data_set_df = pd.DataFrame(revs) # DataFrame # y text num_words spilt # 1 'I like this movie' 4 3 data_set_df = data_set_df.sample(frac=1)#打乱顺序 data_set_cv_train = data_set_df[data_set_df['spilt'] != cv_id] # 训练集 data_set_cv_test = data_set_df[data_set_df['spilt'] == cv_id] #测试集 # train train_y_1 = np.array(data_set_cv_train['y'].tolist(),dtype='int') train_y_2 = list(map(get_contrast,train_y_1)) train_y = np.array([train_y_1,train_y_2]).T test_y_1 = np.array(data_set_cv_test['y'].tolist(),dtype='int') test_y_2 = list(map(get_contrast,test_y_1)) test_y = np.array([test_y_1,test_y_2]).T train_sentence_list = data_set_cv_train['text'].tolist() test_sentence_list = data_set_cv_test['text'].tolist() train_x = get_vec_by_sentence_list(word_vecs,train_sentence_list,sent_length,default_values,vec_size) test_x = get_vec_by_sentence_list(word_vecs,test_sentence_list,sent_length,default_values,vec_size) return train_x,train_y,test_x,test_y def get_train_test_data2(word_ids,revs,cv_id=0,sent_length = 56): data_set_df = pd.DataFrame(revs) # DataFrame # y text num_words spilt # 1 'I like this movie' 4 3 data_set_df = data_set_df.sample(frac=1) # 打乱顺序 data_set_cv_train = data_set_df[data_set_df['spilt'] != cv_id] # 训练集 data_set_cv_test = data_set_df[data_set_df['spilt'] == cv_id] # 测试集 # train train_y_1 = np.array(data_set_cv_train['y'].tolist(), dtype='int') train_y_2 = list(map(get_contrast, train_y_1)) train_y = np.array([train_y_1, train_y_2]).T test_y_1 = np.array(data_set_cv_test['y'].tolist(), dtype='int') test_y_2 = list(map(get_contrast, test_y_1)) test_y = np.array([test_y_1, test_y_2]).T train_sentence_list = data_set_cv_train['text'].tolist() test_sentence_list = data_set_cv_test['text'].tolist() train_x = get_index_by_sentence_list(word_ids,train_sentence_list,sent_length) test_x = get_index_by_sentence_list(word_ids,test_sentence_list,sent_length) return train_x,train_y,test_x,test_y #对0,1取反 def get_contrast(x): return (2+~x) def getWordsVect(W): word_ids = OrderedDict() W_list = [] count =0 for word,vector in W.items(): W_list.append(vector.tolist()) word_ids[word] = count count = count + 1 W_list.append([0.0]*300) return word_ids,W_list if __name__ == '__main__': #Testing -------------------------------------------------------------------------- data_folder = ['../data/rt-polaritydata/rt-polarity.pos', '../data/rt-polaritydata/rt-polarity.neg'] w2v_file = '../data/GoogleNews-vectors-negative300.bin' print('load data ...') word_cab, revs = load_data_k_cv(data_folder) print('data loaded !!!') print('number of sentences: ' + str(len(revs))) print('size of vocab: ' + str(len(word_cab))) sentence_max_len = np.max(pd.DataFrame(revs)['num_words']) print('dataset the sentence max length is {}'.format(sentence_max_len)) print('load word2vec vectors...') word_vecs = load_binary_vec(w2v_file,word_cab) print (len(list(word_vecs.keys()))) print('finish word2vec load !!!') #对未登录词操作 add_unexist_word_vec(word_vecs,word_cab) # CNN-rand对应的词向量表 word_vecs_rand = {} add_unexist_word_vec(word_vecs_rand,word_cab) #将数据数据集对应的词向量保存好 pickle.dump([word_vecs_rand,word_vecs,word_cab,sentence_max_len,revs],open('../result/word_vec.p','wb')) pass ================================================ FILE: NLP/Text_CNN/text_cnn_main.py ================================================ #!/usr/bin/python # -*- coding: utf-8 -*- # @Time : 2018/3/7 下午4:06 # @Author : ComeOnJian # @File : text_cnn.py # implementation of Convolutional Neural Networks for Sentence CLassification import argparse import pandas as pd # import ast import numpy as np # import NLP.Text_CNN.process_data as process_data # import NLP.Text_CNN.text_cnn_model as TextCNN import process_data from text_cnn_model import TextCNN import pickle from tqdm import tqdm import pdb # step1 get paramater # step2 load data # step3 create TextCNN model # step4 start train # step5 validataion if __name__ == '__main__': # step1 get paramater parse = argparse.ArgumentParser(description='Paramaters for construct TextCNN Model') # #方式一 type = bool # parse.add_argument('--nonstatic',type=ast.literal_eval,help='use textcnn nonstatic or not',dest='tt') # 方式二 取bool值的方式)添加互斥的参数 group_static = parse.add_mutually_exclusive_group(required=True) group_static.add_argument('--static', dest='static_flag', action='store_true', help='use static Text_CNN') group_static.add_argument('--nonstatic', dest='static_flag', action='store_false', help='use nonstatic Text_CNN') group_word_vec = parse.add_mutually_exclusive_group(required=True) group_word_vec.add_argument('--word2vec', dest='wordvec_flag', action='store_true', help='word_vec is word2vec') group_word_vec.add_argument('--rand', dest='wordvec_flag', action='store_false', help='word_vec is rand') group_shuffer_batch = parse.add_mutually_exclusive_group(required=False) group_shuffer_batch.add_argument('--shuffer', dest='shuffer_flag', action='store_true', help='the train do shuffer') group_shuffer_batch.add_argument('--no-shuffer', dest='shuffer_flag', action='store_false', help='the train do not shuffer') parse.add_argument('--learnrate', type=float, dest='learnrate', help='the NN learnRate', default=0.05) parse.add_argument('--epochs', type=int, dest='epochs', help='the model train epochs', default=10) parse.add_argument('--batch_size', type=int, dest='batch_size', help='the train gd batch size.(50-300)', default=50) parse.add_argument('--dropout_pro', type=float, dest='dropout_pro', help='the nn layer dropout_pro', default=0.5) parse.set_defaults(static_flag=True) parse.set_defaults(wordvec_flag=True) parse.set_defaults(shuffer_flag=False) args = parse.parse_args() # step2 load data print('load data. . .') X = pickle.load(open('./NLP/result/word_vec.p','rb')) word_vecs_rand, word_vecs, word_cab, sentence_max_len, revs = X[0],X[1],X[2],X[3],X[4] print('load data finish. . .') # configuration tf filter_sizes = [3, 4, 5] filter_numbers = 100 embedding_size = 300 # use word2vec or not W = word_vecs_rand if args.wordvec_flag: W = word_vecs pass # pdb.set_trace() word_ids,W_list = process_data.getWordsVect(W) # use static train or not static_falg = args.static_flag # use shuffer the data or not shuffer_falg = args.shuffer_flag #交叉验证 results = [] for index in tqdm(range(10)): #打调试断点 # pdb.set_trace() # train_x, train_y, test_x, test_y = process_data.get_train_test_data1(W,revs,index,sentence_max_len,default_values=0.0,vec_size=300) train_x, train_y, test_x, test_y = process_data.get_train_test_data2(word_ids,revs,index,sentence_max_len) # step3 create TextCNN model text_cnn = TextCNN(W_list,shuffer_falg,static_falg,filter_numbers,filter_sizes,sentence_max_len,embedding_size,args.learnrate,args.epochs,args.batch_size,args.dropout_pro) # step4 start train text_cnn.train(train_x,train_y) # step5 validataion accur,loss = text_cnn.validataion(test_x, test_y) # results.append(accur) print('cv {} accur is :{:.3f} loss is {:.3f}'.format(index+1,accur,loss)) text_cnn.close() print('last accuracy is {}'.format(np.mean(results))) ================================================ FILE: NLP/Text_CNN/text_cnn_model.py ================================================ #!/usr/bin/python # -*- coding: utf-8 -*- # @Time : 2018/3/9 下午4:35 # @Author : ComeOnJian # @File : text_cnn_model.py # structure TextCNN # 1.input-embedding layer(max_l * 300) 2.cov layer 3.max pool layer 4.full connect droput + softmax + l2 import tensorflow as tf import numpy as np import pdb class TextCNN(): __shuffer_falg = False __static_falg = True def __init__(self,W_list,shuffer_falg, static_falg, filter_numbers, filter_sizes,sentence_length,embedding_size,learnrate, epochs, batch_size, dropout_pro): self.__shuffer_falg = shuffer_falg self.__static_falg = static_falg self.learning_rate_item = learnrate self.epochs = epochs self.sentence_length = sentence_length self.filter_numbers = filter_numbers self.batch_size = batch_size self.dropout_pro_item = dropout_pro self.embedding_size = embedding_size # 1. setting graph tf.reset_default_graph() self.train_graph = tf.Graph() with self.train_graph.as_default(): # 1 input layer self.input_x = tf.placeholder(dtype=tf.int32,shape=[None,sentence_length],name='input_x') self.input_y = tf.placeholder(dtype=tf.int32, shape=[None, 2], name='input_y') self.dropout_pro = tf.placeholder(dtype=tf.float32, name='dropout_pro') self.learning_rate = tf.placeholder(dtype=tf.float32, name='learning_rate') self.l2_loss = tf.constant(0.0) # self.embedding_layer = tf.placeholder(dtype=tf.float32, shape=[self.batch_size, sentence_length, embedding_size], # name='embedding_layer') #2 embedding layer with tf.name_scope('embedding_layer'): train_bool = not self.__static_falg # tf.convert_to_tensor(W_list,dtype=tf.float32) # pdb.set_trace() self.embedding_layer_W = tf.Variable(initial_value=W_list,dtype=tf.float32, trainable=train_bool, name='embedding_layer_W') print("ssssssss") self.embedding_layer_layer = tf.nn.embedding_lookup(self.embedding_layer_W, self.input_x) self.embedding_layer_expand = tf.expand_dims(self.embedding_layer_layer, -1) # with tf.name_scope('word_embedding_layer'): # # embedding_matrix = tf.Variable() # tf.expand_dims() #3 conv layer + maxpool layer for each filer size pool_layer_lst = [] for filter_size in filter_sizes: max_pool_layer = self.__add_conv_layer(filter_size,filter_numbers) pool_layer_lst.append(max_pool_layer) # 4.full connect droput + softmax + l2 # combine all the max pool —— feature with tf.name_scope('dropout_layer'): # pdb.set_trace() max_num = len(filter_sizes) * self.filter_numbers h_pool = tf.concat(pool_layer_lst,name='last_pool_layer',axis=3) pool_layer_flat = tf.reshape(h_pool,[-1,max_num],name='pool_layer_flat') dropout_pro_layer = tf.nn.dropout(pool_layer_flat,self.dropout_pro,name='dropout') with tf.name_scope('soft_max_layer'): SoftMax_W = tf.Variable(tf.truncated_normal([max_num,2],stddev=0.01),name='softmax_linear_weight') self.__variable_summeries(SoftMax_W) # print('test1------------') SoftMax_b = tf.Variable(tf.constant(0.1,shape=[2]),name='softmax_linear_bias') self.__variable_summeries(SoftMax_b) # print('test2------------') self.l2_loss += tf.nn.l2_loss(SoftMax_W) self.l2_loss += tf.nn.l2_loss(SoftMax_b) # dropout_pro_layer_reshape = tf.reshape(dropout_pro_layer,[batch_size,-1]) self.softmax_values = tf.nn.xw_plus_b(dropout_pro_layer,SoftMax_W,SoftMax_b,name='soft_values') # print ('++++++',self.softmax_values.shape) self.predictions = tf.argmax(self.softmax_values,axis=1,name='predictions',output_type=tf.int32) with tf.name_scope('loss'): losses = tf.nn.softmax_cross_entropy_with_logits(logits=self.softmax_values,labels=self.input_y) self.loss = tf.reduce_mean(losses) + 0.001 * self.l2_loss #lambda = 0.001 # print ('---------1',self.loss) tf.summary.scalar('last_loss',self.loss) with tf.name_scope('accuracy'): correct_acc = tf.equal(self.predictions,tf.argmax(self.input_y,axis=1,output_type=tf.int32)) self.accuracy = tf.reduce_mean(tf.cast(correct_acc,'float'),name='accuracy') tf.summary.scalar('accuracy',self.accuracy) with tf.name_scope('train'): optimizer = tf.train.AdamOptimizer(learning_rate=self.learning_rate) # print('test1------------') # pdb打个断点 # pdb.set_trace() self.train_op = optimizer.minimize(self.loss) # print('test2------------') self.session = tf.InteractiveSession(graph=self.train_graph) self.merged = tf.summary.merge_all() self.train_writer = tf.summary.FileWriter('./NLP/log/text_cnn', graph=self.train_graph) def train(self,train_x,train_y): # self.unstatic_embedding_layer # print('11111111') self.session.run(tf.global_variables_initializer()) #迭代训练 for epoch in range(self.epochs): # pdb.set_trace() train_batch = self.__get_batchs(train_x, train_y, self.batch_size) train_loss, train_acc, count = 0.0, 0.0, 0 for batch_i in range(len(train_x)//self.batch_size): x,y = next(train_batch) feed = { self.input_x:x, self.input_y:y, self.dropout_pro:self.dropout_pro_item, self.learning_rate:self.learning_rate_item } _,summarys,loss,accuracy = self.session.run([self.train_op,self.merged,self.loss,self.accuracy],feed_dict=feed) train_loss, train_acc, count = train_loss + loss, train_acc + accuracy, count + 1 self.train_writer.add_summary(summarys,epoch) # each 5 batch print log if (batch_i+1) % 15 == 0: print('Epoch {:>3} Batch {:>4}/{} train_loss = {:.3f} accuracy = {:.3f}'. format(epoch,batch_i,(len(train_x)//self.batch_size),train_loss/float(count),train_acc/float(count))) def validataion(self,test_x, test_y): test_batch = self.__get_batchs(test_x,test_y,self.batch_size) eval_loss, eval_acc ,count= 0.0, 0.0 ,0 for batch_i in range(len(test_x) // self.batch_size): x,y = next(test_batch) feed = { self.embedding_layer: x, self.input_y: y, self.dropout_pro: self.dropout_pro_item, self.learning_rate: 1.0 } loss ,accuracy = self.session.run([self.loss,self.accuracy],feed_dict=feed) eval_loss ,eval_acc ,count = eval_loss+loss ,eval_acc+accuracy ,count+1 # print('validataion_{}_accuracy is {:.3f}'.format(index,accuracy)) return eval_acc/float(count),eval_loss/float(count) def close(self): self.session.close() self.train_writer.close() #generate batch data def __get_batchs(self,Xs,Ys,batch_size): for start in range(0,len(Xs),batch_size): end = min(start+batch_size,len(Xs)) yield Xs[start:end],Ys[start:end] pass def __add_conv_layer(self,filter_size,filter_num): with tf.name_scope('conv-maxpool-size%d'%(filter_size)): #convolutio layer filter_shape =[filter_size,self.embedding_size,1,filter_num] W = tf.Variable(tf.truncated_normal(filter_shape,stddev=0.1),name='filter_weight') self.__variable_summeries(W) b = tf.Variable(tf.constant(0.1,shape=[filter_num]),name='filter_bias') self.__variable_summeries(b) #参数说明 #第一个参数input:指需要做卷积的输入图像 [训练时一个batch的图片数量, 图片高度, 图片宽度, 图像通道数] #第二个参数filter:相当于CNN中的卷积核 [卷积核的高度,卷积核的宽度,图像通道数,卷积核个数] #第三个参数strides:卷积时在图像每一维的步长,这是一个一维的向量,长度4, #第四个参数padding:string类型的量,只能是"SAME","VALID"其中之一,这个值决定了不同的卷积方式 #第五个参数:use_cudnn_on_gpu: bool类型,是否使用cudnn加速,默认为true conv_layer = tf.nn.conv2d(self.embedding_layer_expand,W,strides=[1,1,1,1],padding='VALID',name='conv_layer') relu_layer = tf.nn.relu(tf.nn.bias_add(conv_layer,b),name='relu_layer') max_pool_layer = tf.nn.max_pool(relu_layer,ksize=[1,self.sentence_length - filter_size+1,1,1],strides=[1,1,1,1],padding='VALID',name='maxpool') return max_pool_layer def __variable_summeries(self,var): """ :param var: Tensor, Attach a lot of summaries to a Tensor (for TensorBoard visualization). """ with tf.name_scope('summeries'): mean = tf.reduce_mean(var) tf.summary.scalar('mean', mean) # 记录参数的均值 with tf.name_scope('stddev'): stddev = tf.sqrt(tf.reduce_mean(tf.square(var - mean))) tf.summary.scalar('stddev', stddev) tf.summary.scalar('max', tf.reduce_max(var)) tf.summary.scalar('min', tf.reduce_min(var)) # 用直方图记录参数的分布 tf.summary.histogram('histogram', var) ================================================ FILE: NLP/daguan/README.md ================================================ #### pytorch TextCNN的实现 参考模型:Char_CNN and Word_CNN ================================================ FILE: NLP/daguan/data_analy.py ================================================ #!/usr/bin/python # -*- coding: utf-8 -*- # @Time : 2018/8/28 下午4:03 # @Author : ComeOnJian # @File : data_analy.py import pandas as pd import numpy as np import pickle import yaml from collections import defaultdict from sklearn.feature_extraction.text import CountVectorizer from sklearn.model_selection import train_test_split from gensim.models import word2vec from gensim.models import KeyedVectors import torch import torch.utils.data as torch_data # text process def get_stopwords(docs, min_df, max_d): """ :param docs: (pd.Series) document :param min_df: 最小频率(int) :param max_df: 最大不超过(float,0.0 %f or word count < %d'%(max_d,min_df)) article_stop_words = get_stopwords(all_article,min_df=min_df,max_d=max_d) print('start init article vocab...') make_vocab(all_article, article_stop_words, char_vocab_size, type=1, isSave=True) # word_seg print('get the word_seg stop_words, the word pro > %f or word count < %d' % (max_d, min_df)) word_stop_words = get_stopwords(all_word_seg, min_df=min_df, max_d=max_d) print('start init article vocab...') make_vocab(all_word_seg, word_stop_words, word_vocab_size, type=2, isSave=True) def pre_train_w2v(all_text): model = word2vec.Word2Vec(sentences=texts, size=300, window=2, min_count=3, workers=2) model.wv.save_word2vec_format(fname=project.aux_dir + "train_all_data.bigram", binary=binary, fvocab=None) # text to index and save def sentence_to_indexs(sentences, dict_label2id, stop_words, max_document_length=1500, print_count=3000, padding=True): all_sentence_indexs = [] dict_size = len(dict_label2id) print('dict_size',dict_size) for index,sentence in enumerate(sentences): words = sentence.split() sentence_indexs = [] for word in words: if word not in stop_words: if word in dict_label2id: word_index = dict_label2id[word] else: word_index = (dict_size + 1) # unknow word sentence_indexs.append(word_index) else: word_index = (dict_size + 2) # stop words sentence_indexs.append(word_index) if padding: words_length = len(sentence_indexs) if words_length < max_document_length: # padding for _ in range(max_document_length-words_length): sentence_indexs.append(dict_size + 2) # padding word else: sentence_indexs = sentence_indexs[:max_document_length] # prune sentence if len(sentence_indexs)==0: print(index) all_sentence_indexs.append(sentence_indexs) if (index+1) % print_count == 0: print('already deal with %d documents'%(index+1)) return all_sentence_indexs def split_train_val(data, article_dicts, word_dicts, rate=0.7, isSave = True): # data = pd.read_csv('train_set.csv') # article_dicts = load('./data/art_dicts') # word_dicts = load('./data/art_dicts') article_words = data[['article','word_seg']].values y = data['class'].values x_train, x_test, y_train, y_test = train_test_split(article_words,y,test_size=(1-rate),random_state=42) x_train_articles = x_train[:,0] x_train_words = x_train[:,1] x_test_article = x_test[:,0] x_test_words = x_test[:,1] x_train_articles_ids = sentence_to_indexs(x_train_articles,article_dicts['dict_label2id'],article_dicts['stop_word'],padding=False) x_train_words_ids = sentence_to_indexs(x_train_words,word_dicts['dict_label2id'],word_dicts['stop_word'],padding=False) x_test_articles_ids = sentence_to_indexs(x_test_article,article_dicts['dict_label2id'],article_dicts['stop_word'],padding=False) x_test_words_ids = sentence_to_indexs(x_test_words,word_dicts['dict_label2id'],word_dicts['stop_word'],padding=False) if isSave: save('./data/x_train_articles_ids.pickle',x_train_articles_ids) save('./data/x_train_words_ids.pickle',x_train_words_ids) save('./data/x_test_articles_ids.pickle',x_test_articles_ids) save('./data/x_test_words_ids.pickle',x_test_words_ids) save('./data/y_train.pickle',y_train) save('./data/y_test.pickle',y_test) return x_train_articles_ids, x_train_words_ids, x_test_articles_ids, x_test_words_ids, y_train, y_test ############ Constructing model data set ################### class dataset(torch_data.Dataset): def __init__(self, src_article, src_word, y): self.src_article = src_article self.src_word = src_word self.y = y def __getitem__(self, index): return self.src_article[index], self.src_word[index], self.y[index] def __len__(self): return len(self.src_article) def padding(data): src_article, src_word, y = zip(*data) article_max_length = 2000 word_seg_max_length = 1500 # article art_src_len = [len(article) for article in src_article] if max(art_src_len) < article_max_length: article_max_length = max(art_src_len) art_src_pad = torch.zeros(len(src_article), article_max_length).long() for i, s in enumerate(src_article): if len(s) == 0 or s is None: print('None-------') end = art_src_len[i] # print(end)/ if end > article_max_length: end = article_max_length s = torch.LongTensor(s) art_src_pad[i, :end] = s[:end] # word_seg word_src_len = [len(word) for word in src_word] if max(word_src_len) < word_seg_max_length: word_seg_max_length = max(word_src_len) word_src_pad = torch.zeros(len(src_word), word_seg_max_length).long() for i, s in enumerate(src_word): end = word_src_len[i] if end > word_seg_max_length: end = word_seg_max_length s = torch.LongTensor(s) word_src_pad[i, :end] = s[:end] # print(y[0],type(y[0])) y = [int(item)-1 for item in y] # lable -> [0,18] return torch.LongTensor(art_src_pad), torch.LongTensor(word_src_pad), torch.LongTensor(y) def get_loader(dataset, batch_size, shuffle, num_workers): data_loader = torch.utils.data.DataLoader(dataset=dataset, batch_size=batch_size, shuffle=shuffle, num_workers=num_workers, collate_fn=padding) return data_loader def to_categorical(y, num_classes=None): y = np.array(y, dtype='int') input_shape = y.shape y = y.ravel() if not num_classes: num_classes = np.max(y) + 1 n = y.shape[0] categorical = np.zeros((n, num_classes)) categorical[np.arange(n), y] = 1 output_shape = input_shape + (num_classes,) categorical = np.reshape(categorical, output_shape) return categorical ############ analy config file ################### class AttrDict(dict): """ Dictionary whose keys can be accessed as attributes. """ def __init__(self, *args, **kwargs): super(AttrDict, self).__init__(*args, **kwargs) # self.__dict__ = self def __getattr__(self, item): if type(self[item]) is dict: self[item] = AttrDict(self[item]) return self[item] def __setstate__(self, state): pass def __getstate__(self): pass # for key in state.keys(): # print(key,state[key]) # setattr(self,key,state[key]) def read_config(path): return AttrDict(yaml.load(open(path, 'r'))) if __name__ == '__main__': # step1 init vocab # char_vocab_size = 10000 # word_vocab_size = 250000 # init_vocab(min_df=3,max_d=0.9,add_test=True, char_vocab_size=char_vocab_size, word_vocab_size=word_vocab_size) # pre_train_w2v # # step2 sentece to ids # train = pd.read_csv('train_set.csv') # article_dicts = load('./data/dicts_10000_arts') # word_dicts = load('./data/dicts_250000_words') # x_train_articles_ids, x_train_words_ids, x_test_articles_ids, x_test_words_ids, y_train, y_test = split_train_val(train, article_dicts, word_dicts, rate=0.7, isSave=True) # # pass ================================================ FILE: NLP/daguan/lr_scheduler.py ================================================ import math from bisect import bisect_right from torch.optim.optimizer import Optimizer class _LRScheduler(object): def __init__(self, optimizer, last_epoch=-1): if not isinstance(optimizer, Optimizer): raise TypeError('{} is not an Optimizer'.format( type(optimizer).__name__)) self.optimizer = optimizer if last_epoch == -1: for group in optimizer.param_groups: group.setdefault('initial_lr', group['lr']) else: for i, group in enumerate(optimizer.param_groups): if 'initial_lr' not in group: raise KeyError("param 'initial_lr' is not specified " "in param_groups[{}] when resuming an optimizer".format(i)) self.base_lrs = list(map(lambda group: group['initial_lr'], optimizer.param_groups)) self.step(last_epoch + 1) self.last_epoch = last_epoch def get_lr(self): raise NotImplementedError def step(self, epoch=None): if epoch is None: epoch = self.last_epoch + 1 self.last_epoch = epoch for param_group, lr in zip(self.optimizer.param_groups, self.get_lr()): param_group['lr'] = lr class LambdaLR(_LRScheduler): """Sets the learning rate of each parameter group to the initial lr times a given function. When last_epoch=-1, sets initial lr as lr. Args: optimizer (Optimizer): Wrapped optimizer. lr_lambda (function or list): A function which computes a multiplicative factor given an integer parameter epoch, or a list of such functions, one for each group in optimizer.param_groups. last_epoch (int): The index of last epoch. Default: -1. Example: >>> # Assuming optimizer has two groups. >>> lambda1 = lambda epoch: epoch // 30 >>> lambda2 = lambda epoch: 0.95 ** epoch >>> scheduler = LambdaLR(optimizer, lr_lambda=[lambda1, lambda2]) >>> for epoch in range(100): >>> scheduler.step() >>> train(...) >>> validate(...) """ def __init__(self, optimizer, lr_lambda, last_epoch=-1): self.optimizer = optimizer if not isinstance(lr_lambda, list) and not isinstance(lr_lambda, tuple): self.lr_lambdas = [lr_lambda] * len(optimizer.param_groups) else: if len(lr_lambda) != len(optimizer.param_groups): raise ValueError("Expected {} lr_lambdas, but got {}".format( len(optimizer.param_groups), len(lr_lambda))) self.lr_lambdas = list(lr_lambda) self.last_epoch = last_epoch super(LambdaLR, self).__init__(optimizer, last_epoch) def get_lr(self): return [base_lr * lmbda(self.last_epoch) for lmbda, base_lr in zip(self.lr_lambdas, self.base_lrs)] class StepLR(_LRScheduler): """Sets the learning rate of each parameter group to the initial lr decayed by gamma every step_size epochs. When last_epoch=-1, sets initial lr as lr. Args: optimizer (Optimizer): Wrapped optimizer. step_size (int): Period of learning rate decay. gamma (float): Multiplicative factor of learning rate decay. Default: 0.1. last_epoch (int): The index of last epoch. Default: -1. Example: >>> # Assuming optimizer uses lr = 0.5 for all groups >>> # lr = 0.05 if epoch < 30 >>> # lr = 0.005 if 30 <= epoch < 60 >>> # lr = 0.0005 if 60 <= epoch < 90 >>> # ... >>> scheduler = StepLR(optimizer, step_size=30, gamma=0.1) >>> for epoch in range(100): >>> scheduler.step() >>> train(...) >>> validate(...) """ def __init__(self, optimizer, step_size, gamma=0.1, last_epoch=-1): self.step_size = step_size self.gamma = gamma super(StepLR, self).__init__(optimizer, last_epoch) def get_lr(self): return [base_lr * self.gamma ** (self.last_epoch // self.step_size) for base_lr in self.base_lrs] class MultiStepLR(_LRScheduler): """Set the learning rate of each parameter group to the initial lr decayed by gamma once the number of epoch reaches one of the milestones. When last_epoch=-1, sets initial lr as lr. Args: optimizer (Optimizer): Wrapped optimizer. milestones (list): List of epoch indices. Must be increasing. gamma (float): Multiplicative factor of learning rate decay. Default: 0.1. last_epoch (int): The index of last epoch. Default: -1. Example: >>> # Assuming optimizer uses lr = 0.5 for all groups >>> # lr = 0.05 if epoch < 30 >>> # lr = 0.005 if 30 <= epoch < 80 >>> # lr = 0.0005 if epoch >= 80 >>> scheduler = MultiStepLR(optimizer, milestones=[30,80], gamma=0.1) >>> for epoch in range(100): >>> scheduler.step() >>> train(...) >>> validate(...) """ def __init__(self, optimizer, milestones, gamma=0.1, last_epoch=-1): if not list(milestones) == sorted(milestones): raise ValueError('Milestones should be a list of' ' increasing integers. Got {}', milestones) self.milestones = milestones self.gamma = gamma super(MultiStepLR, self).__init__(optimizer, last_epoch) def get_lr(self): return [base_lr * self.gamma ** bisect_right(self.milestones, self.last_epoch) for base_lr in self.base_lrs] class ExponentialLR(_LRScheduler): """Set the learning rate of each parameter group to the initial lr decayed by gamma every epoch. When last_epoch=-1, sets initial lr as lr. Args: optimizer (Optimizer): Wrapped optimizer. gamma (float): Multiplicative factor of learning rate decay. last_epoch (int): The index of last epoch. Default: -1. """ def __init__(self, optimizer, gamma, last_epoch=-1): self.gamma = gamma super(ExponentialLR, self).__init__(optimizer, last_epoch) def get_lr(self): return [base_lr * self.gamma ** self.last_epoch for base_lr in self.base_lrs] class CosineAnnealingLR(_LRScheduler): """Set the learning rate of each parameter group using a cosine annealing schedule, where :math:`\eta_{max}` is set to the initial lr and :math:`T_{cur}` is the number of epochs since the last restart in SGDR: .. math:: \eta_t = \eta_{min} + \frac{1}{2}(\eta_{max} - \eta_{min})(1 + \cos(\frac{T_{cur}}{T_{max}}\pi)) When last_epoch=-1, sets initial lr as lr. It has been proposed in `SGDR: Stochastic Gradient Descent with Warm Restarts`_. Note that this only implements the cosine annealing part of SGDR, and not the restarts. Args: optimizer (Optimizer): Wrapped optimizer. T_max (int): Maximum number of iterations. eta_min (float): Minimum learning rate. Default: 0. last_epoch (int): The index of last epoch. Default: -1. .. _SGDR\: Stochastic Gradient Descent with Warm Restarts: https://arxiv.org/abs/1608.03983 """ def __init__(self, optimizer, T_max, eta_min=0, last_epoch=-1): self.T_max = T_max self.eta_min = eta_min super(CosineAnnealingLR, self).__init__(optimizer, last_epoch) def get_lr(self): return [self.eta_min + (base_lr - self.eta_min) * (1 + math.cos(self.last_epoch / self.T_max * math.pi)) / 2 for base_lr in self.base_lrs] class ReduceLROnPlateau(object): """Reduce learning rate when a metric has stopped improving. Models often benefit from reducing the learning rate by a factor of 2-10 once learning stagnates. This scheduler reads a metrics quantity and if no improvement is seen for a 'patience' number of epochs, the learning rate is reduced. Args: optimizer (Optimizer): Wrapped optimizer. mode (str): One of `min`, `max`. In `min` mode, lr will be reduced when the quantity monitored has stopped decreasing; in `max` mode it will be reduced when the quantity monitored has stopped increasing. Default: 'min'. factor (float): Factor by which the learning rate will be reduced. new_lr = lr * factor. Default: 0.1. patience (int): Number of epochs with no improvement after which learning rate will be reduced. Default: 10. verbose (bool): If True, prints a message to stdout for each update. Default: False. threshold (float): Threshold for measuring the new optimum, to only focus on significant changes. Default: 1e-4. threshold_mode (str): One of `rel`, `abs`. In `rel` mode, dynamic_threshold = best * ( 1 + threshold ) in 'max' mode or best * ( 1 - threshold ) in `min` mode. In `abs` mode, dynamic_threshold = best + threshold in `max` mode or best - threshold in `min` mode. Default: 'rel'. cooldown (int): Number of epochs to wait before resuming normal operation after lr has been reduced. Default: 0. min_lr (float or list): A scalar or a list of scalars. A lower bound on the learning rate of all param groups or each group respectively. Default: 0. eps (float): Minimal decay applied to lr. If the difference between new and old lr is smaller than eps, the update is ignored. Default: 1e-8. Example: >>> optimizer = torch.optim.SGD(model.parameters(), lr=0.1, momentum=0.9) >>> scheduler = ReduceLROnPlateau(optimizer, 'min') >>> for epoch in range(10): >>> train(...) >>> val_loss = validate(...) >>> # Note that step should be called after validate() >>> scheduler.step(val_loss) """ def __init__(self, optimizer, mode='min', factor=0.1, patience=10, verbose=False, threshold=1e-4, threshold_mode='rel', cooldown=0, min_lr=0, eps=1e-8): if factor >= 1.0: raise ValueError('Factor should be < 1.0.') self.factor = factor if not isinstance(optimizer, Optimizer): raise TypeError('{} is not an Optimizer'.format( type(optimizer).__name__)) self.optimizer = optimizer if isinstance(min_lr, list) or isinstance(min_lr, tuple): if len(min_lr) != len(optimizer.param_groups): raise ValueError("expected {} min_lrs, got {}".format( len(optimizer.param_groups), len(min_lr))) self.min_lrs = list(min_lr) else: self.min_lrs = [min_lr] * len(optimizer.param_groups) self.patience = patience self.verbose = verbose self.cooldown = cooldown self.cooldown_counter = 0 self.mode = mode self.threshold = threshold self.threshold_mode = threshold_mode self.best = None self.num_bad_epochs = None self.mode_worse = None # the worse value for the chosen mode self.is_better = None self.eps = eps self.last_epoch = -1 self._init_is_better(mode=mode, threshold=threshold, threshold_mode=threshold_mode) self._reset() def _reset(self): """Resets num_bad_epochs counter and cooldown counter.""" self.best = self.mode_worse self.cooldown_counter = 0 self.num_bad_epochs = 0 def step(self, metrics, epoch=None): current = metrics if epoch is None: epoch = self.last_epoch = self.last_epoch + 1 self.last_epoch = epoch if self.is_better(current, self.best): self.best = current self.num_bad_epochs = 0 else: self.num_bad_epochs += 1 if self.in_cooldown: self.cooldown_counter -= 1 self.num_bad_epochs = 0 # ignore any bad epochs in cooldown if self.num_bad_epochs > self.patience: self._reduce_lr(epoch) self.cooldown_counter = self.cooldown self.num_bad_epochs = 0 def _reduce_lr(self, epoch): for i, param_group in enumerate(self.optimizer.param_groups): old_lr = float(param_group['lr']) new_lr = max(old_lr * self.factor, self.min_lrs[i]) if old_lr - new_lr > self.eps: param_group['lr'] = new_lr if self.verbose: print('Epoch {:5d}: reducing learning rate' ' of group {} to {:.4e}.'.format(epoch, i, new_lr)) @property def in_cooldown(self): return self.cooldown_counter > 0 def _init_is_better(self, mode, threshold, threshold_mode): if mode not in {'min', 'max'}: raise ValueError('mode ' + mode + ' is unknown!') if threshold_mode not in {'rel', 'abs'}: raise ValueError('threshold mode ' + mode + ' is unknown!') if mode == 'min' and threshold_mode == 'rel': rel_epsilon = 1. - threshold self.is_better = lambda a, best: a < best * rel_epsilon self.mode_worse = float('Inf') elif mode == 'min' and threshold_mode == 'abs': self.is_better = lambda a, best: a < best - threshold self.mode_worse = float('Inf') elif mode == 'max' and threshold_mode == 'rel': rel_epsilon = threshold + 1. self.is_better = lambda a, best: a > best * rel_epsilon self.mode_worse = -float('Inf') else: # mode == 'max' and epsilon_mode == 'abs': self.is_better = lambda a, best: a > best + threshold self.mode_worse = -float('Inf') ================================================ FILE: NLP/daguan/main.py ================================================ #!/usr/bin/python # -*- coding: utf-8 -*- # @Time : 2018/8/29 下午4:29 # @Author : ComeOnJian # @File : main.py import pandas as pd import time import data_analy import model import torch.nn as nn import torch from torch.autograd import Variable import lr_scheduler as L from optims import Optim from sklearn import metrics import collections # load config config = data_analy.read_config('./config.yaml') torch.manual_seed(config.seed) if config.restore: print('loading checkpoint...\n') check_point = torch.load(config.restore) # cuda use_cuda = torch.cuda.is_available() and len(config.gpus) > 0 if use_cuda: torch.cuda.set_device(config.gpus[0]) torch.cuda.manual_seed(config.seed) # load data if config.data: x_train_articles_ids = data_analy.load(config.x_train_articles_ids) x_train_words_ids = data_analy.load(config.x_train_words_ids) x_test_articles_ids = data_analy.load(config.x_test_articles_ids) x_test_words_ids = data_analy.load(config.x_test_words_ids) y_train = data_analy.load(config.y_train) y_test = data_analy.load(config.y_test) train_dataset = data_analy.dataset(x_train_articles_ids, x_train_words_ids, y_train) val_dataset = data_analy.dataset(x_test_articles_ids, x_test_words_ids, y_test) dataset = { 'train': train_dataset, 'val': val_dataset } torch.save(dataset,config.data) else: train_dataset = torch.load('./data/dataset')['train'] val_dataset = torch.load('./data/dataset')['val'] train_dataloader = data_analy.get_loader(train_dataset, batch_size = config.batch_size, shuffle = True, num_workers = 2 ) val_dataloader = data_analy.get_loader(val_dataset, batch_size = config.batch_size, shuffle = False, num_workers = 2 ) # load model # class_weight = Variable(torch.FloatTensor([1.54, 2.86, 1, 2.17, 3.5, 1.2, 2.73, 1.19, 1.08, 1.67, 2.32, 1.56, 1.05, 1.23, 1.1, 2.58, 2.69, 1.18, 1.5])) # 样本少的类别,可以考虑把权重设置大一点 loss_fn = nn.CrossEntropyLoss(size_average=True)#,weight=class_weight) if use_cuda: loss_fn.cuda() word_filter_sizes = [2, 3, 4, 5, 6, 7, 8, 9] word_filter_nums = [100, 150, 150, 150, 150, 50, 50, 50] char_filter_sizes = [2, 3, 4, 5, 6, 7, 8, 9] char_filter_nums = [50, 100, 100, 100, 50, 50, 50, 50] cnn_model = getattr(model,"Text_WCCNN")(config, word_filter_sizes, word_filter_nums, config.word_vocab_size, char_filter_sizes, char_filter_nums, config.char_vocab_size) if config.restore: cnn_model.load_state_dict(check_point['model']) if use_cuda: cnn_model = cnn_model.cuda() if len(config.gpus) > 1: model = nn.DataParallel(model, device_ids=config.gpus, dim=0) # optimizer if config.restore: optim = check_point['optim'] updates = check_point['updates'] else: optim = Optim(config.optim, config.learning_rate, config.max_grad_norm, lr_decay=config.learning_rate_decay, start_decay_at=config.start_decay_at) updates = 0 optim.set_parameters(cnn_model.parameters()) if config.schedule: scheduler = L.CosineAnnealingLR(optim.optimizer, T_max=config.epoch) # total number of parameters param_count = 0 for param in cnn_model.parameters(): param_count += param.view(-1).size()[0] print('model all parameters is %d'% param_count) total_loss, start_time = 0, time.time() report_total, report_correct = 0, 0 scores = [[] for metric in config.metric] scores = collections.OrderedDict(zip(config.metric, scores)) # train model def train(epoch): global e e = epoch cnn_model.train() if config.schedule: scheduler.step() print("Decaying learning rate to %g" % scheduler.get_lr()[0]) global updates, total_loss, start_time, report_total, report_correct for art_src, word_src, y in train_dataloader: art_src = Variable(art_src) word_src = Variable(word_src) y = Variable(y) if use_cuda: art_src = art_src.cuda() word_src = word_src.cuda() y = y.cuda() cnn_model.zero_grad() pre_out = cnn_model(art_src, word_src) loss = loss_fn(pre_out,y) loss.backward() optim.step() pred_label = torch.max(pre_out,1)[1] # Variable report_correct += (pred_label.data == y.data).sum() report_total += len(y) total_loss += loss.data[0] updates += 1 if updates % config.eval_interval == 0: print("train--> time: %6.4f, epoch: %3d, updates: %8d, train loss: %6.3f and accuracy: %.3f\n" % ((time.time() - start_time), epoch, updates, total_loss / config.eval_interval, (report_correct / float(report_total)))) print('evaluating after %d updates...\r' % updates) score = eval(epoch) for metric in config.metric: scores[metric].append(score[metric]) if metric == 'macro_f1' and score[metric] >= max(scores[metric]): save_model('./data/' + 'best_' + metric + '_checkpoint.pt') if metric == 'loss' and score[metric] <= min(scores[metric]): save_model('./data/' + 'best_' + metric + '_checkpoint.pt') cnn_model.train() start_time = time.time() report_total = 0 report_correct = 0 total_loss = 0 if updates % config.save_interval == 0: save_model('./data/model.pt') # y:[10] -> [0,0,0,...,1,0,0] # y = [to_categorical(item, num_classes) for item in y] # eval model def eval(epoch): cnn_model.eval() y_true = [] y_pred = [] eval_total_loss = 0. eval_update = 0 for art_src, word_src, y in val_dataloader: art_src = Variable(art_src) word_src = Variable(word_src) y_true += [y_item for y_item in y] y = Variable(y) eval_update += 1 if use_cuda: art_src = art_src.cuda() word_src = word_src.cuda() y = y.cuda() if len(config.gpus) > 1: output_pro = cnn_model.module.forward(art_src,word_src) # FloatTensor [batch_size,1] else: output_pro = cnn_model.forward(art_src,word_src) loss = loss_fn(output_pro, y) eval_total_loss += loss.data[0] # y_pred += [item.tolist() for item in output_pro.data] # item is FloatTensor size 19 pred_label = torch.max(output_pro, 1)[1].data.tolist() # LongTensor size 32 y_pred += [int(item) for item in pred_label] score = {} result = get_metrics(y_true,y_pred) loss = eval_total_loss/eval_update # logging_csv([e, updates, result['f1'], \ # result['precision'], result['recall'], loss, result['accuracy']]) print('eval--> f1: %.4f |precision: %.4f |recall: %.4f |loss: %.4f |accuracy: %.3f ' % (result['macro_f1'], result['macro_precision'],result['macro_recall'], loss, result['accuracy'])) score['macro_f1'] = result['macro_f1'] score['accuracy'] = result['accuracy'] score['macro_precision'] = result['macro_precision'] score['macro_recall'] = result['macro_recall'] score['loss'] = loss # score['loss'] = loss return score def save_model(path): global updates model_state_dict = cnn_model.module.state_dict() if len(config.gpus) > 1 else cnn_model.state_dict() checkpoints = { 'model': model_state_dict, 'config': config, 'optim': optim, 'updates': updates} torch.save(checkpoints, path) def get_metrics(y,y_pre): macro_f1 = metrics.f1_score(y, y_pre, average='macro') macro_precision = metrics.precision_score(y, y_pre, average='macro') macro_recall = metrics.recall_score(y, y_pre, average='macro') # micro_f1 = metrics.f1_score(y, y_pre, average='micro') # micro_precision = metrics.precision_score(y, y_pre, average='micro') # micro_recall = metrics.recall_score(y, y_pre, average='micro') accuracy = metrics.accuracy_score(y, y_pre) result = { 'accuracy': accuracy, 'macro_f1': macro_f1, 'macro_precision': macro_precision, 'macro_recall': macro_recall } return result if __name__ == '__main__': for i in range(config.epoch): train(i) pass # x_train_articles_ids = data_analy.load(config.x_train_articles_ids) # # x_train_words_ids = data_analy.load(config.x_train_words_ids) # # x_test_articles_ids = data_analy.load(config.x_test_articles_ids) # # x_test_words_ids = data_analy.load(config.x_test_words_ids) # none_count = 0 # for article in x_train_articles_ids: # if len(article) == 0: # none_count += 1 # print(none_count) ================================================ FILE: NLP/daguan/model.py ================================================ #!/usr/bin/python # -*- coding: utf-8 -*- # @Time : 2018/8/29 上午11:06 # @Author : ComeOnJian # @File : model.py import torch import torch.nn as nn import torch.nn.functional as F class encoder_cnn(nn.Module): """ 对源句子进行编码操作 """ def __init__(self,config,filter_sizes,filter_nums,vocab_size,embedding=None): super(encoder_cnn,self).__init__() if embedding is not None: self.embedding = embedding else: self.embedding = nn.Embedding(vocab_size,config.emb_size) self.convs = nn.ModuleList( [nn.Conv2d(in_channels=1, out_channels=filter_num, kernel_size=(fliter_size, config.emb_size), padding=((fliter_size//2, 0))) for (filter_num,fliter_size) in zip(filter_nums,filter_sizes)]) # 卷积层后添加BN self.bns = None if config.batchNormal: self.bns = nn.ModuleList([nn.BatchNorm2d(filter_num) for filter_num in filter_nums]) #全连接层 if config.highway: sum_filters = sum(filter_nums) self.h_layer = nn.Linear(sum_filters,sum_filters) self.transform_gate_layer = nn.Linear(sum_filters,sum_filters) self.config = config def forward(self, inputs): embs = self.embedding(inputs) # [batch, seq_length] -> [batch,seq_length,emb_size] x = torch.unsqueeze(embs,1) # [batch,seq_length,emb_size] -> [batch,1,seq_length,emb_size] add input channel xs = [] if self.bns is not None: for (conv,bn)in zip(self.convs,self.bns): x2 = F.relu(conv(x)) # [batch,1,seq_length,emb_size] -> [batch,filter_num,seq_length,1] x2 = bn(x2) # [batch,filter_num,seq_length,1] -> [batch,filter_num,seq_length,1] x2 = torch.squeeze(x2,-1) # [batch,filter_num,seq_length,1] -> [batch,filter_num,seq_length] x2 = F.max_pool1d(x2,x2.size(2)).squeeze(2) # [batch,filter_num,seq_length] -> [batch,filter_num,1] -> [batch,filter_num] xs.append(x2) else: for conv in self.convs: x2 = F.relu(conv(x)) # [batch,1,seq_length,emb_size] -> [batch,filter_num,seq_length,1] x2 = torch.squeeze(x2,-1) # [batch,filter_num,seq_length,1] -> [batch,filter_num,seq_length] x2 = F.max_pool1d(x2,x2.size(2)).squeeze(2) # [batch,filter_num,seq_length] -> [batch,filter_num,1] -> [batch,filter_num] xs.append(x2) # xs # [batch,filter_num] * len(filter_nums) #difference filter pool_flat_out = torch.cat(xs,1) # [batch,filter_num] * len(filter_nums) -> [batch,filter_num1+filter_num2+...] # 把各个filter_num相加 # highway layout formula for https://www.cnblogs.com/bamtercelboo/p/7611380.html if self.config.highway: h = self.h_layer(pool_flat_out) transform_gate = F.sigmoid(self.transform_gate_layer(pool_flat_out)) carry_gate = 1. - transform_gate #C gate_transform_input = torch.mul(h,transform_gate) gate_carry_input = torch.mul(carry_gate,pool_flat_out) pool_flat_out = torch.add(gate_carry_input,gate_transform_input) #[batch,sum(filter_nums)] return pool_flat_out class Text_WCCNN(nn.Module): def __init__(self,config, word_filter_sizes, word_filter_nums, word_vocab_size, char_filter_sizes, char_filter_nums, char_vocab_size, word_embedding=None, art_embedding=None): super(Text_WCCNN, self).__init__() self.config = config self.criterion = nn.CrossEntropyLoss(size_average=True) if word_embedding is not None: self.word_embedding = word_embedding else: self.word_embedding = nn.Embedding(word_vocab_size,config.word_emb_size) # article char self.article_encoder_cnn = encoder_cnn(self.config, char_filter_sizes, char_filter_nums, char_vocab_size, art_embedding) # self.word_encoder_cnn = encoder_cnn(self.config, word_filter_sizes, word_filter_nums, word_vocab_size, word_embedding) # multi cnn layer word_encoder_cnns = [nn.Sequential( # first layer cnn # [batch,1,seq_length,emb_size] -> [batch,filter_num,seq_length,1] nn.Conv2d(in_channels=1,out_channels=filter_num,kernel_size=(fliter_size,config.word_emb_size),padding=((fliter_size//2, 0))), nn.BatchNorm2d(filter_num), # [batch,filter_num,seq_length,1] nn.ReLU(inplace=True), # second layer cnn nn.Conv2d(in_channels=filter_num,out_channels=filter_num,kernel_size=(fliter_size,1),padding=((fliter_size//2, 0))), nn.BatchNorm2d(filter_num), nn.ReLU(inplace=True) # , # nn.MaxPool1d(kernel_size=(config.seq_length - fliter_size * 2 + fliter_size//2+1)) ) for (filter_num,fliter_size) in zip(word_filter_nums,word_filter_sizes)] self.word_contexts = nn.ModuleList(word_encoder_cnns) # flat layer self.fc = nn.Sequential( nn.Linear(sum(char_filter_nums) + sum(word_filter_nums),config.linear_hidden_size), nn.BatchNorm1d(config.linear_hidden_size), nn.ReLU(inplace=True), nn.Linear(config.linear_hidden_size, config.num_classes) ) def forward(self, article, word_seg): article_context = self.article_encoder_cnn(article) # [batch,sum(char_filter_nums)] # word_context = self.word_encoder_cnn(word_seg) # [batch,sum(char_filter_nums)] word_embs = self.word_embedding(word_seg) # [batch, seq_length] -> [batch,seq_length,emb_size] x = torch.unsqueeze(word_embs, 1) # [batch,seq_length,emb_size] -> [batch,1,seq_length,emb_size] add input channel # word_convs = [word_conv(x) for word_conv in self.word_encoder_cnn] word_convs = [] for word_conv in self.word_contexts: x2 = word_conv(x) x2 = torch.squeeze(x2, -1) # [batch,filter_num,seq_length,1] -> [batch,filter_num,seq_length] x2 = F.max_pool1d(x2,x2.size(2)).squeeze(2) word_convs.append(x2) word_context = torch.cat(word_convs, 1) # [batch,sum(word_filter_nums)] flat_out = torch.cat((word_context,article_context),1) # [batch,sum(char_filter_nums) + sum(word_filter_nums)] flat_out = self.fc((flat_out)) return flat_out ================================================ FILE: NLP/daguan/optims.py ================================================ import math import torch.optim as optim import torch.nn as nn from torch.nn.utils import clip_grad_norm class Optim(object): def set_parameters(self, params): self.params = list(params) # careful: params may be a generator if self.method == 'sgd': self.optimizer = optim.SGD(self.params, lr=self.lr) elif self.method == 'adagrad': self.optimizer = optim.Adagrad(self.params, lr=self.lr) elif self.method == 'adadelta': self.optimizer = optim.Adadelta(self.params, lr=self.lr) elif self.method == 'adam': self.optimizer = optim.Adam(self.params, lr=self.lr) elif self.method == 'rmsprop': self.optimizer = optim.RMSprop(self.params, lr=self.lr) else: raise RuntimeError("Invalid optim method: " + self.method) def __init__(self, method, lr, max_grad_norm, lr_decay=1, start_decay_at=None): self.last_ppl = None self.lr = lr self.max_grad_norm = max_grad_norm self.method = method self.lr_decay = lr_decay self.start_decay_at = start_decay_at self.start_decay = False def step(self): # Compute gradients norm. if self.max_grad_norm: clip_grad_norm(self.params, self.max_grad_norm) self.optimizer.step() # decay learning rate if val perf does not improve or we hit the start_decay_at limit def updateLearningRate(self, ppl, epoch): if self.start_decay_at is not None and epoch >= self.start_decay_at: self.start_decay = True if self.last_ppl is not None and ppl > self.last_ppl: self.start_decay = True if self.start_decay: self.lr = self.lr * self.lr_decay print("Decaying learning rate to %g" % self.lr) self.last_ppl = ppl self.optimizer.param_groups[0]['lr'] = self.lr ================================================ FILE: NLP/daguan/predict.py ================================================ #!/usr/bin/python # -*- coding: utf-8 -*- # @Time : 2018/9/1 上午12:16 # @Author : ComeOnJian # @File : predict.py import data_analy import pandas as pd import numpy as np import torch import torch.nn as nn from torch.autograd import Variable import model if False: test = pd.read_csv('test_set.csv') article_dicts = data_analy.load('./data/dicts_10000_arts') word_dicts = data_analy.load('./data/dicts_250000_words') article = test['article'].values words = test['word_seg'].values test_articles_ids = data_analy.sentence_to_indexs(article,article_dicts['dict_label2id'],article_dicts['stop_word'],padding=False) test_words_ids = data_analy.sentence_to_indexs(words,word_dicts['dict_label2id'],word_dicts['stop_word'],padding=False) data_analy.save('./data/test_articles_ids.pickle',test_articles_ids) data_analy.save('./data/test_words_ids.pickle',test_words_ids) # load model config = data_analy.read_config('./config.yaml') torch.manual_seed(config.seed) print('loading checkpoint...\n') check_point = torch.load('./data/best_macro_f1_checkpoint.pt') # cuda use_cuda = torch.cuda.is_available() and len(config.gpus) > 0 if use_cuda: torch.cuda.set_device(config.gpus[0]) torch.cuda.manual_seed(config.seed) # load model word_filter_sizes = [2, 3, 4, 5, 6, 7, 8, 9] word_filter_nums = [100, 150, 150, 150, 150, 50, 50, 50] char_filter_sizes = [2, 3, 4, 5, 6, 7, 8, 9] char_filter_nums = [50, 100, 100, 100, 50, 50, 50, 50] cnn_model = getattr(model,"Text_WCCNN")(config, word_filter_sizes, word_filter_nums, config.word_vocab_size, char_filter_sizes, char_filter_nums, config.char_vocab_size) if use_cuda: cnn_model = cnn_model.cuda() cnn_model.load_state_dict(check_point['model']) # load dataset if True: test_articles_ids = data_analy.load('./data/test_articles_ids.pickle') test_words_ids = data_analy.load('./data/test_words_ids.pickle') y_test = np.zeros(len(test_words_ids)).tolist() test_dataset = data_analy.dataset(test_articles_ids, test_words_ids, y_test) test_dataloader = data_analy.get_loader(test_dataset, batch_size = config.batch_size, shuffle = False, num_workers = 2 ) def eval(cnn_model): cnn_model.eval() y_pred = [] for art_src, word_src, y in test_dataloader: if len(y) != config.batch_size: print('-------------------') art_src = Variable(art_src) word_src = Variable(word_src) if use_cuda: art_src = art_src.cuda() word_src = word_src.cuda() if len(config.gpus) > 1: output_pro = cnn_model.module.forward(art_src,word_src) # FloatTensor [batch_size,1] else: output_pro = cnn_model.forward(art_src,word_src) # y_pred += [item.tolist() for item in output_pro.data] # item is FloatTensor size 19 pred_label = torch.max(output_pro, 1)[1].data.tolist() # LongTensor size 32 y_pred += [int(item) for item in pred_label] return y_pred y_pred = eval(cnn_model) fid0=open('textcnn1.csv','w') i=0 fid0.write("id,class"+"\n") for item in y_pred: fid0.write(str(i)+","+str(item+1)+"\n") i=i+1 fid0.close() ================================================ FILE: README.md ================================================ HEXO个人博客地址:[小简铺子](https://jianwenjun.xyz) ### 机器学习练手代码 描述:主要包括机器学习的基础算法的实现、相关竞赛代码,论文和项目复现代码。 ### 1ML #### 1.1决策树相关算法 [决策树相关算法——ID3、C4.5的详细说明及实现](https://blog.csdn.net/u014732537/article/details/79667599) —— [代码地址](https://github.com/JianWenJun/MLDemo/blob/master/ML/DecisionTree/decision_tree.py) >本篇博客记录的是使用python实现两个决策树相关的算法模型—— ID3、C4.5。其中训练模型使用的数据集是Adult。 [决策树相关算法——Bagging之基于CART的随机森林详细说明与实现](https://blog.csdn.net/u014732537/article/details/79667679) >本篇博客主要记录的是基于CART决策树实现的随机森林算法,主要是从以下四个方面介绍: CART决策树的构建思想;集成学习中的Bagging思想;基于CART决策树的随机森林代码实现;随机森林不易过拟合的分析。(其中不易过拟合并不是说随机森林不会过拟合) [决策树相关算法——Boosting之Adaboost&GBDT详细分析与实现](https://jianwenjun.xyz/2018/04/12/%E5%86%B3%E7%AD%96%E6%A0%91%E7%9B%B8%E5%85%B3%E7%AE%97%E6%B3%95%E2%80%94%E2%80%94Boosting%E4%B9%8BAdaboost-GBDT%E8%AF%A6%E7%BB%86%E5%88%86%E6%9E%90%E4%B8%8E%E5%AE%9E%E7%8E%B0/) >本篇博客主要记录的是集成学习中的Boosting提升算法的相关实现,主要分为以下四个部分,Boosting的提出,Boosting经典算法Adaboost的分析与实现,Adaboost算法的特例提升树的分析,梯度提升算法GBDT的提出原因及分析。 [决策树相关算法——XGBoost原理分析及实例实现(一)](https://jianwenjun.xyz/2018/04/26/%E5%86%B3%E7%AD%96%E6%A0%91%E7%9B%B8%E5%85%B3%E7%AE%97%E6%B3%95%E2%80%94%E2%80%94XGBoost%E5%8E%9F%E7%90%86%E5%88%86%E6%9E%90%E5%8F%8A%E5%AE%9E%E4%BE%8B%E5%AE%9E%E7%8E%B0-%E4%B8%80/) [决策树相关算法——XGBoost原理分析及实例实现(二)](https://jianwenjun.xyz/2018/04/27/%E5%86%B3%E7%AD%96%E6%A0%91%E7%9B%B8%E5%85%B3%E7%AE%97%E6%B3%95%E2%80%94%E2%80%94XGBoost%E5%8E%9F%E7%90%86%E5%88%86%E6%9E%90%E5%8F%8A%E5%AE%9E%E4%BE%8B%E5%AE%9E%E7%8E%B0-%E4%BA%8C/) [决策树相关算法——XGBoost原理分析及实例实现(三)](https://jianwenjun.xyz/2018/05/02/%E5%86%B3%E7%AD%96%E6%A0%91%E7%9B%B8%E5%85%B3%E7%AE%97%E6%B3%95%E2%80%94%E2%80%94XGBoost%E5%8E%9F%E7%90%86%E5%88%86%E6%9E%90%E5%8F%8A%E5%AE%9E%E4%BE%8B%E5%AE%9E%E7%8E%B0-%E4%B8%89/) —— [代码地址](https://github.com/JianWenJun/MLDemo/blob/master/ML/DecisionTree/xgboost_demo.py) >上述3篇博客主要记录的是XGBoost的代价函数的优化过程,XGBoost在构建决策树结构时,知道如何评定划分点的好坏的情况下,如何遍历查找出该树结构的切分点。最后,使用XGBoost对kaggle中的初级赛题Titanic: Machine Learning from Disaster进行预测的实例。 #### 1.2神经网络 [TensorFlow实现多层感知机及可视化训练过程中的数据记录](http://blog.csdn.net/u014732537/article/details/79412672) —— [代码地址](https://github.com/JianWenJun/MLDemo/blob/master/ML/TensorDemo/NN_tf.py) >本篇博客主要有2个目的,第一,记录学习使用TensorFlow的操作流程;第二,将TensorFlow训练数据模型过程中的参数数据进行可视化记录。 #### 1.3感知机及支持向量机 [机器学习算法——感知机&支持向量机](https://jianwenjun.xyz/2018/05/05/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E7%AE%97%E6%B3%95%E2%80%94%E2%80%94%E6%84%9F%E7%9F%A5%E6%9C%BA-%E6%94%AF%E6%8C%81%E5%90%91%E9%87%8F%E6%9C%BA/) —— [代码地址](https://github.com/JianWenJun/MLDemo/tree/master/ML/Perce_SVM) >本篇博客主要详细介绍两种具有一定相似性的机器学习算法——感知机Perceptron和支持向量机SVM,该两种算法都是在特征空间中寻找划分平面从而对数据集进行划分的思想,但寻找划分平面的算法不同。划分平面的定义也有差距。本篇博客主要叙述思路为算法模型,代价函数,学习算法,最后的算法模型使用实例介绍。 #### 1.4逻辑斯谛回归模型&最大熵模型 [机器学习算法——逻辑斯谛回归模型&最大熵模型](https://jianwenjun.xyz/2018/05/15/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E7%AE%97%E6%B3%95%E2%80%94%E2%80%94%E9%80%BB%E8%BE%91%E6%96%AF%E8%B0%9B%E5%9B%9E%E5%BD%92-%E6%9C%80%E5%A4%A7%E7%86%B5%E6%A8%A1%E5%9E%8B/) —— [代码地址](https://github.com/JianWenJun/MLDemo/blob/master/ML/LogisticRegression_MEM/LR_MEM_demo.py) >本篇博客主要记录两个分类模型(逻辑斯谛回归模型和最大熵模型)原理及模型的代码实现,将这两个模型放一块的原因是这两个模型都是对数线性模型,都是由条件概率分布表示`P(Y|X)`. ### 2NLP 2.1 [卷积神经网络(TextCNN)在句子分类上的实现](http://blog.csdn.net/u014732537/article/details/79573174) —— [代码地址](https://github.com/JianWenJun/MLDemo/blob/master/NLP/Text_CNN/text_cnn_main.py) > 本篇博客记录的是论文Convolutional Neural Networks for Sentence Classification中的实验实现过程,一篇介绍使用CNN对句子进行分类的论文。尽管网上有些代码已经实现了使用CNN进行句子分类(TextCNN),但是是基于Theano来实现的,本文将介绍使用TensorFlow来实现整个论文的实验过程,一方面熟悉使用TensorFlow API,另一方面加深自己对CNN在NLP上的应用的理解. 2.2 [蚂蚁金融NLP竞赛——文本语义相似度赛题总结](https://jianwenjun.xyz/) —— [代码地址](https://github.com/JianWenJun/MLDemo/blob/master/Financial_NLP/final_demo/README.md) 2.3 [中文文本关键词提取实例——项目说明及代码](https://github.com/JianWenJun/MLDemo/blob/master/NLP/Multi_Label/ShengCe/%E7%A5%9E%E7%AD%96%E6%9D%AF%2B14%2B%E5%B0%B1%E5%B7%AE%E9%82%A3%E4%B9%88%E4%B8%80%E7%82%B9%E7%82%B9%2B%E9%A1%B9%E7%9B%AE%E8%AF%B4%E6%98%8E.pdf) 2.4 [文本生成之自动标题](https://github.com/JianWenJun/MLDemo/tree/master/NLP/AutoTitle_F) 2.5 [文本生成之对抗神经网络GAN](https://github.com/JianWenJun/MLDemo/blob/master/NLP/GAN%26NLP.md) ##### 码代码不易,欢迎star~ ,谢谢~