#include "os.h"

ulong smallprimes[1000] = {
	2,
	3,
	5,
	7,
	11,
	13,
	17,
	19,
	23,
	29,
	31,
	37,
	41,
	43,
	47,
	53,
	59,
	61,
	67,
	71,
	73,
	79,
	83,
	89,
	97,
	101,
	103,
	107,
	109,
	113,
	127,
	131,
	137,
	139,
	149,
	151,
	157,
	163,
	167,
	173,
	179,
	181,
	191,
	193,
	197,
	199,
	211,
	223,
	227,
	229,
	233,
	239,
	241,
	251,
	257,
	263,
	269,
	271,
	277,
	281,
	283,
	293,
	307,
	311,
	313,
	317,
	331,
	337,
	347,
	349,
	353,
	359,
	367,
	373,
	379,
	383,
	389,
	397,
	401,
	409,
	419,
	421,
	431,
	433,
	439,
	443,
	449,
	457,
	461,
	463,
	467,
	479,
	487,
	491,
	499,
	503,
	509,
	521,
	523,
	541,
	547,
	557,
	563,
	569,
	571,
	577,
	587,
	593,
	599,
	601,
	607,
	613,
	617,
	619,
	631,
	641,
	643,
	647,
	653,
	659,
	661,
	673,
	677,
	683,
	691,
	701,
	709,
	719,
	727,
	733,
	739,
	743,
	751,
	757,
	761,
	769,
	773,
	787,
	797,
	809,
	811,
	821,
	823,
	827,
	829,
	839,
	853,
	857,
	859,
	863,
	877,
	881,
	883,
	887,
	907,
	911,
	919,
	929,
	937,
	941,
	947,
	953,
	967,
	971,
	977,
	983,
	991,
	997,
	1009,
	1013,
	1019,
	1021,
	1031,
	1033,
	1039,
	1049,
	1051,
	1061,
	1063,
	1069,
	1087,
	1091,
	1093,
	1097,
	1103,
	1109,
	1117,
	1123,
	1129,
	1151,
	1153,
	1163,
	1171,
	1181,
	1187,
	1193,
	1201,
	1213,
	1217,
	1223,
	1229,
	1231,
	1237,
	1249,
	1259,
	1277,
	1279,
	1283,
	1289,
	1291,
	1297,
	1301,
	1303,
	1307,
	1319,
	1321,
	1327,
	1361,
	1367,
	1373,
	1381,
	1399,
	1409,
	1423,
	1427,
	1429,
	1433,
	1439,
	1447,
	1451,
	1453,
	1459,
	1471,
	1481,
	1483,
	1487,
	1489,
	1493,
	1499,
	1511,
	1523,
	1531,
	1543,
	1549,
	1553,
	1559,
	1567,
	1571,
	1579,
	1583,
	1597,
	1601,
	1607,
	1609,
	1613,
	1619,
	1621,
	1627,
	1637,
	1657,
	1663,
	1667,
	1669,
	1693,
	1697,
	1699,
	1709,
	1721,
	1723,
	1733,
	1741,
	1747,
	1753,
	1759,
	1777,
	1783,
	1787,
	1789,
	1801,
	1811,
	1823,
	1831,
	1847,
	1861,
	1867,
	1871,
	1873,
	1877,
	1879,
	1889,
	1901,
	1907,
	1913,
	1931,
	1933,
	1949,
	1951,
	1973,
	1979,
	1987,
	1993,
	1997,
	1999,
	2003,
	2011,
	2017,
	2027,
	2029,
	2039,
	2053,
	2063,
	2069,
	2081,
	2083,
	2087,
	2089,
	2099,
	2111,
	2113,
	2129,
	2131,
	2137,
	2141,
	2143,
	2153,
	2161,
	2179,
	2203,
	2207,
	2213,
	2221,
	2237,
	2239,
	2243,
	2251,
	2267,
	2269,
	2273,
	2281,
	2287,
	2293,
	2297,
	2309,
	2311,
	2333,
	2339,
	2341,
	2347,
	2351,
	2357,
	2371,
	2377,
	2381,
	2383,
	2389,
	2393,
	2399,
	2411,
	2417,
	2423,
	2437,
	2441,
	2447,
	2459,
	2467,
	2473,
	2477,
	2503,
	2521,
	2531,
	2539,
	2543,
	2549,
	2551,
	2557,
	2579,
	2591,
	2593,
	2609,
	2617,
	2621,
	2633,
	2647,
	2657,
	2659,
	2663,
	2671,
	2677,
	2683,
	2687,
	2689,
	2693,
	2699,
	2707,
	2711,
	2713,
	2719,
	2729,
	2731,
	2741,
	2749,
	2753,
	2767,
	2777,
	2789,
	2791,
	2797,
	2801,
	2803,
	2819,
	2833,
	2837,
	2843,
	2851,
	2857,
	2861,
	2879,
	2887,
	2897,
	2903,
	2909,
	2917,
	2927,
	2939,
	2953,
	2957,
	2963,
	2969,
	2971,
	2999,
	3001,
	3011,
	3019,
	3023,
	3037,
	3041,
	3049,
	3061,
	3067,
	3079,
	3083,
	3089,
	3109,
	3119,
	3121,
	3137,
	3163,
	3167,
	3169,
	3181,
	3187,
	3191,
	3203,
	3209,
	3217,
	3221,
	3229,
	3251,
	3253,
	3257,
	3259,
	3271,
	3299,
	3301,
	3307,
	3313,
	3319,
	3323,
	3329,
	3331,
	3343,
	3347,
	3359,
	3361,
	3371,
	3373,
	3389,
	3391,
	3407,
	3413,
	3433,
	3449,
	3457,
	3461,
	3463,
	3467,
	3469,
	3491,
	3499,
	3511,
	3517,
	3527,
	3529,
	3533,
	3539,
	3541,
	3547,
	3557,
	3559,
	3571,
	3581,
	3583,
	3593,
	3607,
	3613,
	3617,
	3623,
	3631,
	3637,
	3643,
	3659,
	3671,
	3673,
	3677,
	3691,
	3697,
	3701,
	3709,
	3719,
	3727,
	3733,
	3739,
	3761,
	3767,
	3769,
	3779,
	3793,
	3797,
	3803,
	3821,
	3823,
	3833,
	3847,
	3851,
	3853,
	3863,
	3877,
	3881,
	3889,
	3907,
	3911,
	3917,
	3919,
	3923,
	3929,
	3931,
	3943,
	3947,
	3967,
	3989,
	4001,
	4003,
	4007,
	4013,
	4019,
	4021,
	4027,
	4049,
	4051,
	4057,
	4073,
	4079,
	4091,
	4093,
	4099,
	4111,
	4127,
	4129,
	4133,
	4139,
	4153,
	4157,
	4159,
	4177,
	4201,
	4211,
	4217,
	4219,
	4229,
	4231,
	4241,
	4243,
	4253,
	4259,
	4261,
	4271,
	4273,
	4283,
	4289,
	4297,
	4327,
	4337,
	4339,
	4349,
	4357,
	4363,
	4373,
	4391,
	4397,
	4409,
	4421,
	4423,
	4441,
	4447,
	4451,
	4457,
	4463,
	4481,
	4483,
	4493,
	4507,
	4513,
	4517,
	4519,
	4523,
	4547,
	4549,
	4561,
	4567,
	4583,
	4591,
	4597,
	4603,
	4621,
	4637,
	4639,
	4643,
	4649,
	4651,
	4657,
	4663,
	4673,
	4679,
	4691,
	4703,
	4721,
	4723,
	4729,
	4733,
	4751,
	4759,
	4783,
	4787,
	4789,
	4793,
	4799,
	4801,
	4813,
	4817,
	4831,
	4861,
	4871,
	4877,
	4889,
	4903,
	4909,
	4919,
	4931,
	4933,
	4937,
	4943,
	4951,
	4957,
	4967,
	4969,
	4973,
	4987,
	4993,
	4999,
	5003,
	5009,
	5011,
	5021,
	5023,
	5039,
	5051,
	5059,
	5077,
	5081,
	5087,
	5099,
	5101,
	5107,
	5113,
	5119,
	5147,
	5153,
	5167,
	5171,
	5179,
	5189,
	5197,
	5209,
	5227,
	5231,
	5233,
	5237,
	5261,
	5273,
	5279,
	5281,
	5297,
	5303,
	5309,
	5323,
	5333,
	5347,
	5351,
	5381,
	5387,
	5393,
	5399,
	5407,
	5413,
	5417,
	5419,
	5431,
	5437,
	5441,
	5443,
	5449,
	5471,
	5477,
	5479,
	5483,
	5501,
	5503,
	5507,
	5519,
	5521,
	5527,
	5531,
	5557,
	5563,
	5569,
	5573,
	5581,
	5591,
	5623,
	5639,
	5641,
	5647,
	5651,
	5653,
	5657,
	5659,
	5669,
	5683,
	5689,
	5693,
	5701,
	5711,
	5717,
	5737,
	5741,
	5743,
	5749,
	5779,
	5783,
	5791,
	5801,
	5807,
	5813,
	5821,
	5827,
	5839,
	5843,
	5849,
	5851,
	5857,
	5861,
	5867,
	5869,
	5879,
	5881,
	5897,
	5903,
	5923,
	5927,
	5939,
	5953,
	5981,
	5987,
	6007,
	6011,
	6029,
	6037,
	6043,
	6047,
	6053,
	6067,
	6073,
	6079,
	6089,
	6091,
	6101,
	6113,
	6121,
	6131,
	6133,
	6143,
	6151,
	6163,
	6173,
	6197,
	6199,
	6203,
	6211,
	6217,
	6221,
	6229,
	6247,
	6257,
	6263,
	6269,
	6271,
	6277,
	6287,
	6299,
	6301,
	6311,
	6317,
	6323,
	6329,
	6337,
	6343,
	6353,
	6359,
	6361,
	6367,
	6373,
	6379,
	6389,
	6397,
	6421,
	6427,
	6449,
	6451,
	6469,
	6473,
	6481,
	6491,
	6521,
	6529,
	6547,
	6551,
	6553,
	6563,
	6569,
	6571,
	6577,
	6581,
	6599,
	6607,
	6619,
	6637,
	6653,
	6659,
	6661,
	6673,
	6679,
	6689,
	6691,
	6701,
	6703,
	6709,
	6719,
	6733,
	6737,
	6761,
	6763,
	6779,
	6781,
	6791,
	6793,
	6803,
	6823,
	6827,
	6829,
	6833,
	6841,
	6857,
	6863,
	6869,
	6871,
	6883,
	6899,
	6907,
	6911,
	6917,
	6947,
	6949,
	6959,
	6961,
	6967,
	6971,
	6977,
	6983,
	6991,
	6997,
	7001,
	7013,
	7019,
	7027,
	7039,
	7043,
	7057,
	7069,
	7079,
	7103,
	7109,
	7121,
	7127,
	7129,
	7151,
	7159,
	7177,
	7187,
	7193,
	7207,
	7211,
	7213,
	7219,
	7229,
	7237,
	7243,
	7247,
	7253,
	7283,
	7297,
	7307,
	7309,
	7321,
	7331,
	7333,
	7349,
	7351,
	7369,
	7393,
	7411,
	7417,
	7433,
	7451,
	7457,
	7459,
	7477,
	7481,
	7487,
	7489,
	7499,
	7507,
	7517,
	7523,
	7529,
	7537,
	7541,
	7547,
	7549,
	7559,
	7561,
	7573,
	7577,
	7583,
	7589,
	7591,
	7603,
	7607,
	7621,
	7639,
	7643,
	7649,
	7669,
	7673,
	7681,
	7687,
	7691,
	7699,
	7703,
	7717,
	7723,
	7727,
	7741,
	7753,
	7757,
	7759,
	7789,
	7793,
	7817,
	7823,
	7829,
	7841,
	7853,
	7867,
	7873,
	7877,
	7879,
	7883,
	7901,
	7907,
	7919,
};
