#include "system.h" /* SIN and COS tables. The table starts with SIN and overlaps with COS. 360 degrees = 4,096 angles to index the table. Values are shifted up 16 times i.e. x 65,536. Also ARCCOS, ARCSIN and ARCTAN */ int oneoversin[4096]; const int sine[4096]={ 0, 100, 201, 301, 402, 502, 603, 703, 804, 904, 1005, 1105, 1206, 1306, 1407, 1507, 1608, 1708, 1809, 1909, 2010, 2110, 2211, 2311, 2412, 2512, 2613, 2713, 2814, 2914, 3014, 3115, 3215, 3316, 3416, 3516, 3617, 3717, 3818, 3918, 4018, 4119, 4219, 4319, 4420, 4520, 4620, 4720, 4821, 4921, 5021, 5121, 5222, 5322, 5422, 5522, 5622, 5722, 5823, 5923, 6023, 6123, 6223, 6323, 6423, 6523, 6623, 6723, 6823, 6923, 7023, 7123, 7223, 7323, 7423, 7523, 7623, 7722, 7822, 7922, 8022, 8122, 8221, 8321, 8421, 8520, 8620, 8720, 8819, 8919, 9019, 9118, 9218, 9317, 9417, 9516, 9616, 9715, 9814, 9914, 10013, 10113, 10212, 10311, 10410, 10510, 10609, 10708, 10807, 10906, 11006, 11105, 11204, 11303, 11402, 11501, 11600, 11699, 11797, 11896, 11995, 12094, 12193, 12292, 12390, 12489, 12588, 12686, 12785, 12884, 12982, 13081, 13179, 13278, 13376, 13474, 13573, 13671, 13769, 13868, 13966, 14064, 14162, 14260, 14359, 14457, 14555, 14653, 14751, 14849, 14946, 15044, 15142, 15240, 15338, 15435, 15533, 15631, 15728, 15826, 15923, 16021, 16118, 16216, 16313, 16411, 16508, 16605, 16702, 16800, 16897, 16994, 17091, 17188, 17285, 17382, 17479, 17576, 17672, 17769, 17866, 17963, 18059, 18156, 18253, 18349, 18446, 18542, 18638, 18735, 18831, 18927, 19024, 19120, 19216, 19312, 19408, 19504, 19600, 19696, 19792, 19888, 19983, 20079, 20175, 20270, 20366, 20461, 20557, 20652, 20748, 20843, 20938, 21034, 21129, 21224, 21319, 21414, 21509, 21604, 21699, 21794, 21889, 21983, 22078, 22173, 22267, 22362, 22456, 22551, 22645, 22739, 22833, 22928, 23022, 23116, 23210, 23304, 23398, 23492, 23586, 23679, 23773, 23867, 23960, 24054, 24147, 24241, 24334, 24427, 24521, 24614, 24707, 24800, 24893, 24986, 25079, 25172, 25265, 25357, 25450, 25543, 25635, 25728, 25820, 25913, 26005, 26097, 26189, 26281, 26373, 26465, 26557, 26649, 26741, 26833, 26925, 27016, 27108, 27199, 27291, 27382, 27473, 27565, 27656, 27747, 27838, 27929, 28020, 28111, 28201, 28292, 28383, 28473, 28564, 28654, 28745, 28835, 28925, 29015, 29105, 29196, 29285, 29375, 29465, 29555, 29645, 29734, 29824, 29913, 30003, 30092, 30181, 30271, 30360, 30449, 30538, 30627, 30715, 30804, 30893, 30982, 31070, 31159, 31247, 31335, 31424, 31512, 31600, 31688, 31776, 31864, 31952, 32039, 32127, 32215, 32302, 32390, 32477, 32564, 32651, 32738, 32826, 32912, 32999, 33086, 33173, 33260, 33346, 33433, 33519, 33605, 33692, 33778, 33864, 33950, 34036, 34122, 34208, 34293, 34379, 34465, 34550, 34635, 34721, 34806, 34891, 34976, 35061, 35146, 35231, 35316, 35400, 35485, 35569, 35654, 35738, 35822, 35906, 35990, 36074, 36158, 36242, 36326, 36409, 36493, 36576, 36660, 36743, 36826, 36909, 36992, 37075, 37158, 37241, 37324, 37406, 37489, 37571, 37653, 37736, 37818, 37900, 37982, 38064, 38146, 38227, 38309, 38390, 38472, 38553, 38634, 38716, 38797, 38878, 38958, 39039, 39120, 39201, 39281, 39362, 39442, 39522, 39602, 39682, 39762, 39842, 39922, 40002, 40081, 40161, 40240, 40319, 40399, 40478, 40557, 40636, 40714, 40793, 40872, 40950, 41029, 41107, 41185, 41263, 41342, 41419, 41497, 41575, 41653, 41730, 41808, 41885, 41962, 42040, 42117, 42194, 42271, 42347, 42424, 42501, 42577, 42653, 42730, 42806, 42882, 42958, 43034, 43110, 43185, 43261, 43336, 43412, 43487, 43562, 43637, 43712, 43787, 43862, 43936, 44011, 44085, 44160, 44234, 44308, 44382, 44456, 44530, 44603, 44677, 44750, 44824, 44897, 44970, 45043, 45116, 45189, 45262, 45335, 45407, 45480, 45552, 45624, 45696, 45768, 45840, 45912, 45984, 46055, 46127, 46198, 46269, 46340, 46411, 46482, 46553, 46624, 46695, 46765, 46835, 46906, 46976, 47046, 47116, 47186, 47255, 47325, 47394, 47464, 47533, 47602, 47671, 47740, 47809, 47878, 47946, 48015, 48083, 48151, 48219, 48288, 48355, 48423, 48491, 48558, 48626, 48693, 48760, 48828, 48895, 48961, 49028, 49095, 49161, 49228, 49294, 49360, 49426, 49492, 49558, 49624, 49690, 49755, 49820, 49886, 49951, 50016, 50081, 50146, 50210, 50275, 50339, 50403, 50468, 50532, 50596, 50660, 50723, 50787, 50850, 50914, 50977, 51040, 51103, 51166, 51229, 51291, 51354, 51416, 51478, 51541, 51603, 51665, 51726, 51788, 51850, 51911, 51972, 52033, 52095, 52155, 52216, 52277, 52338, 52398, 52458, 52518, 52579, 52639, 52698, 52758, 52818, 52877, 52936, 52996, 53055, 53114, 53172, 53231, 53290, 53348, 53407, 53465, 53523, 53581, 53639, 53696, 53754, 53811, 53869, 53926, 53983, 54040, 54097, 54153, 54210, 54266, 54323, 54379, 54435, 54491, 54546, 54602, 54658, 54713, 54768, 54823, 54879, 54933, 54988, 55043, 55097, 55152, 55206, 55260, 55314, 55368, 55422, 55475, 55529, 55582, 55635, 55688, 55741, 55794, 55847, 55899, 55952, 56004, 56056, 56108, 56160, 56212, 56263, 56315, 56366, 56417, 56468, 56519, 56570, 56621, 56671, 56722, 56772, 56822, 56872, 56922, 56972, 57022, 57071, 57120, 57170, 57219, 57268, 57316, 57365, 57414, 57462, 57510, 57558, 57606, 57654, 57702, 57750, 57797, 57844, 57892, 57939, 57986, 58032, 58079, 58125, 58172, 58218, 58264, 58310, 58356, 58402, 58447, 58493, 58538, 58583, 58628, 58673, 58718, 58762, 58807, 58851, 58895, 58939, 58983, 59027, 59070, 59114, 59157, 59200, 59243, 59286, 59329, 59372, 59414, 59457, 59499, 59541, 59583, 59625, 59666, 59708, 59749, 59790, 59831, 59872, 59913, 59954, 59994, 60035, 60075, 60115, 60155, 60195, 60235, 60274, 60313, 60353, 60392, 60431, 60470, 60508, 60547, 60585, 60624, 60662, 60700, 60737, 60775, 60813, 60850, 60887, 60924, 60961, 60998, 61035, 61071, 61108, 61144, 61180, 61216, 61252, 61288, 61323, 61359, 61394, 61429, 61464, 61499, 61533, 61568, 61602, 61637, 61671, 61705, 61738, 61772, 61805, 61839, 61872, 61905, 61938, 61971, 62003, 62036, 62068, 62100, 62133, 62164, 62196, 62228, 62259, 62291, 62322, 62353, 62384, 62414, 62445, 62475, 62506, 62536, 62566, 62596, 62625, 62655, 62684, 62714, 62743, 62772, 62800, 62829, 62858, 62886, 62914, 62942, 62970, 62998, 63026, 63053, 63080, 63108, 63135, 63162, 63188, 63215, 63241, 63268, 63294, 63320, 63346, 63371, 63397, 63422, 63447, 63473, 63498, 63522, 63547, 63571, 63596, 63620, 63644, 63668, 63692, 63715, 63739, 63762, 63785, 63808, 63831, 63854, 63876, 63899, 63921, 63943, 63965, 63987, 64009, 64030, 64051, 64073, 64094, 64115, 64135, 64156, 64176, 64197, 64217, 64237, 64257, 64276, 64296, 64315, 64334, 64353, 64372, 64391, 64410, 64428, 64447, 64465, 64483, 64501, 64518, 64536, 64553, 64571, 64588, 64605, 64622, 64638, 64655, 64671, 64687, 64703, 64719, 64735, 64751, 64766, 64781, 64796, 64811, 64826, 64841, 64855, 64870, 64884, 64898, 64912, 64926, 64939, 64953, 64966, 64979, 64992, 65005, 65018, 65030, 65043, 65055, 65067, 65079, 65091, 65102, 65114, 65125, 65136, 65147, 65158, 65169, 65179, 65190, 65200, 65210, 65220, 65230, 65239, 65249, 65258, 65267, 65276, 65285, 65294, 65302, 65311, 65319, 65327, 65335, 65343, 65350, 65358, 65365, 65372, 65379, 65386, 65393, 65400, 65406, 65412, 65418, 65424, 65430, 65436, 65441, 65446, 65452, 65457, 65461, 65466, 65471, 65475, 65479, 65483, 65487, 65491, 65495, 65498, 65501, 65505, 65508, 65511, 65513, 65516, 65518, 65520, 65522, 65524, 65526, 65528, 65529, 65531, 65532, 65533, 65534, 65534, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65534, 65534, 65533, 65532, 65531, 65529, 65528, 65526, 65524, 65522, 65520, 65518, 65516, 65513, 65511, 65508, 65505, 65501, 65498, 65495, 65491, 65487, 65483, 65479, 65475, 65471, 65466, 65461, 65457, 65452, 65446, 65441, 65436, 65430, 65424, 65418, 65412, 65406, 65400, 65393, 65386, 65379, 65372, 65365, 65358, 65350, 65343, 65335, 65327, 65319, 65311, 65302, 65294, 65285, 65276, 65267, 65258, 65249, 65239, 65230, 65220, 65210, 65200, 65190, 65179, 65169, 65158, 65147, 65136, 65125, 65114, 65102, 65091, 65079, 65067, 65055, 65043, 65030, 65018, 65005, 64992, 64979, 64966, 64953, 64939, 64926, 64912, 64898, 64884, 64870, 64855, 64841, 64826, 64811, 64796, 64781, 64766, 64751, 64735, 64719, 64703, 64687, 64671, 64655, 64638, 64622, 64605, 64588, 64571, 64553, 64536, 64518, 64501, 64483, 64465, 64447, 64428, 64410, 64391, 64372, 64353, 64334, 64315, 64296, 64276, 64257, 64237, 64217, 64197, 64176, 64156, 64135, 64115, 64094, 64073, 64051, 64030, 64009, 63987, 63965, 63943, 63921, 63899, 63876, 63854, 63831, 63808, 63785, 63762, 63739, 63715, 63692, 63668, 63644, 63620, 63596, 63571, 63547, 63522, 63498, 63473, 63447, 63422, 63397, 63371, 63346, 63320, 63294, 63268, 63241, 63215, 63188, 63162, 63135, 63108, 63080, 63053, 63026, 62998, 62970, 62942, 62914, 62886, 62858, 62829, 62800, 62772, 62743, 62714, 62684, 62655, 62625, 62596, 62566, 62536, 62506, 62475, 62445, 62414, 62384, 62353, 62322, 62291, 62259, 62228, 62196, 62164, 62133, 62100, 62068, 62036, 62003, 61971, 61938, 61905, 61872, 61839, 61805, 61772, 61738, 61705, 61671, 61637, 61602, 61568, 61533, 61499, 61464, 61429, 61394, 61359, 61323, 61288, 61252, 61216, 61180, 61144, 61108, 61071, 61035, 60998, 60961, 60924, 60887, 60850, 60813, 60775, 60737, 60700, 60662, 60624, 60585, 60547, 60508, 60470, 60431, 60392, 60353, 60313, 60274, 60235, 60195, 60155, 60115, 60075, 60035, 59994, 59954, 59913, 59872, 59831, 59790, 59749, 59708, 59666, 59625, 59583, 59541, 59499, 59457, 59414, 59372, 59329, 59286, 59243, 59200, 59157, 59114, 59070, 59027, 58983, 58939, 58895, 58851, 58807, 58762, 58718, 58673, 58628, 58583, 58538, 58493, 58447, 58402, 58356, 58310, 58264, 58218, 58172, 58125, 58079, 58032, 57986, 57939, 57892, 57844, 57797, 57750, 57702, 57654, 57606, 57558, 57510, 57462, 57414, 57365, 57316, 57268, 57219, 57170, 57120, 57071, 57022, 56972, 56922, 56872, 56822, 56772, 56722, 56671, 56621, 56570, 56519, 56468, 56417, 56366, 56315, 56263, 56212, 56160, 56108, 56056, 56004, 55952, 55899, 55847, 55794, 55741, 55688, 55635, 55582, 55529, 55475, 55422, 55368, 55314, 55260, 55206, 55152, 55097, 55043, 54988, 54933, 54879, 54823, 54768, 54713, 54658, 54602, 54546, 54491, 54435, 54379, 54323, 54266, 54210, 54153, 54097, 54040, 53983, 53926, 53869, 53811, 53754, 53696, 53639, 53581, 53523, 53465, 53407, 53348, 53290, 53231, 53172, 53114, 53055, 52996, 52936, 52877, 52818, 52758, 52698, 52639, 52579, 52518, 52458, 52398, 52338, 52277, 52216, 52155, 52095, 52033, 51972, 51911, 51850, 51788, 51726, 51665, 51603, 51541, 51478, 51416, 51354, 51291, 51229, 51166, 51103, 51040, 50977, 50914, 50850, 50787, 50723, 50660, 50596, 50532, 50468, 50403, 50339, 50275, 50210, 50146, 50081, 50016, 49951, 49886, 49820, 49755, 49690, 49624, 49558, 49492, 49426, 49360, 49294, 49228, 49161, 49095, 49028, 48961, 48895, 48828, 48760, 48693, 48626, 48558, 48491, 48423, 48355, 48288, 48219, 48151, 48083, 48015, 47946, 47878, 47809, 47740, 47671, 47602, 47533, 47464, 47394, 47325, 47255, 47186, 47116, 47046, 46976, 46906, 46835, 46765, 46695, 46624, 46553, 46482, 46411, 46340, 46269, 46198, 46127, 46055, 45984, 45912, 45840, 45768, 45696, 45624, 45552, 45480, 45407, 45335, 45262, 45189, 45116, 45043, 44970, 44897, 44824, 44750, 44677, 44603, 44530, 44456, 44382, 44308, 44234, 44160, 44085, 44011, 43936, 43862, 43787, 43712, 43637, 43562, 43487, 43412, 43336, 43261, 43185, 43110, 43034, 42958, 42882, 42806, 42730, 42653, 42577, 42501, 42424, 42347, 42271, 42194, 42117, 42040, 41962, 41885, 41808, 41730, 41653, 41575, 41497, 41419, 41342, 41263, 41185, 41107, 41029, 40950, 40872, 40793, 40714, 40636, 40557, 40478, 40399, 40319, 40240, 40161, 40081, 40002, 39922, 39842, 39762, 39682, 39602, 39522, 39442, 39362, 39281, 39201, 39120, 39039, 38958, 38878, 38797, 38716, 38634, 38553, 38472, 38390, 38309, 38227, 38146, 38064, 37982, 37900, 37818, 37736, 37653, 37571, 37489, 37406, 37324, 37241, 37158, 37075, 36992, 36909, 36826, 36743, 36660, 36576, 36493, 36409, 36326, 36242, 36158, 36074, 35990, 35906, 35822, 35738, 35654, 35569, 35485, 35400, 35316, 35231, 35146, 35061, 34976, 34891, 34806, 34721, 34635, 34550, 34465, 34379, 34293, 34208, 34122, 34036, 33950, 33864, 33778, 33692, 33605, 33519, 33433, 33346, 33260, 33173, 33086, 32999, 32912, 32826, 32738, 32651, 32564, 32477, 32390, 32302, 32215, 32127, 32039, 31952, 31864, 31776, 31688, 31600, 31512, 31424, 31335, 31247, 31159, 31070, 30982, 30893, 30804, 30715, 30627, 30538, 30449, 30360, 30271, 30181, 30092, 30003, 29913, 29824, 29734, 29645, 29555, 29465, 29375, 29285, 29196, 29105, 29015, 28925, 28835, 28745, 28654, 28564, 28473, 28383, 28292, 28201, 28111, 28020, 27929, 27838, 27747, 27656, 27565, 27473, 27382, 27291, 27199, 27108, 27016, 26925, 26833, 26741, 26649, 26557, 26465, 26373, 26281, 26189, 26097, 26005, 25913, 25820, 25728, 25635, 25543, 25450, 25357, 25265, 25172, 25079, 24986, 24893, 24800, 24707, 24614, 24521, 24427, 24334, 24241, 24147, 24054, 23960, 23867, 23773, 23679, 23586, 23492, 23398, 23304, 23210, 23116, 23022, 22928, 22833, 22739, 22645, 22551, 22456, 22362, 22267, 22173, 22078, 21983, 21889, 21794, 21699, 21604, 21509, 21414, 21319, 21224, 21129, 21034, 20938, 20843, 20748, 20652, 20557, 20461, 20366, 20270, 20175, 20079, 19983, 19888, 19792, 19696, 19600, 19504, 19408, 19312, 19216, 19120, 19024, 18927, 18831, 18735, 18638, 18542, 18446, 18349, 18253, 18156, 18059, 17963, 17866, 17769, 17672, 17576, 17479, 17382, 17285, 17188, 17091, 16994, 16897, 16800, 16702, 16605, 16508, 16411, 16313, 16216, 16118, 16021, 15923, 15826, 15728, 15631, 15533, 15435, 15338, 15240, 15142, 15044, 14946, 14849, 14751, 14653, 14555, 14457, 14359, 14260, 14162, 14064, 13966, 13868, 13769, 13671, 13573, 13474, 13376, 13278, 13179, 13081, 12982, 12884, 12785, 12686, 12588, 12489, 12390, 12292, 12193, 12094, 11995, 11896, 11797, 11699, 11600, 11501, 11402, 11303, 11204, 11105, 11006, 10906, 10807, 10708, 10609, 10510, 10410, 10311, 10212, 10113, 10013, 9914, 9814, 9715, 9616, 9516, 9417, 9317, 9218, 9118, 9019, 8919, 8819, 8720, 8620, 8520, 8421, 8321, 8221, 8122, 8022, 7922, 7822, 7722, 7623, 7523, 7423, 7323, 7223, 7123, 7023, 6923, 6823, 6723, 6623, 6523, 6423, 6323, 6223, 6123, 6023, 5923, 5823, 5722, 5622, 5522, 5422, 5322, 5222, 5121, 5021, 4921, 4821, 4720, 4620, 4520, 4420, 4319, 4219, 4119, 4018, 3918, 3818, 3717, 3617, 3516, 3416, 3316, 3215, 3115, 3014, 2914, 2814, 2713, 2613, 2512, 2412, 2311, 2211, 2110, 2010, 1909, 1809, 1708, 1608, 1507, 1407, 1306, 1206, 1105, 1005, 904, 804, 703, 603, 502, 402, 301, 201, 100, 0, -101, -202, -302, -403, -503, -604, -704, -805, -905, -1006, -1106, -1207, -1307, -1408, -1508, -1609, -1709, -1810, -1910, -2011, -2111, -2212, -2312, -2413, -2513, -2614, -2714, -2814, -2915, -3015, -3116, -3216, -3317, -3417, -3517, -3618, -3718, -3819, -3919, -4019, -4120, -4220, -4320, -4421, -4521, -4621, -4721, -4822, -4922, -5022, -5122, -5223, -5323, -5423, -5523, -5623, -5723, -5824, -5924, -6024, -6124, -6224, -6324, -6424, -6524, -6624, -6724, -6824, -6924, -7024, -7124, -7224, -7324, -7424, -7524, -7624, -7723, -7823, -7923, -8023, -8123, -8222, -8322, -8422, -8521, -8621, -8721, -8820, -8920, -9020, -9119, -9219, -9318, -9418, -9517, -9617, -9716, -9815, -9915, -10014, -10114, -10213, -10312, -10411, -10511, -10610, -10709, -10808, -10907, -11007, -11106, -11205, -11304, -11403, -11502, -11601, -11700, -11798, -11897, -11996, -12095, -12194, -12293, -12391, -12490, -12589, -12687, -12786, -12885, -12983, -13082, -13180, -13279, -13377, -13475, -13574, -13672, -13770, -13869, -13967, -14065, -14163, -14261, -14360, -14458, -14556, -14654, -14752, -14850, -14947, -15045, -15143, -15241, -15339, -15436, -15534, -15632, -15729, -15827, -15924, -16022, -16119, -16217, -16314, -16412, -16509, -16606, -16703, -16801, -16898, -16995, -17092, -17189, -17286, -17383, -17480, -17577, -17673, -17770, -17867, -17964, -18060, -18157, -18254, -18350, -18447, -18543, -18639, -18736, -18832, -18928, -19025, -19121, -19217, -19313, -19409, -19505, -19601, -19697, -19793, -19889, -19984, -20080, -20176, -20271, -20367, -20462, -20558, -20653, -20749, -20844, -20939, -21035, -21130, -21225, -21320, -21415, -21510, -21605, -21700, -21795, -21889, -21984, -22079, -22174, -22268, -22363, -22457, -22552, -22646, -22740, -22834, -22929, -23023, -23117, -23211, -23305, -23399, -23493, -23587, -23680, -23774, -23868, -23961, -24055, -24148, -24242, -24335, -24428, -24522, -24615, -24708, -24801, -24894, -24987, -25080, -25173, -25266, -25358, -25451, -25544, -25636, -25729, -25821, -25914, -26006, -26098, -26190, -26282, -26374, -26466, -26558, -26650, -26742, -26834, -26926, -27017, -27109, -27200, -27292, -27383, -27474, -27566, -27657, -27748, -27839, -27930, -28021, -28112, -28202, -28293, -28384, -28474, -28565, -28655, -28746, -28836, -28926, -29016, -29106, -29197, -29286, -29376, -29466, -29556, -29646, -29735, -29825, -29914, -30004, -30093, -30182, -30272, -30361, -30450, -30539, -30628, -30716, -30805, -30894, -30983, -31071, -31160, -31248, -31336, -31425, -31513, -31601, -31689, -31777, -31865, -31953, -32040, -32128, -32216, -32303, -32391, -32478, -32565, -32652, -32739, -32827, -32913, -33000, -33087, -33174, -33261, -33347, -33434, -33520, -33606, -33693, -33779, -33865, -33951, -34037, -34123, -34209, -34294, -34380, -34466, -34551, -34636, -34722, -34807, -34892, -34977, -35062, -35147, -35232, -35317, -35401, -35486, -35570, -35655, -35739, -35823, -35907, -35991, -36075, -36159, -36243, -36327, -36410, -36494, -36577, -36661, -36744, -36827, -36910, -36993, -37076, -37159, -37242, -37325, -37407, -37490, -37572, -37654, -37737, -37819, -37901, -37983, -38065, -38147, -38228, -38310, -38391, -38473, -38554, -38635, -38717, -38798, -38879, -38959, -39040, -39121, -39202, -39282, -39362, -39443, -39523, -39603, -39683, -39763, -39843, -39923, -40003, -40082, -40162, -40241, -40320, -40400, -40479, -40558, -40637, -40715, -40794, -40873, -40951, -41030, -41108, -41186, -41264, -41343, -41420, -41498, -41576, -41654, -41731, -41809, -41886, -41963, -42041, -42118, -42195, -42272, -42348, -42425, -42502, -42578, -42654, -42731, -42807, -42883, -42959, -43035, -43111, -43186, -43262, -43337, -43413, -43488, -43563, -43638, -43713, -43788, -43863, -43937, -44012, -44086, -44161, -44235, -44309, -44383, -44457, -44531, -44604, -44678, -44751, -44825, -44898, -44971, -45044, -45117, -45190, -45263, -45336, -45408, -45481, -45553, -45625, -45697, -45769, -45841, -45913, -45985, -46056, -46128, -46199, -46270, -46341, -46412, -46483, -46554, -46625, -46696, -46766, -46836, -46907, -46977, -47047, -47117, -47187, -47256, -47326, -47395, -47465, -47534, -47603, -47672, -47741, -47810, -47879, -47947, -48016, -48084, -48152, -48220, -48289, -48356, -48424, -48492, -48559, -48627, -48694, -48761, -48829, -48896, -48962, -49029, -49096, -49162, -49229, -49295, -49361, -49427, -49493, -49559, -49625, -49691, -49756, -49821, -49887, -49952, -50017, -50082, -50146, -50211, -50276, -50340, -50404, -50469, -50533, -50597, -50661, -50724, -50788, -50851, -50915, -50978, -51041, -51104, -51167, -51230, -51292, -51355, -51417, -51479, -51542, -51604, -51666, -51727, -51789, -51851, -51912, -51973, -52034, -52096, -52156, -52217, -52278, -52339, -52399, -52459, -52519, -52580, -52640, -52699, -52759, -52819, -52878, -52937, -52997, -53056, -53115, -53173, -53232, -53291, -53349, -53408, -53466, -53524, -53582, -53640, -53697, -53755, -53812, -53870, -53927, -53984, -54041, -54098, -54154, -54211, -54267, -54324, -54380, -54436, -54492, -54547, -54603, -54659, -54714, -54769, -54824, -54880, -54934, -54989, -55044, -55098, -55153, -55207, -55261, -55315, -55369, -55423, -55476, -55530, -55583, -55636, -55689, -55742, -55795, -55848, -55900, -55953, -56005, -56057, -56109, -56161, -56213, -56264, -56316, -56367, -56418, -56469, -56520, -56571, -56622, -56672, -56723, -56773, -56823, -56873, -56923, -56973, -57023, -57072, -57121, -57171, -57220, -57269, -57317, -57366, -57415, -57463, -57511, -57559, -57607, -57655, -57703, -57751, -57798, -57845, -57893, -57940, -57987, -58033, -58080, -58126, -58173, -58219, -58265, -58311, -58357, -58403, -58448, -58494, -58539, -58584, -58629, -58674, -58719, -58763, -58808, -58852, -58896, -58940, -58984, -59028, -59071, -59115, -59158, -59201, -59244, -59287, -59330, -59373, -59415, -59458, -59500, -59542, -59584, -59626, -59667, -59709, -59750, -59791, -59832, -59873, -59914, -59955, -59995, -60036, -60076, -60116, -60156, -60196, -60236, -60275, -60314, -60354, -60393, -60432, -60471, -60509, -60548, -60586, -60625, -60663, -60701, -60738, -60776, -60814, -60851, -60888, -60925, -60962, -60999, -61036, -61072, -61109, -61145, -61181, -61217, -61253, -61289, -61324, -61360, -61395, -61430, -61465, -61500, -61534, -61569, -61603, -61638, -61672, -61706, -61739, -61773, -61806, -61840, -61873, -61906, -61939, -61972, -62004, -62037, -62069, -62101, -62134, -62165, -62197, -62229, -62260, -62292, -62323, -62354, -62385, -62415, -62446, -62476, -62507, -62537, -62567, -62597, -62626, -62656, -62685, -62715, -62744, -62773, -62801, -62830, -62859, -62887, -62915, -62943, -62971, -62999, -63027, -63054, -63081, -63109, -63136, -63163, -63189, -63216, -63242, -63269, -63295, -63321, -63347, -63372, -63398, -63423, -63448, -63474, -63499, -63523, -63548, -63572, -63597, -63621, -63645, -63669, -63693, -63716, -63740, -63763, -63786, -63809, -63832, -63855, -63877, -63900, -63922, -63944, -63966, -63988, -64010, -64031, -64052, -64074, -64095, -64116, -64136, -64157, -64177, -64198, -64218, -64238, -64258, -64277, -64297, -64316, -64335, -64354, -64373, -64392, -64411, -64429, -64448, -64466, -64484, -64502, -64519, -64537, -64554, -64572, -64589, -64606, -64623, -64639, -64656, -64672, -64688, -64704, -64720, -64736, -64752, -64767, -64782, -64797, -64812, -64827, -64842, -64856, -64871, -64885, -64899, -64913, -64927, -64940, -64954, -64967, -64980, -64993, -65006, -65019, -65031, -65044, -65056, -65068, -65080, -65092, -65103, -65115, -65126, -65137, -65148, -65159, -65170, -65180, -65191, -65201, -65211, -65221, -65231, -65240, -65250, -65259, -65268, -65277, -65286, -65295, -65303, -65312, -65320, -65328, -65336, -65344, -65351, -65359, -65366, -65373, -65380, -65387, -65394, -65401, -65407, -65413, -65419, -65425, -65431, -65437, -65442, -65447, -65453, -65458, -65462, -65467, -65472, -65476, -65480, -65484, -65488, -65492, -65496, -65499, -65502, -65506, -65509, -65512, -65514, -65517, -65519, -65521, -65523, -65525, -65527, -65529, -65530, -65532, -65533, -65534, -65535, -65535, -65536, -65536, -65536, -65536, -65536, -65536, -65536, -65535, -65535, -65534, -65533, -65532, -65530, -65529, -65527, -65525, -65523, -65521, -65519, -65517, -65514, -65512, -65509, -65506, -65502, -65499, -65496, -65492, -65488, -65484, -65480, -65476, -65472, -65467, -65462, -65458, -65453, -65447, -65442, -65437, -65431, -65425, -65419, -65413, -65407, -65401, -65394, -65387, -65380, -65373, -65366, -65359, -65351, -65344, -65336, -65328, -65320, -65312, -65303, -65295, -65286, -65277, -65268, -65259, -65250, -65240, -65231, -65221, -65211, -65201, -65191, -65180, -65170, -65159, -65148, -65137, -65126, -65115, -65103, -65092, -65080, -65068, -65056, -65044, -65031, -65019, -65006, -64993, -64980, -64967, -64954, -64940, -64927, -64913, -64899, -64885, -64871, -64856, -64842, -64827, -64812, -64797, -64782, -64767, -64752, -64736, -64720, -64704, -64688, -64672, -64656, -64639, -64623, -64606, -64589, -64572, -64554, -64537, -64519, -64502, -64484, -64466, -64448, -64429, -64411, -64392, -64373, -64354, -64335, -64316, -64297, -64277, -64258, -64238, -64218, -64198, -64177, -64157, -64136, -64116, -64095, -64074, -64052, -64031, -64010, -63988, -63966, -63944, -63922, -63900, -63877, -63855, -63832, -63809, -63786, -63763, -63740, -63716, -63693, -63669, -63645, -63621, -63597, -63572, -63548, -63523, -63499, -63474, -63448, -63423, -63398, -63372, -63347, -63321, -63295, -63269, -63242, -63216, -63189, -63163, -63136, -63109, -63081, -63054, -63027, -62999, -62971, -62943, -62915, -62887, -62859, -62830, -62801, -62773, -62744, -62715, -62685, -62656, -62626, -62597, -62567, -62537, -62507, -62476, -62446, -62415, -62385, -62354, -62323, -62292, -62260, -62229, -62197, -62165, -62134, -62101, -62069, -62037, -62004, -61972, -61939, -61906, -61873, -61840, -61806, -61773, -61739, -61706, -61672, -61638, -61603, -61569, -61534, -61500, -61465, -61430, -61395, -61360, -61324, -61289, -61253, -61217, -61181, -61145, -61109, -61072, -61036, -60999, -60962, -60925, -60888, -60851, -60814, -60776, -60738, -60701, -60663, -60625, -60586, -60548, -60509, -60471, -60432, -60393, -60354, -60314, -60275, -60236, -60196, -60156, -60116, -60076, -60036, -59995, -59955, -59914, -59873, -59832, -59791, -59750, -59709, -59667, -59626, -59584, -59542, -59500, -59458, -59415, -59373, -59330, -59287, -59244, -59201, -59158, -59115, -59071, -59028, -58984, -58940, -58896, -58852, -58808, -58763, -58719, -58674, -58629, -58584, -58539, -58494, -58448, -58403, -58357, -58311, -58265, -58219, -58173, -58126, -58080, -58033, -57987, -57940, -57893, -57845, -57798, -57751, -57703, -57655, -57607, -57559, -57511, -57463, -57415, -57366, -57317, -57269, -57220, -57171, -57121, -57072, -57023, -56973, -56923, -56873, -56823, -56773, -56723, -56672, -56622, -56571, -56520, -56469, -56418, -56367, -56316, -56264, -56213, -56161, -56109, -56057, -56005, -55953, -55900, -55848, -55795, -55742, -55689, -55636, -55583, -55530, -55476, -55423, -55369, -55315, -55261, -55207, -55153, -55098, -55044, -54989, -54934, -54880, -54824, -54769, -54714, -54659, -54603, -54547, -54492, -54436, -54380, -54324, -54267, -54211, -54154, -54098, -54041, -53984, -53927, -53870, -53812, -53755, -53697, -53640, -53582, -53524, -53466, -53408, -53349, -53291, -53232, -53173, -53115, -53056, -52997, -52937, -52878, -52819, -52759, -52699, -52640, -52580, -52519, -52459, -52399, -52339, -52278, -52217, -52156, -52096, -52034, -51973, -51912, -51851, -51789, -51727, -51666, -51604, -51542, -51479, -51417, -51355, -51292, -51230, -51167, -51104, -51041, -50978, -50915, -50851, -50788, -50724, -50661, -50597, -50533, -50469, -50404, -50340, -50276, -50211, -50147, -50082, -50017, -49952, -49887, -49821, -49756, -49691, -49625, -49559, -49493, -49427, -49361, -49295, -49229, -49162, -49096, -49029, -48962, -48896, -48829, -48761, -48694, -48627, -48559, -48492, -48424, -48356, -48289, -48220, -48152, -48084, -48016, -47947, -47879, -47810, -47741, -47672, -47603, -47534, -47465, -47395, -47326, -47256, -47187, -47117, -47047, -46977, -46907, -46836, -46766, -46696, -46625, -46554, -46483, -46412, -46341, -46270, -46199, -46128, -46056, -45985, -45913, -45841, -45769, -45697, -45625, -45553, -45481, -45408, -45336, -45263, -45190, -45117, -45044, -44971, -44898, -44825, -44751, -44678, -44604, -44531, -44457, -44383, -44309, -44235, -44161, -44086, -44012, -43937, -43863, -43788, -43713, -43638, -43563, -43488, -43413, -43337, -43262, -43186, -43111, -43035, -42959, -42883, -42807, -42731, -42654, -42578, -42502, -42425, -42348, -42272, -42195, -42118, -42041, -41963, -41886, -41809, -41731, -41654, -41576, -41498, -41420, -41343, -41264, -41186, -41108, -41030, -40951, -40873, -40794, -40715, -40637, -40558, -40479, -40400, -40320, -40241, -40162, -40082, -40003, -39923, -39843, -39763, -39683, -39603, -39523, -39443, -39363, -39282, -39202, -39121, -39040, -38959, -38879, -38798, -38717, -38635, -38554, -38473, -38391, -38310, -38228, -38147, -38065, -37983, -37901, -37819, -37737, -37654, -37572, -37490, -37407, -37325, -37242, -37159, -37076, -36993, -36910, -36827, -36744, -36661, -36577, -36494, -36410, -36327, -36243, -36159, -36075, -35991, -35907, -35823, -35739, -35655, -35570, -35486, -35401, -35317, -35232, -35147, -35062, -34977, -34892, -34807, -34722, -34636, -34551, -34466, -34380, -34294, -34209, -34123, -34037, -33951, -33865, -33779, -33693, -33606, -33520, -33434, -33347, -33261, -33174, -33087, -33000, -32914, -32827, -32739, -32652, -32565, -32478, -32391, -32303, -32216, -32128, -32040, -31953, -31865, -31777, -31689, -31601, -31513, -31425, -31336, -31248, -31160, -31071, -30983, -30894, -30805, -30716, -30628, -30539, -30450, -30361, -30272, -30182, -30093, -30004, -29914, -29825, -29735, -29646, -29556, -29466, -29376, -29287, -29197, -29106, -29016, -28926, -28836, -28746, -28655, -28565, -28474, -28384, -28293, -28202, -28112, -28021, -27930, -27839, -27748, -27657, -27566, -27474, -27383, -27292, -27200, -27109, -27017, -26926, -26834, -26742, -26650, -26558, -26466, -26374, -26282, -26190, -26098, -26006, -25914, -25821, -25729, -25636, -25544, -25451, -25358, -25266, -25173, -25080, -24987, -24894, -24801, -24708, -24615, -24522, -24428, -24335, -24242, -24148, -24055, -23961, -23868, -23774, -23680, -23587, -23493, -23399, -23305, -23211, -23117, -23023, -22929, -22834, -22740, -22646, -22552, -22457, -22363, -22268, -22174, -22079, -21984, -21890, -21795, -21700, -21605, -21510, -21415, -21320, -21225, -21130, -21035, -20939, -20844, -20749, -20653, -20558, -20462, -20367, -20271, -20176, -20080, -19984, -19889, -19793, -19697, -19601, -19505, -19409, -19313, -19217, -19121, -19025, -18928, -18832, -18736, -18639, -18543, -18447, -18350, -18254, -18157, -18060, -17964, -17867, -17770, -17673, -17577, -17480, -17383, -17286, -17189, -17092, -16995, -16898, -16801, -16703, -16606, -16509, -16412, -16314, -16217, -16119, -16022, -15924, -15827, -15729, -15632, -15534, -15436, -15339, -15241, -15143, -15045, -14947, -14850, -14752, -14654, -14556, -14458, -14360, -14261, -14163, -14065, -13967, -13869, -13770, -13672, -13574, -13475, -13377, -13279, -13180, -13082, -12983, -12885, -12786, -12687, -12589, -12490, -12391, -12293, -12194, -12095, -11996, -11897, -11798, -11700, -11601, -11502, -11403, -11304, -11205, -11106, -11007, -10907, -10808, -10709, -10610, -10511, -10411, -10312, -10213, -10114, -10014, -9915, -9815, -9716, -9617, -9517, -9418, -9318, -9219, -9119, -9020, -8920, -8820, -8721, -8621, -8521, -8422, -8322, -8222, -8123, -8023, -7923, -7823, -7723, -7624, -7524, -7424, -7324, -7224, -7124, -7024, -6924, -6824, -6724, -6624, -6524, -6424, -6324, -6224, -6124, -6024, -5924, -5824, -5723, -5623, -5523, -5423, -5323, -5223, -5122, -5022, -4922, -4822, -4721, -4621, -4521, -4421, -4320, -4220, -4120, -4019, -3919, -3819, -3718, -3618, -3517, -3417, -3317, -3216, -3116, -3015, -2915, -2815, -2714, -2614, -2513, -2413, -2312, -2212, -2111, -2011, -1910, -1810, -1709, -1609, -1508, -1408, -1307, -1207, -1106, -1006, -905, -805, -704, -604, -503, -403, -302, -202, -101 }; const int cosine[4096]={ 65536, 65535, 65535, 65535, 65534, 65534, 65533, 65532, 65531, 65529, 65528, 65526, 65524, 65522, 65520, 65518, 65516, 65513, 65511, 65508, 65505, 65501, 65498, 65495, 65491, 65487, 65483, 65479, 65475, 65471, 65466, 65461, 65457, 65452, 65446, 65441, 65436, 65430, 65424, 65418, 65412, 65406, 65400, 65393, 65386, 65379, 65372, 65365, 65358, 65350, 65343, 65335, 65327, 65319, 65311, 65302, 65294, 65285, 65276, 65267, 65258, 65249, 65239, 65230, 65220, 65210, 65200, 65190, 65179, 65169, 65158, 65147, 65136, 65125, 65114, 65102, 65091, 65079, 65067, 65055, 65043, 65030, 65018, 65005, 64992, 64979, 64966, 64953, 64939, 64926, 64912, 64898, 64884, 64870, 64855, 64841, 64826, 64811, 64796, 64781, 64766, 64751, 64735, 64719, 64703, 64687, 64671, 64655, 64638, 64622, 64605, 64588, 64571, 64553, 64536, 64518, 64501, 64483, 64465, 64447, 64428, 64410, 64391, 64372, 64353, 64334, 64315, 64296, 64276, 64257, 64237, 64217, 64197, 64176, 64156, 64135, 64115, 64094, 64073, 64051, 64030, 64009, 63987, 63965, 63943, 63921, 63899, 63876, 63854, 63831, 63808, 63785, 63762, 63739, 63715, 63692, 63668, 63644, 63620, 63596, 63571, 63547, 63522, 63498, 63473, 63447, 63422, 63397, 63371, 63346, 63320, 63294, 63268, 63241, 63215, 63188, 63162, 63135, 63108, 63080, 63053, 63026, 62998, 62970, 62942, 62914, 62886, 62858, 62829, 62800, 62772, 62743, 62714, 62684, 62655, 62625, 62596, 62566, 62536, 62506, 62475, 62445, 62414, 62384, 62353, 62322, 62291, 62259, 62228, 62196, 62164, 62133, 62100, 62068, 62036, 62003, 61971, 61938, 61905, 61872, 61839, 61805, 61772, 61738, 61705, 61671, 61637, 61602, 61568, 61533, 61499, 61464, 61429, 61394, 61359, 61323, 61288, 61252, 61216, 61180, 61144, 61108, 61071, 61035, 60998, 60961, 60924, 60887, 60850, 60813, 60775, 60737, 60700, 60662, 60624, 60585, 60547, 60508, 60470, 60431, 60392, 60353, 60313, 60274, 60235, 60195, 60155, 60115, 60075, 60035, 59994, 59954, 59913, 59872, 59831, 59790, 59749, 59708, 59666, 59625, 59583, 59541, 59499, 59457, 59414, 59372, 59329, 59286, 59243, 59200, 59157, 59114, 59070, 59027, 58983, 58939, 58895, 58851, 58807, 58762, 58718, 58673, 58628, 58583, 58538, 58493, 58447, 58402, 58356, 58310, 58264, 58218, 58172, 58125, 58079, 58032, 57986, 57939, 57892, 57844, 57797, 57750, 57702, 57654, 57606, 57558, 57510, 57462, 57414, 57365, 57316, 57268, 57219, 57170, 57120, 57071, 57022, 56972, 56922, 56872, 56822, 56772, 56722, 56671, 56621, 56570, 56519, 56468, 56417, 56366, 56315, 56263, 56212, 56160, 56108, 56056, 56004, 55952, 55899, 55847, 55794, 55741, 55688, 55635, 55582, 55529, 55475, 55422, 55368, 55314, 55260, 55206, 55152, 55097, 55043, 54988, 54933, 54879, 54823, 54768, 54713, 54658, 54602, 54546, 54491, 54435, 54379, 54323, 54266, 54210, 54153, 54097, 54040, 53983, 53926, 53869, 53811, 53754, 53696, 53639, 53581, 53523, 53465, 53407, 53348, 53290, 53231, 53172, 53114, 53055, 52996, 52936, 52877, 52818, 52758, 52698, 52639, 52579, 52518, 52458, 52398, 52338, 52277, 52216, 52155, 52095, 52033, 51972, 51911, 51850, 51788, 51726, 51665, 51603, 51541, 51478, 51416, 51354, 51291, 51229, 51166, 51103, 51040, 50977, 50914, 50850, 50787, 50723, 50660, 50596, 50532, 50468, 50403, 50339, 50275, 50210, 50146, 50081, 50016, 49951, 49886, 49820, 49755, 49690, 49624, 49558, 49492, 49426, 49360, 49294, 49228, 49161, 49095, 49028, 48961, 48895, 48828, 48760, 48693, 48626, 48558, 48491, 48423, 48355, 48288, 48219, 48151, 48083, 48015, 47946, 47878, 47809, 47740, 47671, 47602, 47533, 47464, 47394, 47325, 47255, 47186, 47116, 47046, 46976, 46906, 46835, 46765, 46695, 46624, 46553, 46482, 46411, 46340, 46269, 46198, 46127, 46055, 45984, 45912, 45840, 45768, 45696, 45624, 45552, 45480, 45407, 45335, 45262, 45189, 45116, 45043, 44970, 44897, 44824, 44750, 44677, 44603, 44530, 44456, 44382, 44308, 44234, 44160, 44085, 44011, 43936, 43862, 43787, 43712, 43637, 43562, 43487, 43412, 43336, 43261, 43185, 43110, 43034, 42958, 42882, 42806, 42730, 42653, 42577, 42501, 42424, 42347, 42271, 42194, 42117, 42040, 41962, 41885, 41808, 41730, 41653, 41575, 41497, 41419, 41342, 41263, 41185, 41107, 41029, 40950, 40872, 40793, 40714, 40636, 40557, 40478, 40399, 40319, 40240, 40161, 40081, 40002, 39922, 39842, 39762, 39682, 39602, 39522, 39442, 39362, 39281, 39201, 39120, 39039, 38958, 38878, 38797, 38716, 38634, 38553, 38472, 38390, 38309, 38227, 38146, 38064, 37982, 37900, 37818, 37736, 37653, 37571, 37489, 37406, 37324, 37241, 37158, 37075, 36992, 36909, 36826, 36743, 36660, 36576, 36493, 36409, 36326, 36242, 36158, 36074, 35990, 35906, 35822, 35738, 35654, 35569, 35485, 35400, 35316, 35231, 35146, 35061, 34976, 34891, 34806, 34721, 34635, 34550, 34465, 34379, 34293, 34208, 34122, 34036, 33950, 33864, 33778, 33692, 33605, 33519, 33433, 33346, 33260, 33173, 33086, 32999, 32912, 32826, 32738, 32651, 32564, 32477, 32390, 32302, 32215, 32127, 32039, 31952, 31864, 31776, 31688, 31600, 31512, 31424, 31335, 31247, 31159, 31070, 30982, 30893, 30804, 30715, 30627, 30538, 30449, 30360, 30271, 30181, 30092, 30003, 29913, 29824, 29734, 29645, 29555, 29465, 29375, 29285, 29196, 29105, 29015, 28925, 28835, 28745, 28654, 28564, 28473, 28383, 28292, 28201, 28111, 28020, 27929, 27838, 27747, 27656, 27565, 27473, 27382, 27291, 27199, 27108, 27016, 26925, 26833, 26741, 26649, 26557, 26465, 26373, 26281, 26189, 26097, 26005, 25913, 25820, 25728, 25635, 25543, 25450, 25357, 25265, 25172, 25079, 24986, 24893, 24800, 24707, 24614, 24521, 24427, 24334, 24241, 24147, 24054, 23960, 23867, 23773, 23679, 23586, 23492, 23398, 23304, 23210, 23116, 23022, 22928, 22833, 22739, 22645, 22551, 22456, 22362, 22267, 22173, 22078, 21983, 21889, 21794, 21699, 21604, 21509, 21414, 21319, 21224, 21129, 21034, 20938, 20843, 20748, 20652, 20557, 20461, 20366, 20270, 20175, 20079, 19983, 19888, 19792, 19696, 19600, 19504, 19408, 19312, 19216, 19120, 19024, 18927, 18831, 18735, 18638, 18542, 18446, 18349, 18253, 18156, 18059, 17963, 17866, 17769, 17672, 17576, 17479, 17382, 17285, 17188, 17091, 16994, 16897, 16800, 16702, 16605, 16508, 16411, 16313, 16216, 16118, 16021, 15923, 15826, 15728, 15631, 15533, 15435, 15338, 15240, 15142, 15044, 14946, 14849, 14751, 14653, 14555, 14457, 14359, 14260, 14162, 14064, 13966, 13868, 13769, 13671, 13573, 13474, 13376, 13278, 13179, 13081, 12982, 12884, 12785, 12686, 12588, 12489, 12390, 12292, 12193, 12094, 11995, 11896, 11797, 11699, 11600, 11501, 11402, 11303, 11204, 11105, 11006, 10906, 10807, 10708, 10609, 10510, 10410, 10311, 10212, 10113, 10013, 9914, 9814, 9715, 9616, 9516, 9417, 9317, 9218, 9118, 9019, 8919, 8819, 8720, 8620, 8520, 8421, 8321, 8221, 8122, 8022, 7922, 7822, 7722, 7623, 7523, 7423, 7323, 7223, 7123, 7023, 6923, 6823, 6723, 6623, 6523, 6423, 6323, 6223, 6123, 6023, 5923, 5823, 5722, 5622, 5522, 5422, 5322, 5222, 5121, 5021, 4921, 4821, 4720, 4620, 4520, 4420, 4319, 4219, 4119, 4018, 3918, 3818, 3717, 3617, 3516, 3416, 3316, 3215, 3115, 3014, 2914, 2814, 2713, 2613, 2512, 2412, 2311, 2211, 2110, 2010, 1909, 1809, 1708, 1608, 1507, 1407, 1306, 1206, 1105, 1005, 904, 804, 703, 603, 502, 402, 301, 201, 100, 0, -101, -202, -302, -403, -503, -604, -704, -805, -905, -1006, -1106, -1207, -1307, -1408, -1508, -1609, -1709, -1810, -1910, -2011, -2111, -2212, -2312, -2413, -2513, -2614, -2714, -2814, -2915, -3015, -3116, -3216, -3317, -3417, -3517, -3618, -3718, -3819, -3919, -4019, -4120, -4220, -4320, -4421, -4521, -4621, -4721, -4822, -4922, -5022, -5122, -5223, -5323, -5423, -5523, -5623, -5723, -5824, -5924, -6024, -6124, -6224, -6324, -6424, -6524, -6624, -6724, -6824, -6924, -7024, -7124, -7224, -7324, -7424, -7524, -7624, -7723, -7823, -7923, -8023, -8123, -8222, -8322, -8422, -8521, -8621, -8721, -8820, -8920, -9020, -9119, -9219, -9318, -9418, -9517, -9617, -9716, -9815, -9915, -10014, -10114, -10213, -10312, -10411, -10511, -10610, -10709, -10808, -10907, -11007, -11106, -11205, -11304, -11403, -11502, -11601, -11700, -11798, -11897, -11996, -12095, -12194, -12293, -12391, -12490, -12589, -12687, -12786, -12885, -12983, -13082, -13180, -13279, -13377, -13475, -13574, -13672, -13770, -13869, -13967, -14065, -14163, -14261, -14360, -14458, -14556, -14654, -14752, -14850, -14947, -15045, -15143, -15241, -15339, -15436, -15534, -15632, -15729, -15827, -15924, -16022, -16119, -16217, -16314, -16412, -16509, -16606, -16703, -16801, -16898, -16995, -17092, -17189, -17286, -17383, -17480, -17577, -17673, -17770, -17867, -17964, -18060, -18157, -18254, -18350, -18447, -18543, -18639, -18736, -18832, -18928, -19025, -19121, -19217, -19313, -19409, -19505, -19601, -19697, -19793, -19889, -19984, -20080, -20176, -20271, -20367, -20462, -20558, -20653, -20749, -20844, -20939, -21035, -21130, -21225, -21320, -21415, -21510, -21605, -21700, -21795, -21889, -21984, -22079, -22174, -22268, -22363, -22457, -22552, -22646, -22740, -22834, -22929, -23023, -23117, -23211, -23305, -23399, -23493, -23587, -23680, -23774, -23868, -23961, -24055, -24148, -24242, -24335, -24428, -24522, -24615, -24708, -24801, -24894, -24987, -25080, -25173, -25266, -25358, -25451, -25544, -25636, -25729, -25821, -25914, -26006, -26098, -26190, -26282, -26374, -26466, -26558, -26650, -26742, -26834, -26926, -27017, -27109, -27200, -27292, -27383, -27474, -27566, -27657, -27748, -27839, -27930, -28021, -28112, -28202, -28293, -28384, -28474, -28565, -28655, -28746, -28836, -28926, -29016, -29106, -29197, -29286, -29376, -29466, -29556, -29646, -29735, -29825, -29914, -30004, -30093, -30182, -30272, -30361, -30450, -30539, -30628, -30716, -30805, -30894, -30983, -31071, -31160, -31248, -31336, -31425, -31513, -31601, -31689, -31777, -31865, -31953, -32040, -32128, -32216, -32303, -32391, -32478, -32565, -32652, -32739, -32827, -32913, -33000, -33087, -33174, -33261, -33347, -33434, -33520, -33606, -33693, -33779, -33865, -33951, -34037, -34123, -34209, -34294, -34380, -34466, -34551, -34636, -34722, -34807, -34892, -34977, -35062, -35147, -35232, -35317, -35401, -35486, -35570, -35655, -35739, -35823, -35907, -35991, -36075, -36159, -36243, -36327, -36410, -36494, -36577, -36661, -36744, -36827, -36910, -36993, -37076, -37159, -37242, -37325, -37407, -37490, -37572, -37654, -37737, -37819, -37901, -37983, -38065, -38147, -38228, -38310, -38391, -38473, -38554, -38635, -38717, -38798, -38879, -38959, -39040, -39121, -39202, -39282, -39362, -39443, -39523, -39603, -39683, -39763, -39843, -39923, -40003, -40082, -40162, -40241, -40320, -40400, -40479, -40558, -40637, -40715, -40794, -40873, -40951, -41030, -41108, -41186, -41264, -41343, -41420, -41498, -41576, -41654, -41731, -41809, -41886, -41963, -42041, -42118, -42195, -42272, -42348, -42425, -42502, -42578, -42654, -42731, -42807, -42883, -42959, -43035, -43111, -43186, -43262, -43337, -43413, -43488, -43563, -43638, -43713, -43788, -43863, -43937, -44012, -44086, -44161, -44235, -44309, -44383, -44457, -44531, -44604, -44678, -44751, -44825, -44898, -44971, -45044, -45117, -45190, -45263, -45336, -45408, -45481, -45553, -45625, -45697, -45769, -45841, -45913, -45985, -46056, -46128, -46199, -46270, -46341, -46412, -46483, -46554, -46625, -46696, -46766, -46836, -46907, -46977, -47047, -47117, -47187, -47256, -47326, -47395, -47465, -47534, -47603, -47672, -47741, -47810, -47879, -47947, -48016, -48084, -48152, -48220, -48289, -48356, -48424, -48492, -48559, -48627, -48694, -48761, -48829, -48896, -48962, -49029, -49096, -49162, -49229, -49295, -49361, -49427, -49493, -49559, -49625, -49691, -49756, -49821, -49887, -49952, -50017, -50082, -50147, -50211, -50276, -50340, -50404, -50469, -50533, -50597, -50661, -50724, -50788, -50851, -50915, -50978, -51041, -51104, -51167, -51230, -51292, -51355, -51417, -51479, -51542, -51604, -51666, -51727, -51789, -51851, -51912, -51973, -52034, -52096, -52156, -52217, -52278, -52339, -52399, -52459, -52519, -52580, -52640, -52699, -52759, -52819, -52878, -52937, -52997, -53056, -53115, -53173, -53232, -53291, -53349, -53408, -53466, -53524, -53582, -53640, -53697, -53755, -53812, -53870, -53927, -53984, -54041, -54098, -54154, -54211, -54267, -54324, -54380, -54436, -54492, -54547, -54603, -54659, -54714, -54769, -54824, -54880, -54934, -54989, -55044, -55098, -55153, -55207, -55261, -55315, -55369, -55423, -55476, -55530, -55583, -55636, -55689, -55742, -55795, -55848, -55900, -55953, -56005, -56057, -56109, -56161, -56213, -56264, -56316, -56367, -56418, -56469, -56520, -56571, -56622, -56672, -56723, -56773, -56823, -56873, -56923, -56973, -57023, -57072, -57121, -57171, -57220, -57269, -57317, -57366, -57415, -57463, -57511, -57559, -57607, -57655, -57703, -57751, -57798, -57845, -57893, -57940, -57987, -58033, -58080, -58126, -58173, -58219, -58265, -58311, -58357, -58403, -58448, -58494, -58539, -58584, -58629, -58674, -58719, -58763, -58808, -58852, -58896, -58940, -58984, -59028, -59071, -59115, -59158, -59201, -59244, -59287, -59330, -59373, -59415, -59458, -59500, -59542, -59584, -59626, -59667, -59709, -59750, -59791, -59832, -59873, -59914, -59955, -59995, -60036, -60076, -60116, -60156, -60196, -60236, -60275, -60314, -60354, -60393, -60432, -60471, -60509, -60548, -60586, -60625, -60663, -60701, -60738, -60776, -60814, -60851, -60888, -60925, -60962, -60999, -61036, -61072, -61109, -61145, -61181, -61217, -61253, -61289, -61324, -61360, -61395, -61430, -61465, -61500, -61534, -61569, -61603, -61638, -61672, -61706, -61739, -61773, -61806, -61840, -61873, -61906, -61939, -61972, -62004, -62037, -62069, -62101, -62134, -62165, -62197, -62229, -62260, -62292, -62323, -62354, -62385, -62415, -62446, -62476, -62507, -62537, -62567, -62597, -62626, -62656, -62685, -62715, -62744, -62773, -62801, -62830, -62859, -62887, -62915, -62943, -62971, -62999, -63027, -63054, -63081, -63109, -63136, -63163, -63189, -63216, -63242, -63269, -63295, -63321, -63347, -63372, -63398, -63423, -63448, -63474, -63499, -63523, -63548, -63572, -63597, -63621, -63645, -63669, -63693, -63716, -63740, -63763, -63786, -63809, -63832, -63855, -63877, -63900, -63922, -63944, -63966, -63988, -64010, -64031, -64052, -64074, -64095, -64116, -64136, -64157, -64177, -64198, -64218, -64238, -64258, -64277, -64297, -64316, -64335, -64354, -64373, -64392, -64411, -64429, -64448, -64466, -64484, -64502, -64519, -64537, -64554, -64572, -64589, -64606, -64623, -64639, -64656, -64672, -64688, -64704, -64720, -64736, -64752, -64767, -64782, -64797, -64812, -64827, -64842, -64856, -64871, -64885, -64899, -64913, -64927, -64940, -64954, -64967, -64980, -64993, -65006, -65019, -65031, -65044, -65056, -65068, -65080, -65092, -65103, -65115, -65126, -65137, -65148, -65159, -65170, -65180, -65191, -65201, -65211, -65221, -65231, -65240, -65250, -65259, -65268, -65277, -65286, -65295, -65303, -65312, -65320, -65328, -65336, -65344, -65351, -65359, -65366, -65373, -65380, -65387, -65394, -65401, -65407, -65413, -65419, -65425, -65431, -65437, -65442, -65447, -65453, -65458, -65462, -65467, -65472, -65476, -65480, -65484, -65488, -65492, -65496, -65499, -65502, -65506, -65509, -65512, -65514, -65517, -65519, -65521, -65523, -65525, -65527, -65529, -65530, -65532, -65533, -65534, -65535, -65535, -65536, -65536, -65536, -65536, -65536, -65536, -65536, -65535, -65535, -65534, -65533, -65532, -65530, -65529, -65527, -65525, -65523, -65521, -65519, -65517, -65514, -65512, -65509, -65506, -65502, -65499, -65496, -65492, -65488, -65484, -65480, -65476, -65472, -65467, -65462, -65458, -65453, -65447, -65442, -65437, -65431, -65425, -65419, -65413, -65407, -65401, -65394, -65387, -65380, -65373, -65366, -65359, -65351, -65344, -65336, -65328, -65320, -65312, -65303, -65295, -65286, -65277, -65268, -65259, -65250, -65240, -65231, -65221, -65211, -65201, -65191, -65180, -65170, -65159, -65148, -65137, -65126, -65115, -65103, -65092, -65080, -65068, -65056, -65044, -65031, -65019, -65006, -64993, -64980, -64967, -64954, -64940, -64927, -64913, -64899, -64885, -64871, -64856, -64842, -64827, -64812, -64797, -64782, -64767, -64752, -64736, -64720, -64704, -64688, -64672, -64656, -64639, -64623, -64606, -64589, -64572, -64554, -64537, -64519, -64502, -64484, -64466, -64448, -64429, -64411, -64392, -64373, -64354, -64335, -64316, -64297, -64277, -64258, -64238, -64218, -64198, -64177, -64157, -64136, -64116, -64095, -64074, -64052, -64031, -64010, -63988, -63966, -63944, -63922, -63900, -63877, -63855, -63832, -63809, -63786, -63763, -63740, -63716, -63693, -63669, -63645, -63621, -63597, -63572, -63548, -63523, -63499, -63474, -63448, -63423, -63398, -63372, -63347, -63321, -63295, -63269, -63242, -63216, -63189, -63163, -63136, -63109, -63081, -63054, -63027, -62999, -62971, -62943, -62915, -62887, -62859, -62830, -62801, -62773, -62744, -62715, -62685, -62656, -62626, -62597, -62567, -62537, -62507, -62476, -62446, -62415, -62385, -62354, -62323, -62292, -62260, -62229, -62197, -62165, -62134, -62101, -62069, -62037, -62004, -61972, -61939, -61906, -61873, -61840, -61806, -61773, -61739, -61706, -61672, -61638, -61603, -61569, -61534, -61500, -61465, -61430, -61395, -61360, -61324, -61289, -61253, -61217, -61181, -61145, -61109, -61072, -61036, -60999, -60962, -60925, -60888, -60851, -60814, -60776, -60738, -60701, -60663, -60625, -60586, -60548, -60509, -60471, -60432, -60393, -60354, -60314, -60275, -60236, -60196, -60156, -60116, -60076, -60036, -59995, -59955, -59914, -59873, -59832, -59791, -59750, -59709, -59667, -59626, -59584, -59542, -59500, -59458, -59415, -59373, -59330, -59287, -59244, -59201, -59158, -59115, -59071, -59028, -58984, -58940, -58896, -58852, -58808, -58763, -58719, -58674, -58629, -58584, -58539, -58494, -58448, -58403, -58357, -58311, -58265, -58219, -58173, -58126, -58080, -58033, -57987, -57940, -57893, -57845, -57798, -57751, -57703, -57655, -57607, -57559, -57511, -57463, -57415, -57366, -57317, -57269, -57220, -57171, -57121, -57072, -57023, -56973, -56923, -56873, -56823, -56773, -56723, -56672, -56622, -56571, -56520, -56469, -56418, -56367, -56316, -56264, -56213, -56161, -56109, -56057, -56005, -55953, -55900, -55848, -55795, -55742, -55689, -55636, -55583, -55530, -55476, -55423, -55369, -55315, -55261, -55207, -55153, -55098, -55044, -54989, -54934, -54880, -54824, -54769, -54714, -54659, -54603, -54547, -54492, -54436, -54380, -54324, -54267, -54211, -54154, -54098, -54041, -53984, -53927, -53870, -53812, -53755, -53697, -53640, -53582, -53524, -53466, -53408, -53349, -53291, -53232, -53173, -53115, -53056, -52997, -52937, -52878, -52819, -52759, -52699, -52640, -52580, -52519, -52459, -52399, -52339, -52278, -52217, -52156, -52096, -52034, -51973, -51912, -51851, -51789, -51727, -51666, -51604, -51542, -51479, -51417, -51355, -51292, -51230, -51167, -51104, -51041, -50978, -50915, -50851, -50788, -50724, -50661, -50597, -50533, -50469, -50404, -50340, -50276, -50211, -50147, -50082, -50017, -49952, -49887, -49821, -49756, -49691, -49625, -49559, -49493, -49427, -49361, -49295, -49229, -49162, -49096, -49029, -48962, -48896, -48829, -48761, -48694, -48627, -48559, -48492, -48424, -48356, -48289, -48220, -48152, -48084, -48016, -47947, -47879, -47810, -47741, -47672, -47603, -47534, -47465, -47395, -47326, -47256, -47187, -47117, -47047, -46977, -46907, -46836, -46766, -46696, -46625, -46554, -46483, -46412, -46341, -46270, -46199, -46128, -46056, -45985, -45913, -45841, -45769, -45697, -45625, -45553, -45481, -45408, -45336, -45263, -45190, -45117, -45044, -44971, -44898, -44825, -44751, -44678, -44604, -44531, -44457, -44383, -44309, -44235, -44161, -44086, -44012, -43937, -43863, -43788, -43713, -43638, -43563, -43488, -43413, -43337, -43262, -43186, -43111, -43035, -42959, -42883, -42807, -42731, -42654, -42578, -42502, -42425, -42348, -42272, -42195, -42118, -42041, -41963, -41886, -41809, -41731, -41654, -41576, -41498, -41420, -41343, -41264, -41186, -41108, -41030, -40951, -40873, -40794, -40715, -40637, -40558, -40479, -40400, -40320, -40241, -40162, -40082, -40003, -39923, -39843, -39763, -39683, -39603, -39523, -39443, -39363, -39282, -39202, -39121, -39040, -38959, -38879, -38798, -38717, -38635, -38554, -38473, -38391, -38310, -38228, -38147, -38065, -37983, -37901, -37819, -37737, -37654, -37572, -37490, -37407, -37325, -37242, -37159, -37076, -36993, -36910, -36827, -36744, -36661, -36577, -36494, -36410, -36327, -36243, -36159, -36075, -35991, -35907, -35823, -35739, -35655, -35570, -35486, -35401, -35317, -35232, -35147, -35062, -34977, -34892, -34807, -34722, -34636, -34551, -34466, -34380, -34294, -34209, -34123, -34037, -33951, -33865, -33779, -33693, -33606, -33520, -33434, -33347, -33261, -33174, -33087, -33000, -32914, -32827, -32739, -32652, -32565, -32478, -32391, -32303, -32216, -32128, -32040, -31953, -31865, -31777, -31689, -31601, -31513, -31425, -31336, -31248, -31160, -31071, -30983, -30894, -30805, -30716, -30628, -30539, -30450, -30361, -30272, -30182, -30093, -30004, -29914, -29825, -29735, -29646, -29556, -29466, -29376, -29287, -29197, -29106, -29016, -28926, -28836, -28746, -28655, -28565, -28474, -28384, -28293, -28202, -28112, -28021, -27930, -27839, -27748, -27657, -27566, -27474, -27383, -27292, -27200, -27109, -27017, -26926, -26834, -26742, -26650, -26558, -26466, -26374, -26282, -26190, -26098, -26006, -25914, -25821, -25729, -25636, -25544, -25451, -25358, -25266, -25173, -25080, -24987, -24894, -24801, -24708, -24615, -24522, -24428, -24335, -24242, -24148, -24055, -23961, -23868, -23774, -23680, -23587, -23493, -23399, -23305, -23211, -23117, -23023, -22929, -22834, -22740, -22646, -22552, -22457, -22363, -22268, -22174, -22079, -21984, -21890, -21795, -21700, -21605, -21510, -21415, -21320, -21225, -21130, -21035, -20939, -20844, -20749, -20653, -20558, -20462, -20367, -20271, -20176, -20080, -19984, -19889, -19793, -19697, -19601, -19505, -19409, -19313, -19217, -19121, -19025, -18928, -18832, -18736, -18639, -18543, -18447, -18350, -18254, -18157, -18060, -17964, -17867, -17770, -17673, -17577, -17480, -17383, -17286, -17189, -17092, -16995, -16898, -16801, -16703, -16606, -16509, -16412, -16314, -16217, -16119, -16022, -15924, -15827, -15729, -15632, -15534, -15436, -15339, -15241, -15143, -15045, -14947, -14850, -14752, -14654, -14556, -14458, -14360, -14261, -14163, -14065, -13967, -13869, -13770, -13672, -13574, -13475, -13377, -13279, -13180, -13082, -12983, -12885, -12786, -12687, -12589, -12490, -12391, -12293, -12194, -12095, -11996, -11897, -11798, -11700, -11601, -11502, -11403, -11304, -11205, -11106, -11007, -10907, -10808, -10709, -10610, -10511, -10411, -10312, -10213, -10114, -10014, -9915, -9815, -9716, -9617, -9517, -9418, -9318, -9219, -9119, -9020, -8920, -8820, -8721, -8621, -8521, -8422, -8322, -8222, -8123, -8023, -7923, -7823, -7723, -7624, -7524, -7424, -7324, -7224, -7124, -7024, -6924, -6824, -6724, -6624, -6524, -6424, -6324, -6224, -6124, -6024, -5924, -5824, -5723, -5623, -5523, -5423, -5323, -5223, -5122, -5022, -4922, -4822, -4721, -4621, -4521, -4421, -4320, -4220, -4120, -4019, -3919, -3819, -3718, -3618, -3517, -3417, -3317, -3216, -3116, -3015, -2915, -2815, -2714, -2614, -2513, -2413, -2312, -2212, -2111, -2011, -1910, -1810, -1709, -1609, -1508, -1408, -1307, -1207, -1106, -1006, -905, -805, -704, -604, -503, -403, -302, -202, -101, -1, 100, 201, 301, 402, 502, 603, 703, 804, 904, 1005, 1105, 1206, 1306, 1407, 1507, 1608, 1708, 1809, 1909, 2010, 2110, 2211, 2311, 2412, 2512, 2613, 2713, 2813, 2914, 3014, 3115, 3215, 3316, 3416, 3516, 3617, 3717, 3818, 3918, 4018, 4119, 4219, 4319, 4419, 4520, 4620, 4720, 4821, 4921, 5021, 5121, 5222, 5322, 5422, 5522, 5622, 5722, 5823, 5923, 6023, 6123, 6223, 6323, 6423, 6523, 6623, 6723, 6823, 6923, 7023, 7123, 7223, 7323, 7423, 7523, 7623, 7722, 7822, 7922, 8022, 8122, 8221, 8321, 8421, 8520, 8620, 8720, 8819, 8919, 9019, 9118, 9218, 9317, 9417, 9516, 9616, 9715, 9814, 9914, 10013, 10113, 10212, 10311, 10410, 10510, 10609, 10708, 10807, 10906, 11005, 11105, 11204, 11303, 11402, 11501, 11600, 11699, 11797, 11896, 11995, 12094, 12193, 12292, 12390, 12489, 12588, 12686, 12785, 12884, 12982, 13081, 13179, 13278, 13376, 13474, 13573, 13671, 13769, 13868, 13966, 14064, 14162, 14260, 14359, 14457, 14555, 14653, 14751, 14849, 14946, 15044, 15142, 15240, 15338, 15435, 15533, 15631, 15728, 15826, 15923, 16021, 16118, 16216, 16313, 16411, 16508, 16605, 16702, 16800, 16897, 16994, 17091, 17188, 17285, 17382, 17479, 17576, 17672, 17769, 17866, 17963, 18059, 18156, 18253, 18349, 18446, 18542, 18638, 18735, 18831, 18927, 19024, 19120, 19216, 19312, 19408, 19504, 19600, 19696, 19792, 19888, 19983, 20079, 20175, 20270, 20366, 20461, 20557, 20652, 20748, 20843, 20938, 21034, 21129, 21224, 21319, 21414, 21509, 21604, 21699, 21794, 21888, 21983, 22078, 22173, 22267, 22362, 22456, 22551, 22645, 22739, 22833, 22928, 23022, 23116, 23210, 23304, 23398, 23492, 23586, 23679, 23773, 23867, 23960, 24054, 24147, 24241, 24334, 24427, 24521, 24614, 24707, 24800, 24893, 24986, 25079, 25172, 25265, 25357, 25450, 25543, 25635, 25728, 25820, 25913, 26005, 26097, 26189, 26281, 26373, 26465, 26557, 26649, 26741, 26833, 26925, 27016, 27108, 27199, 27291, 27382, 27473, 27565, 27656, 27747, 27838, 27929, 28020, 28111, 28201, 28292, 28383, 28473, 28564, 28654, 28745, 28835, 28925, 29015, 29105, 29196, 29285, 29375, 29465, 29555, 29645, 29734, 29824, 29913, 30003, 30092, 30181, 30271, 30360, 30449, 30538, 30627, 30715, 30804, 30893, 30982, 31070, 31159, 31247, 31335, 31424, 31512, 31600, 31688, 31776, 31864, 31952, 32039, 32127, 32215, 32302, 32390, 32477, 32564, 32651, 32738, 32826, 32912, 32999, 33086, 33173, 33260, 33346, 33433, 33519, 33605, 33692, 33778, 33864, 33950, 34036, 34122, 34208, 34293, 34379, 34465, 34550, 34635, 34721, 34806, 34891, 34976, 35061, 35146, 35231, 35316, 35400, 35485, 35569, 35654, 35738, 35822, 35906, 35990, 36074, 36158, 36242, 36326, 36409, 36493, 36576, 36660, 36743, 36826, 36909, 36992, 37075, 37158, 37241, 37324, 37406, 37489, 37571, 37653, 37736, 37818, 37900, 37982, 38064, 38146, 38227, 38309, 38390, 38472, 38553, 38634, 38716, 38797, 38878, 38958, 39039, 39120, 39201, 39281, 39361, 39442, 39522, 39602, 39682, 39762, 39842, 39922, 40002, 40081, 40161, 40240, 40319, 40399, 40478, 40557, 40636, 40714, 40793, 40872, 40950, 41029, 41107, 41185, 41263, 41342, 41419, 41497, 41575, 41653, 41730, 41808, 41885, 41962, 42040, 42117, 42194, 42271, 42347, 42424, 42501, 42577, 42653, 42730, 42806, 42882, 42958, 43034, 43110, 43185, 43261, 43336, 43412, 43487, 43562, 43637, 43712, 43787, 43862, 43936, 44011, 44085, 44160, 44234, 44308, 44382, 44456, 44530, 44603, 44677, 44750, 44824, 44897, 44970, 45043, 45116, 45189, 45262, 45335, 45407, 45480, 45552, 45624, 45696, 45768, 45840, 45912, 45984, 46055, 46127, 46198, 46269, 46340, 46411, 46482, 46553, 46624, 46695, 46765, 46835, 46906, 46976, 47046, 47116, 47186, 47255, 47325, 47394, 47464, 47533, 47602, 47671, 47740, 47809, 47878, 47946, 48015, 48083, 48151, 48219, 48288, 48355, 48423, 48491, 48558, 48626, 48693, 48760, 48828, 48895, 48961, 49028, 49095, 49161, 49228, 49294, 49360, 49426, 49492, 49558, 49624, 49690, 49755, 49820, 49886, 49951, 50016, 50081, 50145, 50210, 50275, 50339, 50403, 50468, 50532, 50596, 50660, 50723, 50787, 50850, 50914, 50977, 51040, 51103, 51166, 51229, 51291, 51354, 51416, 51478, 51541, 51603, 51665, 51726, 51788, 51850, 51911, 51972, 52033, 52095, 52155, 52216, 52277, 52338, 52398, 52458, 52518, 52579, 52639, 52698, 52758, 52818, 52877, 52936, 52996, 53055, 53114, 53172, 53231, 53290, 53348, 53407, 53465, 53523, 53581, 53639, 53696, 53754, 53811, 53869, 53926, 53983, 54040, 54097, 54153, 54210, 54266, 54323, 54379, 54435, 54491, 54546, 54602, 54658, 54713, 54768, 54823, 54879, 54933, 54988, 55043, 55097, 55152, 55206, 55260, 55314, 55368, 55422, 55475, 55529, 55582, 55635, 55688, 55741, 55794, 55847, 55899, 55952, 56004, 56056, 56108, 56160, 56212, 56263, 56315, 56366, 56417, 56468, 56519, 56570, 56621, 56671, 56722, 56772, 56822, 56872, 56922, 56972, 57022, 57071, 57120, 57170, 57219, 57268, 57316, 57365, 57414, 57462, 57510, 57558, 57606, 57654, 57702, 57750, 57797, 57844, 57892, 57939, 57986, 58032, 58079, 58125, 58172, 58218, 58264, 58310, 58356, 58402, 58447, 58493, 58538, 58583, 58628, 58673, 58718, 58762, 58807, 58851, 58895, 58939, 58983, 59027, 59070, 59114, 59157, 59200, 59243, 59286, 59329, 59372, 59414, 59457, 59499, 59541, 59583, 59625, 59666, 59708, 59749, 59790, 59831, 59872, 59913, 59954, 59994, 60035, 60075, 60115, 60155, 60195, 60235, 60274, 60313, 60353, 60392, 60431, 60470, 60508, 60547, 60585, 60624, 60662, 60700, 60737, 60775, 60813, 60850, 60887, 60924, 60961, 60998, 61035, 61071, 61108, 61144, 61180, 61216, 61252, 61288, 61323, 61359, 61394, 61429, 61464, 61499, 61533, 61568, 61602, 61637, 61671, 61705, 61738, 61772, 61805, 61839, 61872, 61905, 61938, 61971, 62003, 62036, 62068, 62100, 62133, 62164, 62196, 62228, 62259, 62291, 62322, 62353, 62384, 62414, 62445, 62475, 62506, 62536, 62566, 62596, 62625, 62655, 62684, 62714, 62743, 62772, 62800, 62829, 62858, 62886, 62914, 62942, 62970, 62998, 63026, 63053, 63080, 63108, 63135, 63162, 63188, 63215, 63241, 63268, 63294, 63320, 63346, 63371, 63397, 63422, 63447, 63473, 63498, 63522, 63547, 63571, 63596, 63620, 63644, 63668, 63692, 63715, 63739, 63762, 63785, 63808, 63831, 63854, 63876, 63899, 63921, 63943, 63965, 63987, 64009, 64030, 64051, 64073, 64094, 64115, 64135, 64156, 64176, 64197, 64217, 64237, 64257, 64276, 64296, 64315, 64334, 64353, 64372, 64391, 64410, 64428, 64447, 64465, 64483, 64501, 64518, 64536, 64553, 64571, 64588, 64605, 64622, 64638, 64655, 64671, 64687, 64703, 64719, 64735, 64751, 64766, 64781, 64796, 64811, 64826, 64841, 64855, 64870, 64884, 64898, 64912, 64926, 64939, 64953, 64966, 64979, 64992, 65005, 65018, 65030, 65043, 65055, 65067, 65079, 65091, 65102, 65114, 65125, 65136, 65147, 65158, 65169, 65179, 65190, 65200, 65210, 65220, 65230, 65239, 65249, 65258, 65267, 65276, 65285, 65294, 65302, 65311, 65319, 65327, 65335, 65343, 65350, 65358, 65365, 65372, 65379, 65386, 65393, 65400, 65406, 65412, 65418, 65424, 65430, 65436, 65441, 65446, 65452, 65457, 65461, 65466, 65471, 65475, 65479, 65483, 65487, 65491, 65495, 65498, 65501, 65505, 65508, 65511, 65513, 65516, 65518, 65520, 65522, 65524, 65526, 65528, 65529, 65531, 65532, 65533, 65534, 65534, 65535, 65535, 65535 }; const short ArcCosTable[4096]={ 2047, 2027, 2019, 2012, 2007, 2002, 1998, 1994, 1990, 1986, 1983, 1980, 1977, 1974, 1971, 1969, 1966, 1963, 1961, 1959, 1956, 1954, 1952, 1950, 1948, 1946, 1944, 1942, 1940, 1938, 1936, 1934, 1932, 1930, 1929, 1927, 1925, 1923, 1922, 1920, 1918, 1917, 1915, 1914, 1912, 1911, 1909, 1908, 1906, 1905, 1903, 1902, 1900, 1899, 1897, 1896, 1895, 1893, 1892, 1891, 1889, 1888, 1887, 1885, 1884, 1883, 1882, 1880, 1879, 1878, 1877, 1875, 1874, 1873, 1872, 1871, 1869, 1868, 1867, 1866, 1865, 1864, 1862, 1861, 1860, 1859, 1858, 1857, 1856, 1855, 1854, 1852, 1851, 1850, 1849, 1848, 1847, 1846, 1845, 1844, 1843, 1842, 1841, 1840, 1839, 1838, 1837, 1836, 1835, 1834, 1833, 1832, 1831, 1830, 1829, 1828, 1827, 1826, 1825, 1824, 1823, 1822, 1821, 1820, 1819, 1819, 1818, 1817, 1816, 1815, 1814, 1813, 1812, 1811, 1810, 1809, 1809, 1808, 1807, 1806, 1805, 1804, 1803, 1802, 1802, 1801, 1800, 1799, 1798, 1797, 1796, 1796, 1795, 1794, 1793, 1792, 1791, 1791, 1790, 1789, 1788, 1787, 1786, 1786, 1785, 1784, 1783, 1782, 1782, 1781, 1780, 1779, 1778, 1778, 1777, 1776, 1775, 1774, 1774, 1773, 1772, 1771, 1771, 1770, 1769, 1768, 1768, 1767, 1766, 1765, 1764, 1764, 1763, 1762, 1761, 1761, 1760, 1759, 1758, 1758, 1757, 1756, 1756, 1755, 1754, 1753, 1753, 1752, 1751, 1750, 1750, 1749, 1748, 1748, 1747, 1746, 1745, 1745, 1744, 1743, 1743, 1742, 1741, 1740, 1740, 1739, 1738, 1738, 1737, 1736, 1736, 1735, 1734, 1734, 1733, 1732, 1731, 1731, 1730, 1729, 1729, 1728, 1727, 1727, 1726, 1725, 1725, 1724, 1723, 1723, 1722, 1721, 1721, 1720, 1719, 1719, 1718, 1717, 1717, 1716, 1715, 1715, 1714, 1713, 1713, 1712, 1712, 1711, 1710, 1710, 1709, 1708, 1708, 1707, 1706, 1706, 1705, 1705, 1704, 1703, 1703, 1702, 1701, 1701, 1700, 1699, 1699, 1698, 1698, 1697, 1696, 1696, 1695, 1694, 1694, 1693, 1693, 1692, 1691, 1691, 1690, 1690, 1689, 1688, 1688, 1687, 1687, 1686, 1685, 1685, 1684, 1684, 1683, 1682, 1682, 1681, 1681, 1680, 1679, 1679, 1678, 1678, 1677, 1676, 1676, 1675, 1675, 1674, 1673, 1673, 1672, 1672, 1671, 1671, 1670, 1669, 1669, 1668, 1668, 1667, 1666, 1666, 1665, 1665, 1664, 1664, 1663, 1662, 1662, 1661, 1661, 1660, 1660, 1659, 1658, 1658, 1657, 1657, 1656, 1656, 1655, 1655, 1654, 1653, 1653, 1652, 1652, 1651, 1651, 1650, 1649, 1649, 1648, 1648, 1647, 1647, 1646, 1646, 1645, 1645, 1644, 1643, 1643, 1642, 1642, 1641, 1641, 1640, 1640, 1639, 1639, 1638, 1637, 1637, 1636, 1636, 1635, 1635, 1634, 1634, 1633, 1633, 1632, 1632, 1631, 1630, 1630, 1629, 1629, 1628, 1628, 1627, 1627, 1626, 1626, 1625, 1625, 1624, 1624, 1623, 1623, 1622, 1621, 1621, 1620, 1620, 1619, 1619, 1618, 1618, 1617, 1617, 1616, 1616, 1615, 1615, 1614, 1614, 1613, 1613, 1612, 1612, 1611, 1611, 1610, 1610, 1609, 1609, 1608, 1608, 1607, 1607, 1606, 1605, 1605, 1604, 1604, 1603, 1603, 1602, 1602, 1601, 1601, 1600, 1600, 1599, 1599, 1598, 1598, 1597, 1597, 1596, 1596, 1595, 1595, 1594, 1594, 1593, 1593, 1592, 1592, 1591, 1591, 1590, 1590, 1589, 1589, 1589, 1588, 1588, 1587, 1587, 1586, 1586, 1585, 1585, 1584, 1584, 1583, 1583, 1582, 1582, 1581, 1581, 1580, 1580, 1579, 1579, 1578, 1578, 1577, 1577, 1576, 1576, 1575, 1575, 1574, 1574, 1573, 1573, 1573, 1572, 1572, 1571, 1571, 1570, 1570, 1569, 1569, 1568, 1568, 1567, 1567, 1566, 1566, 1565, 1565, 1564, 1564, 1563, 1563, 1563, 1562, 1562, 1561, 1561, 1560, 1560, 1559, 1559, 1558, 1558, 1557, 1557, 1556, 1556, 1556, 1555, 1555, 1554, 1554, 1553, 1553, 1552, 1552, 1551, 1551, 1550, 1550, 1550, 1549, 1549, 1548, 1548, 1547, 1547, 1546, 1546, 1545, 1545, 1544, 1544, 1544, 1543, 1543, 1542, 1542, 1541, 1541, 1540, 1540, 1539, 1539, 1539, 1538, 1538, 1537, 1537, 1536, 1536, 1535, 1535, 1535, 1534, 1534, 1533, 1533, 1532, 1532, 1531, 1531, 1530, 1530, 1530, 1529, 1529, 1528, 1528, 1527, 1527, 1526, 1526, 1526, 1525, 1525, 1524, 1524, 1523, 1523, 1523, 1522, 1522, 1521, 1521, 1520, 1520, 1519, 1519, 1519, 1518, 1518, 1517, 1517, 1516, 1516, 1515, 1515, 1515, 1514, 1514, 1513, 1513, 1512, 1512, 1512, 1511, 1511, 1510, 1510, 1509, 1509, 1509, 1508, 1508, 1507, 1507, 1506, 1506, 1505, 1505, 1505, 1504, 1504, 1503, 1503, 1502, 1502, 1502, 1501, 1501, 1500, 1500, 1499, 1499, 1499, 1498, 1498, 1497, 1497, 1497, 1496, 1496, 1495, 1495, 1494, 1494, 1494, 1493, 1493, 1492, 1492, 1491, 1491, 1491, 1490, 1490, 1489, 1489, 1488, 1488, 1488, 1487, 1487, 1486, 1486, 1486, 1485, 1485, 1484, 1484, 1483, 1483, 1483, 1482, 1482, 1481, 1481, 1481, 1480, 1480, 1479, 1479, 1478, 1478, 1478, 1477, 1477, 1476, 1476, 1476, 1475, 1475, 1474, 1474, 1473, 1473, 1473, 1472, 1472, 1471, 1471, 1471, 1470, 1470, 1469, 1469, 1469, 1468, 1468, 1467, 1467, 1466, 1466, 1466, 1465, 1465, 1464, 1464, 1464, 1463, 1463, 1462, 1462, 1462, 1461, 1461, 1460, 1460, 1460, 1459, 1459, 1458, 1458, 1458, 1457, 1457, 1456, 1456, 1456, 1455, 1455, 1454, 1454, 1453, 1453, 1453, 1452, 1452, 1451, 1451, 1451, 1450, 1450, 1449, 1449, 1449, 1448, 1448, 1447, 1447, 1447, 1446, 1446, 1445, 1445, 1445, 1444, 1444, 1443, 1443, 1443, 1442, 1442, 1441, 1441, 1441, 1440, 1440, 1440, 1439, 1439, 1438, 1438, 1438, 1437, 1437, 1436, 1436, 1436, 1435, 1435, 1434, 1434, 1434, 1433, 1433, 1432, 1432, 1432, 1431, 1431, 1430, 1430, 1430, 1429, 1429, 1428, 1428, 1428, 1427, 1427, 1427, 1426, 1426, 1425, 1425, 1425, 1424, 1424, 1423, 1423, 1423, 1422, 1422, 1421, 1421, 1421, 1420, 1420, 1420, 1419, 1419, 1418, 1418, 1418, 1417, 1417, 1416, 1416, 1416, 1415, 1415, 1414, 1414, 1414, 1413, 1413, 1413, 1412, 1412, 1411, 1411, 1411, 1410, 1410, 1409, 1409, 1409, 1408, 1408, 1408, 1407, 1407, 1406, 1406, 1406, 1405, 1405, 1405, 1404, 1404, 1403, 1403, 1403, 1402, 1402, 1401, 1401, 1401, 1400, 1400, 1400, 1399, 1399, 1398, 1398, 1398, 1397, 1397, 1397, 1396, 1396, 1395, 1395, 1395, 1394, 1394, 1394, 1393, 1393, 1392, 1392, 1392, 1391, 1391, 1390, 1390, 1390, 1389, 1389, 1389, 1388, 1388, 1387, 1387, 1387, 1386, 1386, 1386, 1385, 1385, 1384, 1384, 1384, 1383, 1383, 1383, 1382, 1382, 1381, 1381, 1381, 1380, 1380, 1380, 1379, 1379, 1379, 1378, 1378, 1377, 1377, 1377, 1376, 1376, 1376, 1375, 1375, 1374, 1374, 1374, 1373, 1373, 1373, 1372, 1372, 1371, 1371, 1371, 1370, 1370, 1370, 1369, 1369, 1369, 1368, 1368, 1367, 1367, 1367, 1366, 1366, 1366, 1365, 1365, 1364, 1364, 1364, 1363, 1363, 1363, 1362, 1362, 1362, 1361, 1361, 1360, 1360, 1360, 1359, 1359, 1359, 1358, 1358, 1358, 1357, 1357, 1356, 1356, 1356, 1355, 1355, 1355, 1354, 1354, 1353, 1353, 1353, 1352, 1352, 1352, 1351, 1351, 1351, 1350, 1350, 1349, 1349, 1349, 1348, 1348, 1348, 1347, 1347, 1347, 1346, 1346, 1346, 1345, 1345, 1344, 1344, 1344, 1343, 1343, 1343, 1342, 1342, 1342, 1341, 1341, 1340, 1340, 1340, 1339, 1339, 1339, 1338, 1338, 1338, 1337, 1337, 1337, 1336, 1336, 1335, 1335, 1335, 1334, 1334, 1334, 1333, 1333, 1333, 1332, 1332, 1331, 1331, 1331, 1330, 1330, 1330, 1329, 1329, 1329, 1328, 1328, 1328, 1327, 1327, 1327, 1326, 1326, 1325, 1325, 1325, 1324, 1324, 1324, 1323, 1323, 1323, 1322, 1322, 1322, 1321, 1321, 1320, 1320, 1320, 1319, 1319, 1319, 1318, 1318, 1318, 1317, 1317, 1317, 1316, 1316, 1316, 1315, 1315, 1314, 1314, 1314, 1313, 1313, 1313, 1312, 1312, 1312, 1311, 1311, 1311, 1310, 1310, 1310, 1309, 1309, 1308, 1308, 1308, 1307, 1307, 1307, 1306, 1306, 1306, 1305, 1305, 1305, 1304, 1304, 1304, 1303, 1303, 1303, 1302, 1302, 1301, 1301, 1301, 1300, 1300, 1300, 1299, 1299, 1299, 1298, 1298, 1298, 1297, 1297, 1297, 1296, 1296, 1296, 1295, 1295, 1294, 1294, 1294, 1293, 1293, 1293, 1292, 1292, 1292, 1291, 1291, 1291, 1290, 1290, 1290, 1289, 1289, 1289, 1288, 1288, 1288, 1287, 1287, 1286, 1286, 1286, 1285, 1285, 1285, 1284, 1284, 1284, 1283, 1283, 1283, 1282, 1282, 1282, 1281, 1281, 1281, 1280, 1280, 1280, 1279, 1279, 1279, 1278, 1278, 1278, 1277, 1277, 1276, 1276, 1276, 1275, 1275, 1275, 1274, 1274, 1274, 1273, 1273, 1273, 1272, 1272, 1272, 1271, 1271, 1271, 1270, 1270, 1270, 1269, 1269, 1269, 1268, 1268, 1268, 1267, 1267, 1267, 1266, 1266, 1266, 1265, 1265, 1265, 1264, 1264, 1263, 1263, 1263, 1262, 1262, 1262, 1261, 1261, 1261, 1260, 1260, 1260, 1259, 1259, 1259, 1258, 1258, 1258, 1257, 1257, 1257, 1256, 1256, 1256, 1255, 1255, 1255, 1254, 1254, 1254, 1253, 1253, 1253, 1252, 1252, 1252, 1251, 1251, 1251, 1250, 1250, 1250, 1249, 1249, 1249, 1248, 1248, 1248, 1247, 1247, 1247, 1246, 1246, 1245, 1245, 1245, 1244, 1244, 1244, 1243, 1243, 1243, 1242, 1242, 1242, 1241, 1241, 1241, 1240, 1240, 1240, 1239, 1239, 1239, 1238, 1238, 1238, 1237, 1237, 1237, 1236, 1236, 1236, 1235, 1235, 1235, 1234, 1234, 1234, 1233, 1233, 1233, 1232, 1232, 1232, 1231, 1231, 1231, 1230, 1230, 1230, 1229, 1229, 1229, 1228, 1228, 1228, 1227, 1227, 1227, 1226, 1226, 1226, 1225, 1225, 1225, 1224, 1224, 1224, 1223, 1223, 1223, 1222, 1222, 1222, 1221, 1221, 1221, 1220, 1220, 1220, 1219, 1219, 1219, 1218, 1218, 1218, 1217, 1217, 1217, 1216, 1216, 1216, 1215, 1215, 1215, 1214, 1214, 1214, 1213, 1213, 1213, 1212, 1212, 1212, 1211, 1211, 1211, 1210, 1210, 1210, 1209, 1209, 1209, 1208, 1208, 1208, 1207, 1207, 1207, 1206, 1206, 1206, 1205, 1205, 1205, 1204, 1204, 1204, 1203, 1203, 1203, 1202, 1202, 1202, 1201, 1201, 1201, 1200, 1200, 1200, 1199, 1199, 1199, 1198, 1198, 1198, 1197, 1197, 1197, 1196, 1196, 1196, 1195, 1195, 1195, 1194, 1194, 1194, 1193, 1193, 1193, 1192, 1192, 1192, 1192, 1191, 1191, 1191, 1190, 1190, 1190, 1189, 1189, 1189, 1188, 1188, 1188, 1187, 1187, 1187, 1186, 1186, 1186, 1185, 1185, 1185, 1184, 1184, 1184, 1183, 1183, 1183, 1182, 1182, 1182, 1181, 1181, 1181, 1180, 1180, 1180, 1179, 1179, 1179, 1178, 1178, 1178, 1177, 1177, 1177, 1176, 1176, 1176, 1175, 1175, 1175, 1174, 1174, 1174, 1173, 1173, 1173, 1172, 1172, 1172, 1172, 1171, 1171, 1171, 1170, 1170, 1170, 1169, 1169, 1169, 1168, 1168, 1168, 1167, 1167, 1167, 1166, 1166, 1166, 1165, 1165, 1165, 1164, 1164, 1164, 1163, 1163, 1163, 1162, 1162, 1162, 1161, 1161, 1161, 1160, 1160, 1160, 1159, 1159, 1159, 1158, 1158, 1158, 1157, 1157, 1157, 1157, 1156, 1156, 1156, 1155, 1155, 1155, 1154, 1154, 1154, 1153, 1153, 1153, 1152, 1152, 1152, 1151, 1151, 1151, 1150, 1150, 1150, 1149, 1149, 1149, 1148, 1148, 1148, 1147, 1147, 1147, 1146, 1146, 1146, 1145, 1145, 1145, 1145, 1144, 1144, 1144, 1143, 1143, 1143, 1142, 1142, 1142, 1141, 1141, 1141, 1140, 1140, 1140, 1139, 1139, 1139, 1138, 1138, 1138, 1137, 1137, 1137, 1136, 1136, 1136, 1135, 1135, 1135, 1134, 1134, 1134, 1134, 1133, 1133, 1133, 1132, 1132, 1132, 1131, 1131, 1131, 1130, 1130, 1130, 1129, 1129, 1129, 1128, 1128, 1128, 1127, 1127, 1127, 1126, 1126, 1126, 1125, 1125, 1125, 1124, 1124, 1124, 1124, 1123, 1123, 1123, 1122, 1122, 1122, 1121, 1121, 1121, 1120, 1120, 1120, 1119, 1119, 1119, 1118, 1118, 1118, 1117, 1117, 1117, 1116, 1116, 1116, 1115, 1115, 1115, 1115, 1114, 1114, 1114, 1113, 1113, 1113, 1112, 1112, 1112, 1111, 1111, 1111, 1110, 1110, 1110, 1109, 1109, 1109, 1108, 1108, 1108, 1107, 1107, 1107, 1106, 1106, 1106, 1106, 1105, 1105, 1105, 1104, 1104, 1104, 1103, 1103, 1103, 1102, 1102, 1102, 1101, 1101, 1101, 1100, 1100, 1100, 1099, 1099, 1099, 1098, 1098, 1098, 1098, 1097, 1097, 1097, 1096, 1096, 1096, 1095, 1095, 1095, 1094, 1094, 1094, 1093, 1093, 1093, 1092, 1092, 1092, 1091, 1091, 1091, 1090, 1090, 1090, 1090, 1089, 1089, 1089, 1088, 1088, 1088, 1087, 1087, 1087, 1086, 1086, 1086, 1085, 1085, 1085, 1084, 1084, 1084, 1083, 1083, 1083, 1082, 1082, 1082, 1082, 1081, 1081, 1081, 1080, 1080, 1080, 1079, 1079, 1079, 1078, 1078, 1078, 1077, 1077, 1077, 1076, 1076, 1076, 1075, 1075, 1075, 1074, 1074, 1074, 1074, 1073, 1073, 1073, 1072, 1072, 1072, 1071, 1071, 1071, 1070, 1070, 1070, 1069, 1069, 1069, 1068, 1068, 1068, 1067, 1067, 1067, 1067, 1066, 1066, 1066, 1065, 1065, 1065, 1064, 1064, 1064, 1063, 1063, 1063, 1062, 1062, 1062, 1061, 1061, 1061, 1060, 1060, 1060, 1059, 1059, 1059, 1059, 1058, 1058, 1058, 1057, 1057, 1057, 1056, 1056, 1056, 1055, 1055, 1055, 1054, 1054, 1054, 1053, 1053, 1053, 1052, 1052, 1052, 1052, 1051, 1051, 1051, 1050, 1050, 1050, 1049, 1049, 1049, 1048, 1048, 1048, 1047, 1047, 1047, 1046, 1046, 1046, 1045, 1045, 1045, 1045, 1044, 1044, 1044, 1043, 1043, 1043, 1042, 1042, 1042, 1041, 1041, 1041, 1040, 1040, 1040, 1039, 1039, 1039, 1038, 1038, 1038, 1038, 1037, 1037, 1037, 1036, 1036, 1036, 1035, 1035, 1035, 1034, 1034, 1034, 1033, 1033, 1033, 1032, 1032, 1032, 1031, 1031, 1031, 1031, 1030, 1030, 1030, 1029, 1029, 1029, 1028, 1028, 1028, 1027, 1027, 1027, 1026, 1026, 1026, 1025, 1025, 1025, 1024, 1024, 1024, 1024, 1023, 1023, 1023, 1022, 1022, 1022, 1021, 1021, 1021, 1020, 1020, 1020, 1019, 1019, 1019, 1018, 1018, 1018, 1017, 1017, 1017, 1016, 1016, 1016, 1016, 1015, 1015, 1015, 1014, 1014, 1014, 1013, 1013, 1013, 1012, 1012, 1012, 1011, 1011, 1011, 1010, 1010, 1010, 1009, 1009, 1009, 1009, 1008, 1008, 1008, 1007, 1007, 1007, 1006, 1006, 1006, 1005, 1005, 1005, 1004, 1004, 1004, 1003, 1003, 1003, 1002, 1002, 1002, 1002, 1001, 1001, 1001, 1000, 1000, 1000, 999, 999, 999, 998, 998, 998, 997, 997, 997, 996, 996, 996, 995, 995, 995, 995, 994, 994, 994, 993, 993, 993, 992, 992, 992, 991, 991, 991, 990, 990, 990, 989, 989, 989, 988, 988, 988, 988, 987, 987, 987, 986, 986, 986, 985, 985, 985, 984, 984, 984, 983, 983, 983, 982, 982, 982, 981, 981, 981, 980, 980, 980, 980, 979, 979, 979, 978, 978, 978, 977, 977, 977, 976, 976, 976, 975, 975, 975, 974, 974, 974, 973, 973, 973, 973, 972, 972, 972, 971, 971, 971, 970, 970, 970, 969, 969, 969, 968, 968, 968, 967, 967, 967, 966, 966, 966, 965, 965, 965, 965, 964, 964, 964, 963, 963, 963, 962, 962, 962, 961, 961, 961, 960, 960, 960, 959, 959, 959, 958, 958, 958, 957, 957, 957, 957, 956, 956, 956, 955, 955, 955, 954, 954, 954, 953, 953, 953, 952, 952, 952, 951, 951, 951, 950, 950, 950, 949, 949, 949, 949, 948, 948, 948, 947, 947, 947, 946, 946, 946, 945, 945, 945, 944, 944, 944, 943, 943, 943, 942, 942, 942, 941, 941, 941, 941, 940, 940, 940, 939, 939, 939, 938, 938, 938, 937, 937, 937, 936, 936, 936, 935, 935, 935, 934, 934, 934, 933, 933, 933, 932, 932, 932, 932, 931, 931, 931, 930, 930, 930, 929, 929, 929, 928, 928, 928, 927, 927, 927, 926, 926, 926, 925, 925, 925, 924, 924, 924, 923, 923, 923, 923, 922, 922, 922, 921, 921, 921, 920, 920, 920, 919, 919, 919, 918, 918, 918, 917, 917, 917, 916, 916, 916, 915, 915, 915, 914, 914, 914, 913, 913, 913, 913, 912, 912, 912, 911, 911, 911, 910, 910, 910, 909, 909, 909, 908, 908, 908, 907, 907, 907, 906, 906, 906, 905, 905, 905, 904, 904, 904, 903, 903, 903, 902, 902, 902, 902, 901, 901, 901, 900, 900, 900, 899, 899, 899, 898, 898, 898, 897, 897, 897, 896, 896, 896, 895, 895, 895, 894, 894, 894, 893, 893, 893, 892, 892, 892, 891, 891, 891, 890, 890, 890, 890, 889, 889, 889, 888, 888, 888, 887, 887, 887, 886, 886, 886, 885, 885, 885, 884, 884, 884, 883, 883, 883, 882, 882, 882, 881, 881, 881, 880, 880, 880, 879, 879, 879, 878, 878, 878, 877, 877, 877, 876, 876, 876, 875, 875, 875, 875, 874, 874, 874, 873, 873, 873, 872, 872, 872, 871, 871, 871, 870, 870, 870, 869, 869, 869, 868, 868, 868, 867, 867, 867, 866, 866, 866, 865, 865, 865, 864, 864, 864, 863, 863, 863, 862, 862, 862, 861, 861, 861, 860, 860, 860, 859, 859, 859, 858, 858, 858, 857, 857, 857, 856, 856, 856, 855, 855, 855, 855, 854, 854, 854, 853, 853, 853, 852, 852, 852, 851, 851, 851, 850, 850, 850, 849, 849, 849, 848, 848, 848, 847, 847, 847, 846, 846, 846, 845, 845, 845, 844, 844, 844, 843, 843, 843, 842, 842, 842, 841, 841, 841, 840, 840, 840, 839, 839, 839, 838, 838, 838, 837, 837, 837, 836, 836, 836, 835, 835, 835, 834, 834, 834, 833, 833, 833, 832, 832, 832, 831, 831, 831, 830, 830, 830, 829, 829, 829, 828, 828, 828, 827, 827, 827, 826, 826, 826, 825, 825, 825, 824, 824, 824, 823, 823, 823, 822, 822, 822, 821, 821, 821, 820, 820, 820, 819, 819, 819, 818, 818, 818, 817, 817, 817, 816, 816, 816, 815, 815, 815, 814, 814, 814, 813, 813, 813, 812, 812, 812, 811, 811, 811, 810, 810, 810, 809, 809, 809, 808, 808, 808, 807, 807, 807, 806, 806, 806, 805, 805, 805, 804, 804, 804, 803, 803, 803, 802, 802, 802, 801, 801, 800, 800, 800, 799, 799, 799, 798, 798, 798, 797, 797, 797, 796, 796, 796, 795, 795, 795, 794, 794, 794, 793, 793, 793, 792, 792, 792, 791, 791, 791, 790, 790, 790, 789, 789, 789, 788, 788, 788, 787, 787, 787, 786, 786, 786, 785, 785, 785, 784, 784, 784, 783, 783, 782, 782, 782, 781, 781, 781, 780, 780, 780, 779, 779, 779, 778, 778, 778, 777, 777, 777, 776, 776, 776, 775, 775, 775, 774, 774, 774, 773, 773, 773, 772, 772, 772, 771, 771, 771, 770, 770, 769, 769, 769, 768, 768, 768, 767, 767, 767, 766, 766, 766, 765, 765, 765, 764, 764, 764, 763, 763, 763, 762, 762, 762, 761, 761, 761, 760, 760, 759, 759, 759, 758, 758, 758, 757, 757, 757, 756, 756, 756, 755, 755, 755, 754, 754, 754, 753, 753, 753, 752, 752, 751, 751, 751, 750, 750, 750, 749, 749, 749, 748, 748, 748, 747, 747, 747, 746, 746, 746, 745, 745, 744, 744, 744, 743, 743, 743, 742, 742, 742, 741, 741, 741, 740, 740, 740, 739, 739, 739, 738, 738, 737, 737, 737, 736, 736, 736, 735, 735, 735, 734, 734, 734, 733, 733, 733, 732, 732, 731, 731, 731, 730, 730, 730, 729, 729, 729, 728, 728, 728, 727, 727, 727, 726, 726, 725, 725, 725, 724, 724, 724, 723, 723, 723, 722, 722, 722, 721, 721, 720, 720, 720, 719, 719, 719, 718, 718, 718, 717, 717, 717, 716, 716, 716, 715, 715, 714, 714, 714, 713, 713, 713, 712, 712, 712, 711, 711, 710, 710, 710, 709, 709, 709, 708, 708, 708, 707, 707, 707, 706, 706, 705, 705, 705, 704, 704, 704, 703, 703, 703, 702, 702, 701, 701, 701, 700, 700, 700, 699, 699, 699, 698, 698, 698, 697, 697, 696, 696, 696, 695, 695, 695, 694, 694, 694, 693, 693, 692, 692, 692, 691, 691, 691, 690, 690, 689, 689, 689, 688, 688, 688, 687, 687, 687, 686, 686, 685, 685, 685, 684, 684, 684, 683, 683, 683, 682, 682, 681, 681, 681, 680, 680, 680, 679, 679, 678, 678, 678, 677, 677, 677, 676, 676, 676, 675, 675, 674, 674, 674, 673, 673, 673, 672, 672, 671, 671, 671, 670, 670, 670, 669, 669, 668, 668, 668, 667, 667, 667, 666, 666, 666, 665, 665, 664, 664, 664, 663, 663, 663, 662, 662, 661, 661, 661, 660, 660, 660, 659, 659, 658, 658, 658, 657, 657, 657, 656, 656, 655, 655, 655, 654, 654, 653, 653, 653, 652, 652, 652, 651, 651, 650, 650, 650, 649, 649, 649, 648, 648, 647, 647, 647, 646, 646, 646, 645, 645, 644, 644, 644, 643, 643, 642, 642, 642, 641, 641, 641, 640, 640, 639, 639, 639, 638, 638, 638, 637, 637, 636, 636, 636, 635, 635, 634, 634, 634, 633, 633, 633, 632, 632, 631, 631, 631, 630, 630, 629, 629, 629, 628, 628, 627, 627, 627, 626, 626, 626, 625, 625, 624, 624, 624, 623, 623, 622, 622, 622, 621, 621, 620, 620, 620, 619, 619, 619, 618, 618, 617, 617, 617, 616, 616, 615, 615, 615, 614, 614, 613, 613, 613, 612, 612, 611, 611, 611, 610, 610, 609, 609, 609, 608, 608, 607, 607, 607, 606, 606, 606, 605, 605, 604, 604, 604, 603, 603, 602, 602, 602, 601, 601, 600, 600, 600, 599, 599, 598, 598, 598, 597, 597, 596, 596, 596, 595, 595, 594, 594, 594, 593, 593, 592, 592, 591, 591, 591, 590, 590, 589, 589, 589, 588, 588, 587, 587, 587, 586, 586, 585, 585, 585, 584, 584, 583, 583, 583, 582, 582, 581, 581, 581, 580, 580, 579, 579, 578, 578, 578, 577, 577, 576, 576, 576, 575, 575, 574, 574, 574, 573, 573, 572, 572, 571, 571, 571, 570, 570, 569, 569, 569, 568, 568, 567, 567, 566, 566, 566, 565, 565, 564, 564, 564, 563, 563, 562, 562, 561, 561, 561, 560, 560, 559, 559, 559, 558, 558, 557, 557, 556, 556, 556, 555, 555, 554, 554, 553, 553, 553, 552, 552, 551, 551, 550, 550, 550, 549, 549, 548, 548, 548, 547, 547, 546, 546, 545, 545, 545, 544, 544, 543, 543, 542, 542, 542, 541, 541, 540, 540, 539, 539, 538, 538, 538, 537, 537, 536, 536, 535, 535, 535, 534, 534, 533, 533, 532, 532, 532, 531, 531, 530, 530, 529, 529, 528, 528, 528, 527, 527, 526, 526, 525, 525, 524, 524, 524, 523, 523, 522, 522, 521, 521, 521, 520, 520, 519, 519, 518, 518, 517, 517, 517, 516, 516, 515, 515, 514, 514, 513, 513, 512, 512, 512, 511, 511, 510, 510, 509, 509, 508, 508, 508, 507, 507, 506, 506, 505, 505, 504, 504, 503, 503, 503, 502, 502, 501, 501, 500, 500, 499, 499, 498, 498, 497, 497, 497, 496, 496, 495, 495, 494, 494, 493, 493, 492, 492, 491, 491, 491, 490, 490, 489, 489, 488, 488, 487, 487, 486, 486, 485, 485, 484, 484, 484, 483, 483, 482, 482, 481, 481, 480, 480, 479, 479, 478, 478, 477, 477, 476, 476, 475, 475, 474, 474, 474, 473, 473, 472, 472, 471, 471, 470, 470, 469, 469, 468, 468, 467, 467, 466, 466, 465, 465, 464, 464, 463, 463, 462, 462, 461, 461, 460, 460, 459, 459, 458, 458, 458, 457, 457, 456, 456, 455, 455, 454, 454, 453, 453, 452, 452, 451, 451, 450, 450, 449, 449, 448, 448, 447, 447, 446, 446, 445, 445, 444, 444, 443, 443, 442, 442, 441, 440, 440, 439, 439, 438, 438, 437, 437, 436, 436, 435, 435, 434, 434, 433, 433, 432, 432, 431, 431, 430, 430, 429, 429, 428, 428, 427, 427, 426, 426, 425, 424, 424, 423, 423, 422, 422, 421, 421, 420, 420, 419, 419, 418, 418, 417, 417, 416, 415, 415, 414, 414, 413, 413, 412, 412, 411, 411, 410, 410, 409, 408, 408, 407, 407, 406, 406, 405, 405, 404, 404, 403, 402, 402, 401, 401, 400, 400, 399, 399, 398, 398, 397, 396, 396, 395, 395, 394, 394, 393, 392, 392, 391, 391, 390, 390, 389, 389, 388, 387, 387, 386, 386, 385, 385, 384, 383, 383, 382, 382, 381, 381, 380, 379, 379, 378, 378, 377, 376, 376, 375, 375, 374, 374, 373, 372, 372, 371, 371, 370, 369, 369, 368, 368, 367, 366, 366, 365, 365, 364, 363, 363, 362, 362, 361, 360, 360, 359, 359, 358, 357, 357, 356, 356, 355, 354, 354, 353, 353, 352, 351, 351, 350, 349, 349, 348, 348, 347, 346, 346, 345, 344, 344, 343, 342, 342, 341, 341, 340, 339, 339, 338, 337, 337, 336, 335, 335, 334, 334, 333, 332, 332, 331, 330, 330, 329, 328, 328, 327, 326, 326, 325, 324, 324, 323, 322, 322, 321, 320, 320, 319, 318, 318, 317, 316, 316, 315, 314, 313, 313, 312, 311, 311, 310, 309, 309, 308, 307, 307, 306, 305, 304, 304, 303, 302, 302, 301, 300, 299, 299, 298, 297, 297, 296, 295, 294, 294, 293, 292, 291, 291, 290, 289, 289, 288, 287, 286, 286, 285, 284, 283, 283, 282, 281, 280, 279, 279, 278, 277, 276, 276, 275, 274, 273, 273, 272, 271, 270, 269, 269, 268, 267, 266, 265, 265, 264, 263, 262, 261, 261, 260, 259, 258, 257, 256, 256, 255, 254, 253, 252, 251, 251, 250, 249, 248, 247, 246, 245, 245, 244, 243, 242, 241, 240, 239, 238, 238, 237, 236, 235, 234, 233, 232, 231, 230, 229, 228, 228, 227, 226, 225, 224, 223, 222, 221, 220, 219, 218, 217, 216, 215, 214, 213, 212, 211, 210, 209, 208, 207, 206, 205, 204, 203, 202, 201, 200, 199, 198, 197, 196, 195, 193, 192, 191, 190, 189, 188, 187, 186, 185, 183, 182, 181, 180, 179, 178, 176, 175, 174, 173, 172, 170, 169, 168, 167, 165, 164, 163, 162, 160, 159, 158, 156, 155, 154, 152, 151, 150, 148, 147, 145, 144, 142, 141, 139, 138, 136, 135, 133, 132, 130, 129, 127, 125, 124, 122, 120, 118, 117, 115, 113, 111, 109, 107, 105, 103, 101, 99, 97, 95, 93, 91, 88, 86, 84, 81, 78, 76, 73, 70, 67, 64, 61, 57, 53, 49, 45, 40, 35, 28, 0 }; const short ArcSineTable[4096]={ -1023, -1004, -996, -989, -984, -979, -975, -971, -967, -963, -960, -957, -954, -951, -948, -946, -943, -940, -938, -936, -933, -931, -929, -927, -925, -923, -921, -919, -917, -915, -913, -911, -909, -907, -906, -904, -902, -900, -899, -897, -895, -894, -892, -891, -889, -888, -886, -885, -883, -882, -880, -879, -877, -876, -874, -873, -872, -870, -869, -868, -866, -865, -864, -862, -861, -860, -859, -857, -856, -855, -854, -852, -851, -850, -849, -848, -846, -845, -844, -843, -842, -841, -839, -838, -837, -836, -835, -834, -833, -832, -831, -829, -828, -827, -826, -825, -824, -823, -822, -821, -820, -819, -818, -817, -816, -815, -814, -813, -812, -811, -810, -809, -808, -807, -806, -805, -804, -803, -802, -801, -800, -799, -798, -797, -796, -796, -795, -794, -793, -792, -791, -790, -789, -788, -787, -786, -786, -785, -784, -783, -782, -781, -780, -779, -779, -778, -777, -776, -775, -774, -773, -773, -772, -771, -770, -769, -768, -768, -767, -766, -765, -764, -763, -763, -762, -761, -760, -759, -759, -758, -757, -756, -755, -755, -754, -753, -752, -751, -751, -750, -749, -748, -748, -747, -746, -745, -745, -744, -743, -742, -741, -741, -740, -739, -738, -738, -737, -736, -735, -735, -734, -733, -733, -732, -731, -730, -730, -729, -728, -727, -727, -726, -725, -725, -724, -723, -722, -722, -721, -720, -720, -719, -718, -717, -717, -716, -715, -715, -714, -713, -713, -712, -711, -711, -710, -709, -708, -708, -707, -706, -706, -705, -704, -704, -703, -702, -702, -701, -700, -700, -699, -698, -698, -697, -696, -696, -695, -694, -694, -693, -692, -692, -691, -690, -690, -689, -689, -688, -687, -687, -686, -685, -685, -684, -683, -683, -682, -682, -681, -680, -680, -679, -678, -678, -677, -676, -676, -675, -675, -674, -673, -673, -672, -671, -671, -670, -670, -669, -668, -668, -667, -667, -666, -665, -665, -664, -664, -663, -662, -662, -661, -661, -660, -659, -659, -658, -658, -657, -656, -656, -655, -655, -654, -653, -653, -652, -652, -651, -650, -650, -649, -649, -648, -648, -647, -646, -646, -645, -645, -644, -643, -643, -642, -642, -641, -641, -640, -639, -639, -638, -638, -637, -637, -636, -635, -635, -634, -634, -633, -633, -632, -632, -631, -630, -630, -629, -629, -628, -628, -627, -626, -626, -625, -625, -624, -624, -623, -623, -622, -622, -621, -620, -620, -619, -619, -618, -618, -617, -617, -616, -616, -615, -614, -614, -613, -613, -612, -612, -611, -611, -610, -610, -609, -609, -608, -607, -607, -606, -606, -605, -605, -604, -604, -603, -603, -602, -602, -601, -601, -600, -600, -599, -598, -598, -597, -597, -596, -596, -595, -595, -594, -594, -593, -593, -592, -592, -591, -591, -590, -590, -589, -589, -588, -588, -587, -587, -586, -586, -585, -585, -584, -584, -583, -582, -582, -581, -581, -580, -580, -579, -579, -578, -578, -577, -577, -576, -576, -575, -575, -574, -574, -573, -573, -572, -572, -571, -571, -570, -570, -569, -569, -568, -568, -567, -567, -566, -566, -566, -565, -565, -564, -564, -563, -563, -562, -562, -561, -561, -560, -560, -559, -559, -558, -558, -557, -557, -556, -556, -555, -555, -554, -554, -553, -553, -552, -552, -551, -551, -550, -550, -550, -549, -549, -548, -548, -547, -547, -546, -546, -545, -545, -544, -544, -543, -543, -542, -542, -541, -541, -540, -540, -540, -539, -539, -538, -538, -537, -537, -536, -536, -535, -535, -534, -534, -533, -533, -533, -532, -532, -531, -531, -530, -530, -529, -529, -528, -528, -527, -527, -527, -526, -526, -525, -525, -524, -524, -523, -523, -522, -522, -521, -521, -521, -520, -520, -519, -519, -518, -518, -517, -517, -516, -516, -516, -515, -515, -514, -514, -513, -513, -512, -512, -512, -511, -511, -510, -510, -509, -509, -508, -508, -507, -507, -507, -506, -506, -505, -505, -504, -504, -503, -503, -503, -502, -502, -501, -501, -500, -500, -500, -499, -499, -498, -498, -497, -497, -496, -496, -496, -495, -495, -494, -494, -493, -493, -492, -492, -492, -491, -491, -490, -490, -489, -489, -489, -488, -488, -487, -487, -486, -486, -486, -485, -485, -484, -484, -483, -483, -482, -482, -482, -481, -481, -480, -480, -479, -479, -479, -478, -478, -477, -477, -476, -476, -476, -475, -475, -474, -474, -474, -473, -473, -472, -472, -471, -471, -471, -470, -470, -469, -469, -468, -468, -468, -467, -467, -466, -466, -465, -465, -465, -464, -464, -463, -463, -463, -462, -462, -461, -461, -460, -460, -460, -459, -459, -458, -458, -458, -457, -457, -456, -456, -455, -455, -455, -454, -454, -453, -453, -453, -452, -452, -451, -451, -450, -450, -450, -449, -449, -448, -448, -448, -447, -447, -446, -446, -446, -445, -445, -444, -444, -443, -443, -443, -442, -442, -441, -441, -441, -440, -440, -439, -439, -439, -438, -438, -437, -437, -437, -436, -436, -435, -435, -435, -434, -434, -433, -433, -433, -432, -432, -431, -431, -430, -430, -430, -429, -429, -428, -428, -428, -427, -427, -426, -426, -426, -425, -425, -424, -424, -424, -423, -423, -422, -422, -422, -421, -421, -420, -420, -420, -419, -419, -418, -418, -418, -417, -417, -417, -416, -416, -415, -415, -415, -414, -414, -413, -413, -413, -412, -412, -411, -411, -411, -410, -410, -409, -409, -409, -408, -408, -407, -407, -407, -406, -406, -405, -405, -405, -404, -404, -404, -403, -403, -402, -402, -402, -401, -401, -400, -400, -400, -399, -399, -398, -398, -398, -397, -397, -397, -396, -396, -395, -395, -395, -394, -394, -393, -393, -393, -392, -392, -391, -391, -391, -390, -390, -390, -389, -389, -388, -388, -388, -387, -387, -386, -386, -386, -385, -385, -385, -384, -384, -383, -383, -383, -382, -382, -382, -381, -381, -380, -380, -380, -379, -379, -378, -378, -378, -377, -377, -377, -376, -376, -375, -375, -375, -374, -374, -374, -373, -373, -372, -372, -372, -371, -371, -371, -370, -370, -369, -369, -369, -368, -368, -367, -367, -367, -366, -366, -366, -365, -365, -364, -364, -364, -363, -363, -363, -362, -362, -361, -361, -361, -360, -360, -360, -359, -359, -358, -358, -358, -357, -357, -357, -356, -356, -356, -355, -355, -354, -354, -354, -353, -353, -353, -352, -352, -351, -351, -351, -350, -350, -350, -349, -349, -348, -348, -348, -347, -347, -347, -346, -346, -346, -345, -345, -344, -344, -344, -343, -343, -343, -342, -342, -341, -341, -341, -340, -340, -340, -339, -339, -339, -338, -338, -337, -337, -337, -336, -336, -336, -335, -335, -335, -334, -334, -333, -333, -333, -332, -332, -332, -331, -331, -330, -330, -330, -329, -329, -329, -328, -328, -328, -327, -327, -326, -326, -326, -325, -325, -325, -324, -324, -324, -323, -323, -323, -322, -322, -321, -321, -321, -320, -320, -320, -319, -319, -319, -318, -318, -317, -317, -317, -316, -316, -316, -315, -315, -315, -314, -314, -314, -313, -313, -312, -312, -312, -311, -311, -311, -310, -310, -310, -309, -309, -308, -308, -308, -307, -307, -307, -306, -306, -306, -305, -305, -305, -304, -304, -304, -303, -303, -302, -302, -302, -301, -301, -301, -300, -300, -300, -299, -299, -299, -298, -298, -297, -297, -297, -296, -296, -296, -295, -295, -295, -294, -294, -294, -293, -293, -293, -292, -292, -291, -291, -291, -290, -290, -290, -289, -289, -289, -288, -288, -288, -287, -287, -287, -286, -286, -285, -285, -285, -284, -284, -284, -283, -283, -283, -282, -282, -282, -281, -281, -281, -280, -280, -280, -279, -279, -278, -278, -278, -277, -277, -277, -276, -276, -276, -275, -275, -275, -274, -274, -274, -273, -273, -273, -272, -272, -271, -271, -271, -270, -270, -270, -269, -269, -269, -268, -268, -268, -267, -267, -267, -266, -266, -266, -265, -265, -265, -264, -264, -263, -263, -263, -262, -262, -262, -261, -261, -261, -260, -260, -260, -259, -259, -259, -258, -258, -258, -257, -257, -257, -256, -256, -256, -255, -255, -255, -254, -254, -253, -253, -253, -252, -252, -252, -251, -251, -251, -250, -250, -250, -249, -249, -249, -248, -248, -248, -247, -247, -247, -246, -246, -246, -245, -245, -245, -244, -244, -244, -243, -243, -243, -242, -242, -242, -241, -241, -240, -240, -240, -239, -239, -239, -238, -238, -238, -237, -237, -237, -236, -236, -236, -235, -235, -235, -234, -234, -234, -233, -233, -233, -232, -232, -232, -231, -231, -231, -230, -230, -230, -229, -229, -229, -228, -228, -228, -227, -227, -227, -226, -226, -226, -225, -225, -225, -224, -224, -224, -223, -223, -222, -222, -222, -221, -221, -221, -220, -220, -220, -219, -219, -219, -218, -218, -218, -217, -217, -217, -216, -216, -216, -215, -215, -215, -214, -214, -214, -213, -213, -213, -212, -212, -212, -211, -211, -211, -210, -210, -210, -209, -209, -209, -208, -208, -208, -207, -207, -207, -206, -206, -206, -205, -205, -205, -204, -204, -204, -203, -203, -203, -202, -202, -202, -201, -201, -201, -200, -200, -200, -199, -199, -199, -198, -198, -198, -197, -197, -197, -196, -196, -196, -195, -195, -195, -194, -194, -194, -193, -193, -193, -192, -192, -192, -191, -191, -191, -190, -190, -190, -189, -189, -189, -188, -188, -188, -187, -187, -187, -186, -186, -186, -185, -185, -185, -184, -184, -184, -183, -183, -183, -182, -182, -182, -181, -181, -181, -180, -180, -180, -179, -179, -179, -178, -178, -178, -177, -177, -177, -176, -176, -176, -175, -175, -175, -174, -174, -174, -173, -173, -173, -172, -172, -172, -171, -171, -171, -170, -170, -170, -169, -169, -169, -169, -168, -168, -168, -167, -167, -167, -166, -166, -166, -165, -165, -165, -164, -164, -164, -163, -163, -163, -162, -162, -162, -161, -161, -161, -160, -160, -160, -159, -159, -159, -158, -158, -158, -157, -157, -157, -156, -156, -156, -155, -155, -155, -154, -154, -154, -153, -153, -153, -152, -152, -152, -151, -151, -151, -150, -150, -150, -149, -149, -149, -149, -148, -148, -148, -147, -147, -147, -146, -146, -146, -145, -145, -145, -144, -144, -144, -143, -143, -143, -142, -142, -142, -141, -141, -141, -140, -140, -140, -139, -139, -139, -138, -138, -138, -137, -137, -137, -136, -136, -136, -135, -135, -135, -134, -134, -134, -134, -133, -133, -133, -132, -132, -132, -131, -131, -131, -130, -130, -130, -129, -129, -129, -128, -128, -128, -127, -127, -127, -126, -126, -126, -125, -125, -125, -124, -124, -124, -123, -123, -123, -122, -122, -122, -122, -121, -121, -121, -120, -120, -120, -119, -119, -119, -118, -118, -118, -117, -117, -117, -116, -116, -116, -115, -115, -115, -114, -114, -114, -113, -113, -113, -112, -112, -112, -111, -111, -111, -111, -110, -110, -110, -109, -109, -109, -108, -108, -108, -107, -107, -107, -106, -106, -106, -105, -105, -105, -104, -104, -104, -103, -103, -103, -102, -102, -102, -101, -101, -101, -101, -100, -100, -100, -99, -99, -99, -98, -98, -98, -97, -97, -97, -96, -96, -96, -95, -95, -95, -94, -94, -94, -93, -93, -93, -92, -92, -92, -92, -91, -91, -91, -90, -90, -90, -89, -89, -89, -88, -88, -88, -87, -87, -87, -86, -86, -86, -85, -85, -85, -84, -84, -84, -83, -83, -83, -83, -82, -82, -82, -81, -81, -81, -80, -80, -80, -79, -79, -79, -78, -78, -78, -77, -77, -77, -76, -76, -76, -75, -75, -75, -75, -74, -74, -74, -73, -73, -73, -72, -72, -72, -71, -71, -71, -70, -70, -70, -69, -69, -69, -68, -68, -68, -67, -67, -67, -67, -66, -66, -66, -65, -65, -65, -64, -64, -64, -63, -63, -63, -62, -62, -62, -61, -61, -61, -60, -60, -60, -59, -59, -59, -59, -58, -58, -58, -57, -57, -57, -56, -56, -56, -55, -55, -55, -54, -54, -54, -53, -53, -53, -52, -52, -52, -51, -51, -51, -51, -50, -50, -50, -49, -49, -49, -48, -48, -48, -47, -47, -47, -46, -46, -46, -45, -45, -45, -44, -44, -44, -44, -43, -43, -43, -42, -42, -42, -41, -41, -41, -40, -40, -40, -39, -39, -39, -38, -38, -38, -37, -37, -37, -36, -36, -36, -36, -35, -35, -35, -34, -34, -34, -33, -33, -33, -32, -32, -32, -31, -31, -31, -30, -30, -30, -29, -29, -29, -29, -28, -28, -28, -27, -27, -27, -26, -26, -26, -25, -25, -25, -24, -24, -24, -23, -23, -23, -22, -22, -22, -22, -21, -21, -21, -20, -20, -20, -19, -19, -19, -18, -18, -18, -17, -17, -17, -16, -16, -16, -15, -15, -15, -15, -14, -14, -14, -13, -13, -13, -12, -12, -12, -11, -11, -11, -10, -10, -10, -9, -9, -9, -8, -8, -8, -8, -7, -7, -7, -6, -6, -6, -5, -5, -5, -4, -4, -4, -3, -3, -3, -2, -2, -2, -1, -1, -1, 0, 0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 9, 9, 9, 10, 10, 10, 11, 11, 11, 12, 12, 12, 13, 13, 13, 14, 14, 14, 14, 15, 15, 15, 16, 16, 16, 17, 17, 17, 18, 18, 18, 19, 19, 19, 20, 20, 20, 21, 21, 21, 21, 22, 22, 22, 23, 23, 23, 24, 24, 24, 25, 25, 25, 26, 26, 26, 27, 27, 27, 28, 28, 28, 28, 29, 29, 29, 30, 30, 30, 31, 31, 31, 32, 32, 32, 33, 33, 33, 34, 34, 34, 35, 35, 35, 35, 36, 36, 36, 37, 37, 37, 38, 38, 38, 39, 39, 39, 40, 40, 40, 41, 41, 41, 42, 42, 42, 43, 43, 43, 43, 44, 44, 44, 45, 45, 45, 46, 46, 46, 47, 47, 47, 48, 48, 48, 49, 49, 49, 50, 50, 50, 50, 51, 51, 51, 52, 52, 52, 53, 53, 53, 54, 54, 54, 55, 55, 55, 56, 56, 56, 57, 57, 57, 58, 58, 58, 58, 59, 59, 59, 60, 60, 60, 61, 61, 61, 62, 62, 62, 63, 63, 63, 64, 64, 64, 65, 65, 65, 66, 66, 66, 66, 67, 67, 67, 68, 68, 68, 69, 69, 69, 70, 70, 70, 71, 71, 71, 72, 72, 72, 73, 73, 73, 74, 74, 74, 74, 75, 75, 75, 76, 76, 76, 77, 77, 77, 78, 78, 78, 79, 79, 79, 80, 80, 80, 81, 81, 81, 82, 82, 82, 82, 83, 83, 83, 84, 84, 84, 85, 85, 85, 86, 86, 86, 87, 87, 87, 88, 88, 88, 89, 89, 89, 90, 90, 90, 91, 91, 91, 91, 92, 92, 92, 93, 93, 93, 94, 94, 94, 95, 95, 95, 96, 96, 96, 97, 97, 97, 98, 98, 98, 99, 99, 99, 100, 100, 100, 100, 101, 101, 101, 102, 102, 102, 103, 103, 103, 104, 104, 104, 105, 105, 105, 106, 106, 106, 107, 107, 107, 108, 108, 108, 109, 109, 109, 110, 110, 110, 110, 111, 111, 111, 112, 112, 112, 113, 113, 113, 114, 114, 114, 115, 115, 115, 116, 116, 116, 117, 117, 117, 118, 118, 118, 119, 119, 119, 120, 120, 120, 121, 121, 121, 121, 122, 122, 122, 123, 123, 123, 124, 124, 124, 125, 125, 125, 126, 126, 126, 127, 127, 127, 128, 128, 128, 129, 129, 129, 130, 130, 130, 131, 131, 131, 132, 132, 132, 133, 133, 133, 133, 134, 134, 134, 135, 135, 135, 136, 136, 136, 137, 137, 137, 138, 138, 138, 139, 139, 139, 140, 140, 140, 141, 141, 141, 142, 142, 142, 143, 143, 143, 144, 144, 144, 145, 145, 145, 146, 146, 146, 147, 147, 147, 148, 148, 148, 148, 149, 149, 149, 150, 150, 150, 151, 151, 151, 152, 152, 152, 153, 153, 153, 154, 154, 154, 155, 155, 155, 156, 156, 156, 157, 157, 157, 158, 158, 158, 159, 159, 159, 160, 160, 160, 161, 161, 161, 162, 162, 162, 163, 163, 163, 164, 164, 164, 165, 165, 165, 166, 166, 166, 167, 167, 167, 168, 168, 168, 168, 169, 169, 169, 170, 170, 170, 171, 171, 171, 172, 172, 172, 173, 173, 173, 174, 174, 174, 175, 175, 175, 176, 176, 176, 177, 177, 177, 178, 178, 178, 179, 179, 179, 180, 180, 180, 181, 181, 181, 182, 182, 182, 183, 183, 183, 184, 184, 184, 185, 185, 185, 186, 186, 186, 187, 187, 187, 188, 188, 188, 189, 189, 189, 190, 190, 190, 191, 191, 191, 192, 192, 192, 193, 193, 193, 194, 194, 194, 195, 195, 195, 196, 196, 196, 197, 197, 197, 198, 198, 198, 199, 199, 199, 200, 200, 200, 201, 201, 201, 202, 202, 202, 203, 203, 203, 204, 204, 204, 205, 205, 205, 206, 206, 206, 207, 207, 207, 208, 208, 208, 209, 209, 209, 210, 210, 210, 211, 211, 211, 212, 212, 212, 213, 213, 213, 214, 214, 214, 215, 215, 215, 216, 216, 216, 217, 217, 217, 218, 218, 218, 219, 219, 219, 220, 220, 220, 221, 221, 221, 222, 222, 223, 223, 223, 224, 224, 224, 225, 225, 225, 226, 226, 226, 227, 227, 227, 228, 228, 228, 229, 229, 229, 230, 230, 230, 231, 231, 231, 232, 232, 232, 233, 233, 233, 234, 234, 234, 235, 235, 235, 236, 236, 236, 237, 237, 237, 238, 238, 238, 239, 239, 239, 240, 240, 241, 241, 241, 242, 242, 242, 243, 243, 243, 244, 244, 244, 245, 245, 245, 246, 246, 246, 247, 247, 247, 248, 248, 248, 249, 249, 249, 250, 250, 250, 251, 251, 251, 252, 252, 252, 253, 253, 254, 254, 254, 255, 255, 255, 256, 256, 256, 257, 257, 257, 258, 258, 258, 259, 259, 259, 260, 260, 260, 261, 261, 261, 262, 262, 262, 263, 263, 264, 264, 264, 265, 265, 265, 266, 266, 266, 267, 267, 267, 268, 268, 268, 269, 269, 269, 270, 270, 270, 271, 271, 272, 272, 272, 273, 273, 273, 274, 274, 274, 275, 275, 275, 276, 276, 276, 277, 277, 277, 278, 278, 279, 279, 279, 280, 280, 280, 281, 281, 281, 282, 282, 282, 283, 283, 283, 284, 284, 284, 285, 285, 286, 286, 286, 287, 287, 287, 288, 288, 288, 289, 289, 289, 290, 290, 290, 291, 291, 292, 292, 292, 293, 293, 293, 294, 294, 294, 295, 295, 295, 296, 296, 296, 297, 297, 298, 298, 298, 299, 299, 299, 300, 300, 300, 301, 301, 301, 302, 302, 303, 303, 303, 304, 304, 304, 305, 305, 305, 306, 306, 306, 307, 307, 307, 308, 308, 309, 309, 309, 310, 310, 310, 311, 311, 311, 312, 312, 313, 313, 313, 314, 314, 314, 315, 315, 315, 316, 316, 316, 317, 317, 318, 318, 318, 319, 319, 319, 320, 320, 320, 321, 321, 322, 322, 322, 323, 323, 323, 324, 324, 324, 325, 325, 325, 326, 326, 327, 327, 327, 328, 328, 328, 329, 329, 329, 330, 330, 331, 331, 331, 332, 332, 332, 333, 333, 334, 334, 334, 335, 335, 335, 336, 336, 336, 337, 337, 338, 338, 338, 339, 339, 339, 340, 340, 340, 341, 341, 342, 342, 342, 343, 343, 343, 344, 344, 345, 345, 345, 346, 346, 346, 347, 347, 347, 348, 348, 349, 349, 349, 350, 350, 350, 351, 351, 352, 352, 352, 353, 353, 353, 354, 354, 355, 355, 355, 356, 356, 356, 357, 357, 357, 358, 358, 359, 359, 359, 360, 360, 360, 361, 361, 362, 362, 362, 363, 363, 363, 364, 364, 365, 365, 365, 366, 366, 366, 367, 367, 368, 368, 368, 369, 369, 370, 370, 370, 371, 371, 371, 372, 372, 373, 373, 373, 374, 374, 374, 375, 375, 376, 376, 376, 377, 377, 377, 378, 378, 379, 379, 379, 380, 380, 381, 381, 381, 382, 382, 382, 383, 383, 384, 384, 384, 385, 385, 385, 386, 386, 387, 387, 387, 388, 388, 389, 389, 389, 390, 390, 390, 391, 391, 392, 392, 392, 393, 393, 394, 394, 394, 395, 395, 396, 396, 396, 397, 397, 397, 398, 398, 399, 399, 399, 400, 400, 401, 401, 401, 402, 402, 403, 403, 403, 404, 404, 404, 405, 405, 406, 406, 406, 407, 407, 408, 408, 408, 409, 409, 410, 410, 410, 411, 411, 412, 412, 412, 413, 413, 414, 414, 414, 415, 415, 416, 416, 416, 417, 417, 417, 418, 418, 419, 419, 419, 420, 420, 421, 421, 421, 422, 422, 423, 423, 423, 424, 424, 425, 425, 425, 426, 426, 427, 427, 427, 428, 428, 429, 429, 429, 430, 430, 431, 431, 432, 432, 432, 433, 433, 434, 434, 434, 435, 435, 436, 436, 436, 437, 437, 438, 438, 438, 439, 439, 440, 440, 440, 441, 441, 442, 442, 442, 443, 443, 444, 444, 445, 445, 445, 446, 446, 447, 447, 447, 448, 448, 449, 449, 449, 450, 450, 451, 451, 452, 452, 452, 453, 453, 454, 454, 454, 455, 455, 456, 456, 457, 457, 457, 458, 458, 459, 459, 459, 460, 460, 461, 461, 462, 462, 462, 463, 463, 464, 464, 464, 465, 465, 466, 466, 467, 467, 467, 468, 468, 469, 469, 470, 470, 470, 471, 471, 472, 472, 473, 473, 473, 474, 474, 475, 475, 475, 476, 476, 477, 477, 478, 478, 478, 479, 479, 480, 480, 481, 481, 481, 482, 482, 483, 483, 484, 484, 485, 485, 485, 486, 486, 487, 487, 488, 488, 488, 489, 489, 490, 490, 491, 491, 491, 492, 492, 493, 493, 494, 494, 495, 495, 495, 496, 496, 497, 497, 498, 498, 499, 499, 499, 500, 500, 501, 501, 502, 502, 502, 503, 503, 504, 504, 505, 505, 506, 506, 506, 507, 507, 508, 508, 509, 509, 510, 510, 511, 511, 511, 512, 512, 513, 513, 514, 514, 515, 515, 515, 516, 516, 517, 517, 518, 518, 519, 519, 520, 520, 520, 521, 521, 522, 522, 523, 523, 524, 524, 525, 525, 526, 526, 526, 527, 527, 528, 528, 529, 529, 530, 530, 531, 531, 532, 532, 532, 533, 533, 534, 534, 535, 535, 536, 536, 537, 537, 538, 538, 539, 539, 539, 540, 540, 541, 541, 542, 542, 543, 543, 544, 544, 545, 545, 546, 546, 547, 547, 548, 548, 549, 549, 549, 550, 550, 551, 551, 552, 552, 553, 553, 554, 554, 555, 555, 556, 556, 557, 557, 558, 558, 559, 559, 560, 560, 561, 561, 562, 562, 563, 563, 564, 564, 565, 565, 565, 566, 566, 567, 567, 568, 568, 569, 569, 570, 570, 571, 571, 572, 572, 573, 573, 574, 574, 575, 575, 576, 576, 577, 577, 578, 578, 579, 579, 580, 580, 581, 581, 582, 583, 583, 584, 584, 585, 585, 586, 586, 587, 587, 588, 588, 589, 589, 590, 590, 591, 591, 592, 592, 593, 593, 594, 594, 595, 595, 596, 596, 597, 597, 598, 599, 599, 600, 600, 601, 601, 602, 602, 603, 603, 604, 604, 605, 605, 606, 606, 607, 608, 608, 609, 609, 610, 610, 611, 611, 612, 612, 613, 613, 614, 615, 615, 616, 616, 617, 617, 618, 618, 619, 619, 620, 621, 621, 622, 622, 623, 623, 624, 624, 625, 625, 626, 627, 627, 628, 628, 629, 629, 630, 631, 631, 632, 632, 633, 633, 634, 634, 635, 636, 636, 637, 637, 638, 638, 639, 640, 640, 641, 641, 642, 642, 643, 644, 644, 645, 645, 646, 647, 647, 648, 648, 649, 649, 650, 651, 651, 652, 652, 653, 654, 654, 655, 655, 656, 657, 657, 658, 658, 659, 660, 660, 661, 661, 662, 663, 663, 664, 664, 665, 666, 666, 667, 667, 668, 669, 669, 670, 670, 671, 672, 672, 673, 674, 674, 675, 675, 676, 677, 677, 678, 679, 679, 680, 681, 681, 682, 682, 683, 684, 684, 685, 686, 686, 687, 688, 688, 689, 689, 690, 691, 691, 692, 693, 693, 694, 695, 695, 696, 697, 697, 698, 699, 699, 700, 701, 701, 702, 703, 703, 704, 705, 705, 706, 707, 707, 708, 709, 710, 710, 711, 712, 712, 713, 714, 714, 715, 716, 716, 717, 718, 719, 719, 720, 721, 721, 722, 723, 724, 724, 725, 726, 726, 727, 728, 729, 729, 730, 731, 732, 732, 733, 734, 734, 735, 736, 737, 737, 738, 739, 740, 740, 741, 742, 743, 744, 744, 745, 746, 747, 747, 748, 749, 750, 750, 751, 752, 753, 754, 754, 755, 756, 757, 758, 758, 759, 760, 761, 762, 762, 763, 764, 765, 766, 767, 767, 768, 769, 770, 771, 772, 772, 773, 774, 775, 776, 777, 778, 778, 779, 780, 781, 782, 783, 784, 785, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 830, 831, 832, 833, 834, 835, 836, 837, 838, 840, 841, 842, 843, 844, 845, 847, 848, 849, 850, 851, 853, 854, 855, 856, 858, 859, 860, 861, 863, 864, 865, 867, 868, 869, 871, 872, 873, 875, 876, 878, 879, 881, 882, 884, 885, 887, 888, 890, 891, 893, 894, 896, 898, 899, 901, 903, 905, 906, 908, 910, 912, 914, 916, 918, 920, 922, 924, 926, 928, 930, 932, 935, 937, 939, 942, 945, 947, 950, 953, 956, 959, 962, 966, 970, 974, 978, 983, 988, 995, 1023 }; const short ArcTanTable[256]={ 0,2,5,7,10,12,15,17, 20,22,25,27,30,33,35,38, 40,43,45,48,50,53,55,58, 60,63,65,68,71,73,76,78, 81,83,86,88,91,93,96,98, 101,103,106,108,110,113,115,118, 120,123,125,128,130,133,135,137, 140,142,145,147,150,152,154,157, 159,162,164,166,169,171,173,176, 178,181,183,185,188,190,192,195, 197,199,202,204,206,208,211,213, 215,218,220,222,224,227,229,231, 233,236,238,240,242,244,247,249, 251,253,255,258,260,262,264,266, 268,270,273,275,277,279,281,283, 285,287,289,291,294,296,298,300, 302,304,306,308,310,312,314,316, 318,320,322,324,326,328,330,332, 334,335,337,339,341,343,345,347, 349,351,353,354,356,358,360,362, 364,365,367,369,371,373,375,376, 378,380,382,383,385,387,389,390, 392,394,396,397,399,401,402,404, 406,407,409,411,412,414,416,417, 419,421,422,424,425,427,429,430, 432,433,435,437,438,440,441,443, 444,446,447,449,450,452,453,455, 456,458,459,461,462,464,465,467, 468,470,471,472,474,475,477,478, 479,481,482,484,485,486,488,489, 490,492,493,495,496,497,499,500, 501,502,504,505,506,508,509,510 };