solution
sol_1888271_1780407971296066578_51
01
source
Submitted source
233417 bytes
show source
#![allow(dead_code)]
macro_rules! state_enum {
($($variant:ident),* $(,)?) => {
#[repr(u8)]
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum State { $($variant),* }
impl State {
pub const ALL: &[Self] = &[$(Self::$variant),*];
pub const NUM_VARIANTS: usize = Self::ALL.len();
}
};
}
macro_rules! break_property_enum {
($name:ident { $($variant:ident),* $(,)? }) => {
#[repr(u8)]
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum $name { $($variant),* }
impl $name {
pub(crate) const ALL: &[Self] = &[$(Self::$variant),*];
pub(crate) const NUM_VARIANTS: usize = Self::ALL.len();
}
};
}
#[derive(Clone, Copy)]
#[repr(u8)]
pub(crate) enum Action { Break, NoBreak, DeferredBreak, Transparent }
#[repr(C)]
#[derive(Clone, Copy, Default)]
pub struct AlyzeBreak { pub byte_offset: u32, pub flags: u8, pub reserved: [u8; 3] }
mod word {
pub(crate) mod properties {
break_property_enum! {
WordBreakProperty {
Other, ALetter, Format, Katakana, MidLetter, MidNum, Numeric,
ExtendNumLet, CR, Extend, LF, MidNumLet, Newline,
RegionalIndicator, HebrewLetter, SingleQuote, DoubleQuote, ZWJ, WSegSpace,
}
}
pub(crate) const ASCII_WORD_BREAK_PROP: [WordBreakProperty; 128] = [
WordBreakProperty::Other,
WordBreakProperty::Other,
WordBreakProperty::Other,
WordBreakProperty::Other,
WordBreakProperty::Other,
WordBreakProperty::Other,
WordBreakProperty::Other,
WordBreakProperty::Other,
WordBreakProperty::Other,
WordBreakProperty::Other,
WordBreakProperty::LF,
WordBreakProperty::Newline,
WordBreakProperty::Newline,
WordBreakProperty::CR,
WordBreakProperty::Other,
WordBreakProperty::Other,
WordBreakProperty::Other,
WordBreakProperty::Other,
WordBreakProperty::Other,
WordBreakProperty::Other,
WordBreakProperty::Other,
WordBreakProperty::Other,
WordBreakProperty::Other,
WordBreakProperty::Other,
WordBreakProperty::Other,
WordBreakProperty::Other,
WordBreakProperty::Other,
WordBreakProperty::Other,
WordBreakProperty::Other,
WordBreakProperty::Other,
WordBreakProperty::Other,
WordBreakProperty::Other,
WordBreakProperty::WSegSpace,
WordBreakProperty::Other,
WordBreakProperty::DoubleQuote,
WordBreakProperty::Other,
WordBreakProperty::Other,
WordBreakProperty::Other,
WordBreakProperty::Other,
WordBreakProperty::SingleQuote,
WordBreakProperty::Other,
WordBreakProperty::Other,
WordBreakProperty::Other,
WordBreakProperty::Other,
WordBreakProperty::MidNum,
WordBreakProperty::Other,
WordBreakProperty::MidNumLet,
WordBreakProperty::Other,
WordBreakProperty::Numeric,
WordBreakProperty::Numeric,
WordBreakProperty::Numeric,
WordBreakProperty::Numeric,
WordBreakProperty::Numeric,
WordBreakProperty::Numeric,
WordBreakProperty::Numeric,
WordBreakProperty::Numeric,
WordBreakProperty::Numeric,
WordBreakProperty::Numeric,
WordBreakProperty::MidLetter,
WordBreakProperty::MidNum,
WordBreakProperty::Other,
WordBreakProperty::Other,
WordBreakProperty::Other,
WordBreakProperty::Other,
WordBreakProperty::Other,
WordBreakProperty::ALetter,
WordBreakProperty::ALetter,
WordBreakProperty::ALetter,
WordBreakProperty::ALetter,
WordBreakProperty::ALetter,
WordBreakProperty::ALetter,
WordBreakProperty::ALetter,
WordBreakProperty::ALetter,
WordBreakProperty::ALetter,
WordBreakProperty::ALetter,
WordBreakProperty::ALetter,
WordBreakProperty::ALetter,
WordBreakProperty::ALetter,
WordBreakProperty::ALetter,
WordBreakProperty::ALetter,
WordBreakProperty::ALetter,
WordBreakProperty::ALetter,
WordBreakProperty::ALetter,
WordBreakProperty::ALetter,
WordBreakProperty::ALetter,
WordBreakProperty::ALetter,
WordBreakProperty::ALetter,
WordBreakProperty::ALetter,
WordBreakProperty::ALetter,
WordBreakProperty::ALetter,
WordBreakProperty::ALetter,
WordBreakProperty::Other,
WordBreakProperty::Other,
WordBreakProperty::Other,
WordBreakProperty::Other,
WordBreakProperty::ExtendNumLet,
WordBreakProperty::Other,
WordBreakProperty::ALetter,
WordBreakProperty::ALetter,
WordBreakProperty::ALetter,
WordBreakProperty::ALetter,
WordBreakProperty::ALetter,
WordBreakProperty::ALetter,
WordBreakProperty::ALetter,
WordBreakProperty::ALetter,
WordBreakProperty::ALetter,
WordBreakProperty::ALetter,
WordBreakProperty::ALetter,
WordBreakProperty::ALetter,
WordBreakProperty::ALetter,
WordBreakProperty::ALetter,
WordBreakProperty::ALetter,
WordBreakProperty::ALetter,
WordBreakProperty::ALetter,
WordBreakProperty::ALetter,
WordBreakProperty::ALetter,
WordBreakProperty::ALetter,
WordBreakProperty::ALetter,
WordBreakProperty::ALetter,
WordBreakProperty::ALetter,
WordBreakProperty::ALetter,
WordBreakProperty::ALetter,
WordBreakProperty::ALetter,
WordBreakProperty::Other,
WordBreakProperty::Other,
WordBreakProperty::Other,
WordBreakProperty::Other,
WordBreakProperty::Other,
];
impl WordBreakProperty {
pub fn is_ext_pictographic(c: char) -> bool { corpus_lookup(c).2 }
}
const RANGES: &[(u32,u32,u8)] = &[(128,132,0),(133,133,12),(134,159,0),(161,168,0),(169,169,96),(170,170,33),(171,172,0),(173,173,2),(174,174,96),(175,177,0),(178,179,32),(180,180,0),(181,181,1),(182,182,0),(183,183,4),(184,184,1),(185,185,32),(186,186,33),(187,187,0),(188,190,32),(191,191,0),(192,214,33),(215,215,0),(216,246,33),(247,247,0),(248,308,33),(310,328,33),(330,383,33),(385,386,33),(388,395,33),(397,408,33),(411,418,33),(420,435,33),(437,440,33),(442,444,33),(446,451,33),(453,454,33),(456,457,33),(459,478,33),(480,480,33),(482,492,33),(494,494,33),(496,496,33),(498,498,33),(500,506,33),(508,512,33),(514,516,33),(518,518,33),(520,520,33),(522,526,33),(528,528,33),(530,530,33),(532,532,33),(534,534,33),(536,546,33),(548,548,33),(550,552,33),(554,554,33),(556,556,33),(558,560,33),(562,574,33),(577,584,33),(586,586,33),(588,588,33),(590,590,33),(592,669,33),(671,696,33),(697,717,1),(720,721,1),(724,727,1),(728,733,0),(734,735,1),(736,740,33),(741,745,1),(746,747,33),(748,767,1),(768,781,9),(783,789,9),(792,812,9),(814,831,9),(834,834,9),(837,840,9),(842,843,9),(846,856,9),(859,866,9),(868,868,9),(870,872,9),(875,877,9),(880,880,33),(882,882,33),(885,885,32),(886,886,33),(888,889,0),(890,891,33),(895,895,33),(896,899,0),(900,900,32),(901,901,0),(902,902,33),(904,906,33),(907,907,0),(908,908,33),(909,909,0),(910,929,33),(930,930,0),(931,943,33),(945,975,33),(978,981,33),(984,984,33),(986,988,33),(990,992,33),(994,996,33),(998,1002,33),(1004,1007,33),(1010,1010,33),(1012,1013,33),(1014,1014,32),(1015,1015,33),(1017,1018,33),(1020,1128,33),(1130,1130,33),(1132,1132,33),(1134,1134,33),(1136,1136,33),(1138,1140,33),(1142,1144,33),(1146,1146,33),(1148,1148,33),(1150,1150,33),(1152,1152,33),(1154,1154,32),(1155,1156,41),(1157,1158,9),(1159,1161,41),(1162,1162,33),(1164,1164,33),(1166,1166,33),(1168,1180,33),(1182,1192,33),(1194,1204,33),(1206,1214,33),(1216,1217,33),(1219,1219,33),(1221,1221,33),(1223,1223,33),(1225,1227,33),(1229,1229,33),(1231,1242,33),(1244,1244,33),(1246,1246,33),(1248,1252,33),(1254,1258,33),(1260,1260,33),(1262,1264,33),(1266,1266,33),(1268,1268,33),(1270,1270,33),(1272,1272,33),(1274,1274,33),(1276,1276,33),(1278,1278,33),(1280,1280,33),(1282,1282,33),(1284,1284,33),(1286,1286,33),(1288,1288,33),(1290,1290,33),(1292,1292,33),(1294,1294,33),(1296,1296,33),(1298,1298,33),(1300,1300,33),(1302,1302,33),(1304,1304,33),(1306,1306,33),(1308,1308,33),(1310,1310,33),(1312,1312,33),(1314,1314,33),(1316,1318,33),(1320,1320,33),(1322,1322,33),(1324,1324,33),(1326,1326,33),(1328,1328,0),(1329,1366,33),(1367,1368,0),(1369,1372,33),(1373,1373,32),(1374,1374,33),(1375,1375,36),(1376,1416,33),(1417,1417,37),(1418,1418,33),(1419,1420,0),(1421,1423,32),(1424,1424,0),(1425,1469,41),(1470,1470,32),(1471,1471,41),(1472,1472,32),(1473,1474,41),(1475,1475,32),(1476,1477,41),(1478,1478,32),(1479,1479,41),(1480,1487,0),(1488,1514,46),(1515,1518,0),(1519,1522,46),(1523,1523,33),(1524,1524,36),(1525,1535,0),(1536,1540,38),(1541,1541,6),(1542,1547,32),(1548,1548,5),(1549,1549,37),(1550,1551,32),(1552,1562,41),(1563,1563,0),(1564,1564,34),(1565,1566,32),(1567,1567,0),(1568,1599,33),(1600,1600,1),(1601,1610,33),(1611,1621,9),(1622,1631,41),(1632,1641,38),(1642,1642,32),(1643,1643,38),(1644,1644,37),(1645,1645,32),(1646,1647,33),(1648,1648,9),(1649,1747,33),(1748,1748,32),(1749,1749,33),(1750,1756,41),(1757,1757,6),(1758,1758,32),(1759,1764,41),(1765,1766,33),(1767,1768,41),(1769,1769,32),(1770,1773,41),(1774,1775,33),(1776,1785,38),(1786,1788,33),(1789,1790,32),(1791,1791,33),(1792,1805,32),(1806,1806,0),(1807,1808,33),(1809,1809,41),(1810,1839,33),(1840,1866,41),(1867,1868,0),(1869,1872,33),(1876,1876,33),(1879,1881,33),(1883,1885,33),(1888,1892,33),(1896,1899,33),(1901,1903,33),(1907,1908,33),(1920,1957,33),(1958,1968,41),(1969,1969,33),(1984,1993,38),(1994,2026,33),(2027,2035,41),(2036,2037,33),(2038,2039,32),(2040,2040,37),(2041,2041,32),(2042,2042,33),(2048,2069,33),(2070,2073,41),(2074,2074,33),(2075,2083,41),(2084,2084,33),(2085,2087,41),(2088,2088,33),(2089,2093,41),(2094,2095,0),(2096,2110,32),(2111,2111,0),(2112,2136,33),(2137,2139,41),(2142,2142,32),(2212,2212,33),(2214,2214,33),(2222,2223,33),(2227,2228,33),(2236,2236,33),(2247,2247,33),(2260,2263,41),(2266,2271,41),(2274,2274,6),(2275,2275,41),(2288,2290,41),(2297,2297,41),(2305,2307,41),(2308,2316,33),(2318,2344,33),(2346,2352,33),(2354,2361,33),(2364,2364,41),(2365,2365,33),(2366,2372,41),(2375,2381,41),(2384,2384,33),(2385,2386,9),(2400,2401,33),(2402,2403,41),(2404,2405,0),(2406,2415,38),(2416,2416,32),(2424,2424,33),(2427,2428,33),(2430,2430,33),(2433,2435,41),(2437,2444,33),(2447,2448,33),(2451,2472,33),(2474,2480,33),(2482,2482,33),(2486,2489,33),(2492,2492,41),(2493,2493,33),(2494,2500,41),(2503,2504,41),(2507,2509,41),(2510,2510,33),(2528,2529,33),(2530,2531,41),(2534,2543,38),(2544,2545,33),(2546,2547,32),(2561,2563,41),(2565,2570,33),(2575,2576,33),(2579,2600,33),(2602,2608,33),(2610,2610,33),(2613,2613,33),(2616,2617,33),(2620,2620,41),(2622,2626,41),(2631,2632,41),(2635,2637,41),(2641,2641,41),(2652,2652,33),(2662,2671,38),(2672,2673,41),(2674,2676,33),(2689,2691,41),(2693,2699,33),(2701,2701,33),(2703,2705,33),(2707,2728,33),(2730,2736,33),(2738,2739,33),(2741,2745,33),(2748,2748,41),(2749,2749,33),(2750,2755,41),(2757,2757,41),(2759,2761,41),(2763,2765,41),(2768,2768,33),(2790,2799,38),(2801,2801,32),(2817,2819,41),(2821,2828,33),(2831,2832,33),(2835,2856,33),(2858,2864,33),(2866,2867,33),(2869,2873,33),(2876,2876,41),(2877,2877,33),(2878,2883,41),(2887,2888,41),(2891,2893,41),(2902,2903,41),(2911,2913,33),(2914,2915,41),(2918,2927,38),(2929,2929,33),(2946,2946,41),(2947,2947,33),(2949,2954,33),(2958,2960,33),(2962,2965,33),(2969,2970,33),(2972,2972,33),(2974,2975,33),(2979,2980,33),(2984,2986,33),(2990,3001,33),(3006,3010,41),(3014,3016,41),(3018,3021,41),(3024,3024,33),(3046,3055,38),(3056,3066,32),(3072,3075,41),(3077,3084,33),(3086,3088,33),(3090,3112,33),(3114,3123,33),(3125,3129,33),(3132,3132,41),(3133,3133,33),(3134,3140,41),(3142,3144,41),(3146,3149,41),(3161,3161,33),(3168,3169,33),(3170,3171,41),(3174,3183,38),(3192,3198,32),(3200,3200,33),(3201,3203,41),(3205,3212,33),(3214,3216,33),(3218,3240,33),(3242,3251,33),(3253,3257,33),(3260,3260,41),(3261,3261,33),(3262,3268,41),(3270,3272,41),(3274,3277,41),(3294,3294,33),(3296,3297,33),(3298,3299,41),(3302,3311,38),(3329,3331,41),(3333,3340,33),(3342,3344,33),(3346,3386,33),(3389,3389,33),(3390,3396,41),(3398,3400,41),(3402,3405,41),(3406,3406,33),(3415,3415,41),(3424,3425,33),(3426,3427,41),(3430,3439,38),(3440,3445,32),(3449,3449,32),(3450,3455,33),(3457,3459,41),(3461,3478,33),(3482,3505,33),(3507,3515,33),(3517,3517,33),(3520,3526,33),(3530,3530,41),(3535,3540,41),(3542,3542,41),(3544,3551,41),(3570,3571,41),(3572,3572,32),(3584,3584,0),(3585,3632,32),(3633,3633,41),(3634,3635,32),(3636,3642,41),(3643,3647,0),(3648,3654,32),(3655,3662,41),(3663,3663,32),(3664,3673,38),(3674,3675,32),(3676,3679,0),(3713,3714,32),(3716,3716,32),(3719,3720,32),(3722,3722,32),(3725,3725,32),(3732,3735,32),(3737,3743,32),(3745,3747,32),(3749,3749,32),(3751,3751,32),(3754,3755,32),(3757,3760,32),(3761,3761,41),(3762,3763,32),(3764,3769,41),(3771,3772,41),(3773,3773,32),(3776,3780,32),(3782,3782,32),(3784,3784,41),(3788,3788,41),(3792,3801,38),(3804,3805,32),(3840,3840,33),(3841,3863,32),(3864,3865,41),(3866,3871,32),(3872,3881,38),(3882,3892,32),(3893,3893,41),(3894,3894,32),(3895,3895,41),(3896,3896,32),(3897,3897,41),(3898,3901,32),(3902,3903,41),(3904,3906,33),(3908,3911,33),(3912,3912,0),(3913,3916,33),(3918,3921,33),(3923,3926,33),(3928,3931,33),(3933,3944,33),(3946,3948,33),(3949,3952,0),(3953,3954,41),(3956,3956,41),(3959,3959,41),(3961,3968,41),(3970,3972,41),(3973,3973,32),(3974,3975,41),(3976,3980,33),(3981,3986,41),(3988,3991,41),(3992,3992,0),(3993,3996,41),(3998,4001,41),(4003,4006,41),(4008,4011,41),(4013,4024,41),(4026,4028,41),(4029,4029,0),(4030,4037,32),(4038,4038,41),(4039,4044,32),(4045,4045,0),(4046,4052,32),(4053,4056,0),(4057,4058,32),(4059,4095,0),(4096,4138,32),(4139,4158,41),(4159,4159,32),(4160,4169,38),(4170,4181,32),(4184,4185,41),(4186,4189,32),(4190,4192,41),(4193,4193,32),(4194,4194,41),(4213,4214,32),(4216,4216,32),(4218,4218,32),(4220,4222,32),(4224,4225,32),(4227,4227,41),(4229,4229,41),(4231,4234,41),(4240,4249,38),(4255,4255,32),(4256,4293,33),(4295,4295,33),(4301,4301,33),(4304,4346,33),(4347,4347,0),(4348,4348,33),(4351,4614,33),(4616,4678,33),(4680,4680,33),(4682,4685,33),(4688,4694,33),(4696,4696,33),(4698,4701,33),(4704,4742,33),(4744,4744,33),(4746,4749,33),(4752,4782,33),(4784,4784,33),(4786,4789,33),(4792,4798,33),(4800,4800,33),(4802,4805,33),(4808,4814,33),(4816,4822,33),(4824,4846,33),(4848,4855,33),(4864,4878,33),(4880,4880,33),(4882,4885,33),(4888,4894,33),(4896,4954,33),(4960,4988,32),(5024,5109,33),(5120,5120,32),(5121,5740,33),(5741,5742,32),(5743,5759,33),(5761,5786,33),(5787,5788,32),(5792,5792,33),(5794,5795,33),(5798,5798,33),(5800,5804,33),(5807,5812,33),(5815,5820,33),(5822,5822,33),(5825,5825,33),(5827,5835,33),(5839,5839,33),(5842,5842,33),(5846,5848,33),(5850,5850,33),(5852,5859,33),(5861,5864,33),(5868,5868,0),(5870,5880,33),(5888,5905,33),(5906,5908,41),(5919,5937,33),(5938,5940,41),(5952,5969,33),(5970,5971,41),(5984,5996,33),(5998,6000,33),(6002,6003,41),(6016,6050,32),(6053,6055,32),(6057,6067,32),(6068,6068,41),(6070,6098,41),(6107,6107,32),(6112,6121,38),(6145,6145,32),(6148,6148,32),(6150,6150,32),(6154,6154,32),(6176,6186,33),(6188,6200,33),(6237,6238,33),(6240,6241,33),(6243,6245,33),(6247,6249,33),(6252,6252,33),(6255,6256,33),(6259,6262,33),(6400,6430,33),(6432,6443,41),(6448,6459,41),(6468,6468,32),(6470,6479,38),(6480,6509,32),(6512,6516,32),(6528,6571,32),(6576,6601,32),(6656,6678,33),(6679,6683,41),(6686,6740,32),(6741,6750,41),(6752,6780,41),(6783,6783,41),(6818,6818,32),(6821,6821,32),(6854,6854,9),(6875,6875,9),(6880,6885,9),(6953,6953,33),(6958,6958,33),(6966,6966,41),(7059,7060,33),(7064,7064,33),(7070,7070,33),(7077,7077,41),(7082,7082,41),(7140,7140,33),(7168,7203,33),(7204,7222,41),(7232,7241,38),(7245,7247,33),(7248,7257,38),(7258,7293,33),(7294,7295,32),(7305,7306,33),(7312,7349,33),(7364,7364,32),(7424,7534,33),(7536,7544,33),(7546,7547,33),(7550,7565,33),(7567,7615,33),(7616,7624,9),(7635,7635,9),(7650,7650,9),(7661,7661,9),(7664,7664,9),(7676,7677,9),(7680,7680,33),(7682,7684,33),(7686,7688,33),(7690,7704,33),(7706,7706,33),(7708,7708,33),(7710,7710,33),(7712,7724,33),(7726,7726,33),(7728,7736,33),(7738,7742,33),(7744,7754,33),(7756,7756,33),(7758,7758,33),(7760,7764,33),(7766,7772,33),(7774,7780,33),(7782,7782,33),(7784,7784,33),(7786,7792,33),(7794,7796,33),(7798,7798,33),(7800,7800,33),(7802,7804,33),(7806,7812,33),(7814,7814,33),(7816,7816,33),(7818,7818,33),(7820,7820,33),(7822,7831,33),(7836,7930,33),(7932,7932,33),(7934,7934,33),(7936,7936,33),(7940,7940,33),(7944,7953,33),(7956,7956,33),(7958,7959,0),(7960,7965,33),(7966,7967,0),(7968,7969,33),(7976,7984,33),(7988,7988,33),(7992,7999,33),(8001,8001,33),(8004,8004,33),(8006,8007,0),(8008,8013,33),(8014,8015,0),(8016,8017,33),(8020,8022,33),(8024,8024,0),(8025,8025,33),(8026,8026,0),(8027,8027,33),(8028,8028,0),(8029,8029,33),(8030,8030,0),(8031,8031,33),(8040,8048,33),(8050,8050,33),(8052,8052,33),(8054,8054,33),(8056,8056,33),(8058,8058,33),(8060,8060,33),(8062,8063,0),(8072,8079,33),(8088,8095,33),(8104,8113,33),(8115,8115,33),(8117,8117,0),(8118,8118,33),(8120,8122,33),(8124,8124,33),(8125,8125,32),(8127,8129,32),(8131,8131,33),(8133,8133,0),(8134,8136,33),(8138,8138,33),(8140,8140,33),(8141,8143,32),(8145,8145,33),(8148,8149,0),(8150,8150,33),(8152,8154,33),(8156,8156,0),(8157,8159,32),(8161,8161,33),(8164,8166,33),(8168,8170,33),(8172,8172,33),(8173,8173,32),(8176,8177,0),(8179,8180,33),(8181,8181,0),(8182,8184,33),(8186,8186,33),(8188,8188,33),(8190,8190,32),(8191,8191,0),(8203,8203,0),(8204,8204,9),(8205,8205,17),(8208,8215,0),(8216,8217,11),(8218,8227,0),(8228,8228,11),(8229,8230,0),(8231,8231,4),(8240,8251,0),(8252,8252,96),(8253,8254,0),(8255,8256,7),(8257,8259,0),(8260,8260,5),(8261,8264,0),(8265,8265,96),(8266,8275,0),(8276,8276,7),(8277,8286,0),(8288,8292,2),(8294,8297,2),(8304,8304,32),(8305,8305,33),(8308,8313,32),(8314,8318,0),(8319,8319,33),(8320,8329,32),(8330,8334,0),(8336,8348,33),(8352,8385,0),(8411,8413,9),(8416,8416,9),(8419,8419,9),(8422,8423,9),(8448,8449,0),(8450,8450,1),(8451,8454,0),(8455,8455,1),(8456,8457,0),(8458,8467,1),(8468,8468,0),(8469,8469,1),(8470,8472,0),(8473,8477,1),(8478,8481,0),(8482,8482,96),(8483,8483,0),(8484,8484,1),(8485,8485,0),(8487,8487,0),(8488,8488,1),(8489,8489,0),(8492,8493,1),(8494,8494,0),(8495,8497,1),(8498,8498,33),(8499,8504,1),(8505,8505,97),(8506,8507,0),(8508,8511,1),(8512,8516,0),(8517,8521,1),(8522,8525,0),(8527,8527,0),(8528,8543,32),(8544,8561,33),(8564,8564,33),(8576,8584,33),(8585,8585,32),(8586,8587,0),(8592,8595,0),(8596,8601,96),(8602,8616,0),(8617,8618,96),(8619,8781,0),(8783,8985,0),(8986,8987,96),(8988,8999,0),(9000,9000,96),(9003,9166,0),(9167,9167,96),(9168,9192,0),(9193,9203,96),(9208,9210,96),(9211,9214,0),(9216,9254,0),(9286,9289,0),(9312,9371,32),(9372,9397,0),(9398,9409,1),(9410,9410,97),(9411,9423,1),(9426,9426,1),(9447,9447,1),(9450,9471,32),(9472,9641,0),(9642,9643,96),(9644,9653,0),(9654,9654,96),(9655,9663,0),(9664,9664,96),(9665,9722,0),(9723,9726,96),(9727,9727,0),(9728,9732,96),(9733,9741,0),(9742,9742,96),(9743,9744,0),(9745,9745,96),(9746,9747,0),(9748,9749,96),(9750,9751,0),(9752,9752,96),(9753,9756,0),(9757,9757,96),(9758,9759,0),(9760,9760,96),(9761,9761,0),(9762,9763,96),(9764,9765,0),(9766,9766,96),(9767,9769,0),(9770,9770,96),(9771,9773,0),(9774,9775,96),(9776,9783,0),(9784,9786,96),(9787,9791,0),(9792,9792,96),(9793,9793,0),(9794,9794,96),(9795,9799,0),(9800,9811,96),(9812,9822,0),(9823,9824,96),(9825,9826,0),(9827,9827,96),(9828,9828,0),(9829,9830,96),(9831,9831,0),(9832,9832,96),(9833,9850,0),(9851,9851,96),(9852,9853,0),(9854,9855,96),(9856,9873,0),(9874,9879,96),(9880,9880,0),(9881,9881,96),(9882,9882,0),(9883,9884,96),(9885,9887,0),(9888,9889,96),(9890,9894,0),(9895,9895,96),(9896,9897,0),(9898,9899,96),(9900,9903,0),(9904,9905,96),(9906,9916,0),(9917,9918,96),(9919,9923,0),(9924,9925,96),(9926,9927,0),(9928,9928,96),(9929,9933,0),(9934,9935,96),(9936,9936,0),(9937,9937,96),(9938,9938,0),(9939,9940,96),(9941,9960,0),(9961,9962,96),(9963,9967,0),(9968,9973,96),(9974,9974,0),(9975,9978,96),(9979,9980,0),(9981,9981,96),(9982,9985,0),(9986,9986,96),(9987,9988,0),(9989,9989,96),(9990,9991,0),(9992,9997,96),(9998,9998,0),(9999,9999,96),(10000,10001,0),(10002,10002,96),(10003,10003,0),(10004,10004,96),(10005,10005,0),(10006,10006,96),(10007,10012,0),(10013,10013,96),(10014,10016,0),(10017,10017,96),(10018,10023,0),(10024,10024,96),(10025,10034,0),(10035,10036,96),(10037,10051,0),(10052,10052,96),(10053,10054,0),(10055,10055,96),(10056,10059,0),(10060,10060,96),(10061,10061,0),(10062,10062,96),(10063,10066,0),(10067,10069,96),(10070,10070,0),(10071,10071,96),(10072,10082,0),(10083,10084,96),(10085,10101,0),(10102,10131,32),(10132,10132,0),(10133,10135,96),(10136,10144,0),(10145,10145,96),(10146,10159,0),(10160,10160,96),(10161,10174,0),(10175,10175,96),(10176,10176,0),(10178,10183,0),(10186,10186,0),(10188,10188,0),(10190,10191,0),(10193,10193,0),(10197,10203,0),(10205,10209,0),(10214,10227,0),(10229,10239,0),(10240,10495,32),(10501,10515,0),(10529,10538,0),(10541,10547,0),(10548,10549,96),(10550,10555,0),(10558,10559,0),(10562,10564,0),(10625,10648,0),(10651,10672,0),(10677,10681,0),(10686,10689,0),(10697,10697,0),(10707,10707,0),(10710,10715,0),(10717,10717,0),(10720,10720,0),(10722,10722,0),(10727,10729,0),(10731,10731,0),(10741,10741,0),(10744,10745,0),(10748,10753,0),(10758,10759,0),(10761,10761,0),(10764,10764,0),(10766,10766,0),(10769,10769,0),(10779,10781,0),(10783,10785,0),(10791,10791,0),(10799,10800,0),(10803,10803,0),(10812,10812,0),(10814,10814,0),(10834,10834,0),(10838,10840,0),(10843,10843,0),(10852,10853,0),(10869,10870,0),(10875,10878,0),(10885,10886,0),(10889,10890,0),(10893,10894,0),(10922,10923,0),(10971,10971,0),(10973,10973,0),(10987,10987,0),(11005,11005,0),(11008,11012,0),(11013,11015,96),(11016,11021,0),(11034,11034,0),(11035,11036,96),(11039,11043,0),(11047,11048,0),(11050,11051,0),(11054,11055,0),(11057,11057,0),(11088,11088,96),(11089,11092,0),(11093,11093,96),(11102,11102,0),(11144,11147,0),(11159,11160,0),(11172,11172,0),(11184,11191,0),(11209,11209,0),(11216,11217,0),(11219,11228,0),(11232,11232,0),(11234,11243,0),(11248,11250,0),(11264,11311,33),(11360,11365,33),(11367,11371,33),(11373,11378,33),(11380,11381,33),(11383,11396,33),(11398,11402,33),(11404,11404,33),(11406,11438,33),(11440,11442,33),(11444,11444,33),(11446,11446,33),(11448,11448,33),(11450,11450,33),(11452,11452,33),(11454,11454,33),(11456,11456,33),(11458,11458,33),(11460,11460,33),(11462,11462,33),(11464,11464,33),(11466,11466,33),(11468,11468,33),(11470,11470,33),(11472,11472,33),(11474,11474,33),(11476,11476,33),(11478,11478,33),(11480,11480,33),(11482,11482,33),(11484,11484,33),(11486,11486,33),(11488,11488,33),(11490,11490,33),(11492,11492,33),(11493,11498,32),(11499,11499,33),(11501,11501,33),(11503,11505,41),(11506,11506,33),(11508,11512,0),(11513,11519,32),(11568,11623,33),(11631,11631,33),(11632,11632,32),(11647,11647,41),(11790,11801,0),(11816,11817,0),(11822,11822,0),(11825,11826,0),(11828,11829,0),(11832,11832,0),(11834,11835,0),(11839,11842,0),(11851,11851,0),(11858,11859,0),(11905,11929,32),(11931,11956,32),(11958,12019,32),(12032,12245,32),(12272,12283,0),(12289,12292,0),(12293,12293,33),(12294,12295,32),(12296,12316,0),(12320,12320,0),(12321,12329,32),(12334,12335,41),(12336,12336,96),(12337,12341,3),(12342,12342,0),(12347,12347,33),(12349,12349,96),(12353,12438,32),(12441,12442,9),(12443,12444,3),(12445,12447,32),(12448,12448,3),(12449,12538,35),(12539,12539,0),(12540,12540,3),(12541,12543,35),(12549,12589,33),(12592,12592,0),(12593,12686,33),(12687,12689,0),(12690,12693,32),(12694,12703,0),(12704,12727,33),(12731,12735,33),(12736,12771,0),(12784,12799,35),(12828,12828,32),(12849,12849,0),(12872,12879,32),(12881,12895,32),(12927,12927,0),(12951,12951,96),(12953,12953,96),(12977,12991,32),(12992,13006,0),(13008,13054,35),(13055,13055,0),(13056,13143,35),(13144,13144,0),(13151,13151,0),(13168,13261,0),(13263,13279,0),(13311,13311,0),(13535,13535,32),(13649,13649,32),(13762,13762,32),(13833,13833,32),(13877,13877,32),(15730,15730,32),(16134,16134,32),(18841,18841,32),(19904,19967,0),(19968,19979,32),(19981,19982,32),(19985,19985,32),(19987,19987,32),(19989,19990,32),(19992,19998,32),(20001,20001,32),(20004,20006,32),(20008,20008,32),(20010,20013,32),(20016,20016,32),(20018,20018,32),(20020,20020,32),(20022,20022,32),(20024,20031,32),(20034,20035,32),(20037,20037,32),(20040,20041,32),(20043,20046,32),(20048,20048,32),(20050,20052,32),(20055,20059,32),(20061,20065,32),(20070,20070,32),(20077,20077,32),(20080,20081,32),(20083,20083,32),(20094,20094,32),(20096,20096,32),(20098,20098,32),(20101,20102,32),(20104,20105,32),(20107,20108,32),(20110,20110,32),(20113,20114,32),(20116,20117,32),(20121,20124,32),(20126,20126,32),(20128,20130,32),(20132,20137,32),(20139,20142,32),(20144,20144,32),(20146,20147,32),(20154,20155,32),(20159,20161,32),(20167,20167,32),(20170,20171,32),(20174,20175,32),(20177,20177,32),(20179,20185,32),(20189,20189,32),(20191,20191,32),(20195,20197,32),(20202,20202,32),(20204,20204,32),(20206,20206,32),(20208,20208,32),(20210,20210,32),(20214,20215,32),(20219,20219,32),(20221,20221,32),(20223,20223,32),(20225,20225,32),(20234,20234,32),(20237,20241,32),(20247,20250,32),(20253,20253,32),(20255,20256,32),(20260,20260,32),(20262,20262,32),(20271,20271,32),(20276,20276,32),(20278,20278,32),(20280,20280,32),(20284,20285,32),(20291,20291,32),(20294,20294,32),(20301,20305,32),(20307,20309,32),(20311,20313,32),(20315,20316,32),(20319,20320,32),(20324,20324,32),(20329,20329,32),(20332,20332,32),(20336,20336,32),(20339,20339,32),(20341,20341,32),(20346,20346,32),(20351,20351,32),(20355,20355,32),(20358,20358,32),(20363,20363,32),(20365,20365,32),(20369,20369,32),(20374,20376,32),(20379,20379,32),(20381,20381,32),(20384,20385,32),(20387,20387,32),(20390,20390,32),(20392,20392,32),(20399,20399,32),(20405,20405,32),(20415,20415,32),(20418,20419,32),(20426,20426,32),(20432,20433,32),(20439,20439,32),(20442,20442,32),(20445,20446,32),(20448,20449,32),(20451,20451,32),(20462,20462,32),(20465,20465,32),(20467,20467,32),(20469,20470,32),(20472,20472,32),(20474,20474,32),(20482,20482,32),(20489,20489,32),(20491,20491,32),(20493,20493,32),(20497,20499,32),(20502,20502,32),(20505,20505,32),(20511,20511,32),(20521,20525,32),(20534,20534,32),(20538,20538,32),(20540,20540,32),(20542,20542,32),(20547,20547,32),(20551,20551,32),(20553,20553,32),(20559,20559,32),(20563,20563,32),(20565,20565,32),(20570,20570,32),(20581,20581,32),(20596,20598,32),(20605,20605,32),(20613,20613,32),(20616,20616,32),(20621,20621,32),(20625,20625,32),(20633,20633,32),(20643,20643,32),(20648,20648,32),(20653,20653,32),(20658,20659,32),(20663,20663,32),(20667,20667,32),(20670,20670,32),(20685,20685,32),(20687,20687,32),(20689,20689,32),(20693,20694,32),(20698,20698,32),(20711,20711,32),(20718,20718,32),(20723,20723,32),(20729,20729,32),(20736,20736,32),(20738,20738,32),(20740,20740,32),(20743,20743,32),(20745,20745,32),(20747,20747,32),(20754,20754,32),(20778,20778,32),(20786,20786,32),(20799,20799,32),(20801,20801,32),(20803,20806,32),(20808,20809,32),(20811,20814,32),(20816,20816,32),(20818,20818,32),(20820,20820,32),(20822,20823,32),(20826,20826,32),(20828,20828,32),(20837,20837,32),(20839,20845,32),(20848,20849,32),(20851,20856,32),(20859,20861,32),(20864,20864,32),(20866,20866,32),(20869,20870,32),(20872,20874,32),(20876,20877,32),(20879,20879,32),(20881,20882,32),(20885,20887,32),(20889,20889,32),(20891,20892,32),(20896,20896,32),(20898,20898,32),(20900,20901,32),(20904,20904,32),(20907,20908,32),(20911,20912,32),(20914,20919,32),(20924,20924,32),(20928,20928,32),(20934,20934,32),(20937,20937,32),(20940,20941,32),(20943,20943,32),(20955,20956,32),(20960,20961,32),(20964,20964,32),(20966,20967,32),(20970,20970,32),(20973,20973,32),(20975,20977,32),(20981,20982,32),(20984,20987,32),(20989,20989,32),(20992,20995,32),(20998,21000,32),(21002,21002,32),(21009,21010,32),(21015,21019,32),(21021,21021,32),(21028,21029,32),(21033,21033,32),(21035,21035,32),(21040,21040,32),(21046,21051,32),(21063,21063,32),(21066,21067,32),(21069,21070,32),(21073,21073,32),(21083,21083,32),(21091,21091,32),(21093,21093,32),(21095,21095,32),(21097,21098,32),(21103,21103,32),(21106,21106,32),(21109,21109,32),(21123,21123,32),(21127,21127,32),(21129,21129,32),(21133,21133,32),(21147,21147,32),(21150,21153,32),(21155,21155,32),(21160,21163,32),(21165,21165,32),(21169,21172,32),(21182,21182,32),(21185,21185,32),(21187,21187,32),(21189,21189,32),(21191,21191,32),(21193,21193,32),(21195,21195,32),(21202,21202,32),(21205,21205,32),(21208,21209,32),(21211,21211,32),(21213,21214,32),(21218,21218,32),(21220,21220,32),(21232,21232,32),(21234,21235,32),(21237,21237,32),(21240,21242,32),(21246,21247,32),(21253,21253,32),(21256,21256,32),(21269,21271,32),(21273,21274,32),(21277,21277,32),(21280,21281,32),(21290,21290,32),(21295,21295,32),(21297,21297,32),(21304,21307,32),(21312,21313,32),(21315,21315,32),(21319,21322,32),(21325,21336,32),(21338,21338,32),(21340,21340,32),(21342,21342,32),(21344,21346,32),(21348,21348,32),(21350,21351,32),(21353,21353,32),(21355,21355,32),(21359,21361,32),(21365,21365,32),(21367,21367,32),(21375,21375,32),(21378,21378,32),(21381,21382,32),(21385,21385,32),(21395,21395,32),(21400,21400,32),(21402,21402,32),(21407,21407,32),(21413,21414,32),(21416,21417,32),(21424,21424,32),(21426,21427,32),(21430,21430,32),(21435,21435,32),(21439,21439,32),(21442,21443,32),(21448,21454,32),(21457,21457,32),(21460,21460,32),(21462,21465,32),(21467,21467,32),(21472,21477,32),(21482,21484,32),(21487,21488,32),(21490,21491,32),(21494,21497,32),(21499,21499,32),(21507,21508,32),(21512,21514,32),(21516,21518,32),(21520,21523,32),(21525,21525,32),(21527,21527,32),(21531,21531,32),(21534,21535,32),(21543,21543,32),(21547,21548,32),(21551,21551,32),(21555,21556,32),(21560,21561,32),(21565,21566,32),(21570,21570,32),(21574,21574,32),(21576,21578,32),(21592,21592,32),(21602,21602,32),(21606,21606,32),(21608,21608,32),(21610,21610,32),(21619,21619,32),(21623,21624,32),(21628,21629,32),(21632,21632,32),(21643,21644,32),(21647,21647,32),(21650,21650,32),(21654,21654,32),(21674,21674,32),(21676,21676,32),(21681,21682,32),(21688,21688,32),(21696,21697,32),(21700,21700,32),(21704,21705,32),(21709,21710,32),(21716,21716,32),(21718,21718,32),(21729,21729,32),(21733,21734,32),(21737,21738,32),(21741,21742,32),(21746,21746,32),(21754,21754,32),(21759,21759,32),(21764,21764,32),(21767,21767,32),(21776,21776,32),(21796,21796,32),(21807,21807,32),(21809,21809,32),(21813,21813,32),(21816,21816,32),(21830,21830,32),(21834,21834,32),(21839,21839,32),(21843,21843,32),(21855,21855,32),(21857,21857,32),(21860,21860,32),(21862,21862,32),(21888,21888,32),(21891,21892,32),(21894,21895,32),(21914,21914,32),(21916,21916,32),(21927,21927,32),(21932,21932,32),(21934,21934,32),(21936,21936,32),(21942,21942,32),(21947,21947,32),(21966,21966,32),(21980,21980,32),(21987,21987,32),(22006,22006,32),(22021,22022,32),(22025,22025,32),(22030,22030,32),(22040,22040,32),(22043,22043,32),(22050,22050,32),(22057,22057,32),(22068,22068,32),(22075,22075,32),(22092,22093,32),(22120,22120,32),(22132,22132,32),(22189,22189,32),(22196,22196,32),(22204,22204,32),(22217,22217,32),(22221,22221,32),(22230,22231,32),(22234,22235,32),(22237,22238,32),(22240,22240,32),(22242,22243,32),(22247,22247,32),(22253,22253,32),(22255,22256,32),(22258,22260,32),(22266,22266,32),(22269,22270,32),(22275,22275,32),(22278,22278,32),(22280,22280,32),(22283,22283,32),(22285,22285,32),(22287,22287,32),(22290,22291,32),(22294,22294,32),(22296,22296,32),(22300,22300,32),(22303,22303,32),(22307,22307,32),(22311,22313,32),(22317,22317,32),(22320,22320,32),(22323,22323,32),(22330,22331,32),(22336,22336,32),(22338,22338,32),(22343,22343,32),(22346,22346,32),(22350,22353,32),(22359,22359,32),(22362,22363,32),(22365,22367,32),(22369,22369,32),(22372,22372,32),(22374,22374,32),(22378,22378,32),(22387,22387,32),(22395,22395,32),(22402,22402,32),(22404,22405,32),(22411,22411,32),(22426,22426,32),(22433,22433,32),(22435,22435,32),(22438,22438,32),(22443,22443,32),(22467,22467,32),(22472,22472,32),(22475,22475,32),(22478,22478,32),(22484,22484,32),(22487,22487,32),(22495,22496,32),(22519,22519,32),(22521,22522,32),(22524,22524,32),(22528,22528,32),(22530,22531,32),(22533,22535,32),(22537,22537,32),(22561,22561,32),(22564,22564,32),(22570,22570,32),(22575,22577,32),(22580,22580,32),(22586,22586,32),(22602,22602,32),(22609,22609,32),(22612,22612,32),(22616,22616,32),(22618,22618,32),(22621,22622,32),(22626,22626,32),(22633,22633,32),(22641,22641,32),(22645,22645,32),(22654,22654,32),(22659,22659,32),(22665,22666,32),(22675,22675,32),(22679,22679,32),(22681,22681,32),(22684,22684,32),(22686,22687,32),(22696,22697,32),(22707,22707,32),(22721,22721,32),(22726,22727,32),(22730,22730,32),(22750,22750,32),(22754,22754,32),(22756,22756,32),(22761,22761,32),(22763,22764,32),(22766,22770,32),(22774,22774,32),(22777,22778,32),(22781,22781,32),(22786,22786,32),(22788,22788,32),(22791,22791,32),(22793,22794,32),(22797,22797,32),(22799,22799,32),(22805,22806,32),(22810,22810,32),(22812,22812,32),(22818,22818,32),(22823,22823,32),(22825,22827,32),(22829,22830,32),(22833,22834,32),(22836,22836,32),(22839,22840,32),(22842,22842,32),(22848,22848,32),(22852,22852,32),(22855,22857,32),(22862,22863,32),(22865,22865,32),(22868,22872,32),(22874,22874,32),(22880,22880,32),(22885,22885,32),(22887,22888,32),(22890,22890,32),(22899,22900,32),(22902,22902,32),(22904,22905,32),(22909,22909,32),(22914,22916,32),(22919,22920,32),(22925,22925,32),(22931,22931,32),(22934,22934,32),(22937,22937,32),(22948,22949,32),(22958,22958,32),(22963,22963,32),(22969,22969,32),(22971,22971,32),(22982,22982,32),(22985,22985,32),(22987,22987,32),(22989,22989,32),(22992,22996,32),(22999,22999,32),(23002,23002,32),(23004,23004,32),(23006,23006,32),(23013,23013,32),(23019,23020,32),(23030,23030,32),(23032,23032,32),(23035,23035,32),(23039,23039,32),(23041,23041,32),(23043,23045,32),(23047,23047,32),(23064,23064,32),(23066,23068,32),(23071,23071,32),(23075,23075,32),(23077,23077,32),(23081,23081,32),(23090,23090,32),(23092,23092,32),(23105,23105,32),(23110,23110,32),(23113,23113,32),(23130,23130,32),(23142,23143,32),(23156,23157,32),(23159,23159,32),(23170,23170,32),(23186,23186,32),(23194,23195,32),(23207,23207,32),(23219,23219,32),(23226,23226,32),(23229,23229,32),(23233,23234,32),(23244,23244,32),(23248,23248,32),(23252,23252,32),(23267,23267,32),(23270,23270,32),(23273,23273,32),(23291,23291,32),(23301,23301,32),(23305,23305,32),(23307,23308,32),(23332,23332,32),(23344,23344,32),(23348,23348,32),(23351,23351,32),(23376,23377,32),(23380,23380,32),(23382,23386,32),(23388,23389,32),(23391,23391,32),(23395,23396,32),(23398,23398,32),(23401,23401,32),(23403,23403,32),(23413,23413,32),(23416,23416,32),(23421,23421,32),(23424,23425,32),(23427,23427,32),(23429,23429,32),(23431,23433,32),(23435,23437,32),(23439,23439,32),(23447,23455,32),(23458,23462,32),(23466,23467,32),(23470,23470,32),(23472,23472,32),(23475,23478,32),(23480,23481,32),(23485,23487,32),(23490,23490,32),(23492,23495,32),(23500,23500,32),(23506,23509,32),(23512,23512,32),(23515,23515,32),(23517,23517,32),(23519,23519,32),(23526,23528,32),(23531,23532,32),(23534,23534,32),(23539,23539,32),(23542,23542,32),(23544,23548,32),(23550,23551,32),(23553,23554,32),(23556,23556,32),(23558,23563,32),(23565,23567,32),(23569,23569,32),(23571,23572,32),(23574,23574,32),(23576,23578,32),(23586,23588,32),(23591,23591,32),(23601,23601,32),(23608,23614,32),(23616,23616,32),(23618,23618,32),(23621,23622,32),(23624,23624,32),(23626,23629,32),(23631,23631,32),(23633,23633,32),(23637,23637,32),(23646,23646,32),(23648,23648,32),(23652,23653,32),(23660,23660,32),(23662,23663,32),(23665,23665,32),(23679,23679,32),(23681,23681,32),(23696,23697,32),(23700,23700,32),(23703,23703,32),(23706,23707,32),(23713,23714,32),(23721,23721,32),(23723,23725,32),(23729,23729,32),(23731,23731,32),(23735,23736,32),(23751,23751,32),(23762,23762,32),(23776,23777,32),(23782,23782,32),(23784,23784,32),(23786,23786,32),(23791,23792,32),(23796,23796,32),(23798,23798,32),(23803,23803,32),(23805,23805,32),(23815,23815,32),(23822,23822,32),(23825,23825,32),(23828,23828,32),(23830,23831,32),(23833,23833,32),(23835,23835,32),(23847,23847,32),(23849,23849,32),(23860,23860,32),(23879,23879,32),(23888,23888,32),(23913,23913,32),(23938,23938,32),(23947,23948,32),(23968,23968,32),(23992,23992,32),(23994,23994,32),(23996,23997,32),(24012,24013,32),(24022,24022,32),(24027,24030,32),(24033,24035,32),(24037,24041,32),(24043,24043,32),(24046,24046,32),(24049,24052,32),(24055,24055,32),(24059,24059,32),(24061,24062,32),(24065,24067,32),(24069,24070,32),(24072,24072,32),(24076,24076,32),(24085,24086,32),(24091,24093,32),(24101,24102,32),(24107,24107,32),(24109,24112,32),(24115,24115,32),(24118,24118,32),(24120,24120,32),(24124,24125,32),(24128,24128,32),(24130,24130,32),(24133,24133,32),(24140,24140,32),(24149,24149,32),(24159,24159,32),(24161,24161,32),(24163,24163,32),(24171,24171,32),(24178,24180,32),(24182,24191,32),(24193,24193,32),(24195,24196,32),(24198,24199,32),(24202,24202,32),(24207,24208,32),(24211,24215,32),(24217,24218,32),(24220,24220,32),(24222,24223,32),(24229,24231,32),(24235,24235,32),(24237,24237,32),(24245,24245,32),(24247,24249,32),(24254,24254,32),(24259,24259,32),(24264,24266,32),(24268,24268,32),(24275,24275,32),(24278,24278,32),(24282,24282,32),(24287,24288,32),(24290,24291,32),(24300,24300,32),(24307,24308,32),(24310,24312,32),(24314,24315,32),(24318,24322,32),(24324,24324,32),(24331,24331,32),(24335,24336,32),(24339,24339,32),(24341,24341,32),(24343,24344,32),(24351,24352,32),(24357,24358,32),(24369,24369,32),(24373,24373,32),(24375,24375,32),(24377,24378,32),(24380,24380,32),(24382,24382,32),(24385,24385,32),(24389,24389,32),(24392,24392,32),(24394,24394,32),(24396,24396,32),(24400,24403,32),(24405,24405,32),(24407,24407,32),(24409,24409,32),(24413,24413,32),(24417,24418,32),(24420,24423,32),(24425,24426,32),(24428,24429,32),(24432,24433,32),(24435,24435,32),(24441,24441,32),(24444,24444,32),(24448,24450,32),(24452,24453,32),(24456,24456,32),(24459,24460,32),(24464,24464,32),(24466,24466,32),(24471,24471,32),(24478,24478,32),(24480,24481,32),(24489,24490,32),(24494,24494,32),(24499,24499,32),(24501,24501,32),(24503,24503,32),(24505,24505,32),(24509,24509,32),(24515,24515,32),(24517,24518,32),(24524,24525,32),(24527,24527,32),(24535,24537,32),(24540,24540,32),(24544,24544,32),(24555,24555,32),(24561,24561,32),(24565,24565,32),(24571,24571,32),(24573,24573,32),(24576,24577,32),(24590,24590,32),(24594,24594,32),(24597,24598,32),(24604,24605,32),(24608,24609,32),(24613,24616,32),(24618,24618,32),(24635,24635,32),(24639,24639,32),(24642,24643,32),(24646,24646,32),(24651,24651,32),(24656,24656,32),(24658,24658,32),(24661,24661,32),(24674,24674,32),(24677,24677,32),(24680,24682,32),(24684,24685,32),(24687,24688,32),(24693,24694,32),(24698,24698,32),(24700,24701,32),(24709,24709,32),(24713,24713,32),(24716,24717,32),(24724,24724,32),(24733,24733,32),(24735,24736,32),(24742,24742,32),(24746,24746,32),(24748,24748,32),(24754,24755,32),(24758,24758,32),(24773,24773,32),(24775,24775,32),(24778,24778,32),(24785,24785,32),(24789,24789,32),(24796,24796,32),(24799,24801,32),(24808,24808,32),(24819,24819,32),(24825,24826,32),(24833,24833,32),(24840,24841,32),(24845,24845,32),(24847,24847,32),(24858,24859,32),(24863,24863,32),(24887,24887,32),(24895,24895,32),(24904,24904,32),(24907,24908,32),(24910,24910,32),(24917,24917,32),(24920,24920,32),(24930,24931,32),(24935,24935,32),(24944,24944,32),(24950,24950,32),(24962,24962,32),(24976,24977,32),(24999,24999,32),(25010,25010,32),(25014,25014,32),(25033,25033,32),(25035,25036,32),(25062,25062,32),(25079,25080,32),(25082,25082,32),(25087,25088,32),(25095,25096,32),(25098,25098,32),(25100,25106,32),(25108,25108,32),(25110,25110,32),(25112,25112,32),(25114,25114,32),(25126,25126,32),(25130,25130,32),(25135,25136,32),(25138,25138,32),(25140,25140,32),(25142,25144,32),(25151,25153,32),(25159,25159,32),(25163,25166,32),(25171,25171,32),(25173,25173,32),(25176,25176,32),(25191,25191,32),(25193,25193,32),(25195,25196,32),(25199,25200,32),(25206,25206,32),(25209,25209,32),(25214,25216,32),(25220,25220,32),(25226,25226,32),(25235,25235,32),(25237,25240,32),(25242,25242,32),(25246,25246,32),(25250,25250,32),(25252,25253,32),(25259,25259,32),(25265,25265,32),(25273,25273,32),(25276,25276,32),(25289,25289,32),(25292,25292,32),(25295,25296,32),(25299,25300,32),(25304,25304,32),(25307,25308,32),(25312,25313,32),(25317,25317,32),(25321,25321,32),(25324,25324,32),(25327,25327,32),(25329,25329,32),(25331,25331,32),(25340,25340,32),(25342,25343,32),(25345,25345,32),(25351,25351,32),(25361,25361,32),(25369,25369,32),(25381,25381,32),(25391,25391,32),(25402,25402,32),(25417,25417,32),(25421,25421,32),(25429,25429,32),(25436,25436,32),(25438,25438,32),(25441,25441,32),(25448,25448,32),(25458,25458,32),(25463,25463,32),(25475,25475,32),(25480,25480,32),(25484,25484,32),(25490,25490,32),(25494,25494,32),(25496,25496,32),(25499,25499,32),(25505,25506,32),(25509,25509,32),(25511,25512,32),(25514,25514,32),(25516,25516,32),(25529,25529,32),(25542,25542,32),(25552,25552,32),(25562,25563,32),(25569,25569,32),(25581,25582,32),(25588,25588,32),(25597,25597,32),(25601,25601,32),(25615,25615,32),(25622,25622,32),(25628,25628,32),(25654,25654,32),(25662,25662,32),(25666,25666,32),(25670,25671,32),(25705,25705,32),(25711,25711,32),(25720,25720,32),(25722,25722,32),(25731,25731,32),(25736,25736,32),(25746,25746,32),(25749,25749,32),(25758,25758,32),(25771,25774,32),(25776,25776,32),(25778,25778,32),(25794,25794,32),(25799,25799,32),(25802,25802,32),(25805,25805,32),(25810,25810,32),(25841,25841,32),(25844,25844,32),(25856,25856,32),(25880,25880,32),(25900,25900,32),(25903,25903,32),(25908,25910,32),(25912,25913,32),(25915,25915,32),(25918,25919,32),(25925,25925,32),(25928,25928,32),(25932,25932,32),(25934,25935,32),(25937,25937,32),(25941,25943,32),(25945,25945,32),(25954,25955,32),(25958,25958,32),(25960,25960,32),(25964,25964,32),(25968,25968,32),(25972,25973,32),(25975,25976,32),(25991,25991,32),(25993,25993,32),(25995,25996,32),(25998,25998,32),(26000,26001,32),(26007,26007,32),(26009,26009,32),(26012,26012,32),(26020,26020,32),(26023,26023,32),(26025,26025,32),(26028,26029,32),(26031,26032,32),(26039,26039,32),(26041,26041,32),(26044,26045,32),(26049,26049,32),(26053,26053,32),(26059,26059,32),(26063,26063,32),(26071,26071,32),(26080,26080,32),(26082,26082,32),(26085,26089,32),(26092,26093,32),(26102,26102,32),(26106,26108,32),(26112,26112,32),(26114,26114,32),(26118,26119,32),(26122,26122,32),(26124,26124,32),(26126,26126,32),(26131,26133,32),(26143,26144,32),(26149,26149,32),(26152,26152,32),(26157,26157,32),(26159,26159,32),(26161,26161,32),(26164,26164,32),(26166,26166,32),(26170,26170,32),(26174,26174,32),(26177,26180,32),(26185,26185,32),(26187,26187,32),(26191,26191,32),(26195,26196,32),(26198,26199,32),(26202,26202,32),(26207,26207,32),(26214,26214,32),(26216,26217,32),(26222,26223,32),(26228,26228,32),(26230,26230,32),(26234,26234,32),(26241,26241,32),(26249,26249,32),(26257,26257,32),(26263,26263,32),(26274,26274,32),(26278,26278,32),(26280,26280,32),(26283,26283,32),(26292,26292,32),(26297,26297,32),(26310,26311,32),(26313,26313,32),(26329,26329,32),(26332,26332,32),(26342,26342,32),(26352,26352,32),(26354,26356,32),(26360,26362,32),(26364,26368,32),(26371,26371,32),(26376,26377,32),(26379,26379,32),(26381,26381,32),(26387,26388,32),(26391,26391,32),(26395,26395,32),(26397,26397,32),(26399,26399,32),(26406,26408,32),(26410,26413,32),(26415,26415,32),(26417,26417,32),(26420,26421,32),(26426,26426,32),(26429,26429,32),(26432,26432,32),(26434,26435,32),(26438,26438,32),(26441,26441,32),(26446,26449,32),(26451,26451,32),(26454,26454,32),(26460,26460,32),(26462,26465,32),(26469,26469,32),(26472,26472,32),(26477,26477,32),(26479,26481,32),(26485,26485,32),(26487,26487,32),(26494,26495,32),(26497,26497,32),(26500,26500,32),(26503,26503,32),(26512,26512,32),(26515,26515,32),(26517,26517,32),(26519,26519,32),(26522,26522,32),(26524,26525,32),(26530,26531,32),(26538,26539,32),(26543,26543,32),(26547,26547,32),(26550,26550,32),(26552,26552,32),(26564,26564,32),(26570,26570,32),(26575,26576,32),(26579,26580,32),(26584,26584,32),(26586,26586,32),(26588,26589,32),(26592,26592,32),(26594,26594,32),(26597,26597,32),(26604,26604,32),(26607,26607,32),(26609,26609,32),(26611,26612,32),(26619,26619,32),(26623,26623,32),(26626,26628,32),(26631,26632,32),(26635,26635,32),(26638,26639,32),(26641,26641,32),(26646,26647,32),(26654,26654,32),(26656,26658,32),(26665,26666,32),(26676,26676,32),(26679,26681,32),(26684,26686,32),(26688,26688,32),(26690,26691,32),(26696,26696,32),(26700,26700,32),(26704,26705,32),(26707,26708,32),(26716,26716,32),(26722,26723,32),(26725,26726,32),(26739,26739,32),(26742,26742,32),(26753,26753,32),(26757,26757,32),(26771,26771,32),(26781,26781,32),(26783,26784,32),(26786,26786,32),(26790,26792,32),(26799,26800,32),(26803,26803,32),(26805,26806,32),(26816,26816,32),(26825,26825,32),(26827,26827,32),(26829,26829,32),(26834,26834,32),(26839,26840,32),(26842,26842,32),(26847,26848,32),(26851,26851,32),(26855,26855,32),(26862,26862,32),(26866,26866,32),(26869,26869,32),(26885,26885,32),(26891,26891,32),(26893,26894,32),(26898,26898,32),(26908,26908,32),(26928,26928,32),(26943,26943,32),(26946,26946,32),(26954,26954,32),(26963,26963,32),(26970,26970,32),(26974,26974,32),(26976,26976,32),(26979,26979,32),(26984,26984,32),(26989,26989,32),(26997,26997,32),(26999,26999,32),(27004,27005,32),(27010,27010,32),(27014,27014,32),(27018,27018,32),(27022,27022,32),(27029,27029,32),(27035,27036,32),(27048,27048,32),(27053,27054,32),(27060,27060,32),(27083,27086,32),(27088,27088,32),(27096,27096,32),(27103,27103,32),(27131,27131,32),(27135,27135,32),(27138,27138,32),(27146,27147,32),(27153,27153,32),(27155,27155,32),(27161,27161,32),(27167,27167,32),(27169,27169,32),(27171,27171,32),(27176,27179,32),(27189,27189,32),(27192,27194,32),(27197,27197,32),(27211,27211,32),(27224,27225,32),(27231,27231,32),(27243,27243,32),(27263,27264,32),(27278,27278,32),(27284,27284,32),(27287,27287,32),(27292,27292,32),(27298,27298,32),(27311,27311,32),(27320,27320,32),(27331,27331,32),(27355,27355,32),(27359,27359,32),(27387,27387,32),(27402,27402,32),(27410,27410,32),(27424,27427,32),(27431,27431,32),(27442,27442,32),(27448,27448,32),(27453,27453,32),(27463,27463,32),(27468,27468,32),(27472,27472,32),(27481,27481,32),(27489,27495,32),(27497,27498,32),(27506,27508,32),(27511,27516,32),(27527,27527,32),(27530,27531,32),(27542,27542,32),(27556,27556,32),(27565,27565,32),(27570,27571,32),(27573,27573,32),(27575,27575,32),(27578,27579,32),(27583,27583,32),(27589,27589,32),(27595,27595,32),(27597,27599,32),(27602,27605,32),(27607,27608,32),(27611,27611,32),(27627,27627,32),(27663,27663,32),(27665,27665,32),(27668,27668,32),(27671,27671,32),(27683,27683,32),(27694,27694,32),(27700,27701,32),(27703,27704,32),(27706,27706,32),(27712,27714,32),(27719,27719,32),(27721,27721,32),(27728,27728,32),(27733,27733,32),(27735,27735,32),(27741,27741,32),(27743,27744,32),(27748,27748,32),(27754,27754,32),(27760,27760,32),(27762,27762,32),(27764,27764,32),(27766,27766,32),(27770,27770,32),(27773,27774,32),(27777,27779,32),(27781,27781,32),(27784,27785,32),(27792,27792,32),(27794,27794,32),(27798,27798,32),(27801,27801,32),(27803,27803,32),(27807,27807,32),(27809,27810,32),(27813,27813,32),(27815,27815,32),(27818,27819,32),(27825,27825,32),(27827,27827,32),(27833,27833,32),(27835,27837,32),(27839,27839,32),(27841,27841,32),(27849,27850,32),(27852,27852,32),(27859,27859,32),(27861,27861,32),(27863,27863,32),(27866,27867,32),(27873,27875,32),(27877,27877,32),(27880,27880,32),(27882,27883,32),(27888,27889,32),(27891,27891,32),(27895,27896,32),(27901,27902,32),(27905,27905,32),(27915,27915,32),(27922,27922,32),(27927,27927,32),(27929,27929,32),(27931,27931,32),(27934,27934,32),(27941,27941,32),(27945,27946,32),(27950,27950,32),(27953,27954,32),(27963,27964,32),(27966,27966,32),(27969,27969,32),(27973,27973,32),(27979,27979,32),(27982,27983,32),(27985,27986,32),(27993,27994,32),(27996,27996,32),(28003,28003,32),(28006,28006,32),(28009,28010,32),(28014,28014,32),(28020,28020,32),(28023,28024,32),(28034,28034,32),(28039,28041,32),(28044,28044,32),(28049,28049,32),(28057,28057,32),(28059,28059,32),(28062,28063,32),(28070,28070,32),(28074,28074,32),(28079,28079,32),(28082,28082,32),(28085,28085,32),(28092,28092,32),(28095,28096,32),(28100,28101,32),(28103,28103,32),(28107,28107,32),(28113,28113,32),(28118,28118,32),(28120,28120,32),(28122,28122,32),(28126,28126,32),(28129,28129,32),(28134,28134,32),(28136,28137,32),(28139,28139,32),(28142,28142,32),(28145,28145,32),(28147,28147,32),(28149,28152,32),(28154,28156,32),(28165,28165,32),(28168,28168,32),(28170,28171,32),(28176,28176,32),(28180,28181,32),(28186,28186,32),(28189,28189,32),(28192,28193,32),(28196,28198,32),(28201,28201,32),(28204,28205,32),(28207,28207,32),(28216,28216,32),(28222,28222,32),(28227,28228,32),(28234,28234,32),(28246,28246,32),(28248,28248,32),(28251,28251,32),(28263,28263,32),(28271,28271,32),(28276,28276,32),(28286,28289,32),(28297,28297,32),(28304,28304,32),(28310,28310,32),(28317,28317,32),(28325,28325,32),(28330,28331,32),(28337,28337,32),(28342,28342,32),(28346,28346,32),(28353,28353,32),(28356,28357,32),(28359,28359,32),(28361,28361,32),(28363,28364,32),(28369,28369,32),(28373,28373,32),(28376,28378,32),(28381,28382,32),(28385,28385,32),(28390,28390,32),(28392,28393,32),(28396,28396,32),(28404,28404,32),(28408,28408,32),(28414,28415,32),(28417,28417,32),(28422,28422,32),(28431,28431,32),(28435,28437,32),(28448,28448,32),(28450,28451,32),(28459,28460,32),(28463,28463,32),(28465,28465,32),(28467,28467,32),(28476,28476,32),(28479,28479,32),(28493,28493,32),(28497,28497,32),(28500,28500,32),(28504,28505,32),(28508,28508,32),(28510,28511,32),(28514,28514,32),(28516,28516,32),(28525,28526,32),(28540,28541,32),(28545,28545,32),(28548,28548,32),(28552,28552,32),(28557,28558,32),(28572,28572,32),(28580,28580,32),(28583,28583,32),(28586,28586,32),(28593,28593,32),(28595,28595,32),(28598,28598,32),(28601,28601,32),(28608,28611,32),(28625,28625,32),(28635,28635,32),(28639,28640,32),(28644,28644,32),(28652,28652,32),(28654,28654,32),(28656,28657,32),(28683,28683,32),(28687,28687,32),(28689,28689,32),(28693,28693,32),(28696,28696,32),(28699,28699,32),(28711,28712,32),(28716,28716,32),(28734,28734,32),(28748,28748,32),(28751,28751,32),(28760,28760,32),(28770,28772,32),(28779,28780,32),(28783,28784,32),(28789,28789,32),(28796,28799,32),(28809,28809,32),(28814,28814,32),(28818,28818,32),(28822,28822,32),(28828,28828,32),(28843,28844,32),(28846,28847,32),(28851,28851,32),(28856,28858,32),(28860,28860,32),(28866,28866,32),(28872,28872,32),(28879,28879,32),(28888,28888,32),(28895,28895,32),(28900,28900,32),(28902,28904,32),(28907,28907,32),(28909,28909,32),(28922,28922,32),(28937,28937,32),(28949,28949,32),(28952,28954,32),(28958,28958,32),(28961,28961,32),(28966,28966,32),(28982,28982,32),(28988,28988,32),(28999,28999,32),(29001,29002,32),(29004,29004,32),(29006,29006,32),(29010,29010,32),(29013,29013,32),(29017,29017,32),(29020,29020,32),(29029,29031,32),(29033,29033,32),(29038,29038,32),(29066,29066,32),(29081,29081,32),(29087,29087,32),(29105,29105,32),(29113,29113,32),(29118,29118,32),(29121,29121,32),(29123,29123,32),(29128,29130,32),(29135,29136,32),(29138,29138,32),(29141,29141,32),(29151,29151,32),(29158,29159,32),(29166,29166,32),(29173,29173,32),(29182,29184,32),(29190,29190,32),(29200,29200,32),(29226,29227,32),(29229,29229,32),(29233,29234,32),(29237,29243,32),(29245,29247,32),(29254,29256,32),(29259,29260,32),(29273,29273,32),(29275,29276,32),(29279,29279,32),(29281,29282,32),(29287,29287,32),(29289,29289,32),(29305,29305,32),(29312,29313,32),(29339,29339,32),(29351,29351,32),(29356,29357,32),(29359,29359,32),(29366,29366,32),(29376,29378,32),(29380,29380,32),(29382,29382,32),(29390,29390,32),(29392,29392,32),(29399,29399,32),(29401,29401,32),(29403,29403,32),(29409,29409,32),(29417,29417,32),(29420,29422,32),(29425,29425,32),(29432,29432,32),(29436,29436,32),(29447,29447,32),(29454,29454,32),(29467,29467,32),(29471,29471,32),(29482,29483,32),(29486,29486,32),(29492,29492,32),(29494,29495,32),(29503,29503,32),(29508,29509,32),(29518,29518,32),(29522,29522,32),(29539,29539,32),(29544,29544,32),(29551,29551,32),(29556,29556,32),(29560,29560,32),(29563,29563,32),(29572,29572,32),(29577,29577,32),(29579,29579,32),(29589,29590,32),(29595,29595,32),(29599,29599,32),(29605,29605,32),(29609,29609,32),(29611,29611,32),(29614,29616,32),(29618,29618,32),(29626,29626,32),(29634,29634,32),(29637,29637,32),(29640,29642,32),(29645,29645,32),(29649,29649,32),(29662,29662,32),(29664,29664,32),(29677,29678,32),(29682,29682,32),(29694,29694,32),(29699,29699,32),(29701,29702,32),(29705,29706,32),(29711,29711,32),(29723,29723,32),(29728,29728,32),(29730,29730,32),(29734,29734,32),(29736,29736,32),(29738,29738,32),(29742,29742,32),(29747,29750,32),(29756,29756,32),(29759,29759,32),(29764,29764,32),(29771,29771,32),(29786,29788,32),(29790,29792,32),(29794,29794,32),(29796,29796,32),(29801,29802,32),(29808,29808,32),(29811,29811,32),(29814,29814,32),(29822,29822,32),(29827,29827,32),(29831,29832,32),(29835,29835,32),(29840,29840,32),(29852,29852,32),(29854,29854,32),(29856,29857,32),(29863,29866,32),(29872,29872,32),(29885,29885,32),(29887,29887,32),(29898,29898,32),(29900,29900,32),(29903,29903,32),(29906,29906,32),(29914,29914,32),(29916,29916,32),(29922,29923,32),(29926,29926,32),(29935,29935,32),(29942,29943,32),(29956,29956,32),(29964,29964,32),(29976,29976,32),(29980,29980,32),(29983,29983,32),(29986,29987,32),(29992,29993,32),(29995,29996,32),(29999,30003,32),(30005,30005,32),(30007,30008,32),(30010,30011,32),(30018,30018,32),(30028,30028,32),(30033,30033,32),(30036,30036,32),(30041,30041,32),(30044,30045,32),(30048,30048,32),(30050,30050,32),(30053,30053,32),(30058,30059,32),(30064,30064,32),(30066,30067,32),(30069,30071,32),(30079,30079,32),(30086,30086,32),(30091,30091,32),(30095,30095,32),(30097,30098,32),(30103,30103,32),(30123,30123,32),(30127,30127,32),(30142,30142,32),(30149,30149,32),(30151,30151,32),(30171,30171,32),(30174,30174,32),(30196,30196,32),(30239,30239,32),(30244,30244,32),(30274,30274,32),(30284,30284,32),(30290,30290,32),(30326,30326,32),(30328,30328,32),(30330,30334,32),(30340,30340,32),(30342,30343,32),(30347,30347,32),(30352,30352,32),(30355,30355,32),(30358,30358,32),(30362,30362,32),(30365,30365,32),(30382,30382,32),(30399,30399,32),(30406,30406,32),(30408,30408,32),(30410,30410,32),(30416,30418,32),(30422,30424,32),(30427,30427,32),(30431,30431,32),(30433,30433,32),(30435,30436,32),(30439,30439,32),(30446,30446,32),(30450,30450,32),(30452,30452,32),(30456,30456,32),(30462,30462,32),(30465,30465,32),(30473,30473,32),(30475,30476,32),(30494,30496,32),(30524,30524,32),(30526,30526,32),(30528,30528,32),(30561,30561,32),(30563,30563,32),(30566,30566,32),(30571,30571,32),(30591,30591,32),(30606,30606,32),(30622,30622,32),(30636,30636,32),(30643,30643,32),(30646,30646,32),(30651,30651,32),(30655,30655,32),(30683,30683,32),(30690,30690,32),(30693,30693,32),(30697,30697,32),(30701,30701,32),(30707,30707,32),(30719,30722,32),(30740,30742,32),(30758,30758,32),(30770,30770,32),(30772,30772,32),(30778,30778,32),(30784,30784,32),(30799,30799,32),(30805,30805,32),(30813,30813,32),(30820,30820,32),(30827,30828,32),(30830,30830,32),(30849,30849,32),(30862,30862,32),(30865,30865,32),(30871,30871,32),(30874,30874,32),(30879,30879,32),(30887,30887,32),(30889,30889,32),(30899,30899,32),(30906,30906,32),(30908,30908,32),(30910,30910,32),(30913,30913,32),(30922,30922,32),(30928,30928,32),(30938,30938,32),(30945,30945,32),(30952,30952,32),(30959,30959,32),(30964,30964,32),(30977,30977,32),(30988,30988,32),(30990,30990,32),(31014,31014,32),(31019,31019,32),(31034,31036,32),(31038,31038,32),(31040,31041,32),(31047,31048,32),(31056,31056,32),(31059,31059,32),(31061,31062,32),(31066,31066,32),(31068,31070,32),(31072,31072,32),(31074,31074,32),(31077,31077,32),(31080,31080,32),(31085,31085,32),(31087,31087,32),(31098,31098,32),(31103,31103,32),(31105,31105,32),(31108,31109,32),(31118,31119,32),(31125,31125,32),(31143,31143,32),(31146,31146,32),(31150,31150,32),(31160,31163,32),(31166,31166,32),(31168,31169,32),(31177,31177,32),(31179,31179,32),(31181,31181,32),(31185,31186,32),(31192,31192,32),(31199,31199,32),(31206,31206,32),(31209,31209,32),(31213,31213,32),(31215,31215,32),(31227,31227,32),(31243,31243,32),(31245,31246,32),(31252,31252,32),(31255,31255,32),(31257,31258,32),(31260,31260,32),(31264,31264,32),(31267,31267,32),(31278,31278,32),(31282,31283,32),(31287,31287,32),(31289,31289,32),(31291,31292,32),(31295,31296,32),(31298,31298,32),(31302,31302,32),(31309,31310,32),(31312,31312,32),(31319,31319,32),(31330,31331,32),(31337,31337,32),(31348,31348,32),(31350,31351,32),(31353,31354,32),(31359,31359,32),(31361,31361,32),(31363,31363,32),(31373,31373,32),(31377,31377,32),(31379,31379,32),(31383,31383,32),(31389,31389,32),(31391,31391,32),(31398,31398,32),(31401,31402,32),(31406,31407,32),(31412,31412,32),(31431,31432,32),(31434,31435,32),(31449,31449,32),(31452,31452,32),(31454,31456,32),(31461,31461,32),(31471,31471,32),(31478,31478,32),(31481,31482,32),(31491,31491,32),(31494,31494,32),(31499,31499,32),(31503,31503,32),(31505,31505,32),(31508,31508,32),(31513,31513,32),(31515,31515,32),(31520,31520,32),(31526,31526,32),(31528,31528,32),(31532,31532,32),(31545,31545,32),(31548,31548,32),(31558,31558,32),(31561,31563,32),(31565,31565,32),(31569,31570,32),(31572,31572,32),(31574,31574,32),(31581,31581,32),(31584,31584,32),(31597,31597,32),(31601,31602,32),(31607,31607,32),(31609,31609,32),(31616,31616,32),(31627,31627,32),(31629,31629,32),(31631,31631,32),(31637,31637,32),(31639,31639,32),(31644,31644,32),(31649,31649,32),(31659,31659,32),(31661,31661,32),(31665,31665,32),(31668,31668,32),(31680,31681,32),(31684,31684,32),(31686,31687,32),(31689,31689,32),(31692,31692,32),(31712,31712,32),(31716,31716,32),(31722,31722,32),(31726,31726,32),(31729,31729,32),(31751,31751,32),(31777,31777,32),(31786,31786,32),(31806,31806,32),(31820,31821,32),(31840,31840,32),(31844,31844,32),(31852,31852,32),(31859,31859,32),(31866,31867,32),(31874,31874,32),(31881,31881,32),(31890,31890,32),(31899,31899,32),(31903,31903,32),(31908,31909,32),(31911,31911,32),(31918,31918,32),(31922,31922,32),(31925,31925,32),(31933,31935,32),(31945,31946,32),(31957,31958,32),(31961,31961,32),(31964,31964,32),(31966,31967,32),(31975,31975,32),(31983,31983,32),(31988,31988,32),(31992,31993,32),(31995,31995,32),(32000,32000,32),(32004,32005,32),(32009,32009,32),(32011,32011,32),(32013,32013,32),(32016,32016,32),(32020,32020,32),(32023,32026,32),(32032,32034,32),(32039,32039,32),(32043,32043,32),(32047,32048,32),(32051,32051,32),(32057,32057,32),(32066,32068,32),(32070,32070,32),(32076,32076,32),(32080,32080,32),(32085,32085,32),(32097,32098,32),(32102,32102,32),(32113,32114,32),(32117,32118,32),(32121,32121,32),(32143,32143,32),(32147,32147,32),(32153,32154,32),(32156,32156,32),(32160,32160,32),(32162,32162,32),(32166,32166,32),(32171,32173,32),(32175,32178,32),(32184,32184,32),(32186,32186,32),(32190,32191,32),(32202,32203,32),(32207,32207,32),(32209,32210,32),(32218,32218,32),(32221,32221,32),(32224,32224,32),(32227,32227,32),(32232,32232,32),(32236,32236,32),(32239,32239,32),(32244,32244,32),(32257,32257,32),(32260,32260,32),(32291,32291,32),(32294,32294,32),(32305,32305,32),(32317,32318,32),(32321,32321,32),(32326,32326,32),(32331,32331,32),(32340,32341,32),(32346,32346,32),(32353,32353,32),(32361,32362,32),(32365,32365,32),(32380,32380,32),(32386,32386,32),(32396,32396,32),(32411,32412,32),(32418,32418,32),(32422,32423,32),(32426,32426,32),(32428,32428,32),(32431,32431,32),(32434,32435,32),(32437,32438,32),(32440,32440,32),(32442,32442,32),(32445,32445,32),(32447,32447,32),(32452,32452,32),(32454,32456,32),(32461,32461,32),(32463,32463,32),(32465,32465,32),(32467,32467,32),(32472,32473,32),(32475,32479,32),(32483,32483,32),(32485,32485,32),(32487,32487,32),(32489,32491,32),(32493,32494,32),(32499,32501,32),(32504,32504,32),(32508,32508,32),(32511,32511,32),(32517,32517,32),(32534,32534,32),(32536,32536,32),(32554,32554,32),(32557,32557,32),(32566,32566,32),(32592,32595,32),(32599,32599,32),(32610,32610,32),(32618,32618,32),(32622,32622,32),(32624,32624,32),(32626,32626,32),(32631,32631,32),(32645,32645,32),(32650,32650,32),(32652,32652,32),(32654,32654,32),(32670,32670,32),(32676,32676,32),(32680,32681,32),(32690,32690,32),(32697,32697,32),(32701,32701,32),(32703,32705,32),(32707,32707,32),(32709,32709,32),(32714,32714,32),(32718,32718,32),(32722,32722,32),(32724,32724,32),(32728,32728,32),(32735,32737,32),(32752,32753,32),(32763,32764,32),(32768,32769,32),(32771,32771,32),(32773,32773,32),(32780,32780,32),(32782,32782,32),(32784,32784,32),(32786,32786,32),(32789,32789,32),(32792,32792,32),(32796,32796,32),(32819,32819,32),(32822,32823,32),(32827,32827,32),(32829,32829,32),(32831,32831,32),(32834,32834,32),(32842,32844,32),(32852,32852,32),(32854,32854,32),(32856,32856,32),(32858,32858,32),(32862,32862,32),(32865,32865,32),(32874,32874,32),(32879,32880,32),(32882,32882,32),(32886,32887,32),(32893,32895,32),(32899,32899,32),(32901,32903,32),(32905,32905,32),(32908,32908,32),(32918,32918,32),(32928,32929,32),(32933,32933,32),(32943,32943,32),(32946,32946,32),(32954,32954,32),(32959,32959,32),(32966,32966,32),(32972,32972,32),(32974,32974,32),(32982,32982,32),(32988,32988,32),(32990,32990,32),(32993,32993,32),(32996,32997,32),(32999,32999,32),(33014,33014,32),(33016,33016,32),(33021,33021,32),(33026,33026,32),(33031,33033,32),(33041,33041,32),(33065,33065,32),(33067,33067,32),(33071,33071,32),(33073,33073,32),(33075,33075,32),(33079,33079,32),(33098,33098,32),(33104,33104,32),(33109,33109,32),(33126,33126,32),(33129,33129,32),(33139,33139,32),(33144,33145,32),(33150,33150,32),(33180,33180,32),(33184,33184,32),(33202,33203,32),(33214,33214,32),(33231,33231,32),(33251,33251,32),(33253,33253,32),(33255,33256,32),(33258,33258,32),(33261,33261,32),(33267,33268,32),(33274,33276,32),(33286,33290,32),(33292,33294,32),(33298,33298,32),(33302,33302,32),(33304,33304,32),(33307,33308,32),(33310,33311,32),(33322,33322,32),(33324,33324,32),(33328,33328,32),(33333,33334,32),(33336,33337,32),(33351,33351,32),(33369,33369,32),(33382,33382,32),(33390,33391,32),(33394,33394,32),(33398,33402,32),(33406,33406,32),(33410,33411,32),(33418,33419,32),(33421,33421,32),(33426,33426,32),(33431,33431,32),(33433,33433,32),(33436,33437,32),(33441,33441,32),(33445,33446,32),(33449,33450,32),(33452,33455,32),(33457,33457,32),(33459,33459,32),(33463,33465,32),(33469,33470,32),(33487,33487,32),(33489,33489,32),(33491,33492,32),(33495,33495,32),(33503,33503,32),(33508,33510,32),(33515,33515,32),(33519,33519,32),(33521,33521,32),(33529,33529,32),(33538,33542,32),(33545,33545,32),(33559,33559,32),(33564,33564,32),(33576,33576,32),(33579,33579,32),(33583,33583,32),(33586,33586,32),(33589,33590,32),(33592,33593,32),(33600,33600,32),(33603,33603,32),(33606,33606,32),(33609,33610,32),(33618,33618,32),(33620,33620,32),(33624,33624,32),(33633,33633,32),(33635,33635,32),(33643,33643,32),(33647,33647,32),(33655,33655,32),(33659,33659,32),(33670,33670,32),(33673,33674,32),(33678,33678,32),(33683,33683,32),(33688,33688,32),(33694,33694,32),(33706,33707,32),(33713,33714,32),(33721,33722,32),(33729,33729,32),(33733,33733,32),(33735,33735,32),(33738,33738,32),(33740,33740,32),(33743,33743,32),(33747,33747,32),(33752,33752,32),(33756,33756,32),(33759,33760,32),(33769,33769,32),(33775,33778,32),(33784,33784,32),(33793,33793,32),(33795,33796,32),(33802,33802,32),(33804,33805,32),(33829,33829,32),(33831,33833,32),(33836,33836,32),(33841,33841,32),(33848,33848,32),(33852,33853,32),(33862,33862,32),(33865,33865,32),(33879,33879,32),(33883,33883,32),(33889,33889,32),(33891,33891,32),(33899,33901,32),(33905,33905,32),(33909,33909,32),(33922,33922,32),(33931,33931,32),(33945,33945,32),(33951,33951,32),(33960,33960,32),(33970,33970,32),(33976,33977,32),(33979,33980,32),(33983,33983,32),(33993,33993,32),(33995,33995,32),(34013,34013,32),(34015,34015,32),(34028,34028,32),(34030,34030,32),(34044,34044,32),(34072,34072,32),(34074,34074,32),(34081,34081,32),(34083,34083,32),(34085,34086,32),(34093,34093,32),(34101,34101,32),(34108,34108,32),(34115,34115,32),(34121,34122,32),(34126,34126,32),(34137,34137,32),(34148,34148,32),(34152,34152,32),(34154,34154,32),(34157,34157,32),(34174,34174,32),(34180,34180,32),(34183,34183,32),(34186,34186,32),(34188,34188,32),(34196,34196,32),(34203,34203,32),(34217,34220,32),(34223,34224,32),(34241,34241,32),(34249,34249,32),(34253,34253,32),(34255,34255,32),(34269,34269,32),(34276,34277,32),(34281,34281,32),(34297,34297,32),(34299,34299,32),(34303,34303,32),(34310,34311,32),(34314,34315,32),(34321,34321,32),(34327,34327,32),(34349,34349,32),(34367,34367,32),(34381,34382,32),(34384,34384,32),(34389,34389,32),(34394,34395,32),(34398,34399,32),(34411,34411,32),(34425,34425,32),(34430,34430,32),(34433,34434,32),(34444,34444,32),(34461,34461,32),(34467,34467,32),(34485,34485,32),(34503,34503,32),(34505,34505,32),(34507,34507,32),(34521,34521,32),(34523,34523,32),(34527,34527,32),(34532,34532,32),(34542,34542,32),(34544,34544,32),(34552,34552,32),(34560,34560,32),(34562,34562,32),(34568,34568,32),(34584,34584,32),(34588,34588,32),(34601,34601,32),(34609,34609,32),(34619,34619,32),(34647,34647,32),(34662,34662,32),(34670,34670,32),(34676,34676,32),(34678,34678,32),(34701,34701,32),(34718,34718,32),(34746,34746,32),(34756,34756,32),(34758,34758,32),(34784,34784,32),(34809,34809,32),(34811,34811,32),(34837,34837,32),(34849,34850,32),(34875,34875,32),(34880,34880,32),(34885,34886,32),(34892,34893,32),(34899,34899,32),(34903,34903,32),(34907,34907,32),(34909,34910,32),(34913,34917,32),(34920,34920,32),(34928,34928,32),(34935,34935,32),(34943,34943,32),(34945,34945,32),(34955,34955,32),(34966,34966,32),(34974,34974,32),(34987,34987,32),(34989,34989,32),(35009,35010,32),(35013,35013,32),(35023,35023,32),(35028,35029,32),(35032,35032,32),(35036,35037,32),(35041,35042,32),(35044,35044,32),(35059,35060,32),(35065,35065,32),(35069,35070,32),(35072,35072,32),(35098,35098,32),(35105,35105,32),(35123,35123,32),(35140,35140,32),(35186,35186,32),(35198,35201,32),(35203,35203,32),(35207,35207,32),(35211,35211,32),(35215,35215,32),(35222,35222,32),(35226,35226,32),(35239,35239,32),(35242,35242,32),(35251,35251,32),(35258,35258,32),(35261,35261,32),(35264,35266,32),(35268,35268,32),(35270,35270,32),(35272,35273,32),(35282,35282,32),(35299,35299,32),(35320,35320,32),(35328,35330,32),(35336,35336,32),(35338,35338,32),(35342,35342,32),(35347,35347,32),(35351,35352,32),(35363,35363,32),(35370,35370,32),(35373,35373,32),(35377,35377,32),(35382,35382,32),(35388,35388,32),(35412,35413,32),(35422,35422,32),(35424,35425,32),(35427,35427,32),(35430,35430,32),(35433,35433,32),(35438,35438,32),(35440,35442,32),(35449,35449,32),(35463,35463,32),(35466,35466,32),(35468,35469,32),(35475,35475,32),(35477,35477,32),(35480,35480,32),(35486,35486,32),(35488,35488,32),(35493,35493,32),(35498,35498,32),(35500,35501,32),(35504,35504,32),(35506,35506,32),(35516,35516,32),(35519,35519,32),(35527,35527,32),(35531,35531,32),(35535,35535,32),(35538,35538,32),(35542,35542,32),(35558,35559,32),(35563,35563,32),(35565,35565,32),(35569,35569,32),(35572,35572,32),(35576,35576,32),(35582,35582,32),(35584,35584,32),(35588,35588,32),(35594,35594,32),(35598,35598,32),(35609,35609,32),(35611,35611,32),(35613,35613,32),(35635,35635,32),(35641,35641,32),(35657,35657,32),(35672,35672,32),(35674,35674,32),(35676,35676,32),(35686,35686,32),(35695,35696,32),(35698,35698,32),(35703,35703,32),(35709,35709,32),(35712,35712,32),(35722,35722,32),(35744,35745,32),(35752,35753,32),(35757,35760,32),(35762,35763,32),(35768,35768,32),(35770,35770,32),(35774,35774,32),(35776,35777,32),(35779,35780,32),(35782,35782,32),(35789,35789,32),(35797,35797,32),(35799,35800,32),(35802,35803,32),(35805,35806,32),(35809,35809,32),(35813,35813,32),(35821,35821,32),(35828,35828,32),(35831,35832,32),(35834,35835,32),(35838,35838,32),(35841,35841,32),(35843,35843,32),(35845,35845,32),(35848,35848,32),(35850,35851,32),(35856,35856,32),(35868,35868,32),(35874,35875,32),(35878,35878,32),(35885,35885,32),(35895,35895,32),(35910,35910,32),(35913,35914,32),(35920,35920,32),(35925,35925,32),(35930,35930,32),(35937,35938,32),(35946,35948,32),(35960,35961,32),(35980,35980,32),(35987,35987,32),(35997,35998,32),(36000,36002,32),(36008,36008,32),(36010,36012,32),(36020,36020,32),(36023,36023,32),(36027,36027,32),(36029,36029,32),(36031,36032,32),(36039,36040,32),(36042,36042,32),(36051,36051,32),(36058,36060,32),(36062,36062,32),(36066,36067,32),(36070,36070,32),(36074,36074,32),(36077,36077,32),(36084,36084,32),(36092,36093,32),(36106,36106,32),(36123,36123,32),(36125,36127,32),(36129,36133,32),(36135,36135,32),(36138,36139,32),(36141,36141,32),(36143,36143,32),(36149,36149,32),(36152,36156,32),(36158,36158,32),(36164,36164,32),(36169,36169,32),(36171,36171,32),(36175,36176,32),(36182,36182,32),(36187,36187,32),(36190,36190,32),(36194,36196,32),(36203,36203,32),(36208,36209,32),(36211,36211,32),(36213,36213,32),(36215,36215,32),(36229,36229,32),(36234,36234,32),(36249,36249,32),(36275,36275,32),(36286,36286,32),(36291,36291,32),(36294,36294,32),(36305,36305,32),(36319,36319,32),(36321,36321,32),(36328,36328,32),(36335,36335,32),(36339,36339,32),(36341,36341,32),(36362,36362,32),(36367,36368,32),(36386,36386,32),(36424,36424,32),(36447,36447,32),(36468,36468,32),(36481,36481,32),(36493,36493,32),(36523,36523,32),(36530,36530,32),(36538,36538,32),(36554,36554,32),(36556,36557,32),(36562,36562,32),(36575,36575,32),(36578,36578,32),(36587,36587,32),(36600,36600,32),(36603,36603,32),(36605,36606,32),(36611,36611,32),(36617,36617,32),(36628,36629,32),(36637,36638,32),(36649,36650,32),(36655,36655,32),(36664,36664,32),(36671,36671,32),(36676,36676,32),(36681,36681,32),(36685,36685,32),(36703,36703,32),(36710,36710,32),(36712,36713,32),(36715,36716,32),(36718,36720,32),(36726,36726,32),(36731,36733,32),(36739,36739,32),(36745,36745,32),(36758,36758,32),(36763,36764,32),(36766,36767,32),(36771,36771,32),(36774,36774,32),(36781,36781,32),(36784,36784,32),(36786,36787,32),(36789,36790,32),(36793,36799,32),(36801,36801,32),(36805,36805,32),(36807,36808,32),(36814,36814,32),(36816,36817,32),(36820,36820,32),(36824,36825,32),(36827,36828,32),(36830,36831,32),(36838,36838,32),(36842,36843,32),(36845,36845,32),(36848,36848,32),(36852,36852,32),(36855,36855,32),(36857,36858,32),(36861,36861,32),(36864,36870,32),(36873,36874,32),(36879,36880,32),(36882,36882,32),(36884,36884,32),(36887,36887,32),(36889,36890,32),(36895,36896,32),(36898,36899,32),(36911,36911,32),(36913,36914,32),(36917,36917,32),(36920,36920,32),(36930,36930,32),(36933,36933,32),(36935,36935,32),(36938,36939,32),(36941,36942,32),(36944,36944,32),(36947,36948,32),(36951,36951,32),(36953,36953,32),(36956,36956,32),(36960,36960,32),(36963,36963,32),(36965,36965,32),(36969,36969,32),(36973,36974,32),(36978,36978,32),(36981,36981,32),(36983,36984,32),(36986,36986,32),(36988,36988,32),(36991,36991,32),(36993,36994,32),(36996,36996,32),(36999,36999,32),(37002,37002,32),(37009,37009,32),(37011,37011,32),(37015,37015,32),(37021,37021,32),(37026,37027,32),(37030,37030,32),(37032,37032,32),(37034,37034,32),(37036,37036,32),(37038,37039,32),(37041,37041,32),(37044,37045,32),(37048,37051,32),(37057,37057,32),(37061,37061,32),(37066,37066,32),(37070,37070,32),(37073,37073,32),(37085,37086,32),(37089,37089,32),(37094,37096,32),(37101,37101,32),(37108,37109,32),(37111,37112,32),(37117,37117,32),(37122,37122,32),(37129,37129,32),(37138,37138,32),(37141,37141,32),(37150,37150,32),(37159,37159,32),(37165,37165,32),(37168,37170,32),(37172,37172,32),(37178,37178,32),(37190,37190,32),(37192,37193,32),(37197,37198,32),(37202,37202,32),(37218,37218,32),(37233,37233,32),(37239,37240,32),(37247,37247,32),(37250,37250,32),(37255,37255,32),(37257,37257,32),(37259,37259,32),(37261,37261,32),(37266,37266,32),(37284,37284,32),(37290,37292,32),(37295,37295,32),(37318,37319,32),(37322,37330,32),(37335,37336,32),(37340,37340,32),(37347,37347,32),(37351,37351,32),(37389,37389,32),(37396,37397,32),(37406,37406,32),(37409,37409,32),(37428,37428,32),(37434,37434,32),(37439,37439,32),(37444,37444,32),(37449,37449,32),(37467,37467,32),(37474,37474,32),(37476,37476,32),(37489,37489,32),(37502,37502,32),(37504,37504,32),(37507,37507,32),(37509,37509,32),(37523,37523,32),(37528,37528,32),(37530,37530,32),(37540,37540,32),(37549,37550,32),(37555,37555,32),(37559,37559,32),(37586,37586,32),(37604,37604,32),(37610,37610,32),(37616,37616,32),(37619,37619,32),(37628,37628,32),(37636,37636,32),(37653,37653,32),(37656,37656,32),(37658,37658,32),(37665,37666,32),(37670,37670,32),(37672,37672,32),(37675,37676,32),(37679,37679,32),(37682,37682,32),(37703,37703,32),(37707,37707,32),(37724,37724,32),(37749,37749,32),(37758,37758,32),(37762,37762,32),(37772,37772,32),(37780,37780,32),(37782,37782,32),(37786,37786,32),(37804,37806,32),(37811,37811,32),(37847,37847,32),(37854,37854,32),(37857,37857,32),(37860,37860,32),(37895,37895,32),(37912,37912,32),(37921,37921,32),(37941,37941,32),(37944,37944,32),(37956,37956,32),(37969,37970,32),(37979,37979,32),(37992,37992,32),(37994,37995,32),(38012,38012,32),(38021,38021,32),(38024,38026,32),(38035,38035,32),(38045,38047,32),(38050,38050,32),(38052,38052,32),(38054,38055,32),(38057,38057,32),(38064,38065,32),(38074,38074,32),(38081,38081,32),(38083,38083,32),(38085,38085,32),(38094,38094,32),(38108,38108,32),(38112,38112,32),(38120,38120,32),(38125,38126,32),(38133,38134,32),(38136,38136,32),(38138,38138,32),(38144,38146,32),(38149,38149,32),(38155,38155,32),(38160,38160,32),(38169,38169,32),(38175,38175,32),(38177,38177,32),(38179,38179,32),(38182,38182,32),(38190,38190,32),(38196,38196,32),(38202,38202,32),(38209,38210,32),(38215,38215,32),(38224,38224,32),(38229,38229,32),(38235,38236,32),(38240,38240,32),(38263,38264,32),(38271,38272,32),(38275,38275,32),(38278,38278,32),(38283,38283,32),(38291,38292,32),(38296,38296,32),(38306,38307,32),(38309,38309,32),(38313,38313,32),(38322,38322,32),(38331,38331,32),(38343,38343,32),(38346,38346,32),(38352,38352,32),(38355,38355,32),(38358,38358,32),(38360,38360,32),(38364,38364,32),(38376,38376,32),(38378,38379,32),(38381,38384,32),(38388,38389,32),(38392,38395,32),(38397,38401,32),(38406,38406,32),(38414,38414,32),(38420,38420,32),(38423,38423,32),(38428,38429,32),(38431,38431,32),(38442,38442,32),(38446,38446,32),(38449,38454,32),(38459,38459,32),(38463,38464,32),(38466,38466,32),(38468,38473,32),(38476,38477,32),(38480,38480,32),(38485,38485,32),(38488,38488,32),(38493,38494,32),(38498,38500,32),(38505,38506,32),(38512,38512,32),(38515,38515,32),(38517,38520,32),(38522,38522,32),(38525,38525,32),(38533,38534,32),(38536,38536,32),(38538,38539,32),(38542,38544,32),(38548,38548,32),(38551,38551,32),(38555,38556,32),(38560,38560,32),(38563,38563,32),(38567,38568,32),(38570,38570,32),(38577,38577,32),(38580,38580,32),(38582,38585,32),(38588,38590,32),(38592,38593,32),(38596,38599,32),(38601,38601,32),(38604,38605,32),(38609,38610,32),(38613,38614,32),(38617,38617,32),(38619,38620,32),(38622,38622,32),(38626,38627,32),(38632,38632,32),(38634,38635,32),(38639,38639,32),(38642,38642,32),(38646,38647,32),(38651,38651,32),(38654,38654,32),(38656,38657,32),(38660,38660,32),(38662,38666,32),(38669,38669,32),(38671,38671,32),(38678,38678,32),(38684,38684,32),(38686,38686,32),(38695,38696,32),(38701,38701,32),(38706,38706,32),(38712,38713,32),(38722,38722,32),(38724,38724,32),(38728,38728,32),(38737,38739,32),(38742,38742,32),(38745,38748,32),(38750,38750,32),(38752,38755,32),(38761,38761,32),(38771,38772,32),(38778,38778,32),(38789,38789,32),(38795,38795,32),(38797,38797,32),(38799,38799,32),(38808,38808,32),(38816,38816,32),(38824,38824,32),(38829,38829,32),(38859,38859,32),(38867,38867,32),(38876,38876,32),(38886,38886,32),(38889,38889,32),(38891,38891,32),(38893,38894,32),(38899,38899,32),(38901,38902,32),(38907,38907,32),(38911,38911,32),(38913,38915,32),(38917,38918,32),(38920,38920,32),(38922,38922,32),(38926,38926,32),(38930,38931,32),(38935,38936,32),(38945,38945,32),(38948,38948,32),(38957,38957,32),(38962,38962,32),(38968,38968,32),(38971,38972,32),(38988,38989,32),(38991,38991,32),(38995,38997,32),(39000,39000,32),(39003,39003,32),(39006,39006,32),(39013,39013,32),(39015,39015,32),(39023,39023,32),(39029,39030,32),(39033,39036,32),(39038,39039,32),(39044,39044,32),(39046,39047,32),(39056,39057,32),(39062,39062,32),(39064,39064,32),(39067,39069,32),(39072,39072,32),(39080,39080,32),(39087,39087,32),(39089,39089,32),(39108,39108,32),(39118,39118,32),(39128,39131,32),(39134,39136,32),(39145,39145,32),(39151,39151,32),(39166,39166,32),(39171,39171,32),(39173,39173,32),(39178,39178,32),(39184,39184,32),(39187,39187,32),(39192,39192,32),(39196,39196,32),(39200,39200,32),(39208,39208,32),(39234,39234,32),(39237,39237,32),(39244,39244,32),(39249,39250,32),(39255,39255,32),(39266,39267,32),(39269,39269,32),(39277,39277,32),(39286,39286,32),(39290,39290,32),(39292,39292,32),(39295,39295,32),(39302,39302,32),(39314,39314,32),(39317,39319,32),(39321,39321,32),(39333,39333,32),(39336,39336,32),(39340,39340,32),(39342,39342,32),(39347,39347,32),(39364,39366,32),(39376,39376,32),(39378,39378,32),(39389,39389,32),(39409,39409,32),(39423,39423,32),(39438,39438,32),(39442,39443,32),(39449,39449,32),(39464,39464,32),(39467,39467,32),(39472,39472,32),(39479,39479,32),(39492,39493,32),(39498,39498,32),(39500,39500,32),(39509,39509,32),(39511,39511,32),(39514,39515,32),(39524,39524,32),(39532,39533,32),(39535,39536,32),(39540,39540,32),(39545,39545,32),(39547,39548,32),(39551,39551,32),(39556,39558,32),(39564,39564,32),(39567,39567,32),(39569,39569,32),(39573,39573,32),(39578,39578,32),(39592,39592,32),(39616,39616,32),(39636,39636,32),(39640,39641,32),(39647,39647,32),(39658,39658,32),(39662,39662,32),(39678,39678,32),(39686,39686,32),(39704,39704,32),(39717,39717,32),(39719,39719,32),(39722,39722,32),(39727,39727,32),(39729,39730,32),(39740,39740,32),(39745,39746,32),(39749,39749,32),(39752,39752,32),(39759,39759,32),(39764,39764,32),(39770,39770,32),(39791,39791,32),(39809,39809,32),(39822,39822,32),(39825,39825,32),(39827,39827,32),(39848,39848,32),(39854,39854,32),(39881,39881,32),(39894,39894,32),(39899,39899,32),(39912,39912,32),(39914,39914,32),(39920,39920,32),(39957,39957,32),(39993,39993,32),(40000,40000,32),(40008,40008,32),(40023,40023,32),(40050,40050,32),(40055,40055,32),(40060,40060,32),(40065,40065,32),(40069,40069,32),(40077,40077,32),(40091,40092,32),(40100,40100,32),(40104,40104,32),(40120,40120,32),(40132,40132,32),(40140,40140,32),(40150,40150,32),(40158,40158,32),(40165,40165,32),(40169,40169,32),(40179,40180,32),(40206,40206,32),(40232,40232,32),(40251,40251,32),(40255,40255,32),(40284,40286,32),(40289,40289,32),(40300,40300,32),(40304,40304,32),(40306,40306,32),(40346,40346,32),(40367,40367,32),(40372,40372,32),(40388,40388,32),(40407,40407,32),(40434,40434,32),(40441,40442,32),(40478,40481,32),(40483,40483,32),(40493,40493,32),(40495,40495,32),(40499,40499,32),(40509,40511,32),(40517,40517,32),(40522,40522,32),(40527,40527,32),(40535,40535,32),(40548,40548,32),(40557,40557,32),(40560,40560,32),(40565,40565,32),(40573,40573,32),(40575,40575,32),(40577,40577,32),(40594,40595,32),(40599,40599,32),(40607,40607,32),(40613,40614,32),(40617,40617,32),(40628,40629,32),(40633,40636,32),(40639,40639,32),(40643,40644,32),(40653,40654,32),(40657,40658,32),(40660,40660,32),(40664,40665,32),(40670,40670,32),(40680,40680,32),(40697,40697,32),(40699,40699,32),(40701,40702,32),(40718,40718,32),(40720,40720,32),(40723,40723,32),(40736,40736,32),(40763,40763,32),(40778,40779,32),(40784,40784,32),(40786,40786,32),(40801,40801,32),(40831,40831,32),(40836,40836,32),(40845,40858,32),(40860,40860,32),(40862,40869,32),(40918,40937,32),(40968,40968,33),(41070,41070,33),(41158,41158,33),(41351,41352,33),(41405,41405,33),(41548,41548,33),(41561,41561,33),(41571,41571,33),(41594,41594,33),(41760,41760,33),(42009,42009,33),(42093,42093,33),(42124,42124,33),(42175,42175,32),(42192,42237,33),(42238,42239,32),(42240,42508,33),(42509,42511,32),(42512,42527,33),(42528,42537,38),(42538,42539,33),(42540,42559,0),(42560,42560,33),(42562,42562,33),(42564,42564,33),(42566,42566,33),(42568,42568,33),(42570,42570,33),(42572,42572,33),(42574,42574,33),(42576,42576,33),(42578,42578,33),(42580,42580,33),(42582,42582,33),(42584,42584,33),(42586,42586,33),(42588,42588,33),(42590,42590,33),(42592,42592,33),(42594,42594,33),(42596,42596,33),(42598,42598,33),(42600,42600,33),(42602,42602,33),(42604,42604,33),(42606,42606,33),(42608,42610,41),(42611,42611,32),(42624,42624,33),(42626,42626,33),(42628,42628,33),(42630,42630,33),(42632,42632,33),(42634,42634,33),(42636,42636,33),(42638,42638,33),(42640,42640,33),(42642,42642,33),(42644,42644,33),(42646,42646,33),(42648,42648,33),(42650,42650,33),(42656,42735,33),(42736,42737,41),(42738,42743,32),(42744,42759,0),(42760,42774,1),(42780,42785,1),(42786,42790,33),(42792,42792,33),(42794,42794,33),(42796,42796,33),(42798,42798,33),(42800,42802,33),(42804,42804,33),(42806,42806,33),(42808,42808,33),(42810,42810,33),(42812,42812,33),(42814,42814,33),(42816,42816,33),(42818,42818,33),(42820,42820,33),(42822,42822,33),(42824,42824,33),(42826,42826,33),(42828,42828,33),(42830,42830,33),(42832,42832,33),(42834,42834,33),(42836,42836,33),(42838,42840,33),(42842,42842,33),(42844,42844,33),(42846,42848,33),(42850,42850,33),(42852,42852,33),(42854,42854,33),(42856,42856,33),(42858,42858,33),(42860,42860,33),(42862,42862,33),(42864,42873,33),(42875,42875,33),(42877,42878,33),(42880,42880,33),(42882,42882,33),(42884,42884,33),(42886,42886,33),(42889,42890,1),(42891,42898,33),(42901,42902,33),(42904,42904,33),(42906,42906,33),(42908,42908,33),(42910,42912,33),(42914,42914,33),(42916,42916,33),(42918,42920,33),(42922,42936,33),(42938,42938,33),(42940,42940,33),(42942,42942,33),(42944,42944,33),(42948,42951,33),(42953,42953,33),(42955,42956,33),(42958,42960,33),(42962,42965,33),(42968,42968,33),(42970,42972,33),(42973,42973,0),(42978,42978,0),(42994,42995,33),(42997,42997,33),(42999,43009,33),(43010,43010,41),(43011,43013,33),(43014,43014,41),(43015,43018,33),(43019,43019,41),(43020,43042,33),(43043,43047,41),(43048,43051,32),(43052,43052,41),(43072,43123,33),(43124,43127,32),(43136,43137,41),(43138,43187,33),(43188,43205,41),(43214,43215,32),(43216,43225,38),(43261,43261,33),(43264,43273,38),(43274,43301,33),(43302,43309,41),(43310,43310,0),(43311,43311,32),(43312,43334,33),(43335,43347,41),(43348,43358,0),(43359,43359,32),(43360,43388,33),(43389,43391,0),(43392,43395,41),(43396,43442,33),(43443,43456,41),(43457,43469,32),(43471,43471,1),(43472,43481,38),(43486,43487,32),(43520,43521,33),(43523,43560,33),(43561,43574,41),(43575,43583,0),(43584,43586,33),(43587,43587,41),(43588,43589,33),(43591,43595,33),(43596,43597,41),(43598,43599,0),(43600,43609,38),(43610,43611,0),(43612,43615,32),(43639,43639,32),(43762,43762,33),(43824,43866,33),(43868,43875,33),(43877,43881,33),(43882,43883,0),(43968,44002,33),(44003,44010,41),(44011,44011,32),(44012,44013,41),(44014,44015,0),(44016,44025,38),(44026,44031,0),(44032,44299,33),(44301,48887,33),(48889,50178,33),(50180,50822,33),(50836,50836,33),(50857,50857,33),(50864,50865,33),(50868,50868,33),(50872,50872,33),(50880,50880,33),(50885,50885,33),(50892,50892,33),(50896,50896,33),(50900,50900,33),(50948,50948,33),(50952,50952,33),(50969,50969,33),(50976,50977,33),(50980,50980,33),(50984,50984,33),(50999,50999,33),(51004,51004,33),(51008,51008,33),(51012,51012,33),(51020,51021,33),(51023,51023,33),(51025,51032,33),(51060,51061,33),(51064,51064,33),(51068,51068,33),(51076,51077,33),(51081,51081,33),(51086,51086,33),(51088,51089,33),(51092,51092,33),(51096,51096,33),(51104,51105,33),(51109,51109,33),(51116,51116,33),(51137,51137,33),(51200,51201,33),(51204,51204,33),(51208,51208,33),(51216,51216,33),(51219,51219,33),(51221,51221,33),(51228,51229,33),(51236,51236,33),(51312,51313,33),(51316,51316,33),(51328,51328,33),(51333,51333,33),(51339,51340,33),(51396,51396,33),(51428,51428,33),(51452,51453,33),(51456,51456,33),(51460,51460,33),(51473,51473,33),(51480,51480,33),(51592,51592,33),(51596,51596,33),(51608,51608,33),(51613,51613,33),(51648,51649,33),(51652,51652,33),(51656,51656,33),(51665,51665,33),(51667,51667,33),(51669,51669,33),(51676,51676,33),(51687,51687,33),(51692,51692,33),(51704,51704,33),(51792,51792,33),(51901,51901,33),(51908,51908,33),(52180,52180,33),(52236,52236,33),(52252,52252,33),(52264,52264,33),(52268,52268,33),(52270,52270,33),(52272,52272,33),(52280,52281,33),(52285,52285,33),(52292,52293,33),(52376,52377,33),(52380,52380,33),(52384,52384,33),(52393,52393,33),(52395,52395,33),(52397,52397,33),(52404,52404,33),(52488,52488,33),(52492,52492,33),(52509,52509,33),(52572,52572,33),(52600,52600,33),(52628,52629,33),(52632,52632,33),(52636,52636,33),(52644,52644,33),(52649,52649,33),(52656,52656,33),(52768,52768,33),(52824,52825,33),(52828,52828,33),(52832,52832,33),(52840,52840,33),(52852,52852,33),(52860,52860,33),(52880,52880,33),(52964,52964,33),(52980,52981,33),(52992,52992,33),(52996,52996,33),(53011,53011,33),(53076,53076,33),(53097,53097,33),(53104,53104,33),(53217,53217,33),(53220,53220,33),(53224,53224,33),(53233,53233,33),(53356,53356,33),(53364,53364,33),(53372,53372,33),(53412,53413,33),(53416,53416,33),(53428,53428,33),(53433,53433,33),(53440,53441,33),(53444,53444,33),(53448,53448,33),(53456,53457,33),(53459,53459,33),(53461,53461,33),(53468,53469,33),(53472,53472,33),(53476,53476,33),(53530,53530,33),(53552,53552,33),(53560,53560,33),(53568,53568,33),(53580,53580,33),(53584,53584,33),(53588,53588,33),(53664,53665,33),(53668,53668,33),(53685,53685,33),(53804,53804,33),(53888,53888,33),(53916,53916,33),(53944,53945,33),(54000,54000,33),(54004,54004,33),(54008,54008,33),(54021,54021,33),(54028,54028,33),(54032,54032,33),(54036,54036,33),(54045,54045,33),(54053,54053,33),(54056,54056,33),(54060,54060,33),(54140,54140,33),(54168,54168,33),(54172,54172,33),(54200,54200,33),(54217,54217,33),(54224,54224,33),(54252,54253,33),(54256,54256,33),(54260,54260,33),(54273,54273,33),(54364,54364,33),(54392,54392,33),(54400,54400,33),(54408,54408,33),(54413,54413,33),(54532,54532,33),(54540,54540,33),(54588,54589,33),(54592,54592,33),(54596,54596,33),(54605,54605,33),(54609,54609,33),(54616,54617,33),(54620,54620,33),(54624,54624,33),(54632,54633,33),(54637,54637,33),(54644,54645,33),(54648,54648,33),(54664,54665,33),(54693,54693,33),(54728,54728,33),(54732,54732,33),(54744,54744,33),(54756,54756,33),(54764,54764,33),(54784,54785,33),(54788,54788,33),(54801,54801,33),(54805,54805,33),(54812,54812,33),(54840,54840,33),(54844,54844,33),(54848,54848,33),(54856,54857,33),(54861,54861,33),(54868,54868,33),(54872,54872,33),(54876,54876,33),(54889,54889,33),(54924,54925,33),(54952,54952,33),(54980,54980,33),(54984,54984,33),(55064,55064,33),(55121,55121,33),(55128,55128,33),(55136,55136,33),(55141,55141,33),(55148,55148,33),(55176,55176,33),(55192,55192,33),(55216,55238,33),(55243,55291,33),(57344,57368,0),(57370,61959,0),(61961,63743,0),(64017,64017,32),(64256,64259,33),(64286,64286,41),(64288,64296,46),(64297,64297,32),(64335,64335,46),(64336,64373,33),(64378,64419,33),(64422,64431,33),(64450,64450,32),(64467,64470,33),(64473,64489,33),(64508,64511,33),(64830,64831,0),(64832,64832,32),(64847,64847,32),(64976,65007,0),(65008,65019,33),(65020,65021,32),(65024,65039,9),(65040,65042,0),(65043,65043,4),(65044,65049,0),(65056,65057,9),(65072,65074,0),(65075,65076,7),(65077,65080,0),(65085,65100,0),(65101,65103,7),(65104,65104,5),(65105,65105,0),(65106,65106,11),(65108,65108,5),(65109,65109,4),(65110,65126,0),(65128,65131,0),(65136,65138,33),(65140,65140,33),(65142,65268,33),(65271,65271,33),(65275,65276,33),(65279,65279,2),(65281,65286,0),(65287,65287,11),(65288,65291,0),(65292,65292,5),(65293,65293,0),(65294,65294,11),(65295,65295,0),(65296,65305,6),(65306,65306,4),(65307,65307,5),(65308,65312,0),(65313,65338,33),(65339,65342,0),(65343,65343,7),(65344,65344,0),(65369,65369,33),(65371,65374,0),(65377,65381,0),(65382,65391,35),(65392,65392,3),(65393,65437,35),(65438,65439,9),(65441,65441,33),(65504,65510,0),(65512,65518,0),(65529,65531,2),(65532,65532,0),(65536,65547,33),(65549,65574,33),(65576,65594,33),(65596,65597,33),(65599,65613,33),(65616,65629,33),(65740,65740,33),(65743,65743,33),(65776,65776,33),(65799,65843,32),(65856,65858,33),(65860,65862,33),(65864,65878,33),(65921,65921,32),(65924,65924,32),(65930,65930,32),(65936,65947,0),(65952,65952,32),(66000,66044,0),(66045,66045,9),(66176,66204,33),(66208,66256,33),(66273,66280,32),(66304,66335,33),(66336,66339,32),(66352,66378,33),(66379,66383,0),(66421,66421,33),(66432,66461,33),(66462,66462,0),(66463,66463,32),(66464,66499,33),(66504,66511,33),(66512,66512,32),(66513,66517,33),(66560,66599,33),(66640,66717,33),(66720,66729,38),(66736,66771,33),(66816,66855,33),(66864,66915,33),(66927,66927,32),(66928,66938,33),(66940,66954,33),(66956,66962,33),(66964,66965,33),(67456,67456,33),(67459,67461,33),(67467,67504,33),(67506,67513,33),(67584,67589,33),(67592,67592,33),(67594,67637,33),(67639,67640,33),(67644,67644,33),(67647,67669,33),(67670,67670,0),(67671,67679,32),(67680,67702,33),(67703,67711,32),(67840,67861,33),(67862,67867,32),(67868,67870,0),(67871,67871,32),(67872,67897,33),(67903,67903,32),(67968,68023,33),(68030,68031,33),(68096,68096,33),(68097,68099,41),(68101,68102,41),(68108,68111,41),(68112,68115,33),(68117,68119,33),(68121,68147,33),(68152,68154,41),(68159,68159,41),(68160,68167,32),(68176,68184,32),(68192,68220,33),(68221,68223,32),(68224,68252,33),(68253,68255,32),(68352,68405,33),(68409,68415,32),(68416,68437,33),(68440,68447,32),(68448,68466,33),(68472,68479,32),(68480,68497,33),(68505,68508,32),(68521,68527,32),(68608,68680,33),(68739,68739,33),(68769,68769,33),(68773,68773,33),(68775,68775,33),(68786,68786,33),(68807,68807,33),(68809,68809,33),(68811,68812,33),(68819,68819,33),(68822,68823,33),(68830,68830,33),(68864,68897,33),(68912,68921,38),(68975,68975,33),(69248,69251,33),(69254,69259,33),(69261,69266,33),(69269,69269,33),(69271,69277,33),(69279,69289,33),(69296,69296,33),(69376,69376,33),(69378,69378,33),(69380,69380,33),(69382,69390,33),(69393,69394,33),(69396,69397,33),(69400,69403,33),(69424,69442,33),(69552,69552,33),(69554,69558,33),(69560,69572,33),(69708,69709,32),(69760,69762,41),(69763,69807,33),(69808,69818,41),(69819,69820,32),(69821,69821,38),(69822,69825,32),(69826,69826,41),(69827,69836,0),(69837,69837,38),(69838,69839,0),(69840,69864,33),(69872,69881,38),(69968,70001,33),(70003,70003,41),(70016,70018,41),(70019,70066,33),(70067,70079,41),(70084,70084,33),(70090,70090,41),(70096,70105,38),(70320,70366,33),(70377,70377,41),(70384,70393,38),(70459,70459,9),(70460,70460,41),(70726,70726,41),(70729,70729,33),(70785,70831,33),(70832,70851,41),(70852,70853,33),(70855,70855,33),(70864,70873,38),(71104,71104,41),(71351,71351,41),(71424,71450,32),(71453,71467,41),(71472,71481,38),(71482,71487,32),(71738,71738,41),(71840,71849,33),(71860,71869,33),(71935,71935,33),(72192,72192,33),(72193,72202,41),(72203,72242,33),(72243,72249,41),(72250,72250,33),(72251,72254,41),(72255,72262,32),(72263,72263,41),(72350,72352,32),(72368,72383,33),(73440,73457,33),(73459,73462,41),(73463,73464,32),(73490,73522,33),(73648,73648,33),(73705,73705,32),(73728,73728,33),(73738,73738,33),(73743,73743,33),(73748,73748,33),(73756,73757,33),(73773,73773,33),(73775,73775,33),(73780,73780,33),(73784,73784,33),(73792,73793,33),(73800,73801,33),(73813,73813,33),(73849,73850,33),(73854,73854,33),(73862,73862,33),(73866,73866,33),(73869,73869,33),(73879,73879,33),(73909,73909,33),(73916,73916,33),(73970,73970,33),(73974,73974,33),(73982,73982,33),(73984,73984,33),(74001,74001,33),(74024,74025,33),(74047,74049,33),(74054,74054,33),(74069,74069,33),(74071,74071,33),(74080,74080,33),(74125,74125,33),(74127,74127,33),(74144,74144,33),(74154,74154,33),(74163,74163,33),(74167,74167,33),(74234,74235,33),(74237,74237,33),(74263,74265,33),(74272,74272,33),(74275,74275,33),(74278,74278,33),(74280,74282,33),(74288,74288,33),(74297,74297,33),(74302,74302,33),(74304,74304,33),(74307,74307,33),(74312,74312,33),(74315,74316,33),(74328,74328,33),(74337,74337,33),(74339,74339,33),(74362,74362,33),(74365,74365,33),(74381,74381,33),(74383,74383,33),(74385,74386,33),(74409,74409,33),(74413,74413,33),(74432,74432,33),(74455,74455,33),(74466,74466,33),(74491,74492,33),(74494,74494,33),(74504,74505,33),(74507,74509,33),(74512,74512,33),(74515,74515,33),(74519,74519,33),(74525,74525,33),(74536,74536,33),(74549,74549,33),(74551,74551,33),(74554,74554,33),(74636,74636,33),(74639,74639,33),(74767,74772,33),(74865,74865,32),(77824,77827,33),(77839,77839,33),(77844,77844,33),(77846,77846,33),(77868,77868,33),(77879,77879,33),(77904,77908,33),(77923,77923,33),(77942,77943,33),(77945,77945,33),(77952,77958,33),(77960,77960,33),(77963,77963,33),(77976,77976,33),(77981,77981,33),(77987,77987,33),(77989,77994,33),(77997,78006,33),(78008,78010,33),(78013,78013,33),(78016,78016,33),(78034,78034,33),(78040,78040,33),(78043,78043,33),(78047,78047,33),(78057,78057,33),(78059,78061,33),(78063,78065,33),(78072,78073,33),(78087,78087,33),(78103,78104,33),(78111,78111,33),(78115,78117,33),(78123,78123,33),(78127,78127,33),(78143,78143,33),(78162,78163,33),(78184,78184,33),(78193,78193,33),(78209,78209,33),(78215,78215,33),(78217,78217,33),(78222,78223,33),(78225,78225,33),(78227,78227,33),(78231,78232,33),(78244,78244,33),(78257,78257,33),(78260,78260,33),(78268,78277,33),(78299,78299,33),(78317,78317,33),(78319,78319,33),(78321,78321,33),(78323,78323,33),(78326,78326,33),(78344,78346,33),(78348,78349,33),(78352,78352,33),(78358,78359,33),(78361,78361,33),(78363,78363,33),(78416,78416,33),(78420,78420,33),(78444,78444,33),(78451,78451,33),(78454,78454,33),(78465,78467,33),(78477,78477,33),(78486,78486,33),(78497,78498,33),(78506,78506,33),(78510,78510,33),(78518,78518,33),(78520,78520,33),(78525,78525,33),(78527,78529,33),(78535,78536,33),(78548,78548,33),(78550,78550,33),(78553,78555,33),(78558,78558,33),(78572,78573,33),(78580,78580,33),(78585,78585,33),(78592,78592,33),(78615,78615,33),(78617,78617,33),(78625,78625,33),(78661,78662,33),(78665,78665,33),(78669,78670,33),(78677,78677,33),(78690,78699,33),(78710,78715,33),(78719,78720,33),(78726,78738,33),(78747,78747,33),(78751,78751,33),(78753,78753,33),(78764,78764,33),(78780,78781,33),(78787,78787,33),(78789,78789,33),(78799,78799,33),(78809,78809,33),(78811,78812,33),(78814,78814,33),(78817,78817,33),(78819,78819,33),(78834,78834,33),(78842,78862,33),(78867,78867,33),(78877,78877,33),(78889,78889,33),(78895,78895,33),(78896,78911,34),(78912,78912,41),(78913,78918,33),(78919,78933,41),(82944,82945,33),(82947,82947,33),(82949,82954,33),(82956,82966,33),(82968,82970,33),(82972,82974,33),(82976,82977,33),(82979,82981,33),(82984,82996,33),(82999,82999,33),(83001,83003,33),(83005,83010,33),(83012,83012,33),(83015,83018,33),(83021,83021,33),(83023,83023,33),(83026,83026,33),(83029,83029,33),(83031,83057,33),(83059,83068,33),(83070,83075,33),(83077,83077,33),(83079,83085,33),(83088,83090,33),(83094,83095,33),(83098,83098,33),(83100,83105,33),(83107,83109,33),(83119,83119,33),(83122,83122,33),(83124,83124,33),(83131,83131,33),(83136,83137,33),(83140,83141,33),(83143,83150,33),(83152,83153,33),(83161,83164,33),(83167,83168,33),(83170,83175,33),(83177,83177,33),(83180,83181,33),(83183,83185,33),(83187,83193,33),(83198,83211,33),(83213,83217,33),(83219,83219,33),(83221,83231,33),(83233,83236,33),(83238,83238,33),(83242,83242,33),(83245,83249,33),(83251,83251,33),(83255,83257,33),(83259,83260,33),(83264,83268,33),(83270,83272,33),(83274,83289,33),(83291,83291,33),(83293,83293,33),(83295,83299,33),(83301,83303,33),(83305,83306,33),(83308,83312,33),(83314,83318,33),(83320,83327,33),(83329,83330,33),(83333,83336,33),(83341,83344,33),(83347,83350,33),(83352,83353,33),(83355,83355,33),(83357,83365,33),(83369,83377,33),(83379,83379,33),(83382,83389,33),(83391,83391,33),(83393,83393,33),(83395,83398,33),(83400,83400,33),(83404,83404,33),(83408,83410,33),(83412,83412,33),(83416,83416,33),(83418,83420,33),(83426,83427,33),(83429,83432,33),(83435,83436,33),(83441,83445,33),(83447,83449,33),(83451,83454,33),(83461,83461,33),(83464,83464,33),(83466,83466,33),(83469,83469,33),(83472,83473,33),(83476,83476,33),(83478,83478,33),(83485,83487,33),(83502,83502,33),(83504,83504,33),(83514,83515,33),(83520,83520,33),(92160,92728,33),(92880,92909,33),(92912,92916,41),(92917,92917,32),(92928,92975,33),(92976,92982,41),(92983,92991,32),(92992,92995,33),(92996,92997,32),(93008,93017,38),(93027,93047,33),(93952,94026,33),(94031,94031,41),(94032,94032,33),(94033,94087,41),(94095,94098,41),(94099,94111,33),(94176,94176,33),(110592,110592,35),(110593,110593,32),(110598,110598,32),(110879,110879,32),(110880,110882,35),(113664,113770,33),(113776,113788,33),(113792,113800,33),(113808,113817,33),(113820,113820,32),(113821,113822,41),(113823,113823,32),(117762,117764,0),(117839,117839,0),(117871,117871,0),(117904,117905,0),(117915,117915,0),(117917,117917,0),(118303,118303,0),(118313,118313,0),(118464,118480,0),(118784,119029,0),(119040,119047,0),(119049,119052,0),(119056,119067,0),(119070,119078,0),(119081,119083,0),(119088,119109,0),(119127,119129,0),(119132,119133,0),(119141,119145,9),(119146,119148,0),(119149,119154,9),(119155,119162,2),(119163,119167,9),(119171,119172,0),(119173,119173,9),(119178,119179,9),(119183,119194,0),(119206,119209,0),(119210,119213,9),(119214,119218,0),(119220,119226,0),(119233,119246,0),(119248,119261,0),(119273,119274,0),(119296,119361,32),(119362,119364,41),(119365,119365,32),(119488,119507,32),(119520,119520,32),(119552,119638,0),(119648,119672,32),(119890,119892,1),(119901,119902,1),(119938,119938,1),(119966,119966,1),(119978,119979,1),(119982,119982,1),(119993,119993,1),(120029,120029,1),(120041,120041,1),(120056,120056,1),(120068,120069,1),(120071,120074,1),(120077,120084,1),(120086,120092,1),(120094,120121,1),(120123,120126,1),(120134,120134,1),(120138,120139,1),(120143,120143,1),(120169,120169,1),(120172,120223,1),(120262,120262,1),(120354,120354,1),(120356,120356,1),(120365,120365,1),(120368,120368,1),(120383,120383,1),(120575,120575,1),(120577,120577,1),(120587,120587,1),(120593,120593,1),(120792,120793,6),(120798,120798,6),(120802,120802,6),(122624,122639,33),(122643,122643,33),(122651,122651,33),(122653,122654,33),(122663,122663,33),(122727,122727,0),(122928,122931,33),(122933,122960,33),(122987,122989,33),(123136,123180,33),(123184,123190,41),(123191,123197,33),(123200,123209,38),(123214,123214,33),(123215,123215,32),(125184,125217,33),(125252,125258,41),(125259,125259,33),(125264,125273,38),(125278,125279,32),(126704,126705,32),(126976,126979,0),(126980,126980,96),(126981,127019,0),(127024,127030,0),(127040,127046,0),(127049,127049,0),(127056,127061,0),(127072,127077,0),(127088,127093,0),(127104,127109,0),(127114,127114,0),(127120,127123,0),(127136,127139,0),(127149,127150,0),(127153,127155,0),(127167,127167,0),(127169,127170,0),(127175,127175,0),(127177,127177,0),(127181,127181,0),(127183,127183,96),(127185,127186,0),(127197,127221,0),(127232,127244,32),(127245,127279,0),(127280,127305,1),(127306,127306,0),(127308,127308,0),(127310,127311,0),(127312,127337,1),(127338,127343,0),(127344,127345,97),(127346,127357,1),(127358,127359,97),(127360,127369,1),(127370,127372,0),(127374,127374,96),(127375,127376,0),(127377,127386,96),(127387,127394,0),(127397,127397,0),(127399,127405,0),(127462,127487,13),(127489,127490,96),(127507,127507,0),(127514,127514,96),(127535,127535,96),(127538,127546,96),(127568,127569,96),(127584,127584,0),(127586,127586,0),(127588,127588,0),(127744,127777,96),(127778,127779,0),(127780,127891,96),(127892,127893,0),(127894,127895,96),(127896,127896,0),(127897,127899,96),(127900,127901,0),(127902,127984,96),(127985,127986,0),(127987,127989,96),(127990,127990,0),(127991,127994,96),(127995,127999,9),(128000,128253,96),(128254,128254,0),(128255,128317,96),(128318,128328,0),(128329,128334,96),(128335,128335,0),(128336,128359,96),(128360,128366,0),(128367,128368,96),(128369,128370,0),(128371,128378,96),(128379,128390,0),(128391,128391,96),(128392,128393,0),(128394,128397,96),(128398,128399,0),(128400,128400,96),(128401,128404,0),(128405,128406,96),(128407,128419,0),(128420,128421,96),(128422,128423,0),(128424,128424,96),(128425,128432,0),(128433,128434,96),(128435,128443,0),(128444,128444,96),(128445,128449,0),(128450,128452,96),(128453,128464,0),(128465,128467,96),(128468,128475,0),(128476,128478,96),(128479,128480,0),(128481,128481,96),(128482,128482,0),(128483,128483,96),(128484,128487,0),(128488,128488,96),(128489,128494,0),(128495,128495,96),(128496,128498,0),(128499,128499,96),(128500,128505,0),(128506,128591,96),(128592,128639,0),(128640,128709,96),(128710,128714,0),(128715,128722,96),(128723,128724,0),(128725,128728,96),(128732,128741,96),(128742,128744,0),(128745,128745,96),(128746,128746,0),(128747,128748,96),(128752,128752,96),(128753,128754,0),(128755,128764,96),(128768,128895,0),(128971,128972,0),(128974,128977,0),(128979,128979,0),(128985,128985,0),(128992,129003,96),(129008,129008,96),(129128,129135,0),(129144,129151,0),(129200,129200,0),(129292,129338,96),(129339,129339,0),(129340,129349,96),(129350,129350,0),(129351,129535,96),(129536,129541,0),(129614,129623,0),(129648,129660,96),(129664,129674,96),(129678,129734,96),(129736,129736,96),(129741,129756,96),(129759,129770,96),(129775,129784,96),(129792,129938,0),(129940,129994,0),(130032,130041,6),(131070,131071,0),(167122,167122,32),(170466,170466,32),(181694,181694,32),(196606,196607,0),(200413,200414,32),(200812,200812,32),(262142,262143,0),(327678,327679,0),(393214,393215,0),(458750,458751,0),(524286,524287,0),(589822,589823,0),(655358,655359,0),(720894,720895,0),(786430,786431,0),(851966,851967,0),(917502,917503,0),(917505,917505,2),(917536,917592,9),(917594,917631,9),(917760,917999,9),(983038,983039,0),(1048574,1048575,0),(1114110,1114111,0),];
const BUCKET_SHIFT: u32 = 7;
const BUCKETS: &[(u16,u16)] = &[(0,0),(0,26),(25,28),(28,46),(45,66),(65,76),(76,95),(95,120),(119,129),(129,161),(161,192),(191,213),(213,237),(236,252),(252,267),(267,278),(278,292),(292,304),(304,323),(323,341),(341,358),(358,375),(375,392),(392,409),(409,425),(425,441),(441,457),(457,469),(469,481),(481,504),(504,531),(530,553),(553,567),(567,580),(579,580),(579,580),(579,587),(586,599),(599,605),(605,606),(606,608),(607,608),(607,608),(607,608),(607,610),(610,629),(629,638),(638,645),(645,658),(658,658),(658,665),(665,667),(667,673),(673,678),(678,681),(681,687),(687,694),(694,697),(697,701),(700,708),(708,733),(732,741),(741,775),(775,810),(810,837),(837,845),(845,878),(878,886),(885,887),(886,887),(886,891),(890,896),(896,899),(898,906),(906,907),(906,915),(915,956),(956,991),(990,1028),(1027,1046),(1046,1047),(1046,1047),(1047,1054),(1054,1069),(1068,1087),(1087,1095),(1095,1109),(1109,1119),(1119,1125),(1124,1161),(1161,1165),(1165,1165),(1165,1175),(1175,1178),(1178,1179),(1178,1180),(1180,1193),(1192,1201),(1201,1204),(1203,1211),(1211,1216),(1216,1222),(1222,1226),(1225,1228),(1228,1228),(1228,1229),(1229,1230),(1230,1231),(1231,1233),(1233,1233),(1233,1233),(1233,1233),(1233,1233),(1233,1233),(1233,1233),(1233,1233),(1233,1233),(1233,1233),(1233,1233),(1233,1233),(1233,1233),(1233,1233),(1233,1234),(1234,1234),(1234,1234),(1234,1234),(1234,1235),(1235,1235),(1235,1235),(1235,1235),(1235,1235),(1235,1235),(1235,1235),(1235,1235),(1235,1235),(1235,1235),(1235,1235),(1235,1235),(1235,1235),(1235,1235),(1235,1235),(1235,1235),(1235,1235),(1235,1235),(1235,1235),(1235,1235),(1235,1235),(1235,1236),(1236,1236),(1236,1236),(1236,1236),(1236,1236),(1236,1236),(1236,1236),(1236,1236),(1236,1237),(1237,1265),(1265,1299),(1299,1327),(1327,1356),(1356,1379),(1379,1400),(1400,1425),(1425,1458),(1458,1481),(1481,1510),(1510,1536),(1536,1562),(1562,1587),(1587,1609),(1609,1625),(1625,1640),(1640,1652),(1652,1668),(1668,1699),(1699,1717),(1717,1738),(1738,1759),(1759,1791),(1791,1817),(1817,1835),(1835,1850),(1850,1869),(1869,1898),(1898,1925),(1925,1947),(1947,1960),(1960,1977),(1977,2001),(2001,2029),(2028,2061),(2061,2089),(2089,2113),(2113,2134),(2134,2151),(2151,2162),(2161,2188),(2187,2215),(2215,2231),(2231,2251),(2251,2263),(2263,2278),(2278,2300),(2300,2327),(2327,2358),(2358,2377),(2376,2409),(2409,2440),(2440,2463),(2463,2486),(2486,2505),(2505,2520),(2520,2537),(2536,2548),(2548,2563),(2563,2580),(2580,2605),(2605,2638),(2638,2664),(2664,2695),(2695,2718),(2717,2743),(2743,2765),(2765,2785),(2785,2802),(2802,2822),(2822,2841),(2841,2858),(2857,2874),(2874,2894),(2894,2912),(2912,2934),(2934,2959),(2959,2980),(2980,3006),(3006,3019),(3019,3027),(3027,3052),(3052,3064),(3064,3078),(3077,3090),(3090,3110),(3110,3132),(3132,3153),(3153,3178),(3178,3199),(3199,3225),(3225,3247),(3247,3257),(3257,3278),(3278,3302),(3302,3325),(3325,3340),(3340,3371),(3371,3385),(3385,3406),(3406,3434),(3434,3457),(3457,3474),(3474,3486),(3486,3505),(3505,3530),(3530,3553),(3553,3575),(3575,3594),(3594,3610),(3610,3627),(3627,3645),(3645,3659),(3659,3674),(3674,3687),(3687,3695),(3695,3710),(3710,3727),(3727,3734),(3733,3752),(3752,3773),(3773,3800),(3800,3818),(3818,3842),(3842,3861),(3861,3883),(3883,3907),(3907,3921),(3921,3927),(3927,3941),(3941,3959),(3959,3988),(3988,4022),(4022,4051),(4051,4069),(4069,4084),(4084,4098),(4098,4114),(4114,4129),(4129,4140),(4140,4151),(4151,4172),(4172,4192),(4191,4215),(4214,4240),(4240,4272),(4272,4295),(4295,4314),(4314,4339),(4339,4356),(4356,4377),(4377,4392),(4392,4412),(4412,4426),(4426,4441),(4441,4453),(4453,4461),(4461,4475),(4475,4484),(4484,4491),(4491,4507),(4507,4526),(4526,4536),(4536,4541),(4541,4543),(4543,4544),(4544,4544),(4544,4546),(4546,4550),(4550,4550),(4550,4551),(4551,4551),(4551,4553),(4553,4557),(4557,4558),(4557,4558),(4557,4589),(4589,4607),(4606,4646),(4646,4677),(4676,4688),(4688,4694),(4694,4705),(4705,4712),(4712,4726),(4726,4727),(4727,4731),(4731,4738),(4738,4739),(4738,4739),(4738,4740),(4739,4740),(4739,4740),(4739,4740),(4739,4740),(4739,4740),(4739,4740),(4739,4740),(4739,4740),(4739,4740),(4739,4740),(4739,4740),(4739,4740),(4739,4740),(4739,4740),(4739,4740),(4739,4740),(4739,4740),(4739,4740),(4739,4740),(4739,4740),(4739,4740),(4739,4740),(4739,4740),(4739,4740),(4739,4740),(4739,4740),(4739,4740),(4739,4740),(4739,4740),(4739,4740),(4739,4740),(4739,4740),(4739,4740),(4739,4740),(4739,4741),(4740,4741),(4740,4741),(4740,4741),(4740,4741),(4740,4741),(4740,4741),(4740,4741),(4740,4741),(4740,4741),(4740,4741),(4740,4742),(4741,4742),(4741,4742),(4741,4742),(4741,4742),(4741,4752),(4752,4768),(4768,4778),(4778,4788),(4788,4794),(4794,4798),(4798,4812),(4812,4813),(4813,4815),(4815,4815),(4815,4816),(4816,4825),(4825,4832),(4832,4837),(4837,4843),(4843,4850),(4850,4853),(4853,4859),(4859,4863),(4863,4866),(4866,4879),(4879,4886),(4886,4889),(4889,4890),(4890,4896),(4896,4905),(4905,4913),(4913,4916),(4916,4919),(4919,4933),(4933,4940),(4940,4954),(4954,4958),(4958,4964),(4964,4968),(4968,4968),(4968,4968),(4968,4968),(4968,4968),(4968,4968),(4968,4968),(4968,4968),(4968,4968),(4968,4968),(4968,4968),(4968,4968),(4968,4968),(4968,4968),(4968,4968),(4968,4968),(4968,4968),(4968,4970),(4969,4970),(4969,4970),(4969,4970),(4969,4970),(4969,4970),(4969,4970),(4969,4970),(4969,4970),(4969,4970),(4969,4970),(4969,4970),(4969,4970),(4969,4970),(4969,4970),(4969,4970),(4969,4970),(4969,4970),(4969,4970),(4969,4970),(4969,4970),(4969,4970),(4969,4970),(4969,4970),(4969,4970),(4969,4970),(4969,4970),(4969,4970),(4969,4970),(4969,4970),(4969,4970),(4969,4970),(4969,4970),(4969,4970),(4969,4970),(4969,4970),(4969,4971),(4970,4971),(4970,4971),(4970,4971),(4970,4971),(4970,4971),(4970,4971),(4970,4971),(4970,4971),(4970,4971),(4970,4971),(4970,4971),(4970,4971),(4970,4971),(4971,4971),(4971,4971),(4971,4972),(4972,4972),(4972,4979),(4978,4984),(4984,4984),(4984,4984),(4984,4987),(4987,4990),(4990,5010),(5009,5013),(5013,5034),(5033,5040),(5040,5046),(5046,5049),(5049,5053),(5053,5060),(5060,5060),(5060,5063),(5063,5068),(5068,5075),(5075,5077),(5076,5079),(5079,5084),(5083,5086),(5086,5086),(5086,5086),(5086,5086),(5086,5090),(5090,5100),(5100,5100),(5100,5106),(5106,5108),(5108,5121),(5121,5123),(5123,5129),(5129,5132),(5132,5133),(5133,5144),(5144,5147),(5147,5147),(5147,5147),(5147,5154),(5154,5162),(5162,5165),(5165,5166),(5166,5178),(5178,5180),(5180,5186),(5186,5186),(5186,5189),(5189,5191),(5191,5191),(5191,5193),(5193,5198),(5198,5198),(5198,5199),(5199,5199),(5199,5200),(5200,5204),(5204,5204),(5204,5205),(5205,5208),(5208,5208),(5208,5208),(5208,5216),(5216,5218),(5218,5218),(5218,5218),(5218,5218),(5218,5218),(5218,5218),(5218,5218),(5218,5218),(5218,5221),(5221,5222),(5222,5224),(5224,5238),(5238,5247),(5247,5255),(5255,5263),(5263,5280),(5280,5290),(5290,5300),(5300,5302),(5302,5304),(5304,5304),(5304,5304),(5304,5304),(5304,5304),(5304,5304),(5304,5304),(5304,5304),(5304,5304),(5304,5304),(5304,5304),(5304,5304),(5304,5304),(5304,5304),(5304,5304),(5304,5304),(5304,5304),(5304,5304),(5304,5304),(5304,5304),(5304,5304),(5304,5304),(5304,5304),(5304,5304),(5304,5314),(5314,5333),(5333,5343),(5343,5360),(5360,5371),(5371,5389),(5389,5400),(5399,5416),(5415,5424),(5424,5424),(5424,5424),(5424,5424),(5424,5424),(5424,5424),(5424,5424),(5424,5424),(5424,5424),(5424,5424),(5424,5424),(5424,5424),(5424,5424),(5424,5424),(5424,5424),(5424,5424),(5424,5424),(5424,5424),(5424,5424),(5424,5424),(5424,5424),(5424,5424),(5424,5424),(5424,5424),(5424,5424),(5424,5424),(5424,5424),(5424,5424),(5424,5424),(5424,5424),(5424,5424),(5424,5424),(5424,5445),(5444,5468),(5467,5489),(5489,5514),(5514,5526),(5526,5526),(5526,5526),(5526,5526),(5526,5526),(5526,5526),(5526,5526),(5526,5526),(5526,5526),(5526,5526),(5526,5526),(5526,5526),(5526,5526),(5526,5526),(5526,5526),(5526,5526),(5526,5526),(5526,5526),(5526,5526),(5526,5526),(5526,5526),(5526,5526),(5526,5526),(5526,5526),(5526,5526),(5526,5526),(5526,5526),(5526,5526),(5526,5526),(5526,5526),(5526,5526),(5526,5526),(5526,5526),(5526,5526),(5526,5526),(5526,5526),(5526,5526),(5526,5526),(5526,5526),(5526,5526),(5526,5526),(5526,5526),(5526,5526),(5526,5526),(5526,5526),(5526,5526),(5526,5526),(5526,5526),(5526,5526),(5526,5526),(5526,5526),(5526,5526),(5526,5526),(5526,5526),(5526,5526),(5526,5526),(5526,5526),(5526,5526),(5526,5526),(5526,5526),(5526,5526),(5526,5526),(5526,5526),(5526,5526),(5526,5526),(5526,5526),(5526,5526),(5526,5526),(5526,5527),(5526,5527),(5526,5527),(5526,5527),(5526,5527),(5527,5530),(5530,5537),(5537,5537),(5537,5537),(5537,5537),(5537,5537),(5537,5537),(5537,5537),(5537,5537),(5537,5541),(5540,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5544),(5544,5547),(5547,5547),(5547,5549),(5549,5549),(5549,5549),(5549,5549),(5549,5549),(5549,5549),(5549,5549),(5549,5549),(5549,5549),(5549,5549),(5549,5549),(5549,5549),(5549,5549),(5549,5549),(5549,5549),(5549,5549),(5549,5549),(5549,5549),(5549,5549),(5549,5549),(5549,5549),(5549,5549),(5549,5551),(5551,5556),(5556,5556),(5556,5556),(5556,5556),(5556,5556),(5556,5556),(5556,5556),(5556,5556),(5556,5556),(5556,5556),(5556,5556),(5556,5556),(5556,5556),(5556,5556),(5556,5556),(5556,5556),(5556,5556),(5556,5556),(5556,5556),(5556,5556),(5556,5556),(5556,5556),(5556,5556),(5556,5556),(5556,5556),(5556,5556),(5556,5556),(5556,5556),(5556,5556),(5556,5556),(5556,5556),(5556,5559),(5559,5562),(5562,5562),(5562,5562),(5562,5564),(5564,5565),(5565,5565),(5565,5565),(5565,5566),(5565,5566),(5566,5579),(5579,5590),(5590,5593),(5593,5595),(5595,5597),(5597,5597),(5597,5599),(5599,5607),(5607,5618),(5617,5619),(5619,5624),(5624,5625),(5625,5628),(5628,5631),(5631,5631),(5631,5631),(5631,5631),(5631,5631),(5631,5631),(5631,5631),(5631,5631),(5631,5631),(5631,5631),(5631,5631),(5631,5631),(5631,5631),(5631,5631),(5631,5631),(5631,5637),(5637,5637),(5637,5640),(5640,5640),(5640,5646),(5646,5646),(5646,5646),(5646,5646),(5646,5646),(5646,5646),(5646,5646),(5646,5646),(5646,5646),(5646,5646),(5646,5646),(5646,5646),(5646,5646),(5646,5646),(5646,5646),(5646,5646),(5646,5651),(5651,5651),(5651,5651),(5651,5651),(5651,5651),(5651,5651),(5651,5651),(5651,5651),(5651,5651),(5651,5651),(5651,5651),(5651,5652),(5652,5652),(5652,5652),(5652,5661),(5661,5675),(5675,5686),(5686,5695),(5695,5704),(5704,5704),(5704,5707),(5706,5718),(5718,5719),(5718,5721),(5720,5730),(5729,5763),(5762,5764),(5764,5777),(5777,5778),(5778,5784),(5784,5786),(5786,5787),(5787,5792),(5791,5792),(5792,5795),(5795,5801),(5801,5802),(5801,5804),(5804,5804),(5804,5804),(5804,5804),(5804,5804),(5804,5804),(5804,5804),(5804,5804),(5804,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5805),(5805,5806),(5806,5806),(5806,5806),(5806,5806),(5806,5806),(5806,5806),(5806,5806),(5806,5806),(5806,5806),(5806,5806),(5806,5806),(5806,5806),(5806,5806),(5806,5806),(5806,5806),(5806,5806),(5806,5806),(5806,5806),(5806,5806),(5806,5806),(5806,5806),(5806,5806),(5806,5806),(5806,5806),(5806,5806),(5806,5806),(5806,5807),(5807,5807),(5807,5807),(5807,5807),(5807,5807),(5807,5807),(5807,5807),(5807,5807),(5807,5807),(5807,5807),(5807,5807),(5807,5807),(5807,5807),(5807,5807),(5807,5807),(5807,5807),(5807,5807),(5807,5807),(5807,5807),(5807,5807),(5807,5807),(5807,5807),(5807,5807),(5807,5807),(5807,5807),(5807,5807),(5807,5807),(5807,5807),(5807,5807),(5807,5807),(5807,5807),(5807,5807),(5807,5807),(5807,5807),(5807,5807),(5807,5807),(5807,5807),(5807,5807),(5807,5807),(5807,5807),(5807,5807),(5807,5807),(5807,5807),(5807,5807),(5807,5807),(5807,5807),(5807,5807),(5807,5807),(5807,5807),(5807,5807),(5807,5807),(5807,5807),(5807,5807),(5807,5807),(5807,5807),(5807,5807),(5807,5807),(5807,5807),(5807,5807),(5807,5807),(5807,5807),(5807,5807),(5807,5807),(5807,5807),(5807,5807),(5807,5807),(5807,5807),(5807,5807),(5807,5807),(5807,5807),(5807,5807),(5807,5807),(5807,5807),(5807,5807),(5807,5807),(5807,5807),(5807,5807),(5807,5807),(5807,5807),(5807,5807),(5807,5807),(5807,5807),(5807,5807),(5807,5807),(5807,5807),(5807,5807),(5807,5807),(5807,5807),(5807,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5808),(5808,5809),(5809,5809),(5809,5809),(5809,5809),(5809,5809),(5809,5809),(5809,5809),(5809,5809),(5809,5809),(5809,5809),(5809,5809),(5809,5809),(5809,5809),(5809,5809),(5809,5809),(5809,5809),(5809,5809),(5809,5809),(5809,5809),(5809,5809),(5809,5809),(5809,5809),(5809,5809),(5809,5809),(5809,5809),(5809,5809),(5809,5809),(5809,5809),(5809,5809),(5809,5809),(5809,5810),(5810,5810),(5810,5810),(5810,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5811),(5811,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5812),(5812,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5813),(5813,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5814),(5814,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5815),(5815,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5816),(5816,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5817),(5817,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5818),(5818,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5819),(5819,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5820),(5820,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5821),(5821,5822),(5822,5825),(5825,5825),(5825,5826),(5825,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5826),(5826,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5827),(5827,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5828),(5828,5829),];
fn prop_from_u8(value: u8) -> WordBreakProperty {
match value {
1 => WordBreakProperty::ALetter,
2 => WordBreakProperty::Format,
3 => WordBreakProperty::Katakana,
4 => WordBreakProperty::MidLetter,
5 => WordBreakProperty::MidNum,
6 => WordBreakProperty::Numeric,
7 => WordBreakProperty::ExtendNumLet,
8 => WordBreakProperty::CR,
9 => WordBreakProperty::Extend,
10 => WordBreakProperty::LF,
11 => WordBreakProperty::MidNumLet,
12 => WordBreakProperty::Newline,
13 => WordBreakProperty::RegionalIndicator,
14 => WordBreakProperty::HebrewLetter,
15 => WordBreakProperty::SingleQuote,
16 => WordBreakProperty::DoubleQuote,
17 => WordBreakProperty::ZWJ,
18 => WordBreakProperty::WSegSpace,
_ => WordBreakProperty::Other,
}
}
fn corpus_lookup(c: char) -> (WordBreakProperty, bool, bool) {
let cp = c as u32;
if cp < 128 { return (ASCII_WORD_BREAK_PROP[cp as usize], false, false); }
let bucket = (cp >> BUCKET_SHIFT) as usize;
let (lo0, hi0) = BUCKETS[bucket];
let mut lo = lo0 as usize;
let mut hi = hi0 as usize;
while lo < hi {
let mid = (lo + hi) >> 1;
let r = RANGES[mid];
if cp < r.0 {
hi = mid;
} else if cp > r.1 {
lo = mid + 1;
} else {
let tag = r.2;
return (prop_from_u8(tag & 31), tag & 32 != 0, tag & 64 != 0);
}
}
(WordBreakProperty::Other, false, false)
}
#[inline]
pub(crate) fn is_word_like_strict(c: char) -> bool { corpus_lookup(c).1 }
#[inline(never)]
pub(crate) fn lookup_word_break_property_from_dictionary(c: char) -> WordBreakProperty { corpus_lookup(c).0 }
}
pub(crate) mod transitions {
use crate::Action;
use super::properties::WordBreakProperty;
// State values for the word break state machine. These are
// an implementation detail of UAX#29, not documented in the spec.
state_enum! {
StartOfText, Any, CR, ALetter, Numeric, HLetter, Katakana,
ExtendNumLet, WSegSpace, AHLetterMid, Newline, RIOdd, NumericMid, HLetterDQ, HLetterSQ,
}
impl State {
/// Returns true if this state represents a deferred break, meaning that whether we break or not depends on the next character.
pub const fn is_deferred(self) -> bool {
match self {
State::AHLetterMid | State::NumericMid | State::HLetterDQ => true,
State::StartOfText
| State::Any
| State::CR
| State::ALetter
| State::Numeric
| State::HLetter
| State::Katakana
| State::ExtendNumLet
| State::WSegSpace
| State::RIOdd
| State::Newline
| State::HLetterSQ => false,
}
}
}
/// A transition in the word break state machine, which consists of a new state and an action to take.
///
/// Note: State needs to be ignored if Action is Transparent.
#[derive(Clone, Copy)]
pub(crate) struct Transition(pub(crate) State, pub(crate) Action);
/// A row is a mapping from property values to transitions.
type Row = [Transition; WordBreakProperty::NUM_VARIANTS];
/// The all-important transition table, which defines the state machine.
pub(crate) const TABLE: [Row; State::NUM_VARIANTS] = [
start_of_text_transitions(),
any_transitions(),
cr_transitions(),
aletter_transitions(),
numeric_transitions(),
hletter_transitions(),
katakana_transitions(),
extendnumlet_transitions(),
wsegspace_transitions(),
ahletter_mid_transitions(),
newline_transitions(),
ri_odd_transitions(),
numeric_mid_transitions(),
hletter_dq_transitions(),
hletter_sq_transitions(),
];
const fn default_all_break() -> Row {
let mut row = [brk(State::Any); WordBreakProperty::NUM_VARIANTS];
// Default transitions to specific states for certain common properties.
row[WordBreakProperty::ALetter as usize] = brk(State::ALetter);
row[WordBreakProperty::Numeric as usize] = brk(State::Numeric);
row[WordBreakProperty::CR as usize] = brk(State::CR);
row[WordBreakProperty::HebrewLetter as usize] = brk(State::HLetter);
row[WordBreakProperty::WSegSpace as usize] = brk(State::WSegSpace);
row[WordBreakProperty::Katakana as usize] = brk(State::Katakana);
row[WordBreakProperty::ExtendNumLet as usize] = brk(State::ExtendNumLet);
// WB4: Format and Extend characters don't affect word boundaries, so we treat them as transparent.
row[WordBreakProperty::Format as usize] = transparent();
row[WordBreakProperty::Extend as usize] = transparent();
row[WordBreakProperty::ZWJ as usize] = transparent();
row[WordBreakProperty::LF as usize] = brk(State::Newline);
row[WordBreakProperty::Newline as usize] = brk(State::Newline);
// WB15 & 16: Regional Indicators are handled specially
row[WordBreakProperty::RegionalIndicator as usize] = brk(State::RIOdd);
row
}
const fn default_all_deferred() -> Row {
let mut row = [deferred(State::Any); WordBreakProperty::NUM_VARIANTS];
row[WordBreakProperty::Format as usize] = transparent();
row[WordBreakProperty::Extend as usize] = transparent();
row[WordBreakProperty::ZWJ as usize] = transparent();
row
}
/// Override Extend/Format back to Break — used by states exempt from WB4
/// (StartOfText, CR, Newline)
const fn without_wb4(row: &mut Row) {
row[WordBreakProperty::Extend as usize] = brk(State::Any);
row[WordBreakProperty::Format as usize] = brk(State::Any);
row[WordBreakProperty::ZWJ as usize] = brk(State::Any);
}
// State::StartOfText
const fn start_of_text_transitions() -> Row {
let mut row = default_all_break();
without_wb4(&mut row);
row
}
// State::Any
const fn any_transitions() -> Row {
default_all_break()
}
// State::CR — WB3: CR × LF
const fn cr_transitions() -> Row {
let mut row = default_all_break();
row[WordBreakProperty::LF as usize] = nb(State::Newline); // WB3
without_wb4(&mut row);
row
}
// State::ALetter
const fn aletter_transitions() -> Row {
let mut row = default_all_break();
// WB5: AHLetter × AHLetter
row[WordBreakProperty::ALetter as usize] = nb(State::ALetter);
row[WordBreakProperty::HebrewLetter as usize] = nb(State::HLetter);
// WB9: ALetter × Numeric
row[WordBreakProperty::Numeric as usize] = nb(State::Numeric);
// WB6: AHLetter × (MidLetter | MidNumLetQ) AHLetter
row[WordBreakProperty::MidLetter as usize] = nb(State::AHLetterMid);
row[WordBreakProperty::MidNumLet as usize] = nb(State::AHLetterMid);
row[WordBreakProperty::SingleQuote as usize] = nb(State::AHLetterMid);
// WB13a: (AHLetter | Numeric | Katakana | ExtendNumLet) × ExtendNumLet
row[WordBreakProperty::ExtendNumLet as usize] = nb(State::ExtendNumLet);
row
}
// State::Numeric
const fn numeric_transitions() -> Row {
let mut row = default_all_break();
// WB8: Numeric × Numeric
row[WordBreakProperty::Numeric as usize] = nb(State::Numeric);
// WB10: Numeric × AHLetter
row[WordBreakProperty::HebrewLetter as usize] = nb(State::HLetter);
row[WordBreakProperty::ALetter as usize] = nb(State::ALetter);
// WB12: Numeric × (MidNum | MidNumLetQ) Numeric
row[WordBreakProperty::MidNum as usize] = nb(State::NumericMid);
row[WordBreakProperty::MidNumLet as usize] = nb(State::NumericMid);
row[WordBreakProperty::SingleQuote as usize] = nb(State::NumericMid);
// WB13a
row[WordBreakProperty::ExtendNumLet as usize] = nb(State::ExtendNumLet);
row
}
// State::HLetter (Hebrew_Letter)
const fn hletter_transitions() -> Row {
let mut row = default_all_break();
// WB5: AHLetter × AHLetter
row[WordBreakProperty::HebrewLetter as usize] = nb(State::HLetter);
row[WordBreakProperty::ALetter as usize] = nb(State::ALetter);
// WB9: Numeric × AHLetter
row[WordBreakProperty::Numeric as usize] = nb(State::Numeric);
// WB6: AHLetter × (MidLetter | MidNumLetQ) AHLetter
row[WordBreakProperty::MidLetter as usize] = nb(State::AHLetterMid);
row[WordBreakProperty::MidNumLet as usize] = nb(State::AHLetterMid);
// WB7a: Hebrew_Letter × Single_Quote
row[WordBreakProperty::SingleQuote as usize] = nb(State::HLetterSQ);
// WB7b: Hebrew_Letter × Double_Quote Hebrew_Letter
row[WordBreakProperty::DoubleQuote as usize] = nb(State::HLetterDQ);
// WB13a
row[WordBreakProperty::ExtendNumLet as usize] = nb(State::ExtendNumLet);
row
}
// State::Katakana — WB13: Katakana × Katakana
const fn katakana_transitions() -> Row {
let mut row = default_all_break();
// WB13: Katakana × Katakana
row[WordBreakProperty::Katakana as usize] = nb(State::Katakana);
// WB13a
row[WordBreakProperty::ExtendNumLet as usize] = nb(State::ExtendNumLet);
row
}
// State::ExtendNumLet — WB13a + WB13b
// ExtendNumLet is the glue: it connects to letters, numbers, katakana, and itself.
const fn extendnumlet_transitions() -> Row {
let mut row = default_all_break();
// WB13b: ExtendNumLet × (AHLetter | Numeric | Katakana)
row[WordBreakProperty::ALetter as usize] = nb(State::ALetter);
row[WordBreakProperty::HebrewLetter as usize] = nb(State::HLetter);
row[WordBreakProperty::Numeric as usize] = nb(State::Numeric);
row[WordBreakProperty::Katakana as usize] = nb(State::Katakana);
// WB13a: ExtendNumLet × ExtendNumLet
row[WordBreakProperty::ExtendNumLet as usize] = nb(State::ExtendNumLet);
row
}
// State::WSegSpace
const fn wsegspace_transitions() -> Row {
let mut row = default_all_break();
// WB3d: WSegSpace × WSegSpace
// Keep horizontal whitespace together.
row[WordBreakProperty::WSegSpace as usize] = nb(State::WSegSpace);
// WB3d is ordered before WB4 in the spec, so transparency should NOT
// apply: WSegSpace + Extend + WSegSpace must break. Override the default
// transparent entries to consume the char but leave WSegSpace state.
row[WordBreakProperty::Extend as usize] = nb(State::Any);
row[WordBreakProperty::Format as usize] = nb(State::Any);
row[WordBreakProperty::ZWJ as usize] = nb(State::Any);
row
}
// Helper state for handling WB6/WB7
// AHLetter × (MidLetter | MidNumLetQ) AHLetter
// AHLetter (MidLetter | MidNumLetQ) × AHLetter
const fn ahletter_mid_transitions() -> Row {
let mut row = default_all_deferred();
// By default, all transitions from this state are deferred break, e.g.
// we'll break before the apostrophe in "can't", unless we see a letter after it, in which case we won't break.
row[WordBreakProperty::ALetter as usize] = nb(State::ALetter);
row[WordBreakProperty::HebrewLetter as usize] = nb(State::HLetter);
row
}
// State::Newline
const fn newline_transitions() -> Row {
let mut row = default_all_break();
without_wb4(&mut row);
row
}
// Helper state for handling WB11/WB12
// Numeric × (MidNum | MidNumLetQ) Numeric
// Numeric (MidNum | MidNumLetQ) × Numeric
const fn numeric_mid_transitions() -> Row {
let mut row = default_all_deferred();
row[WordBreakProperty::Numeric as usize] = nb(State::Numeric);
row
}
// Helper state for handling WB7b/WB7c
// Hebrew_Letter × Double_Quote Hebrew_Letter
// Hebrew_Letter Double_Quote × Hebrew_Letter
const fn hletter_dq_transitions() -> Row {
let mut row = default_all_deferred();
row[WordBreakProperty::HebrewLetter as usize] = nb(State::HLetter);
row
}
// Helper state for handling WB7a plus WB7 after Hebrew_Letter × Single_Quote.
const fn hletter_sq_transitions() -> Row {
let mut row = default_all_break();
row[WordBreakProperty::ALetter as usize] = nb(State::ALetter);
row[WordBreakProperty::HebrewLetter as usize] = nb(State::HLetter);
row
}
// State::RIOdd: we track the number of preceding Regional Indicators to implement WB{15,16}
// Do not break within emoji flag sequences. That is, do not break between regional indicator (RI)
// symbols if there is an odd number of RI characters before the break point.
// WB15 sot (RI RI)* RI × RI
// WB16 [^RI] (RI RI)* RI × RI
const fn ri_odd_transitions() -> Row {
let mut row = default_all_break();
row[WordBreakProperty::RegionalIndicator as usize] = nb(State::Any);
row
}
const fn nb(s: State) -> Transition {
Transition(s, Action::NoBreak)
}
const fn brk(s: State) -> Transition {
Transition(s, Action::Break)
}
const fn deferred(s: State) -> Transition {
Transition(s, Action::DeferredBreak)
}
const fn transparent() -> Transition {
Transition(State::Any, Action::Transparent)
}
}
use crate::Action;
use self::properties::{
ASCII_WORD_BREAK_PROP, WordBreakProperty, is_word_like_strict,
lookup_word_break_property_from_dictionary,
};
use self::transitions::{State, TABLE, Transition};
/// For backwards compatibility, require caller to pass in options struct.
#[derive(Default, Clone, Copy, Debug)]
#[non_exhaustive]
pub struct Options {}
/// For a given span, extracts info from the DFA state to provide useful information upstream, e.g.
/// whether the span was "word-like", ascii, etc
#[derive(Copy, Clone, Default, Debug, Eq, PartialEq)]
pub struct TokenProperties(u8);
impl TokenProperties {
const WORD_LIKE_MASK: u8 = 0b0000_0001;
const NON_ASCII_MASK: u8 = 0b0000_0010;
pub(crate) const NON_ASCII: Self = Self(Self::NON_ASCII_MASK);
pub(crate) const WORD_LIKE: Self = Self(Self::WORD_LIKE_MASK);
// A token is "word-like" if it contains any char that is:
// - ALetter, HebrewLetter, or Numeric (this is a fast-path from our DFA WordBreakProperty lookup)
// - Ideographic or Extended_Pictographic (e.g. CJK chars, emoji)
// - Other_Number general category (⑦, ², ¼)
// - A character whose Script is something meaningful (e.g. belonging to a real writing system),
// as opposed to Script=Common/Inherited/Unknown (e.g. punctuation, symbols, emoji modifiers).
pub fn is_word_like(&self) -> bool {
self.0 & Self::WORD_LIKE_MASK != 0
}
// Stored disjunctively: a single non-ASCII char in the span sets this bit.
// `is_ascii()` returns true when the bit is unset (vacuously true for the empty span).
pub fn is_ascii(&self) -> bool {
self.0 & Self::NON_ASCII_MASK == 0
}
}
impl std::ops::BitOrAssign for TokenProperties {
#[inline]
fn bitor_assign(&mut self, rhs: Self) {
self.0 |= rhs.0;
}
}
/// A tokenizer that implements UAX #29 word boundary rules, using a deterministic finite automaton
/// (DFA) to efficiently determine word boundaries in Unicode text. Includes a number of fast-paths
/// for common cases, e.g. ASCII.
pub fn tokenize(
text: &str,
_options: Options,
mut on_breakpoint: impl FnMut(usize, TokenProperties) -> bool,
) {
if text.is_empty() {
return;
}
let bytes = text.as_bytes();
let mut state = State::StartOfText;
let mut deferred_break_pos = None;
let mut pos = 0;
// WB4 says: X (Extend | Format | ZWJ)* → X
// To avoid adding _many_ `_AfterZWJ` variant states, we'll cheat a little by keeping track
// of this condition with a bool. More specifically, we need to conditionally break based on
// whether the previous character was a ZWJ.
//
// Example:
// 'a 🛑' -> break (ALetter -> Other)
// 'a ZWJ 🛑' -> no break (WB4)
let mut last_was_zwj = false;
// Maintain properties of the current token, which are reset on each break and can be used by the caller
// to more efficiently determine what type of token was just emitted, e.g. whether it's "word-like" or ascii.
let mut token_props = TokenProperties::default();
// Properties of chars consumed while in a deferred state. Held aside from `token_props`
// because we don't yet know which token they belong to: if the deferred state resolves
// via `DeferredBreak`, these chars start the *next* token (so their contribution must
// not leak into the in-progress one); if it resolves via `NoBreak` exiting deferred,
// they fold into the current token. Tracked by `deferred_break_pos.is_some()`.
let mut deferred_props = TokenProperties::default();
while pos < text.len() {
// Fast path for ASCII, e.g. skip DFA all together when possible.
// Roughly a ~2x speedup on English Wikipedia.
if matches!(
state,
State::ALetter | State::Numeric | State::ExtendNumLet | State::HLetter
) {
let scan_start = pos;
let mut fast_acc: u8 = 0;
while pos < text.len() && bytes[pos] < 0x80 {
let info = ASCII_BYTE_INFO[bytes[pos] as usize];
if info & ASCII_WORD_CONTINUE == 0 {
break;
}
fast_acc |= info;
pos += 1;
}
if pos > scan_start {
token_props.0 |= fast_acc & !ASCII_WORD_CONTINUE;
let last = bytes[pos - 1]; // Safe because we're not in State::StartOfText.
state = match last {
b'0'..=b'9' => State::Numeric,
b'_' => State::ExtendNumLet,
_ => State::ALetter,
};
last_was_zwj = false;
if deferred_break_pos.is_none() && pos < text.len() && bytes[pos] == b'\n' {
if !on_breakpoint(pos, std::mem::take(&mut token_props)) {
return;
}
pos += 1;
state = State::Newline;
while pos < text.len() && bytes[pos] < 0x80 {
let first_info = ASCII_BYTE_INFO[bytes[pos] as usize];
if first_info & ASCII_WORD_CONTINUE == 0 {
break;
}
if !on_breakpoint(pos, std::mem::take(&mut token_props)) {
return;
}
let mut scan_acc = first_info;
let mut scan_pos = pos + 1;
while scan_pos < text.len() && bytes[scan_pos] < 0x80 {
let info = ASCII_BYTE_INFO[bytes[scan_pos] as usize];
if info & ASCII_WORD_CONTINUE == 0 {
break;
}
scan_acc |= info;
scan_pos += 1;
}
token_props.0 |= scan_acc & !ASCII_WORD_CONTINUE;
let last = bytes[scan_pos - 1];
state = match last {
b'0'..=b'9' => State::Numeric,
b'_' => State::ExtendNumLet,
_ => State::ALetter,
};
last_was_zwj = false;
pos = scan_pos;
if pos >= text.len() || bytes[pos] != b'\n' {
break;
}
if !on_breakpoint(pos, std::mem::take(&mut token_props)) {
return;
}
pos += 1;
state = State::Newline;
}
}
continue;
}
}
// Fast path for ASCII, e.g. avoid chars().next(), and lookup word property from table.
// `char_props` is this char's contribution to the enclosing token's properties; it's
// applied to `token_props` per-arm below, since `Action::Break` treats the breaking char
// as the first char of the *next* token (the contribution lands there, not in the token
// being emitted).
let b = bytes[pos];
let (c, prop, char_len, char_props) = if b < 0x80 {
(
b as char,
ASCII_WORD_BREAK_PROP[b as usize],
1usize,
TokenProperties(ASCII_BYTE_INFO[b as usize] & !ASCII_WORD_CONTINUE),
)
} else {
let c = text[pos..].chars().next().unwrap();
let prop = lookup_word_break_property_from_dictionary(c);
// Cheap path covers ALetter / HebrewLetter / Numeric. For everything else, fall back
// to the strict per-char check (ExtPict / Ideographic / Script / OtherNumber).
let mut char_props = TokenProperties::NON_ASCII;
char_props |= WORD_BREAK_CONTRIB[prop as usize];
if !char_props.is_word_like() && is_word_like_strict(c) {
char_props |= TokenProperties::WORD_LIKE;
}
(c, prop, c.len_utf8(), char_props)
};
// Each iteration, we consult the transition table to determine the next state
// and whether to emit a breakpoint.
let Transition(next_state, action) = TABLE[state as usize][prop as usize];
match action {
Action::Break => {
let boundary = pos;
pos += char_len;
if last_was_zwj {
last_was_zwj = false;
if WordBreakProperty::is_ext_pictographic(c) {
// Transparent: char joins the in-progress token instead of breaking.
token_props |= char_props;
continue;
}
}
last_was_zwj = prop == WordBreakProperty::ZWJ;
state = next_state;
if !on_breakpoint(boundary, std::mem::take(&mut token_props)) {
return;
}
// Breaking char starts the next token; apply its contribution after the take.
token_props |= char_props;
continue;
}
Action::NoBreak => {
last_was_zwj = false;
if next_state.is_deferred() {
if deferred_break_pos.is_none() {
deferred_break_pos = Some(pos);
}
deferred_props |= char_props;
} else {
if deferred_break_pos.take().is_some() {
// Word resumed: deferred chars belong to the in-progress token.
token_props |= std::mem::take(&mut deferred_props);
}
token_props |= char_props;
}
state = next_state;
pos += char_len;
}
Action::DeferredBreak => {
last_was_zwj = false;
let boundary = deferred_break_pos.take().unwrap();
state = next_state;
// Notably, we don't advance `pos` here; the current char is re-examined on the
// next iteration and will accumulate its props then — don't apply char_props here.
if !on_breakpoint(boundary, std::mem::take(&mut token_props)) {
return;
}
// Deferred chars start the next token.
token_props |= std::mem::take(&mut deferred_props);
continue;
}
Action::Transparent => {
last_was_zwj = prop == WordBreakProperty::ZWJ;
// State doesn't change, but we still consume the character.
pos += char_len;
if deferred_break_pos.is_some() {
deferred_props |= char_props;
} else {
token_props |= char_props;
}
}
}
}
// Deferred state at EOT - defer failed
if state.is_deferred() {
let breakpoint = deferred_break_pos.take().unwrap();
if !on_breakpoint(breakpoint, std::mem::take(&mut token_props)) {
return;
}
// Deferred chars become the trailing token.
token_props |= std::mem::take(&mut deferred_props);
}
// WB2: Any ÷ eot — emit final segment
_ = on_breakpoint(text.len(), token_props);
}
/// Cheap-path `TokenProperties` contribution for each `WordBreakProperty` value. Covers the
/// signals that fall out of WordBreak alone — letters and digits. Katakana is intentionally
/// **not** included: its set mixes Katakana letters (word-like) with the prolonged-sound mark
/// `ー` (Script=Common, not word-like). Those split is resolved via `is_word_like_strict`.
const WORD_BREAK_CONTRIB: [TokenProperties; WordBreakProperty::NUM_VARIANTS] = {
let mut t = [TokenProperties(0); WordBreakProperty::NUM_VARIANTS];
t[WordBreakProperty::ALetter as usize] = TokenProperties::WORD_LIKE;
t[WordBreakProperty::HebrewLetter as usize] = TokenProperties::WORD_LIKE;
t[WordBreakProperty::Numeric as usize] = TokenProperties::WORD_LIKE;
t
};
/// Per-ASCII-byte info for the fast-path scan and the single-char branch.
/// - Bit 7 (`ASCII_WORD_CONTINUE`): byte is part of a word-like run (`[a-zA-Z0-9_]`).
/// - Low bits: the byte's `TokenProperties` contribution (currently just `WORD_LIKE_MASK` for
/// `[a-zA-Z0-9]`, since underscore continues the run but isn't itself word-like).
const ASCII_WORD_CONTINUE: u8 = 0b1000_0000;
const ASCII_BYTE_INFO: [u8; 128] = {
let mut t = [0u8; 128];
let mut i = 0u8;
loop {
t[i as usize] = match i {
b'a'..=b'z' | b'A'..=b'Z' | b'0'..=b'9' => {
ASCII_WORD_CONTINUE | TokenProperties::WORD_LIKE_MASK
}
b'_' => ASCII_WORD_CONTINUE,
_ => 0,
};
if i == 127 {
break;
}
i += 1;
}
t
};
}
#[unsafe(no_mangle)]
pub unsafe extern "C" fn alyze_word_break_v1(
input: *const u8,
input_len: u64,
output: *mut AlyzeBreak,
_output_cap: u64,
) -> u64 {
if input.is_null() || output.is_null() { return 0; }
let bytes = unsafe { std::slice::from_raw_parts(input, input_len as usize) };
let text = unsafe { std::str::from_utf8_unchecked(bytes) };
let mut count = 0usize;
let mut out = output as *mut u64;
word::tokenize(text, word::Options::default(), |byte_offset, props| {
let mut flags = 0u64;
if props.is_word_like() { flags |= 1; }
if props.is_ascii() { flags |= 2; }
let record = (byte_offset as u64) | (flags << 32);
unsafe {
std::ptr::write_unaligned(out, record);
out = out.add(1);
}
count += 1;
true
});
count as u64
}
02
jobs
Systems
02 jobs
03
counters
Performance counters
31 counters
cyclesi
557,836,980Show more
branch_instructionsi
307,795,235branch_missesi
6,538,472cycle_activity.stalls_l1d_missi
26,087,526cycle_activity.stalls_l2_missi
23,694,765cycle_activity.stalls_l3_missi
19,656,644cycle_activity.stalls_totali
179,520,798dtlb_load_misses.walk_completedi
5,206exe_activity.bound_on_loadsi
58,425,851exe_activity.bound_on_storesi
28,975,479instructionsi
1,426,685,941machine_clearsi
105,604mem_inst_retired.split_loadsi
466mem_load_retired.l1_missi
342,026mem_load_retired.l2_missi
133,771mem_load_retired.l3_missi
99,434tma_backend_boundi
635,964,066tma_bad_speculationi
959,894,823tma_branch_mispredict_slotsi
962,135,777tma_frontend_boundi
537,438,801tma_memory_boundi
375,148,488tma_retiringi
1,225,680,310tma_slotsi
3,352,068,762uops_dispatched.port_0i
208,180,401uops_dispatched.port_1i
172,041,250uops_dispatched.port_2_3_10i
383,200,194uops_dispatched.port_4_9i
101,231,217uops_dispatched.port_5_11i
310,010,962uops_dispatched.port_6i
302,726,555uops_dispatched.port_7_8i
101,747,091uops_retired.msi
0
04
top down
Top-down analysis
Raptor Cove P-core
05
profile
load profile
03
counters
Performance counters
26 counters
cyclesi
580,254,392Show more
branch_instructionsi
295,987,086branch_missesi
5,561,927dtlb_load_misses.walk_completedi
10,304instructionsi
1,348,585,420mem_bound_stalls.load_dram_hiti
7,264,163mem_bound_stalls.load_l2_hiti
5,215,631mem_bound_stalls.load_llc_hiti
1,851,194mem_inst_retired.split_loadsi
508mem_load_retired.l1_missi
4,395,861mem_load_retired.l2_missi
178,484mem_load_retired.l3_missi
116,474tma_backend_boundi
327,476,064tma_backend_bound_alloc_restrictionsi
22,835,878tma_backend_bound_non_memory_scheduleri
81,166,845tma_backend_bound_registeri
5,240tma_backend_bound_reorder_bufferi
35,860,350tma_backend_bound_serializationi
53,114,299tma_bad_speculationi
776,508,150tma_bad_speculation_branch_mispredicti
775,268,608tma_bad_speculation_machine_clearsi
1,239,542tma_frontend_bandwidthi
339,676,086tma_frontend_boundi
356,395,178tma_frontend_latencyi
16,719,092tma_memory_boundi
141,776,130tma_retiringi
1,407,298,398
04
top down
Top-down analysis
Gracemont E-core
05
profile
load profile