Skip to content

Instantly share code, notes, and snippets.

@amirziai
Created September 16, 2015 10:52
Show Gist options
  • Save amirziai/a8f7088255f009893fa8 to your computer and use it in GitHub Desktop.
Save amirziai/a8f7088255f009893fa8 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<b>\n",
"Amir Ziai<br>\n",
"amir@ischool.berkeley.edu<br>\n",
"UC Berkeley MIDS<br>\n",
"Machine learning at scale course<br>\n",
"Week 2 assignment<br>\n",
"September 15, 2015\n",
"</b>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## HW2.0"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<b>Race condition:</b> a problem with parallel processes where improper sequence or mutation of data can result in undesirable results.\n",
"<br><br>\n",
"<b>Example:</b> let's say we have 2 threads that increment a variable. The desired outcome is for one thread to increment and then the second one. But if while the first thread has read the value the second thread has updated the variable the end result may miss one of the increments.\n",
"<br><br>\n",
"<b>MapReduce:</b> Map is to operate on each sub-problem independently with no communication (element-wise) and it's used to solve embarassingly parallel problems. Reduce combines the results of maps. \n",
"<br><br>\n",
"<b>MapReduce vs. Hadoop:</b> Hadoop solves distributed data handling and computation (scalability) as well as fault-tolerance and doesn't burden the programmer with details. \n",
"<br><br>\n",
"<b>What progamming paradigm is Hadoop based on:</b> Functional programming based on higher-order functions (functions that take functions)\n",
"<br><br>\n",
"<b>Example code</b>"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"l : [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]\n",
"l^2 : [0, 1, 4, 9, 16, 25, 36, 49, 64, 81] (mapped)\n",
"sum(l^2): 285 (reduced, or folded left with 0 initial value)\n"
]
}
],
"source": [
"# mapping a list using a function that squares each value\n",
"# reducing or folding left by a function that sums all the mapped values\n",
"l = range(10)\n",
"print 'l : %s' % l\n",
"mapped = map(lambda x: x ** 2, l)\n",
"print 'l^2 : %s (mapped)' % mapped\n",
"reduced = reduce(lambda x, y: x + y, mapped)\n",
"print 'sum(l^2): %s (reduced, or folded left with 0 initial value)' % reduced"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## HW2.1"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### File with N random integers"
]
},
{
"cell_type": "code",
"execution_count": 111,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"import numpy as np\n",
"N = 10000\n",
"\n",
"with open('sort.txt', 'wb') as f:\n",
" for i in np.random.randint(0, 100, N):\n",
" f.write('%s\\t\"NA\"\\n' % i)"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true
},
"source": [
"#### Mapper"
]
},
{
"cell_type": "code",
"execution_count": 96,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Overwriting mapper.py\n"
]
}
],
"source": [
"%%writefile mapper.py\n",
"#!/usr/bin/env python\n",
"\n",
"import sys\n",
"\n",
"for line in sys.stdin:\n",
" print line"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Reducer"
]
},
{
"cell_type": "code",
"execution_count": 97,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Overwriting reducer.py\n"
]
}
],
"source": [
"%%writefile reducer.py\n",
"#!/usr/bin/python\n",
"\n",
"import sys\n",
"\n",
"for line in sys.stdin:\n",
" integer, empty = line.split('\\t', 1)\n",
" print integer"
]
},
{
"cell_type": "code",
"execution_count": 115,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"15/09/16 03:35:21 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable\r\n"
]
}
],
"source": [
"!hdfs dfs -mkdir /user/amir/hw2_1/"
]
},
{
"cell_type": "code",
"execution_count": 116,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"15/09/16 03:35:25 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable\r\n"
]
}
],
"source": [
"!hdfs dfs -put sort.txt /user/amir/hw2_1/"
]
},
{
"cell_type": "code",
"execution_count": 117,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"15/09/16 03:35:29 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable\n",
"Found 1 items\n",
"-rw-r--r-- 1 amir supergroup 79019 2015-09-16 03:35 /user/amir/hw2_1/sort.txt\n"
]
}
],
"source": [
"!hdfs dfs -ls /user/amir/hw2_1/"
]
},
{
"cell_type": "code",
"execution_count": 118,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"15/09/16 03:35:33 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable\n",
"rm: `/user/amir/hw2_1/output/': No such file or directory\n"
]
}
],
"source": [
"!hdfs dfs -rm -r /user/amir/hw2_1/output/"
]
},
{
"cell_type": "code",
"execution_count": 119,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"15/09/16 03:35:38 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable\n",
"15/09/16 03:35:39 INFO Configuration.deprecation: session.id is deprecated. Instead, use dfs.metrics.session-id\n",
"15/09/16 03:35:39 INFO jvm.JvmMetrics: Initializing JVM Metrics with processName=JobTracker, sessionId=\n",
"15/09/16 03:35:39 INFO jvm.JvmMetrics: Cannot initialize JVM Metrics with processName=JobTracker, sessionId= - already initialized\n",
"15/09/16 03:35:39 INFO mapred.FileInputFormat: Total input paths to process : 1\n",
"15/09/16 03:35:39 INFO mapreduce.JobSubmitter: number of splits:1\n",
"15/09/16 03:35:39 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_local1891868690_0001\n",
"15/09/16 03:35:39 INFO mapreduce.Job: The url to track the job: http://localhost:8080/\n",
"15/09/16 03:35:39 INFO mapred.LocalJobRunner: OutputCommitter set in config null\n",
"15/09/16 03:35:39 INFO mapreduce.Job: Running job: job_local1891868690_0001\n",
"15/09/16 03:35:39 INFO mapred.LocalJobRunner: OutputCommitter is org.apache.hadoop.mapred.FileOutputCommitter\n",
"15/09/16 03:35:39 INFO output.FileOutputCommitter: File Output Committer Algorithm version is 1\n",
"15/09/16 03:35:39 INFO mapred.LocalJobRunner: Waiting for map tasks\n",
"15/09/16 03:35:39 INFO mapred.LocalJobRunner: Starting task: attempt_local1891868690_0001_m_000000_0\n",
"15/09/16 03:35:39 INFO output.FileOutputCommitter: File Output Committer Algorithm version is 1\n",
"15/09/16 03:35:39 INFO util.ProcfsBasedProcessTree: ProcfsBasedProcessTree currently is supported only on Linux.\n",
"15/09/16 03:35:39 INFO mapred.Task: Using ResourceCalculatorProcessTree : null\n",
"15/09/16 03:35:39 INFO mapred.MapTask: Processing split: hdfs://localhost:9000/user/amir/hw2_1/sort.txt:0+79019\n",
"15/09/16 03:35:39 INFO mapred.MapTask: numReduceTasks: 1\n",
"15/09/16 03:35:39 INFO mapred.MapTask: (EQUATOR) 0 kvi 26214396(104857584)\n",
"15/09/16 03:35:39 INFO mapred.MapTask: mapreduce.task.io.sort.mb: 100\n",
"15/09/16 03:35:39 INFO mapred.MapTask: soft limit at 83886080\n",
"15/09/16 03:35:39 INFO mapred.MapTask: bufstart = 0; bufvoid = 104857600\n",
"15/09/16 03:35:39 INFO mapred.MapTask: kvstart = 26214396; length = 6553600\n",
"15/09/16 03:35:39 INFO mapred.MapTask: Map output collector class = org.apache.hadoop.mapred.MapTask$MapOutputBuffer\n",
"15/09/16 03:35:39 INFO streaming.PipeMapRed: PipeMapRed exec [/Users/amir/Downloads/./mapper.py]\n",
"15/09/16 03:35:39 INFO Configuration.deprecation: mapred.task.id is deprecated. Instead, use mapreduce.task.attempt.id\n",
"15/09/16 03:35:39 INFO Configuration.deprecation: user.name is deprecated. Instead, use mapreduce.job.user.name\n",
"15/09/16 03:35:39 INFO Configuration.deprecation: map.input.start is deprecated. Instead, use mapreduce.map.input.start\n",
"15/09/16 03:35:39 INFO Configuration.deprecation: mapred.task.is.map is deprecated. Instead, use mapreduce.task.ismap\n",
"15/09/16 03:35:39 INFO Configuration.deprecation: mapred.tip.id is deprecated. Instead, use mapreduce.task.id\n",
"15/09/16 03:35:39 INFO Configuration.deprecation: mapred.skip.on is deprecated. Instead, use mapreduce.job.skiprecords\n",
"15/09/16 03:35:39 INFO Configuration.deprecation: mapred.task.partition is deprecated. Instead, use mapreduce.task.partition\n",
"15/09/16 03:35:39 INFO Configuration.deprecation: map.input.length is deprecated. Instead, use mapreduce.map.input.length\n",
"15/09/16 03:35:39 INFO Configuration.deprecation: mapred.local.dir is deprecated. Instead, use mapreduce.cluster.local.dir\n",
"15/09/16 03:35:39 INFO Configuration.deprecation: mapred.work.output.dir is deprecated. Instead, use mapreduce.task.output.dir\n",
"15/09/16 03:35:39 INFO Configuration.deprecation: map.input.file is deprecated. Instead, use mapreduce.map.input.file\n",
"15/09/16 03:35:39 INFO Configuration.deprecation: mapred.job.id is deprecated. Instead, use mapreduce.job.id\n",
"15/09/16 03:35:40 INFO streaming.PipeMapRed: R/W/S=1/0/0 in:NA [rec/s] out:NA [rec/s]\n",
"15/09/16 03:35:40 INFO streaming.PipeMapRed: R/W/S=10/0/0 in:NA [rec/s] out:NA [rec/s]\n",
"15/09/16 03:35:40 INFO streaming.PipeMapRed: R/W/S=100/0/0 in:NA [rec/s] out:NA [rec/s]\n",
"15/09/16 03:35:40 INFO streaming.PipeMapRed: R/W/S=1000/0/0 in:NA [rec/s] out:NA [rec/s]\n",
"15/09/16 03:35:40 INFO streaming.PipeMapRed: R/W/S=10000/0/0 in:NA [rec/s] out:NA [rec/s]\n",
"15/09/16 03:35:40 INFO streaming.PipeMapRed: Records R/W=10000/1\n",
"15/09/16 03:35:40 INFO streaming.PipeMapRed: MRErrorThread done\n",
"15/09/16 03:35:40 INFO streaming.PipeMapRed: mapRedFinished\n",
"15/09/16 03:35:40 INFO mapred.LocalJobRunner: \n",
"15/09/16 03:35:40 INFO mapred.MapTask: Starting flush of map output\n",
"15/09/16 03:35:40 INFO mapred.MapTask: Spilling map output\n",
"15/09/16 03:35:40 INFO mapred.MapTask: bufstart = 0; bufend = 99019; bufvoid = 104857600\n",
"15/09/16 03:35:40 INFO mapred.MapTask: kvstart = 26214396(104857584); kvend = 26134400(104537600); length = 79997/6553600\n",
"15/09/16 03:35:40 INFO mapred.MapTask: Finished spill 0\n",
"15/09/16 03:35:40 INFO mapred.Task: Task:attempt_local1891868690_0001_m_000000_0 is done. And is in the process of committing\n",
"15/09/16 03:35:40 INFO mapred.LocalJobRunner: Records R/W=10000/1\n",
"15/09/16 03:35:40 INFO mapred.Task: Task 'attempt_local1891868690_0001_m_000000_0' done.\n",
"15/09/16 03:35:40 INFO mapred.LocalJobRunner: Finishing task: attempt_local1891868690_0001_m_000000_0\n",
"15/09/16 03:35:40 INFO mapred.LocalJobRunner: map task executor complete.\n",
"15/09/16 03:35:40 INFO mapred.LocalJobRunner: Waiting for reduce tasks\n",
"15/09/16 03:35:40 INFO mapred.LocalJobRunner: Starting task: attempt_local1891868690_0001_r_000000_0\n",
"15/09/16 03:35:40 INFO output.FileOutputCommitter: File Output Committer Algorithm version is 1\n",
"15/09/16 03:35:40 INFO util.ProcfsBasedProcessTree: ProcfsBasedProcessTree currently is supported only on Linux.\n",
"15/09/16 03:35:40 INFO mapred.Task: Using ResourceCalculatorProcessTree : null\n",
"15/09/16 03:35:40 INFO mapred.ReduceTask: Using ShuffleConsumerPlugin: org.apache.hadoop.mapreduce.task.reduce.Shuffle@1c79f780\n",
"15/09/16 03:35:40 INFO reduce.MergeManagerImpl: MergerManager: memoryLimit=333971456, maxSingleShuffleLimit=83492864, mergeThreshold=220421168, ioSortFactor=10, memToMemMergeOutputsThreshold=10\n",
"15/09/16 03:35:40 INFO reduce.EventFetcher: attempt_local1891868690_0001_r_000000_0 Thread started: EventFetcher for fetching Map Completion Events\n",
"15/09/16 03:35:40 INFO reduce.LocalFetcher: localfetcher#1 about to shuffle output of map attempt_local1891868690_0001_m_000000_0 decomp: 139021 len: 139025 to MEMORY\n",
"15/09/16 03:35:40 INFO reduce.InMemoryMapOutput: Read 139021 bytes from map-output for attempt_local1891868690_0001_m_000000_0\n",
"15/09/16 03:35:40 INFO reduce.MergeManagerImpl: closeInMemoryFile -> map-output of size: 139021, inMemoryMapOutputs.size() -> 1, commitMemory -> 0, usedMemory ->139021\n",
"15/09/16 03:35:40 INFO reduce.EventFetcher: EventFetcher is interrupted.. Returning\n",
"15/09/16 03:35:40 INFO mapred.LocalJobRunner: 1 / 1 copied.\n",
"15/09/16 03:35:40 INFO reduce.MergeManagerImpl: finalMerge called with 1 in-memory map-outputs and 0 on-disk map-outputs\n",
"15/09/16 03:35:40 INFO mapred.Merger: Merging 1 sorted segments\n",
"15/09/16 03:35:40 INFO mapred.Merger: Down to the last merge-pass, with 1 segments left of total size: 139018 bytes\n",
"15/09/16 03:35:40 INFO reduce.MergeManagerImpl: Merged 1 segments, 139021 bytes to disk to satisfy reduce memory limit\n",
"15/09/16 03:35:40 INFO reduce.MergeManagerImpl: Merging 1 files, 139025 bytes from disk\n",
"15/09/16 03:35:40 INFO reduce.MergeManagerImpl: Merging 0 segments, 0 bytes from memory into reduce\n",
"15/09/16 03:35:40 INFO mapred.Merger: Merging 1 sorted segments\n",
"15/09/16 03:35:40 INFO mapred.Merger: Down to the last merge-pass, with 1 segments left of total size: 139018 bytes\n",
"15/09/16 03:35:40 INFO mapred.LocalJobRunner: 1 / 1 copied.\n",
"15/09/16 03:35:40 INFO streaming.PipeMapRed: PipeMapRed exec [/Users/amir/Downloads/./reducer.py]\n",
"15/09/16 03:35:40 INFO Configuration.deprecation: mapred.job.tracker is deprecated. Instead, use mapreduce.jobtracker.address\n",
"15/09/16 03:35:40 INFO Configuration.deprecation: mapred.map.tasks is deprecated. Instead, use mapreduce.job.maps\n",
"15/09/16 03:35:40 INFO streaming.PipeMapRed: R/W/S=1/0/0 in:NA [rec/s] out:NA [rec/s]\n",
"15/09/16 03:35:40 INFO streaming.PipeMapRed: R/W/S=10/0/0 in:NA [rec/s] out:NA [rec/s]\n",
"15/09/16 03:35:40 INFO streaming.PipeMapRed: R/W/S=100/0/0 in:NA [rec/s] out:NA [rec/s]\n",
"15/09/16 03:35:40 INFO streaming.PipeMapRed: R/W/S=1000/0/0 in:NA [rec/s] out:NA [rec/s]\n",
"15/09/16 03:35:40 INFO streaming.PipeMapRed: R/W/S=10000/0/0 in:NA [rec/s] out:NA [rec/s]\n",
"15/09/16 03:35:40 INFO streaming.PipeMapRed: Records R/W=20000/1\n",
"15/09/16 03:35:40 INFO streaming.PipeMapRed: MRErrorThread done\n",
"15/09/16 03:35:40 INFO streaming.PipeMapRed: mapRedFinished\n",
"15/09/16 03:35:40 INFO mapred.Task: Task:attempt_local1891868690_0001_r_000000_0 is done. And is in the process of committing\n",
"15/09/16 03:35:40 INFO mapred.LocalJobRunner: 1 / 1 copied.\n",
"15/09/16 03:35:40 INFO mapred.Task: Task attempt_local1891868690_0001_r_000000_0 is allowed to commit now\n",
"15/09/16 03:35:40 INFO output.FileOutputCommitter: Saved output of task 'attempt_local1891868690_0001_r_000000_0' to hdfs://localhost:9000/user/amir/hw2_1/output/_temporary/0/task_local1891868690_0001_r_000000\n",
"15/09/16 03:35:40 INFO mapred.LocalJobRunner: Records R/W=20000/1 > reduce\n",
"15/09/16 03:35:40 INFO mapred.Task: Task 'attempt_local1891868690_0001_r_000000_0' done.\n",
"15/09/16 03:35:40 INFO mapred.LocalJobRunner: Finishing task: attempt_local1891868690_0001_r_000000_0\n",
"15/09/16 03:35:40 INFO mapred.LocalJobRunner: reduce task executor complete.\n",
"15/09/16 03:35:40 INFO mapreduce.Job: Job job_local1891868690_0001 running in uber mode : false\n",
"15/09/16 03:35:40 INFO mapreduce.Job: map 100% reduce 100%\n",
"15/09/16 03:35:40 INFO mapreduce.Job: Job job_local1891868690_0001 completed successfully\n",
"15/09/16 03:35:40 INFO mapreduce.Job: Counters: 35\n",
"\tFile System Counters\n",
"\t\tFILE: Number of bytes read=490144\n",
"\t\tFILE: Number of bytes written=1212829\n",
"\t\tFILE: Number of read operations=0\n",
"\t\tFILE: Number of large read operations=0\n",
"\t\tFILE: Number of write operations=0\n",
"\t\tHDFS: Number of bytes read=158038\n",
"\t\tHDFS: Number of bytes written=59019\n",
"\t\tHDFS: Number of read operations=13\n",
"\t\tHDFS: Number of large read operations=0\n",
"\t\tHDFS: Number of write operations=4\n",
"\tMap-Reduce Framework\n",
"\t\tMap input records=10000\n",
"\t\tMap output records=20000\n",
"\t\tMap output bytes=99019\n",
"\t\tMap output materialized bytes=139025\n",
"\t\tInput split bytes=98\n",
"\t\tCombine input records=0\n",
"\t\tCombine output records=0\n",
"\t\tReduce input groups=101\n",
"\t\tReduce shuffle bytes=139025\n",
"\t\tReduce input records=20000\n",
"\t\tReduce output records=20000\n",
"\t\tSpilled Records=40000\n",
"\t\tShuffled Maps =1\n",
"\t\tFailed Shuffles=0\n",
"\t\tMerged Map outputs=1\n",
"\t\tGC time elapsed (ms)=9\n",
"\t\tTotal committed heap usage (bytes)=582483968\n",
"\tShuffle Errors\n",
"\t\tBAD_ID=0\n",
"\t\tCONNECTION=0\n",
"\t\tIO_ERROR=0\n",
"\t\tWRONG_LENGTH=0\n",
"\t\tWRONG_MAP=0\n",
"\t\tWRONG_REDUCE=0\n",
"\tFile Input Format Counters \n",
"\t\tBytes Read=79019\n",
"\tFile Output Format Counters \n",
"\t\tBytes Written=59019\n",
"15/09/16 03:35:40 INFO streaming.StreamJob: Output directory: /user/amir/hw2_1/output/\n"
]
}
],
"source": [
"!hadoop jar /usr/local/Cellar/hadoop/2.7.1/libexec/share/hadoop/tools/lib/hadoop-streaming-2.7.1.jar -mapper mapper.py -reducer reducer.py -input /user/amir/hw2_1/sort.txt -output /user/amir/hw2_1/output/"
]
},
{
"cell_type": "code",
"execution_count": 120,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"15/09/16 03:35:45 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n"
]
}
],
"source": [
"!hdfs dfs -cat /user/amir/hw2_1/output/part-00000"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Discussion"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Since keys are sorted prior to reducing this would've worked for a smaller file (one reducer). An extra step (combiner) is required."
]
},
{
"cell_type": "code",
"execution_count": 121,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"15/09/16 03:39:14 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable\n",
"15/09/16 03:39:14 INFO fs.TrashPolicyDefault: Namenode trash configuration: Deletion interval = 0 minutes, Emptier interval = 0 minutes.\n",
"Deleted /user/amir/hw2_1/output\n"
]
}
],
"source": [
"!hdfs dfs -rm -r /user/amir/hw2_1/output/"
]
},
{
"cell_type": "code",
"execution_count": 122,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"15/09/16 03:39:26 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable\n",
"15/09/16 03:39:27 INFO Configuration.deprecation: session.id is deprecated. Instead, use dfs.metrics.session-id\n",
"15/09/16 03:39:27 INFO jvm.JvmMetrics: Initializing JVM Metrics with processName=JobTracker, sessionId=\n",
"15/09/16 03:39:27 INFO jvm.JvmMetrics: Cannot initialize JVM Metrics with processName=JobTracker, sessionId= - already initialized\n",
"15/09/16 03:39:27 INFO mapred.FileInputFormat: Total input paths to process : 1\n",
"15/09/16 03:39:27 INFO mapreduce.JobSubmitter: number of splits:1\n",
"15/09/16 03:39:27 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_local1437278168_0001\n",
"15/09/16 03:39:27 INFO mapreduce.Job: The url to track the job: http://localhost:8080/\n",
"15/09/16 03:39:27 INFO mapred.LocalJobRunner: OutputCommitter set in config null\n",
"15/09/16 03:39:27 INFO mapreduce.Job: Running job: job_local1437278168_0001\n",
"15/09/16 03:39:27 INFO mapred.LocalJobRunner: OutputCommitter is org.apache.hadoop.mapred.FileOutputCommitter\n",
"15/09/16 03:39:27 INFO output.FileOutputCommitter: File Output Committer Algorithm version is 1\n",
"15/09/16 03:39:27 INFO mapred.LocalJobRunner: Waiting for map tasks\n",
"15/09/16 03:39:27 INFO mapred.LocalJobRunner: Starting task: attempt_local1437278168_0001_m_000000_0\n",
"15/09/16 03:39:27 INFO output.FileOutputCommitter: File Output Committer Algorithm version is 1\n",
"15/09/16 03:39:27 INFO util.ProcfsBasedProcessTree: ProcfsBasedProcessTree currently is supported only on Linux.\n",
"15/09/16 03:39:27 INFO mapred.Task: Using ResourceCalculatorProcessTree : null\n",
"15/09/16 03:39:27 INFO mapred.MapTask: Processing split: hdfs://localhost:9000/user/amir/hw2_1/sort.txt:0+79019\n",
"15/09/16 03:39:27 INFO mapred.MapTask: numReduceTasks: 1\n",
"15/09/16 03:39:27 INFO mapred.MapTask: (EQUATOR) 0 kvi 26214396(104857584)\n",
"15/09/16 03:39:27 INFO mapred.MapTask: mapreduce.task.io.sort.mb: 100\n",
"15/09/16 03:39:27 INFO mapred.MapTask: soft limit at 83886080\n",
"15/09/16 03:39:27 INFO mapred.MapTask: bufstart = 0; bufvoid = 104857600\n",
"15/09/16 03:39:27 INFO mapred.MapTask: kvstart = 26214396; length = 6553600\n",
"15/09/16 03:39:27 INFO mapred.MapTask: Map output collector class = org.apache.hadoop.mapred.MapTask$MapOutputBuffer\n",
"15/09/16 03:39:27 INFO streaming.PipeMapRed: PipeMapRed exec [/Users/amir/Downloads/./mapper.py]\n",
"15/09/16 03:39:28 INFO Configuration.deprecation: mapred.task.id is deprecated. Instead, use mapreduce.task.attempt.id\n",
"15/09/16 03:39:28 INFO Configuration.deprecation: user.name is deprecated. Instead, use mapreduce.job.user.name\n",
"15/09/16 03:39:28 INFO Configuration.deprecation: map.input.start is deprecated. Instead, use mapreduce.map.input.start\n",
"15/09/16 03:39:28 INFO Configuration.deprecation: mapred.task.is.map is deprecated. Instead, use mapreduce.task.ismap\n",
"15/09/16 03:39:28 INFO Configuration.deprecation: mapred.tip.id is deprecated. Instead, use mapreduce.task.id\n",
"15/09/16 03:39:28 INFO Configuration.deprecation: mapred.skip.on is deprecated. Instead, use mapreduce.job.skiprecords\n",
"15/09/16 03:39:28 INFO Configuration.deprecation: mapred.task.partition is deprecated. Instead, use mapreduce.task.partition\n",
"15/09/16 03:39:28 INFO Configuration.deprecation: map.input.length is deprecated. Instead, use mapreduce.map.input.length\n",
"15/09/16 03:39:28 INFO Configuration.deprecation: mapred.local.dir is deprecated. Instead, use mapreduce.cluster.local.dir\n",
"15/09/16 03:39:28 INFO Configuration.deprecation: mapred.work.output.dir is deprecated. Instead, use mapreduce.task.output.dir\n",
"15/09/16 03:39:28 INFO Configuration.deprecation: map.input.file is deprecated. Instead, use mapreduce.map.input.file\n",
"15/09/16 03:39:28 INFO Configuration.deprecation: mapred.job.id is deprecated. Instead, use mapreduce.job.id\n",
"15/09/16 03:39:28 INFO streaming.PipeMapRed: R/W/S=1/0/0 in:NA [rec/s] out:NA [rec/s]\n",
"15/09/16 03:39:28 INFO streaming.PipeMapRed: R/W/S=10/0/0 in:NA [rec/s] out:NA [rec/s]\n",
"15/09/16 03:39:28 INFO streaming.PipeMapRed: R/W/S=100/0/0 in:NA [rec/s] out:NA [rec/s]\n",
"15/09/16 03:39:28 INFO streaming.PipeMapRed: R/W/S=1000/0/0 in:NA [rec/s] out:NA [rec/s]\n",
"15/09/16 03:39:28 INFO streaming.PipeMapRed: R/W/S=10000/0/0 in:NA [rec/s] out:NA [rec/s]\n",
"15/09/16 03:39:28 INFO streaming.PipeMapRed: Records R/W=10000/1\n",
"15/09/16 03:39:28 INFO streaming.PipeMapRed: MRErrorThread done\n",
"15/09/16 03:39:28 INFO streaming.PipeMapRed: mapRedFinished\n",
"15/09/16 03:39:28 INFO mapred.LocalJobRunner: \n",
"15/09/16 03:39:28 INFO mapred.MapTask: Starting flush of map output\n",
"15/09/16 03:39:28 INFO mapred.MapTask: Spilling map output\n",
"15/09/16 03:39:28 INFO mapred.MapTask: bufstart = 0; bufend = 99019; bufvoid = 104857600\n",
"15/09/16 03:39:28 INFO mapred.MapTask: kvstart = 26214396(104857584); kvend = 26134400(104537600); length = 79997/6553600\n",
"15/09/16 03:39:28 INFO streaming.PipeMapRed: PipeMapRed exec [/Users/amir/Downloads/./reducer.py]\n",
"15/09/16 03:39:28 INFO Configuration.deprecation: mapred.skip.map.auto.incr.proc.count is deprecated. Instead, use mapreduce.map.skip.proc-count.auto-incr\n",
"15/09/16 03:39:28 INFO streaming.PipeMapRed: R/W/S=1/0/0 in:NA [rec/s] out:NA [rec/s]\n",
"15/09/16 03:39:28 INFO streaming.PipeMapRed: R/W/S=10/0/0 in:NA [rec/s] out:NA [rec/s]\n",
"15/09/16 03:39:28 INFO streaming.PipeMapRed: R/W/S=100/0/0 in:NA [rec/s] out:NA [rec/s]\n",
"15/09/16 03:39:28 INFO streaming.PipeMapRed: R/W/S=1000/0/0 in:NA [rec/s] out:NA [rec/s]\n",
"15/09/16 03:39:28 INFO streaming.PipeMapRed: R/W/S=10000/0/0 in:NA [rec/s] out:NA [rec/s]\n",
"15/09/16 03:39:28 INFO streaming.PipeMapRed: Records R/W=20000/1\n",
"15/09/16 03:39:28 INFO streaming.PipeMapRed: MRErrorThread done\n",
"15/09/16 03:39:28 INFO streaming.PipeMapRed: mapRedFinished\n",
"15/09/16 03:39:28 INFO mapred.MapTask: Finished spill 0\n",
"15/09/16 03:39:28 INFO mapred.Task: Task:attempt_local1437278168_0001_m_000000_0 is done. And is in the process of committing\n",
"15/09/16 03:39:28 INFO mapred.LocalJobRunner: Records R/W=20000/1\n",
"15/09/16 03:39:28 INFO mapred.Task: Task 'attempt_local1437278168_0001_m_000000_0' done.\n",
"15/09/16 03:39:28 INFO mapred.LocalJobRunner: Finishing task: attempt_local1437278168_0001_m_000000_0\n",
"15/09/16 03:39:28 INFO mapred.LocalJobRunner: map task executor complete.\n",
"15/09/16 03:39:28 INFO mapred.LocalJobRunner: Waiting for reduce tasks\n",
"15/09/16 03:39:28 INFO mapred.LocalJobRunner: Starting task: attempt_local1437278168_0001_r_000000_0\n",
"15/09/16 03:39:28 INFO output.FileOutputCommitter: File Output Committer Algorithm version is 1\n",
"15/09/16 03:39:28 INFO util.ProcfsBasedProcessTree: ProcfsBasedProcessTree currently is supported only on Linux.\n",
"15/09/16 03:39:28 INFO mapred.Task: Using ResourceCalculatorProcessTree : null\n",
"15/09/16 03:39:28 INFO mapred.ReduceTask: Using ShuffleConsumerPlugin: org.apache.hadoop.mapreduce.task.reduce.Shuffle@6a7ffd16\n",
"15/09/16 03:39:28 INFO reduce.MergeManagerImpl: MergerManager: memoryLimit=333971456, maxSingleShuffleLimit=83492864, mergeThreshold=220421168, ioSortFactor=10, memToMemMergeOutputsThreshold=10\n",
"15/09/16 03:39:28 INFO reduce.EventFetcher: attempt_local1437278168_0001_r_000000_0 Thread started: EventFetcher for fetching Map Completion Events\n",
"15/09/16 03:39:28 INFO reduce.LocalFetcher: localfetcher#1 about to shuffle output of map attempt_local1437278168_0001_m_000000_0 decomp: 99021 len: 99025 to MEMORY\n",
"15/09/16 03:39:28 INFO reduce.InMemoryMapOutput: Read 99021 bytes from map-output for attempt_local1437278168_0001_m_000000_0\n",
"15/09/16 03:39:28 INFO reduce.MergeManagerImpl: closeInMemoryFile -> map-output of size: 99021, inMemoryMapOutputs.size() -> 1, commitMemory -> 0, usedMemory ->99021\n",
"15/09/16 03:39:28 INFO reduce.EventFetcher: EventFetcher is interrupted.. Returning\n",
"15/09/16 03:39:28 INFO mapred.LocalJobRunner: 1 / 1 copied.\n",
"15/09/16 03:39:28 INFO reduce.MergeManagerImpl: finalMerge called with 1 in-memory map-outputs and 0 on-disk map-outputs\n",
"15/09/16 03:39:28 INFO mapred.Merger: Merging 1 sorted segments\n",
"15/09/16 03:39:28 INFO mapred.Merger: Down to the last merge-pass, with 1 segments left of total size: 99018 bytes\n",
"15/09/16 03:39:28 INFO reduce.MergeManagerImpl: Merged 1 segments, 99021 bytes to disk to satisfy reduce memory limit\n",
"15/09/16 03:39:28 INFO reduce.MergeManagerImpl: Merging 1 files, 99025 bytes from disk\n",
"15/09/16 03:39:28 INFO reduce.MergeManagerImpl: Merging 0 segments, 0 bytes from memory into reduce\n",
"15/09/16 03:39:28 INFO mapred.Merger: Merging 1 sorted segments\n",
"15/09/16 03:39:28 INFO mapred.Merger: Down to the last merge-pass, with 1 segments left of total size: 99018 bytes\n",
"15/09/16 03:39:28 INFO mapred.LocalJobRunner: 1 / 1 copied.\n",
"15/09/16 03:39:28 INFO streaming.PipeMapRed: PipeMapRed exec [/Users/amir/Downloads/./reducer.py]\n",
"15/09/16 03:39:28 INFO Configuration.deprecation: mapred.job.tracker is deprecated. Instead, use mapreduce.jobtracker.address\n",
"15/09/16 03:39:28 INFO Configuration.deprecation: mapred.map.tasks is deprecated. Instead, use mapreduce.job.maps\n",
"15/09/16 03:39:28 INFO streaming.PipeMapRed: R/W/S=1/0/0 in:NA [rec/s] out:NA [rec/s]\n",
"15/09/16 03:39:28 INFO streaming.PipeMapRed: R/W/S=10/0/0 in:NA [rec/s] out:NA [rec/s]\n",
"15/09/16 03:39:28 INFO streaming.PipeMapRed: R/W/S=100/0/0 in:NA [rec/s] out:NA [rec/s]\n",
"15/09/16 03:39:28 INFO streaming.PipeMapRed: R/W/S=1000/0/0 in:NA [rec/s] out:NA [rec/s]\n",
"15/09/16 03:39:28 INFO streaming.PipeMapRed: R/W/S=10000/0/0 in:NA [rec/s] out:NA [rec/s]\n",
"15/09/16 03:39:28 INFO streaming.PipeMapRed: Records R/W=20000/1\n",
"15/09/16 03:39:28 INFO streaming.PipeMapRed: MRErrorThread done\n",
"15/09/16 03:39:28 INFO streaming.PipeMapRed: mapRedFinished\n",
"15/09/16 03:39:28 INFO mapred.Task: Task:attempt_local1437278168_0001_r_000000_0 is done. And is in the process of committing\n",
"15/09/16 03:39:28 INFO mapred.LocalJobRunner: 1 / 1 copied.\n",
"15/09/16 03:39:28 INFO mapred.Task: Task attempt_local1437278168_0001_r_000000_0 is allowed to commit now\n",
"15/09/16 03:39:28 INFO output.FileOutputCommitter: Saved output of task 'attempt_local1437278168_0001_r_000000_0' to hdfs://localhost:9000/user/amir/hw2_1/output/_temporary/0/task_local1437278168_0001_r_000000\n",
"15/09/16 03:39:28 INFO mapred.LocalJobRunner: Records R/W=20000/1 > reduce\n",
"15/09/16 03:39:28 INFO mapred.Task: Task 'attempt_local1437278168_0001_r_000000_0' done.\n",
"15/09/16 03:39:28 INFO mapred.LocalJobRunner: Finishing task: attempt_local1437278168_0001_r_000000_0\n",
"15/09/16 03:39:28 INFO mapred.LocalJobRunner: reduce task executor complete.\n",
"15/09/16 03:39:28 INFO mapreduce.Job: Job job_local1437278168_0001 running in uber mode : false\n",
"15/09/16 03:39:28 INFO mapreduce.Job: map 100% reduce 100%\n",
"15/09/16 03:39:28 INFO mapreduce.Job: Job job_local1437278168_0001 completed successfully\n",
"15/09/16 03:39:28 INFO mapreduce.Job: Counters: 35\n",
"\tFile System Counters\n",
"\t\tFILE: Number of bytes read=410144\n",
"\t\tFILE: Number of bytes written=1094413\n",
"\t\tFILE: Number of read operations=0\n",
"\t\tFILE: Number of large read operations=0\n",
"\t\tFILE: Number of write operations=0\n",
"\t\tHDFS: Number of bytes read=158038\n",
"\t\tHDFS: Number of bytes written=59019\n",
"\t\tHDFS: Number of read operations=13\n",
"\t\tHDFS: Number of large read operations=0\n",
"\t\tHDFS: Number of write operations=4\n",
"\tMap-Reduce Framework\n",
"\t\tMap input records=10000\n",
"\t\tMap output records=20000\n",
"\t\tMap output bytes=99019\n",
"\t\tMap output materialized bytes=99025\n",
"\t\tInput split bytes=98\n",
"\t\tCombine input records=20000\n",
"\t\tCombine output records=20000\n",
"\t\tReduce input groups=101\n",
"\t\tReduce shuffle bytes=99025\n",
"\t\tReduce input records=20000\n",
"\t\tReduce output records=20000\n",
"\t\tSpilled Records=40000\n",
"\t\tShuffled Maps =1\n",
"\t\tFailed Shuffles=0\n",
"\t\tMerged Map outputs=1\n",
"\t\tGC time elapsed (ms)=10\n",
"\t\tTotal committed heap usage (bytes)=582483968\n",
"\tShuffle Errors\n",
"\t\tBAD_ID=0\n",
"\t\tCONNECTION=0\n",
"\t\tIO_ERROR=0\n",
"\t\tWRONG_LENGTH=0\n",
"\t\tWRONG_MAP=0\n",
"\t\tWRONG_REDUCE=0\n",
"\tFile Input Format Counters \n",
"\t\tBytes Read=79019\n",
"\tFile Output Format Counters \n",
"\t\tBytes Written=59019\n",
"15/09/16 03:39:28 INFO streaming.StreamJob: Output directory: /user/amir/hw2_1/output/\n"
]
}
],
"source": [
"!hadoop jar /usr/local/Cellar/hadoop/2.7.1/libexec/share/hadoop/tools/lib/hadoop-streaming-2.7.1.jar -mapper mapper.py -reducer reducer.py -combiner reducer.py -input /user/amir/hw2_1/sort.txt -output /user/amir/hw2_1/output/"
]
},
{
"cell_type": "code",
"execution_count": 123,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"15/09/16 03:39:39 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"0\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"1\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"10\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"11\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"12\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"13\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"14\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"15\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"16\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"17\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"18\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"19\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"2\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"20\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"21\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"22\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"23\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"24\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"25\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"26\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"27\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"28\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"29\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"3\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"30\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"31\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"32\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"33\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"34\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"35\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"36\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"37\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"38\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"39\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"4\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"40\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"41\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"42\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"43\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"44\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"45\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"46\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"47\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"48\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"49\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"5\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"50\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"51\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"52\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"53\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"54\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"55\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"56\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"57\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"58\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"59\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"6\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"60\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"61\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"62\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"63\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"64\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"65\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"66\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"67\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"68\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"69\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"7\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"70\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"71\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"72\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"73\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"74\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"75\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"76\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"77\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"78\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"79\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"8\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"80\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"81\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"82\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"83\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"84\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"85\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"86\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"87\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"88\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"89\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"9\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"90\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"91\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"92\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"93\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"94\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"95\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"96\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"97\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"98\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n",
"99\t\n"
]
}
],
"source": [
"!hdfs dfs -cat /user/amir/hw2_1/output/part-00000"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Discussion"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"With the addition of a new combiner the results are now correctly sorted"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## HW2.2"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true
},
"source": [
"#### Mapper"
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Overwriting mapper.py\n"
]
}
],
"source": [
"%%writefile mapper.py\n",
"#!/usr/bin/env python\n",
"\n",
"import sys\n",
"\n",
"word = sys.argv[1]\n",
"\n",
"# input comes from STDIN (standard input)\n",
"for line in sys.stdin:\n",
" # remove leading and trailing whitespace\n",
" line = line.strip()\n",
" # split the line into words\n",
" \n",
" if word in line:\n",
" print '%s\\t%s' % (word, 1)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Reducer"
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Overwriting reducer.py\n"
]
}
],
"source": [
"%%writefile reducer.py\n",
"#!/usr/bin/python\n",
"from operator import itemgetter\n",
"import sys\n",
"\n",
"current_word = None\n",
"current_count = 0\n",
"word = None\n",
"\n",
"# input comes from STDIN\n",
"for line in sys.stdin:\n",
" # remove leading and trailing whitespace\n",
" line = line.strip()\n",
"\n",
" # parse the input we got from mapper.py\n",
" word, count = line.split('\\t', 1)\n",
"\n",
" # convert count (currently a string) to int\n",
" try:\n",
" count = int(count)\n",
" except ValueError:\n",
" # count was not a number, so silently\n",
" # ignore/discard this line\n",
" continue\n",
"\n",
" # this IF-switch only works because Hadoop sorts map output\n",
" # by key (here: word) before it is passed to the reducer\n",
" if current_word == word:\n",
" current_count += count\n",
" else:\n",
" if current_word:\n",
" # write result to STDOUT\n",
" print '%s\\t%s' % (current_word, current_count)\n",
" current_count = count\n",
" current_word = word\n",
"\n",
"# do not forget to output the last word if needed!\n",
"if current_word == word:\n",
" print '%s\\t%s' % (current_word, current_count)"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"!chmod a+x mapper.py\n",
"!chmod a+x reducer.py"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Put in hdfs"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"import os\n",
"os.chdir('/Users/amir/Downloads/')"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"15/09/16 02:38:20 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable\n",
"Found 4 items\n",
"-rw-r--r-- 1 amir supergroup 1428841 2015-09-15 00:27 5000-8.txt\n",
"drwxr-xr-x - amir supergroup 0 2015-09-15 00:39 output\n",
"-rw-r--r-- 1 amir supergroup 674570 2015-09-15 00:21 pg20417.txt\n",
"-rw-r--r-- 1 amir supergroup 1573151 2015-09-15 00:27 pg4300.txt\n"
]
}
],
"source": [
"!hdfs dfs -ls"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"15/09/16 02:39:18 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable\r\n"
]
}
],
"source": [
"!hdfs dfs -mkdir -p /user/amir/hw2_2/"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"15/09/16 02:39:27 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable\n",
"Found 5 items\n",
"-rw-r--r-- 1 amir supergroup 1428841 2015-09-15 00:27 5000-8.txt\n",
"drwxr-xr-x - amir supergroup 0 2015-09-16 02:39 hw2_2\n",
"drwxr-xr-x - amir supergroup 0 2015-09-15 00:39 output\n",
"-rw-r--r-- 1 amir supergroup 674570 2015-09-15 00:21 pg20417.txt\n",
"-rw-r--r-- 1 amir supergroup 1573151 2015-09-15 00:27 pg4300.txt\n"
]
}
],
"source": [
"!hdfs dfs -ls"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"15/09/16 02:42:38 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable\r\n"
]
}
],
"source": [
"!hdfs dfs -put enronemail_1h.txt /user/amir/hw2_2/"
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"15/09/16 02:50:55 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable\n",
"Found 3 items\n",
"-rw-r--r-- 1 amir supergroup 203978 2015-09-16 02:42 /user/amir/hw2_2/enronemail_1h.txt\n",
"drwxr-xr-x - amir supergroup 0 2015-09-16 02:46 /user/amir/hw2_2/output\n",
"drwxr-xr-x - amir supergroup 0 2015-09-16 02:50 /user/amir/hw2_2/output2\n"
]
}
],
"source": [
"!hdfs dfs -ls /user/amir/hw2_2/"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Execute"
]
},
{
"cell_type": "code",
"execution_count": 47,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"15/09/16 02:52:52 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable\n",
"rm: `/user/amir/hw2_2/output': No such file or directory\n"
]
}
],
"source": [
"!hdfs dfs -rm -r /user/amir/hw2_2/output"
]
},
{
"cell_type": "code",
"execution_count": 48,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"15/09/16 02:53:03 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable\n",
"15/09/16 02:53:04 INFO Configuration.deprecation: session.id is deprecated. Instead, use dfs.metrics.session-id\n",
"15/09/16 02:53:04 INFO jvm.JvmMetrics: Initializing JVM Metrics with processName=JobTracker, sessionId=\n",
"15/09/16 02:53:04 INFO jvm.JvmMetrics: Cannot initialize JVM Metrics with processName=JobTracker, sessionId= - already initialized\n",
"15/09/16 02:53:04 INFO mapred.FileInputFormat: Total input paths to process : 1\n",
"15/09/16 02:53:04 INFO mapreduce.JobSubmitter: number of splits:1\n",
"15/09/16 02:53:05 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_local954943400_0001\n",
"15/09/16 02:53:05 INFO mapreduce.Job: The url to track the job: http://localhost:8080/\n",
"15/09/16 02:53:05 INFO mapred.LocalJobRunner: OutputCommitter set in config null\n",
"15/09/16 02:53:05 INFO mapreduce.Job: Running job: job_local954943400_0001\n",
"15/09/16 02:53:05 INFO mapred.LocalJobRunner: OutputCommitter is org.apache.hadoop.mapred.FileOutputCommitter\n",
"15/09/16 02:53:05 INFO output.FileOutputCommitter: File Output Committer Algorithm version is 1\n",
"15/09/16 02:53:05 INFO mapred.LocalJobRunner: Waiting for map tasks\n",
"15/09/16 02:53:05 INFO mapred.LocalJobRunner: Starting task: attempt_local954943400_0001_m_000000_0\n",
"15/09/16 02:53:05 INFO output.FileOutputCommitter: File Output Committer Algorithm version is 1\n",
"15/09/16 02:53:05 INFO util.ProcfsBasedProcessTree: ProcfsBasedProcessTree currently is supported only on Linux.\n",
"15/09/16 02:53:05 INFO mapred.Task: Using ResourceCalculatorProcessTree : null\n",
"15/09/16 02:53:05 INFO mapred.MapTask: Processing split: hdfs://localhost:9000/user/amir/hw2_2/enronemail_1h.txt:0+203978\n",
"15/09/16 02:53:05 INFO mapred.MapTask: numReduceTasks: 1\n",
"15/09/16 02:53:05 INFO mapred.MapTask: (EQUATOR) 0 kvi 26214396(104857584)\n",
"15/09/16 02:53:05 INFO mapred.MapTask: mapreduce.task.io.sort.mb: 100\n",
"15/09/16 02:53:05 INFO mapred.MapTask: soft limit at 83886080\n",
"15/09/16 02:53:05 INFO mapred.MapTask: bufstart = 0; bufvoid = 104857600\n",
"15/09/16 02:53:05 INFO mapred.MapTask: kvstart = 26214396; length = 6553600\n",
"15/09/16 02:53:05 INFO mapred.MapTask: Map output collector class = org.apache.hadoop.mapred.MapTask$MapOutputBuffer\n",
"15/09/16 02:53:05 INFO streaming.PipeMapRed: PipeMapRed exec [/Users/amir/Downloads/./mapper.py, assistance]\n",
"15/09/16 02:53:05 INFO Configuration.deprecation: mapred.task.id is deprecated. Instead, use mapreduce.task.attempt.id\n",
"15/09/16 02:53:05 INFO Configuration.deprecation: user.name is deprecated. Instead, use mapreduce.job.user.name\n",
"15/09/16 02:53:05 INFO Configuration.deprecation: map.input.start is deprecated. Instead, use mapreduce.map.input.start\n",
"15/09/16 02:53:05 INFO Configuration.deprecation: mapred.task.is.map is deprecated. Instead, use mapreduce.task.ismap\n",
"15/09/16 02:53:05 INFO Configuration.deprecation: mapred.tip.id is deprecated. Instead, use mapreduce.task.id\n",
"15/09/16 02:53:05 INFO Configuration.deprecation: mapred.skip.on is deprecated. Instead, use mapreduce.job.skiprecords\n",
"15/09/16 02:53:05 INFO Configuration.deprecation: mapred.task.partition is deprecated. Instead, use mapreduce.task.partition\n",
"15/09/16 02:53:05 INFO Configuration.deprecation: map.input.length is deprecated. Instead, use mapreduce.map.input.length\n",
"15/09/16 02:53:05 INFO Configuration.deprecation: mapred.local.dir is deprecated. Instead, use mapreduce.cluster.local.dir\n",
"15/09/16 02:53:05 INFO Configuration.deprecation: mapred.work.output.dir is deprecated. Instead, use mapreduce.task.output.dir\n",
"15/09/16 02:53:05 INFO Configuration.deprecation: map.input.file is deprecated. Instead, use mapreduce.map.input.file\n",
"15/09/16 02:53:05 INFO Configuration.deprecation: mapred.job.id is deprecated. Instead, use mapreduce.job.id\n",
"15/09/16 02:53:05 INFO streaming.PipeMapRed: R/W/S=1/0/0 in:NA [rec/s] out:NA [rec/s]\n",
"15/09/16 02:53:05 INFO streaming.PipeMapRed: R/W/S=10/0/0 in:NA [rec/s] out:NA [rec/s]\n",
"15/09/16 02:53:05 INFO streaming.PipeMapRed: R/W/S=100/0/0 in:NA [rec/s] out:NA [rec/s]\n",
"15/09/16 02:53:05 INFO streaming.PipeMapRed: MRErrorThread done\n",
"15/09/16 02:53:05 INFO streaming.PipeMapRed: Records R/W=100/1\n",
"15/09/16 02:53:05 INFO streaming.PipeMapRed: mapRedFinished\n",
"15/09/16 02:53:05 INFO mapred.LocalJobRunner: \n",
"15/09/16 02:53:05 INFO mapred.MapTask: Starting flush of map output\n",
"15/09/16 02:53:05 INFO mapred.MapTask: Spilling map output\n",
"15/09/16 02:53:05 INFO mapred.MapTask: bufstart = 0; bufend = 104; bufvoid = 104857600\n",
"15/09/16 02:53:05 INFO mapred.MapTask: kvstart = 26214396(104857584); kvend = 26214368(104857472); length = 29/6553600\n",
"15/09/16 02:53:05 INFO mapred.MapTask: Finished spill 0\n",
"15/09/16 02:53:05 INFO mapred.Task: Task:attempt_local954943400_0001_m_000000_0 is done. And is in the process of committing\n",
"15/09/16 02:53:05 INFO mapred.LocalJobRunner: Records R/W=100/1\n",
"15/09/16 02:53:05 INFO mapred.Task: Task 'attempt_local954943400_0001_m_000000_0' done.\n",
"15/09/16 02:53:05 INFO mapred.LocalJobRunner: Finishing task: attempt_local954943400_0001_m_000000_0\n",
"15/09/16 02:53:05 INFO mapred.LocalJobRunner: map task executor complete.\n",
"15/09/16 02:53:05 INFO mapred.LocalJobRunner: Waiting for reduce tasks\n",
"15/09/16 02:53:05 INFO mapred.LocalJobRunner: Starting task: attempt_local954943400_0001_r_000000_0\n",
"15/09/16 02:53:05 INFO output.FileOutputCommitter: File Output Committer Algorithm version is 1\n",
"15/09/16 02:53:05 INFO util.ProcfsBasedProcessTree: ProcfsBasedProcessTree currently is supported only on Linux.\n",
"15/09/16 02:53:05 INFO mapred.Task: Using ResourceCalculatorProcessTree : null\n",
"15/09/16 02:53:05 INFO mapred.ReduceTask: Using ShuffleConsumerPlugin: org.apache.hadoop.mapreduce.task.reduce.Shuffle@213e02ee\n",
"15/09/16 02:53:05 INFO reduce.MergeManagerImpl: MergerManager: memoryLimit=333971456, maxSingleShuffleLimit=83492864, mergeThreshold=220421168, ioSortFactor=10, memToMemMergeOutputsThreshold=10\n",
"15/09/16 02:53:05 INFO reduce.EventFetcher: attempt_local954943400_0001_r_000000_0 Thread started: EventFetcher for fetching Map Completion Events\n",
"15/09/16 02:53:05 INFO reduce.LocalFetcher: localfetcher#1 about to shuffle output of map attempt_local954943400_0001_m_000000_0 decomp: 122 len: 126 to MEMORY\n",
"15/09/16 02:53:05 INFO reduce.InMemoryMapOutput: Read 122 bytes from map-output for attempt_local954943400_0001_m_000000_0\n",
"15/09/16 02:53:05 INFO reduce.MergeManagerImpl: closeInMemoryFile -> map-output of size: 122, inMemoryMapOutputs.size() -> 1, commitMemory -> 0, usedMemory ->122\n",
"15/09/16 02:53:05 INFO reduce.EventFetcher: EventFetcher is interrupted.. Returning\n",
"15/09/16 02:53:05 INFO mapred.LocalJobRunner: 1 / 1 copied.\n",
"15/09/16 02:53:05 INFO reduce.MergeManagerImpl: finalMerge called with 1 in-memory map-outputs and 0 on-disk map-outputs\n",
"15/09/16 02:53:05 INFO mapred.Merger: Merging 1 sorted segments\n",
"15/09/16 02:53:05 INFO mapred.Merger: Down to the last merge-pass, with 1 segments left of total size: 109 bytes\n",
"15/09/16 02:53:05 INFO reduce.MergeManagerImpl: Merged 1 segments, 122 bytes to disk to satisfy reduce memory limit\n",
"15/09/16 02:53:05 INFO reduce.MergeManagerImpl: Merging 1 files, 126 bytes from disk\n",
"15/09/16 02:53:05 INFO reduce.MergeManagerImpl: Merging 0 segments, 0 bytes from memory into reduce\n",
"15/09/16 02:53:05 INFO mapred.Merger: Merging 1 sorted segments\n",
"15/09/16 02:53:05 INFO mapred.Merger: Down to the last merge-pass, with 1 segments left of total size: 109 bytes\n",
"15/09/16 02:53:05 INFO mapred.LocalJobRunner: 1 / 1 copied.\n",
"15/09/16 02:53:05 INFO streaming.PipeMapRed: PipeMapRed exec [/Users/amir/Downloads/./reducer.py]\n",
"15/09/16 02:53:05 INFO Configuration.deprecation: mapred.job.tracker is deprecated. Instead, use mapreduce.jobtracker.address\n",
"15/09/16 02:53:05 INFO Configuration.deprecation: mapred.map.tasks is deprecated. Instead, use mapreduce.job.maps\n",
"15/09/16 02:53:05 INFO streaming.PipeMapRed: R/W/S=1/0/0 in:NA [rec/s] out:NA [rec/s]\n",
"15/09/16 02:53:05 INFO streaming.PipeMapRed: Records R/W=8/1\n",
"15/09/16 02:53:05 INFO streaming.PipeMapRed: MRErrorThread done\n",
"15/09/16 02:53:05 INFO streaming.PipeMapRed: mapRedFinished\n",
"15/09/16 02:53:05 INFO mapred.Task: Task:attempt_local954943400_0001_r_000000_0 is done. And is in the process of committing\n",
"15/09/16 02:53:05 INFO mapred.LocalJobRunner: 1 / 1 copied.\n",
"15/09/16 02:53:05 INFO mapred.Task: Task attempt_local954943400_0001_r_000000_0 is allowed to commit now\n",
"15/09/16 02:53:05 INFO output.FileOutputCommitter: Saved output of task 'attempt_local954943400_0001_r_000000_0' to hdfs://localhost:9000/user/amir/hw2_2/output/_temporary/0/task_local954943400_0001_r_000000\n",
"15/09/16 02:53:05 INFO mapred.LocalJobRunner: Records R/W=8/1 > reduce\n",
"15/09/16 02:53:05 INFO mapred.Task: Task 'attempt_local954943400_0001_r_000000_0' done.\n",
"15/09/16 02:53:05 INFO mapred.LocalJobRunner: Finishing task: attempt_local954943400_0001_r_000000_0\n",
"15/09/16 02:53:05 INFO mapred.LocalJobRunner: reduce task executor complete.\n",
"15/09/16 02:53:06 INFO mapreduce.Job: Job job_local954943400_0001 running in uber mode : false\n",
"15/09/16 02:53:06 INFO mapreduce.Job: map 100% reduce 100%\n",
"15/09/16 02:53:06 INFO mapreduce.Job: Job job_local954943400_0001 completed successfully\n",
"15/09/16 02:53:06 INFO mapreduce.Job: Counters: 35\n",
"\tFile System Counters\n",
"\t\tFILE: Number of bytes read=212364\n",
"\t\tFILE: Number of bytes written=793166\n",
"\t\tFILE: Number of read operations=0\n",
"\t\tFILE: Number of large read operations=0\n",
"\t\tFILE: Number of write operations=0\n",
"\t\tHDFS: Number of bytes read=407956\n",
"\t\tHDFS: Number of bytes written=13\n",
"\t\tHDFS: Number of read operations=15\n",
"\t\tHDFS: Number of large read operations=0\n",
"\t\tHDFS: Number of write operations=4\n",
"\tMap-Reduce Framework\n",
"\t\tMap input records=100\n",
"\t\tMap output records=8\n",
"\t\tMap output bytes=104\n",
"\t\tMap output materialized bytes=126\n",
"\t\tInput split bytes=107\n",
"\t\tCombine input records=0\n",
"\t\tCombine output records=0\n",
"\t\tReduce input groups=1\n",
"\t\tReduce shuffle bytes=126\n",
"\t\tReduce input records=8\n",
"\t\tReduce output records=1\n",
"\t\tSpilled Records=16\n",
"\t\tShuffled Maps =1\n",
"\t\tFailed Shuffles=0\n",
"\t\tMerged Map outputs=1\n",
"\t\tGC time elapsed (ms)=0\n",
"\t\tTotal committed heap usage (bytes)=514850816\n",
"\tShuffle Errors\n",
"\t\tBAD_ID=0\n",
"\t\tCONNECTION=0\n",
"\t\tIO_ERROR=0\n",
"\t\tWRONG_LENGTH=0\n",
"\t\tWRONG_MAP=0\n",
"\t\tWRONG_REDUCE=0\n",
"\tFile Input Format Counters \n",
"\t\tBytes Read=203978\n",
"\tFile Output Format Counters \n",
"\t\tBytes Written=13\n",
"15/09/16 02:53:06 INFO streaming.StreamJob: Output directory: /user/amir/hw2_2/output/\n"
]
}
],
"source": [
"!hadoop jar /usr/local/Cellar/hadoop/2.7.1/libexec/share/hadoop/tools/lib/hadoop-streaming-2.7.1.jar -mapper 'mapper.py assistance' -reducer reducer.py -input /user/amir/hw2_2/* -output /user/amir/hw2_2/output/"
]
},
{
"cell_type": "code",
"execution_count": 50,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"15/09/16 02:53:15 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable\n",
"assistance\t8\n"
]
}
],
"source": [
"!hdfs dfs -cat /user/amir/hw2_2/output/part-00000"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## HW2.3"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Mapper"
]
},
{
"cell_type": "code",
"execution_count": 61,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Overwriting mapper.py\n"
]
}
],
"source": [
"%%writefile mapper.py\n",
"#!/usr/bin/env python\n",
"\n",
"import sys\n",
"\n",
"word_input = sys.argv[1]\n",
"\n",
"for email in sys.stdin:\n",
" email = email.strip()\n",
" items = email.split('\\t') \n",
" \n",
" # since we want the output of the reducer to include\n",
" # prediction for each email we need to map each email\n",
" uid = items[0] # email unique id (first column)\n",
" spam = items[1]\n",
" count_input = email.count(word_input) # number of occurence of word\n",
" count_all = len(email.split()) # total number of words in email\n",
" \n",
" print '%s\\t%s\\t%s\\t%s' % (uid, spam, count_input, count_all)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Reducer"
]
},
{
"cell_type": "code",
"execution_count": 62,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Overwriting reducer.py\n"
]
}
],
"source": [
"%%writefile reducer.py\n",
"#!/usr/bin/env python\n",
"\n",
"import sys\n",
"\n",
"# universal counts\n",
"spams = 0\n",
"total = 0\n",
"words_spam = 0\n",
"words_ham = 0\n",
"input_spam = 0\n",
"input_ham = 0\n",
"\n",
"output = []\n",
"\n",
"for email in sys.stdin:\n",
" email = email.strip()\n",
"\n",
" try:\n",
" # parse the input we got from mapper.py\n",
" uid, spam, count_input, count_all = email.split('\\t')\n",
"\n",
" spam = int(spam)\n",
" count_input = int(count_input)\n",
" count_all = int(count_all)\n",
" spams += spam\n",
" total += 1\n",
"\n",
" if spam == 1:\n",
" words_spam += count_all\n",
" input_spam += count_input\n",
" else:\n",
" words_ham += count_all\n",
" input_ham += count_input\n",
"\n",
" output.append({'id': uid, 'spam': spam, 'count': count_input})\n",
"\n",
" except Exception, e:\n",
" print e\n",
" pass\n",
"\n",
"# probabilities\n",
"# smoothing\n",
"# vocabulary has only a single token so the denominator is simply +1\n",
"prior_spam = spams / float(total)\n",
"prior_ham = 1 - prior_spam\n",
"probability_input_spam = (1 + input_spam) / float((words_spam + 1))\n",
"probability_input_ham = (1 + input_ham) / float((words_ham + 1))\n",
" \n",
"# create outputs\n",
"for out in output: \n",
" # manageable to just multiply (no overflow)\n",
" # will need to switch to log and addition for next parts\n",
" # raising the probability to the power of number of occurences\n",
" # so for count = 0 there's simply no effect (multiplied by 1)\n",
" probability_spam = prior_spam * (probability_input_spam) ** out['count']\n",
" probability_ham = prior_ham * (probability_input_ham) ** out['count']\n",
" prediction = 1 if probability_spam > probability_ham else 0\n",
" \n",
" print '%s\\t%s\\t%s' % (out['id'], out['spam'], prediction)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Execute"
]
},
{
"cell_type": "code",
"execution_count": 63,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"15/09/16 03:03:15 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable\n",
"rm: `/user/amir/hw2_3/output': No such file or directory\n"
]
}
],
"source": [
"!hdfs dfs -rm -r /user/amir/hw2_3/output"
]
},
{
"cell_type": "code",
"execution_count": 64,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"15/09/16 03:03:18 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable\n",
"15/09/16 03:03:19 INFO Configuration.deprecation: session.id is deprecated. Instead, use dfs.metrics.session-id\n",
"15/09/16 03:03:19 INFO jvm.JvmMetrics: Initializing JVM Metrics with processName=JobTracker, sessionId=\n",
"15/09/16 03:03:19 INFO jvm.JvmMetrics: Cannot initialize JVM Metrics with processName=JobTracker, sessionId= - already initialized\n",
"15/09/16 03:03:19 INFO mapred.FileInputFormat: Total input paths to process : 2\n",
"15/09/16 03:03:19 INFO mapreduce.JobSubmitter: number of splits:2\n",
"15/09/16 03:03:19 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_local1531362131_0001\n",
"15/09/16 03:03:19 INFO mapreduce.Job: The url to track the job: http://localhost:8080/\n",
"15/09/16 03:03:19 INFO mapred.LocalJobRunner: OutputCommitter set in config null\n",
"15/09/16 03:03:19 INFO mapred.LocalJobRunner: OutputCommitter is org.apache.hadoop.mapred.FileOutputCommitter\n",
"15/09/16 03:03:19 INFO mapreduce.Job: Running job: job_local1531362131_0001\n",
"15/09/16 03:03:19 INFO output.FileOutputCommitter: File Output Committer Algorithm version is 1\n",
"15/09/16 03:03:19 INFO mapred.LocalJobRunner: Waiting for map tasks\n",
"15/09/16 03:03:19 INFO mapred.LocalJobRunner: Starting task: attempt_local1531362131_0001_m_000000_0\n",
"15/09/16 03:03:19 INFO output.FileOutputCommitter: File Output Committer Algorithm version is 1\n",
"15/09/16 03:03:19 INFO util.ProcfsBasedProcessTree: ProcfsBasedProcessTree currently is supported only on Linux.\n",
"15/09/16 03:03:19 INFO mapred.Task: Using ResourceCalculatorProcessTree : null\n",
"15/09/16 03:03:19 INFO mapred.MapTask: Processing split: hdfs://localhost:9000/user/amir/hw2_2/enronemail_1h.txt:0+203978\n",
"15/09/16 03:03:19 INFO mapred.MapTask: numReduceTasks: 1\n",
"15/09/16 03:03:19 INFO mapred.MapTask: (EQUATOR) 0 kvi 26214396(104857584)\n",
"15/09/16 03:03:19 INFO mapred.MapTask: mapreduce.task.io.sort.mb: 100\n",
"15/09/16 03:03:19 INFO mapred.MapTask: soft limit at 83886080\n",
"15/09/16 03:03:19 INFO mapred.MapTask: bufstart = 0; bufvoid = 104857600\n",
"15/09/16 03:03:19 INFO mapred.MapTask: kvstart = 26214396; length = 6553600\n",
"15/09/16 03:03:19 INFO mapred.MapTask: Map output collector class = org.apache.hadoop.mapred.MapTask$MapOutputBuffer\n",
"15/09/16 03:03:19 INFO streaming.PipeMapRed: PipeMapRed exec [/Users/amir/Downloads/./mapper.py, assistance]\n",
"15/09/16 03:03:19 INFO Configuration.deprecation: mapred.task.id is deprecated. Instead, use mapreduce.task.attempt.id\n",
"15/09/16 03:03:19 INFO Configuration.deprecation: user.name is deprecated. Instead, use mapreduce.job.user.name\n",
"15/09/16 03:03:19 INFO Configuration.deprecation: map.input.start is deprecated. Instead, use mapreduce.map.input.start\n",
"15/09/16 03:03:19 INFO Configuration.deprecation: mapred.task.is.map is deprecated. Instead, use mapreduce.task.ismap\n",
"15/09/16 03:03:19 INFO Configuration.deprecation: mapred.tip.id is deprecated. Instead, use mapreduce.task.id\n",
"15/09/16 03:03:19 INFO Configuration.deprecation: mapred.skip.on is deprecated. Instead, use mapreduce.job.skiprecords\n",
"15/09/16 03:03:19 INFO Configuration.deprecation: mapred.task.partition is deprecated. Instead, use mapreduce.task.partition\n",
"15/09/16 03:03:19 INFO Configuration.deprecation: map.input.length is deprecated. Instead, use mapreduce.map.input.length\n",
"15/09/16 03:03:19 INFO Configuration.deprecation: mapred.local.dir is deprecated. Instead, use mapreduce.cluster.local.dir\n",
"15/09/16 03:03:19 INFO Configuration.deprecation: mapred.work.output.dir is deprecated. Instead, use mapreduce.task.output.dir\n",
"15/09/16 03:03:19 INFO Configuration.deprecation: map.input.file is deprecated. Instead, use mapreduce.map.input.file\n",
"15/09/16 03:03:19 INFO Configuration.deprecation: mapred.job.id is deprecated. Instead, use mapreduce.job.id\n",
"15/09/16 03:03:19 INFO streaming.PipeMapRed: R/W/S=1/0/0 in:NA [rec/s] out:NA [rec/s]\n",
"15/09/16 03:03:19 INFO streaming.PipeMapRed: R/W/S=10/0/0 in:NA [rec/s] out:NA [rec/s]\n",
"15/09/16 03:03:19 INFO streaming.PipeMapRed: R/W/S=100/0/0 in:NA [rec/s] out:NA [rec/s]\n",
"15/09/16 03:03:19 INFO streaming.PipeMapRed: MRErrorThread done\n",
"15/09/16 03:03:19 INFO streaming.PipeMapRed: Records R/W=100/1\n",
"15/09/16 03:03:19 INFO streaming.PipeMapRed: mapRedFinished\n",
"15/09/16 03:03:19 INFO mapred.LocalJobRunner: \n",
"15/09/16 03:03:19 INFO mapred.MapTask: Starting flush of map output\n",
"15/09/16 03:03:19 INFO mapred.MapTask: Spilling map output\n",
"15/09/16 03:03:19 INFO mapred.MapTask: bufstart = 0; bufend = 3042; bufvoid = 104857600\n",
"15/09/16 03:03:19 INFO mapred.MapTask: kvstart = 26214396(104857584); kvend = 26214000(104856000); length = 397/6553600\n",
"15/09/16 03:03:19 INFO mapred.MapTask: Finished spill 0\n",
"15/09/16 03:03:19 INFO mapred.Task: Task:attempt_local1531362131_0001_m_000000_0 is done. And is in the process of committing\n",
"15/09/16 03:03:19 INFO mapred.LocalJobRunner: Records R/W=100/1\n",
"15/09/16 03:03:19 INFO mapred.Task: Task 'attempt_local1531362131_0001_m_000000_0' done.\n",
"15/09/16 03:03:19 INFO mapred.LocalJobRunner: Finishing task: attempt_local1531362131_0001_m_000000_0\n",
"15/09/16 03:03:19 INFO mapred.LocalJobRunner: Starting task: attempt_local1531362131_0001_m_000001_0\n",
"15/09/16 03:03:19 INFO output.FileOutputCommitter: File Output Committer Algorithm version is 1\n",
"15/09/16 03:03:19 INFO util.ProcfsBasedProcessTree: ProcfsBasedProcessTree currently is supported only on Linux.\n",
"15/09/16 03:03:19 INFO mapred.Task: Using ResourceCalculatorProcessTree : null\n",
"15/09/16 03:03:19 INFO mapred.MapTask: Processing split: hdfs://localhost:9000/user/amir/hw2_2/output/part-00000:0+13\n",
"15/09/16 03:03:19 INFO mapred.MapTask: numReduceTasks: 1\n",
"15/09/16 03:03:20 INFO mapred.MapTask: (EQUATOR) 0 kvi 26214396(104857584)\n",
"15/09/16 03:03:20 INFO mapred.MapTask: mapreduce.task.io.sort.mb: 100\n",
"15/09/16 03:03:20 INFO mapred.MapTask: soft limit at 83886080\n",
"15/09/16 03:03:20 INFO mapred.MapTask: bufstart = 0; bufvoid = 104857600\n",
"15/09/16 03:03:20 INFO mapred.MapTask: kvstart = 26214396; length = 6553600\n",
"15/09/16 03:03:20 INFO mapred.MapTask: Map output collector class = org.apache.hadoop.mapred.MapTask$MapOutputBuffer\n",
"15/09/16 03:03:20 INFO streaming.PipeMapRed: PipeMapRed exec [/Users/amir/Downloads/./mapper.py, assistance]\n",
"15/09/16 03:03:20 INFO streaming.PipeMapRed: R/W/S=1/0/0 in:NA [rec/s] out:NA [rec/s]\n",
"15/09/16 03:03:20 INFO streaming.PipeMapRed: Records R/W=1/1\n",
"15/09/16 03:03:20 INFO streaming.PipeMapRed: MRErrorThread done\n",
"15/09/16 03:03:20 INFO streaming.PipeMapRed: mapRedFinished\n",
"15/09/16 03:03:20 INFO mapred.LocalJobRunner: \n",
"15/09/16 03:03:20 INFO mapred.MapTask: Starting flush of map output\n",
"15/09/16 03:03:20 INFO mapred.MapTask: Spilling map output\n",
"15/09/16 03:03:20 INFO mapred.MapTask: bufstart = 0; bufend = 17; bufvoid = 104857600\n",
"15/09/16 03:03:20 INFO mapred.MapTask: kvstart = 26214396(104857584); kvend = 26214396(104857584); length = 1/6553600\n",
"15/09/16 03:03:20 INFO mapred.MapTask: Finished spill 0\n",
"15/09/16 03:03:20 INFO mapred.Task: Task:attempt_local1531362131_0001_m_000001_0 is done. And is in the process of committing\n",
"15/09/16 03:03:20 INFO mapred.LocalJobRunner: Records R/W=1/1\n",
"15/09/16 03:03:20 INFO mapred.Task: Task 'attempt_local1531362131_0001_m_000001_0' done.\n",
"15/09/16 03:03:20 INFO mapred.LocalJobRunner: Finishing task: attempt_local1531362131_0001_m_000001_0\n",
"15/09/16 03:03:20 INFO mapred.LocalJobRunner: map task executor complete.\n",
"15/09/16 03:03:20 INFO mapred.LocalJobRunner: Waiting for reduce tasks\n",
"15/09/16 03:03:20 INFO mapred.LocalJobRunner: Starting task: attempt_local1531362131_0001_r_000000_0\n",
"15/09/16 03:03:20 INFO output.FileOutputCommitter: File Output Committer Algorithm version is 1\n",
"15/09/16 03:03:20 INFO util.ProcfsBasedProcessTree: ProcfsBasedProcessTree currently is supported only on Linux.\n",
"15/09/16 03:03:20 INFO mapred.Task: Using ResourceCalculatorProcessTree : null\n",
"15/09/16 03:03:20 INFO mapred.ReduceTask: Using ShuffleConsumerPlugin: org.apache.hadoop.mapreduce.task.reduce.Shuffle@2f03cd46\n",
"15/09/16 03:03:20 INFO reduce.MergeManagerImpl: MergerManager: memoryLimit=333971456, maxSingleShuffleLimit=83492864, mergeThreshold=220421168, ioSortFactor=10, memToMemMergeOutputsThreshold=10\n",
"15/09/16 03:03:20 INFO reduce.EventFetcher: attempt_local1531362131_0001_r_000000_0 Thread started: EventFetcher for fetching Map Completion Events\n",
"15/09/16 03:03:20 INFO reduce.LocalFetcher: localfetcher#1 about to shuffle output of map attempt_local1531362131_0001_m_000001_0 decomp: 21 len: 25 to MEMORY\n",
"15/09/16 03:03:20 INFO reduce.InMemoryMapOutput: Read 21 bytes from map-output for attempt_local1531362131_0001_m_000001_0\n",
"15/09/16 03:03:20 INFO reduce.MergeManagerImpl: closeInMemoryFile -> map-output of size: 21, inMemoryMapOutputs.size() -> 1, commitMemory -> 0, usedMemory ->21\n",
"15/09/16 03:03:20 INFO reduce.LocalFetcher: localfetcher#1 about to shuffle output of map attempt_local1531362131_0001_m_000000_0 decomp: 3244 len: 3248 to MEMORY\n",
"15/09/16 03:03:20 INFO reduce.InMemoryMapOutput: Read 3244 bytes from map-output for attempt_local1531362131_0001_m_000000_0\n",
"15/09/16 03:03:20 INFO reduce.MergeManagerImpl: closeInMemoryFile -> map-output of size: 3244, inMemoryMapOutputs.size() -> 2, commitMemory -> 21, usedMemory ->3265\n",
"15/09/16 03:03:20 INFO reduce.EventFetcher: EventFetcher is interrupted.. Returning\n",
"15/09/16 03:03:20 INFO mapred.LocalJobRunner: 2 / 2 copied.\n",
"15/09/16 03:03:20 INFO reduce.MergeManagerImpl: finalMerge called with 2 in-memory map-outputs and 0 on-disk map-outputs\n",
"15/09/16 03:03:20 INFO mapred.Merger: Merging 2 sorted segments\n",
"15/09/16 03:03:20 INFO mapred.Merger: Down to the last merge-pass, with 2 segments left of total size: 3227 bytes\n",
"15/09/16 03:03:20 INFO reduce.MergeManagerImpl: Merged 2 segments, 3265 bytes to disk to satisfy reduce memory limit\n",
"15/09/16 03:03:20 INFO reduce.MergeManagerImpl: Merging 1 files, 3267 bytes from disk\n",
"15/09/16 03:03:20 INFO reduce.MergeManagerImpl: Merging 0 segments, 0 bytes from memory into reduce\n",
"15/09/16 03:03:20 INFO mapred.Merger: Merging 1 sorted segments\n",
"15/09/16 03:03:20 INFO mapred.Merger: Down to the last merge-pass, with 1 segments left of total size: 3238 bytes\n",
"15/09/16 03:03:20 INFO mapred.LocalJobRunner: 2 / 2 copied.\n",
"15/09/16 03:03:20 INFO streaming.PipeMapRed: PipeMapRed exec [/Users/amir/Downloads/./reducer.py]\n",
"15/09/16 03:03:20 INFO Configuration.deprecation: mapred.job.tracker is deprecated. Instead, use mapreduce.jobtracker.address\n",
"15/09/16 03:03:20 INFO Configuration.deprecation: mapred.map.tasks is deprecated. Instead, use mapreduce.job.maps\n",
"15/09/16 03:03:20 INFO streaming.PipeMapRed: R/W/S=1/0/0 in:NA [rec/s] out:NA [rec/s]\n",
"15/09/16 03:03:20 INFO streaming.PipeMapRed: R/W/S=10/0/0 in:NA [rec/s] out:NA [rec/s]\n",
"15/09/16 03:03:20 INFO streaming.PipeMapRed: R/W/S=100/0/0 in:NA [rec/s] out:NA [rec/s]\n",
"15/09/16 03:03:20 INFO streaming.PipeMapRed: Records R/W=101/1\n",
"15/09/16 03:03:20 INFO streaming.PipeMapRed: MRErrorThread done\n",
"15/09/16 03:03:20 INFO streaming.PipeMapRed: mapRedFinished\n",
"15/09/16 03:03:20 INFO mapred.Task: Task:attempt_local1531362131_0001_r_000000_0 is done. And is in the process of committing\n",
"15/09/16 03:03:20 INFO mapred.LocalJobRunner: 2 / 2 copied.\n",
"15/09/16 03:03:20 INFO mapred.Task: Task attempt_local1531362131_0001_r_000000_0 is allowed to commit now\n",
"15/09/16 03:03:20 INFO output.FileOutputCommitter: Saved output of task 'attempt_local1531362131_0001_r_000000_0' to hdfs://localhost:9000/user/amir/hw2_3/output/_temporary/0/task_local1531362131_0001_r_000000\n",
"15/09/16 03:03:20 INFO mapred.LocalJobRunner: Records R/W=101/1 > reduce\n",
"15/09/16 03:03:20 INFO mapred.Task: Task 'attempt_local1531362131_0001_r_000000_0' done.\n",
"15/09/16 03:03:20 INFO mapred.LocalJobRunner: Finishing task: attempt_local1531362131_0001_r_000000_0\n",
"15/09/16 03:03:20 INFO mapred.LocalJobRunner: reduce task executor complete.\n",
"15/09/16 03:03:20 INFO mapreduce.Job: Job job_local1531362131_0001 running in uber mode : false\n",
"15/09/16 03:03:20 INFO mapreduce.Job: map 100% reduce 100%\n",
"15/09/16 03:03:20 INFO mapreduce.Job: Job job_local1531362131_0001 completed successfully\n",
"15/09/16 03:03:20 INFO mapreduce.Job: Counters: 35\n",
"\tFile System Counters\n",
"\t\tFILE: Number of bytes read=325556\n",
"\t\tFILE: Number of bytes written=1207173\n",
"\t\tFILE: Number of read operations=0\n",
"\t\tFILE: Number of large read operations=0\n",
"\t\tFILE: Number of write operations=0\n",
"\t\tHDFS: Number of bytes read=611960\n",
"\t\tHDFS: Number of bytes written=2687\n",
"\t\tHDFS: Number of read operations=25\n",
"\t\tHDFS: Number of large read operations=0\n",
"\t\tHDFS: Number of write operations=5\n",
"\tMap-Reduce Framework\n",
"\t\tMap input records=101\n",
"\t\tMap output records=101\n",
"\t\tMap output bytes=3059\n",
"\t\tMap output materialized bytes=3273\n",
"\t\tInput split bytes=214\n",
"\t\tCombine input records=0\n",
"\t\tCombine output records=0\n",
"\t\tReduce input groups=101\n",
"\t\tReduce shuffle bytes=3273\n",
"\t\tReduce input records=101\n",
"\t\tReduce output records=101\n",
"\t\tSpilled Records=202\n",
"\t\tShuffled Maps =2\n",
"\t\tFailed Shuffles=0\n",
"\t\tMerged Map outputs=2\n",
"\t\tGC time elapsed (ms)=8\n",
"\t\tTotal committed heap usage (bytes)=1050673152\n",
"\tShuffle Errors\n",
"\t\tBAD_ID=0\n",
"\t\tCONNECTION=0\n",
"\t\tIO_ERROR=0\n",
"\t\tWRONG_LENGTH=0\n",
"\t\tWRONG_MAP=0\n",
"\t\tWRONG_REDUCE=0\n",
"\tFile Input Format Counters \n",
"\t\tBytes Read=203991\n",
"\tFile Output Format Counters \n",
"\t\tBytes Written=2687\n",
"15/09/16 03:03:20 INFO streaming.StreamJob: Output directory: /user/amir/hw2_3/output/\n"
]
}
],
"source": [
"!hadoop jar /usr/local/Cellar/hadoop/2.7.1/libexec/share/hadoop/tools/lib/hadoop-streaming-2.7.1.jar -mapper 'mapper.py assistance' -reducer reducer.py -input /user/amir/hw2_2/* -output /user/amir/hw2_3/output/"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Results"
]
},
{
"cell_type": "code",
"execution_count": 67,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"15/09/16 03:05:32 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable\n",
"Found 2 items\n",
"-rw-r--r-- 1 amir supergroup 0 2015-09-16 03:03 /user/amir/hw2_3/output/_SUCCESS\n",
"-rw-r--r-- 1 amir supergroup 2687 2015-09-16 03:03 /user/amir/hw2_3/output/part-00000\n"
]
}
],
"source": [
"!hdfs dfs -ls /user/amir/hw2_3/output/"
]
},
{
"cell_type": "code",
"execution_count": 65,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"15/09/16 03:03:24 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable\n",
"0001.1999-12-10.farmer\t0\t1\n",
"0001.1999-12-10.kaminski\t0\t1\n",
"0001.2000-01-17.beck\t0\t1\n",
"0001.2000-06-06.lokay\t0\t1\n",
"0001.2001-02-07.kitchen\t0\t1\n",
"0001.2001-04-02.williams\t0\t1\n",
"0002.1999-12-13.farmer\t0\t1\n",
"0002.2001-02-07.kitchen\t0\t1\n",
"0002.2001-05-25.SA_and_HP\t1\t1\n",
"0002.2003-12-18.GP\t1\t1\n",
"0002.2004-08-01.BG\t1\t1\n",
"0003.1999-12-10.kaminski\t0\t1\n",
"0003.1999-12-14.farmer\t0\t1\n",
"0003.2000-01-17.beck\t0\t1\n",
"0003.2001-02-08.kitchen\t0\t1\n",
"0003.2003-12-18.GP\t1\t1\n",
"0003.2004-08-01.BG\t1\t1\n",
"0004.1999-12-10.kaminski\t0\t1\n",
"0004.1999-12-14.farmer\t0\t1\n",
"0004.2001-04-02.williams\t0\t1\n",
"0004.2001-06-12.SA_and_HP\t1\t1\n",
"0004.2004-08-01.BG\t1\t1\n",
"0005.1999-12-12.kaminski\t0\t1\n",
"0005.1999-12-14.farmer\t0\t1\n",
"0005.2000-06-06.lokay\t0\t1\n",
"0005.2001-02-08.kitchen\t0\t1\n",
"0005.2001-06-23.SA_and_HP\t1\t1\n",
"0005.2003-12-18.GP\t1\t1\n",
"0006.1999-12-13.kaminski\t0\t1\n",
"0006.2001-02-08.kitchen\t0\t1\n",
"0006.2001-04-03.williams\t0\t1\n",
"0006.2001-06-25.SA_and_HP\t1\t1\n",
"0006.2003-12-18.GP\t1\t1\n",
"0006.2004-08-01.BG\t1\t1\n",
"0007.1999-12-13.kaminski\t0\t1\n",
"0007.1999-12-14.farmer\t0\t1\n",
"0007.2000-01-17.beck\t0\t1\n",
"0007.2001-02-09.kitchen\t0\t1\n",
"0007.2003-12-18.GP\t1\t1\n",
"0007.2004-08-01.BG\t1\t1\n",
"0008.2001-02-09.kitchen\t0\t1\n",
"0008.2001-06-12.SA_and_HP\t1\t1\n",
"0008.2001-06-25.SA_and_HP\t1\t1\n",
"0008.2003-12-18.GP\t1\t1\n",
"0008.2004-08-01.BG\t1\t1\n",
"0009.1999-12-13.kaminski\t0\t1\n",
"0009.1999-12-14.farmer\t0\t1\n",
"0009.2000-06-07.lokay\t0\t1\n",
"0009.2001-02-09.kitchen\t0\t1\n",
"0009.2001-06-26.SA_and_HP\t1\t1\n",
"0009.2003-12-18.GP\t1\t1\n",
"0010.1999-12-14.farmer\t0\t1\n",
"0010.1999-12-14.kaminski\t0\t1\n",
"0010.2001-02-09.kitchen\t0\t1\n",
"0010.2001-06-28.SA_and_HP\t1\t1\n",
"0010.2003-12-18.GP\t1\t1\n",
"0010.2004-08-01.BG\t1\t1\n",
"0011.1999-12-14.farmer\t0\t1\n",
"0011.2001-06-28.SA_and_HP\t1\t1\n",
"0011.2001-06-29.SA_and_HP\t1\t1\n",
"0011.2003-12-18.GP\t1\t1\n",
"0011.2004-08-01.BG\t1\t1\n",
"0012.1999-12-14.farmer\t0\t1\n",
"0012.1999-12-14.kaminski\t0\t1\n",
"0012.2000-01-17.beck\t0\t1\n",
"0012.2000-06-08.lokay\t0\t1\n",
"0012.2001-02-09.kitchen\t0\t1\n",
"0012.2003-12-19.GP\t1\t1\n",
"0013.1999-12-14.farmer\t0\t1\n",
"0013.1999-12-14.kaminski\t0\t1\n",
"0013.2001-04-03.williams\t0\t1\n",
"0013.2001-06-30.SA_and_HP\t1\t1\n",
"0013.2004-08-01.BG\t1\t1\n",
"0014.1999-12-14.kaminski\t0\t1\n",
"0014.1999-12-15.farmer\t0\t1\n",
"0014.2001-02-12.kitchen\t0\t1\n",
"0014.2001-07-04.SA_and_HP\t1\t1\n",
"0014.2003-12-19.GP\t1\t1\n",
"0014.2004-08-01.BG\t1\t1\n",
"0015.1999-12-14.kaminski\t0\t1\n",
"0015.1999-12-15.farmer\t0\t1\n",
"0015.2000-06-09.lokay\t0\t1\n",
"0015.2001-02-12.kitchen\t0\t1\n",
"0015.2001-07-05.SA_and_HP\t1\t1\n",
"0015.2003-12-19.GP\t1\t1\n",
"0016.1999-12-15.farmer\t0\t1\n",
"0016.2001-02-12.kitchen\t0\t1\n",
"0016.2001-07-05.SA_and_HP\t1\t1\n",
"0016.2001-07-06.SA_and_HP\t1\t1\n",
"0016.2003-12-19.GP\t1\t1\n",
"0016.2004-08-01.BG\t1\t1\n",
"0017.1999-12-14.kaminski\t0\t1\n",
"0017.2000-01-17.beck\t0\t1\n",
"0017.2001-04-03.williams\t0\t1\n",
"0017.2003-12-18.GP\t1\t1\n",
"0017.2004-08-01.BG\t1\t1\n",
"0017.2004-08-02.BG\t1\t1\n",
"0018.1999-12-14.kaminski\t0\t1\n",
"0018.2001-07-13.SA_and_HP\t1\t1\n",
"0018.2003-12-18.GP\t1\t1\n",
"assistance\t8\t1\n"
]
}
],
"source": [
"!hdfs dfs -cat /user/amir/hw2_3/output/part-00000"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## HW2.4"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true
},
"source": [
"#### Mapper"
]
},
{
"cell_type": "code",
"execution_count": 71,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Overwriting mapper.py\n"
]
}
],
"source": [
"%%writefile mapper.py\n",
"#!/usr/bin/env python\n",
"\n",
"import sys\n",
"\n",
"word_inputs = sys.argv[1:]\n",
"\n",
"# input comes from a file that split has created\n",
"for email in sys.stdin:\n",
" email = email.strip()\n",
" items = email.split('\\t') \n",
" \n",
" # outputs\n",
" uid = items[0] # email unique id (first column)\n",
" spam = items[1]\n",
" count_all = len(email.split())\n",
"\n",
" for word in word_inputs:\n",
" count_input = email.count(word)\n",
" print '%s\\t%s\\t%s\\t%s\\t%s' % \\\n",
" (uid, spam, count_all, word, count_input)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Reducer"
]
},
{
"cell_type": "code",
"execution_count": 72,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Overwriting reducer.py\n"
]
}
],
"source": [
"%%writefile reducer.py\n",
"#!/usr/bin/env python\n",
"\n",
"import sys\n",
"\n",
"output = {}\n",
"probabilities = dict()\n",
"\n",
"# helper function to swap spam and ham\n",
"def swap(x):\n",
" return 1 if x == 0 else 0\n",
"\n",
"for line in sys.stdin:\n",
" line = line.strip()\n",
"\n",
" try:\n",
" # parse the input we got from mapper.py\n",
" uid, spam, count_all, word, count_input = line.split('\\t')\n",
"\n",
" spam = int(spam)\n",
" count_input = int(count_input)\n",
" count_all = int(count_all)\n",
"\n",
" # accumulate the count per word per class\n",
" key = (word, spam)\n",
" if key in probabilities:\n",
" probabilities[key] += count_input\n",
" else:\n",
" probabilities[key] = count_input\n",
"\n",
" # make sure both classes are represented\n",
" key_swapped = (word, swap(spam))\n",
" if key_swapped not in probabilities:\n",
" probabilities[key_swapped] = 0\n",
"\n",
" word_tuple = (word, count_input)\n",
" if uid in output:\n",
" output[uid]['words'].append(word_tuple)\n",
" else:\n",
" output[uid] = {'id': uid, 'spam': spam, 'count_all': count_all, 'words': [word_tuple]}\n",
"\n",
" except Exception, e:\n",
" print e\n",
" pass\n",
"\n",
"spams = sum([output[k]['spam'] for k in output])\n",
"prior_spam = spams / float(len(output))\n",
"prior_ham = 1 - prior_spam\n",
"vocabulary_size = len(set([x[0] for x in probabilities]))\n",
"\n",
"def count_all(val):\n",
" return sum([output[x]['count_all'] for x in output if output[x]['spam'] == val])\n",
"\n",
"words_spam = count_all(1)\n",
"words_ham = count_all(0)\n",
"\n",
"# update probabilities (with add-1 smoothing)\n",
"for k in probabilities:\n",
" spam = key[1]\n",
" probabilities[k] = (probabilities[k] + 1) / float((words_spam if spam == 1 else words_ham) + vocabulary_size)\n",
"\n",
"# create outputs\n",
"for out in output:\n",
" probability_spam = prior_spam\n",
" probability_ham = prior_ham\n",
" \n",
" for word_tuple in output[out]['words']:\n",
" word = word_tuple[0]\n",
" count = word_tuple[1]\n",
" probability_spam *= probabilities[(word, 1)] ** count\n",
" probability_ham *= probabilities[(word, 0)] ** count\n",
"\n",
" prediction = 1 if probability_spam > probability_ham else 0\n",
" \n",
" print '%s\\t%s\\t%s' % (output[out]['id'], output[out]['spam'], prediction)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Execute"
]
},
{
"cell_type": "code",
"execution_count": 75,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"15/09/16 03:13:03 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable\n",
"15/09/16 03:13:03 INFO fs.TrashPolicyDefault: Namenode trash configuration: Deletion interval = 0 minutes, Emptier interval = 0 minutes.\n",
"Deleted /user/amir/hw2_4\n"
]
}
],
"source": [
"!hdfs dfs -rm -r /user/amir/hw2_4"
]
},
{
"cell_type": "code",
"execution_count": 76,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"15/09/16 03:13:08 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable\n",
"15/09/16 03:13:09 INFO Configuration.deprecation: session.id is deprecated. Instead, use dfs.metrics.session-id\n",
"15/09/16 03:13:09 INFO jvm.JvmMetrics: Initializing JVM Metrics with processName=JobTracker, sessionId=\n",
"15/09/16 03:13:09 INFO jvm.JvmMetrics: Cannot initialize JVM Metrics with processName=JobTracker, sessionId= - already initialized\n",
"15/09/16 03:13:10 INFO mapred.FileInputFormat: Total input paths to process : 2\n",
"15/09/16 03:13:10 INFO mapreduce.JobSubmitter: number of splits:2\n",
"15/09/16 03:13:10 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_local913719140_0001\n",
"15/09/16 03:13:10 INFO mapreduce.Job: The url to track the job: http://localhost:8080/\n",
"15/09/16 03:13:10 INFO mapred.LocalJobRunner: OutputCommitter set in config null\n",
"15/09/16 03:13:10 INFO mapreduce.Job: Running job: job_local913719140_0001\n",
"15/09/16 03:13:10 INFO mapred.LocalJobRunner: OutputCommitter is org.apache.hadoop.mapred.FileOutputCommitter\n",
"15/09/16 03:13:10 INFO output.FileOutputCommitter: File Output Committer Algorithm version is 1\n",
"15/09/16 03:13:10 INFO mapred.LocalJobRunner: Waiting for map tasks\n",
"15/09/16 03:13:10 INFO mapred.LocalJobRunner: Starting task: attempt_local913719140_0001_m_000000_0\n",
"15/09/16 03:13:10 INFO output.FileOutputCommitter: File Output Committer Algorithm version is 1\n",
"15/09/16 03:13:10 INFO util.ProcfsBasedProcessTree: ProcfsBasedProcessTree currently is supported only on Linux.\n",
"15/09/16 03:13:10 INFO mapred.Task: Using ResourceCalculatorProcessTree : null\n",
"15/09/16 03:13:10 INFO mapred.MapTask: Processing split: hdfs://localhost:9000/user/amir/hw2_2/enronemail_1h.txt:0+203978\n",
"15/09/16 03:13:10 INFO mapred.MapTask: numReduceTasks: 1\n",
"15/09/16 03:13:10 INFO mapred.MapTask: (EQUATOR) 0 kvi 26214396(104857584)\n",
"15/09/16 03:13:10 INFO mapred.MapTask: mapreduce.task.io.sort.mb: 100\n",
"15/09/16 03:13:10 INFO mapred.MapTask: soft limit at 83886080\n",
"15/09/16 03:13:10 INFO mapred.MapTask: bufstart = 0; bufvoid = 104857600\n",
"15/09/16 03:13:10 INFO mapred.MapTask: kvstart = 26214396; length = 6553600\n",
"15/09/16 03:13:10 INFO mapred.MapTask: Map output collector class = org.apache.hadoop.mapred.MapTask$MapOutputBuffer\n",
"15/09/16 03:13:10 INFO streaming.PipeMapRed: PipeMapRed exec [/Users/amir/Downloads/./mapper.py, assistance, valium, enlargementWithATypo]\n",
"15/09/16 03:13:10 INFO Configuration.deprecation: mapred.task.id is deprecated. Instead, use mapreduce.task.attempt.id\n",
"15/09/16 03:13:10 INFO Configuration.deprecation: user.name is deprecated. Instead, use mapreduce.job.user.name\n",
"15/09/16 03:13:10 INFO Configuration.deprecation: map.input.start is deprecated. Instead, use mapreduce.map.input.start\n",
"15/09/16 03:13:10 INFO Configuration.deprecation: mapred.task.is.map is deprecated. Instead, use mapreduce.task.ismap\n",
"15/09/16 03:13:10 INFO Configuration.deprecation: mapred.tip.id is deprecated. Instead, use mapreduce.task.id\n",
"15/09/16 03:13:10 INFO Configuration.deprecation: mapred.skip.on is deprecated. Instead, use mapreduce.job.skiprecords\n",
"15/09/16 03:13:10 INFO Configuration.deprecation: mapred.task.partition is deprecated. Instead, use mapreduce.task.partition\n",
"15/09/16 03:13:10 INFO Configuration.deprecation: map.input.length is deprecated. Instead, use mapreduce.map.input.length\n",
"15/09/16 03:13:10 INFO Configuration.deprecation: mapred.local.dir is deprecated. Instead, use mapreduce.cluster.local.dir\n",
"15/09/16 03:13:10 INFO Configuration.deprecation: mapred.work.output.dir is deprecated. Instead, use mapreduce.task.output.dir\n",
"15/09/16 03:13:10 INFO Configuration.deprecation: map.input.file is deprecated. Instead, use mapreduce.map.input.file\n",
"15/09/16 03:13:10 INFO Configuration.deprecation: mapred.job.id is deprecated. Instead, use mapreduce.job.id\n",
"15/09/16 03:13:10 INFO streaming.PipeMapRed: R/W/S=1/0/0 in:NA [rec/s] out:NA [rec/s]\n",
"15/09/16 03:13:10 INFO streaming.PipeMapRed: R/W/S=10/0/0 in:NA [rec/s] out:NA [rec/s]\n",
"15/09/16 03:13:10 INFO streaming.PipeMapRed: R/W/S=100/0/0 in:NA [rec/s] out:NA [rec/s]\n",
"15/09/16 03:13:10 INFO streaming.PipeMapRed: MRErrorThread done\n",
"15/09/16 03:13:10 INFO streaming.PipeMapRed: Records R/W=100/1\n",
"15/09/16 03:13:10 INFO streaming.PipeMapRed: mapRedFinished\n",
"15/09/16 03:13:10 INFO mapred.LocalJobRunner: \n",
"15/09/16 03:13:10 INFO mapred.MapTask: Starting flush of map output\n",
"15/09/16 03:13:10 INFO mapred.MapTask: Spilling map output\n",
"15/09/16 03:13:10 INFO mapred.MapTask: bufstart = 0; bufend = 13026; bufvoid = 104857600\n",
"15/09/16 03:13:10 INFO mapred.MapTask: kvstart = 26214396(104857584); kvend = 26213200(104852800); length = 1197/6553600\n",
"15/09/16 03:13:10 INFO mapred.MapTask: Finished spill 0\n",
"15/09/16 03:13:10 INFO mapred.Task: Task:attempt_local913719140_0001_m_000000_0 is done. And is in the process of committing\n",
"15/09/16 03:13:10 INFO mapred.LocalJobRunner: Records R/W=100/1\n",
"15/09/16 03:13:10 INFO mapred.Task: Task 'attempt_local913719140_0001_m_000000_0' done.\n",
"15/09/16 03:13:10 INFO mapred.LocalJobRunner: Finishing task: attempt_local913719140_0001_m_000000_0\n",
"15/09/16 03:13:10 INFO mapred.LocalJobRunner: Starting task: attempt_local913719140_0001_m_000001_0\n",
"15/09/16 03:13:10 INFO output.FileOutputCommitter: File Output Committer Algorithm version is 1\n",
"15/09/16 03:13:10 INFO util.ProcfsBasedProcessTree: ProcfsBasedProcessTree currently is supported only on Linux.\n",
"15/09/16 03:13:10 INFO mapred.Task: Using ResourceCalculatorProcessTree : null\n",
"15/09/16 03:13:10 INFO mapred.MapTask: Processing split: hdfs://localhost:9000/user/amir/hw2_2/output/part-00000:0+13\n",
"15/09/16 03:13:10 INFO mapred.MapTask: numReduceTasks: 1\n",
"15/09/16 03:13:10 INFO mapred.MapTask: (EQUATOR) 0 kvi 26214396(104857584)\n",
"15/09/16 03:13:10 INFO mapred.MapTask: mapreduce.task.io.sort.mb: 100\n",
"15/09/16 03:13:10 INFO mapred.MapTask: soft limit at 83886080\n",
"15/09/16 03:13:10 INFO mapred.MapTask: bufstart = 0; bufvoid = 104857600\n",
"15/09/16 03:13:10 INFO mapred.MapTask: kvstart = 26214396; length = 6553600\n",
"15/09/16 03:13:10 INFO mapred.MapTask: Map output collector class = org.apache.hadoop.mapred.MapTask$MapOutputBuffer\n",
"15/09/16 03:13:10 INFO streaming.PipeMapRed: PipeMapRed exec [/Users/amir/Downloads/./mapper.py, assistance, valium, enlargementWithATypo]\n",
"15/09/16 03:13:10 INFO streaming.PipeMapRed: R/W/S=1/0/0 in:NA [rec/s] out:NA [rec/s]\n",
"15/09/16 03:13:10 INFO streaming.PipeMapRed: Records R/W=1/1\n",
"15/09/16 03:13:10 INFO streaming.PipeMapRed: MRErrorThread done\n",
"15/09/16 03:13:10 INFO streaming.PipeMapRed: mapRedFinished\n",
"15/09/16 03:13:10 INFO mapred.LocalJobRunner: \n",
"15/09/16 03:13:10 INFO mapred.MapTask: Starting flush of map output\n",
"15/09/16 03:13:10 INFO mapred.MapTask: Spilling map output\n",
"15/09/16 03:13:10 INFO mapred.MapTask: bufstart = 0; bufend = 90; bufvoid = 104857600\n",
"15/09/16 03:13:10 INFO mapred.MapTask: kvstart = 26214396(104857584); kvend = 26214388(104857552); length = 9/6553600\n",
"15/09/16 03:13:10 INFO mapred.MapTask: Finished spill 0\n",
"15/09/16 03:13:10 INFO mapred.Task: Task:attempt_local913719140_0001_m_000001_0 is done. And is in the process of committing\n",
"15/09/16 03:13:10 INFO mapred.LocalJobRunner: Records R/W=1/1\n",
"15/09/16 03:13:10 INFO mapred.Task: Task 'attempt_local913719140_0001_m_000001_0' done.\n",
"15/09/16 03:13:10 INFO mapred.LocalJobRunner: Finishing task: attempt_local913719140_0001_m_000001_0\n",
"15/09/16 03:13:10 INFO mapred.LocalJobRunner: map task executor complete.\n",
"15/09/16 03:13:10 INFO mapred.LocalJobRunner: Waiting for reduce tasks\n",
"15/09/16 03:13:10 INFO mapred.LocalJobRunner: Starting task: attempt_local913719140_0001_r_000000_0\n",
"15/09/16 03:13:10 INFO output.FileOutputCommitter: File Output Committer Algorithm version is 1\n",
"15/09/16 03:13:10 INFO util.ProcfsBasedProcessTree: ProcfsBasedProcessTree currently is supported only on Linux.\n",
"15/09/16 03:13:10 INFO mapred.Task: Using ResourceCalculatorProcessTree : null\n",
"15/09/16 03:13:10 INFO mapred.ReduceTask: Using ShuffleConsumerPlugin: org.apache.hadoop.mapreduce.task.reduce.Shuffle@131d8f75\n",
"15/09/16 03:13:10 INFO reduce.MergeManagerImpl: MergerManager: memoryLimit=333971456, maxSingleShuffleLimit=83492864, mergeThreshold=220421168, ioSortFactor=10, memToMemMergeOutputsThreshold=10\n",
"15/09/16 03:13:10 INFO reduce.EventFetcher: attempt_local913719140_0001_r_000000_0 Thread started: EventFetcher for fetching Map Completion Events\n",
"15/09/16 03:13:10 INFO reduce.LocalFetcher: localfetcher#1 about to shuffle output of map attempt_local913719140_0001_m_000001_0 decomp: 98 len: 102 to MEMORY\n",
"15/09/16 03:13:10 INFO reduce.InMemoryMapOutput: Read 98 bytes from map-output for attempt_local913719140_0001_m_000001_0\n",
"15/09/16 03:13:10 INFO reduce.MergeManagerImpl: closeInMemoryFile -> map-output of size: 98, inMemoryMapOutputs.size() -> 1, commitMemory -> 0, usedMemory ->98\n",
"15/09/16 03:13:10 INFO reduce.LocalFetcher: localfetcher#1 about to shuffle output of map attempt_local913719140_0001_m_000000_0 decomp: 13628 len: 13632 to MEMORY\n",
"15/09/16 03:13:10 INFO reduce.InMemoryMapOutput: Read 13628 bytes from map-output for attempt_local913719140_0001_m_000000_0\n",
"15/09/16 03:13:10 INFO reduce.MergeManagerImpl: closeInMemoryFile -> map-output of size: 13628, inMemoryMapOutputs.size() -> 2, commitMemory -> 98, usedMemory ->13726\n",
"15/09/16 03:13:10 INFO reduce.EventFetcher: EventFetcher is interrupted.. Returning\n",
"15/09/16 03:13:10 INFO mapred.LocalJobRunner: 2 / 2 copied.\n",
"15/09/16 03:13:10 INFO reduce.MergeManagerImpl: finalMerge called with 2 in-memory map-outputs and 0 on-disk map-outputs\n",
"15/09/16 03:13:10 INFO mapred.Merger: Merging 2 sorted segments\n",
"15/09/16 03:13:10 INFO mapred.Merger: Down to the last merge-pass, with 2 segments left of total size: 13688 bytes\n",
"15/09/16 03:13:10 INFO reduce.MergeManagerImpl: Merged 2 segments, 13726 bytes to disk to satisfy reduce memory limit\n",
"15/09/16 03:13:10 INFO reduce.MergeManagerImpl: Merging 1 files, 13728 bytes from disk\n",
"15/09/16 03:13:10 INFO reduce.MergeManagerImpl: Merging 0 segments, 0 bytes from memory into reduce\n",
"15/09/16 03:13:10 INFO mapred.Merger: Merging 1 sorted segments\n",
"15/09/16 03:13:10 INFO mapred.Merger: Down to the last merge-pass, with 1 segments left of total size: 13699 bytes\n",
"15/09/16 03:13:10 INFO mapred.LocalJobRunner: 2 / 2 copied.\n",
"15/09/16 03:13:10 INFO streaming.PipeMapRed: PipeMapRed exec [/Users/amir/Downloads/./reducer.py]\n",
"15/09/16 03:13:10 INFO Configuration.deprecation: mapred.job.tracker is deprecated. Instead, use mapreduce.jobtracker.address\n",
"15/09/16 03:13:10 INFO Configuration.deprecation: mapred.map.tasks is deprecated. Instead, use mapreduce.job.maps\n",
"15/09/16 03:13:10 INFO streaming.PipeMapRed: R/W/S=1/0/0 in:NA [rec/s] out:NA [rec/s]\n",
"15/09/16 03:13:10 INFO streaming.PipeMapRed: R/W/S=10/0/0 in:NA [rec/s] out:NA [rec/s]\n",
"15/09/16 03:13:10 INFO streaming.PipeMapRed: R/W/S=100/0/0 in:NA [rec/s] out:NA [rec/s]\n",
"15/09/16 03:13:10 INFO streaming.PipeMapRed: Records R/W=303/1\n",
"15/09/16 03:13:10 INFO streaming.PipeMapRed: MRErrorThread done\n",
"15/09/16 03:13:10 INFO streaming.PipeMapRed: mapRedFinished\n",
"15/09/16 03:13:10 INFO mapred.Task: Task:attempt_local913719140_0001_r_000000_0 is done. And is in the process of committing\n",
"15/09/16 03:13:10 INFO mapred.LocalJobRunner: 2 / 2 copied.\n",
"15/09/16 03:13:10 INFO mapred.Task: Task attempt_local913719140_0001_r_000000_0 is allowed to commit now\n",
"15/09/16 03:13:10 INFO output.FileOutputCommitter: Saved output of task 'attempt_local913719140_0001_r_000000_0' to hdfs://localhost:9000/user/amir/hw2_4/output/_temporary/0/task_local913719140_0001_r_000000\n",
"15/09/16 03:13:10 INFO mapred.LocalJobRunner: Records R/W=303/1 > reduce\n",
"15/09/16 03:13:10 INFO mapred.Task: Task 'attempt_local913719140_0001_r_000000_0' done.\n",
"15/09/16 03:13:10 INFO mapred.LocalJobRunner: Finishing task: attempt_local913719140_0001_r_000000_0\n",
"15/09/16 03:13:10 INFO mapred.LocalJobRunner: reduce task executor complete.\n",
"15/09/16 03:13:11 INFO mapreduce.Job: Job job_local913719140_0001 running in uber mode : false\n",
"15/09/16 03:13:11 INFO mapreduce.Job: map 100% reduce 100%\n",
"15/09/16 03:13:11 INFO mapreduce.Job: Job job_local913719140_0001 completed successfully\n",
"15/09/16 03:13:11 INFO mapreduce.Job: Counters: 35\n",
"\tFile System Counters\n",
"\t\tFILE: Number of bytes read=346478\n",
"\t\tFILE: Number of bytes written=1244608\n",
"\t\tFILE: Number of read operations=0\n",
"\t\tFILE: Number of large read operations=0\n",
"\t\tFILE: Number of write operations=0\n",
"\t\tHDFS: Number of bytes read=611960\n",
"\t\tHDFS: Number of bytes written=2687\n",
"\t\tHDFS: Number of read operations=25\n",
"\t\tHDFS: Number of large read operations=0\n",
"\t\tHDFS: Number of write operations=5\n",
"\tMap-Reduce Framework\n",
"\t\tMap input records=101\n",
"\t\tMap output records=303\n",
"\t\tMap output bytes=13116\n",
"\t\tMap output materialized bytes=13734\n",
"\t\tInput split bytes=214\n",
"\t\tCombine input records=0\n",
"\t\tCombine output records=0\n",
"\t\tReduce input groups=101\n",
"\t\tReduce shuffle bytes=13734\n",
"\t\tReduce input records=303\n",
"\t\tReduce output records=101\n",
"\t\tSpilled Records=606\n",
"\t\tShuffled Maps =2\n",
"\t\tFailed Shuffles=0\n",
"\t\tMerged Map outputs=2\n",
"\t\tGC time elapsed (ms)=8\n",
"\t\tTotal committed heap usage (bytes)=983040000\n",
"\tShuffle Errors\n",
"\t\tBAD_ID=0\n",
"\t\tCONNECTION=0\n",
"\t\tIO_ERROR=0\n",
"\t\tWRONG_LENGTH=0\n",
"\t\tWRONG_MAP=0\n",
"\t\tWRONG_REDUCE=0\n",
"\tFile Input Format Counters \n",
"\t\tBytes Read=203991\n",
"\tFile Output Format Counters \n",
"\t\tBytes Written=2687\n",
"15/09/16 03:13:11 INFO streaming.StreamJob: Output directory: /user/amir/hw2_4/output/\n"
]
}
],
"source": [
"!hadoop jar /usr/local/Cellar/hadoop/2.7.1/libexec/share/hadoop/tools/lib/hadoop-streaming-2.7.1.jar -mapper 'mapper.py assistance valium enlargementWithATypo' -reducer reducer.py -input /user/amir/hw2_2/* -output /user/amir/hw2_4/output/"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Results"
]
},
{
"cell_type": "code",
"execution_count": 77,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"15/09/16 03:13:17 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable\n",
"0010.2003-12-18.GP\t1\t1\n",
"0010.2001-06-28.SA_and_HP\t1\t1\n",
"0001.2000-01-17.beck\t0\t1\n",
"0018.1999-12-14.kaminski\t0\t1\n",
"0005.1999-12-12.kaminski\t0\t1\n",
"0011.2001-06-29.SA_and_HP\t1\t1\n",
"0008.2004-08-01.BG\t1\t1\n",
"0009.1999-12-14.farmer\t0\t1\n",
"0017.2003-12-18.GP\t1\t1\n",
"0011.2001-06-28.SA_and_HP\t1\t1\n",
"0015.2001-07-05.SA_and_HP\t1\t1\n",
"0015.2001-02-12.kitchen\t0\t1\n",
"0009.2001-06-26.SA_and_HP\t1\t1\n",
"0017.1999-12-14.kaminski\t0\t1\n",
"0012.2000-01-17.beck\t0\t1\n",
"0003.2000-01-17.beck\t0\t1\n",
"0004.2001-06-12.SA_and_HP\t1\t1\n",
"0008.2001-06-12.SA_and_HP\t1\t1\n",
"0007.2001-02-09.kitchen\t0\t1\n",
"0016.2004-08-01.BG\t1\t1\n",
"0015.2000-06-09.lokay\t0\t1\n",
"0005.1999-12-14.farmer\t0\t1\n",
"0016.1999-12-15.farmer\t0\t1\n",
"0013.2004-08-01.BG\t1\t1\n",
"0005.2003-12-18.GP\t1\t1\n",
"0012.2001-02-09.kitchen\t0\t1\n",
"0003.2001-02-08.kitchen\t0\t1\n",
"0009.2001-02-09.kitchen\t0\t1\n",
"0006.2001-02-08.kitchen\t0\t1\n",
"0014.2003-12-19.GP\t1\t1\n",
"0010.1999-12-14.farmer\t0\t1\n",
"0010.2004-08-01.BG\t1\t1\n",
"0014.1999-12-14.kaminski\t0\t1\n",
"0006.1999-12-13.kaminski\t0\t1\n",
"0011.1999-12-14.farmer\t0\t1\n",
"0013.1999-12-14.kaminski\t0\t1\n",
"0001.2001-02-07.kitchen\t0\t1\n",
"0008.2001-02-09.kitchen\t0\t1\n",
"0007.2003-12-18.GP\t1\t1\n",
"0017.2004-08-02.BG\t1\t1\n",
"0014.2004-08-01.BG\t1\t1\n",
"0006.2003-12-18.GP\t1\t1\n",
"0016.2001-07-05.SA_and_HP\t1\t1\n",
"0008.2003-12-18.GP\t1\t1\n",
"0014.2001-07-04.SA_and_HP\t1\t1\n",
"0001.2001-04-02.williams\t0\t1\n",
"0012.2000-06-08.lokay\t0\t1\n",
"0014.1999-12-15.farmer\t0\t1\n",
"0009.2000-06-07.lokay\t0\t1\n",
"0001.1999-12-10.farmer\t0\t1\n",
"0008.2001-06-25.SA_and_HP\t1\t1\n",
"0017.2001-04-03.williams\t0\t1\n",
"0014.2001-02-12.kitchen\t0\t1\n",
"0016.2001-07-06.SA_and_HP\t1\t1\n",
"0015.1999-12-15.farmer\t0\t1\n",
"0009.1999-12-13.kaminski\t0\t1\n",
"0001.2000-06-06.lokay\t0\t1\n",
"0011.2004-08-01.BG\t1\t1\n",
"0004.2004-08-01.BG\t1\t1\n",
"0018.2003-12-18.GP\t1\t1\n",
"0002.1999-12-13.farmer\t0\t1\n",
"0016.2003-12-19.GP\t1\t1\n",
"0004.1999-12-14.farmer\t0\t1\n",
"0015.2003-12-19.GP\t1\t1\n",
"0006.2004-08-01.BG\t1\t1\n",
"0009.2003-12-18.GP\t1\t1\n",
"0007.1999-12-14.farmer\t0\t1\n",
"0005.2000-06-06.lokay\t0\t1\n",
"0010.1999-12-14.kaminski\t0\t1\n",
"0007.2000-01-17.beck\t0\t1\n",
"0003.1999-12-14.farmer\t0\t1\n",
"0003.2004-08-01.BG\t1\t1\n",
"0017.2004-08-01.BG\t1\t1\n",
"0013.2001-06-30.SA_and_HP\t1\t1\n",
"0003.1999-12-10.kaminski\t0\t1\n",
"0012.1999-12-14.farmer\t0\t1\n",
"0004.1999-12-10.kaminski\t0\t1\n",
"0018.2001-07-13.SA_and_HP\t1\t1\n",
"0002.2001-02-07.kitchen\t0\t1\n",
"0007.2004-08-01.BG\t1\t1\n",
"0012.1999-12-14.kaminski\t0\t1\n",
"0005.2001-06-23.SA_and_HP\t1\t1\n",
"0007.1999-12-13.kaminski\t0\t1\n",
"0017.2000-01-17.beck\t0\t1\n",
"0006.2001-06-25.SA_and_HP\t1\t1\n",
"0006.2001-04-03.williams\t0\t1\n",
"0005.2001-02-08.kitchen\t0\t1\n",
"0002.2003-12-18.GP\t1\t1\n",
"0003.2003-12-18.GP\t1\t1\n",
"0013.2001-04-03.williams\t0\t1\n",
"0004.2001-04-02.williams\t0\t1\n",
"0010.2001-02-09.kitchen\t0\t1\n",
"0001.1999-12-10.kaminski\t0\t1\n",
"0013.1999-12-14.farmer\t0\t1\n",
"0015.1999-12-14.kaminski\t0\t1\n",
"0012.2003-12-19.GP\t1\t1\n",
"0016.2001-02-12.kitchen\t0\t1\n",
"0002.2004-08-01.BG\t1\t1\n",
"0002.2001-05-25.SA_and_HP\t1\t1\n",
"0011.2003-12-18.GP\t1\t1\n",
"assistance\t8\t1\n"
]
}
],
"source": [
"!hdfs dfs -cat /user/amir/hw2_4/output/part-00000"
]
}
],
"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.10"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment