large = """
position=<-41933,  10711> velocity=< 4, -1>
position=< 10721, -31361> velocity=<-1,  3>
position=<-52401, -20843> velocity=< 5,  2>
position=< 10666, -52404> velocity=<-1,  5>
position=< 31716, -20842> velocity=<-3,  2>
position=<-41914, -31366> velocity=< 4,  3>
position=<-31393, -20845> velocity=< 3,  2>
position=< 10706,  21233> velocity=<-1, -2>
position=< 21181, -31359> velocity=<-2,  3>
position=<-41881,  42273> velocity=< 4, -4>
position=< 42240,  10711> velocity=<-4, -1>
position=<-10376, -20842> velocity=< 1,  2>
position=< 42237,  21233> velocity=<-4, -2>
position=< 31716, -52404> velocity=<-3,  5>
position=< 42254, -41876> velocity=<-4,  4>
position=<-31406, -31364> velocity=< 3,  3>
position=<-20871,  21233> velocity=< 2, -2>
position=< 52740, -31362> velocity=<-5,  3>
position=<-20847, -52401> velocity=< 2,  5>
position=< 31708,  31754> velocity=<-3, -3>
position=< 52755, -10319> velocity=<-5,  1>
position=<-41877, -31358> velocity=< 4,  3>
position=<-31398, -31357> velocity=< 3,  3>
position=<-41877,  31749> velocity=< 4, -3>
position=< 21218, -31359> velocity=<-2,  3>
position=<-52410, -10324> velocity=< 5,  1>
position=< 21225,  42267> velocity=<-2, -4>
position=<-10376,  42273> velocity=< 1, -4>
position=< 52754, -31360> velocity=<-5,  3>
position=<-31355,  31752> velocity=< 3, -3>
position=< 21181, -10323> velocity=<-2,  1>
position=<-52419, -41876> velocity=< 5,  4>
position=< 42240,  42275> velocity=<-4, -4>
position=<-20853, -31366> velocity=< 2,  3>
position=<-31389,  31752> velocity=< 3, -3>
position=< 10713, -20843> velocity=<-1,  2>
position=< 10681, -31357> velocity=<-1,  3>
position=< 31749, -31366> velocity=<-3,  3>
position=<-10342,  31748> velocity=< 1, -3>
position=< 42253,  52786> velocity=<-4, -5>
position=<-41876, -31362> velocity=< 4,  3>
position=<-52436, -52401> velocity=< 5,  5>
position=<-31381,  10710> velocity=< 3, -1>
position=<-10376,  10713> velocity=< 1, -1>
position=<-20863, -31365> velocity=< 2,  3>
position=< 10713, -20842> velocity=<-1,  2>
position=<-20871, -41883> velocity=< 2,  4>
position=< 10722, -20847> velocity=<-1,  2>
position=< 21189,  42275> velocity=<-2, -4>
position=<-20834,  31751> velocity=< 2, -3>
position=<-10336,  21237> velocity=< 1, -2>
position=< 10710,  42273> velocity=<-1, -4>
position=<-41917, -52404> velocity=< 4,  5>
position=< 52754, -31364> velocity=<-5,  3>
position=< 10719,  52790> velocity=<-1, -5>
position=<-52431, -31364> velocity=< 5,  3>
position=< 52766,  10710> velocity=<-5, -1>
position=< 10680, -41876> velocity=<-1,  4>
position=< 21242,  52789> velocity=<-2, -5>
position=< 31737,  52795> velocity=<-3, -5>
position=<-52452,  10716> velocity=< 5, -1>
position=< 10699,  42272> velocity=<-1, -4>
position=< 52759,  10715> velocity=<-5, -1>
position=< 21240,  52786> velocity=<-2, -5>
position=< 42252, -31357> velocity=<-4,  3>
position=<-20887,  21237> velocity=< 2, -2>
position=< 31756,  21231> velocity=<-3, -2>
position=< 52762, -41882> velocity=<-5,  4>
position=< 42267,  52791> velocity=<-4, -5>
position=< 42270,  52786> velocity=<-4, -5>
position=< 42256, -52397> velocity=<-4,  5>
position=<-31397, -31362> velocity=< 3,  3>
position=<-31382, -41880> velocity=< 3,  4>
position=<-31390, -52403> velocity=< 3,  5>
position=< 21218, -10327> velocity=<-2,  1>
position=<-10336, -52403> velocity=< 1,  5>
position=< 21214,  10710> velocity=<-2, -1>
position=< 52746,  10710> velocity=<-5, -1>
position=< 31760,  21229> velocity=<-3, -2>
position=<-31358,  31751> velocity=< 3, -3>
position=< 52786,  52789> velocity=<-5, -5>
position=< 31713, -41876> velocity=<-3,  4>
position=< 31721, -41879> velocity=<-3,  4>
position=< 31732, -52402> velocity=<-3,  5>
position=< 10705,  52790> velocity=<-1, -5>
position=<-31409, -10327> velocity=< 3,  1>
position=<-52404,  10719> velocity=< 5, -1>
position=< 21213, -41878> velocity=<-2,  4>
position=< 21241,  21229> velocity=<-2, -2>
position=< 31724, -52400> velocity=<-3,  5>
position=<-52396,  21236> velocity=< 5, -2>
position=<-20869, -31362> velocity=< 2,  3>
position=<-41909, -20840> velocity=< 4,  2>
position=< 52786,  21231> velocity=<-5, -2>
position=< 42275,  31755> velocity=<-4, -3>
position=<-52399, -41882> velocity=< 5,  4>
position=<-52444, -20844> velocity=< 5,  2>
position=< 52770, -10322> velocity=<-5,  1>
position=<-52436,  52794> velocity=< 5, -5>
position=< 10710,  42269> velocity=<-1, -4>
position=<-52396,  31748> velocity=< 5, -3>
position=< 10720, -20847> velocity=<-1,  2>
position=< 31740, -31360> velocity=<-3,  3>
position=< 31720,  42276> velocity=<-3, -4>
position=<-52436,  52788> velocity=< 5, -5>
position=<-20895,  52790> velocity=< 2, -5>
position=< 21241, -31359> velocity=<-2,  3>
position=<-41933, -10328> velocity=< 4,  1>
position=<-41898, -20842> velocity=< 4,  2>
position=<-52399, -31365> velocity=< 5,  3>
position=<-20853, -31362> velocity=< 2,  3>
position=<-52436, -10322> velocity=< 5,  1>
position=<-52396, -20840> velocity=< 5,  2>
position=< 31756,  52786> velocity=<-3, -5>
position=<-20859, -31366> velocity=< 2,  3>
position=< 31728, -52400> velocity=<-3,  5>
position=<-10375,  31748> velocity=< 1, -3>
position=< 31716,  42270> velocity=<-3, -4>
position=<-31362, -52400> velocity=< 3,  5>
position=<-41909, -10325> velocity=< 4,  1>
position=< 52763, -41885> velocity=<-5,  4>
position=< 31736, -10320> velocity=<-3,  1>
position=< 10691, -31364> velocity=<-1,  3>
position=< 21202,  21236> velocity=<-2, -2>
position=< 31705, -10326> velocity=<-3,  1>
position=< 52772,  21229> velocity=<-5, -2>
position=< 10686, -31364> velocity=<-1,  3>
position=<-10320, -20841> velocity=< 1,  2>
position=<-20847,  42276> velocity=< 2, -4>
position=< 31708, -52400> velocity=<-3,  5>
position=<-10358,  10710> velocity=< 1, -1>
position=< 42275,  10716> velocity=<-4, -1>
position=<-20879,  10712> velocity=< 2, -1>
position=< 42255, -10320> velocity=<-4,  1>
position=< 21189,  52794> velocity=<-2, -5>
position=< 10686,  31756> velocity=<-1, -3>
position=<-31382,  42269> velocity=< 3, -4>
position=<-10374,  52790> velocity=< 1, -5>
position=< 10697,  31748> velocity=<-1, -3>
position=< 31749, -20843> velocity=<-3,  2>
position=< 31724, -31364> velocity=<-3,  3>
position=<-41909,  21235> velocity=< 4, -2>
position=<-20895,  42271> velocity=< 2, -4>
position=< 10699, -31357> velocity=<-1,  3>
position=<-20884, -10319> velocity=< 2,  1>
position=< 42259,  21233> velocity=<-4, -2>
position=< 52791,  21238> velocity=<-5, -2>
position=< 52794, -10325> velocity=<-5,  1>
position=<-20875,  21229> velocity=< 2, -2>
position=< 42222, -52404> velocity=<-4,  5>
position=<-10340, -10320> velocity=< 1,  1>
position=< 52756,  10714> velocity=<-5, -1>
position=< 52791,  42275> velocity=<-5, -4>
position=< 21194,  42276> velocity=<-2, -4>
position=< 42248,  31750> velocity=<-4, -3>
position=<-20871, -41881> velocity=< 2,  4>
position=<-31366, -52398> velocity=< 3,  5>
position=<-10336, -10326> velocity=< 1,  1>
position=< 42236,  10714> velocity=<-4, -1>
position=<-31397,  52786> velocity=< 3, -5>
position=<-52444, -10319> velocity=< 5,  1>
position=< 42254, -10323> velocity=<-4,  1>
position=<-10344, -20839> velocity=< 1,  2>
position=<-41872, -52396> velocity=< 4,  5>
position=< 42243,  42273> velocity=<-4, -4>
position=<-52410, -20843> velocity=< 5,  2>
position=<-20847,  42267> velocity=< 2, -4>
position=< 52781,  10710> velocity=<-5, -1>
position=<-52391, -41884> velocity=< 5,  4>
position=<-41925, -52399> velocity=< 4,  5>
position=< 42236, -31357> velocity=<-4,  3>
position=<-41880,  21231> velocity=< 4, -2>
position=< 31761, -10326> velocity=<-3,  1>
position=< 42235,  21238> velocity=<-4, -2>
position=<-41933,  10718> velocity=< 4, -1>
position=<-31413, -52400> velocity=< 3,  5>
position=< 10679, -20838> velocity=<-1,  2>
position=< 42278, -20843> velocity=<-4,  2>
position=<-41888,  52786> velocity=< 4, -5>
position=<-41916, -41881> velocity=< 4,  4>
position=<-10317,  21233> velocity=< 1, -2>
position=<-20860, -10319> velocity=< 2,  1>
position=<-31374, -52395> velocity=< 3,  5>
position=<-31413,  31748> velocity=< 3, -3>
position=< 10702,  42272> velocity=<-1, -4>
position=< 21198,  42267> velocity=<-2, -4>
position=<-31395, -31362> velocity=< 3,  3>
position=< 52758,  21238> velocity=<-5, -2>
position=< 10722, -41881> velocity=<-1,  4>
position=< 42260, -52400> velocity=<-4,  5>
position=< 52779, -52400> velocity=<-5,  5>
position=< 10711,  21229> velocity=<-1, -2>
position=<-31398, -20843> velocity=< 3,  2>
position=<-41912, -10321> velocity=< 4,  1>
position=< 42271,  21229> velocity=<-4, -2>
position=< 42279,  42273> velocity=<-4, -4>
position=< 42235,  31757> velocity=<-4, -3>
position=<-41914,  31757> velocity=< 4, -3>
position=< 31719, -31362> velocity=<-3,  3>
position=<-41906, -52400> velocity=< 4,  5>
position=<-10323, -41877> velocity=< 1,  4>
position=< 42247,  52790> velocity=<-4, -5>
position=< 42278,  10715> velocity=<-4, -1>
position=< 10718, -52395> velocity=<-1,  5>
position=<-52428,  21238> velocity=< 5, -2>
position=< 21209,  52786> velocity=<-2, -5>
position=<-52392,  42271> velocity=< 5, -4>
position=< 10682,  31757> velocity=<-1, -3>
position=< 31740,  42267> velocity=<-3, -4>
position=< 31756, -10323> velocity=<-3,  1>
position=< 31752,  31755> velocity=<-3, -3>
position=< 52788, -52400> velocity=<-5,  5>
position=< 31750, -41885> velocity=<-3,  4>
position=<-41925,  10713> velocity=< 4, -1>
position=<-20839,  52790> velocity=< 2, -5>
position=< 10705,  21233> velocity=<-1, -2>
position=<-20847, -52400> velocity=< 2,  5>
position=<-20871, -41885> velocity=< 2,  4>
position=< 31700,  52794> velocity=<-3, -5>
position=<-31374, -20839> velocity=< 3,  2>
position=< 21189, -10327> velocity=<-2,  1>
position=< 31724, -20841> velocity=<-3,  2>
position=< 42278,  52791> velocity=<-4, -5>
position=< 52778, -20847> velocity=<-5,  2>
position=< 42227,  21233> velocity=<-4, -2>
position=<-31390,  42268> velocity=< 3, -4>
position=< 10662,  10712> velocity=<-1, -1>
position=< 42259, -10319> velocity=<-4,  1>
position=<-52391,  10719> velocity=< 5, -1>
position=<-20890, -52403> velocity=< 2,  5>
position=< 10678, -41878> velocity=<-1,  4>
position=<-20892,  10710> velocity=< 2, -1>
position=<-52450,  21229> velocity=< 5, -2>
position=< 52798,  21235> velocity=<-5, -2>
position=<-10371, -52402> velocity=< 1,  5>
position=< 42237,  52795> velocity=<-4, -5>
position=<-52433,  31748> velocity=< 5, -3>
position=<-10351,  21229> velocity=< 1, -2>
position=< 52787, -20843> velocity=<-5,  2>
position=< 21213,  52792> velocity=<-2, -5>
position=< 42224,  21231> velocity=<-4, -2>
position=< 21241, -20841> velocity=<-2,  2>
position=< 52786,  31753> velocity=<-5, -3>
position=<-10367,  21238> velocity=< 1, -2>
position=<-10376,  52792> velocity=< 1, -5>
position=< 31744,  52790> velocity=<-3, -5>
position=<-20870, -20843> velocity=< 2,  2>
position=<-20879, -20841> velocity=< 2,  2>
position=< 10689, -52404> velocity=<-1,  5>
position=< 52775,  21237> velocity=<-5, -2>
position=<-10336,  31748> velocity=< 1, -3>
position=<-41901, -41880> velocity=< 4,  4>
position=< 42243,  31753> velocity=<-4, -3>
position=< 42270, -20847> velocity=<-4,  2>
position=< 21213, -20839> velocity=<-2,  2>
position=<-31406, -20845> velocity=< 3,  2>
position=<-41906, -52400> velocity=< 4,  5>
position=<-20866,  10711> velocity=< 2, -1>
position=<-20839, -20843> velocity=< 2,  2>
position=< 10699, -10322> velocity=<-1,  1>
position=<-52427, -20843> velocity=< 5,  2>
position=< 42252, -41876> velocity=<-4,  4>
position=<-10357,  31752> velocity=< 1, -3>
position=< 31732,  31754> velocity=<-3, -3>
position=< 42263,  31748> velocity=<-4, -3>
position=< 52794, -41880> velocity=<-5,  4>
position=<-41885,  10716> velocity=< 4, -1>
position=<-52420, -52396> velocity=< 5,  5>
position=< 42259, -20840> velocity=<-4,  2>
position=< 10674,  31757> velocity=<-1, -3>
position=<-10355,  31751> velocity=< 1, -3>
position=< 10719, -20843> velocity=<-1,  2>
position=< 21197,  42268> velocity=<-2, -4>
position=< 31735,  42272> velocity=<-3, -4>
position=< 42240,  31749> velocity=<-4, -3>
position=< 21194,  31757> velocity=<-2, -3>
position=< 52763, -10328> velocity=<-5,  1>
position=<-41933, -52402> velocity=< 4,  5>
position=<-52403, -10328> velocity=< 5,  1>
position=<-41906,  10710> velocity=< 4, -1>
position=<-41912, -31364> velocity=< 4,  3>
position=<-20887,  10717> velocity=< 2, -1>
position=< 31736,  31748> velocity=<-3, -3>
position=< 31756, -41884> velocity=<-3,  4>
position=<-41913,  31752> velocity=< 4, -3>
position=< 31708,  21233> velocity=<-3, -2>
position=<-52404, -31366> velocity=< 5,  3>
position=< 42262, -20847> velocity=<-4,  2>
position=< 31710, -20838> velocity=<-3,  2>
position=< 52770, -41881> velocity=<-5,  4>
position=<-52396,  42275> velocity=< 5, -4>
position=< 52754,  10713> velocity=<-5, -1>
position=<-20894, -10324> velocity=< 2,  1>
position=< 42277,  31748> velocity=<-4, -3>
position=<-31414,  31749> velocity=< 3, -3>
position=<-20846, -52400> velocity=< 2,  5>
position=< 21205, -10319> velocity=<-2,  1>
position=< 52796,  10714> velocity=<-5, -1>
position=<-41882,  31752> velocity=< 4, -3>
position=<-10364, -52395> velocity=< 1,  5>
position=< 31733,  21229> velocity=<-3, -2>
position=<-20866,  21232> velocity=< 2, -2>
position=< 42276, -10328> velocity=<-4,  1>
position=<-31409, -31365> velocity=< 3,  3>
position=< 42237,  21229> velocity=<-4, -2>
position=< 21217,  52791> velocity=<-2, -5>
position=<-41881,  10714> velocity=< 4, -1>
position=<-31382, -10324> velocity=< 3,  1>
position=< 42278,  42267> velocity=<-4, -4>
position=<-52409,  42267> velocity=< 5, -4>
position=<-31366,  31748> velocity=< 3, -3>
position=<-41893, -10319> velocity=< 4,  1>
position=< 31724, -52404> velocity=<-3,  5>
position=< 10702, -31363> velocity=<-1,  3>
position=<-52451,  10710> velocity=< 5, -1>
position=<-20895, -31364> velocity=< 2,  3>
position=< 21184, -20843> velocity=<-2,  2>
position=< 42275,  10719> velocity=<-4, -1>
position=< 52748,  52795> velocity=<-5, -5>
position=<-20895,  10711> velocity=< 2, -1>
position=<-52444, -20844> velocity=< 5,  2>
position=< 31753, -10326> velocity=<-3,  1>
position=< 21186, -31363> velocity=<-2,  3>
position=< 21221, -10327> velocity=<-2,  1>
position=<-52404, -52397> velocity=< 5,  5>
position=<-10323, -10325> velocity=< 1,  1>
position=< 21201,  31752> velocity=<-2, -3>
position=< 10678, -20840> velocity=<-1,  2>
position=< 31721, -52403> velocity=<-3,  5>
position=< 42272,  52795> velocity=<-4, -5>
position=< 52794,  10712> velocity=<-5, -1>
position=< 10672,  21238> velocity=<-1, -2>
position=< 21215,  31757> velocity=<-2, -3>
position=<-31388, -20843> velocity=< 3,  2>
position=< 21229, -52396> velocity=<-2,  5>
position=< 42224, -10325> velocity=<-4,  1>
position=<-10352, -41880> velocity=< 1,  4>
position=<-52451, -41881> velocity=< 5,  4>
position=<-52452, -20843> velocity=< 5,  2>
position=< 52740, -52404> velocity=<-5,  5>
position=< 31748,  31749> velocity=<-3, -3>
position=<-41893, -31358> velocity=< 4,  3>
position=< 10691, -20846> velocity=<-1,  2>
position=<-20859,  31748> velocity=< 2, -3>
position=< 10662, -52396> velocity=<-1,  5>
position=<-20863,  52789> velocity=< 2, -5>
position=<-31356, -31362> velocity=< 3,  3>
position=< 21215, -10319> velocity=<-2,  1>
position=<-52420, -52400> velocity=< 5,  5>
position=<-52394, -10328> velocity=< 5,  1>
position=<-41877,  42269> velocity=< 4, -4>
position=<-31388,  42271> velocity=< 3, -4>
position=<-10347, -41882> velocity=< 1,  4>
position=< 42259,  52792> velocity=<-4, -5>
position=< 42270, -20842> velocity=<-4,  2>
position=< 21202, -41882> velocity=<-2,  4>
position=<-52411, -52404> velocity=< 5,  5>
position=<-41917,  42267> velocity=< 4, -4>
position=<-20847, -41876> velocity=< 2,  4>
position=< 31732,  42274> velocity=<-3, -4>
position=< 52757,  31748> velocity=<-5, -3>
position=< 31737, -20846> velocity=<-3,  2>
position=< 21237,  52789> velocity=<-2, -5>
position=< 21181,  21238> velocity=<-2, -2>
position=< 31745, -41885> velocity=<-3,  4>
position=< 42223, -52400> velocity=<-4,  5>
position=< 52791,  21238> velocity=<-5, -2>
position=< 52786,  21231> velocity=<-5, -2>
position=<-10324,  21233> velocity=< 1, -2>
position=< 42223, -10324> velocity=<-4,  1>
position=<-52399, -31365> velocity=< 5,  3>
position=< 10678,  52790> velocity=<-1, -5>
position=< 52746,  52791> velocity=<-5, -5>
position=< 42235, -52403> velocity=<-4,  5>
position=<-20851,  10714> velocity=< 2, -1>
position=<-31388, -10328> velocity=< 3,  1>
position=<-31390, -20838> velocity=< 3,  2>
position=<-20874,  42272> velocity=< 2, -4>
position=<-10339, -52397> velocity=< 1,  5>
position=< 52783,  52786> velocity=<-5, -5>""".split('\n')
large.pop(0)

small = """
position=< 9,  1> velocity=< 0,  2>
position=< 7,  0> velocity=<-1,  0>
position=< 3, -2> velocity=<-1,  1>
position=< 6, 10> velocity=<-2, -1>
position=< 2, -4> velocity=< 2,  2>
position=<-6, 10> velocity=< 2, -2>
position=< 1,  8> velocity=< 1, -1>
position=< 1,  7> velocity=< 1,  0>
position=<-3, 11> velocity=< 1, -2>
position=< 7,  6> velocity=<-1, -1>
position=<-2,  3> velocity=< 1,  0>
position=<-4,  3> velocity=< 2,  0>
position=<10, -3> velocity=<-1,  1>
position=< 5, 11> velocity=< 1, -2>
position=< 4,  7> velocity=< 0, -1>
position=< 8, -2> velocity=< 0,  1>
position=<15,  0> velocity=<-2,  0>
position=< 1,  6> velocity=< 1,  0>
position=< 8,  9> velocity=< 0, -1>
position=< 3,  3> velocity=<-1,  1>
position=< 0,  5> velocity=< 0, -1>
position=<-2,  2> velocity=< 2,  0>
position=< 5, -2> velocity=< 1,  2>
position=< 1,  4> velocity=< 2,  1>
position=<-2,  7> velocity=< 2, -2>
position=< 3,  6> velocity=<-1, -1>
position=< 5,  0> velocity=< 1,  0>
position=<-6,  0> velocity=< 2,  0>
position=< 5,  9> velocity=< 1, -2>
position=<14,  7> velocity=<-2,  0>
position=<-3,  6> velocity=< 2, -1>""".split('\n')
small.pop(0)


def tokenToCoor(file):
    X = []
    Y = []
    vel = []
    for line in file:
    	#TODO: use re on this. 
        line = line.replace('position=<','').replace('velocity=<','').replace('<','').replace('>','').replace(',','').split(' ')
        line = list(filter(None,line))
        X.append(int(line[0]))
        Y.append(int(line[1]))
        vel.append([int(line[2]),int(line[3])])
    return X,Y, vel

def update(X,Y, vel):
	rangex = max(X) - min(X) + 1
	rangey = max(Y) - min(Y) + 1


	for i in range(len(X)):
		X[i] += vel[i][0]
		Y[i] += vel[i][1]

def display(X,Y):

	rangex = max(X) - min(X) + 1
	rangey = max(Y) - min(Y) + 1
	print('rangex',rangex,'rangey',rangey)
	# board = [ [ '.' for i in range(rangex) ] for j in range(rangey) ]

	points = list(zip(X,Y))
	# print(points)
	for i in range(min(Y),max(Y)+1):
		layer = ""
		for j in range(min(X),max(X)+1):
			layer +=( 'X' if (j,i) in points else '.')
		print(layer)


                
            
'''Part 1 and 2 '''
'''NOTE: THIS solution never stop'''
X,Y, vel = tokenToCoor(large)

state = 4

count = 0
while(1):
	if(max(X)-min(X) < 100):
		print(count)
		display(X,Y)
	update(X,Y,vel)
	count +=1 
