Skip to content

Instantly share code, notes, and snippets.

@ayende

ayende/PForDecoder.cs Secret

Created Jun 6, 2021
Embed
What would you like to do?
using System;
using System.IO;
namespace ConsoleApp3
{
public ref struct PForDecoder
{
private readonly Span<byte> _input;
private int _bitPos, _maxBits;
private int _prevValue;
private readonly Span<int> _nums;
public PForDecoder(Span<byte> input, Span<int> scratch)
{
_input = input;
_bitPos = 0;
_maxBits = input.Length * 8;
_prevValue = 0;
_nums = scratch.Slice(0, 256);
}
public Span<int> TryDecode()
{
var bits = Read(2);
switch (bits)
{
case 0b00: // fixed header
bits = Read(8);
int numOfValues = (bits >> 5) switch
{
0b000 => 1,
0b001 => 32,
0b010 => 64,
0b011 => 128,
0b100 => 256,
_ => throw new ArgumentOutOfRangeException((bits >> 5) + " isn't a valid number of items for fixed header")
};
return ReadNumbers((int)(0x1F & bits),numOfValues);
case 0b01: // variable size
bits = Read(13);
return ReadNumbers((int)(0x1F & bits), (int)(bits >> 5));
case 0b10: // repeated header
bits = Read(13);
int numOfRepeatedValues = (int)(bits >> 5);
int numOfBits = (int)(0x1F & bits);
var repeatedDelta = (int)Read(numOfBits);
for (int i = 0; i < numOfRepeatedValues; i++)
{
_prevValue += repeatedDelta;
_nums[i] = _prevValue;
}
return _nums.Slice(0, numOfRepeatedValues);
default:
throw new ArgumentOutOfRangeException(bits + " isn't a valid header marker");
}
}
private Span<int> ReadNumbers(int numOfBits, int numOfValues)
{
if (numOfBits == 0)
return Span<int>.Empty;
for (int i = 0; i < numOfValues; i++)
{
var v = Read(numOfBits);
_prevValue += (int)v;
_nums[i] = _prevValue;
}
return _nums.Slice(0, numOfValues);
}
private ulong Read(int bitsToRead)
{
int end = _bitPos + bitsToRead;
if (end > _maxBits)
throw new EndOfStreamException();
ulong value = 0; ;
while (_bitPos < end)
{
value <<= 1;
ulong bit = (ulong)((_input[_bitPos >> 3] >> (7 - (_bitPos & 0x7))) & 1);
value += bit;
_bitPos++;
}
return value;
}
}
}
using System;
using System.Diagnostics;
using System.Numerics;
namespace ConsoleApp3
{
/*
* See Binary Packing (2.6) here: https://arxiv.org/pdf/1209.2137.pdf
* for the baseline idea on the format.
*
* The output represent a bit stream with format that is a sequence of header | data pairs.
* The header is defined as:
*
* * 0b00 (10 bits) - fixed header marker - followed by 3 bits value indicating the number of numbers following
* * 0b000 - 1 value
* * 0b001 - 32 values
* * 0b010 - 64 values
* * 0b011 - 128 values
* * 0b100 - 256 values
* then 5 bits value (B bits per number)
* * 0b01 (15 bits) - variable header marker - followed by 8 bits value (number of items) and 5 bits value (B bits per number)
* * 0b10 (15 bits) - repeated header marker - followed by 8 bits value (number of repetitions) and 5 bits value (B bits per number)
* * 0b11 - reserved
*/
public ref struct PForEncoder
{
public const int BufferLen = 256;
private readonly Span<byte> _output;
private int _bufPos, _bitPos;
private int _maxNumOfBits;
private readonly Span<uint> _deltasBuffer;
private int _prev;
private bool _first;
public int SizeInBytes;
public PForEncoder(Span<byte> output, Span<uint> scratchBuffer)
{
_output = output;
_bufPos = 0;
_bitPos = 0;
_maxNumOfBits = output.Length * 8;
_prev = 0;
_first = true;
SizeInBytes = -1;
_deltasBuffer = scratchBuffer.Slice(0, BufferLen);
}
public bool TryAdd(int value)
{
if (value < 0)
throw new ArgumentOutOfRangeException();
if (!_first && _prev > value)
throw new ArgumentOutOfRangeException();
if (_first)
{
_deltasBuffer[_bufPos++] = (uint)value;
_prev = value;
_first = false;
return TryFlush();
}
if (_bufPos < BufferLen)
{
var diff = value - _prev;
_prev = value;
_deltasBuffer[_bufPos++] = (uint)diff;
return true;
}
if (TryFlush() == false)
return false;
return TryAdd(value);
}
public bool TryClose()
{
var result = TryFlush() && TryPushBits(0, 10);
SizeInBytes = (_bitPos + 7) / 8;
_bitPos = int.MaxValue;
return result;
}
private bool TryFlush(Span<uint> buffer)
{
if (buffer.Length == 0)
return true;
if (buffer.Length == 1)
{
var bits = 32 - BitOperations.LeadingZeroCount(buffer[0]);
Debug.Assert(bits < 32); // we never encode 0
ulong header = 0b00_000_00000ul | (uint)bits;
return TryPushBits(header, 10) && TryPushBits(buffer[0], bits);
}
var (maxBits, identicalPrefix) = Analyze(buffer);
Debug.Assert(identicalPrefix <= 256);
if (identicalPrefix > 5) // enough to warrant a repeating header to save space
{
ulong header = 0b10_00000000_00000ul | (uint)identicalPrefix << 5 | (uint)maxBits;
if (TryPushBits(header, 15) == false ||
TryPushBits(buffer[0], maxBits) == false)
return false;
return TryFlush(buffer.Slice(identicalPrefix));
}
ulong fixedSizeMarker = buffer.Length switch
{
32 => 0b001,
64 => 0b010,
128 => 0b011,
256 => 0b100,
_ => 0
};
if (fixedSizeMarker != 0)
{
var half = buffer.Length / 2;
// now need to figure out optimal partitioning scheme
int first = MaxBits(buffer.Slice(0, half)),
second = MaxBits(buffer.Slice(half));
if (first != second) // better to output them as two segments, then
{
return TryFlush(buffer.Slice(0, half)) &&
TryFlush(buffer.Slice(half));
}
ulong header = 0b00_000_00000ul | fixedSizeMarker << 5 | (uint)maxBits;
if (TryPushBits(header, 10) == false)
return false;
return TryPushValues(buffer, maxBits);
}
else
{
ulong header = 0b01_0000_0000_00000ul | (ulong)(buffer.Length) << 5 | (uint)maxBits;
if (TryPushBits(header, 15) == false)
return false;
return TryPushValues(buffer, maxBits);
}
}
private bool TryPushValues(Span<uint> buffer, int maxBits)
{
for (int i = 0; i < buffer.Length; i++)
{
if (TryPushBits(buffer[i], maxBits) == false)
{
return false;
}
}
return true;
}
public bool TryFlush()
{
var oldPos = _bufPos;
_bufPos = 0;
return TryFlush(_deltasBuffer.Slice(0, oldPos));
}
private static int MaxBits(Span<uint> buffer)
{
uint mask = 0;
for (int i = 0; i < buffer.Length; i++)
{
mask |= buffer[i];
}
var maxBits = 32 - BitOperations.LeadingZeroCount(mask);
Debug.Assert(maxBits < 32); // we never encode 0
return maxBits;
}
private static (int MaxNumberOfBits, int IdenticalPrefixLegnth) Analyze(Span<uint> buffer)
{
uint mask = buffer[0];
int identicalPrefix = 1;
bool identical = true;
for (int i = 1; i < buffer.Length; i++)
{
mask |= buffer[i];
if (identical)
{
if (buffer[i] == buffer[0])
{
identicalPrefix++;
}
else
{
identical = false;
}
}
}
var maxBits = 32 - BitOperations.LeadingZeroCount(mask);
Debug.Assert(maxBits < 32); // we never encode 0
return (maxBits, identicalPrefix);
}
// see:
// https://github.com/facebookarchive/beringei/blob/75c3002b179d99c8709323d605e7d4b53484035c/beringei/lib/BitUtil.cpp#L17
public bool TryPushBits(ulong value, int bitsInValue)
{
if (_bitPos + bitsInValue > _maxNumOfBits)
{
return false;
}
int bitsAvailable = (_bitPos & 0x7) != 0 ? (8 - (_bitPos & 0x7)) : 0;
var bytePos = _bitPos / 8;
_bitPos += bitsInValue;
if (bitsInValue <= bitsAvailable)
{
// Everything fits inside the last byte
_output[bytePos] += (byte)(value << (bitsAvailable - bitsInValue));
return true;
}
int bitsLeft = bitsInValue;
if (bitsAvailable > 0)
{
// Fill up the last byte
_output[bytePos] += (byte)(value >> (bitsInValue - bitsAvailable));
bitsLeft -= bitsAvailable;
bytePos++;
}
while (bitsLeft >= 8)
{
// Enough bits for a dedicated byte
_output[bytePos] = (byte)((value >> (bitsLeft - 8)) & 0xFF);
bitsLeft -= 8;
bytePos++;
}
if (bitsLeft != 0)
{
// Start a new byte with the rest of the bits
_output[bytePos] += (byte)((value & ((1U << bitsLeft) - 1)) << (8 - bitsLeft));
}
return true;
}
}
}
using System;
using System.Linq;
using System.Numerics;
namespace ConsoleApp3
{
class Program
{
unsafe static void Main(string[] args)
{
var list = new int[] { 55394368, 55395082, 55395732, 55396483, 55397200, 55397901, 55398608, 55399311, 55399984, 55400678, 55401382, 55402560, 55403228, 55403972, 55404652, 55405381, 55406115, 55406337, 55406552, 55406750, 55407003, 55407263, 55407497, 55407691, 55407880, 55408031, 55408304, 55408543, 55408733, 55408973, 55409183, 55409444, 55409660, 55409887, 55410126, 55410324, 55410752, 55411034, 55411280, 55411473, 55411704, 55411962, 55412207, 55412468, 55412668, 55412862, 55413173, 55413443, 55413634, 55413909, 55414143, 55414392, 55414613, 55414889, 55415101, 55415302, 55415599, 55415853, 55416124, 55416387, 55416609, 55416859, 55417124, 55417331, 55417582, 55417740, 55417862, 55418035, 55418246, 55418414, 55418600, 55418944, 55419184, 55419380, 55419599, 55419817, 55420044, 55420335, 55420601, 55420828, 55421088, 55421335, 55421573, 55421722, 55421921, 55422189, 55422444, 55422638, 55422856, 55423078, 55423358, 55423557, 55423804, 55424063, 55424276, 55424512, 55424710, 55424975, 55425188, 55425302, 55425549, 55425706, 55425922, 55426165, 55426505, 55426745, 55427136, 55427366, 55427599, 55427812, 55428007, 55428253, 55428511, 55428799, 55428962, 55429249, 55429471, 55429702, 55429918, 55430178, 55430455, 55430775, 55430970, 55431249, 55431450, 55431733, 55431924, 55432182, 55432421, 55432655, 55432902, 55433126, 55433411, 55433583, 55433734, 55434007, 55434282, 55434515, 55434768, 55434977, 55435328, 55435559, 55435821, 55436111, 55436304, 55436537, 55436852, 55437073, 55437358, 55437596, 55437866, 55438111, 55438362, 55438602, 55438834, 55439064, 55439317, 55439553, 55439810, 55440111, 55440381, 55440633, 55440881, 55441113, 55441386, 55441602, 55441840, 55442057, 55442288, 55442502, 55442766, 55442999, 55443520, 55443819, 55444079, 55444310, 55444539, 55444802, 55445055, 55445328, 55445557, 55445786, 55445957, 55446236, 55446471, 55446727, 55446945, 55447202, 55447441, 55447709, 55447905, 55448145, 55448377, 55448628, 55448844, 55449013, 55449221, 55449473, 55449653, 55449912, 55450132, 55450388, 55450555, 55450770, 55451044, 55451272, 55451712, 55451924, 55452185, 55452400, 55452575, 55452872, 55453121, 55453368, 55453551, 55453778, 55454017, 55454320, 55454603, 55454803, 55455070, 55455282, 55455521, 55455746, 55455968, 55456204, 55456420, 55456704, 55456953, 55457186, 55457406, 55457606, 55457870, 55458078, 55458307, 55458493, 55458739, 55458984, 55459286, 55459523, 55459904, 55460054, 55460250, 55460540, 55460816, 55461067, 55461292, 55461467, 55461730, 55461921, 55462184, 55462490, 55462654, 55462871, 55463062, 55463365, 55463518, 55463790, 55463992, 55464227, 55464459, 55464664, 55464852, 55465092, 55465417, 55465666, 55465905, 55466148, 55466464, 55466655, 55466900, 55467185, 55467447, 55467680, 55468096, 55468409, 55468651, 55468922, 55469140, 55469356, 55469586, 55469800, 55470045, 55470288, 55470477, 55470724, 55470996, 55471268, 55471510, 55471801, 55472097, 55472299, 55472547, 55472854, 55473171, 55473372, 55473575, 55473787, 55473963, 55474233, 55474438, 55474649, 55474914, 55475173, 55475441, 55475683, 55476288, 55476582, 55476918, 55477058, 55477312, 55477686, 55477834, 55478011, 55478270, 55478498, 55478730, 55478967, 55479220, 55479380, 55479570, 55479791, 55479999, 55480223, 55480415, 55480717, 55480957, 55481188, 55481436, 55481688, 55481956, 55482173, 55482424, 55482668, 55482826, 55483033, 55483275, 55483417, 55483641, 55483873, 55484480, 55484724, 55484938, 55485201, 55485448, 55485714, 55485962, 55486225, 55486429, 55486716, 55486960, 55487210, 55487404, 55487567, 55487803, 55488008, 55488273, 55488524, 55488810, 55489067, 55489374, 55489561, 55489806, 55490003, 55490253, 55490568, 55490836, 55491049, 55491255, 55491549, 55491748, 55492048, 55492303, 55492672, 55492968, 55493206, 55493448, 55493673, 55493989, 55494259, 55494484, 55494622, 55494838, 55495043, 55495261, 55495446, 55495697, 55496026, 55496357, 55496605, 55496855, 55497150, 55497339, 55497561, 55497811, 55497979, 55498221, 55498482, 55498721, 55498972, 55499191, 55499467, 55499675, 55499888, 55500105, 55500377, 55500545, 55500864, 55501074, 55501333, 55501672, 55501978, 55502229, 55502382, 55502530, 55502732, 55503024, 55503292, 55503523, 55503723, 55503886, 55504097, 55504235, 55504522, 55504761, 55504995, 55505266, 55505492, 55505697, 55505965, 55506209, 55506486, 55506620, 55506904, 55507131, 55507405, 55507629, 55507902, 55508155, 55508377, 55508564, 55508782, 55509056, 55509334, 55509604, 55509820, 55510104, 55510379, 55510696, 55510942, 55511280, 55511519, 55511728, 55512003, 55512184, 55512406, 55512647, 55512940, 55513183, 55513430, 55513705, 55513958, 55514253, 55514487, 55514728, 55514888, 55515208, 55515508, 55515744, 55516036, 55516202, 55516451, 55516732, 55516977, 55402074, 55443222, 55475962, 55484180, 57671744, 57671981, 57672227, 57672526, 57672805, 57673049, 57673306, 57673503, 57673746, 57674026, 57674319, 57674497, 57674722, 57674912, 57675149, 57675435, 57675676, 57675931, 57676187, 57676368, 57676612, 57676903, 57677152, 57677407, 57677641, 57677887, 57678185, 57678387, 57678629, 57678863, 57679129, 57679325, 57679556, 57679936, 57680180, 57680455, 57680716, 57681001, 57681284, 57681453, 57681659, 57681937, 57682181, 57682526, 57682782, 57683003, 57683154, 57683381, 57683571, 57683815, 57684055, 57684310, 57684535, 57684728, 57684931, 57685140, 57685363, 57685582, 57685839, 57686084, 57686330, 57686640, 57686867, 57687085, 57687374, 57687616, 57687777, 57688128, 57688396, 57688633, 57688796, 57689098, 57689272, 57689488, 57689732, 57689978, 57690190, 57690437, 57690698, 57690929, 57691153, 57691392, 57691620, 57691834, 57692070, 57692344, 57692642, 57692926, 57693161, 57693426, 57693625, 57693876, 57694186, 57694439, 57694677, 57694886, 57695068, 57695280, 57695516, 57695751, 57695988, 57696320, 57696546, 57696810, 57697112, 57697419, 57697679, 57697959, 57698228, 57698445, 57698695, 57698949, 57699227, 57699494, 57699717, 57699996, 57700300, 57700590, 57700811, 57701026, 57701361, 57701659, 57701997, 57702259, 57702505, 57702779, 57703063, 57703296, 57703499, 57703675, 57703946, 57704512, 57704789, 57705089, 57705288, 57705523, 57705787, 57706027, 57706282, 57706574, 57706805, 57707082, 57707281, 57707559, 57707822, 57708084, 57708355, 57708614, 57708846, 57709062, 57709312, 57709522, 57709736, 57709942, 57710199, 57710499, 57710728, 57711012, 57711214, 57711465, 57711793, 57712097, 57712336, 57712704, 57712948, 57713182, 57713423, 57713637, 57713976, 57714249, 57714496, 57714740, 57714929, 57715147, 57715297, 57715535, 57715783, 57716008, 57716298, 57716548, 57716770, 57717011, 57717224, 57717493, 57717760, 57718032, 57718272, 57718430, 57718714, 57718920, 57719167, 57719434, 57719692, 57719930, 57720239, 57720500, 57720896, 57721152, 57721440, 57721699, 57721961, 57722233, 57722493, 57722719, 57722953, 57723255, 57723451, 57723741, 57724001, 57724253, 57724514, 57724717, 57724944, 57725219, 57725469, 57725729, 57725998, 57726232, 57726505, 57726757, 57726967, 57727246, 57727446, 57727720, 57728000, 57728260, 57728491, 57729088, 57729364, 57729693, 57729928, 57730204, 57730493, 57730793, 57731018, 57731278, 57731485, 57731795, 57732039, 57732257, 57732499, 57732760, 57732974, 57733179, 57733391, 57733611, 57733815, 57734010, 57734292, 57734444, 57734698, 57734920, 57735216, 57735539, 57735875, 57736112, 57736358, 57736605, 57736833, 57737280, 57737474, 57737778, 57738032, 57738288, 57738566, 57738781, 57739013, 57739224, 57739453, 57739626, 57739907, 57740123, 57740349, 57740670, 57740963, 57741147, 57741314, 57741476, 57741710, 57741941, 57742152, 57742369, 57742581, 57742809, 57743006, 57743216, 57743433, 57743694, 57743959, 57744099, 57744285, 57744513, 57744692, 57744955, 57745175, 57745472, 57745713, 57745883, 57746076, 57746307, 57746484, 57746682, 57746862, 57747067, 57747301, 57747598, 57747825, 57748082, 57748304, 57748514, 57748705, 57748895, 57749015, 57749174, 57749365, 57749569, 57749769, 57749976, 57750167, 57750347, 57750568, 57750815, 57750982, 57751184, 57751403, 57751578, 57751791, 57751913, 57752123, 57752338, 57752516, 57752658, 57752830, 57752977, 57753187, 57753369, 57753664, 57753903, 57754114, 57754392, 57754637, 57754872, 57755034, 57755306, 57755521, 57755777, 57756003, 57756209, 57756457, 57756676, 57756898, 57757138, 57757771, 57758060, 57758312, 57758549, 57758873, 57759150, 57759354, 57759632, 57759897, 57760152, 57760444, 57760660, 57760952, 57761203, 57761464, 57761856, 57762086, 57762270, 57762526, 57762770, 57763029, 57763284, 57763551, 57763791, 57764034, 57764297, 57764566, 57764808, 57765073, 57765331, 57765561, 57765873, 57766105, 57766355, 57766630, 57766893, 57767209, 57767548, 57767769, 57767981, 57768253, 57768558, 57768818, 57769111, 57769380, 57769605, 57770048, 57770351, 57770591, 57770921, 57771167, 57771383, 57771626, 57771943, 57772204, 57772476, 57772796, 57773070, 57773336, 57773636, 57773901, 57774195, 57774493, 57774750, 57775063, 57775370, 57775555, 57775832, 57776111, 57776360, 57776599, 57776864, 57777125, 57777337, 57777601, 57777846, 57778240, 57778538, 57778819, 57779123, 57779367, 57779711, 57780028, 57780315, 57780568, 57780891, 57781155, 57781413, 57781650, 57781920, 57782231, 57782481, 57782778, 57783066, 57783310, 57783602, 57783883, 57784182, 57784431, 57784686, 57784965, 57785222, 57785471, 57785749, 57786028, 57786432, 57786700, 57786951, 57787246, 57787531, 57787818, 57788081, 57788351, 57788679, 57788870, 57789177, 57789379, 57789583, 57789837, 57790127, 57790444, 57790681, 57790922, 57791200, 57791436, 57791659, 57791875, 57792164, 57792447, 57792704, 57792946, 57793106, 57793418, 57793666, 57793952, 57794226, 57794624, 57794870, 57795144, 57795364, 57795638, 57795901, 57796128, 57796374, 57796543, 57796784, 57797067, 57797312, 57797646, 57797905, 57798179, 57798382, 57798650, 57798873, 57799199, 57799403, 57799602, 57799910, 57800208, 57800450, 57800678, 57800970, 57801228, 57801420, 57801644, 57801861, 57802111, 57802348, 57802816, 57803069, 57803400, 57803659, 57803919, 57804231, 57804516, 57804747, 57804982, 57805303, 57805546, 57805815, 57806055, 57806321, 57806539, 57806775, 57806994, 57807247, 57807488, 57807678, 57807945, 57808256, 57808476, 57808743, 57809071, 57809298, 57809550, 57809811, 57810072, 57810357, 57810615, 57811008, 57811288, 57811519, 57811767, 57812015, 57812282, 57812475, 57812773, 57813062, 57813330, 57813570, 57813785, 57814102, 57814351, 57814544, 57814848, 57815094, 57815374, 57815718, 57816018, 57816275, 57816561, 57816797, 57817077, 57817348, 57817598, 57817825, 57818083, 57818374, 57818690, 57819200, 57819474, 57819700, 57820009, 57820250, 57820455, 57820681, 57820932, 57821184, 57821529, 57821844, 57822054, 57822298, 57822547, 57822854, 57823123, 57823375, 57823708, 57823949, 57824199, 57824441, 57824699, 57825001, 57825266, 57825525, 57825765, 57826102, 57826334, 57826626, 57826857, 57827392, 57827663, 57827833, 57828049, 57828219, 57828518, 57828790, 57829052, 57829319, 57829596, 57829817, 57830075, 57830367, 57830632, 57830867, 57831110, 57831355, 57831624, 57831917, 57832163, 57832408, 57832622, 57832889, 57833186, 57833450, 57833676, 57833891, 57834120, 57834379, 57834682, 57834996, 57835584, 57835828, 57836106, 57836377, 57836630, 57836880, 57837201, 57837463, 57837708, 57837957, 57838191, 57838440, 57838684, 57838948, 57839245, 57839529, 57839842, 57840066, 57840290, 57840491, 57840703, 57841058, 57841296, 57841515, 57841685, 57841940, 57842164, 57842424, 57842668, 57842930, 57843121, 57843349, 57843776, 57844052, 57844270, 57844518, 57844775, 57845044, 57845309, 57845596, 57845833, 57846082, 57846314, 57846542, 57846707, 57846944, 57847186, 57847434, 57847660, 57847889, 57848137, 57848347, 57848573, 57848802, 57849054, 57849300, 57849549, 57849804, 57850015, 57850301, 57850589, 57850826, 57851034, 57851312, 57851551, 57851968, 57852168, 57852421, 57852697, 57852951, 57853164, 57853403, 57853666, 57853885, 57854120, 57854324, 57854572, 57854840, 57854995, 57855310, 57855524, 57855823, 57856099, 57856307, 57856606, 57856852, 57857142, 57857394, 57857709, 57857971, 57858163, 57858398, 57858628, 57858822, 57859040, 57859277, 57859499, 57859748, 57860160, 57860408, 57860643, 57860983, 57861205, 57861471, 57861737, 57861967, 57862232, 57862499, 57862659, 57862857, 57863087, 57863342, 57863555, 57863815, 57864069, 57864323, 57864532, 57864815, 57865045, 57865335, 57865622, 57865852, 57866072, 57866304, 57866494, 57866738, 57867029, 57867345, 57867580, 57867843, 57868021, 57868352, 57868552, 57868885, 57869150, 57869400, 57869607, 57869869, 57870140, 57870397, 57870649, 57870916, 57871141, 57871435, 57871692, 57871982, 57872213, 57872411, 57872659, 57872878, 57873076, 57873281, 57873510, 57873690, 57873915, 57874155, 57874497, 57874709, 57874912, 57875164, 57875522, 57875793, 57876025, 57876247, 57876544, 57876782, 57876966, 57877180, 57877452, 57877708, 57878016, 57878285, 57878509, 57878750, 57878943, 57879150, 57879373, 57879645, 57879873, 57880115, 57880408, 57880652, 57880922, 57881160, 57881351, 57881587, 57881816, 57882052, 57882274, 57882487, 57882764, 57882933, 57883256, 57883569, 57883826, 57884044, 57884293, 57884736, 57884978, 57885184, 57885412, 57885636, 57885856, 57886168, 57886429, 57886625, 57886909, 57887118, 57887338, 57887650, 57887947, 57888162, 57888432, 57888681, 57888966, 57889202, 57889461, 57889683, 57890024, 57890314, 57890527, 57890773, 57891015, 57891334, 57891579, 57891799, 57892085, 57892269, 57892469, 57892928, 57893184, 57893522, 57893744, 57893912, 57894060, 57894265, 57894443, 57894661, 57894915, 57895175, 57895417, 57895646, 57895855, 57896138, 57896417, 57896613, 57896811, 57897069, 57897297, 57897458, 57897694, 57897864, 57898167, 57898406, 57898630, 57898917, 57899177, 57899430, 57899599, 57899912, 57900075, 57900316, 57900522, 57900788, 57901120, 57901345, 57901607, 57901834, 57902100, 57902385, 57902609, 57902854, 57903056, 57903306, 57903603, 57903874, 57904107, 57904382, 57904551, 57904789, 57905035, 57905285, 57905465, 57905689, 57905927, 57906152, 57906476, 57906643, 57906807, 57907068, 57907288, 57907514, 57907764, 57908021, 57908313, 57908605, 57908810, 57704199, 57728749, 57966656, 57966913, 57967196, 57967425, 57967723, 57967995, 57968322, 57968529, 57968757, 57969060, 57969352, 57969598, 57969860, 57970083, 57970377, 57970661, 57970873, 57971083, 57971251, 57971583, 57971840, 57972094, 57972347, 57972603, 57972807, 57973095, 57973318, 57973590, 57973893, 57974091, 57974330, 57974559, 57974848, 57975138, 57975365, 57975612, 57975898, 57976058, 57976272, 57976525, 57976779, 57976980, 57977146, 57977345, 57977546, 57977729, 57977957, 57978174, 57978491, 57978759, 57978950, 57979190, 57979425, 57979673, 57979930, 57980140, 57980339, 57980488, 57980684, 57980783, 57981044, 57981219, 57981434, 57981683, 57981902, 57982146, 57982299, 57982525, 57982771, 57983040, 57983247, 57983449, 57983669, 57983899, 57983992, 57984242, 57984409, 57984637, 57984771, 57985039, 57985267, 57985482, 57985649, 57985953, 57986222, 57986447, 57986593, 57986902, 57987128, 57987204, 57987481, 57987701, 57987934, 57988178, 57988483, 57988713, 57988963, 57989212, 57989417, 57989659, 57989858, 57989974, 57990162, 57990418, 57990649, 57990885, 57991232, 57991482, 57991710, 57991936, 57992123, 57992315, 57992555, 57992659, 57992910, 57993148, 57993368, 57993654, 57993982, 57994086, 57994339, 57994611, 57994857, 57995043, 57995290, 57995363, 57995582, 57995796, 57996057, 57996263, 57996537, 57996741, 57996929, 57997141, 57997357, 57997562, 57997786, 57998012, 57998231, 57998381, 57998623, 57998831, 57999424, 57999696, 57999768, 57999913, 58000086, 58000248, 58000399, 58000499, 58000734, 58000922, 58001116, 58001356, 58001561, 58001759, 58001980, 58002141, 58002323, 58002542, 58002731, 58003010, 58003283, 58003387, 58003632, 58003841, 58004067, 58004272, 58004485, 58004620, 58004838, 58005089, 58005276, 58005478, 58005710, 58005947, 58006179, 58006516, 58006774, 58006985, 58007254, 58007616, 58007891, 58008132, 58008291, 58008420, 58008584, 58008807, 58009036, 58009237, 58009456, 58009622, 58009790, 58010046, 58010264, 58010388, 58010643, 58010897, 58011154, 58011462, 58011539, 58011749, 58011975, 58012286, 58012521, 58012757, 58012963, 58013186, 58013392, 58013584, 58013863, 58014046, 58014225, 58014466, 58014599, 58014822, 58014981, 58015199, 58015425, 58015808, 58015923, 58016133, 58016385, 58016601, 58016824, 58017037, 58017308, 58017477, 58017720, 58018003, 58018226, 58018376, 58018559, 58018764, 58019028, 58019298, 58019525, 58019789, 58020033, 58020279, 58020545, 58021205, 58021498, 58021751, 58021986, 58022313, 58022592, 58022807, 58023087, 58023353, 58023608, 58024000, 58024219, 58024513, 58024764, 58025028, 58025321, 58025550, 58025734, 58025994, 58026238, 58026497, 58026754, 58027022, 58027261, 58027504, 58027765, 58028036, 58028279, 58028546, 58028806, 58029035, 58029345, 58029576, 58029826, 58030099, 58030364, 58030680, 58031019, 58031239, 58031451, 58031723, 58032192, 58032445, 58032737, 58033008, 58033232, 58033527, 58033825, 58034064, 58034391, 58034637, 58034853, 58035097, 58035414, 58035677, 58035950, 58036267, 58036541, 58036807, 58037099, 58037361, 58037662, 58037959, 58038216, 58038526, 58038836, 58039022, 58039302, 58039583, 58039822, 58040384, 58040649, 58040908, 58041122, 58041390, 58041637, 58041912, 58042211, 58042496, 58042802, 58043044, 58043387, 58043703, 58043989, 58044246, 58044569, 58044832, 58045089, 58045328, 58045598, 58045910, 58046161, 58046461, 58046747, 58046990, 58047281, 58047562, 58047857, 58048104, 58048576, 58048847, 58049097, 58049340, 58049609, 58049883, 58050152, 58050418, 58050664, 58050952, 58051229, 58051505, 58051758, 58052023, 58052343, 58052526, 58052826, 58053020, 58053230, 58053476, 58053755, 58054063, 58054297, 58054534, 58054807, 58055037, 58055267, 58055484, 58055766, 58056039, 58056292, 58056526, 58056768, 58057067, 58057305, 58057586, 58057855, 58058182, 58058423, 58058689, 58058901, 58059168, 58059424, 58059647, 58059889, 58060055, 58060293, 58060570, 58060809, 58061135, 58061392, 58061656, 58061853, 58062121, 58062337, 58062656, 58062855, 58063046, 58063345, 58063634, 58063874, 58064094, 58064380, 58064632, 58064960, 58065177, 58065391, 58065630, 58065854, 58066105, 58066365, 58066688, 58066940, 58067196, 58067505, 58067783, 58068014, 58068250, 58068568, 58068805, 58069067, 58069294, 58069551, 58069762, 58069992, 58070204, 58070452, 58070693, 58070876, 58071142, 58071451, 58071664, 58071934, 58072257, 58072476, 58072717, 58073152, 58073400, 58073681, 58073931, 58074213, 58074486, 58074713, 58074956, 58075199, 58075460, 58075650, 58075952, 58076237, 58076501, 58076734, 58076945, 58077257, 58077513, 58077712, 58078012, 58078254, 58078530, 58078868, 58079166, 58079417, 58079699, 58079927, 58080201, 58080467, 58080710, 58080941, 58081344, 58081628, 58081936, 58082200, 58082466, 58082685, 58082989, 58083222, 58083423, 58083646, 58083889, 58084138, 58084476, 58084785, 58084983, 58085223, 58085466, 58085770, 58086034, 58086274, 58086600, 58086831, 58087077, 58087311, 58087570, 58087863, 58088121, 58088372, 58088605, 58088933, 58089157, 58089536, 58089762, 58090015, 58090284, 58090448, 58090656, 58090818, 58091110, 58091374, 58091630, 58091891, 58092159, 58092369, 58092623, 58092909, 58093165, 58093401, 58093637, 58093874, 58094137, 58094428, 58094672, 58094911, 58095120, 58095380, 58095666, 58095929, 58096151, 58096363, 58096589, 58096833, 58097131, 58097728, 58098048, 58098287, 58098559, 58098825, 58099057, 58099298, 58099613, 58099868, 58100105, 58100351, 58100581, 58100823, 58101051, 58101305, 58101594, 58101865, 58102173, 58102390, 58102617, 58102821, 58103034, 58103395, 58103635, 58103856, 58104032, 58104288, 58104514, 58104777, 58105024, 58105288, 58105484, 58105920, 58106158, 58106438, 58106659, 58106909, 58107170, 58107441, 58107706, 58107995, 58108233, 58108484, 58108720, 58108951, 58109122, 58109362, 58109605, 58109856, 58110087, 58110317, 58110567, 58110779, 58111006, 58111235, 58111488, 58111736, 58111987, 58112243, 58112456, 58112744, 58113031, 58113271, 58113483, 58113761, 58114112, 58114310, 58114510, 58114766, 58115042, 58115297, 58115514, 58115754, 58116025, 58116248, 58116488, 58116697, 58116949, 58117220, 58117377, 58117694, 58117910, 58118213, 58118494, 58118705, 58119007, 58119255, 58119550, 58119805, 58120122, 58120394, 58120589, 58120833, 58121066, 58121263, 58121481, 58121721, 58121944, 58122304, 58122639, 58122890, 58123128, 58123472, 58123699, 58123969, 58124238, 58124471, 58124739, 58125013, 58125175, 58125376, 58125608, 58125866, 58126084, 58126347, 58126605, 58126862, 58127075, 58127362, 58127595, 58127889, 58128181, 58128413, 58128637, 58128875, 58129070, 58129318, 58129612, 58129930, 58130496, 58130763, 58130944, 58131203, 58131409, 58131748, 58132015, 58132266, 58132476, 58132743, 58133017, 58133277, 58133530, 58133800, 58134028, 58134325, 58134583, 58134879, 58135114, 58135316, 58135567, 58135791, 58135994, 58136204, 58136439, 58136624, 58136856, 58137102, 58137448, 58137664, 58137872, 58138132, 58138688, 58138964, 58139198, 58139426, 58139618, 58139862, 58140052, 58140268, 58140546, 58140806, 58141124, 58141399, 58141629, 58141877, 58142077, 58142287, 58142514, 58142791, 58143024, 58143271, 58143569, 58143818, 58144094, 58144337, 58144534, 58144775, 58145010, 58145252, 58145479, 58145698, 58145982, 58146158, 58146485, 58146880, 58147141, 58147363, 58147617, 58147849, 58148096, 58148310, 58148544, 58148773, 58148997, 58149313, 58149581, 58149781, 58150069, 58150283, 58150509, 58150827, 58151129, 58151349, 58151626, 58151879, 58152169, 58152411, 58152674, 58152900, 58153243, 58153537, 58153755, 58154006, 58154253, 58154577, 58155072, 58155296, 58155585, 58155774, 58155978, 58156190, 58156451, 58156797, 58157024, 58157196, 58157348, 58157556, 58157740, 58157961, 58158219, 58158484, 58158731, 58158966, 58159178, 58159464, 58159747, 58159946, 58160147, 58160410, 58160642, 58160807, 58161049, 58161223, 58161530, 58161773, 58162000, 58162290, 58162556, 58162814, 58163264, 58163581, 58163749, 58163995, 58164206, 58164476, 58164726, 58164957, 58165226, 58165455, 58165725, 58166016, 58166245, 58166494, 58166702, 58166955, 58167257, 58167535, 58167775, 58168054, 58168227, 58168468, 58168718, 58168971, 58169154, 58169379, 58169621, 58169849, 58170181, 58170351, 58170519, 58170782, 58171007, 58171456, 58171711, 58171976, 58172272, 58172568, 58172778, 58173003, 58173237, 58173495, 58173755, 58174039, 58174274, 58174578, 58174855, 58175189, 58175401, 58175634, 58175943, 58176240, 58176491, 58176759, 58176986, 58177288, 58177575, 58177791, 58178006, 58178178, 58178514, 58178775, 58179036, 58179291, 58179648, 58179856, 58180149, 58180377, 58180654, 58180966, 58181168, 58181413, 58181649, 58181839, 58182134, 58182366, 58182619, 58182911, 58183076, 58183295, 58183553, 58183812, 58184018, 58184190, 58184391, 58184596, 58184783, 58185016, 58185237, 58185558, 58185830, 58186027, 58186270, 58186512, 58186767, 58187031, 58187246, 58187450, 58187840, 58188048, 58188155, 58188423, 58188605, 58188826, 58189079, 58189308, 58189560, 58189720, 58189949, 58190207, 58190414, 58190628, 58190837, 58191063, 58191296, 58191397, 58191653, 58191827, 58192063, 58192204, 58192481, 58192722, 58192944, 58193117, 58193427, 58193703, 58193936, 58194089, 58194407, 58194640, 58194727, 58195016, 58195242, 58195481, 58196032, 58196345, 58196584, 58196841, 58197095, 58197307, 58197551, 58197758, 58197879, 58198081, 58198341, 58198578, 58198822, 58199053, 58199312, 58199549, 58199779, 58199973, 58200173, 58200422, 58200533, 58200790, 58201037, 58201262, 58201554, 58201888, 58201999, 58202255, 58202536, 58202791, 58202988, 58203243, 58203330, 58203561, 58203785, 58204224, 58204439, 58204722, 58204937, 58205134, 58205356, 58205581, 58205799, 58206033, 58206269, 58206496, 58206653, 58206906, 58207123, 58207414, 58207697, 58207782, 58207942, 58208122, 58208294, 58208455, 58208565, 58208814, 58209011, 58209212, 58209459, 58209670, 58209874, 58210105, 58210274, 58210461, 58210687, 58210881, 58211167, 58211446, 58211557, 58211809, 58212024, 58212416, 58212629, 58212848, 58212990, 58213214, 58213467, 58213662, 58213869, 58214108, 58214353, 58214592, 58214935, 58215200, 58215417, 58215697, 58215904, 58216186, 58216431, 58216590, 58216727, 58216898, 58217128, 58217361, 58217572, 58217798, 58217974, 58218149, 58218413, 58218639, 58218771, 58219034, 58219295, 58219561, 58219877, 58219964, 58220188, 58220608, 58220926, 58221168, 58221413, 58221624, 58221851, 58222063, 58222260, 58222547, 58222734, 58222918, 58223167, 58223307, 58223537, 58223703, 58223930, 58224164, 58224482, 58224606, 58224833, 58225092, 58225315, 58225545, 58225763, 58226039, 58226222, 58226468, 58226757, 58226984, 58227140, 58227327, 58227538, 58227808, 58228084, 58228317, 58228800, 58229048, 58229301, 58229570, 58230232, 58230511, 58230787, 58231031, 58231310, 58231598, 58231840, 58232123, 58232378, 58232637, 58232871, 58233112, 58233402, 58233683, 58233970, 58234258, 58234501, 58234743, 58235035, 58235308, 58235594, 58235859, 58236144, 58236414, 58236992, 58237279, 58237539, 58237824, 58238118, 58238407, 58238688, 58238948, 58239229, 58239485, 58239766, 58240054, 58240333, 58240620, 58240881, 58241140, 58241422, 58241714, 58241970, 58242261, 58242547, 58242844, 58243137, 58243427, 58243707, 58243981, 58244266, 58244558, 58245184, 58245477, 58245767, 58246055, 58246336, 58246630, 58246915, 58247196, 58247447, 58247741, 58248021, 58248310, 58248598, 58248883, 58249147, 58249432, 58249708, 58249999, 58250257, 58250530, 58250818, 58251088, 58251361, 58251653, 58251915, 58252163, 58252415, 58252691, 58252932, 58253376, 58253654, 58253925, 58254211, 58254476, 58254749, 58255026, 58255308, 58255595, 58255879, 58256168, 58256432, 58256717, 58256967, 58257255, 58257546, 58257835, 58258095, 58258385, 58258661, 58258937, 58259202, 58259475, 58259709, 58259986, 58260249, 58260531, 58260831, 58261108, 58261568, 58261842, 58262088, 58262363, 58262613, 58262889, 58263134, 58263382, 58263658, 58263943, 58264188, 58264421, 58264689, 58264960, 58265226, 58265514, 58265791, 58266064, 58266316, 58266571, 58266817, 58267049, 58267319, 58267597, 58267864, 58268098, 58268397, 58268640, 58268908, 58269186, 58269436, 58269760, 58269982, 58270214, 58270455, 58270717, 58270959, 58271216, 58271441, 58271720, 58272002, 58272244, 58272488, 58272727, 58272997, 58273229, 58273460, 58273742, 58274035, 58274323, 58274597, 58274875, 58275144, 58275365, 58275589, 58275853, 58276127, 58276402, 58276653, 58276917, 58277164, 58277414, 58277952, 58278198, 58278471, 58278750, 58279029, 58279284, 58279560, 58279839, 58280103, 58280386, 58280662, 58280898, 58281125, 58281395, 58281670, 58281904, 58282156, 58282434, 58282699, 58282964, 58283220, 58283455, 58283726, 58283953, 58284233, 58284473, 58284709, 58284976, 58285246, 58285527, 58285797, 58286144, 58286394, 58286624, 58286921, 58287189, 58287454, 58287700, 58287948, 58288224, 58288489, 58288722, 58288989, 58289237, 58289507, 58289782, 58290023, 58290302, 58290584, 58290828, 58291099, 58291367, 58291607, 58291849, 58292108, 58292392, 58292671, 58292896, 58293171, 58293433, 58293709, 58293981, 58294336, 58294582, 58294858, 58295099, 58295393, 58295618, 58295905, 58296178, 58296438, 58296664, 58296942, 58297158, 58297425, 58297702, 58297941, 58298226, 58298499, 58298724, 58298989, 58299258, 58299532, 58299814, 58300087, 58300362, 58300616, 58300861, 58301132, 58301399, 58301676, 58301915, 58302190, 58302528, 58302802, 58303039, 58303284, 58303559, 58303808, 58304091, 58304364, 58304609, 58304883, 58305159, 58305406, 58305649, 58305922, 58306184, 58306435, 58306702, 58306980, 58307243, 58307507, 58307751, 58307986, 58308262, 58308536, 58308813, 58309055, 58309299, 58309549, 58309800, 58310035, 58310281, 58310720, 58310968, 58311216, 58311488, 58311739, 58312008, 58312258, 58312523, 58312807, 58313030, 58313301, 58313573, 58313813, 58314064, 58314340, 58314641, 58314923, 58315201, 58315435, 58315712, 58315982, 58316256, 58316515, 58316790, 58317061, 58317341, 58317615, 58317870, 58318099, 58318345, 58318912, 58319162, 58319432, 58319712, 58319962, 58320212, 58320493, 58320766, 58321040, 58321319, 58321586, 58321867, 58322110, 58322386, 58322654, 58322900, 58323166, 58323423, 58323667, 58323947, 58324227, 58324505, 58324740, 58325015, 58325275, 58325551, 58325800, 58326048, 58326271, 58326517, 58326758, 58327104, 58327360, 58327649, 58327888, 58328159, 58328441, 58328716, 58328997, 58329238, 58329464, 58329739, 58330010, 58330281, 58330553, 58330809, 58331066, 58331310, 58331578, 58331858, 58332136, 58332381, 58332672, 58332920, 58333160, 58333439, 58333710, 58333956, 58334229, 58334506, 58334743, 58335296, 58335579, 58335845, 58336134, 58336434, 58336685, 58336959, 58337187, 58337438, 58337711, 58337963, 58338199, 58338474, 58338754, 58339032, 58339307, 58339585, 58339860, 58340135, 58340408, 58340654, 58340933, 58341204, 58341444, 58341696, 58341989, 58342244, 58342519, 58342767, 58343042, 58343488, 58343734, 58343983, 58344223, 58344498, 58344748, 58345021, 58345291, 58345538, 58345814, 58346081, 58346357, 58346638, 58346911, 58347153, 58347432, 58347703, 58347975, 58348249, 58348530, 58348805, 58349085, 58349354, 58349631, 58349878, 58350122, 58350350, 58350602, 58350872, 58351148, 58351680, 58351957, 58352236, 58352534, 58352770, 58353040, 58353276, 58353553, 58353825, 58354060, 58354348, 58354576, 58354853, 58355152, 58355438, 58355714, 58355989, 58356228, 58356503, 58356741, 58356985, 58357260, 58357545, 58357821, 58358070, 58358352, 58358628, 58358876, 58359111, 58359388, 58359872, 58360153, 58360397, 58360679, 58360969, 58361268, 58361549, 58361826, 58362104, 58362353, 58362633, 58362915, 58363191, 58363464, 58363735, 58364008, 58364288, 58364586, 58364809, 58365107, 58365357, 58365610, 58365885, 58366150, 58366388, 58366655, 58366919, 58367166, 58367418, 58367695, 58368064, 58368341, 58368614, 58368851, 58369096, 58369386, 58369662, 58369936, 58370169, 58370442, 58370675, 58370919, 58371192, 58371467, 58371768, 58372014, 58372249, 58372481, 58372756, 58372982, 58373211, 58373455, 58373686, 58373961, 58374204, 58374473, 58374733, 58374996, 58375270, 58375508, 58375790, 58376256, 58376544, 58376819, 58377067, 58377343, 58377618, 58377892, 58378163, 58378464, 58378741, 58378975, 58379200, 58379449, 58379711, 58379959, 58380198, 58380466, 58380717, 58380963, 58381211, 58381494, 58381765, 58382044, 58382314, 58382553, 58382788, 58383080, 58383358, 58383626, 58383892, 58384448, 58384711, 58384957, 58385234, 58385504, 58385774, 58386037, 58386275, 58386539, 58386770, 58387012, 58387286, 58387560, 58387841, 58388101, 58388380, 58388626, 58388895, 58389169, 58389452, 58389717, 58389948, 58390189, 58390483, 58390766, 58391058, 58391329, 58391603, 58391869, 58392131, 58392640, 58392915, 58393150, 58393400, 58393643, 58393902, 58394167, 58394437, 58394709, 58394938, 58395205, 58395477, 58395718, 58395992, 58396261, 58396520, 58396790, 58397061, 58397285, 58397579, 58397825, 58398073, 58398313, 58398594, 58398835, 58399101, 58399370, 58399636, 58399904, 58400171, 58400412, 58400832, 58401100, 58401346, 58401616, 58401842, 58402110, 58402341, 58402581, 58402855, 58403128, 58403358, 58403632, 58403891, 58404161, 58404433, 58404707, 58404983, 58405229, 58405456, 58405678, 58405950, 58406218, 58406476, 58406733, 58406965, 58407179, 58407399, 58407627, 58407898, 58408141, 58408412, 58408674, 58409024, 58409265, 58409527, 58409790, 58410059, 58410341, 58410621, 58410895, 58411170, 58411442, 58411663, 58411956, 58412245, 58412487, 58412724, 58412992, 58413226, 58413449, 58413731, 58414007, 58414280, 58414554, 58414823, 58415065, 58415337, 58415602, 58415870, 58416115, 58416378, 58416649, 58417216, 58417493, 58417760, 58417983, 58418253, 58418493, 58418714, 58418977, 58419217, 58419459, 58419722, 58419939, 58420214, 58420455, 58420719, 58421016, 58421307, 58421535, 58421807, 58422029, 58422288, 58422555, 58422769, 58423053, 58423300, 58423574, 58423839, 58424110, 58424377, 58424638, 58424859, 58425408, 58425671, 58425933, 58426205, 58426479, 58426745, 58426959, 58427177, 58427397, 58427667, 58427888, 58428110, 58428343, 58428558, 58428792, 58429026, 58429293, 58429556, 58429795, 58430062, 58430330, 58430556, 58430799, 58431074, 58431296, 58431539, 58431813, 58432057, 58432319, 58432590, 58432856, 58433126, 57999112, 58040062, 58244838, 58449984, 58450254, 58450519, 58450787, 58451005, 58451268, 58451542, 58451804, 58452069, 58452342, 58452637, 58452879, 58453172, 58453401, 58453642, 58453918, 58454185, 58454431, 58454664, 58454909, 58455146, 58455404, 58455666, 58455877, 58456117, 58456383, 58456613, 58456850, 58457122, 58457364, 58457629, 58458176, 58458414, 58458677, 58458949, 58459234, 58459490, 58459760, 58460035, 58460297, 58460568, 58460782, 58461050, 58461286, 58461504, 58461774, 58462002, 58462262, 58462490, 58462742, 58463007, 58463227, 58463465, 58463707, 58463973, 58464228, 58464502, 58464761, 58465032, 58465304, 58465534, 58465790, 58466062, 58466368, 58466649, 58466924, 58467188, 58467441, 58467666, 58467942, 58468180, 58468416, 58468683, 58468947, 58469166, 58469402, 58469641, 58469854, 58470072, 58470212, 58470362, 58470568, 58470792, 58471041, 58471336, 58471558, 58471804, 58472058, 58472196, 58472339, 58472513, 58472726, 58472949, 58473197, 58473411, 58473632, 58473863, 58474134, 58474560, 58474778, 58474938, 58475100, 58475299, 58475456, 58475649, 58475859, 58476081, 58476328, 58476538, 58476770, 58477014, 58477274, 58477487, 58477730, 58477956, 58478192, 58478463, 58478610, 58478776, 58478976, 58479215, 58479364, 58479525, 58479746, 58479970, 58480169, 58480389, 58480645, 58480930, 58481138, 58481345, 58481559, 58481801, 58481996, 58482212, 58482436, 58482752, 58482961, 58483187, 58483401, 58483633, 58483882, 58484159, 58484465, 58484679, 58484898, 58485125, 58485374, 58485577, 58485798, 58486002, 58486211, 58486434, 58486680, 58486952, 58487236, 58487438, 58487645, 58487862, 58488092, 58488324, 58488568, 58488840, 58489075, 58489336, 58489578, 58489854, 58490139, 58490441, 58490944, 58491184, 58491448, 58491749, 58491972, 58492228, 58492509, 58492741, 58492983, 58493188, 58493397, 58493632, 58493826, 58494056, 58494275, 58494513, 58494749, 58495000, 58495274, 58495584, 58495788, 58496016, 58496251, 58496467, 58496696, 58496925, 58497187, 58497464, 58497679, 58497910, 58498160, 58498425, 58498722, 58499136, 58499373, 58499621, 58499905, 58500116, 58500338, 58500568, 58500804, 58501076, 58501362, 58501587, 58501813, 58502033, 58502260, 58502475, 58502731, 58502958, 58503189, 58503440, 58503661, 58503919, 58504198, 58504429, 58504683, 58504945, 58505152, 58505365, 58505604, 58505833, 58506091, 58506388, 58506590, 58506800, 58507328, 58507582, 58507827, 58508109, 58508413, 58508741, 58509089, 58509312, 58509548, 58509745, 58509976, 58510187, 58510412, 58510673, 58510953, 58511168, 58511369, 58511599, 58511847, 58512068, 58512305, 58512507, 58512727, 58512933, 58513147, 58513396, 58513616, 58513831, 58514085, 58514277, 58514509, 58514717, 58514947, 58515520, 58515795, 58515946, 58516128, 58516335, 58516573, 58516840, 58517078, 58517322, 58517582, 58517854, 58518136, 58518368, 58518621, 58518891, 58519033, 58519200, 58519404, 58519643, 58519881, 58520163, 58520468, 58520703, 58520973, 58521285, 58521636, 58521873, 58522122, 58522346, 58522557, 58522784, 58523044, 58523244, 58523712, 58523948, 58524151, 58524367, 58524593, 58524828, 58525084, 58525351, 58525589, 58525796, 58526030, 58526281, 58526570, 58526874, 58527097, 58527339, 58527581, 58527841, 58528126, 58528336, 58528563, 58528821, 58529034, 58529273, 58529496, 58529729, 58529974, 58530240, 58530449, 58530663, 58530911, 58531167, 58531443, 58531904, 58532162, 58532438, 58532649, 58532864, 58533081, 58533315, 58533577, 58533852, 58534063, 58534282, 58534502, 58534717, 58534962, 58535128, 58535307, 58535518, 58535779, 58535977, 58536216, 58536418, 58536650, 58536874, 58537111, 58537353, 58537621, 58537823, 58538038, 58538287, 58538496, 58538727, 58538978, 58539186, 58539403, 58539636, 58540096, 58540323, 58540559, 58540761, 58540973, 58541214, 58541487, 58541782, 58541983, 58542194, 58542417, 58542649, 58542923, 58543112, 58543318, 58543555, 58543770, 58543989, 58544194, 58544429, 58544692, 58544880, 58545102, 58545369, 58545673, 58545822, 58545986, 58546169, 58546375, 58546582, 58546819, 58547034, 58547264, 58547521, 58547723, 58547937, 58548288, 58548558, 58548828, 58549068, 58549311, 58549511, 58549738, 58549936, 58550159, 58550366, 58550567, 58550773, 58550896, 58551087, 58551307, 58551572, 58551800, 58552059, 58552330, 58552621, 58552838, 58552998, 58553171, 58553355, 58553567, 58553812, 58554032, 58554296, 58554587, 58554769, 58554962, 58555164, 58555363, 58555598, 58555789, 58555999, 58556193, 58556480, 58556722, 58556968, 58557168, 58557382, 58557623, 58557753, 58557886, 58558033, 58558196, 58558332, 58558489, 58558666, 58558851, 58559036, 58559242, 58559400, 58559575, 58559790, 58560044, 58560317, 58560512, 58560718, 58560853, 58561006, 58561193, 58561393, 58561593, 58561809, 58562025, 58562261, 58562421, 58562606, 58562805, 58563006, 58563242, 58563517, 58563703, 58563910, 58564147, 58564355, 58564672, 58564971, 58565279, 58565428, 58565603, 58565745, 58565915, 58566154, 58566424, 58566712, 58566958, 58567180, 58567412, 58567682, 58567960, 58568275, 58568488, 58568735, 58568983, 58569199, 58569438, 58569703, 58569927, 58570167, 58570305, 58570469, 58570596, 58570750, 58570941, 58571130, 58571338, 58571559, 58571810, 58572028, 58572272, 58572470, 58572864, 58573081, 58573320, 58573593, 58573805, 58574038, 58574284, 58574562, 58574772, 58575005, 58575272, 58575569, 58575771, 58575999, 58576182, 58576369, 58576573, 58576792, 58577009, 58577246, 58577530, 58577853, 58578054, 58578250, 58578473, 58578685, 58578902, 58579167, 58579354, 58579572, 58579788, 58580014, 58580202, 58580374, 58580602, 58581056, 58581199, 58581354, 58581546, 58581774, 58581910, 58582063, 58582252, 58582466, 58582719, 58582953, 58583093, 58583257, 58583456, 58583669, 58583908, 58584115, 58584347, 58584598, 58584863, 58585061, 58585282, 58585522, 58585797, 58586001, 58586213, 58586442, 58586694, 58586855, 58587027, 58587215, 58587446, 58587663, 58587813, 58587992, 58588187, 58588382, 58588584, 58588783, 58589248, 58589490, 58589762, 58589951, 58590170, 58590392, 58590632, 58590887, 58591163, 58591375, 58591636, 58591907, 58592140, 58592404, 58592605, 58592809, 58593037, 58593229, 58593444, 58593653, 58593876, 58594130, 58594428, 58594564, 58594729, 58594979, 58595240, 58595440, 58595661, 58595896, 58596081, 58596290, 58596545, 58596811, 58597014, 58597440, 58597661, 58597887, 58598125, 58598385, 58598683, 58598993, 58599188, 58599386, 58599604, 58599712, 58599852, 58600067, 58600318, 58600589, 58600776, 58600967, 58601181, 58601434, 58601671, 58601931, 58602227, 58602531, 58602723, 58602917, 58603147, 58603414, 58603705, 58603918, 58604134, 58604344, 58604596, 58604817, 58605059, 58605279, 58605632, 58605891, 58606087, 58606290, 58606513, 58606704, 58606921, 58607120, 58607319, 58607533, 58607754, 58607964, 58608184, 58608430, 58608695, 58608905, 58609128, 58609374, 58609497, 58609636, 58609852, 58610092, 58610346, 58610536, 58610742, 58610977, 58611251, 58611535, 58611736, 58611969, 58612173, 58612383, 58612585, 58612792, 58613037, 58613239, 58613474, 58613824, 58614066, 58614336, 58614631, 58614937, 58615074, 58615215, 58615403, 58615637, 58615902, 58616209, 58616421, 58616642, 58616835, 58617042, 58617195, 58617355, 58617532, 58617746, 58618004, 58618156, 58618329, 58618552, 58618798, 58619072, 58619297, 58619474, 58619641, 58619854, 58620061, 58620281, 58620496, 58620752, 58620889, 58621053, 58621235, 58621447, 58621663, 58622016, 58622238, 58622441, 58622663, 58622903, 58623184, 58623394, 58623645, 58623863, 58624100, 58624362, 58624667, 58624849, 58625068, 58625295, 58625505, 58625734, 58625925, 58626122, 58626306, 58626450, 58626588, 58626820, 58627067, 58627325, 58627507, 58627702, 58627928, 58628167, 58628376, 58628601, 58628853, 58628990, 58629133, 58629310, 58629529, 58629763, 58630208, 58630439, 58630695, 58630974, 58631270, 58631478, 58631703, 58631934, 58632112, 58632316, 58632531, 58632734, 58632965, 58633226, 58633436, 58633662, 58633901, 58634101, 58634322, 58634530, 58634744, 58634970, 58635181, 58635405, 58635650, 58635944, 58636144, 58636348, 58636575, 58636827, 58637018, 58637227, 58637475, 58637754, 58637957, 58638400, 58638600, 58638806, 58639031, 58639263, 58639500, 58639700, 58639925, 58640159, 58640372, 58640590, 58640841, 58641030, 58641222, 58641455, 58641724, 58641958, 58642168, 58642397, 58642555, 58642710, 58642893, 58643103, 58643353, 58643635, 58643836, 58644075, 58644342, 58644643, 58644838, 58645042, 58645269, 58645499, 58645694, 58645886, 58646122, 58646592, 58646866, 58647054, 58647252, 58647448, 58647652, 58647886, 58648147, 58648365, 58648603, 58648880, 58649177, 58649309, 58649462, 58649661, 58649871, 58650079, 58650316, 58650528, 58650753, 58650943, 58651151, 58651351, 58651546, 58651746, 58651969, 58652172, 58652369, 58652560, 58652777, 58652978, 58653200, 58653434, 58653635, 58653859, 58654111, 58654398, 58654784, 58655019, 58655282, 58655430, 58655567, 58655767, 58655975, 58656214, 58656467, 58656755, 58656961, 58657167, 58657378, 58657622, 58657767, 58657952, 58658152, 58658359, 58658615, 58658807, 58659007, 58659205, 58659453, 58659706, 58659987, 58660295, 58660611, 58660807, 58661017, 58661234, 58661459, 58661605, 58661745, 58661935, 58662135, 58662324, 58662512, 58662976, 58663180, 58663395, 58663592, 58663802, 58664014, 58664236, 58664483, 58664686, 58664889, 58665145, 58665351, 58665541, 58665757, 58665966, 58666212, 58666356, 58666511, 58666707, 58666914, 58667140, 58667379, 58667591, 58667800, 58668042, 58668239, 58668460, 58668694, 58668946, 58669158, 58669395, 58669641, 58669928, 58670148, 58670374, 58670633, 58670819, 58671168, 58671377, 58671594, 58671822, 58672025, 58672238, 58672446, 58672665, 58672920, 58673083, 58673290, 58673522, 58673713, 58673905, 58674126, 58674334, 58674508, 58674677, 58674889, 58675116, 58675383, 58675592, 58675808, 58676022, 58676240, 58676481, 58676692, 58676906, 58677144, 58677356, 58677592, 58677789, 58678012, 58678260, 58678457, 58678684, 58678836, 58679015, 58679360, 58679588, 58679841, 58680101, 58680286, 58680490, 58680741, 58680953, 58681165, 58681357, 58681561, 58681773, 58681902, 58682050, 58682255, 58682412, 58682597, 58682819, 58683064, 58683266, 58683489, 58683729, 58683979, 58684216, 58684454, 58684711, 58684855, 58684994, 58685173, 58685386, 58685611, 58685832, 58686031, 58686243, 58686478, 58686678, 58686896, 58687137, 58687552, 58687714, 58687880, 58688071, 58688270, 58688514, 58688655, 58688788, 58688992, 58689223, 58689468, 58689670, 58689894, 58690140, 58690402, 58690685, 58690903, 58691129, 58691387, 58691657, 58691863, 58692092, 58692277, 58692467, 58692711, 58692967, 58693228, 58693500, 58693708, 58693924, 58694127, 58694368, 58694636, 58694915, 58695225, 58695414, 58695744, 58695958, 58696179, 58696420, 58696666, 58696865, 58697074, 58697291, 58697432, 58697583, 58697805, 58698009, 58698216, 58698417, 58698637, 58698834, 58699051, 58699282, 58699427, 58699577, 58699763, 58699976, 58700179, 58700384, 58700591, 58700817, 58701060, 58701327, 58701629, 58701852, 58702095, 58702322, 58702580, 58702881, 58703131, 58703420, 58703936, 58704138, 58704350, 58704566, 58704703, 58704867, 58705082, 58705327, 58705528, 58705730, 58705946, 58706111, 58706284, 58706480, 58706612, 58706735, 58706951, 58707180, 58707412, 58707694, 58707915, 58708147, 58708356, 58708587, 58708802, 58709009, 58709217, 58709463, 58709747, 58709963, 58710217, 58710432, 58710666, 58710869, 58711066, 58711295, 58711530, 58711797, 58712128, 58712327, 58712553, 58712810, 58712970, 58713142, 58713317, 58713520, 58713754, 58713995, 58714211, 58714457, 58714704, 58714985, 58715198, 58715434, 58715685, 58715883, 58716096, 58716333, 58716527, 58716748, 58716979, 58717219, 58717427, 58717656, 58717938, 58718118, 58718324, 58718574, 58718772, 58719003, 58719163, 58719315, 58719515, 58719724, 58719948, 58720320, 58720517, 58720719, 58720953, 58721195, 58721452, 58721649, 58721845, 58722087, 58722299, 58722509, 58722717, 58722927, 58723164, 58723378, 58723584, 58723809, 58724070, 58724277, 58724508, 58724782, 58725003, 58725251, 58725404, 58725572, 58725767, 58725980, 58726200, 58726402, 58726611, 58726826, 58727052, 58727300, 58727567, 58727777, 58727997, 58728225, 58728512, 58728731, 58728972, 58729213, 58729409, 58729611, 58729839, 58730029, 58730233, 58730458, 58730696, 58730939, 58731136, 58731338, 58731538, 58731748, 58731892, 58732059, 58732268, 58732497, 58732733, 58733005, 58733291, 58733504, 58733713, 58733963, 58734249, 58734551, 58734761, 58734991, 58735229, 58735423, 58735626, 58735841, 58736055, 58736271, 58736704, 58736988, 58737320, 58737654, 58737800, 58737956, 58738126, 58738335, 58738555, 58738757, 58738914, 58739074, 58739260, 58739454, 58739682, 58739915, 58740183, 58740401, 58740631, 58740777, 58740952, 58741132, 58741371, 58741625, 58741901, 58742031, 58742169, 58742375, 58742593, 58742851, 58743084, 58743334, 58743600, 58743834, 58744073, 58744272, 58744460, 58744896, 58745097, 58745320, 58745493, 58745681, 58745890, 58746103, 58746354, 58746503, 58746677, 58746886, 58747113, 58747273, 58747446, 58747643, 58747872, 58748140, 58748342, 58748536, 58748760, 58748989, 58749265, 58749472, 58749705, 58749972, 58750174, 58750382, 58750598, 58750823, 58751003, 58751231, 58751499, 58751707, 58751911, 58752130, 58752284, 58752441, 58752615, 58753088, 58753320, 58753519, 58753743, 58753937, 58754117, 58754327, 58754551, 58754792, 58754974, 58755181, 58755424, 58755660, 58755923, 58756210, 58756501, 58756748, 58757024, 58757324, 58757532, 58757747, 58757996, 58758211, 58758419, 58758629, 58758825, 58759041, 58759255, 58759475, 58759718, 58760010, 58760220, 58760455, 58760670, 58760909, 58761280, 58761481, 58761677, 58761875, 58762079, 58762287, 58762518, 58762768, 58763048, 58763281, 58763428, 58763569, 58763734, 58763973, 58764188, 58764383, 58764602, 58764856, 58765111, 58765321, 58765537, 58765761, 58766022, 58766209, 58766395, 58766616, 58766861, 58767009, 58767178, 58767366, 58767593, 58767850, 58768136, 58768325, 58768532, 58768783, 58769001, 58769472, 58769762, 58770063, 58770262, 58770492, 58770685, 58770895, 58771113, 58771325, 58771579, 58771853, 58772156, 58772368, 58772576, 58772800, 58773057, 58773198, 58773377, 58773565, 58773770, 58773983, 58774211, 58774440, 58774656, 58774880, 58775145, 58775438, 58775647, 58775864, 58775990, 58776140, 58776299, 58776495, 58776704, 58776921, 58777179, 58777335, 58777664, 58777890, 58778101, 58778323, 58778555, 58778757, 58779006, 58779270, 58779538, 58779814, 58780009, 58780199, 58780429, 58780672, 58780806, 58780934, 58781130, 58781346, 58781484, 58781632, 58781786, 58781908, 58782042, 58782227, 58782438, 58782578, 58782730, 58782901, 58783102, 58783294, 58783488, 58783678, 58783866, 58784065, 58784288, 58784482, 58784714, 58784971, 58785171, 58785301, 58785444, 58785856, 58786068, 58786288, 58786478, 58786660, 58786875, 58787115, 58787367, 58787586, 58787815, 58788039, 58788268, 58788469, 58788678, 58788921, 58789183, 58789380, 58789604, 58789801, 58790013, 58790217, 58790449, 58790700, 58790935, 58791168, 58791360, 58791577, 58791717, 58791870, 58792021, 58792195, 58792393, 58792617, 58792818, 58793014, 58793218, 58793418, 58793626, 58794048, 58794245, 58794446, 58794679, 58794870, 58795069, 58795284, 58795509, 58795758, 58796021, 58796205, 58796420, 58796680, 58796876, 58797081, 58797298, 58797506, 58797746, 58797953, 58798192, 58798458, 58798653, 58798874, 58799112, 58799267, 58799433, 58799632, 58799839, 58800096, 58800361, 58800655, 58800823, 58801009, 58801224, 58801423, 58801635, 58801829, 58802240, 58802468, 58802732, 58802885, 58803098, 58803316, 58803536, 58803781, 58804059, 58804346, 58804555, 58804774, 58804985, 58805198, 58805395, 58805609, 58805818, 58805991, 58806170, 58806381, 58806619, 58806895, 58807202, 58807318, 58807440, 58807651, 58807887, 58808073, 58808290, 58808488, 58808690, 58808897, 58809126, 58809339, 58809561, 58809776, 58810001, 58810432, 58810672, 58810910, 58811176, 58811398, 58811626, 58811900, 58812191, 58812382, 58812605, 58812856, 58813121, 58813318, 58813522, 58813757, 58813960, 58814188, 58814401, 58814636, 58814781, 58814951, 58815153, 58815360, 58815592, 58815780, 58815993, 58816230, 58816491, 58816731, 58816974, 58817239, 58817460, 58817692, 58817946, 58818215, 58818624, 58818852, 58819114, 58819405, 58819602, 58819826, 58820075, 58820337, 58820503, 58820697, 58820900, 58821124, 58821365, 58821641, 58821946, 58822181, 58822424, 58822695, 58822849, 58823034, 58823256, 58823503, 58823764, 58824035, 58824242, 58824475, 58824683, 58824918, 58825126, 58825355, 58825593, 58825794, 58826028, 58826293, 58826816, 58827015, 58827220, 58827423, 58827610, 58827753, 58827913, 58828110, 58828315, 58828547, 58828828, 58829034, 58829235, 58829443, 58829680, 58829941, 58830124, 58830329, 58830543, 58830728, 58830939, 58831166, 58831336, 58831545, 58831748, 58831956, 58832180, 58832435, 58832700, 58832895, 58833102, 58833243, 58833410, 58833653, 58833923, 58834140, 58834371, 58834571, 58835008, 58835245, 58835430, 58835662, 58835916, 58836197, 58836400, 58836622, 58836857, 58837103, 58837306, 58837500, 58837722, 58837954, 58838201, 58838392, 58838577, 58838786, 58839035, 58839235, 58839440, 58839631, 58839848, 58840088, 58840342, 58840537, 58840742, 58840921, 58841111, 58841310, 58841522, 58841770, 58842047, 58842170, 58842315, 58842479, 58842660, 58842792, 58843200, 58843397, 58843572, 58843768, 58843999, 58844269, 58844480, 58844699, 58844921, 58845179, 58845308, 58845427, 58845587, 58845803, 58845998, 58846198, 58846394, 58846621, 58846800, 58846987, 58847198, 58847409, 58847620, 58847816, 58848013, 58848225, 58848455, 58848716, 58848856, 58849019, 58849200, 58849331, 58849473, 58849641, 58849827, 58850046, 58850274, 58850461, 58850689, 58850888, 58851085, 58851187, 58851392, 58851466, 58851579, 58851685, 58851797, 58851949, 58852123, 58852343, 58852577, 58852744, 58852956, 58853137, 58853312, 58853492, 58853684, 58853884, 58854091, 58854294, 58854534, 58854796, 58854995, 58855207, 58855439, 58855645, 58855855, 58856091, 58856344, 58856637, 58856821, 58857023, 58857238, 58857479, 58857687, 58857900, 58858138, 58858348, 58858570, 58858705, 58858846, 58859074, 58859584, 58859874, 58860120, 58860321, 58860542, 58860670, 58860800, 58860988, 58861203, 58861457, 58861628, 58861799, 58861956, 58862055, 58862117, 58862330, 58862556, 58862817, 58863077, 58863266, 58863453, 58863677, 58863880, 58864113, 58864312, 58864505, 58864737, 58864946, 58865187, 58865440, 58865721, 58865908, 58866118, 58866315, 58866509, 58866714, 58866934, 58867149, 58867392, 58867776, 58867936, 58868107, 58868290, 58868477, 58868671, 58868854, 58869052, 58869268, 58869473, 58869703, 58869921, 58870165, 58870358, 58870540, 58870657, 58870770, 58870891, 58870975, 58871137, 58871324, 58871527, 58871746, 58871873, 58872027, 58872215, 58872398, 58872581, 58872767, 58872963, 58873179, 58873388, 58873594, 58873796, 58874025, 58874172, 58874329, 58874495, 58874668, 58874894, 58875090, 58875303, 58875518, 58875968, 58876188, 58876420, 58876661, 58876895, 58877136, 58877397, 58877665, 58877751, 58877943, 58878157, 58878396, 58878538, 58878710, 58878903, 58879133, 58879376, 58879614, 58879791, 58879912, 58880032, 58880231, 58880458, 58880654, 58880844, 58881066, 58881324, 58881610, 58881816, 58882008, 58882215, 58882457, 58882644, 58882861, 58883112, 58883372, 58883589, 58883824, 58884160, 58884298, 58884450, 58884644, 58884827, 58885016, 58885191, 58885394, 58885604, 58885838, 58886077, 58886290, 58886413, 58886528, 58886657, 58886777, 58886921, 58887073, 58887270, 58887468, 58887693, 58887947, 58888237, 58888358, 58888476, 58888607, 58888766, 58888938, 58889121, 58889181, 58889323, 58889446, 58889575, 58889720, 58889883, 58890026, 58890173, 58890332, 58890534, 58890742, 58890958, 58891178, 58891408, 58891663, 58891946, 58892352, 58892551, 58892754, 58892942, 58893126, 58893344, 58893579, 58893835, 58893980, 58894130, 58894313, 58894523, 58894725, 58894931, 58895183, 58895381, 58895498, 58895630, 58895839, 58896028, 58896235, 58896426, 58896629, 58896839, 58897047, 58897233, 58897452, 58897710, 58897971, 58898167, 58898363, 58898589, 58898807, 58899034, 58899276, 58899392, 58899522, 58899677, 58899846, 58899982, 58900131, 58900544, 58900733, 58900919, 58901139, 58901364, 58901583, 58901826, 58902028, 58902264, 58902470, 58902689, 58902875, 58903063, 58903238, 58903362, 58903482, 58903567, 58903753, 58903948, 58904134, 58904305, 58904487, 58904698, 58904912, 58905128, 58905352, 58905587, 58905784, 58905985, 58906216, 58906466, 58906696, 58906908, 58907151, 58907377, 58907604, 58907750, 58907917, 58908104, 58908280, 58908456, 58908736, 58908935, 58909154, 58909344, 58909545, 58909758, 58910002, 58910266, 58910546, 58910693, 58910865, 58911060, 58911250, 58911450, 58911679, 58911950, 58912230, 58912421, 58912626, 58912783, 58912908, 58913009, 58913076, 58913265, 58913479, 58913694, 58913922, 58914068, 58914246, 58914446, 58914679, 58914826, 58914994, 58915171, 58915365, 58915560, 58915765, 58915992, 58916260, 58916465, 58916928, 58917137, 58917367, 58917631, 58917843, 58918074, 58918321, 58918606, 58918793, 58919005, 58919187, 58919406, 58919626, 58919847, 58920072, 58920314, 58920584, 58920880, 58921073, 58921283, 58921512, 58921717, 58921963, 58922158, 58922343, 58922495, 58922653, 58922846, 58923051, 58923280, 58923476, 58923708, 58923829, 58924023, 58924223, 58924356, 58924552, 58924679, 58924839, 58925120, 58925301, 58925493, 58925687, 58925905, 58926032, 58926188, 58926357, 58926567, 58926757, 58926930, 58927115, 58927288, 58927488, 58927688, 58927935, 58928102, 58928270, 58928406, 58928564, 58928736, 58928912, 58929106, 58929312, 58929509, 58929744, 58929988, 58930122, 58930271, 58930441, 58930628, 58930829, 58931064, 58931337, 58931537, 58931756, 58932002, 58932186, 58932397, 58932626, 58932874, 58933312, 58933518, 58933746, 58933984, 58934234, 58934452, 58934680, 58934811, 58934950, 58935108, 58935293, 58935514, 58935747, 58935980, 58936217, 58936438, 58936685, 58936908, 58937145, 58937422, 58937614, 58937827, 58938077, 58938379, 58938696, 58939023, 58939357, 58939704, 58940060, 58940428, 58940805, 58941504, 58941888, 58942275, 58942665, 58943061, 58943457, 58943849, 58944252, 58944660, 58945074, 58945487, 58945904, 58946321 };
//var list = new int[] { 13811776, 13812695, 13813617, 13814688, 13815756, 13819968, 18268160, 18276352, 13822568, 13828160, 13830625, 13833063, 13833930, 13834799, 13836352, 13837305, 13839762, 13841440, 13844544, 13846586, 13846834, 13847104, 13847351, 13847622, 13849479, 13852736, 13854499, 13856287, 13857920, 13860928, 13863416, 13865928, 13869120, 13870858, 13872682, 13874518, 13877312, 13879990, 13882104, 13885504, 13887155, 13888816, 13890227, 13891652, 13892397, 13893696, 13895128, 13896576, 13896838, 13897111, 13898997, 13901888, 13905115, 13910080, 13911797, 13913523, 13918272, 13921158, 13921496, 13921845, 13922914, 13924008, 13924257, 13924531, 13924779, 13926464, 13928107, 13929775, 13930152, 13930552, 13930919, 18300992, 18303407, 18305425, 18307449, 18307739, 18309184, 18310415, 18311672, 18311910, 18312171, 18313795, 18315444, 18315711, 18317376, 18319039, 18320664, 18320920, 18321315, 18322465, 18325568, 18327540, 18329470, 18333760, 18336313, 18336583, 18336863, 18337529, 18338202, 18338478, 18338765, 18340022, 18341291, 18341952, 18342253, 18342699, 18343209, 18345078, 18346965, 18350144, 18352082, 18352390, 18352710, 18352964, 18353234, 18353531, 18353838, 18354846, 18355806, 18356096, 18356396, 18358336, 18359694, 18361749, 18363815, 18366528, 18368980, 18369963, 18370956, 18371937, 18372929, 18373223, 18373527, 18374720, 18375712, 18378063, 18380424, 18381419, 18382912, 18383905, 18384909, 18387334, 18391104, 18393526, 18395958, 18399296, 18401445, 18403634, 18407488, 18409649, 18411821, 18415680, 18417616, 18418026, 18418459, 18420603, 18422756, 18423872, 18424876, 18427247, 18429630, 18432064, 18434308, 18436499, 18438699, 18439258, 18440256, 18442287, 18444330, 18445322, 18448448, 18450824, 18453212, 18456640, 18458332, 18459815, 18461253, 18464832, 18467267, 18469690, 18473024, 18475585, 18478156, 18481216, 18483087, 18485263, 18489408, 18491762, 18494126, 18497600, 18499460, 18501907, 18505792, 18508220, 18510661, 18513984, 18516250, 18516546, 18516851, 18519215, 18522176, 18524821, 18527477, 18530368, 18532878, 18534749, 18536632, 18323577, 18332012, 18413743, 18446324, 18546752, 18548734, 18551192, 18554944, 18557651, 18560366, 18563136, 18565256, 18567622, 18571328, 18573505, 18575695, 18579520, 18581774, 18584494, 18587712, 18590011, 18592318, 18595904, 18599021, 18601239, 18604096, 18605463, 18606840, 18612288, 18615315, 18617474, 18620480, 18623041, 18625612, 18628672, 18630803, 18632913, 18636864, 18639429, 18642005, 18645056, 18647304, 18649539, 18653248, 18655265, 18657293, 18661440, 18663714, 18665435, 18667166, 18669632, 18671408, 18673845, 18677824, 18680068, 18682325, 18686016, 18688492, 18690259, 18692036, 18692305, 18694208, 18696526, 18698854, 18700563, 18702400, 18704422, 18706455, 18706870, 18707307, 18707600, 18707905, 18710592, 18713188, 18715586, 18718784, 18720915, 18723059, 18726976, 18728995, 18731807, 18734631, 18735168, 18735587, 18737630, 18739683, 18743360, 18745604, 18747941, 18751552, 18753468, 18755392, 18757332, 18759744, 18761700, 18763664, 18765377, 18767936, 18769751, 18771578, 18773495, 18776128, 18778081, 18780044, 18781979, 18784320, 18786269, 18788228, 18790169, 18792512, 18794432, 18796361, 18798325, 18553661, 18554051, 18554467, 18562476, 18808896, 18812191, 18817088, 18819830, 18822584, 18825280, 18827334, 18829437, 18831549, 18833472, 18835167, 18836908, 18838655, 18841664, 18843188, 18845768, 18849856, 18851944, 18854042, 18855654, 18858048, 18859604, 18861167, 18863105, 18866240, 18867965, 18869711, 18871947, 18874432, 18874723, 18875038, 18877019, 18879145, 18882624, 18884585, 18884885, 18885209, 18885458, 18885732, 18886007, 18886307, 18886560, 18886837, 18890816, 18893071, 18894298, 18895551, 18899008, 18900780, 18903476, 18907200, 18909983, 18915392, 18918148, 18923584, 18926321, 18931776, 18934696, 18939968, 18942640, 18945318, 18948160, 18950825, 18953368, 18956352, 18958897, 18961450, 18964544, 18967235, 18972736, 18975883, 18980928, 18984011, 18989120, 18992876, 18997312, 19001232, 19005504, 19009388, 19013696, 19017550, 19021888, 19024400, 19030080, 19033923, 19038272, 19042096, 19046464, 19050218, 19051960, 19054656, 19058075, 19071040, 19074313, 19079232, 19082531, 19087424, 19090557, 19095616, 19098920, 19103808, 19107085, 19112000, 19115267, 19120192, 19123363, 19128384, 19131848, 19136576, 19139807, 19144768, 19146521, 19147410, 19152960, 19156450, 19161152, 19164558, 19166310, 19169344, 19171977, 19174621, 19177536, 19179881, 19182713, 19185728, 19188095, 19190470, 19193920, 19196653, 19202112, 19204817, 19210304, 19213059, 19215490, 19218496, 19221267, 19226688, 19229481, 19234880, 19237514, 19240149, 19243072, 19245190, 19246882, 19248585, 19251264, 19253384, 19255815, 19259456, 19261598, 19263750, 19267648, 19269501, 19271890, 19275840, 19278157, 19280484, 19284032, 19285404, 19287983, 19292224, 19294563, 19296714, 19298425, 19300416, 19302729, 19305054, 19308608, 19310664, 19311021, 19311381, 19312863, 19314354, 19316800, 19318942, 19321032, 19333184, 19335863, 19338553, 19341376, 19344062, 19349568, 19352500, 19354374, 19357760, 19359599, 19361450, 19365952, 19369292, 19371627, 19374144, 19376686, 19379256, 19382336, 19385161, 19390528, 19393374, 19396008, 19398720, 19401726, 19406912, 19409596, 19412290, 19415104, 19417765, 19423296, 19426185, 19431488, 19434184, 19436788, 19439680, 19442360, 19445052, 19447872, 19450591, 19453202, 19456064, 19458277, 19460514, 19464256, 19466899, 19469555, 19472448, 19475305, 19480640, 19483300, 19485973, 19488832, 19491507, 19497024, 19499783, 19502057, 19505216, 19507918, 19510632, 19513408, 19516021, 19521600, 19524392, 19529792, 19532490, 19537984, 19540975, 19546176, 19549026, 19551628, 19554368, 19557306, 19562560, 19565521, 19568438, 19570752, 19572846, 19573160, 19573468, 19578944, 19581891, 19595328, 19598128, 19603520, 19606305, 19611712, 19614593, 19619904, 19622841, 19628096, 19630720, 19636288, 19639205, 19644480, 19647276, 19652672, 19655615, 19660864, 19663820, 19669056, 19671999, 19677248, 19680208, 19685440, 19688300, 19690400, 19693632, 19696315, 19699014, 19701824, 19703922, 19706859, 19710016, 19712841, 19718208, 19721517, 19724834, 19725189, 19726400, 19728229, 19730079, 19734592, 19736826, 19739015, 19742784, 19745513, 19750976, 19753713, 19759168, 19761918, 19764678, 19767360, 19769682, 19772191, 19775552, 19778293, 19783744, 19786501, 19789268, 19791936, 19794460, 19796800, 19800128, 19802921, 19805806, 19808320, 19810513, 19812728, 19814117, 19816512, 19818220, 19818530, 19818848, 19820566, 19822295, 19824704, 19826532, 19828261, 19830004, 19832896, 19835029, 19837117, 19841088, 19843882, 19846688, 19600903, 19857472, 19860260, 19865664, 19868547, 19871438, 19873856, 19876007, 19876288, 19876583, 19878470, 19882048, 19883920, 19885811, 19887329, 19890240, 19892016, 19893800, 19894091, 19894442, 19898432, 19900809, 19902929, 19906624, 19909950, 19912270, 19914816, 19916703, 19918789, 19923008, 19925626, 19928255, 19931200, 19933293, 19935382, 19939392, 19941483, 19943585, 19947584, 19950148, 19952781, 19955776, 19957864, 19959964, 19963968, 19966649, 19969254, 19972160, 19974243, 19976338, 19980352, 19982441, 19983936, 19985443, 19988544, 19991007, 19993040, 19996736, 19998864, 20001008, 20004928, 20007187, 20008908, 20010640, 20013120, 20015153, 20017123, 20019106, 20021312, 20023322, 20025362, 20027412, 20029504, 20031472, 20034121, 20037696, 20040456, 20043174, 20043523, 20045888, 20048254, 20050628, 20054080, 20056288, 20056619, 20056953, 20059404, 20062272, 20064683, 20067276, 20070464, 20072835, 20075136, 20078656, 20080941, 20083238, 20083563, 20083900, 20086848, 20089043, 20091217, 20095040, 20096893, 20098753, 20103232, 20106088, 20119616, 20122573, 20125125, 20127808, 20130674, 20136000, 20139101, 20144192, 20147061, 20152384, 20155302, 20160576, 20163575, 20168768, 20171767, 20176960, 20179858, 20185152, 20188219, 20193344, 20196262, 20201536, 20204639, 20209728, 20212625, 20217920, 20221091, 20226112, 20229023, 20234304, 20237206, 20242496, 20245336, 20250688, 20253610, 20258880, 20261844, 20267072, 20269994, 20275264, 20278113, 20283456, 20285976, 20288516, 20291648, 20294179, 20296695, 20299840, 20302358, 20304889, 20308032, 20310564, 20316224, 20319120, 20324416, 20327454, 20332608, 20335503, 20340800, 20343479, 20348992, 20351947, 20354472, 20357184, 20360277, 20365376, 20368569, 20133547, 20142214, 20381760, 20385221, 20389952, 20391685, 20392564, 20398144, 20401618, 20406336, 20409621, 20414528, 20417845, 20422720, 20425466, 20427568, 20430912, 20433639, 20439104, 20441972, 20447296, 20450693, 20455488, 20457590, 20459698, 20463680, 20465792, 20468495, 20471872, 20473968, 20476073, 20480064, 20482164, 20484257, 20488256, 20491087, 20496448, 20499585, 20504640, 20507850, 20512832, 20514907, 20516994, 20521024, 20523112, 20529216, 20532471, 20534802, 20537408, 20539643, 20541862, 20545600, 20548386, 20550707, 20553792, 20556059, 20558331, 20561984, 20564271, 20566581, 20570176, 20572588, 20575006, 20575330, 20575666, 20578368, 20580923, 20583113, 20586560, 20588561, 20590557, 20594752, 20596850, 20598884, 20602944, 20605058, 20607171, 20611136, 20613127, 20615111, 20619328, 20621590, 20624044, 20627520, 20629582, 20631546, 20633520, 20396028, 20526353, 20643904, 20646599, 20646908, 20647226, 20647547, 20647878, 20648196, 20648522, 20648894, 20649274, 20652096, 20655824, 20657344, 20659551, 20659859, 20660288, 20660616, 20660953, 20663595, 20665499, 20668480, 20670681, 20673303, 20676672, 20679202, 20681759, 20684864, 20687821, 20693056, 20695701, 20698424, 20701248, 20703333, 20705428, 20709440, 20712002, 20717632, 20720529, 20723134, 20725824, 20728734, 20734016, 20736653, 20742208, 20745110, 20750400, 20753015, 20755651, 20758592, 20761074, 20763825, 20766784, 20769528, 20772284, 20774976, 20777449, 20780177, 20783168, 20785936, 20788720, 20791360, 20793337, 20799552, 20803097, 20805044, 20807744, 20810832, 20813932, 20814246, 20815936, 20817763, 20819602, 20819880, 20820905, 20824128, 20826078, 20827825, 20829634, 20832320, 20834140, 20836471, 20838857, 20839299, 20840512, 20843166, 20845832, 20848704, 20851554, 20854146, 20856896, 20859415, 20861946, 20865088, 20867781, 20870049, 20873280, 20875355, 20877441, 20881472, 20884392, 20886478, 20889664, 20891755, 20893862, 20690456, 20714886, 20731670, 20739299, 20748024, 20906048, 20909068, 20914240, 20917838, 20922432, 20925030, 20930624, 20933427, 20935968, 20938816, 20940758, 20942710, 20944792, 20947008, 20948740, 20950480, 20952201, 20955200, 20956985, 20958773, 20963392, 20966204, 20971584, 20974537, 20979776, 20982761, 20987968, 20990862, 20991141, 20991431, 20991715, 20992011, 20993883, 20996160, 20998354, 21000564, 21004352, 21007047, 21009171, 21012544, 21014805, 21017079, 21020736, 21022742, 21025282, 21028928, 21030719, 21032520, 21034275, 21037120, 21038954, 21040798, 21042577, 21045312, 21048033, 21050764, 21053504, 21055285, 21057240, 21059204, 21061696, 21063382, 21063733, 21064093, 21064442, 21064801, 21065158, 21065524, 21065877, 21066237, 21069888, 21072331, 21074824, 21078080, 21080678, 21086272, 21089433, 21091752, 21094464, 21096766, 21099088, 21102656, 21104918, 21107191, 21108685, 21110848, 21112614, 21114388, 21116153, 21119040, 21120569, 21122108, 21123901, 21127232, 21129158, 21131091, 21132682, 21135424, 21136960, 21138504, 21140116, 21141742, 21143616, 21145348, 21147093, 21148847, 21151808, 21153353, 21154910, 21156475, 21157966, 20911882, 20920427, 20927820, 20961620, 20969410, 20977750, 20985644, 21019076, 21083288, 21168192, 21169669, 21171182, 21172704, 21174009, 21176384, 21177925, 21179475, 21181146, 21182825, 21184576, 21186161, 21187884, 21189615, 21190947, 21192768, 21194433, 21196107, 21197668, 21200960, 21202774, 21204598, 21209152, 21212422, 21214409, 21217344, 21219231, 21220908, 21225536, 21228527, 21233728, 21236421, 21238350, 21241920, 21243753, 21245593, 21247415, 21250112, 21252704, 21255308, 21258304, 21260223, 21262254, 21264251, 21266496, 21268356, 21270235, 21272097, 21274688, 21276549, 21278461, 21280367, 21282880, 21284755, 21286590, 21288413, 21291072, 21292980, 21294887, 21296780, 21299264, 21301137, 21303022, 21304895, 21307456, 21308894, 21310882, 21312878, 21315648, 21317071, 21318622, 21320181, 21321877, 21323840, 21325376, 21326922, 21328845, 21332032, 21333402, 21334781, 21336290, 21337809, 21340224, 21341620, 21343129, 21344646, 21346142, 21348416, 21349991, 21351573, 21353100, 21354638, 21356608, 21358287, 21359884, 21361488, 21363100, 21364800, 21366379, 21367968, 21369535, 21371113, 21372992, 21374290, 21376076, 21377869, 21379356, 21381184, 21382628, 21384079, 21386025, 21389376, 21391188, 21393014, 21394812, 21397568, 21399252, 21400949, 21401625, 21402358, 21402696, 21403045, 21405760, 21407427, 21413952, 21417504, 21419341, 21430336, 21434010, 21438528, 21441568, 21444620, 21446720, 21448665, 21450361, 21452066, 21454912, 21456764, 21458631, 21460510, 21463104, 21464920, 21466712, 21468513, 21471296, 21473171, 21475287, 21479488, 21481568, 21483704, 21487680, 21489914, 21491813, 21493723, 21495872, 21497735, 21499743, 21501811, 21504064, 21506256, 21508212, 21510180, 21512256, 21514186, 21515509, 21516847, 21517172, 21517510, 21520448, 21522733, 21525164, 21528640, 21530647, 21532974, 21684224, 21692416, 21536832, 21539033, 21541251, 21545024, 21547687, 21548012, 21548345, 21549987, 21551641, 21553216, 21554505, 21557471, 21561408, 21564978, 21569600, 21572557, 21577792, 21580520, 21585984, 21589141, 21594176, 21597102, 21602368, 21605600, 21700608, 21708800, 21610560, 21614339, 21618752, 21620775, 21622806, 21626944, 21629163, 21631282, 21635136, 21637956, 21643328, 21645885, 21648455, 21651520, 21654389, 21659712, 21662393, 21664942, 21667904, 21670587, 21673284, 21676096, 21677948, 21679937, 21583258, 21600040, 21640788, 21657061, 21681942, 21477418, 21575522, 21725248, 21727312, 21729361, 21733440, 21735489, 21737550, 21741632, 21743693, 21745740, 21749824, 21753550, 21758016, 21762012, 21766208, 21768978, 21774400, 21777895, 21782592, 21784271, 21785958, 21787977, 21790784, 21794752, 21798976, 21801421, 21803877, 21807168, 21809570, 21812164, 21815360, 21817206, 21819071, 21820897, 21823552, 21825423, 21827312, 21828973, 21831744, 21833265, 21834798, 21836465, 21839936, 21841955, 21843992, 21845963, 21848128, 21850300, 21852481, 21856320, 21858460, 21861119, 21864512, 21867178, 21869857, 21872704, 21874794, 21877799, 21880896, 21882983, 21885079, 21889088, 21892139, 21897280, 21900251, 21905472, 21908448, 21913664, 21916305, 21921856, 21924699, 21927137, 21930048, 21933835, 21938240, 21942286, 21946432, 21948447, 21950467, 21951870, 21954624, 21956988, 21959364, 21962816, 21965146, 21967271, 21971008, 21973826, 21919137, 21987392, 21989996, 21992166, 21995584, 21998070, 22000567, 22003776, 22005401, 22008148, 22011968, 22014767, 22020160, 22022887, 22025623, 22028352, 22030983, 22036544, 22039779, 22044736, 22047756, 22049364, 22050960, 22052928, 22054427, 22056144, 22057939, 22061120, 22062493, 22064078, 22065673, 22069312, 22071236, 22072606, 22073987, 22077504, 22241280, 22249472, 22079431, 22081519, 22085696, 22088044, 22090402, 22092049, 22093888, 22094992, 22096074, 22098527, 22102080, 22104876, 22106950, 22110272, 22112878, 22118464, 22120805, 22123359, 22126656, 22129112, 22131578, 22133166, 22134848, 22137640, 22140444, 22143040, 22145513, 22147461, 22151232, 22153295, 22155369, 22159424, 22162209, 22167616, 22170457, 22172906, 22175808, 22178559, 22181320, 22184000, 22186379, 22188676, 22190949, 22191229, 22191522, 22191797, 22192192, 22194945, 22197712, 22200384, 22202339, 22203824, 22205318, 22206808, 22208576, 22210402, 22212236, 22214277, 22216768, 22219166, 22221577, 22224960, 22226910, 22228742, 22230587, 22233152, 22234888, 22236927, 22238983, 22239349, 22239726, 22240094, 22240473, 22240848, 22017575, 22165038, 22034207, 22042784, 22116169, 22265920, 22268028, 22269811, 22271604, 22274112, 22275887, 22277681, 22279487, 22282304, 22284384, 22286442, 22288514, 22290496, 22292188, 22293873, 22295571, 22298688, 22300484, 22302667, 22306880, 22310087, 22313248, 22313539, 22315072, 22316939, 22318817, 22320683, 22323264, 22326509, 22331456, 22334708, 22339648, 22342480, 22345320, 22347840, 22349794, 22352607, 22356032, 22358255, 22519808, 22528000, 22360491, 22361710, 22364224, 22366337, 22368461, 22372416, 22375732, 22380608, 22383946, 22384396, 22384856, 22386265, 22388800, 22392229, 22396992, 22399433, 22402335, 22405184, 22407248, 22407600, 22407963, 22408329, 22408703, 22409064, 22409435, 22409801, 22410176, 22410542, 22410920, 22411279, 22411647, 22412011, 22413376, 22414932, 22416495, 22418055, 22419625, 22420311, 22421568, 22422692, 22423826, 22429760, 22433569, 22437952, 22441819, 22442703, 22443594, 22446144, 22448036, 22454336, 22457876, 22462528, 22465495, 22468027, 22536192, 22544384, 22470720, 22472244, 22473780, 22475895, 22478912, 22480636, 22482368, 22487104, 22489608, 22495296, 22498219, 22503488, 22507012, 22511680, 22514543, 22517156, 22304815, 22427625, 22451566, 22492522, 22560832, 22563374, 22565932, 22569024, 22571614, 22573538, 22577216, 22580115, 22585408, 22589434, 22593600, 22597653, 22601792, 22603792, 22605804, 22609984, 22613012, 22615102, 22618176, 22620699, 22623231, 22626368, 22629037, 22634560, 22637784, 22640038, 22642752, 22645503, 22648263, 22650944, 22653285, 22655533, 22659136, 22661482, 22663838, 22667328, 22669782, 22672526, 22675520, 22676734, 22677961, 22680090, 22682229, 22682684, 22683712, 22684221, 22684739, 22687212, 22691904, 22694400, 22696904, 22700096, 22702297, 22703475, 22704663, 22708288, 22710113, 22711292, 22712482, 22713409, 22716480, 22719397, 22724672, 22727432, 22732864, 22735231, 22737609, 22741056, 22744158, 22749248, 22752146, 22757440, 22760698, 22763026, 22765632, 22766297, 22766969, 22767547, 22768135, 22770530, 22773824, 22775994, 22778173, 22782016, 22784915, 22787393, 22790208, 22792660, 22795122, 22795820, 22796529, 22798400, 22800005, 22802092, 22804191, 22806592, 22808538, 22810574, 22583023, 22632253, 22746689, 22754704, 22689693, 22822976, 22825129, 22827205, 22831168, 22833283, 22835409, 22839360, 22841488, 22843500, 22847552, 22849624, 22851711, 22855744, 22857911, 22859260, 22860621, 22863936, 22865639, 22868088, 22872128, 22874581, 22876528, 22880320, 22882262, 22884390, 22886527, 22888512, 22890238, 22892320, 22894414, 22896704, 22898072, 22901053, 22904896, 22907810, 22913088, 22915608, 22918140, 22921280, 22923813, 22926333, 22929472, 22931993, 22937664, 22940784, 22945856, 22948741, 22954048, 22956930, 22962240, 22965294, 22970432, 22973188, 22978624, 22981329, 22986816, 22989738, 22995008, 22997928, 23003200, 23006121, 23011392, 23014313, 23019584, 23022033, 23024494, 23027776, 23030431, 23035968, 23038947, 23041229, 23044160, 23048170, 23052352, 23055294, 23060544, 23063265, 23068736, 23071742, 22910742, 22934528, 22984045, 23085120, 23087823, 23093312, 23096211, 23101504, 23104342, 23109696, 23112439, 23117888, 23120683, 23126080, 23129055, 23134272, 23137374, 23142464, 23145755, 23150656, 23153972, 23155704, 23158848, 23162161, 23167040, 23170143, 23175232, 23178332, 23183424, 23185778, 23188142, 23191616, 23193963, 23196320, 23198735, 23199061, 23199397, 23199808, 23200482, 23202880, 23205263, 23208000, 23210393, 23212430, 23216192, 23218963, 23221348, 23224384, 23226504, 23229086, 23232576, 23234716, 23236917, 23240768, 23243393, 23246115, 23248960, 23252032, 23257152, 23260200, 23265344, 23267892, 23273536, 23276857, 23281728, 23284463, 23287208, 23289920, 23292122, 23294105, 23298112, 23300267, 23302436, 23306304, 23308535, 23310501, 23312478, 23314496, 23316432, 23317708, 23318994, 23320290, 23322688, 23324639, 23326596, 23330880, 23333539, 23335516, 23090712, 23099037, 23107070, 23115223, 23123649, 23132147, 23140653, 23156582, 23173293, 23181480, 23214521, 23255052, 23270387, 23347264, 23349979, 23352666, 23355456, 23358402, 23361383, 23361861, 23363648, 23365192, 23367153, 23368972, 23371840, 23374061, 23377276, 23380032, 23383859, 23388224, 23391623, 23393654, 23396416, 23397945, 23400502, 23404608, 23407298, 23412800, 23416765, 23418288, 23420992, 23421477, 23423800, 23424287, 23426656, 23429184, 23430834, 23432405, 23437376, 23439577, 23441789, 23443581, 23445568, 23447314, 23601152, 23609344, 23617536, 23625728, 23449073, 23450779, 23453760, 23457110, 23633920, 23642112, 23650304, 23658496, 23461952, 23463908, 23465874, 23467506, 23470144, 23471787, 23473443, 23478336, 23482046, 23486528, 23666688, 23674880, 23683072, 23691264, 23699456, 23707648, 23489515, 23491290, 23494720, 23498731, 23715840, 23724032, 23732224, 23740416, 23748608, 23756800, 23502912, 23505738, 23511104, 23513970, 23519296, 23522567, 23527488, 23530632, 23535680, 23539716, 23543872, 23545551, 23547242, 23547563, 23547893, 23552064, 23554386, 23557198, 23560256, 23561099, 23561956, 23564005, 23568448, 23571123, 23573808, 23574103, 23576640, 23579841, 23584832, 23587575, 23593024, 23595923, 23409339, 23773248, 23776114, 23781440, 23784168, 23789632, 23792466, 23797824, 23800508, 23803151, 23806016, 23808949, 23814208, 23816760, 23819264, 23822400, 23824904, 23826981, 23830592, 23833245, 23838784, 23841775, 23846976, 23849723, 23855168, 23858113, 23863360, 23866299, 23871552, 23874015, 23876489, 23879744, 23882183, 23884040, 23885908, 23887936, 23889792, 23891944, 23896128, 23898347, 23900574, 23904320, 23907083, 23909062, 23912512, 23914771, 23917045, 23920704, 23923040, 23925024, 23928896, 23931404, 23933926, 23937088, 23939073, 23941477, 23945280, 23947257, 23949246, 23953472, 23955739, 23958374, 23961664, 23964162, 23966673, 23969856, 23972087, 23974063, 23978048, 23980002, 23981909, 23986240, 23988637, 23991280, 23994432, 23996625, 23998882, 24002624, 24005297, 24010816, 24014154, 24019008, 24021780, 24035392, 24038771, 24040975, 24043584, 24045411, 24047307, 24051776, 24055012, 24056861, 24059968, 24062493, 24065031, 24068160, 24069697, 24071469, 24073190, 24076352, 24078280, 24080352, 24084544, 24087637, 24092736, 24095679, 24097784, 24100928, 24103051, 24105011, 24109120, 24111087, 24113060, 24114374, 24117312, 24120361, 24125504, 24128073, 24130599, 24133696, 24136206, 24138855, 24141888, 24143647, 24145352, 24150080, 24152839, 24154672, 24158272, 24160480, 24162698, 24166464, 24168532, 24170915, 24174656, 24176394, 24178080, 24179816, 24182848, 24184778, 24186729, 24187004, 24187289, 24191040, 24193241, 24194812, 24196393, 24199232, 24200815, 24202676, 24204544, 24207424, 24209824, 24210281, 24210735, 24212666, 24215616, 24289280, 24219672, 24223808, 24225892, 24232000, 24235455, 24237046, 24240192, 24242123, 24244059, 24244372, 24244696, 24248384, 24251094, 24253735, 24256576, 24259293, 24262042, 24264768, 24267376, 24270019, 24272960, 24275670, 24278418, 24281152, 24283584, 24285859, 24229338, 24305728, 24308016, 24310901, 24313920, 24316629, 24319363, 24322112, 24324482, 24327216, 24330304, 24333513, 24338496, 24341204, 24343942, 24346688, 24348934, 24351316, 24354880, 24357520, 24363072, 24365469, 24371264, 24375240, 24379456, 24383409, 24387648, 24390330, 24395840, 24399264, 24404032, 24406230, 24408439, 24412224, 24559616, 24567808, 24414820, 24417458, 24420416, 24423364, 24428608, 24431412, 24436800, 24439320, 24441851, 24444992, 24448107, 24453184, 24455954, 24457261, 24458674, 24461376, 24463791, 24466280, 24469568, 24472943, 24477760, 24480984, 24485952, 24488621, 24494144, 24497061, 24502336, 24504749, 24507180, 24510528, 24513059, 24515515, 24518720, 24521297, 24523883, 24526912, 24529842, 24532321, 24535104, 24538200, 24541308, 24543296, 24545000, 24546862, 24551488, 24554270, 24557068, 24557379, 24584256, 24588259, 24592448, 24594765, 24597095, 24600640, 24602951, 24605275, 24608832, 24610229, 24611638, 24617024, 24621035, 24625216, 24627530, 24629798, 24633408, 24637416, 24641600, 24645617, 24649792, 24653790, 24657984, 24659829, 24661686, 24666176, 24669108, 24670530, 24671965, 24674368, 24675802, 24678109, 24680426, 24682560, 24684241, 24686560, 24690752, 24693336, 24695930, 24698944, 24700703, 24702626, 24704613, 24707136, 24708929, 24710656, 24712392, 24715328, 24717143, 24719010, 24723520, 24726214, 24728702, 24731712, 24838144, 24734066, 24739904, 24742865, 24748096, 24750932, 24756288, 24759156, 24761841, 24764480, 24766850, 24768664, 24772672, 24774910, 24777160, 24777515, 24777882, 24780864, 24783419, 24783803, 24784196, 24786176, 24789056, 24791138, 24793227, 24795161, 24797248, 24797519, 24797800, 24799674, 24801555, 24805440, 24807447, 24808576, 24809665, 24811548, 24813632, 24815297, 24816917, 24818662, 24821824, 24823555, 24825258, 24826941, 24830016, 24831944, 24833883, 24835651, 24623342, 24688890, 24720890, 24738030, 24745576, 24746745, 24753510, 24770490, 24772066, 24780426, 24854592, 24857233, 24859882, 24862784, 24865080, 24867511, 24870976, 24872857, 24874747, 24876189, 24879168, 24881846, 24884531, 24887360, 24889911, 24891013, 24892128, 24895552, 24898358, 24900112, 24903744, 24905669, 24907603, 24911936, 24914410, 24920128, 24923183, 24925221, 24928320, 24930942, 24933542, 24936512, 24938113, 24939419, 24940733, 24942042, 24944704, 24946014, 24947331, 24948939, 24950555, 24952896, 24954366, 24955683, 24957007, 24958761, 24961088, 24962657, 24964235, 24965877, 24967526, 24969280, 24970861, 24972198, 24973545, 24975403, 24977472, 24978786, 24980110, 24981875, 24983650, 24985664, 24987451, 24989135, 24990828, 24993856, 24995941, 24997222, 24998513, 25000095, 25002048, 25003691, 25005342, 25006945, 25008556, 25010240, 25011557, 25013118, 25014688, 25016225, 25018432, 25019747, 25021071, 25022384, 25023705, 25026624, 25028348, 25029911, 25031482, 25033037, 25034816, 25036283, 25037756, 25039072, 25040397, 25043008, 25044608, 25046172, 25047744, 25049300, 25051200, 25052502, 25053810, 25055380, 25056959, 25059392, 25061068, 25062639, 25064219, 25065848, 25067584, 25069342, 25071267, 25073113, 25074989, 25075294, 25075776, 25077575, 25079703, 25081468, 25083968, 25086059, 25088252, 25092160, 25094138, 25094407, 25094688, 25096389, 25098102, 25100352, 25102037, 25103922, 25105802, 24917453, 25090129, 25116736, 25118612, 25120495, 25122365, 25124928, 25126806, 25128701, 25130579, 25133120, 25135005, 25136915, 25138817, 25141312, 25143066, 25144951, 25146845, 25149504, 25151142, 25152846, 25154560, 25157696, 25159289, 25161027, 25162777, 25165888, 25167475, 25169209, 25170951, 25172318, 25174080, 25175941, 25177813, 25179193, 25182272, 25184060, 25185856, 25186152, 25186458, 25186753, 25187059, 25190464, 25192452, 25198656, 25201994, 25204017, 25206026, 25206336, 25206848, 25370624, 25210903, 25212217, 25215040, 25216766, 25218505, 25220302, 25223232, 25225148, 25227073, 25231424, 25233749, 25235529, 25237321, 25239616, 25241681, 25243729, 25245789, 25247808, 25249746, 25251767, 25253798, 25256000, 25257893, 25259953, 25262026, 25264192, 25266097, 25268080, 25272384, 25274788, 25277203, 25280576, 25282949, 25285701, 25288768, 25292356, 25296960, 25299195, 25301451, 25305152, 25308046, 25313344, 25316103, 25321536, 25324439, 25329728, 25332303, 25337920, 25341157, 25346112, 25349541, 25354304, 25357718, 25362496, 25364633, 25366779, 25195774, 25318862, 25334892, 25387072, 25390993, 25395264, 25398106, 25403456, 25406285, 25640960, 25649152, 25411648, 25415184, 25419840, 25421797, 25423762, 25425784, 25428032, 25429671, 25431319, 25436224, 25439199, 25441186, 25444416, 25446853, 25449307, 25449583, 25449868, 25450130, 25452608, 25455428, 25460800, 25463605, 25466431, 25468992, 25471469, 25477184, 25481193, 25485376, 25487713, 25490088, 25493568, 25496500, 25501760, 25504479, 25509952, 25513450, 25518144, 25520843, 25523550, 25526336, 25528082, 25529273, 25530528, 25534528, 25537042, 25538831, 25540631, 25540987, 25542720, 25545050, 25547394, 25550912, 25553343, 25553623, 25553910, 25559104, 25562186, 25564558, 25567296, 25569624, 25571961, 25575488, 25577803, 25580130, 25583680, 25586865, 25591872, 25594335, 25596807, 25600064, 25603095, 25605581, 25608256, 25610828, 25616448, 25620255, 25624640, 25627841, 25632832, 25635969, 25665600, 25669100, 25673792, 25677463, 25681984, 25685232, 25690176, 25693312, 25698368, 25701879, 25706560, 25709924, 25713301, 25714752, 25715720, 25717741, 25718868, 25722944, 25725638, 25728335, 25731136, 25733829, 25736536, 25739328, 25741871, 25744261, 25747520, 25749883, 25752260, 25755712, 25757957, 25760013, 25763904, 25765875, 25767855, 25769805, 25772096, 25774617, 25777151, 25780288, 25782821, 25785340, 25788480, 25791034, 25793601, 25796672, 25799210, 25801759, 25804864, 25807384, 25809916, 25813056, 25815903, 25821248, 25824210, 25829440, 25832161, 25837632, 25840695, 25845824, 25849363, 25854016, 25857157, 25862208, 25864834, 25867389, 25870400, 25872713, 25875037, 25875365, 25875704, 25876008, 25876325, 25876630, 25878592, 25880693, 25882806, 25886784, 25888808, 25890811, 25892824, 25894976, 25896989, 25898988, 25900997, 25903168, 25905180, 25907182, 25909196, 25911360, 25913371, 25915372, 25917385, 25818853, 25826922, 25835215, 25859771, 25927744, 25929818, 25931881, 25935936, 25937993, 25940061, 25944128, 25946211, 25948109, 25950017, 25952320, 25954416, 25960512, 25964368, 25968704, 25972409, 25976896, 25980060, 25982295, 25985088, 25987232, 25989387, 25993280, 25995927, 25998297, 26001472, 26003267, 26005071, 26009664, 26011974, 26013537, 26015117, 26017856, 26019405, 26020640, 26021893, 26023566, 26026048, 26027258, 26028485, 26030007, 26034240, 26036893, 26039559, 26042432, 26044673, 26046583, 26048510, 26050624, 26052496, 26054403, 26056257, 26058816, 26060614, 26062230, 26063858, 26067008, 26069254, 26071407, 26075200, 26076890, 26078596, 26080287, 26083392, 26086021, 26088662, 26091584, 26094276, 26095931, 26097597, 26099776, 26101435, 26103054, 26104681, 26107968, 26110249, 26112368, 26116160, 26118033, 26119860, 26124352, 26126685, 26128277, 26129883, 26132544, 26134820, 26137115, 26140736, 26143265, 26145822, 26146124, 26146437, 26146751, 26147077, 26147385, 26147704, 26148013, 26148331, 26148928, 26149253, 26149565, 26149888, 26157120, 26161181, 26165312, 26168730, 26170724, 26173504, 26175124, 26176757, 26178378, 26180005, 25933955, 25942127, 25958262, 26153940, 26189888, 26192612, 26194725, 26198080, 26200221, 26202375, 26206272, 26208665, 26210705, 26214464, 26217574, 26222656, 26224626, 26226641, 26230848, 26233447, 26235738, 26239040, 26241249, 26243469, 26247232, 26249632, 26251795, 26255424, 26257987, 26260559, 26263616, 26266035, 26268102, 26271808, 26274061, 26276322, 26280000, 26282322, 26283337, 26284362, 26285973, 26288192, 26291157, 26293117, 26296384, 26298273, 26301582, 26303837, 26304160, 26304576, 26307412, 26309624, 26312768, 26314979, 26317086, 26443776, 26451968, 26320960, 26323835, 26329152, 26332014, 26337344, 26340553, 26345536, 26348826, 26353728, 26357003, 26361920, 26364582, 26367256, 26370112, 26372323, 26374073, 26375832, 26376204, 26378304, 26381078, 26383857, 26384228, 26386496, 26389304, 26394688, 26397413, 26402880, 26405852, 26408835, 26411072, 26412378, 26415512, 26419264, 26421021, 26422790, 26427456, 26429779, 26431045, 26432320, 26435648, 26437658, 26468416, 26471589, 26473852, 26476608, 26477651, 26478704, 26480987, 26482591, 26484800, 26486041, 26487091, 26488151, 26490015, 26490734, 26491598, 26492992, 26493615, 26494191, 26495229, 26496225, 26501184, 26504042, 26506580, 26509376, 26511793, 26514223, 26517568, 26520721, 26523036, 26525760, 26528007, 26530266, 26533952, 26536277, 26538811, 26542144, 26544638, 26547141, 26550336, 26553349, 26555759, 26558528, 26562542, 26566720, 26568911, 26571115, 26574912, 26577044, 26579629, 26583104, 26585230, 26587366, 26588950, 26591296, 26594060, 26599488, 26603242, 26607680, 26609650, 26611631, 26615872, 26618000, 26620082, 26624064, 26626022, 26627992, 26630034, 26632256, 26634180, 26636114, 26636432, 26636761, 26640448, 26642621, 26645057, 26648640, 26650848, 26653065, 26656832, 26659461, 26661265, 26665024, 26667609, 26670206, 26673216, 26676015, 26681408, 26684732, 26689600, 26692240, 26693260, 26694291, 26695956, 26697792, 26698808, 26699834, 26701450, 26703078, 26705984, 26708112, 26708546, 26708989, 26711065, 26714176, 26716782, 26719342, 26596835, 26730560, 26734306, 26738061, 26738752, 26739156, 26739442, 26739739, 26742145, 26744563, 26746944, 26748762, 26750798, 26752843, 26755136, 26757173, 26759324, 26763328, 26765340, 26767365, 26771520, 26773998, 26776061, 26779712, 26781751, 26783813, 26784116, 26784430, 26787904, 26789990, 26792278, 26796096, 26798182, 26800320, 26804288, 26806349, 26808479, 26812480, 26814561, 26816668, 26820672, 26822764, 26824277, 26825803, 26827179, 26828864, 26830845, 26832836, 26837056, 26839275, 26841719, 26845248, 26846607, 26847973, 26849976, 26851988, 26853440, 26854210, 26856280, 26984448, 26992640, 26857980, 26861632, 26863608, 26864196, 26864794, 26869824, 26872827, 26874294, 26875771, 26878016, 26880082, 26886208, 26890228, 26892267, 26894400, 26896613, 26898839, 26902592, 26904779, 26907016, 26910784, 26913703, 26918976, 26922222, 26925481, 26925965, 26927168, 26929185, 26931208, 26932780, 26935360, 26939119, 26943552, 26946026, 26948512, 26949168, 26951744, 26954272, 26956817, 26957943, 26959936, 26963497, 26968128, 26969534, 26970950, 26976320, 26980124, 27009088, 27011400, 27017280, 27020299, 27021550, 27025472, 27029007, 27033664, 27035617, 27037580, 27038830, 27041856, 27044280, 27046713, 27050048, 27052277, 27054108, 27058240, 27061885, 27066432, 27069856, 27074624, 27076337, 27078060, 27079662, 27081274, 27082816, 27083930, 27085365, 27262976, 27271168, 27086813, 27091008, 27094069, 27099200, 27102137, 27107392, 27111241, 27115584, 27118565, 27120830, 27123776, 27126530, 27129295, 27131968, 27134572, 27137224, 27140160, 27142457, 27144763, 27148352, 27151677, 27156544, 27159313, 27164736, 27168297, 27169967, 27172928, 27175542, 27178167, 27181120, 27183288, 27185487, 27189312, 27191242, 27193181, 27195282, 27197504, 27200515, 27203536, 27205696, 27279360, 27287552, 27207744, 27213888, 27217442, 27219627, 27222080, 27223551, 27225031, 27226747, 27230272, 27233682, 27238464, 27242343, 27246656, 27250184, 27295744, 27303936, 27254848, 27257746, 27260653, 27014406, 27022811, 27211290, 27320384, 27322989, 27328576, 27332576, 27336768, 27340042, 27344960, 27347851, 27350750, 27353152, 27355141, 27358129, 27361344, 27364894, 27369536, 27372682, 27377728, 27380820, 27385920, 27388388, 27574272, 27582464, 27390869, 27391531, 27394112, 27397257, 27402304, 27405554, 27410496, 27412640, 27590656, 27598848, 27414792, 27418688, 27421020, 27426880, 27429859, 27431995, 27435072, 27437111, 27439158, 27443264, 27446043, 27448412, 27451456, 27453637, 27455830, 27459648, 27461821, 27463998, 27467840, 27470133, 27472438, 27476032, 27478613, 27484224, 27487627, 27489169, 27490720, 27491359, 27492416, 27493589, 27494768, 27497080, 27607040, 27615232, 27500608, 27502823, 27505049, 27508800, 27511564, 27516992, 27520148, 27522412, 27525184, 27527804, 27530442, 27533376, 27535372, 27537715, 27541568, 27544031, 27546503, 27547678, 27549760, 27552033, 27554317, 27555771, 27557952, 27559958, 27561974, 27566144, 27568306, 27569995, 27571694, 27631680, 27634778, 27639872, 27642567, 27642871, 27643183, 27648064, 27650601, 27652670, 27656256, 27658522, 27660798, 27664448, 27666662, 27668098, 27669544, 27672640, 27674244, 27676077, 27677919, 27680832, 27682872, 27684857, 27686852, 27689024, 27690772, 27692421, 27694080, 27697216, 27699286, 27701462, 27705408, 27707650, 27709904, 27713600, 27715731, 27718007, 27721792, 27723918, 27726052, 27729984, 27732527, 27734745, 27738176, 27740487, 27742487, 27746368, 27748297, 27749748, 27751269, 27752726, 27754560, 27757443, 27762752, 27765607, 27770944, 27773658, 27779136, 27781874, 27787328, 27790101, 27795520, 27798595, 27803712, 27806785, 27811904, 27814575, 27820096, 27823057, 27828288, 27831206, 27836480, 27839056, 27841650, 27844672, 27847202, 27849885, 27852864, 27855902, 27861056, 27863750, 27866456, 27869248, 27871903, 27874349, 27877440, 27880284, 27893824, 27896693, 27902016, 27905068, 27910208, 27913439, 27918400, 27921426, 27926592, 27929469, 27934784, 27937798, 27942976, 27946228, 27951168, 27953447, 27955739, 27959360, 27962837, 27967552, 27970579, 27972673, 27975744, 27978862, 27983936, 27987306, 27992128, 27995474, 28000320, 28003598, 28006890, 28007174, 28008512, 28012422, 28016704, 28018428, 28019297, 28024896, 28028162, 28033088, 28036538, 28041280, 28044564, 28049472, 28052105, 28054851, 28057664, 28060027, 28062399, 28065856, 28068106, 28070486, 28074048, 28076422, 28078892, 28082240, 28084847, 28090432, 28093070, 28095792, 28098624, 28101513, 28103831, 28104139, 28106816, 28109747, 28111872, 28112193, 28112523, 28112829, 28113143, 28115008, 28116630, 28118195, 28119715, 28123200, 28125275, 28127221, 28131392, 28134464, 28139584, 28143371, 28155968, 28158398, 28160845, 28164160, 28166531, 28169079, 28171635, 28171924, 28172352, 28174508, 28176685, 28180544, 28182657, 28184720, 28188736, 28190698, 28192668, 28192957, 28193257, 28196928, 28199107, 28201223, 28205120, 28207487, 28209865, 28211099, 28213312, 28215102, 28216902, 28218445, 28219998, 28221504, 28222935, 28224533, 28226140, 28229696, 28232413, 28233806, 28235208, 28237888, 28239314, 28241487, 28243672, 28246080, 28247397, 28249383, 28251374, 28254272, 28255729, 28257760, 28259709, 28262464, 28264529, 28265575, 28266632, 28270656, 28273080, 28275442, 28278848, 28280786, 28282675, 28287040, 28289376, 28292151, 28295232, 28296771, 28298459, 28303424, 28306581, 28308070, 28311616, 28312090, 28315963, 28319808, 28322631, 28324304, 28326103, 28328000, 28330288, 28331701, 28333757, 28336192, 28338579, 28340074, 28341777, 28344384, 28348081, 28349636, 28352576, 28353935, 28356526, 28358055, 28360768, 28362991, 28366894, 28368960, 28370660, 28372646, 28377152, 28379383, 28382775, 28385344, 28388799, 28393536, 28396669, 28401728, 28405350, 28398522, 28407031, 28284997, 28300555, 28390498, 28418112, 28420159, 28423895, 28426304, 28429034, 28430423, 28431491, 28434496, 28437704, 28439332, 28442688, 28444376, 28446132, 28448003, 28450880, 28453053, 28455282, 28459072, 28460988, 28467264, 28471291, 28471570, 28471859, 28472549, 28473250, 28473847, 28475456, 28476623, 28477801, 28480505, 28483648, 28484290, 28484945, 28485564, 28486191, 28486933, 28487689, 28489526, 28491840, 28493950, 28496076, 28497666, 28499269, 28500032, 28500719, 28502590, 28504486, 28505418, 28506362, 28507123, 28508224, 28509354, 28510494, 28511864, 28513244, 28514231, 28516416, 28518702, 28521001, 28522446, 28524608, 28525886, 28527176, 28528197, 28529229, 28532800, 28534943, 28536303, 28537676, 28539024, 28540992, 28542174, 28543368, 28549184, 28552894, 28557376, 28560268, 28672000, 28565568, 28568774, 28573760, 28576706, 28581952, 28585872, 28590144, 28592461, 28680192, 28688384, 28696576, 28704768, 28712960, 28721152, 28729344, 28737536, 28745728, 28753920, 28762112, 28770304, 28594792, 28778496, 28598336, 28602306, 28606528, 28609002, 28611485, 28614720, 28786688, 28794880, 28617730, 28620165, 28622912, 28803072, 28811264, 28819456, 28624744, 28627250, 28631104, 28633985, 28639296, 28641764, 28647488, 28651539, 28655680, 28657915, 28660161, 28660485, 28660819, 28661143, 28663872, 28666770, 28668632, 28595084, 28644241, 28661479, 28835904, 28839060, 28841324, 28844096, 28845739, 28848999, 28852288, 28855409, 28860480, 28863512, 28868672, 28871880, 28876864, 28880076, 28885056, 28888268, 28893248, 28896615, 28901440, 28904802, 28908172, 28909632, 28910809, 28911829, 28912862, 28913902, 28914956, 28915644, 28917824, 28920458, 28926016, 28929287, 28934208, 28936849, 28939496, 28942400, 28944898, 28947007, 28950592, 28952607, 28954632, 28956605, 28958784, 28960990, 28963211, 28966976, 28968950, 28971488, 28975168, 28977101, 28979045, 28983360, 28985781, 28987686, 28991552, 28993886, 28996229, 28999744, 29002046, 29004022, 29007936, 29010267, 29012607, 29016128, 29018630, 29020665, 29024320, 29026481, 29028652, 29032512, 29034603, 29036573, 29040704, 29043686, 29046677, 29048896, 29051063, 29057088, 29060153, 29062607, 29065280, 29068182, 29073472, 29076421, 29079378, 29081664, 29083581, 29085501, 29087431, 28866537, 28923101, 29038555, 29054118, 29071094, 29098048, 29101264, 29106240, 29109480, 29114432, 29116959, 29119495, 29122624, 29125213, 29127629, 29130816, 29133224, 29135645, 29139008, 29141054, 29143468, 29145891, 29147200, 29148361, 29150297, 29152244, 29155392, 29157040, 29158117, 29159202, 29160920, 29163584, 29166652, 29169137, 29171776, 29173487, 29175700, 29177923, 29179968, 29181520, 29184120, 29188160, 29189689, 29192153, 29196352, 29198456, 29200692, 29204544, 29206722, 29208910, 29212736, 29214878, 29216986, 29220928, 29222980, 29225043, 29226920, 29229120, 29231358, 29233607, 29235107, 29237312, 29239250, 29242073, 29245504, 29247880, 29253696, 29257681, 29261888, 29264470, 29266686, 29270080, 29272577, 29275135, 29278272, 29280494, 29282536, 29286464, 29288443, 29290372, 29292410, 29294656, 29296672, 29298701, 29300384, 29302848, 29305899, 29311040, 29313789, 29315815, 29319232, 29320895, 29323064, 29325242, 29325535, 29327424, 29329000, 29330584, 29332997, 29335616, 29337193, 29338780, 29343808, 29346955, 29349189, 29249667, 29308259, 29360192, 29363198, 29366214, 29368384, 29370213, 29372398, 29374594, 29376576, 29378338, 29378745, 29379162, 29380405, 29381663, 29384768, 29387771, 29392960, 29396098, 29401152, 29404770, 29409344, 29413376, 29417536, 29421533, 29423534, 29425728, 29429670, 29614080, 29622272, 29433920, 29437663, 29442112, 29445701, 29450304, 29453298, 29458496, 29461175, 29463861, 29466688, 29468106, 29469753, 29471411, 29474880, 29477123, 29479391, 29483072, 29485180, 29487297, 29491264, 29493221, 29495580, 29499456, 29501370, 29503354, 29505197, 29507648, 29509925, 29512215, 29515840, 29517709, 29520015, 29524032, 29525843, 29527663, 29532224, 29534883, 29540416, 29544468, 29548608, 29551902, 29553989, 29556800, 29558892, 29560988, 29564992, 29567221, 29569628, 29573184, 29575901, 29578582, 29581376, 29583673, 29585981, 29589568, 29592132, 29594667, 29597760, 29600139, 29602239, 29605952, 29608557, 29611175, 29390898, 29638720, 29641609, 29646912, 29649467, 29652030, 29655104, 29657391, 29663296, 29666740, 29671488, 29674737, 29679680, 29682300, 29683768, 29685238, 29687872, 29690138, 29692749, 29696064, 29699026, 29704256, 29707256, 29712448, 29714969, 29717457, 29720640, 29723520, 29728832, 29731644, 29737024, 29739837, 29742225, 29745216, 29747318, 29749431, 29753408, 29756580, 29758820, 29761600, 29763810, 29766029, 29767872, 29769792, 29771449, 29773116, 29775072, 29777984, 29779858, 29781745, 29786176, 29788946, 29794368, 29797562, 29802560, 29805859, 29810752, 29814736, 29818944, 29822693, 29827136, 29829887, 29835328, 29838364, 29843520, 29847410, 29851712, 29855657, 29892608, 29900800, 29859904, 29863552, 29867264, 29867607, 29868096, 29869499, 29870913, 29872463, 29876288, 29879128, 29884480, 29887197, 29917248, 29920299, 29925440, 29928584, 29931739, 29933632, 29935034, 29936624, 29938224, 29941824, 29944407, 29946950, 29950016, 29952553, 29955101, 29958208, 29960768, 29963257, 29966400, 29970433, 29974592, 29977838, 29982784, 29986366, 29990976, 29992415, 29994050, 29995763, 29999168, 30000895, 30003502, 30007360, 30009847, 30010325, 30015552, 30018087, 30020638, 30023744, 30025976, 30027972, 30031936, 30035551, 30040128, 30042043, 30043925, 30045435, 30171136, 30179328, 30187520, 30195712, 30048320, 30050265, 30052222, 30054122, 30056512, 30058410, 30060321, 30062226, 30064704, 30068546, 30072896, 30075355, 30077828, 30079254, 30081088, 30085096, 30089280, 30091578, 30203904, 30212096, 30097472, 30101484, 30105664, 30109669, 30113856, 30116133, 30118420, 30119994, 30122048, 30123473, 30124910, 30126302, 30127706, 30130240, 30131674, 30133685, 30135709, 30138432, 30140456, 30142471, 30144498, 30146624, 30148276, 30149668, 30151072, 30151375, 30151686, 30153110, 30154816, 30158232, 30163008, 30165285, 30167576, 30169097, 29923367, 30005305, 30029976, 30093887, 30095705, 29981097, 30228544, 30230273, 30232014, 30234233, 30236736, 30238784, 30240842, 30242515, 30244928, 30246756, 30248590, 30250409, 30253120, 30254939, 30256766, 30258496, 30261312, 30265294, 30269504, 30272928, 30277696, 30279425, 30281163, 30283280, 30285888, 30287934, 30289988, 30290280, 30290582, 30290863, 30291155, 30294080, 30296321, 30298346, 30300386, 30300675, 30302272, 30304024, 30305729, 30307551, 30310464, 30312151, 30313851, 30315644, 30318656, 30320634, 30322621, 30324212, 30326848, 30328759, 30330613, 30332092, 30333525, 30333852, 30334192, 30334484, 30335040, 30335314, 30335597, 30335881, 30336175, 30338899, 30343232, 30345609, 30347999, 30351424, 30353275, 30355286, 30357306, 30359616, 30361221, 30361531, 30361854, 30363925, 30366009, 30367808, 30369531, 30372413, 30376000, 30377766, 30379542, 30381424, 30384192, 30386038, 30387896, 30389767, 30392384, 30395338, 30400576, 30403464, 30408768, 30411640, 30416960, 30419919, 30422889, 30423185, 30425152, 30428174, 30431207, 30431524, 30433344, 30435279, 30437223, 30438560, 30441536, 30443181, 30444834, 30446368, 30447911, 30449728, 30451269, 30452954, 30454647, 30455958, 30457920, 30459424, 30460936, 30462594, 30464260, 30466112, 30467643, 30469280, 30470925, 30472246, 30474304, 30476016, 30477736, 30479374, 30398304, 30406361, 30414520, 30490688, 30492302, 30494062, 30495831, 30498880, 30500440, 30502109, 30503787, 30507072, 30508729, 30510513, 30512307, 30513634, 30515264, 30516866, 30518476, 30520152, 30523456, 30525257, 30527067, 30528399, 30529740, 30531648, 30533405, 30535087, 30536778, 30539840, 30541412, 30543192, 30544982, 30548032, 30550179, 30552288, 30554403, 30556224, 30557495, 30559164, 30560842, 30562554, 30564416, 30566068, 30567732, 30569391, 30572608, 30574202, 30575804, 30577418, 30580800, 30582754, 30584717, 30588992, 30592029, 30592332, 30592646, 30592971, 30593304, 30597184, 30600675, 30602803, 30605376, 30607193, 30609129, 30610920, 30613568, 30615796, 30618118, 30621760, 30623903, 30626184, 30629952, 30631834, 30633701, 30635509, 30638144, 30640020, 30641881, 30643799, 30646336, 30647846, 30649368, 30651327, 30654528, 30655973, 30657429, 30659396, 30662720, 30664407, 30666105, 30667782, 30670912, 30672491, 30674081, 30675701, 30677326, 30679104, 30680569, 30682045, 30683530, 30685018, 30687296, 30689033, 30690782, 30692245, 30695488, 30697275, 30699071, 30700507, 30701952, 30703680, 30705281, 30705580, 30705889, 30706181, 30706485, 30711872, 30715382, 30720064, 30722703, 30728256, 30731956, 30736448, 30739575, 30752832, 30755885, 30756212, 30756548, 30758184, 30761024, 30763015, 30765021, 30766595, 30769216, 30770844, 30772487, 30774095, 30777408, 30779274, 30781150, 30783139, 30785600, 30787494, 30789400, 30791169, 30793792, 30795943, 30798105, 30799952, 30801984, 30804898, 30810176, 30812589, 30815012, 30818368, 30820980, 30822242, 30823521, 30826560, 30828893, 30834752, 30837757, 30840007, 30842944, 30845059, 30847189, 30851136, 30853385, 30856273, 30859328, 30861850, 30864349, 30867520, 30870352, 30875712, 30879707, 30883904, 30887750, 30892096, 30895465, 30900288, 30902964, 30905559, 30908480, 30910685, 30912901, 30916672, 30919090, 30921278, 30924864, 30927271, 30929706, 30933056, 30935185, 30937075, 30941248, 30943660, 30946083, 30949440, 30951163, 30953390, 30957632, 30959581, 30961540, 30965824, 30968186, 30970500, 30974016, 30977066, 30982208, 30984459, 30986720, 30990400, 30992728, 30994863, 30998592, 31000796, 31003009, 30807820, 30831902, 30898124, 30938922, 31014976, 31017213, 31020058, 31023168, 31026006, 31268864, 31277056, 31031360, 31034351, 31039552, 31043508, 31047744, 31048067, 31048399, 31048702, 31049016, 31049327, 31049647, 31049944, 31050250, 31051858, 31053549, 31055936, 31057572, 31059882, 31064128, 31066170, 31068226, 31072320, 31074761, 31076077, 31077410, 31080512, 31082512, 31084817, 31088704, 31091152, 31093614, 31096896, 31099866, 31105088, 31108960, 31110370, 31113280, 31114840, 31116414, 31117956, 31121472, 31124595, 31129664, 31132956, 31137856, 31141343, 31143678, 31146048, 31147535, 31149422, 31151316, 31154240, 31156216, 31162432, 31165838, 31167546, 31170624, 31172987, 31175364, 31178816, 31181389, 31183968, 31187008, 31190522, 31195200, 31197715, 31200239, 31200531, 31203392, 31206275, 31211584, 31214092, 31216613, 31219776, 31222473, 31227968, 31231735, 31236160, 31239443, 31244352, 31247164, 31249587, 31252544, 31255304, 31260736, 31263518, 31266311, 31266588, 31126693, 31293504, 31296410, 31301696, 31304650, 31304941, 31305242, 31305512, 31305791, 31309888, 31547392, 31555584, 31563776, 31571968, 31313767, 31318080, 31321341, 31326272, 31329883, 31334464, 31337845, 31342656, 31346605, 31350848, 31354138, 31359040, 31362869, 31367232, 31370561, 31372796, 31375424, 31377723, 31380033, 31383616, 31385884, 31387771, 31389668, 31391808, 31393813, 31395642, 31400000, 31402491, 31404993, 31408192, 31410122, 31412405, 31416384, 31418707, 31421041, 31424576, 31427149, 31428461, 31429781, 31430095, 31432768, 31435377, 31437998, 31440960, 31443573, 31443880, 31444196, 31446352, 31449152, 31451386, 31453639, 31457344, 31460488, 31465536, 31468924, 31473728, 31477479, 31481920, 31484569, 31487231, 31490112, 31491130, 31492166, 31493560, 31494972, 31496457, 31498304, 31500284, 31502281, 31506496, 31509796, 31514688, 31517814, 31522880, 31525594, 31531072, 31534423, 31536272, 31539264, 31541136, 31543017, 31544955, 31299351, 31397478, 31414703, 31430420, 31520518, 31528933, 31588416, 31590467, 31592579, 31596608, 31598786, 31600940, 31604800, 31606834, 31608877, 31612992, 31615122, 31617261, 31621184, 31623320, 31625468, 31625791, 31626123, 31626429, 31626746, 31627023, 31629376, 31631622, 31633883, 31637568, 31639557, 31641109, 31642671, 31643981, 31645760, 31648668, 31651585, 31653952, 31656152, 31658624, 31662144, 31664612, 31667102, 31670336, 31672868, 31678528, 31681633, 31684124, 31686720, 31689858, 31694912, 31697327, 31699740, 31703104, 31705689, 31708138, 31711296, 31713063, 31714840, 31719488, 31721754, 31722055, 31722367, 31722659, 31722958, 31726049, 31727680, 31730012, 31732355, 31735872, 31739036, 31741015, 31744064, 31746208, 31748362, 31752256, 31754368, 31756221, 31758081, 31760448, 31762444, 31765022, 31768640, 31771224, 31773820, 31776832, 31778505, 31781533, 31785024, 31786801, 31788583, 31789768, 31790963, 31793216, 31794862, 31796416, 31801408, 31804879, 31809600, 31811779, 31813968, 31815596, 31817792, 31821288, 31825984, 31827711, 31829447, 31834176, 31837651, 31838487, 31839339, 31594746, 31675964, 31693013, 31797981, 31850560, 31853911, 31858752, 31861375, 31863344, 31865325, 31866944, 31868370, 31869840, 31871321, 31872899, 31875136, 31876891, 31878661, 31879764, 31880930, 31883328, 31885233, 31887030, 31888837, 31891520, 31893856, 31896659, 31899712, 31900317, 31900933, 31902483, 31904031, 31905656, 31907904, 31910453, 31913009, 31916096, 31918513, 31921174, 31924288, 31926698, 31929116, 31932480, 31934669, 31936980, 31940672, 31943287, 31945909, 31948864, 31951294, 31957056, 32104448, 32112640, 31960163, 31965248, 32120832, 32129024, 31968535, 31973440, 31975947, 31977714, 31981632, 31984171, 31986718, 31989824, 31992621, 31994927, 31998016, 32000355, 32002703, 32006208, 32008517, 32010882, 32014400, 32016698, 32019005, 32022592, 32025386, 32027578, 32030784, 32033498, 32036227, 32038976, 32041345, 32041664, 32041992, 32047168, 32049879, 32052575, 32055360, 32058058, 32060768, 32063552, 32065789, 32068273, 32071744, 32073325, 32074918, 32075364, 32075820, 32077777, 32079936, 32081548, 32083170, 32084973, 32086652, 32088128, 32089404, 32091549, 32093710, 32096320, 32098082, 32099983, 32101892, 32102419, 31954391, 31971032, 31979494, 32044692, 32046599, 32062993, 32137216, 32145408, 32153600, 32161792, 32169984, 32178176, 32186368, 32194560, 32211008, 32213137, 32215277, 32219200, 32221342, 32223747, 32227392, 32229475, 32231580, 32235584, 32237709, 32239124, 32240552, 32242114, 32243776, 32244075, 32244385, 32244687, 32245000, 32246446, 32464896, 32473088, 32247907, 32249831, 32251968, 32253357, 32254758, 32256344, 32260160, 32262356, 32264561, 32265586, 32268352, 32271078, 32276544, 32280173, 32481280, 32489472, 32284736, 32287378, 32290034, 32292928, 32294894, 32296848, 32497664, 32505856, 32301120, 32303668, 32306226, 32307604, 32309312, 32312273, 32315244, 32317504, 32318777, 32321441, 32325696, 32328548, 32331408, 32332100, 32332802, 32333888, 32334843, 32337015, 32339199, 32342080, 32344264, 32346433, 32350272, 32352327, 32354389, 32355975, 32358464, 32359514, 32360574, 32362595, 32366656, 32370653, 32374848, 32376851, 32378865, 32383040, 32385215, 32387380, 32391232, 32393401, 32395583, 32399424, 32401604, 32403777, 32405963, 32407616, 32409147, 32412112, 32415808, 32417505, 32419212, 32421553, 32424000, 32425588, 32427185, 32432192, 32434872, 32437198, 32440384, 32442733, 32445093, 32448576, 32450932, 32456768, 32460496, 32461695, 32462903, 32217407, 32233684, 32257940, 32266622, 32273813, 32298809, 32429853, 32522304, 32524501, 32526708, 32530496, 32776192, 32784384, 32532398, 32538688, 32792576, 32800768, 32541950, 32543778, 32546880, 32549731, 32552590, 32555072, 32557167, 32563264, 32566384, 32571456, 32574393, 32579648, 32583114, 32587840, 32590923, 32596032, 32599625, 32604224, 32808960, 32817152, 32607465, 32609370, 32612416, 32615522, 32620608, 32623007, 32625413, 32628800, 32631776, 32636992, 32639837, 32645184, 32648092, 32653376, 32656066, 32658690, 32825344, 32833536, 32661568, 32664610, 32841728, 32849920, 32669760, 32672103, 32674457, 32677952, 32680640, 32682659, 32686144, 32688098, 32690067, 32691712, 32694336, 32696347, 32698366, 32702528, 32858112, 32866304, 32704998, 32710720, 32714326, 32718912, 32721593, 32724252, 32727104, 32730443, 32735296, 32737630, 32739974, 32743488, 32746224, 32748452, 32751680, 32753595, 32755520, 32759872, 32762262, 32764676, 32768064, 32770087, 32772122, 32535650, 32560277, 32569310, 32882752, 32885569, 32890944, 32894561, 32899136, 32902826, 32907328, 32910908, 32915520, 32917739, 33136640, 33144832, 32919967, 32923712, 32926296, 32928537, 32931904, 32934834, 33153024, 33161216, 32940096, 32942436, 32944785, 32948288, 32950145, 32953227, 32956480, 32958467, 32960464, 32964672, 32968620, 32972864, 32976531, 32981056, 32983663, 32989248, 32992506, 32997440, 33000295, 33002506, 33169408, 33177600, 33185792, 33193984, 33005632, 33008900, 33013824, 33016788, 33022016, 33025611, 33030208, 33032958, 33038400, 33041704, 33046592, 33048607, 33050635, 33054784, 33057204, 33058864, 33062976, 33065482, 33067998, 33071168, 33072965, 33075028, 33079360, 33082783, 33087552, 33089588, 33091636, 33095744, 33098082, 33100491, 33103936, 33106261, 33112128, 33115612, 33120320, 33122716, 33125121, 33126628, 33128512, 33129421, 33130341, 33132097, 33133863, 33108596, 32888394, 32922541, 33035719, 33045017, 33210432, 33213325, 33215476, 33218624, 33220450, 33221853, 33223264, 33224321, 33225386, 33226816, 33228110, 33235008, 33238539, 33243200, 33246739, 33247964, 33251392, 33254878, 33259584, 33263110, 33267776, 33271326, 33275968, 33277990, 33280022, 33284160, 33286224, 33288880, 33292352, 33295106, 33300544, 33304072, 33308736, 33312291, 33316928, 33319131, 33321346, 33325120, 33328613, 33333312, 33336794, 33341504, 33343953, 33344803, 33345668, 33349696, 33352393, 33353148, 33353917, 33357888, 33359850, 33362514, 33366080, 33367420, 33368770, 33369077, 33369392, 33374272, 33376744, 33379258, 33382464, 33384592, 33386751, 33390656, 33393194, 33395663, 33398848, 33400665, 33402491, 33407040, 33409858, 33410677, 33411507, 33415232, 33417099, 33418760, 33420432, 33423424, 33425511, 33427641, 33431616, 33433804, 33436002, 33439808, 33441883, 33444050, 33448000, 33449798, 33451606, 33453419, 33456192, 33458582, 33460984, 33231678, 33297754, 33472576, 33475156, 33477529, 33480768, 33483110, 33485461, 33488960, 33491315, 33491639, 33491975, 33494350, 33497152, 33499495, 33501848, 33505344, 33508090, 33509314, 33510545, 33511664, 33513536, 33515872, 33518206, 33521728, 33523868, 33526484, 33529920, 33532961, 33538112, 33540561, 33543020, 33546304, 33549419, 33554496, 33557212, 33562688, 33565380, 33568028, 33570880, 33573661, 33579072, 33581974, 33584894, 33585212, 33587264, 33590188, 33595456, 33598215, 33603648, 33606384, 33611840, 33614775, 33620032, 33622982, 33628224, 33631067, 33636416, 33639175, 33644608, 33647368, 33652800, 33655719, 33660992, 33663878, 33669184, 33672091, 33677376, 33679830, 33682295, 33685568, 33688028, 33690124, 33693760, 33696566, 33701952, 33704837, 33710144, 33712997, 33718336, 33721179, 33734720, 33737567, 33742912, 33745826, 33751104, 33754210, 33759296, 33762496, 33767488, 33770720, 33775680, 33778745, 33783872, 33786755, 33792064, 33795080, 33800256, 33803282, 33808448, 33811562, 33816640, 33819668, 33824832, 33827390, 33833024, 33836030, 33841216, 33844145, 33849408, 33852443, 33857600, 33859697, 33861810, 33865792, 33867906, 33873984, 33877269, 33882176, 33885440, 33890368, 33893768, 33898560, 33901847, 33906752, 33910211, 33911975, 33914944, 33917596, 33920212, 33923136, 33925884, 33928567, 33931328, 33933926, 33936532, 33939520, 33941718, 33944016, 33947712, 33949960, 33952222, 33955904, 33958072, 33958395, 33958727, 33959050, 33959384, 33960598, 33961822, 33964096, 33965303, 33967861, 33972288, 33975365, 33980480, 33983579, 33829957, 33996864, 33999751, 34001204, 34002729, 34003020, 34003321, 34003609, 34005056, 34007122, 34009248, 34013248, 34015792, 34016084, 34016387, 34018278, 34021440, 34022872, 34024313, 34025884, 34027468, 34029632, 34031296, 34032700, 34034111, 34035763, 34037824, 34039377, 34040941, 34042811, 34046016, 34048647, 34051289, 34054208, 34056837, 34059522, 34062400, 34063955, 34064433, 34065524, 34066010, 34070592, 34072894, 34074922, 34078784, 34081238, 34083702, 34086976, 34088688, 34089160, 34089862, 34095168, 34098954, 34103360, 34106854, 34109099, 34111552, 34114450, 34117358, 34119744, 34122004, 34124145, 34127936, 34129799, 34131673, 34133181, 34136128, 34137622, 34139550, 34140892, 34144320, 34146104, 34149283, 34152512, 34155220, 34156615, 34158196, 34250752, 34160704, 34258944, 34162402, 34164728, 34168896, 34170628, 34173590, 34177088, 34180957, 34185280, 34188300, 34193472, 34197007, 34198789, 34201664, 34203205, 34206815, 34208262, 34209856, 34211479, 34215005, 34218048, 34220389, 34222132, 34226240, 34228036, 34234432, 34267136, 34237685, 34239692, 34242624, 34244630, 34246700, 34248591, 34068302, 34101319, 34183131, 34190041, 34231348, 34283584, 34286047, 34286886, 34287737, 34288504, 34289282, 34289919, 34537472, 34545664, 34553856, 34562048, 34291776, 34294161, 34296553, 34297292, 34299968, 34302944, 34308160, 34311071, 34316352, 34319117, 34324544, 34327501, 34332736, 34335461, 34340928, 34343885, 34349120, 34352074, 34357312, 34359918, 34362543, 34365504, 34368285, 34373696, 34376599, 34381888, 34384865, 34390080, 34392998, 34398272, 34401054, 34406464, 34409246, 34414656, 34417603, 34422848, 34425766, 34431040, 34433744, 34436434, 34439232, 34441770, 34444337, 34447424, 34449986, 34455616, 34458507, 34463808, 34466521, 34469213, 34472000, 34474294, 34476598, 34480192, 34482481, 34484944, 34488384, 34490589, 34492805, 34496576, 34499066, 34501393, 34504768, 34507045, 34509335, 34512960, 34514954, 34517174, 34521152, 34523361, 34525583, 34529344, 34531324, 34533596, 34314017, 34321901, 34330457, 34338249, 34346790, 34347828, 34355040, 34371174, 34379555, 34387774, 34395758, 34403819, 34578496, 34581706, 34586688, 34589287, 34591894, 34594880, 34596780, 34598771, 34603072, 34606318, 34611264, 34614505, 34619456, 34622652, 34627648, 34630896, 34635840, 34638233, 34640634, 34644032, 34646522, 34648530, 34650599, 34652224, 34653033, 34653323, 34653623, 34656667, 34660416, 34662307, 34664211, 34666329, 34668608, 34670617, 34672632, 34673140, 34673658, 34676800, 34678458, 34680051, 34681656, 34682240, 34682834, 34683448, 34684072, 34684992, 34685560, 34686083, 34686612, 34687137, 34687725, 34689315, 34690920, 34693184, 34695244, 34695728, 34701376, 34703477, 34707139, 34709568, 34712873, 34717760, 34721644, 34723480, 34725952, 34727451, 34728991, 34730716, 34734144, 34832384, 34735995, 34737809, 34739938, 34742336, 34744783, 34746280, 34750528, 34752589, 34755735, 34758720, 34762658, 34764126, 34766912, 34769869, 34775104, 34778164, 34783296, 34786298, 34789260, 34789584, 34791488, 34793315, 34795148, 34797009, 34799680, 34801831, 34803994, 34807872, 34810583, 34813267, 34816064, 34816432, 34816810, 34819380, 34821959, 34822247, 34822545, 34822836, 34823140, 34823590, 34824256, 34824551, 34824857, 34825159, 34825470, 34825762, 34826065, 34826338, 34826622, 34829391, 34714329, 34848832, 34851300, 34857024, 34860037, 34862276, 34865216, 34867405, 34869603, 34871395, 34873408, 34875698, 34878000, 34881600, 34884450, 34889792, 34892654, 34893003, 34893368, 34895634, 34897984, 34900675, 34903432, 34903731, 34904040, 34906176, 34908011, 34910353, 35102720, 35110912, 34914368, 34918105, 35119104, 35127296, 35135488, 35143680, 34922560, 34925835, 34930752, 34932918, 34938944, 34942995, 35151872, 35160064, 35168256, 35176448, 35184640, 35192832, 35201024, 35209216, 35217408, 35225600, 35233792, 35241984, 34947136, 34949734, 34955328, 34959235, 34963520, 34966267, 34971712, 34975325, 34979904, 34983830, 35250176, 35258368, 35266560, 35274752, 34988096, 34992058, 34996288, 34999388, 35004480, 35007321, 35012672, 35015148, 35020864, 35024581, 35282944, 35291136, 35299328, 35307520, 35029056, 35032433, 35037248, 35039188, 35041139, 35045440, 35048000, 35053632, 35315712, 35323904, 35332096, 35340288, 35057600, 35061824, 35348480, 35356672, 35064896, 35070016, 35073464, 35078208, 35364864, 35373056, 35080738, 35086400, 35089285, 35091624, 35094592, 35096866, 35099154, 34935097, 35389504, 35392725, 35397696, 35400420, 35643392, 35651584, 35403154, 35405888, 35408427, 35414080, 35659776, 35667968, 35676160, 35684352, 35417947, 35422272, 35426261, 35430464, 35432684, 35438656, 35442045, 35443805, 35446848, 35449679, 35452520, 35455040, 35456898, 35459391, 35463232, 35465935, 35468651, 35471424, 35473709, 35476005, 35479616, 35481459, 35483259, 35485496, 35487808, 35490477, 35493217, 35496000, 35498568, 35501240, 35504192, 35506331, 35508506, 35512384, 35514931, 35517010, 35520576, 35523017, 35528768, 35532382, 35536960, 35540775, 35545152, 35548061, 35553344, 35556257, 35561536, 35564341, 35567164, 35569728, 35572231, 35574807, 35577920, 35581241, 35586112, 35588487, 35590825, 35594304, 35597085, 35602496, 35605550, 35610688, 35613242, 35616005, 35618880, 35621877, 35627072, 35629656, 35632263, 35635264, 35637936, 35525423, 35551038, 35559237, 35608138, 35640831, 35395953, 35412282, 35428469, 35436063, 35600115, 35624899, 35700800, 35704721, 35708992, 35710952, 35712925, 35714771, 35717184, 35719791, 35722406, 35725376, 35728271, 35733568, 35737362, 35741760, 35745354, 35749952, 35753612, 35758144, 35761280, 35766336, 35769266, 35774528, 35777182, 35779748, 35782720, 35784345, 35786031, 35790912, 35794503, 35954688, 35799104, 35962880, 35802178, 35804371, 35807296, 35809339, 35811392, 35812653, 35815488, 35817012, 35818555, 35820478, 35823680, 35825613, 35827556, 35829490, 35831434, 35831872, 35832170, 35834462, 35836764, 35840064, 35842616, 35844588, 35848256, 35849965, 35851684, 35853096, 35854523, 35855395, 35856448, 35858495, 35860553, 35860864, 35861184, 35861531, 35861888, 35862215, 35862549, 35862878, 35863217, 35863578, 35863949, 35864640, 35864961, 35867737, 35872832, 35875588, 35877959, 35881024, 35883374, 35889216, 35892463, 35897408, 35899784, 35902619, 35905600, 35908096, 35910604, 35913792, 35916129, 35917258, 35918449, 35921984, 35923990, 35925994, 35928007, 35930176, 35932160, 35934530, 35938368, 35940245, 35942135, 35942489, 35942853, 35943240, 35943635, 35946560, 35948345, 35949905, 35951475, 35953038, 35732054, 35756737, 35764198, 35771953, 35870304, 35886789, 35895222, 35797068, 35979328, 35980949, 35982580, 35984173, 35985776, 35987520, 35989121, 35990763, 35992413, 35995712, 35997493, 36000585, 36003904, 36007479, 36012096, 36014972, 36017640, 36020288, 36022393, 36024694, 36028480, 36030905, 36033337, 36033655, 36033982, 36036672, 36038930, 36040871, 36044864, 36047051, 36049252, 36050979, 36053056, 36055215, 36057383, 36059071, 36061248, 36063132, 36065079, 36066714, 36069440, 36071512, 36073548, 36077632, 36079626, 36081655, 36083640, 36085824, 36087839, 36088115, 36088401, 36090361, 36233216, 36241408, 36092328, 36092625, 36092930, 36093226, 36094016, 36096200, 36098395, 36102208, 36104128, 36106952, 36110400, 36112668, 36114943, 36118592, 36120654, 36123360, 36126784, 36129316, 36131862, 36134976, 36136985, 36139677, 36143168, 36145440, 36147723, 36151360, 36154041, 36155676, 36157323, 36159552, 36161701, 36161994, 36162295, 36163827, 36167744, 36170239, 36172744, 36175936, 36178475, 36181196, 36184128, 36186233, 36188401, 36192320, 36194474, 36195108, 36195752, 36196109, 36196478, 36197856, 36200512, 36203567, 36206632, 36206902, 36208704, 36211615, 36216896, 36219794, 36222703, 36225088, 36226983, 36228894, 36230818, 36165368, 36214535, 36042821, 36075591, 36100304, 36257856, 36260283, 36262721, 36266048, 36268017, 36269374, 36270742, 36272027, 36274240, 36275856, 36277483, 36279055, 36280637, 36282432, 36284088, 36285671, 36287252, 36288782, 36290624, 36291927, 36293241, 36294814, 36296400, 36298816, 36300426, 36302066, 36303714, 36307008, 36308917, 36310536, 36312163, 36315200, 36316888, 36318793, 36320704, 36323392, 36325473, 36327131, 36328800, 36331584, 36333201, 36334830, 36336468, 36339776, 36341418, 36343045, 36344681, 36346268, 36347968, 36349614, 36351268, 36353054, 36356160, 36357475, 36358797, 36360510, 36362230, 36364352, 36366254, 36367950, 36369653, 36370995, 36372544, 36374154, 36375773, 36377404, 36379041, 36380736, 36382243, 36384038, 36385860, 36387206, 36388928, 36391262, 36393613, 36393933, 36394264, 36397120, 36399484, 36399776, 36400080, 36400379, 36400683, 36402619, 36405312, 36407080, 36408997, 36410903, 36413504, 36415405, 36417391, 36419341, 36421696, 36423730, 36425766, 36427298, 36429888, 36432092, 36434322, 36438080, 36440087, 36441680, 36443296, 36446272, 36448142, 36449475, 36450818, 36454464, 36456370, 36457737, 36459114, 36462656, 36464410, 36465961, 36467522, 36470848, 36472532, 36474227, 36475934, 36477364, 36479040, 36480687, 36482344, 36483752, 36485219, 36487232, 36488851, 36490328, 36491816, 36493428, 36495424, 36496835, 36498308, 36499669, 36501039, 36503616, 36505147, 36506589, 36508040, 36509675, 36338103, 36436306, 36520000, 36522082, 36524179, 36528192, 36530363, 36533250, 36536384, 36539630, 36544576, 36548281, 36552768, 36556798, 36560960, 36564271, 36569152, 36571067, 36572968, 36574400, 36577344, 36578790, 36580247, 36582576, 36585536, 36587037, 36588554, 36590611, 36593728, 36595831, 36597947, 36601920, 36604087, 36606168, 36610112, 36612163, 36614223, 36618304, 36620332, 36622745, 36626496, 36629028, 36634688, 36638093, 36642880, 36646177, 36651072, 36653255, 36655447, 36659264, 36661483, 36663765, 36667456, 36670028, 36672609, 36675648, 36678146, 36683840, 36687468, 36692032, 36695263, 36695589, 36695924, 36697920, 36700224, 36702241, 36704316, 36708416, 36710532, 36713494, 36716608, 36718809, 36721027, 36724800, 36727727, 36732992, 36736272, 36738464, 36741184, 36743434, 36745649, 36749376, 36751900, 36752191, 36752493, 36753801, 36755125, 36757568, 36759731, 36762691, 36765760, 36768133, 36770523, 36772160, 36631575, 36782144, 36784522, 36786738, 36790336, 36792635, 36794946, 36798528, 36800709, 36802960, 36806720, 36808995, 36811281, 36814912, 36817380, 36823104, 36826865, 36831296, 36833690, 36835328, 36836973, 36839488, 36841683, 36843863, 36847680, 36850153, 36852641, 36855872, 36858275, 36861021, 36864064, 36866630, 36869204, 36872256, 36875025, 36875345, 36875679, 36880448, 36884333, 36888640, 36891505, 36896832, 36899720, 36905024, 36907895, 36913216, 36915986, 36921408, 36924792, 36929600, 36932178, 36934479, 36937792, 36941214, 36944647, 36944936, 36945237, 36945514, 36945984, 36948845, 36951715, 36952014, 36952322, 36952616, 36952922, 36953207, 36954176, 36957394, 36962368, 36965913, 36970560, 36973296, 36976086, 36976373, 36976671, 36976948, 36978752, 36980408, 36982074, 36984106, 36986944, 36989026, 36991120, 36995136, 36997134, 36999876, 37003328, 37006010, 37008706, 37011520, 37013491, 37016276, 37019712, 37021160, 37022672, 37024464, 37027904, 37030089, 37032287, 37044288, 37046844, 37052480, 37055468, 37060672, 37063288, 37063602, 37063929, 37065988, 37068864, 37071157, 37073466, 37077056, 37079014, 37081422, 37085248, 37087141, 37089048, 37091458, 37093440, 37095338, 37097247, 37099157, 37101632, 37104743, 37107863, 37109824, 37111532, 37112852, 37114189, 37115464, 37116754, 37117027, 37117318, 37117621, 37118016, 37119633, 37121264, 37122858, 37126208, 37127999, 37129799, 37131551, 37134400, 37136180, 37137968, 37140096, 37142592, 37144773, 37146905, 37148802, 37150784, 37152326, 37153883, 37156342, 37158976, 37161520, 37164079, 37167168, 37169316, 37171425, 37175360, 37177360, 37179371, 37183552, 37185784, 37187683, 37189596, 37191744, 37193304, 37195297, 37197301, 37199936, 37201934, 37203922, 37205919, 37208128, 37210129, 37212119, 37214119, 37216320, 37218320, 37220310, 37222308, 37224512, 37226511, 37228499, 37230498, 37232704, 37234703, 37236693, 37238694, 37240896, 37242917, 37244930, 37246953, 37249088, 37251140, 37253176, 37257280, 37259325, 37261379, 37265472, 37267524, 37269564, 37273664, 37275702, 37277752, 37281856, 37283905, 37285947, 37290048, 37292082, 37294131, 37295628, 37049821, 37058074, 37306432, 37308457, 37310491, 37314624, 37317594, 37322816, 37326069, 37331008, 37333879, 37339200, 37342213, 37344482, 37347392, 37349924, 37355584, 37358722, 37363776, 37367031, 37371968, 37375401, 37380160, 37383150, 37388352, 37390904, 37391211, 37391531, 37391826, 37392130, 37394047, 37396544, 37398867, 37401199, 37401579, 37401970, 37402263, 37402567, 37402899, 37403241, 37403528, 37403824, 37404114, 37404736, 37407064, 37409403, 37412928, 37414768, 37416456, 37418156, 37421120, 37423208, 37424619, 37426044, 37429312, 37430928, 37433150, 37437504, 37440428, 37445696, 37448547, 37453888, 37456637, 37462080, 37464844, 37467601, 37470272, 37472803, 37475306, 37478464, 37480937, 37483425, 37486656, 37489184, 37494848, 37498031, 37503040, 37505912, 37511232, 37514670, 37518251, 37519424, 37522170, 37527616, 37530429, 37535808, 37538832, 37541868, 37544000, 37545883, 37547900, 37552192, 37555238, 37352471, 37568576, 37571560, 37574073, 37576768, 37579606, 37582456, 37584960, 37586493, 37588039, 37589537, 37591106, 37593152, 37595606, 37598069, 37601344, 37603931, 37609536, 37612718, 37614497, 37617728, 37619532, 37621343, 37625920, 37628922, 37634112, 37637534, 37638727, 37639925, 37642304, 37644025, 37645764, 37647517, 37650496, 37652816, 37654435, 37656063, 37658688, 37660098, 37662420, 37666880, 37669824, 37672182, 37675072, 37676725, 37678401, 37679509, 37683264, 37685177, 37691456, 37694489, 37696059, 37699648, 37701845, 37704054, 37707840, 37711049, 37716032, 37719086, 37721100, 37724224, 37725432, 37726631, 37732416, 37735789, 37740608, 37743641, 37746141, 37748800, 37751223, 37753652, 37756992, 37759334, 37761563, 37765184, 37767693, 37770215, 37773376, 37775983, 37778267, 37781568, 37783664, 37785770, 37787512, 37789760, 37791863, 37793979, 37797952, 37800080, 37801390, 37822464, 37830656, 37806144, 37809768, 37814336, 37818264, 37607106, 37664055, 37688888, 37802710, 37805190, 37805511, 37729994, 37847104, 37849084, 37851798, 37855296, 37858016, 37860748, 37861064, 37863488, 37866199, 37868921, 37871680, 37874220, 37876813, 37879872, 37882346, 37884838, 37888064, 37891220, 37892767, 37894322, 37896256, 37898104, 37900783, 37904448, 37906285, 37908129, 37912640, 37914968, 37916550, 37918149, 37920832, 37922652, 37925023, 37929024, 37931412, 37933198, 37937216, 37939163, 37941620, 37943571, 37945408, 37947149, 37949205, 37951275, 37953600, 37955314, 37957430, 37959556, 37960377, 37961792, 37963153, 37964525, 37965991, 37967470, 37967763, 37969984, 37973886, 37978176, 37982098, 37986368, 37986747, 37987141, 37989485, 37994560, 37997641, 38100992, 38109184, 38002752, 38005534, 38117376, 38125568, 38008323, 38010944, 38012616, 38015135, 38019136, 38020937, 38022748, 38027328, 38030513, 38032241, 38035520, 38037582, 38039654, 38043712, 38045825, 38047973, 38051904, 38053854, 38055810, 38056503, 38057209, 38057901, 38060096, 38062241, 38133760, 38141952, 38064395, 38068288, 38070482, 38076480, 38080154, 38081493, 38082840, 38084672, 38086368, 38087702, 38089046, 38090761, 38092864, 38096697, 37861392, 37910443, 37926888, 37935652, 37992147, 38074142, 38158400, 38160589, 38162791, 38166592, 38168789, 38170968, 38412288, 38420480, 38428672, 38436864, 38445056, 38453248, 38174784, 38177619, 38182976, 38186331, 38461440, 38469632, 38191168, 38194580, 38199360, 38200724, 38202096, 38204480, 38477824, 38486016, 38207552, 38209119, 38210694, 38212547, 38215744, 38217603, 38219470, 38223936, 38226217, 38228350, 38494208, 38502400, 38232128, 38235248, 38240320, 38242997, 38248512, 38251873, 38256704, 38260717, 38264896, 38267272, 38273088, 38276815, 38281280, 38283898, 38289472, 38293241, 38297664, 38301219, 38305856, 38307627, 38309407, 38314048, 38317323, 38319588, 38322240, 38326023, 38330432, 38333486, 38338624, 38340805, 38342996, 38346816, 38349753, 38352274, 38355008, 38357176, 38359356, 38363200, 38510592, 38518784, 38365388, 38367823, 38371392, 38374597, 38379584, 38381685, 38383796, 38387776, 38391363, 38395968, 38398854, 38404160, 38407971, 38180463, 38245681, 38269658, 38286526, 38535232, 38537405, 38539322, 38541249, 38543424, 38545269, 38548303, 38551616, 38553444, 38555282, 38557187, 38559808, 38563646, 38568000, 38570584, 38573176, 38576192, 38578620, 38580861, 38584384, 38585994, 38587615, 38592576, 38595206, 38600768, 38604129, 38608960, 38611614, 38613628, 38617152, 38619535, 38621928, 38625344, 38628455, 38633536, 38636153, 38638756, 38641728, 38643318, 38644920, 38647207, 38649920, 38652243, 38654577, 38658112, 38660624, 38662976, 38666304, 38670214, 38674496, 38677637, 38682688, 38684890, 38687101, 38690880, 38692758, 38694988, 38699072, 38702309, 38707264, 38710740, 38715456, 38718058, 38720666, 38723648, 38725834, 38728270, 38731840, 38734107, 38736385, 38740032, 38743087, 38745509, 38748224, 38750608, 38752984, 38756416, 38758608, 38761138, 38764608, 38766222, 38767844, 38772800, 38775819, 38780992, 38784496, 38797376, 38800881, 38805568, 38809032, 38813760, 38817235, 38819072, 38821952, 38823931, 38825919, 38830144, 38832510, 38834892, 38838336, 38841144, 38843963, 38846528, 38848935, 38850684, 38854720, 38856971, 38858498, 38862912, 38865311, 38866614, 38867926, 38871104, 38873414, 38876031, 38879296, 38880902, 38882517, 38883203, 38883899, 38887488, 38889862, 38890537, 38891223, 38892802, 38895680, 38897866, 38900066, 38901277, 38902497, 38903872, 38904894, 38905363, 38905841, 38908661, 38912064, 38914180, 38916309, 38917103, 38917911, 38920256, 38921438, 38924506, 38927584, 38928448, 38929254, 38930772, 38932300, 38934258, 38936640, 38937336, 38938042, 38940269, 38942502, 38944832, 38946885, 38949240, 38953024, 38954725, 38956377, 38958439, 38961216, 38963290, 38965377, 38969408, 38971468, 38973651, 38977600, 38979771, 38981957, 38985792, 38988028, 38989828, 38991638, 38993984, 38995796, 38997125, 38998464, 39002176, 39004463, 39006768, 39010368, 39012426, 39014494, 39018560, 39020676, 39022838, 39026752, 39029455, 39034944, 39037968, 39043136, 39045760, 39059520, 39062666, 39067712, 39070872, 39075904, 39078783, 39084096, 39087083, 39092288, 39094741, 39097203, 39100480, 39103139, 39108672, 39111729, 39116864, 39119841, 39125056, 39128017, 39130304, 39133248, 39135937, 39141440, 39144381, 39149632, 39152188, 39157824, 39161480, 39166016, 39168805, 39171602, 39174208, 39176545, 39182400, 39185703, 39185984, 39186276, 39186557, 39186847, 39187129, 39187419, 39187702, 39187994, 39188293, 39190592, 39193549, 39198784, 39201505, 39204238, 39206976, 39209551, 39212085, 39215168, 39217425, 39219693, 39219967, 39220252, 39220566, 39220892, 39221285, 39223360, 39226321, 39231552, 39234211, 39236880, 39239744, 39242415, 39247936, 39250962, 39256128, 39259147, 39264320, 39267343, 39272512, 39275534, 39280704, 39283730, 39288896, 39291947, 39297088, 39300137, 39305280, 39308333, 39321664, 39324713, 39329856, 39332906, 39338048, 39341100, 39346240, 39349289, 39354432, 39357481, 39362624, 39365674, 39370816, 39373866, 39379008, 39382056, 39387200, 39390250, 39395392, 39398441, 39400945, 39403584, 39406872, 39411776, 39414376, 39417065, 39419968, 39422782, 39425375, 39428160, 39430881, 39436352, 39439608, 39444544, 39446623, 39448710, 39452736, 39455018, 39457319, 39460928, 39463303, 39465691, 39469120, 39471504, 39474046, 39477312, 39479500, 39481699, 39485504, 39487852, 39490484, 39493696, 39495993, 39498308, 39499002, 39499750, 39501888, 39503165, 39505077, 39506999, 39508315, 39510080, 39512146, 39514217, 39518272, 39521068, 39526464, 39530092, 39531807, 39534656, 39536380, 39538069, 39539897, 39542848, 39544805, 39546718, 39551040, 39553449, 39555774, 39559232, 39561541, 39563861, 39575552, 39567424, 39569033, 39570624, 39572248, 39433622, 39592000, 39594657, 39600192, 39603383, 39608384, 39610906, 39613295, 39616576, 39619367, 39622166, 39624768, 39627301, 39628822, 39632960, 39634661, 39638667, 39641152, 39644859, 39649344, 39653254, 39657536, 39661451, 39663222, 39665728, 39667590, 39670661, 39673920, 39676660, 39682112, 39685725, 39687166, 39690304, 39691829, 39693924, 39698496, 39702086, 39706688, 39710473, 39714880, 39718745, 39719218, 39723072, 39724986, 39728336, 39731264, 39733185, 39734516, 39735808, 39737202, 39739456, 39741423, 39743402, 39747648, 39750192, 39755840, 39759648, 39764032, 39767532, 39772224, 39774929, 39780416, 39783221, 39785419, 39788608, 39792089, 39796800, 39800347, 39804992, 39809020, 39813184, 39817177, 39821376, 39823914, 39826462, 39829568, 39832440, 39837760, 39841203, 39678457, 39695331, 39854144, 39857249, 39862336, 39865248, 39870528, 39873469, 39878720, 39881557, 39886912, 39889742, 39892101, 39895104, 39897208, 39899321, 39903296, 39905828, 39908068, 39911488, 39913759, 39916041, 39919680, 39922455, 39927872, 39930608, 39932578, 39936064, 39938300, 39940551, 39944256, 39946622, 39949260, 39952448, 39954908, 39957381, 39960640, 39963453, 39964684, 39965974, 39968832, 39971080, 39973946, 39977024, 39979888, 39985216, 39988069, 39993408, 39995881, 39998365, 40001600, 40004321, 40006515, 40009792, 40012263, 40014746, 40017984, 40020450, 40022959, 40026176, 40027390, 40028661, 40030474, 40032348, 40034368, 40035638, 40036497, 40037413, 40039632, 40042560, 40045743, 40050752, 40052936, 40055130, 40058944, 40061213, 40062618, 40064035, 40065099, 40067136, 40068820, 40070517, 40075328, 40079322, 40083520, 40086718, 40088634, 40091712, 40093318, 40095995, 40099904, 40103290, 40116288, 40119610, 40124480, 40128409, 40129981, 40132672, 40134928, 40370176, 40378368, 40386560, 40394752, 40137196, 40140864, 40143992, 40149056, 40152144, 40157248, 40160439, 40165440, 40168310, 40170709, 40173632, 40175923, 40178180, 40181824, 40184069, 40190016, 40192988, 40198208, 40200992, 40203628, 40206400, 40209162, 40211878, 40214592, 40216443, 40218705, 40222784, 40224731, 40226688, 40230976, 40233209, 40235164, 40239168, 40241259, 40243291, 40247360, 40249607, 40251196, 40252845, 40255552, 40257492, 40260034, 40263744, 40266435, 40269139, 40269425, 40269723, 40270024, 40270334, 40270628, 40271936, 40274368, 40276809, 40280128, 40282536, 40284787, 40288320, 40290743, 40293182, 40294404, 40296512, 40298513, 40300525, 40304704, 40308095, 40309655, 40311224, 40312896, 40314420, 40316032, 40402944, 40411136, 40317657, 40318217, 40318788, 40321088, 40322313, 40323688, 40325072, 40326724, 40328385, 40329280, 40329899, 40331632, 40333378, 40337472, 40419328, 40427520, 40339707, 40341756, 40345664, 40348010, 40353856, 40357855, 40362048, 40363077, 40364115, 40365222, 40366337, 40121538, 40131566, 40147121, 40155375, 40163352, 40187080, 40195820, 40220977, 40221843, 40443968, 40447714, 40452160, 40455780, 40460352, 40461879, 40463417, 40468544, 40472473, 40476736, 40697856, 40706048, 40480139, 40484928, 40488324, 40493120, 40496346, 40501312, 40504877, 40509504, 40513342, 40517696, 40714240, 40722432, 40521035, 40525888, 40529500, 40531542, 40534080, 40536291, 40538510, 40542272, 40544497, 40546653, 40550464, 40554249, 40558656, 40561939, 40566848, 40569539, 40575040, 40578421, 40583232, 40586713, 40591424, 40594988, 40599616, 40730624, 40738816, 40747008, 40603671, 40607808, 40611758, 40616000, 40618430, 40624192, 40627657, 40632384, 40755200, 40763392, 40771584, 40779776, 40635626, 40637928, 40640576, 40644584, 40648768, 40650484, 40652210, 40653536, 40654871, 40656960, 40658138, 40660135, 40662140, 40663301, 40665152, 40666392, 40667640, 40668813, 40669996, 40673344, 40675629, 40677458, 40681536, 40684660, 40689728, 40693241, 40796224, 40799651, 40804416, 40806767, 40809129, 40812608, 40815275, 40815586, 40815906, 40817759, 40820800, 40823282, 40825774, 40828992, 40830853, 40833162, 40837184, 40839478, 40841785, 40845376, 40847871, 40850615, 40853568, 40856283, 40858974, 40861760, 40864203, 40866828, 40869952, 40872564, 40875228, 40878144, 40880709, 40882945, 40886336, 40888737, 40891210, 40894528, 40897027, 40899469, 40902720, 40905098, 40907541, 40910912, 40913034, 40915381, 40919104, 40921933, 40924797, 40927296, 40929843, 40932275, 40935488, 40938389, 40941302, 40942436, 40943680, 40946000, 40948345, 40951872, 40954583, 40956970, 40960064, 40962383, 40968256, 40971964, 40976448, 40979095, 40981711, 40984640, 40987263, 40992832, 40995593, 40997995, 41001024, 41003597, 41009216, 41013080, 41017408, 41019340, 41021281, 41025600, 41028954, 41031029, 41033792, 41035253, 41036724, 41038064, 41041984, 41045912, 40964769, 40990063, 41006143, 41039415, 41058368, 41061029, 41063725, 41066560, 41068968, 41074752, 41077628, 41082944, 41085771, 41091136, 41094059, 41099328, 41102289, 41107520, 41110888, 41115712, 41118494, 41123904, 41126659, 41132096, 41135249, 41135590, 41135943, 41140288, 41143137, 41145755, 41148480, 41151192, 41153912, 41154231, 41156672, 41158991, 41164864, 41168905, 41173056, 41175735, 41312256, 41320448, 41178425, 41181248, 41183952, 41189440, 41192429, 41192924, 41195003, 41197632, 41200706, 41202294, 41203893, 41204366, 41205824, 41207480, 41209173, 41210674, 41212185, 41214016, 41215063, 41216345, 41217645, 41219328, 41222208, 41223866, 41225533, 41226870, 41228217, 41230400, 41232317, 41233811, 41235320, 41238592, 41240677, 41242222, 41243784, 41245135, 41246784, 41248238, 41249705, 41251618, 41254976, 41257228, 41259497, 41263168, 41266093, 41268012, 41271360, 41273145, 41274882, 41279552, 41281904, 41283818, 41285692, 41287744, 41289103, 41290691, 41292243, 41293869, 41295936, 41297892, 41299800, 41301810, 41304128, 41305544, 41306919, 41308375, 41309786, 41071832, 41080443, 41088682, 41097008, 41105647, 41121238, 41161322, 41186930, 41129800, 41154558, 41195498, 41277279, 41336896, 41338896, 41340325, 41341773, 41343287, 41345088, 41346496, 41347917, 41349735, 41353280, 41356987, 41361472, 41363669, 41365881, 41369664, 41371655, 41374019, 41377856, 41380661, 41383478, 41384362, 41386048, 41387458, 41388880, 41389815, 41390762, 41392188, 41394240, 41396170, 41398110, 41399835, 41401570, 41401920, 41402432, 41404082, 41405744, 41406037, 41406342, 41406698, 41407063, 41407371, 41407688, 41410624, 41412601, 41414617, 41416644, 41418816, 41420201, 41423574, 41427008, 41430390, 41435200, 41437733, 41440278, 41443392, 41445907, 41451584, 41454952, 41456703, 41459776, 41461015, 41462313, 41462607, 41462913, 41464787, 41467968, 41469806, 41471652, 41473453, 41476160, 41478082, 41480014, 41481931, 41484352, 41590784, 41488408, 41492544, 41495590, 41500736, 41504215, 41508928, 41511484, 41517120, 41520376, 41522092, 41523767, 41524048, 41524339, 41524667, 41525312, 41525627, 41525951, 41528180, 41530421, 41533504, 41535198, 41537107, 41539026, 41541696, 41543460, 41545445, 41547378, 41549888, 41551422, 41554029, 41558080, 41559956, 41561788, 41562092, 41562406, 41562700, 41563002, 41563304, 41563615, 41566272, 41567754, 41568054, 41568365, 41568661, 41568966, 41570991, 41574464, 41577034, 41579615, 41582656, 41584350, 41585348, 41586358, 41588142, 41607232, 41609721, 41612220, 41615424, 41617619, 41619778, 41621949, 41623616, 41624590, 41627148, 41631808, 41633932, 41636064, 41640000, 41642217, 41644412, 41648192, 41650546, 41652911, 41656384, 41658429, 41660484, 41662553, 41664576, 41666479, 41669221, 41672768, 41674789, 41676822, 41680960, 41683073, 41685622, 41689152, 41691831, 41694521, 41697344, 41699576, 41701206, 41702849, 41705536, 41707489, 41708194, 41708911, 41710363, 41711823, 41713728, 41715350, 41717269, 41719200, 41721920, 41723634, 41724947, 41726268, 41727897, 41730112, 41731445, 41732788, 41734406, 41736034, 41738304, 41740035, 41741690, 41743352, 41746496, 41748052, 41749618, 41751192, 41752840, 41754688, 41756309, 41757943, 41759251, 41760566, 41762880, 41764207, 41765513, 41766827, 41768387, 41771072, 41773303, 41775546, 41779264, 41781593, 41783536, 41785616, 41787456, 41789032, 41789338, 41789655, 41795648, 41798715, 41799041, 41799375, 41799657, 41799950, 41803840, 41805853, 41807743, 41809643, 41812032, 41813781, 41815619, 41817442, 41820224, 41822130, 41824034, 41825942, 41828416, 41830654, 41832264, 41833887, 41836608, 41838179, 41839737, 41841308, 41842841, 41844800, 41846406, 41848024, 41849677, 41852992, 41854715, 41856501, 41858235, 41629714, 41678920, 41792710, 41801998, 41638267, 41869376, 41870988, 41872441, 41873903, 41875379, 41877568, 41878944, 41880329, 41881852, 41883439, 41885760, 41886912, 41888771, 41890639, 41893952, 41896351, 41902144, 41906038, 41910336, 41913831, 41918528, 41922018, 41923935, 41926720, 41929095, 41931485, 41934912, 41936997, 41938725, 41940461, 41943104, 41945484, 41947346, 41949217, 41951296, 41953171, 41955360, 41959488, 41961741, 41964006, 41967680, 41969840, 41972304, 41975872, 41978335, 41980806, 41984064, 41986252, 41988317, 41992256, 41994119, 41995990, 41997804, 42000448, 42002437, 42004440, 42006262, 42008640, 42011183, 42013743, 42014751, 42016832, 42019287, 42021803, 42025024, 42027088, 42029339, 42033216, 42035516, 42037827, 42041408, 42043670, 42043975, 42044296, 42049600, 42053218, 42057792, 42061322, 42061640, 42061968, 42065984, 42068842, 42070435, 42072087, 42074176, 42075779, 42077786, 42079861, 42082368, 42083756, 42085297, 42086847, 42090560, 42093476, 42093752, 42094037, 42094318, 42094609, 42096321, 42098752, 42101179, 42106944, 42110477, 42115136, 42118021, 42119729, 41900237, 42103623, 42131520, 42133689, 42135035, 42136390, 42137807, 42139712, 42141826, 42143956, 42147904, 42150571, 42156096, 42159590, 42164288, 42167803, 42172480, 42175307, 42180672, 42183450, 42188864, 42191660, 42197056, 42200683, 42205248, 42208880, 42209174, 42209478, 42209762, 42210056, 42210352, 42210659, 42210949, 42211252, 42211534, 42211826, 42212120, 42212425, 42212736, 42213057, 42213440, 42213743, 42216016, 42218301, 42221632, 42224686, 42225029, 42225381, 42229824, 42233153, 42238016, 42241282, 42246208, 42385408, 42393600, 42250153, 42254400, 42257898, 42262592, 42266065, 42270784, 42274386, 42278976, 42282536, 42284094, 42287168, 42288821, 42290539, 42291853, 42295360, 42297465, 42299623, 42303552, 42306419, 42308221, 42311744, 42313549, 42315365, 42317224, 42319936, 42321799, 42323672, 42325570, 42328128, 42330025, 42331933, 42333828, 42336320, 42338216, 42340124, 42341985, 42344512, 42346405, 42348307, 42352704, 42355766, 42360896, 42363899, 42369088, 42372073, 42377280, 42380210, 42410048, 42412964, 42418240, 42421071, 42426432, 42429277, 42434624, 42437491, 42442816, 42445651, 42447626, 42449614, 42449919, 42450236, 42450545, 42451008, 42451329, 42451662, 42451960, 42452267, 42454696, 42456600, 42459200, 42461273, 42463191, 42465120, 42467392, 42469296, 42471187, 42473090, 42475584, 42477502, 42479410, 42481331, 42483776, 42485610, 42487998, 42491968, 42494351, 42496286, 42500160, 42501992, 42504377, 42508352, 42512251, 42663936, 42672128, 42516544, 42520468, 42524736, 42526850, 42528975, 42532928, 42535527, 42541120, 42680320, 42688512, 42543948, 42546266, 42549312, 42550613, 42551934, 42553386, 42554855, 42555151, 42557504, 42561280, 42565696, 42568158, 42570630, 42573888, 42576342, 42578206, 42582080, 42584500, 42586872, 42590272, 42592730, 42594504, 42596289, 42598464, 42600154, 42601852, 42603561, 42606656, 42608354, 42611286, 42614848, 42617160, 42619487, 42623040, 42625369, 42631232, 42634211, 42636448, 42639424, 42641487, 42643563, 42647616, 42651059, 42655808, 42658353, 42660921, 42704960, 42708174, 42713152, 42715788, 42721344, 42724357, 42729536, 42732967, 42737728, 42740370, 42743041, 42745920, 42748757, 42754112, 42756912, 42762304, 42765106, 42767490, 42770496, 42772532, 42774576, 42778688, 42781798, 42786880, 42789423, 42791262, 42793113, 42795072, 42958848, 42967040, 42796314, 42798853, 42975232, 42983424, 42803264, 42805322, 42807394, 42811456, 42813577, 42815930, 42819648, 42822682, 42827840, 42830032, 42832235, 42832525, 42832828, 42836032, 42839053, 42844224, 42847208, 42849408, 42852416, 42854351, 42856237, 42858233, 42860608, 42862528, 42864462, 42866107, 42867761, 42868110, 42868800, 42871443, 42874098, 42875467, 42876992, 42878340, 42879642, 42881412, 42883128, 42885184, 42886422, 42888171, 42889932, 42893376, 42896379, 42901568, 42904583, 42905720, 42906867, 42909760, 42912038, 42913286, 42914540, 42915338, 42916145, 42917952, 42918851, 42920650, 42922458, 42926144, 42929181, 42931534, 42934336, 42935686, 42937043, 42939288, 42942528, 42943710, 42944902, 42945548, 42946204, 42950720, 42953824, 42955942, 42718439, 42727390, 42751540, 42759699, 42999872, 43002419, 43004974, 43008064, 43010841, 43011135, 43011439, 43013484, 43016256, 43018676, 43021107, 43024448, 43026867, 43029353, 43032640, 43035180, 43253760, 43261952, 43040832, 43044394, 43049024, 43051323, 43053574, 43057216, 43059705, 43062285, 43065408, 43068554, 43073600, 43075721, 43077853, 43081792, 43084661, 43089984, 43092646, 43095141, 43098176, 43100518, 43102867, 43106368, 43108854, 43114560, 43117406, 43119965, 43122752, 43123985, 43125229, 43127387, 43130944, 43133204, 43135469, 43139136, 43141117, 43142761, 43144418, 43144702, 43147328, 43149972, 43152630, 43153142, 43155520, 43157862, 43160214, 43163712, 43165754, 43167938, 43171904, 43174360, 43180096, 43183404, 43186722, 43188288, 43189171, 43190595, 43192086, 43194163, 43196480, 43197546, 43198583, 43200663, 43204672, 43206608, 43208608, 43208993, 43209387, 43210724, 43270144, 43278336, 43212864, 43214202, 43215552, 43217806, 43221056, 43223111, 43225175, 43227077, 43229248, 43232309, 43237440, 43239642, 43241858, 43245632, 43247894, 43250605, 43037735, 43087271, 43176827, 43294784, 43297736, 43302976, 43305672, 43307564, 43309465, 43311168, 43312553, 43313882, 43315221, 43319360, 43321927, 43327552, 43331581, 43335744, 43338309, 43340959, 43343936, 43345929, 43347931, 43352128, 43354879, 43357493, 43360320, 43363012, 43365714, 43368512, 43370071, 43372892, 43376704, 43379000, 43381307, 43382246, 43383195, 43384896, 43386496, 43389290, 43393088, 43396032, 43401280, 43404331, 43409472, 43411757, 43414054, 43417664, 43420384, 43423037, 43425856, 43427484, 43429122, 43434048, 43548672, 43556864, 43437029, 43439430, 43442240, 43445159, 43565056, 43573248, 43450432, 43453831, 43581440, 43589632, 43458624, 43462664, 43597824, 43606016, 43466816, 43470462, 43475008, 43476650, 43478305, 43480023, 43483200, 43485842, 43488491, 43491392, 43494012, 43495417, 43499584, 43502511, 43505450, 43507776, 43509816, 43512007, 43515968, 43518061, 43520164, 43521724, 43524160, 43525626, 43527104, 43532352, 43535057, 43540544, 43543475, 43622464, 43625376, 43627350, 43630656, 43633113, 43638848, 43642122, 43647040, 43649768, 43652509, 43655232, 43657405, 43659859, 43663424, 43665863, 43668313, 43671616, 43673628, 43679808, 43682896, 43688000, 43690705, 43696192, 43699736, 43704384, 43706852, 43712576, 43716103, 43720768, 43723304, 43725861, 43728960, 43732146, 43737152, 43739290, 43741443, 43745344, 43747924, 43753536, 43756584, 43761728, 43764442, 43766994, 43769920, 43771714, 43773765, 43778112, 43780621, 43782577, 43786304, 43788429, 43790564, 43794496, 43796589, 43799044, 43802688, 43805463, 43808248, 43810880, 43813185, 43819072, 43822798, 43827264, 43829616, 43832074, 43835456, 43838657, 43843648, 43846765, 43851840, 43854261, 43856694, 43860032, 43862250, 43864744, 43868224, 43870691, 43873167, 43635582, 43676710, 43884608, 43887453, 43892800, 43896207, 43900992, 43904042, 43905878, 43909184, 43911317, 43913458, 43917376, 43919745, 43925568, 43929006, 43930961, 43933760, 43935953, 43938155, 43941952, 43944099, 43947030, 43950144, 43952127, 43954120, 43958336, 43961428, 43966528, 43969803, 43971914, 43974720, 43976983, 43978927, 43980849, 43982912, 43986417, 43991104, 43993247, 43995400, 43997246, 43999296, 44001052, 44002818, 44007488, 44009818, 44011047, 44012287, 44012741, 44013204, 44015680, 44017184, 44018501, 44019825, 44023872, 44025920, 44027462, 44029016, 44032064, 44034279, 44034553, 44034833, 44036840, 44040256, 44042703, 44045159, 44045506, 44045862, 44046350, 44048448, 44050451, 44052405, 44054176, 44056640, 44058726, 44060823, 44064832, 44066983, 44069358, 44073024, 44075034, 44077055, 44078774, 44081216, 44083332, 44085458, 44089408, 44091435, 44093538, 44095653, 44095949, 44097600, 44099679, 44101771, 44105792, 44107848, 44110449, 44113984, 44115757, 44117546, 44122176, 44124769, 44126957, 44129151, 44130368, 44131056, 44132143, 44133245, 44146752, 44149593, 44154944, 44157756, 44163136, 44165948, 44171328, 44174132, 44179520, 44182326, 44187712, 44190528, 44195904, 44198710, 44204096, 44207245, 44212288, 44215068, 44220480, 44223313, 44225916, 44228672, 44231215, 44233767, 44236864, 44239453, 44242043, 44245056, 44248076, 44253248, 44256203, 44261440, 44264457, 44269632, 44272242, 44274864, 44277824, 44280439, 44283040, 44286016, 44288565, 44291123, 44294208, 44296769, 44299406, 44302400, 44302720, 44303050, 44306177, 44309320, 44309663, 44310592, 44313205, 44315826, 44318784, 44321350, 44323440, 44326976, 44330239, 44335168, 44338468, 44343360, 44346643, 44351552, 44355584, 44359744, 44363654, 44367936, 44371270, 44376128, 44379567, 44384320, 44387083, 44392512, 44395265, 44408896, 44411609, 44414334, 44417088, 44419734, 44422005, 44425280, 44428010, 44430698, 44433472, 44435373, 44437806, 44441664, 44444700, 44449856, 44452896, 44458048, 44461090, 44466240, 44469280, 44474432, 44477110, 44479798, 44482624, 44485000, 44490816, 44493912, 44496280, 44499008, 44500864, 44502794, 44504863, 44507200, 44509531, 44511874, 44512171, 44512478, 44515392, 44517530, 44520220, 44523584, 44525410, 44527248, 44529439, 44531776, 44533113, 44534457, 44536369, 44538290, 44539968, 44541348, 44543248, 44545155, 44548160, 44550780, 44552793, 44556352, 44558443, 44560491, 44564544, 44566691, 44568439, 44570138, 44572736, 44575195, 44577804, 44580928, 44582545, 44585436, 44586802, 44589120, 44590382, 44591659, 44594124, 44596599, 44597312, 44598868, 44599336, 44601026, 44602472, 44603555, 44605504, 44607669, 44608138, 44611474, 44613696, 44617008, 44618489, 44621888, 44623584, 44626244, 44630080, 44632603, 44634234, 44638272, 44639987, 44643748, 44644236, 44646464, 44648066, 44650334, 44662784, 44653056, 44654656, 44657537, 44679232, 44683039, 44683604, 44684180, 44687424, 44689869, 44691391, 44692926, 44695616, 44697911, 44699778, 44701656, 44702629, 44703808, 44704563, 44705331, 44706527, 44707735, 44708457, 44709193, 44709784, 44710385, 44710927, 44712000, 44712541, 44713093, 44715616, 44720192, 44722795, 44725411, 44728384, 44730983, 44733531, 44736576, 44739490, 44742424, 44742744, 44744768, 44747656, 44750561, 44750880, 44752960, 44755750, 44761152, 44764107, 44769344, 44772177, 44777536, 44780482, 44785728, 44788657, 44793920, 44796352, 44798795, 44802112, 44804562, 44806990, 44810304, 44812739, 44815186, 44818496, 44820943, 44823373, 44826688, 44828906, 44831135, 44834880, 44838466, 44840300, 44843072, 44844787, 44846513, 44848083, 44851264, 44852880, 44854508, 44855850, 44857203, 44859456, 44860716, 44862943, 44865184, 44867648, 44869636, 44871608, 44875840, 44878964, 44882101, 44884032, 44885601, 44888505, 44892224, 44894744, 44897276, 44900416, 44902457, 44904865, 44908608, 44911092, 44913588, 44916800, 44919333, 44921858, 44924992, 44927389, 44929793, 44931207, 44718152, 44758560, 44767074, 44775018, 44783442, 44791595, 44792818, 44849663, 44941376, 44943757, 44946095, 44949568, 44952149, 44954653, 44957760, 44960255, 44965952, 44969352, 44974144, 44976980, 44979879, 44982336, 44983877, 44986722, 44990528, 44992237, 44994969, 44998720, 45001965, 45003336, 45006912, 45008541, 45010182, 45012126, 45015104, 45017263, 45019434, 45023296, 45025608, 45027696, 45029791, 45031488, 45033480, 45035254, 45037036, 45039680, 45041731, 45043840, 45045958, 45047872, 45049563, 45051707, 45053868, 45056064, 45058156, 45059962, 45061774, 45064256, 45065961, 45067881, 45069759, 45070053, 45070358, 45070630, 45070912, 45071200, 45072448, 45074903, 45077369, 45080640, 45083067, 45084634, 45088832, 45091971, 45095121, 45097024, 45098817, 45101648, 45105216, 45107927, 45110655, 45113408, 45116112, 45118012, 45121600, 45123748, 45441024, 45449216, 45125909, 45129792, 45132905, 45137984, 45141019, 45146176, 45457408, 45465600, 45149991, 45154368, 45158210, 45162560, 45166293, 45170752, 45174473, 45178944, 45182029, 45187136, 45191066, 45195328, 45198428, 45203520, 45207560, 45211712, 45473792, 45481984, 45215345, 45219904, 45223076, 45228096, 45231275, 45236288, 45240038, 45244480, 45490176, 45498368, 45506560, 45514752, 45247027, 45252672, 45256509, 45260864, 45264779, 45269056, 45272840, 45277248, 45522944, 45531136, 45281176, 45285440, 45539328, 45547520, 45555712, 45563904, 45289365, 45293632, 45572096, 45580288, 45588480, 45596672, 45297414, 45301824, 45305176, 45310016, 45313175, 45318208, 45322124, 45326400, 45329862, 45334592, 45338149, 45342784, 45345359, 45347163, 45604864, 45613056, 45350976, 45354628, 45621248, 45629440, 45637632, 45645824, 45359168, 45362189, 45654016, 45662208, 45367360, 45371074, 45670400, 45678592, 45375552, 45378912, 45686784, 45694976, 45703168, 45711360, 45383744, 45385884, 45388035, 45391936, 45394050, 45400128, 45719552, 45727744, 45403946, 45406022, 45735936, 45744128, 45752320, 45760512, 45408320, 45412369, 45416512, 45420551, 45424704, 45427228, 45768704, 45776896, 45785088, 45793280, 45801472, 45809664, 45432896, 45436419, 45817856, 45826048, 45842496, 45846536, 46833664, 46841856, 46850048, 46858240, 46866432, 46874624, 45850688, 45854595, 45858880, 45862650, 45867072, 45871119, 46882816, 46891008, 45875264, 46899200, 46907392, 46915584, 46923776, 46931968, 46940160, 46948352, 46956544, 46964736, 45879322, 45881108, 45883456, 45884718, 45885991, 45888398, 45891648, 45894058, 45896476, 45899840, 45901944, 45903978, 45908032, 45910012, 45912004, 45916224, 45918709, 45921030, 45924416, 45926575, 45928742, 45929012, 45929294, 45932608, 45935096, 45937341, 45940800, 45943956, 45948992, 45952005, 45957184, 45960925, 45965376, 45968384, 45971403, 45973568, 45975048, 45975316, 45975595, 45977576, 45979565, 45981760, 45983596, 45984681, 45985826, 45989952, 45992948, 45998144, 46001347, 46006336, 46008976, 46014528, 46017614, 46022720, 46026313, 46972928, 46981120, 46030912, 46033481, 46039104, 46042451, 46047296, 46049209, 46051132, 46055488, 46057872, 46063680, 46067663, 46071872, 46075208, 46080064, 46083121, 46088256, 46091490, 46096448, 46099095, 46101725, 46104640, 46107620, 46112832, 46115817, 46121024, 46123424, 46125836, 46129216, 46131956, 46137408, 46140273, 46141933, 46145600, 46148627, 46153792, 46155883, 46157993, 46158774, 46159506, 46160183, 46160868, 46989312, 46161984, 46163448, 46164918, 46170176, 46174036, 46178368, 46181392, 46182873, 46184576, 46186560, 46189408, 46190676, 46191853, 46194752, 46196751, 46198034, 46199765, 46202944, 46204764, 46207073, 46211136, 46212639, 46214016, 46215432, 46218173, 46218498, 46219328, 46220825, 46222489, 46223987, 46227520, 46229968, 46233387, 46235712, 46239239, 46240537, 46242379, 46243904, 46245742, 46247316, 46252096, 46253540, 46256147, 46997504, 46257970, 46260288, 46262924, 46264210, 46265761, 46268480, 46272105, 46273416, 46274578, 46276672, 46279716, 47005696, 46280208, 46281755, 46284864, 46286109, 46287211, 47013888, 46288697, 46290286, 46293056, 46294506, 46296789, 46301248, 46304480, 46305930, 46309440, 46310817, 46313661, 46315062, 46317632, 46319023, 46321143, 46325824, 46329592, 46331134, 46334016, 46335506, 46337821, 46339292, 46342208, 46343554, 46345815, 46346151, 46346497, 46347997, 46350400, 46351823, 46353182, 46354626, 46355815, 46358592, 46361720, 46363131, 46366784, 46368140, 46369614, 47022080, 46371391, 46374976, 46377912, 46379486, 46381070, 46383168, 46386301, 46387889, 46391360, 47030272, 46393133, 46394620, 46397536, 46399552, 46402652, 46407744, 46411209, 46415936, 46419976, 46424128, 46426664, 46428354, 46430700, 47038464, 46432320, 46433875, 46436506, 46440512, 46443969, 46445289, 46446471, 46448704, 46449951, 46451407, 46456896, 46459183, 46461481, 46462918, 46465088, 46466500, 46468935, 46470366, 46473280, 46474759, 46477838, 46481472, 46483776, 46485288, 46487617, 46489664, 46492863, 46494314, 46497856, 46499273, 46501565, 46506048, 46509753, 46514240, 46517502, 46519021, 46522432, 46524132, 46528015, 46530624, 46534073, 46535500, 46537076, 46538816, 46542274, 46547008, 46550873, 46555200, 46558384, 46559909, 46563392, 46566065, 46568747, 46571584, 46574192, 46575687, 46577134, 46579776, 46581616, 46583082, 46584502, 46585984, 46587968, 46589375, 46590736, 46592364, 46593943, 46596160, 46597893, 46598182, 46598489, 46600556, 46600961, 46604352, 46606240, 46608146, 46610043, 46612544, 46614423, 46616309, 46618189, 46620736, 46622607, 46624405, 46626208, 46628928, 46630530, 46632169, 46633822, 46637120, 46639793, 46641652, 46645312, 46648402, 46653504, 46656059, 46658623, 46658899, 46659188, 46661696, 46663634, 46665506, 46667331, 46669888, 46671751, 46678080, 47046656, 47054848, 46681697, 46686272, 46689757, 46694464, 46697000, 46697269, 46697559, 46697845, 46698141, 46698397, 46698674, 46698929, 46699204, 46699484, 46699760, 46700040, 46700317, 46700573, 46700851, 46701104, 46701381, 46701710, 46702051, 46702656, 46702997, 46703281, 46703638, 46703924, 46704283, 46704581, 46704939, 46705238, 46705600, 46705888, 46706191, 46706454, 46706741, 46707010, 46707290, 46707559, 46707839, 46708109, 46708390, 46708650, 46708934, 46709201, 46709479, 46709747, 46710037, 46710327, 46710848, 46711135, 46711463, 46711802, 46712132, 46712455, 46713086, 46713357, 46713637, 46713893, 46714171, 46714426, 46714702, 46714958, 46717005, 46717274, 46717532, 46717889, 46718169, 46718533, 46719040, 46719301, 46719587, 46719870, 46720149, 46720422, 46720703, 46720980, 46722107, 46722393, 46722679, 46723832, 46724119, 46724396, 46724746, 46725119, 46725451, 46725755, 46726010, 46726289, 46726572, 46726833, 46727232, 46727516, 46727811, 46728145, 46728465, 46729150, 46729450, 46730151, 46730416, 46730772, 46731060, 46731327, 46731629, 46731919, 46732244, 46733824, 46735424, 46737035, 46737290, 46737572, 46738775, 46739034, 46739317, 46739574, 46741549, 46741826, 46743616, 46745614, 46745903, 46746159, 46746459, 46746738, 46747005, 46747328, 46747618, 46747912, 46749784, 46751808, 46753642, 46754862, 46756104, 46756455, 46756789, 46757164, 46757522, 46757778, 46758044, 46758324, 46758640, 46758916, 46759254, 46759545, 46760000, 46760313, 46760597, 46760856, 46761139, 46761791, 46762051, 46762336, 46762997, 46763382, 46763671, 46764080, 46764358, 46764656, 46764955, 46765522, 46765781, 46766063, 46768192, 46769803, 46770066, 46771647, 46771934, 46772835, 46773193, 46774108, 46774367, 46774751, 46775034, 46776384, 46778035, 46778316, 46778573, 46778854, 46779111, 46780786, 46781065, 46781317, 46783138, 46784576, 46786419, 46786679, 46786961, 46787321, 46787609, 46787932, 46788243, 46788511, 46789475, 46789766, 46790024, 46790959, 46791239, 46792768, 46794078, 46794575, 46795912, 46796198, 46797489, 46797799, 46798085, 46799368, 46799674, 46800960, 46802968, 46803304, 46803561, 46805543, 46805823, 46806663, 46806967, 46807291, 46808142, 46808535, 46809152, 46810687, 46810945, 46811226, 46812784, 46813064, 46813368, 46814470, 46814969, 46815489, 46817344, 46818456, 46820262, 46820566, 46822589, 46822914, 46823231, 46825536, 46827338, 46827625, 46827935, 46830140, 46832319, 46832884, 45906024, 45955028, 46011632, 46036066, 46038372, 46094125, 46110610, 46118811, 46134808, 46151689, 46166443, 46175461, 46201360, 46266242, 46298243, 46323331, 46324995, 46325334, 46332954, 46333207, 46404668, 46413078, 46421698, 46422083, 46503334, 46511564, 46520817, 46521176, 46521559, 46521943, 46529557, 46529904, 46544203, 46544604, 46545029, 46545431, 46545856, 46546299, 46552288, 46552623, 46675361, 47071296, 47073557, 47073928, 47074322, 47074570, 47074842, 47079488, 47083353, 47085385, 47087680, 47089468, 47091219, 47093154, 47095872, 47097519, 47099121, 47100209, 47101258, 47102229, 47104064, 47105489, 47106865, 47108588, 47110320, 47110764, 47111217, 47112256, 47113002, 47114776, 47116560, 47117459, 47118371, 47120448, 47121523, 47122249, 47122985, 47123359, 47123696, 47123982, 47124278, 47124553, 47124854, 47125114, 47125399, 47125691, 47126004, 47128640, 47130740, 47131127, 47131525, 47131815, 47132112, 47133037, 47133970, 47134230, 47134498, 47136832, 47138335, 47139729, 47141135, 47142803, 47144484, 47145024, 47145301, 47146657, 47148022, 47149049, 47150026, 47151506, 47153216, 47154963, 47156723, 47161408, 47163238, 47165077, 47165746, 47169600, 47173357, 47177792, 47179293, 47180801, 47181049, 47181320, 47181582, 47181868, 47182124, 47182402, 47182708, 47183034, 47185984, 47188020, 47189132, 47190268, 47191523, 47194176, 47195636, 47197115, 47199123, 47201158, 47201461, 47202368, 47205457, 47208499, 47209354, 47210560, 47212511, 47214473, 47215725, 47216936, 47217280, 47217726, 47218752, 47221167, 47223592, 47226944, 47229236, 47231480, 47233737, 47234039, 47235136, 47238364, 47243328, 47246729, 47249422, 47251520, 47253317, 47255962, 47259712, 47262124, 47264545, 47267904, 47269883, 47271169, 47272465, 47273780, 47276096, 47277938, 47279790, 47281125, 47282468, 47284288, 47285929, 47287885, 47289850, 47292480, 47294451, 47296296, 47298150, 47300672, 47302569, 47304846, 47308864, 47310758, 47312661, 47313568, 47314485, 47315604, 47317056, 47319755, 47323486, 47325248, 47329076, 47333440, 47337032, 47338956, 47341632, 47344321, 47347020, 47347873, 47348737, 47349824, 47350448, 47351424, 47352411, 47352996, 47353593, 47358016, 47361771, 47363677, 47366208, 47367307, 47368414, 47370339, 47372280, 47374400, 47376328, 47379334, 47382592, 47384718, 48111616, 48119808, 47386852, 47390784, 47392940, 47395791, 47398976, 47402979, 47407168, 47410550, 47415360, 47418031, 47423552, 47426347, 47431744, 47435482, 47439936, 47441746, 47443565, 47448128, 47452107, 47456320, 47459445, 47461132, 47462830, 47464512, 47465665, 47467610, 47472704, 47476241, 47480896, 47483820, 48128000, 48136192, 48144384, 48152576, 47486756, 47489088, 47491039, 47497280, 47500672, 47505472, 47508754, 47511143, 47513664, 47517499, 48160768, 48168960, 47521856, 47524445, 47527045, 47530048, 47532498, 47538240, 47541540, 47546432, 47549059, 47551200, 47554624, 47557111, 47562816, 47566090, 47571008, 47574699, 47579200, 47580685, 47582180, 47583969, 47587392, 47589670, 47591960, 47595584, 47598137, 47599653, 47601181, 47603776, 47605347, 47607896, 47611968, 47613525, 47615094, 47617006, 47620160, 47621630, 47623109, 47628352, 47630952, 47631904, 47632868, 47636544, 47638649, 47641035, 47644736, 47648295, 47652928, 47655709, 47658499, 47661120, 47663343, 47665619, 47669312, 47671602, 47673905, 47677504, 47680229, 47685696, 47688830, 47693888, 47696439, 47698493, 47702080, 47705837, 47710272, 47713600, 47718464, 47720778, 47723105, 47726656, 47728773, 47730638, 47732515, 47734848, 47736918, 47738999, 47743040, 47745068, 47747105, 47751232, 47754083, 47756619, 47759424, 47761334, 47763258, 47767616, 47769943, 47772542, 47775808, 47778073, 47780348, 47784000, 47786452, 47788923, 47792192, 47794113, 47796044, 47800384, 47802805, 47805448, 47808576, 47810117, 47811616, 47813920, 47816768, 47818608, 47820399, 47822193, 47824960, 47826431, 47827857, 47829867, 47833152, 47835075, 47836948, 47838601, 47841344, 47842556, 47843777, 47845968, 47849536, 47851410, 47853240, 47854949, 47857728, 47859192, 47860665, 47862694, 47865920, 47868611, 47871311, 47874112, 47876155, 47877731, 47879317, 47882304, 47884022, 47885911, 47887811, 47890496, 47892514, 47895078, 47898688, 47901042, 47903408, 47906880, 47909346, 47912055, 47915072, 47916395, 47917676, 47919443, 47923264, 47926277, 47931456, 47934192, 47936636, 47939648, 47941777, 47943106, 47944446, 47947840, 47950184, 47952783, 47956032, 47957755, 47959462, 47961179, 47964224, 47966119, 47968950, 47972416, 47974819, 47977232, 47980608, 47982372, 47984212, 47986062, 47988800, 47990653, 47992003, 47993362, 47995068, 47996992, 47998801, 48000621, 48002062, 48003514, 48005184, 48006588, 48008622, 48010666, 48013376, 48015756, 48018495, 48021568, 48023647, 48025680, 48027484, 48029760, 48031975, 48034199, 48037952, 48039851, 48041605, 48043370, 48046144, 48047904, 48049740, 48051594, 48054336, 48055997, 48057947, 48062528, 48065873, 48070720, 48073844, 48078912, 48080937, 48082969, 48084631, 48086305, 48086637, 48087104, 48089281, 48091467, 48093075, 48095296, 48098132, 48100995, 48103488, 48104816, 48107157, 48109508, 48109808, 47159550, 47166423, 47168184, 47168478, 47168783, 47169069, 47177125, 47177398, 48185408, 48188899, 48193600, 48195383, 48197175, 48197508, 48197852, 48198190, 48198539, 48201792, 48203604, 48209984, 48213312, 48218176, 49225728, 48221436, 48226368, 48230289, 48234560, 48237094, 48239639, 48242752, 48245478, 48250944, 48254116, 48255994, 48259136, 48260636, 48262144, 48264377, 48267328, 48269674, 48272033, 48275520, 48277269, 48278874, 48280489, 48282049, 48283712, 48285343, 48286983, 48291904, 48295091, 48297076, 48300096, 48302989, 48305893, 48308288, 48310454, 48312905, 48316480, 48318425, 48320385, 48324672, 48327445, 48329425, 48332864, 48335416, 48337979, 48341056, 48343162, 48345487, 48349248, 48351120, 48353003, 48355143, 48357440, 48360169, 48362910, 48365632, 48368019, 48370101, 48373824, 48375816, 48377819, 48378122, 48378437, 48382016, 48383979, 48385634, 48390208, 48393274, 48398400, 48400455, 48402519, 48404248, 48406592, 48408271, 48409958, 48411975, 48414784, 48416676, 48418588, 48420561, 48422976, 48425299, 48427635, 48431168, 48433394, 48435308, 48439360, 48441493, 48443636, 48445254, 48447552, 48449679, 48451817, 48455744, 48457698, 48459837, 48461980, 48463936, 48465744, 48467297, 48468859, 48472128, 48473781, 48475355, 48476941, 48478283, 48480320, 48482045, 48483779, 48485447, 48488512, 48490001, 48491502, 48493194, 48496704, 48498472, 48500246, 48501845, 48504896, 48506530, 48508174, 48509866, 48511568, 48513088, 48514457, 48516078, 48517708, 48519373, 48521280, 48522887, 48524500, 48525589, 48526704, 48529472, 48531185, 48533320, 48535535, 48537664, 48539410, 48541355, 48543258, 48545856, 48547335, 48549245, 48551165, 48554048, 48555662, 48557503, 48562240, 48566223, 48570432, 48572239, 48574034, 48575459, 48578624, 48580456, 48582275, 48584099, 48586816, 48588384, 48589959, 48595008, 48597809, 48599901, 48603200, 48604767, 48606345, 48608066, 48611392, 48613186, 48614989, 48616741, 48619584, 48620966, 48622358, 48624277, 48627776, 48629601, 48631368, 48632970, 48635968, 48637495, 48639034, 48640445, 48641865, 48644160, 48645907, 48647773, 48649651, 48652352, 48653862, 48655279, 48656706, 48658285, 48660544, 48661834, 48663131, 48664595, 48666070, 48668736, 48670274, 48672183, 48674157, 48676928, 48678403, 48679947, 48681500, 48681817, 48682144, 48682450, 48682768, 48685120, 48687127, 48689275, 48691435, 48693312, 48694906, 48697935, 48701504, 48703384, 48705279, 48707284, 48709696, 48711757, 48713831, 48717888, 48720177, 48722694, 48726080, 48727817, 48729565, 48734272, 48736961, 48738606, 48740260, 48742464, 48744465, 48746909, 48750656, 48753064, 48755482, 48758848, 48760515, 48762636, 48764768, 48767040, 48768628, 48770320, 48772023, 48775232, 48778083, 48780531, 48783424, 48785454, 48787546, 48789126, 48791616, 48793570, 48795535, 48797096, 48799808, 48801470, 48803143, 48808000, 48811431, 48816192, 48818794, 48820880, 48824384, 48826962, 48832576, 48836246, 48840768, 48844288, 48848960, 48851006, 48853062, 48857152, 48860188, 48865344, 48868669, 48873536, 48877372, 48881728, 48884593, 48889920, 48893255, 48898112, 48901623, 48901914, 48902217, 48906304, 48909728, 48911576, 48914496, 48917383, 48922688, 48926141, 48930880, 48934420, 48939072, 48942493, 48947264, 48950284, 48955456, 48959213, 48963648, 48965945, 48968259, 48971840, 48974102, 48976878, 48980032, 48981731, 48983437, 48985216, 48988224, 48990491, 48992773, 48996416, 48999197, 49001665, 49004608, 49006784, 49008981, 49012800, 49015211, 49017462, 49019788, 49020992, 49022018, 49023551, 49025096, 49029184, 49031277, 49037376, 49039891, 49041139, 49042397, 49045568, 49047548, 49049876, 49052214, 49052646, 49233920, 49242112, 49053760, 49056935, 49060123, 49060394, 49061952, 49064727, 49067515, 49070144, 49072696, 49078336, 49081166, 49086528, 49089642, 49091158, 49094720, 49097500, 49102912, 49105707, 49111104, 49114177, 49250304, 49258496, 49119296, 49122210, 49127488, 49131406, 49135680, 49138979, 49143872, 49146667, 49149472, 49152064, 49154068, 49156956, 49160256, 49162790, 49165333, 49168448, 49171071, 49176640, 49179413, 49181664, 49184832, 49186314, 49187808, 49190027, 49193024, 49194898, 49196727, 49198322, 49201216, 49203180, 49205161, 49207041, 49209408, 49211364, 49213336, 49215373, 49217600, 49219760, 49221930, 48206924, 48209097, 48209403, 48216562, 48216867, 48217184, 48217487, 48217803, 48225494, 48225807, 48233964, 48242356, 48248640, 49274944, 49278383, 49283136, 49286206, 49291328, 49294507, 49299520, 49302227, 49307712, 49311481, 49315904, 49318765, 49324096, 49326933, 49329781, 49332288, 49334503, 49336519, 49338549, 49340480, 49342125, 49343991, 49345852, 49348672, 49350552, 49352444, 49356864, 49359983, 49365056, 49367419, 49369790, 49373248, 49375498, 49377516, 49381440, 49383699, 49385967, 49389632, 49392121, 49394148, 49396188, 49396499, 49397824, 49401099, 49403357, 49406016, 49407967, 49414208, 49417305, 49419317, 49422400, 49424151, 49425757, 49430592, 49433541, 49435731, 49438784, 49440926, 49443079, 49446976, 49449111, 49451951, 49455168, 49457988, 49463360, 49465974, 49471552, 49474595, 49479744, 49483446, 49487936, 49490787, 49496128, 49499777, 49502575, 49504320, 49505686, 50315264, 49509081, 49512512, 49514695, 49516697, 49518711, 49520704, 49522593, 49524895, 49528896, 49531703, 49534518, 49537088, 49539100, 49545280, 49548717, 49553472, 49556278, 49561664, 49564527, 49566796, 49569856, 49572812, 49578048, 49580362, 50323456, 50331648, 49582684, 49583636, 49586240, 49588209, 49590171, 49590976, 49591791, 49594432, 49596388, 49598075, 49599733, 49600967, 49602624, 49605258, 49607900, 49610816, 49613361, 49615287, 49617227, 49617543, 49619008, 49620428, 49621858, 49623371, 49624953, 49627200, 49628861, 49631728, 49635392, 49637631, 49639881, 49643584, 49645616, 49647654, 49649704, 49651776, 49653523, 49654931, 49656350, 49657668, 49658996, 49659433, 49659968, 49661302, 49662646, 49668160, 49671103, 49672498, 49676352, 49678965, 49681592, 49684544, 49686135, 49688206, 49690285, 49692736, 49694625, 49695981, 49697347, 49700928, 49703506, 49705138, 49706791, 49709120, 49710738, 49713451, 49716175, 49717312, 49718210, 49719237, 49720274, 49721560, 49722856, 49724065, 49725504, 49726507, 49727520, 49727907, 49728304, 49728692, 49729090, 49729872, 49730662, 49731957, 49733696, 49735480, 49738639, 49741888, 49743633, 49745333, 49747045, 49750080, 49752423, 49754762, 49758272, 49759684, 49761109, 49761553, 49762007, 49764138, 49766464, 49767797, 49769144, 49774656, 49777670, 49779055, 49780451, 49782848, 49785043, 49791040, 49794927, 49799232, 49803180, 49803813, 49804456, 49807424, 49809141, 49811422, 49815616, 49818581, 49821558, 49823808, 49825442, 49827105, 49828777, 49832000, 49834348, 49840192, 49844032, 49844670, 49845320, 49846243, 49848384, 49850498, 49852624, 49856576, 49858974, 49861365, 49864768, 49866461, 49868164, 49872960, 49875826, 49881152, 49883799, 49885461, 49887134, 49889344, 49891011, 49893090, 49895179, 49897536, 49899793, 49902315, 49905728, 49909166, 49913920, 49916942, 49922112, 49924610, 49927119, 49930304, 49932101, 49934781, 49938496, 49940097, 49941710, 49946688, 49949792, 49951741, 49954880, 49958139, 49963072, 49965463, 49967863, 49971264, 49973945, 49976350, 49979456, 49981626, 49983809, 49987648, 49989778, 49992326, 50339840, 50348032, 49995840, 49998233, 50000639, 50004032, 50005790, 50008324, 50012224, 50014941, 50020416, 50023119, 50028608, 50032394, 50356224, 50364416, 50036800, 50039264, 50044992, 50048824, 50053184, 50056911, 50061376, 50064978, 50069568, 50073418, 50077760, 50080209, 50082672, 50085952, 50088453, 50090999, 50372608, 50380800, 50094144, 50097317, 50102336, 50105136, 50107946, 50110528, 50112900, 50115535, 50118720, 50121147, 50123584, 50125163, 50126912, 50128325, 50129747, 50132056, 50135104, 50139080, 50143296, 50145658, 50148029, 50151488, 50153717, 50159680, 50162668, 50167872, 50170937, 50176064, 50178841, 50184256, 50388992, 50397184, 50187803, 50192448, 50196426, 50200640, 50203414, 50208832, 50211555, 50214016, 50217024, 50219562, 50222112, 50225216, 50227175, 50229661, 50405376, 50413568, 50233408, 50235514, 50237629, 50241600, 50243534, 50246335, 50249792, 50252800, 50257984, 50260625, 50266176, 50269911, 50274368, 50276109, 50277858, 50282560, 50284904, 50287730, 50290752, 50293494, 50296248, 50298944, 50301251, 50307136, 50310061, 50430016, 50433286, 50438208, 50441625, 50443548, 50446400, 50449121, 50454592, 50457348, 50460116, 50462784, 50464352, 50466018, 50467693, 50469256, 50470976, 50472734, 50474503, 50479168, 50482231, 50487360, 50490173, 50492064, 50495552, 50497960, 50500377, 50503744, 50505587, 50507558, 50509537, 50510222, 50511936, 50513499, 50515075, 50517120, 50520128, 50521444, 50522770, 50525045, 50528320, 50529819, 50531324, 50532972, 50536512, 50538731, 50540961, 50542382, 50544704, 50548258, 50552896, 50554820, 50556755, 50561088, 50563679, 50565788, 50569280, 50571536, 50573803, 50577472, 50579811, 50580211, 50580618, 50581039, 50581470, 50585664, 50588199, 50590738, 50593856, 50595224, 50596602, 50602048, 50605785, 50606822, 50607869, 50610240, 50612208, 50614298, 50618432, 50621799, 51470336, 51478528, 50625178, 50626624, 50627634, 50630398, 50634816, 50638129, 50643008, 50645239, 50651200, 50654778, 50659392, 50661510, 50662971, 50665098, 50667584, 50670318, 51486720, 51494912, 50673379, 50675776, 50677942, 50680507, 50683968, 50686279, 50688601, 50692160, 50694680, 50696925, 50700352, 50702802, 50705261, 50708544, 50711037, 50713170, 50716736, 50718723, 50720726, 50722750, 50724928, 50727052, 50729183, 50733120, 50735244, 50737353, 50741312, 50743654, 50746007, 50749504, 50751646, 50754192, 50757696, 50760051, 50762418, 50765888, 50767813, 50769742, 50771683, 50774080, 50775337, 50777066, 50778862, 50779903, 50781014, 50782272, 50783235, 50784770, 50786385, 50788201, 50790464, 50793047, 50795639, 50798656, 50801489, 50806848, 50809639, 50815040, 50817868, 50820287, 50823232, 50826757, 50831424, 50833987, 50836563, 50839616, 50841630, 50843960, 50847808, 50850232, 50852666, 50854021, 50856000, 50857310, 50858631, 50859866, 50861113, 50862326, 50864192, 50865518, 50866856, 50869178, 50872384, 50874182, 50875989, 50877623, 50880576, 50882157, 50883750, 50885319, 50888768, 50891025, 50893288, 50893762, 50894441, 50896960, 50900364, 50905152, 50908818, 50913344, 50917126, 50917643, 50918610, 50919680, 50921536, 50923615, 50927518, 50929728, 50930877, 50932540, 50934229, 50937920, 50941368, 50943023, 50946112, 50947584, 50949707, 50954304, 50957674, 50958697, 50962496, 50963670, 50966577, 50967765, 50970688, 50971834, 50974444, 50975957, 50978880, 50980534, 50982769, 50987072, 50990347, 50991541, 50995264, 50996312, 50999004, 51003456, 51007002, 51008877, 51011648, 51013547, 51017511, 51019840, 51022026, 51023192, 51026040, 51028032, 51030648, 51036224, 51039525, 51044416, 51047838, 51048761, 51052608, 51054116, 51055665, 51057032, 51060800, 51062786, 51066546, 51068992, 51071070, 51072551, 51077184, 51079228, 51081924, 51085376, 51089044, 51090058, 51092333, 51093568, 51095625, 51096810, 51099770, 51101760, 51104944, 51109952, 51113825, 51114332, 51118144, 51119393, 51122819, 51126336, 51130399, 51131851, 51134528, 51135718, 51138704, 51142720, 51145403, 51146767, 51148143, 51150912, 51153346, 51154358, 51156138, 51159104, 51160943, 51163582, 51167296, 51169934, 51172630, 51175488, 51177406, 51179332, 51181270, 51183680, 51185612, 51187275, 51191872, 51194997, 51198082, 51200064, 51201493, 51202709, 51203940, 51204716, 51205505, 51206789, 51208256, 51209165, 51210086, 51210921, 51211768, 51213054, 51503104, 51511296, 51216448, 51219885, 51224640, 51228390, 51232832, 51236794, 51241024, 51244835, 51249216, 51251614, 51257408, 51261403, 51265600, 51269609, 51273792, 51277513, 51281984, 51285773, 51290176, 51292857, 51519488, 51527680, 51298368, 51302145, 51306560, 51310460, 51535872, 51544064, 51314752, 51318805, 51322944, 51326282, 51331136, 51335114, 51339328, 51341877, 51552256, 51560448, 51347520, 51351355, 51355712, 51358155, 51363904, 51367871, 51372096, 51376029, 51380288, 51382463, 51568640, 51576832, 51585024, 51593216, 51384648, 51388480, 51391010, 51396672, 51400573, 51404864, 51601408, 51609600, 51617792, 51625984, 51408757, 51413056, 51415781, 51421248, 51424537, 51429440, 51432075, 51437632, 51440453, 51445824, 51449677, 51454016, 51457416, 51462208, 51464828, 51467304, 50451852, 50648039, 51642432, 51646330, 51650624, 51652637, 51654661, 51658816, 51661809, 51667008, 51670213, 51675200, 52682752, 52690944, 52699136, 52707328, 51678363, 51683392, 51686715, 51691584, 52715520, 52723712, 51695592, 51699776, 51703766, 51707968, 52731904, 52740096, 51711489, 51716160, 51718908, 51724352, 52748288, 52756480, 51727723, 51732544, 51734935, 51740736, 51744547, 51748928, 51752430, 51753457, 51757120, 51760844, 51765312, 51769146, 51773504, 51777242, 51781696, 51785624, 51789888, 51792925, 51795072, 51795391, 51795722, 51796008, 51796302, 51796580, 51796870, 51797136, 51797414, 51798080, 51798403, 51802026, 51806272, 51809290, 51814464, 51817289, 51822656, 51826052, 51830848, 51834204, 51839040, 51841025, 51843022, 51847232, 51850139, 51852202, 51855424, 51858052, 51860693, 51863616, 51865728, 51868318, 51871808, 51873745, 51875693, 51880000, 51882541, 51884562, 51888192, 51890775, 51893373, 51896384, 51898341, 51900765, 51904576, 51906847, 51909130, 51912768, 51915473, 51917687, 51920960, 51922886, 51924823, 51929152, 51931352, 51933339, 51937344, 51939930, 51942529, 51945536, 51947481, 51949405, 51951341, 51953728, 51955669, 51957615, 51959576, 51961920, 51963981, 51965963, 51970112, 51972249, 51974397, 51978304, 51980546, 51982538, 51986496, 51988849, 51991217, 51994688, 51996800, 51998728, 52000665, 52002880, 52004875, 52007045, 52011072, 52013611, 52016160, 52019264, 52021191, 52023173, 52025166, 52027456, 52029518, 52031447, 52035648, 52038121, 52040606, 52042032, 52043840, 52045550, 52047270, 52049486, 52052032, 52054022, 52056023, 52057636, 52060224, 52062938, 52065664, 52068416, 52070296, 52071865, 52073440, 52076608, 52078635, 52080812, 52084800, 52087213, 52089636, 52091246, 52092992, 52094470, 52095956, 52097126, 52101184, 52104323, 52109376, 52111263, 52113159, 52114518, 52117568, 52119192, 52120827, 52121726, 52122637, 52125760, 52129722, 52130770, 52133952, 52135717, 52138549, 52139863, 52141380, 52142144, 52144418, 52145843, 52148159, 52764672, 52150336, 52151843, 52153361, 52155538, 52158528, 52160801, 52163080, 52164644, 52166720, 52168108, 52170876, 52171841, 52174912, 52176066, 52178705, 52180167, 52183104, 52184176, 52187362, 52191296, 52194302, 52195273, 52196733, 52198041, 52199488, 52201010, 52202540, 52204004, 52207680, 52210413, 52213157, 52215872, 52218339, 52224064, 52227450, 52232256, 52235169, 52237352, 52240448, 52242760, 52245018, 52248640, 52250916, 52252955, 52256832, 52259839, 52262800, 52265024, 52266818, 52268756, 52270649, 52273216, 52275087, 52276985, 52278925, 52281408, 52283405, 52286062, 52289600, 52292054, 52294519, 52297792, 52300107, 52302101, 52304105, 52305984, 52307564, 52310763, 52314176, 52316519, 52318872, 52322368, 52325200, 52327350, 52330560, 52332296, 52334041, 52338752, 52341219, 52342824, 52344440, 52346944, 52348691, 52350157, 52351633, 52355136, 52356923, 52358344, 52359777, 52363328, 52365274, 52365598, 52365933, 52367582, 52369243, 52371520, 52372967, 52374809, 52376662, 52377168, 52377624, 52379712, 52381278, 52383388, 52387904, 52390590, 52393287, 52396096, 52398274, 52400501, 52404288, 52406620, 52408962, 52412480, 52414747, 52417116, 52420672, 52423063, 52425465, 52428864, 52431168, 52433214, 52435270, 52435552, 52437056, 52438359, 52439673, 52441263, 52445248, 52448684, 52453440, 52455387, 52457346, 52459233, 52461632, 52464230, 52469824, 52473295, 52478016, 52479491, 52481102, 52482759, 52484430, 52486208, 52487854, 52489119, 52490402, 52491763, 52494400, 52496518, 52498549, 52500015, 52502592, 52504053, 52505529, 52506783, 52508055, 52510784, 52512463, 52513948, 52515666, 52516919, 52518976, 52521553, 52524143, 52527168, 52529392, 52531530, 52535360, 52537562, 52539708, 52543552, 52545373, 52547334, 52549099, 52551744, 52553521, 52555489, 52557244, 52559936, 52561703, 52563734, 52565639, 52568128, 52569876, 52571880, 52573719, 52576320, 52578367, 52580351, 52582117, 52584512, 52586286, 52588305, 52592704, 52596065, 52597735, 52600896, 52602380, 52603872, 52609088, 52612139, 52613720, 52615258, 52617280, 52619072, 52621271, 52623479, 52625472, 52627242, 52629108, 52630982, 52633664, 52635307, 52638035, 52641856, 52644153, 52646462, 52650048, 52652088, 52653778, 52655476, 52656790, 52658240, 52659716, 52661201, 52662723, 52664254, 52666432, 52667751, 52669403, 52671064, 52672397, 52674624, 52675960, 52677308, 52679074, 52680848, 51665003, 51673364, 51714225, 51722268, 51730107, 51738739, 51739007, 51754500, 51812316, 51820124, 51927011, 51935339, 51967953, 51976629, 51984541, 52033387, 52098301, 52188335, 52466839, 52781120, 52785153, 52789312, 52792840, 52797504, 52800466, 52805696, 52809227, 52813888, 52817106, 52822080, 52825909, 52830272, 52833090, 52838464, 52841583, 52844712, 52846656, 52848263, 52849942, 52851630, 52854848, 52856908, 52859361, 52863040, 52866412, 52871232, 52874743, 52879424, 52882576, 52887616, 52890797, 52895808, 52898789, 52901063, 52904000, 52906143, 52908300, 52912192, 52914914, 52915242, 52915580, 52920384, 52922881, 52925674, 52928576, 52931744, 52936768, 52939923, 52944960, 52947748, 52953152, 52956548, 52961344, 52963763, 52966192, 52969536, 52972249, 52974282, 52977728, 52980004, 52982290, 52983890, 52985920, 52988482, 52991109, 52994112, 52996720, 52999291, 53002304, 53004353, 53006414, 53010496, 53013242, 53015517, 53018688, 53021261, 53023897, 53026880, 53029484, 53032037, 53035072, 53037618, 53040228, 53043264, 53045839, 53048458, 53051456, 53054048, 53056704, 53059648, 53061617, 53063731, 53067840, 53070834, 53076032, 53079507, 53084224, 53086166, 53088178, 53092416, 53821440, 53829632, 53096177, 53100608, 53103227, 53105031, 53108800, 53110772, 53112755, 53114647, 53116992, 53118703, 53120424, 53122528, 53125184, 53126840, 53128507, 53133376, 53136049, 53141568, 53144453, 53149760, 53152908, 53157952, 53160639, 53163064, 53165503, 53165783, 53166144, 53166463, 53166791, 53167107, 53167433, 53169704, 53174336, 53176655, 53178990, 53182528, 53185060, 53187501, 53190720, 53192966, 53195228, 53196775, 53198912, 53201783, 53207104, 53209924, 53215296, 53217922, 53220557, 53221357, 53222168, 53223488, 53224321, 53227388, 53231680, 53234894, 53239872, 53242778, 53245692, 53248064, 53249587, 53250625, 53251675, 53253391, 53256256, 53259132, 53261307, 53264448, 53267183, 53269462, 53272640, 53275307, 53277983, 53280832, 53283318, 53285851, 53289024, 53291584, 53294154, 53295515, 53297216, 53297702, 53298201, 53299934, 53301673, 53305408, 53307274, 53307545, 53837824, 53846016, 53307829, 53313600, 53317121, 53321792, 53325311, 53329984, 53332560, 53335125, 53338176, 53341441, 53346368, 53348199, 53350039, 53351672, 53854208, 53862400, 53354560, 53357729, 53360966, 53362752, 53364386, 53367617, 53370944, 53372358, 53373781, 53374620, 53375468, 53375839, 53376221, 53376580, 53376950, 53377300, 53377661, 53378027, 53378400, 53379136, 53379499, 53379864, 53380239, 53380604, 53380979, 53383267, 53387328, 53389893, 53392468, 53395520, 53398207, 53400141, 53402089, 53403712, 53405123, 53407759, 53411904, 53413675, 53415453, 53417355, 53420096, 53422972, 53428288, 53431697, 53436480, 53437958, 53439444, 53440985, 53442535, 53444672, 53446307, 53448050, 53452864, 53455879, 53870592, 53878784, 53461056, 53464438, 53469248, 53471008, 53472777, 53473977, 53477440, 53480656, 53485632, 53487440, 53489259, 53491684, 53493824, 53495007, 53496200, 53499034, 53502016, 53503943, 53505881, 53508000, 53510208, 53512825, 53515450, 53518400, 53521095, 53522545, 53524003, 53524889, 53526592, 53886976, 53530649, 53534784, 53538567, 53539080, 53539601, 53540324, 53541057, 53542976, 53544541, 53547777, 53551168, 53553079, 53555407, 53559360, 53562149, 53563719, 53567552, 53569727, 53571279, 53572810, 53575744, 53577082, 53578429, 53583936, 53586982, 53592128, 53595032, 53597070, 53600320, 53602660, 53605013, 53608512, 53610686, 53612808, 53616704, 53620028, 53624896, 53626748, 53628613, 53633088, 53635787, 53637417, 53639060, 53641280, 53642961, 53645865, 53649472, 53652047, 53654635, 53654902, 53655180, 53657664, 53659350, 53661674, 53665856, 53668598, 53674048, 53676790, 53682240, 53684954, 53687676, 53690432, 53691963, 53693527, 53695101, 53698624, 53702307, 53704276, 53706816, 53708857, 53710907, 53715008, 53718872, 53720821, 53723200, 53724990, 53727641, 53729119, 53731392, 53733305, 53737091, 53739584, 53741742, 53743665, 53747776, 53750033, 53755968, 53759733, 53895168, 53903360, 53764160, 53766213, 53768276, 53772352, 53911552, 53919744, 53775581, 53776926, 53780544, 53782822, 53785112, 53788736, 53791017, 53796928, 53800692, 53927936, 53805120, 53806773, 53808491, 53813312, 53816461, 53818531, 52803439, 52835922, 52853678, 52869918, 52950546, 53138869, 53147582, 53155580, 53449803, 53752304, 53778282, 52918066, 53204665, 53212754, 53944384, 53947732, 53952576, 53955086, 53957611, 53960768, 53963432, 53965411, 53968960, 53970521, 53972085, 53973572, 53977152, 53980008, 53985344, 53988370, 53993536, 53995734, 53997943, 54001728, 54003786, 54005759, 54009920, 54012763, 54015618, 54015931, 54016254, 54018112, 54019748, 54021546, 54023354, 54026304, 54027946, 54029542, 54031492, 54034496, 54038099, 54039713, 54042688, 54044253, 54046666, 54050880, 54054811, 54056214, 54059072, 54060687, 54062713, 54064176, 54067264, 54068967, 54071055, 54075456, 54077877, 54080044, 54083648, 54086505, 54091840, 54094538, 54097245, 54100032, 54101568, 54104234, 54108224, 54110451, 54112695, 54114182, 54116416, 54118531, 54120663, 54122143, 54124608, 54127347, 54132800, 54136162, 54140992, 54143999, 54149184, 54153009, 54157376, 54158866, 54160365, 54162409, 54165568, 54167061, 54168565, 54169735, 54170915, 54172132, 54173760, 54174767, 54175785, 54178296, 54181952, 54185309, 54190144, 54193904, 54198336, 54200969, 54203611, 54206528, 54208452, 54214720, 54218701, 54220128, 54984704, 54992896, 54222912, 54224903, 54226905, 54231104, 54233315, 54234621, 54235938, 54237158, 54239296, 54240565, 55001088, 55009280, 54241962, 54244553, 54247488, 54248739, 54250009, 54252498, 54255680, 54258198, 54260723, 54263872, 54266391, 54268804, 54272064, 54273464, 54274876, 54277494, 54280256, 54282363, 54283461, 54284578, 54288448, 54291186, 54293044, 54294915, 54296640, 54298110, 54299533, 54300958, 54304832, 54306255, 54307978, 54310570, 54313024, 54314516, 54317663, 54321216, 54324151, 54324410, 54324688, 54324945, 54325225, 54325511, 54325792, 54326077, 54326356, 54326614, 54326894, 54327151, 54327430, 54327687, 54327967, 54328225, 54328504, 54328787, 54329408, 54329691, 54329971, 54330229, 54330508, 54330767, 54331047, 54331334, 54331615, 54331871, 54332152, 54332410, 54332690, 54332977, 54333256, 54333544, 54333825, 54334083, 54334364, 54334623, 54334905, 54335161, 54335441, 54335700, 54335980, 54336265, 54336544, 54336828, 54337108, 54337600, 54337882, 54338140, 54338420, 54338754, 54339097, 54339430, 54339775, 54340053, 54340384, 54340674, 54341042, 54341345, 54341713, 54342004, 54342370, 54342659, 54343025, 54343284, 54343564, 54343850, 54344127, 54344384, 54344664, 54344997, 54345341, 54345792, 54346160, 54346462, 54346829, 54347086, 54347367, 54347654, 54347934, 54348193, 54348474, 54348808, 54349154, 54349443, 54349809, 54350111, 54350479, 54350738, 54351019, 54351306, 54351588, 54351847, 54352128, 54352388, 54352670, 54352956, 54353237, 54353496, 54353984, 54354319, 54354663, 54354953, 54355322, 54355626, 54355994, 54356252, 54356533, 54356821, 54357103, 54357362, 54357642, 54357933, 54358302, 54358606, 54358974, 54359229, 54359507, 54359795, 54360075, 54360364, 54360645, 54360904, 54361185, 54361445, 54361726, 54362176, 54362458, 54362718, 54363000, 54363333, 54363677, 54363968, 54364335, 54364638, 54365005, 54365263, 54365544, 54365830, 54366112, 54366369, 54366649, 54366982, 54367326, 54367617, 54367985, 54368287, 54368656, 54368915, 54369200, 54369487, 54369767, 54370368, 54370649, 54370983, 54371329, 54371620, 54371988, 54372291, 54372659, 54372916, 54373194, 54373480, 54373756, 54374013, 54374292, 54374624, 54374968, 54375258, 54375626, 54375929, 54376295, 54376590, 54376895, 54377153, 54377431, 54377713, 54377994, 54378560, 54378840, 54379170, 54379508, 54379798, 54380166, 54380469, 54380834, 54381136, 54381502, 54383205, 54386752, 54389173, 54391605, 54394944, 54397157, 54403136, 54406301, 54408320, 54410351, 54410632, 54410923, 54411328, 54411619, 54412867, 54414125, 54416018, 54419520, 54421877, 54424244, 54427712, 54429826, 54431163, 54432509, 54433535, 54434574, 54434868, 54435904, 54437854, 54439814, 54440082, 54440363, 54440620, 54440899, 54441185, 54441465, 54441724, 54442005, 54442338, 54442682, 54442972, 54443338, 54443641, 54444096, 54444355, 54444636, 54444923, 54445204, 54445462, 54445743, 54446076, 54446421, 54446713, 54447082, 54447386, 54447752, 54448012, 54448294, 54448578, 54448860, 54449119, 54449399, 54449732, 54450075, 54450407, 54450751, 54451042, 54451414, 54451716, 54452288, 54452545, 54452825, 54453114, 54453394, 54453652, 54453929, 54454257, 54454596, 54454885, 54455254, 54455557, 54455925, 54456313, 54456715, 54456975, 54457260, 54457516, 54457797, 54458086, 54458368, 54458627, 54458908, 54459241, 54459584, 54459874, 54460480, 54460785, 54461154, 54461434, 54461724, 54461982, 54462259, 54462547, 54462826, 54463084, 54463363, 54463698, 54464044, 54464334, 54464701, 54465004, 54465372, 54465631, 54465908, 54466195, 54466476, 54466735, 54467017, 54467350, 54467694, 54467985, 54468672, 54468976, 54469340, 54469598, 54469879, 54470166, 54470447, 54470705, 54470985, 54471318, 54471662, 54471954, 54472322, 54472626, 54472996, 54473255, 54473536, 54473823, 54474104, 54474362, 54474643, 54474976, 54475317, 54475608, 54475977, 54476278, 54476864, 54477161, 54477523, 54477783, 54478065, 54478352, 54478632, 54478891, 54479172, 54479505, 54479850, 54480140, 54480506, 54480796, 54481163, 54481466, 54481832, 54482103, 54482398, 54482657, 54482938, 54483223, 54483504, 54483763, 54484045, 54484377, 54485056, 54485346, 54485713, 54486015, 54486380, 54486637, 54486919, 54487207, 54487489, 54487748, 54488027, 54488360, 54488704, 54488996, 54489365, 54489656, 54490026, 54490330, 54490699, 54490978, 54491267, 54491524, 54491805, 54492095, 54492379, 54492635, 54493248, 54493550, 54493917, 54494197, 54494486, 54494745, 54495026, 54495313, 54495594, 54495850, 54496131, 54496389, 54496670, 54497004, 54497347, 54497646, 54498010, 54498290, 54498580, 54498838, 54499119, 54499378, 54499659, 54499945, 54500223, 54500510, 54500791, 54501049, 54501440, 54501772, 54502116, 54502418, 54502786, 54503075, 54503372, 54503632, 54503913, 54504200, 54504480, 54504765, 54505047, 54505306, 54505587, 54505843, 54506120, 54506378, 54506652, 54506938, 54507218, 54507476, 54507757, 54508089, 54508433, 54508720, 54509000, 54509258, 54509632, 54509964, 54510310, 54510613, 54510983, 54511241, 54511522, 54511809, 54512089, 54512348, 54512629, 54512960, 54513303, 54513606, 54513974, 54514277, 54514645, 54514904, 54515184, 54515470, 54515750, 54516005, 54516283, 54516616, 54516961, 54517262, 54517824, 54518083, 54518363, 54518650, 54518931, 54519191, 54519473, 54519806, 54520151, 54520455, 54520822, 54521081, 54521362, 54521653, 54521935, 54522194, 54522474, 54522805, 54523150, 54523452, 54523820, 54524078, 54524359, 54524647, 54524929, 54525188, 54525467, 54526016, 54526361, 54526666, 54527035, 54527294, 54527574, 54527862, 54528145, 54528403, 54528683, 54529016, 54529361, 54529664, 54530032, 54530389, 54530646, 54530927, 54531214, 54531495, 54531751, 54532026, 54532284, 54532564, 54532849, 54533131, 54533388, 54533667, 54534208, 54534579, 54534848, 54535136, 54535399, 54535686, 54535944, 54536224, 54536510, 54536790, 54537049, 54537331, 54537634, 54537999, 54538258, 54538538, 54538822, 54539102, 54539360, 54539641, 54539945, 54540313, 54540572, 54540853, 54541137, 54541417, 54541676, 54541956, 54542400, 54542764, 54543023, 54543303, 54543588, 54543867, 54544125, 54544406, 54544707, 54545073, 54545329, 54545609, 54545894, 54546173, 54546431, 54546711, 54547014, 54547380, 54547639, 54547920, 54548203, 54548483, 54548742, 54549023, 54549326, 54549689, 54549951, 54550235, 54550592, 54550889, 54551283, 54551672, 54552005, 54552401, 54553098, 54553354, 54553636, 54553921, 54554202, 54554461, 54554742, 54554998, 54555279, 54555562, 54555842, 54556101, 54556383, 54556642, 54556918, 54557196, 54557472, 54557728, 54558006, 54558261, 54558784, 54559066, 54559345, 54559601, 54559878, 54560134, 54560411, 54560692, 54560969, 54561224, 54561502, 54561758, 54562037, 54562320, 54562597, 54562853, 54563130, 54563386, 54563667, 54563952, 54564233, 54564492, 54564773, 54565033, 54565315, 54565599, 54565878, 54566138, 54566420, 54566976, 54567258, 54567517, 54567799, 54568085, 54568365, 54568648, 54568928, 54569186, 54569467, 54569726, 54570006, 54570263, 54570544, 54570803, 54571083, 54571369, 54571648, 54571906, 54572188, 54572447, 54572727, 54572986, 54573269, 54573527, 54573808, 54574068, 54574349, 54574609, 54575168, 54575454, 54575735, 54575993, 54576275, 54576535, 54576817, 54577102, 54577380, 54577640, 54577922, 54578181, 54578461, 54578745, 54579026, 54579285, 54579566, 54579901, 54580245, 54580577, 54580919, 54581253, 54581599, 54581932, 54582277, 54582611, 54582955, 54583360, 54583703, 54584036, 54584381, 54584715, 54585060, 54585391, 54585734, 54586067, 54586412, 54586746, 54587090, 54587423, 54587767, 54588100, 54588443, 54588777, 54589123, 54589459, 54589806, 54590140, 54590484, 54590817, 54591162, 54591552, 54591843, 54592122, 54592454, 54592735, 54593065, 54593346, 54593677, 54593957, 54594248, 54594552, 54594919, 54595223, 54595587, 54595891, 54596258, 54596562, 54596928, 54597233, 54597602, 54597907, 54598274, 54598577, 54598943, 54599247, 54599744, 54600048, 54600413, 54600717, 54601086, 54601390, 54601756, 54602058, 54602422, 54602725, 54603091, 54603396, 54603762, 54604066, 54604433, 54604738, 54605106, 54605410, 54605778, 54606083, 54606449, 54606754, 54607121, 54607425, 54607936, 54608240, 54608606, 54608910, 54609279, 54609583, 54609946, 54610237, 54610605, 54610897, 54611266, 54611556, 54611925, 54612216, 54612585, 54612876, 54613245, 54613535, 54613902, 54614192, 54614562, 54614854, 54615221, 54615511, 54616128, 54616420, 54616787, 54617078, 54617446, 54617737, 54618105, 54618396, 54618763, 54619053, 54619419, 54619709, 54620075, 54620366, 54620728, 54621019, 54621385, 54621677, 54622043, 54622331, 54622695, 54622984, 54623348, 54623638, 54624320, 54624609, 54624976, 54625265, 54625630, 54625921, 54626289, 54626580, 54626948, 54627238, 54627602, 54627893, 54628258, 54628549, 54628914, 54629205, 54629573, 54629863, 54630229, 54630520, 54630886, 54631176, 54631539, 54631829, 54632512, 54632805, 54633170, 54633457, 54633824, 54634116, 54634483, 54634772, 54635142, 54635433, 54635801, 54636090, 54636456, 54636748, 54637115, 54637407, 54637771, 54638063, 54638425, 54638684, 54638966, 54639249, 54639530, 54639791, 54640074, 54640333, 54640704, 54640989, 54641272, 54641532, 54641814, 54642073, 54642355, 54642640, 54642922, 54643182, 54643463, 54643722, 54644001, 54644286, 54644567, 54644825, 54645107, 54645367, 54645649, 54645934, 54646214, 54646473, 54646753, 54647012, 54647293, 54647550, 54647829, 54648114, 54648393, 54648896, 54649177, 54649434, 54649712, 54649997, 54650278, 54650534, 54650814, 54651070, 54651351, 54651638, 54651918, 54652173, 54652453, 54652712, 54652993, 54653273, 54653554, 54653812, 54654094, 54654354, 54654635, 54654920, 54655202, 54655460, 54655742, 54655999, 54656279, 54656565, 54657088, 54657347, 54657624, 54657882, 54658160, 54658445, 54658727, 54658986, 54659267, 54659526, 54659806, 54660065, 54660345, 54660604, 54660886, 54661170, 54661450, 54661707, 54661987, 54662245, 54662525, 54662810, 54663090, 54663348, 54663626, 54663885, 54664166, 54664422, 54664702, 54665280, 54665559, 54665840, 54666118, 54666376, 54666657, 54666915, 54667194, 54667451, 54667731, 54668015, 54668296, 54668554, 54668833, 54669092, 54669375, 54669634, 54669914, 54670197, 54670478, 54670738, 54671019, 54671277, 54671557, 54671840, 54672122, 54672405, 54672687, 54672945, 54673472, 54673731, 54674013, 54674271, 54674550, 54674835, 54675115, 54675372, 54675654, 54681664, 54684673, 54689856, 54693855, 54698048, 54700875, 54706240, 54709838, 54714432, 55017472, 54717814, 54722624, 54726644, 54730816, 54734046, 54739008, 54742047, 54747200, 54751230, 54755392, 54757868, 54763584, 54766800, 55025664, 54771776, 54774774, 54779968, 54782560, 54785825, 54786102, 54786361, 54786645, 54786925, 54787183, 54787464, 54788160, 54788494, 54788772, 54789062, 54789365, 54789723, 54790080, 54790346, 54790635, 54790931, 54791217, 54791504, 54791800, 54792085, 54792380, 54793139, 54793910, 54794195, 54794490, 54794775, 54795069, 54795354, 54795650, 54795934, 54796352, 54796730, 54797015, 54797310, 54797595, 54797890, 54798173, 54798468, 54798754, 54799048, 54799333, 54799627, 54799913, 54800207, 54800492, 54800788, 54801072, 54801367, 54801653, 54801949, 54802244, 54802528, 54802814, 54803108, 54803394, 54803691, 54803977, 54804544, 54804830, 54805125, 54805411, 54805705, 54805991, 54806287, 54806573, 54806869, 54807226, 54807518, 54807800, 54808083, 54808375, 54808655, 54808946, 54809207, 54809491, 54809759, 54810037, 54810324, 54810621, 54810915, 54811199, 54811481, 54811773, 54812070, 54812357, 54812736, 54813030, 54813317, 54813614, 54813911, 54814198, 54814479, 54814771, 54815059, 54815356, 54815651, 54815936, 54816232, 54816518, 54816813, 54817099, 54817397, 54817685, 54817971, 54818265, 54818552, 54818848, 54819135, 54819431, 54819714, 54820007, 54820302, 54820928, 54821225, 54821512, 54821795, 54822088, 54822375, 54822672, 54822959, 54823256, 54823538, 54823831, 54824194, 54824490, 54824777, 54825063, 54825360, 54825655, 54825941, 54826237, 54826522, 54826807, 54827102, 54827389, 54827686, 54827980, 54828265, 54828551, 54829120, 54829406, 54829701, 54829979, 54830237, 54830520, 54830805, 54831066, 54831403, 54831752, 54832087, 54832433, 54832727, 54833034, 54833339, 54833621, 54833978, 54834338, 54834696, 54834981, 54835243, 54835528, 54835811, 54836073, 54836420, 54836756, 54837312, 54837618, 54837924, 54838208, 54838469, 54838752, 54839035, 54839296, 54839645, 54839982, 54840273, 54840576, 54840862, 54841221, 54841581, 54841942, 54842225, 54842583, 54842940, 54843225, 54843488, 54843771, 54844055, 54844316, 54844578, 54844861, 54845504, 54845852, 54846146, 54846450, 54846755, 54847115, 54847476, 54847838, 54848148, 54848432, 54848718, 54849029, 54849390, 54849678, 54849990, 54850299, 54850585, 54850868, 54851128, 54851412, 54851692, 54851975, 54852259, 54852521, 54852806, 54853068, 54853696, 54853982, 54854292, 54854579, 54854889, 54855176, 54855485, 54855821, 54856169, 54856454, 54856765, 54857058, 54857363, 54857652, 54857962, 54858246, 54858612, 54858977, 54859260, 54859519, 54859803, 54860085, 54860346, 54860630, 54860966, 54861314, 54861888, 54862179, 54862485, 54862848, 54863215, 54863499, 54863761, 54864044, 54864328, 54864590, 54864926, 54865274, 54865618, 54865951, 54866243, 54866547, 54866829, 54867191, 54867553, 54867814, 54868074, 54868383, 54868671, 54868981, 54869271, 54869583, 54870080, 54870367, 54870681, 54870973, 54871254, 54871515, 54871794, 54872077, 54872358, 54872619, 54872902, 54873185, 54873490, 54873776, 54874078, 54874391, 54874695, 54875005, 54875294, 54875606, 54875888, 54876150, 54876430, 54876710, 54876968, 54877257, 54877569, 54877849, 54878272, 54878609, 54878942, 54879285, 54879579, 54879863, 54880158, 54880449, 54880731, 54881011, 54881322, 54881610, 54881892, 54882153, 54882434, 54882718, 54882978, 54883260, 54883523, 54883858, 54884206, 54884498, 54884802, 54885088, 54885396, 54885679, 54885985, 54886464, 54886740, 54886996, 54887275, 54887532, 54887811, 54888090, 54888347, 54888628, 54888908, 54889165, 54889423, 54889701, 54890061, 54890422, 54890747, 54891068, 54891347, 54891709, 54892068, 54892344, 54892601, 54892881, 54893138, 54893418, 54893700, 54894006, 54894656, 54894963, 54895244, 54895547, 54895832, 54896139, 54896425, 54896733, 54897063, 54897405, 54897680, 54897981, 54898265, 54898570, 54898868, 54899176, 54899460, 54899767, 54900051, 54900346, 54900632, 54900929, 54901189, 54901471, 54901753, 54902036, 54902298, 54902848, 54903157, 54903441, 54903744, 54904025, 54904285, 54904568, 54904847, 54905127, 54905388, 54905671, 54905932, 54906215, 54906476, 54906760, 54907093, 54907437, 54907721, 54908028, 54908318, 54908623, 54908908, 54909215, 54909501, 54909811, 54910147, 54910495, 54911040, 54911322, 54911604, 54911967, 54912332, 54912593, 54912851, 54913137, 54913446, 54913731, 54914024, 54914308, 54914617, 54914877, 54915159, 54915441, 54915722, 54915981, 54916267, 54916575, 54916862, 54917171, 54917432, 54917715, 54917996, 54918280, 54918541, 54918826, 54919232, 54919490, 54919768, 54920049, 54920331, 54920590, 54920873, 54921178, 54921513, 54921857, 54922143, 54922451, 54922732, 54923012, 54923290, 54923594, 54923881, 54924190, 54924523, 54924868, 54925176, 54925461, 54925809, 54926144, 54926438, 54926723, 54927006, 54927424, 54927716, 54928021, 54928326, 54928630, 54928911, 54929193, 54929477, 54929805, 54930133, 54930498, 54930823, 54931181, 54931543, 54931906, 54932271, 54932530, 54932811, 54933115, 54933376, 54933660, 54933942, 54934222, 54934483, 54934767, 54935048, 54935616, 54935961, 54936242, 54936502, 54936785, 54937066, 54937327, 54937608, 54937945, 54938293, 54938588, 54938875, 54939159, 54939453, 54939746, 54940051, 54940416, 54940782, 54941068, 54941380, 54941665, 54941973, 54942258, 54942565, 54942874, 54943158, 54943808, 54944118, 54944400, 54944709, 54944989, 54945294, 54945584, 54945864, 54946147, 54946453, 54946710, 54946990, 54947269, 54947548, 54947804, 54948082, 54948421, 54948751, 54949028, 54949331, 54949644, 54949946, 54950257, 54950559, 54950869, 54951155, 54951464, 54952000, 54952308, 54952614, 54952899, 54953184, 54953491, 54954081, 54954391 };
Array.Sort(list);
Span<byte> dest = stackalloc byte[1024 * 128];
Span<uint> buf = stackalloc uint[256];
var encoder = new PForEncoder(dest, buf);
try
{
var i = 0;
foreach (var item in list)
{
if(++i == 38)
{
Console.WriteLine();
}
if (!encoder.TryAdd(item))
{
Console.WriteLine("Failed to add");
}
}
var s = encoder.TryClose();
Console.WriteLine(encoder.SizeInBytes);
Span<int> nums = stackalloc int[256];
var decoder = new PForDecoder(dest, nums);
int index = 0;
while (true)
{
if(index == 464)
{
Console.WriteLine();
}
var cur = decoder.TryDecode();
if (cur.Length == 0)
break;
for (int j = 0; j < cur.Length; j++)
{
if (list[index++] != cur[j])
{
Console.WriteLine("Diff @ " + (index-1));
return;
}
}
}
Console.WriteLine(index == list.Length);
}
finally
{
}
}
}
/* This integer encoder is using the following scheme for compression the data.
* We enforce that the data is sent to us in order (and zero is not a valid option)
* We record delta of deltas of the changes.
* We assume that there are going to be patterns to the deltas, but it may not be as simple as
just the same delta between numbers.
The format is composed of the following commands
* 0b0 - repeat last delta
* 0b1[n:5 bits][x:4 bits] - following x numbers with n bits with sign bit, negative numbers indicate back reference
* 0b00 - two zero bits - repeat last delta
* 0b01[3 bits] - where the 3 bits represents a reference to a previous delta
* 0b10[6 bits] - where the 6 bits represent the number of times to repeat the last delta
* 0b110[1 - 4 bits]0 - where the xxx is the up to 4 conscutive 1 bits representing the number of bytes to read from the
stream to a new delta
* 0b111 - EOF marker
*/
public unsafe ref struct IntegerEncoder
{
private readonly Span<byte> _output;
private readonly int _maxNumOfBits;
private int _previousValue;
private int _bitPos;
private int _previousDelta;
private int _repeatedPreviousDelta;
private const int PreviousDeltasLength = 8;
private fixed int _previousDeltas[PreviousDeltasLength];
public static readonly (int BitsForValue, uint ControlValue, int ControlValueBitLength, long MaxValueForEncoding)[] Encodings = {
(BitsForValue: 7, ControlValue: 0b10, ControlValueBitLength: 2, MaxValueForEncoding: 1U << 6),
(BitsForValue: 9, ControlValue: 0b110, ControlValueBitLength: 3, MaxValueForEncoding: 1U << 8),
(BitsForValue: 12, ControlValue: 0b1110, ControlValueBitLength: 4, MaxValueForEncoding: 1U << 11),
(BitsForValue: 32, ControlValue: 0b1111, ControlValueBitLength: 4, MaxValueForEncoding: 1U << 31)
};
public int Size => (_bitPos + 7) / 8;
public IntegerEncoder(Span<byte> output)
{
_output = output;
_previousValue = 0;
_bitPos = 0;
_maxNumOfBits = output.Length * 8;
_previousDelta = 0;
_repeatedPreviousDelta = 0;
}
public bool TryAdd(int value)
{
if (_previousValue >= value)
throw new ArgumentOutOfRangeException($"The value {value} must be larger than the previous value for this encoding: {_previousValue}");
int delta = (int)(value - _previousValue);
var deltaOfDelta = delta - _previousDelta;
_previousValue = value;
if (deltaOfDelta == 0)
{
if (_repeatedPreviousDelta++ > 8)
{
_bitPos -= 8;// go back 8 bits, which is the size that we have, and overwrite
var r = TryPushBits((ulong)(0b10_000_000 | _repeatedPreviousDelta), 8);
if (_repeatedPreviousDelta == 64)
_repeatedPreviousDelta = 0;
return r;
}
return TryPushBits(0, 2);
}
for (int i = 0; i < PreviousDeltasLength; i++) // try to find it from previous
{
if (_previousDeltas[i] == delta)
{
return TryPushBits(0b01_000 & (ulong)i, 5);
}
}
fixed (int* pPrev = _previousDeltas)
{
// move them all 1 step back
var span = new Span<int>(pPrev, PreviousDeltasLength);
span[1..].CopyTo(span);
}
_previousDeltas[PreviousDeltasLength - 1] = _previousDelta;
_previousDelta = delta;
// we are doing it this way to ensure that we are writing once, to avoid having temporary buffers
uint zigzag = (uint)((deltaOfDelta << 1) ^ (deltaOfDelta >> 31));
(int bits, ulong output) = (4 - BitOperations.LeadingZeroCount(zigzag) / 8) switch
{
1 => (8 + 5, 0b110____1_0UL << 8 | zigzag),
2 => (16 + 6, 0b110___11_0UL << 16 | zigzag),
3 => (24 + 7, 0b110__111_0UL << 24 | zigzag),
4 => (32 + 8, 0b110_1111_0UL << 32 | zigzag),
_ => throw new ArgumentOutOfRangeException("zigzag value has other than 4 bytes?! " + zigzag)
};
return TryPushBits(output, bits);
}
// see:
// https://github.com/facebookarchive/beringei/blob/75c3002b179d99c8709323d605e7d4b53484035c/beringei/lib/BitUtil.cpp#L17
private bool TryPushBits(ulong value, int bitsInValue)
{
if (_bitPos + bitsInValue > _maxNumOfBits)
{
return false;
}
int bitsAvailable = (_bitPos & 0x7) != 0 ? (8 - (_bitPos & 0x7)) : 0;
var bytePos = _bitPos / 8;
_bitPos += bitsInValue;
if (bitsInValue <= bitsAvailable)
{
// Everything fits inside the last byte
_output[bytePos] += (byte)(value << (bitsAvailable - bitsInValue));
return true;
}
int bitsLeft = bitsInValue;
if (bitsAvailable > 0)
{
// Fill up the last byte
_output[bytePos++] += (byte)(value >> (bitsInValue - bitsAvailable));
bitsLeft -= bitsAvailable;
}
while (bitsLeft >= 8)
{
// Enough bits for a dedicated byte
_output[bytePos++] = (byte)((value >> (bitsLeft - 8)) & 0xFF);
bitsLeft -= 8;
}
if (bitsLeft != 0)
{
// Start a new byte with the rest of the bits
_output[bytePos] += (byte)((value & ((1U << bitsLeft) - 1)) << (8 - bitsLeft));
}
return true;
}
public bool TryFlush(out int size)
{
var r = TryPushBits(0b11_11111ul, 7);
size = (_bitPos + 7) / 8;
return r;
}
}
}
using System;
using System.IO;
namespace ConsoleApp3
{
public ref struct PForDecoder
{
private readonly Span<byte> _input;
private int _bitPos, _maxBits;
private int _prevValue;
private readonly Span<int> _nums;
public PForDecoder(Span<byte> input, Span<int> scratch)
{
_input = input;
_bitPos = 0;
_maxBits = input.Length * 8;
_prevValue = 0;
_nums = scratch.Slice(0, 256);
}
public Span<int> TryDecode()
{
var bits = Read(2);
switch (bits)
{
case 0b00: // fixed header
bits = Read(8);
int numOfValues = (bits >> 5) switch
{
0b000 => 1,
0b001 => 32,
0b010 => 64,
0b011 => 128,
0b100 => 256,
_ => throw new ArgumentOutOfRangeException((bits >> 5) + " isn't a valid number of items for fixed header")
};
return ReadNumbers((int)(0x1F & bits),numOfValues);
case 0b01: // variable size
bits = Read(13);
return ReadNumbers((int)(0x1F & bits), (int)(bits >> 5));
case 0b10: // repeated header
bits = Read(13);
int numOfRepeatedValues = (int)(bits >> 5);
int numOfBits = (int)(0x1F & bits);
var repeatedDelta = (int)Read(numOfBits);
for (int i = 0; i < numOfRepeatedValues; i++)
{
_prevValue += repeatedDelta;
_nums[i] = _prevValue;
}
return _nums.Slice(0, numOfRepeatedValues);
default:
throw new ArgumentOutOfRangeException(bits + " isn't a valid header marker");
}
}
private Span<int> ReadNumbers(int numOfBits, int numOfValues)
{
if (numOfBits == 0)
return Span<int>.Empty;
for (int i = 0; i < numOfValues; i++)
{
var v = Read(numOfBits);
_prevValue += (int)v;
_nums[i] = _prevValue;
}
return _nums.Slice(0, numOfValues);
}
private ulong Read(int bitsToRead)
{
int end = _bitPos + bitsToRead;
if (end > _maxBits)
throw new EndOfStreamException();
ulong value = 0; ;
while (_bitPos < end)
{
value <<= 1;
ulong bit = (ulong)((_input[_bitPos >> 3] >> (7 - (_bitPos & 0x7))) & 1);
value += bit;
_bitPos++;
}
return value;
}
}
}using System;
using System.Diagnostics;
using System.Numerics;
namespace ConsoleApp3
{
/*
* See Binary Packing (2.6) here: https://arxiv.org/pdf/1209.2137.pdf
* for the baseline idea on the format.
*
* The output represent a bit stream with format that is a sequence of header | data pairs.
* The header is defined as:
*
* * 0b00 (10 bits) - fixed header marker - followed by 3 bits value indicating the number of numbers following
* * 0b000 - 1 value
* * 0b001 - 32 values
* * 0b010 - 64 values
* * 0b011 - 128 values
* * 0b100 - 256 values
* then 5 bits value (B bits per number)
* * 0b01 (15 bits) - variable header marker - followed by 8 bits value (number of items) and 5 bits value (B bits per number)
* * 0b10 (15 bits) - repeated header marker - followed by 8 bits value (number of repetitions) and 5 bits value (B bits per number)
* * 0b11 - reserved
*/
public ref struct PForEncoder
{
public const int BufferLen = 256;
private readonly Span<byte> _output;
private int _bufPos, _bitPos;
private int _maxNumOfBits;
private readonly Span<uint> _deltasBuffer;
private int _prev;
private bool _first;
public int SizeInBytes;
public PForEncoder(Span<byte> output, Span<uint> scratchBuffer)
{
_output = output;
_bufPos = 0;
_bitPos = 0;
_maxNumOfBits = output.Length * 8;
_prev = 0;
_first = true;
SizeInBytes = -1;
_deltasBuffer = scratchBuffer.Slice(0, BufferLen);
}
public bool TryAdd(int value)
{
if (value < 0)
throw new ArgumentOutOfRangeException();
if (!_first && _prev > value)
throw new ArgumentOutOfRangeException();
if (_first)
{
_deltasBuffer[_bufPos++] = (uint)value;
_prev = value;
_first = false;
return TryFlush();
}
if (_bufPos < BufferLen)
{
var diff = value - _prev;
_prev = value;
_deltasBuffer[_bufPos++] = (uint)diff;
return true;
}
if (TryFlush() == false)
return false;
return TryAdd(value);
}
public bool TryClose()
{
var result = TryFlush() && TryPushBits(0, 10);
SizeInBytes = (_bitPos + 7) / 8;
_bitPos = int.MaxValue;
return result;
}
private bool TryFlush(Span<uint> buffer)
{
if (buffer.Length == 0)
return true;
if (buffer.Length == 1)
{
var bits = 32 - BitOperations.LeadingZeroCount(buffer[0]);
Debug.Assert(bits < 32); // we never encode 0
ulong header = 0b00_000_00000ul | (uint)bits;
return TryPushBits(header, 10) && TryPushBits(buffer[0], bits);
}
var (maxBits, identicalPrefix) = Analyze(buffer);
Debug.Assert(identicalPrefix <= 256);
if (identicalPrefix > 5) // enough to warrant a repeating header to save space
{
ulong header = 0b10_00000000_00000ul | (uint)identicalPrefix << 5 | (uint)maxBits;
if (TryPushBits(header, 15) == false ||
TryPushBits(buffer[0], maxBits) == false)
return false;
return TryFlush(buffer.Slice(identicalPrefix));
}
ulong fixedSizeMarker = buffer.Length switch
{
32 => 0b001,
64 => 0b010,
128 => 0b011,
256 => 0b100,
_ => 0
};
if (fixedSizeMarker != 0)
{
var half = buffer.Length / 2;
// now need to figure out optimal partitioning scheme
int first = MaxBits(buffer.Slice(0, half)),
second = MaxBits(buffer.Slice(half));
if (first != second) // better to output them as two segments, then
{
return TryFlush(buffer.Slice(0, half)) &&
TryFlush(buffer.Slice(half));
}
ulong header = 0b00_000_00000ul | fixedSizeMarker << 5 | (uint)maxBits;
if (TryPushBits(header, 10) == false)
return false;
return TryPushValues(buffer, maxBits);
}
else
{
ulong header = 0b01_0000_0000_00000ul | (ulong)(buffer.Length) << 5 | (uint)maxBits;
if (TryPushBits(header, 15) == false)
return false;
return TryPushValues(buffer, maxBits);
}
}
private bool TryPushValues(Span<uint> buffer, int maxBits)
{
for (int i = 0; i < buffer.Length; i++)
{
if (TryPushBits(buffer[i], maxBits) == false)
{
return false;
}
}
return true;
}
public bool TryFlush()
{
var oldPos = _bufPos;
_bufPos = 0;
return TryFlush(_deltasBuffer.Slice(0, oldPos));
}
private static int MaxBits(Span<uint> buffer)
{
uint mask = 0;
for (int i = 0; i < buffer.Length; i++)
{
mask |= buffer[i];
}
var maxBits = 32 - BitOperations.LeadingZeroCount(mask);
Debug.Assert(maxBits < 32); // we never encode 0
return maxBits;
}
private static (int MaxNumberOfBits, int IdenticalPrefixLegnth) Analyze(Span<uint> buffer)
{
uint mask = buffer[0];
int identicalPrefix = 1;
bool identical = true;
for (int i = 1; i < buffer.Length; i++)
{
mask |= buffer[i];
if (identical)
{
if (buffer[i] == buffer[0])
{
identicalPrefix++;
}
else
{
identical = false;
}
}
}
var maxBits = 32 - BitOperations.LeadingZeroCount(mask);
Debug.Assert(maxBits < 32); // we never encode 0
return (maxBits, identicalPrefix);
}
// see:
// https://github.com/facebookarchive/beringei/blob/75c3002b179d99c8709323d605e7d4b53484035c/beringei/lib/BitUtil.cpp#L17
public bool TryPushBits(ulong value, int bitsInValue)
{
if (_bitPos + bitsInValue > _maxNumOfBits)
{
return false;
}
int bitsAvailable = (_bitPos & 0x7) != 0 ? (8 - (_bitPos & 0x7)) : 0;
var bytePos = _bitPos / 8;
_bitPos += bitsInValue;
if (bitsInValue <= bitsAvailable)
{
// Everything fits inside the last byte
_output[bytePos] += (byte)(value << (bitsAvailable - bitsInValue));
return true;
}
int bitsLeft = bitsInValue;
if (bitsAvailable > 0)
{
// Fill up the last byte
_output[bytePos] += (byte)(value >> (bitsInValue - bitsAvailable));
bitsLeft -= bitsAvailable;
bytePos++;
}
while (bitsLeft >= 8)
{
// Enough bits for a dedicated byte
_output[bytePos] = (byte)((value >> (bitsLeft - 8)) & 0xFF);
bitsLeft -= 8;
bytePos++;
}
if (bitsLeft != 0)
{
// Start a new byte with the rest of the bits
_output[bytePos] += (byte)((value & ((1U << bitsLeft) - 1)) << (8 - bitsLeft));
}
return true;
}
}
}
using System;
using System.Linq;
using System.Numerics;
namespace ConsoleApp3
{
class Program
{
unsafe static void Main(string[] args)
{
var list = new int[] { 55394368, 55395082, 55395732, 55396483, 55397200, 55397901, 55398608, 55399311, 55399984, 55400678, 55401382, 55402560, 55403228, 55403972, 55404652, 55405381, 55406115, 55406337, 55406552, 55406750, 55407003, 55407263, 55407497, 55407691, 55407880, 55408031, 55408304, 55408543, 55408733, 55408973, 55409183, 55409444, 55409660, 55409887, 55410126, 55410324, 55410752, 55411034, 55411280, 55411473, 55411704, 55411962, 55412207, 55412468, 55412668, 55412862, 55413173, 55413443, 55413634, 55413909, 55414143, 55414392, 55414613, 55414889, 55415101, 55415302, 55415599, 55415853, 55416124, 55416387, 55416609, 55416859, 55417124, 55417331, 55417582, 55417740, 55417862, 55418035, 55418246, 55418414, 55418600, 55418944, 55419184, 55419380, 55419599, 55419817, 55420044, 55420335, 55420601, 55420828, 55421088, 55421335, 55421573, 55421722, 55421921, 55422189, 55422444, 55422638, 55422856, 55423078, 55423358, 55423557, 55423804, 55424063, 55424276, 55424512, 55424710, 55424975, 55425188, 55425302, 55425549, 55425706, 55425922, 55426165, 55426505, 55426745, 55427136, 55427366, 55427599, 55427812, 55428007, 55428253, 55428511, 55428799, 55428962, 55429249, 55429471, 55429702, 55429918, 55430178, 55430455, 55430775, 55430970, 55431249, 55431450, 55431733, 55431924, 55432182, 55432421, 55432655, 55432902, 55433126, 55433411, 55433583, 55433734, 55434007, 55434282, 55434515, 55434768, 55434977, 55435328, 55435559, 55435821, 55436111, 55436304, 55436537, 55436852, 55437073, 55437358, 55437596, 55437866, 55438111, 55438362, 55438602, 55438834, 55439064, 55439317, 55439553, 55439810, 55440111, 55440381, 55440633, 55440881, 55441113, 55441386, 55441602, 55441840, 55442057, 55442288, 55442502, 55442766, 55442999, 55443520, 55443819, 55444079, 55444310, 55444539, 55444802, 55445055, 55445328, 55445557, 55445786, 55445957, 55446236, 55446471, 55446727, 55446945, 55447202, 55447441, 55447709, 55447905, 55448145, 55448377, 55448628, 55448844, 55449013, 55449221, 55449473, 55449653, 55449912, 55450132, 55450388, 55450555, 55450770, 55451044, 55451272, 55451712, 55451924, 55452185, 55452400, 55452575, 55452872, 55453121, 55453368, 55453551, 55453778, 55454017, 55454320, 55454603, 55454803, 55455070, 55455282, 55455521, 55455746, 55455968, 55456204, 55456420, 55456704, 55456953, 55457186, 55457406, 55457606, 55457870, 55458078, 55458307, 55458493, 55458739, 55458984, 55459286, 55459523, 55459904, 55460054, 55460250, 55460540, 55460816, 55461067, 55461292, 55461467, 55461730, 55461921, 55462184, 55462490, 55462654, 55462871, 55463062, 55463365, 55463518, 55463790, 55463992, 55464227, 55464459, 55464664, 55464852, 55465092, 55465417, 55465666, 55465905, 55466148, 55466464, 55466655, 55466900, 55467185, 55467447, 55467680, 55468096, 55468409, 55468651, 55468922, 55469140, 55469356, 55469586, 55469800, 55470045, 55470288, 55470477, 55470724, 55470996, 55471268, 55471510, 55471801, 55472097, 55472299, 55472547, 55472854, 55473171, 55473372, 55473575, 55473787, 55473963, 55474233, 55474438, 55474649, 55474914, 55475173, 55475441, 55475683, 55476288, 55476582, 55476918, 55477058, 55477312, 55477686, 55477834, 55478011, 55478270, 55478498, 55478730, 55478967, 55479220, 55479380, 55479570, 55479791, 55479999, 55480223, 55480415, 55480717, 55480957, 55481188, 55481436, 55481688, 55481956, 55482173, 55482424, 55482668, 55482826, 55483033, 55483275, 55483417, 55483641, 55483873, 55484480, 55484724, 55484938, 55485201, 55485448, 55485714, 55485962, 55486225, 55486429, 55486716, 55486960, 55487210, 55487404, 55487567, 55487803, 55488008, 55488273, 55488524, 55488810, 55489067, 55489374, 55489561, 55489806, 55490003, 55490253, 55490568, 55490836, 55491049, 55491255, 55491549, 55491748, 55492048, 55492303, 55492672, 55492968, 55493206, 55493448, 55493673, 55493989, 55494259, 55494484, 55494622, 55494838, 55495043, 55495261, 55495446, 55495697, 55496026, 55496357, 55496605, 55496855, 55497150, 55497339, 55497561, 55497811, 55497979, 55498221, 55498482, 55498721, 55498972, 55499191, 55499467, 55499675, 55499888, 55500105, 55500377, 55500545, 55500864, 55501074, 55501333, 55501672, 55501978, 55502229, 55502382, 55502530, 55502732, 55503024, 55503292, 55503523, 55503723, 55503886, 55504097, 55504235, 55504522, 55504761, 55504995, 55505266, 55505492, 55505697, 55505965, 55506209, 55506486, 55506620, 55506904, 55507131, 55507405, 55507629, 55507902, 55508155, 55508377, 55508564, 55508782, 55509056, 55509334, 55509604, 55509820, 55510104, 55510379, 55510696, 55510942, 55511280, 55511519, 55511728, 55512003, 55512184, 55512406, 55512647, 55512940, 55513183, 55513430, 55513705, 55513958, 55514253, 55514487, 55514728, 55514888, 55515208, 55515508, 55515744, 55516036, 55516202, 55516451, 55516732, 55516977, 55402074, 55443222, 55475962, 55484180, 57671744, 57671981, 57672227, 57672526, 57672805, 57673049, 57673306, 57673503, 57673746, 57674026, 57674319, 57674497, 57674722, 57674912, 57675149, 57675435, 57675676, 57675931, 57676187, 57676368, 57676612, 57676903, 57677152, 57677407, 57677641, 57677887, 57678185, 57678387, 57678629, 57678863, 57679129, 57679325, 57679556, 57679936, 57680180, 57680455, 57680716, 57681001, 57681284, 57681453, 57681659, 57681937, 57682181, 57682526, 57682782, 57683003, 57683154, 57683381, 57683571, 57683815, 57684055, 57684310, 57684535, 57684728, 57684931, 57685140, 57685363, 57685582, 57685839, 57686084, 57686330, 57686640, 57686867, 57687085, 57687374, 57687616, 57687777, 57688128, 57688396, 57688633, 57688796, 57689098, 57689272, 57689488, 57689732, 57689978, 57690190, 57690437, 57690698, 57690929, 57691153, 57691392, 57691620, 57691834, 57692070, 57692344, 57692642, 57692926, 57693161, 57693426, 57693625, 57693876, 57694186, 57694439, 57694677, 57694886, 57695068, 57695280, 57695516, 57695751, 57695988, 57696320, 57696546, 57696810, 57697112, 57697419, 57697679, 57697959, 57698228, 57698445, 57698695, 57698949, 57699227, 57699494, 57699717, 57699996, 57700300, 57700590, 57700811, 57701026, 57701361, 57701659, 57701997, 57702259, 57702505, 57702779, 57703063, 57703296, 57703499, 57703675, 57703946, 57704512, 57704789, 57705089, 57705288, 57705523, 57705787, 57706027, 57706282, 57706574, 57706805, 57707082, 57707281, 57707559, 57707822, 57708084, 57708355, 57708614, 57708846, 57709062, 57709312, 57709522, 57709736, 57709942, 57710199, 57710499, 57710728, 57711012, 57711214, 57711465, 57711793, 57712097, 57712336, 57712704, 57712948, 57713182, 57713423, 57713637, 57713976, 57714249, 57714496, 57714740, 57714929, 57715147, 57715297, 57715535, 57715783, 57716008, 57716298, 57716548, 57716770, 57717011, 57717224, 57717493, 57717760, 57718032, 57718272, 57718430, 57718714, 57718920, 57719167, 57719434, 57719692, 57719930, 57720239, 57720500, 57720896, 57721152, 57721440, 57721699, 57721961, 57722233, 57722493, 57722719, 57722953, 57723255, 57723451, 57723741, 57724001, 57724253, 57724514, 57724717, 57724944, 57725219, 57725469, 57725729, 57725998, 57726232, 57726505, 57726757, 57726967, 57727246, 57727446, 57727720, 57728000, 57728260, 57728491, 57729088, 57729364, 57729693, 57729928, 57730204, 57730493, 57730793, 57731018, 57731278, 57731485, 57731795, 57732039, 57732257, 57732499, 57732760, 57732974, 57733179, 57733391, 57733611, 57733815, 57734010, 57734292, 57734444, 57734698, 57734920, 57735216, 57735539, 57735875, 57736112, 57736358, 57736605, 57736833, 57737280, 57737474, 57737778, 57738032, 57738288, 57738566, 57738781, 57739013, 57739224, 57739453, 57739626, 57739907, 57740123, 57740349, 57740670, 57740963, 57741147, 57741314, 57741476, 57741710, 57741941, 57742152, 57742369, 57742581, 57742809, 57743006, 57743216, 57743433, 57743694, 57743959, 57744099, 57744285, 57744513, 57744692, 57744955, 57745175, 57745472, 57745713, 57745883, 57746076, 57746307, 57746484, 57746682, 57746862, 57747067, 57747301, 57747598, 57747825, 57748082, 57748304, 57748514, 57748705, 57748895, 57749015, 57749174, 57749365, 57749569, 57749769, 57749976, 57750167, 57750347, 57750568, 57750815, 57750982, 57751184, 57751403, 57751578, 57751791, 57751913, 57752123, 57752338, 57752516, 57752658, 57752830, 57752977, 57753187, 57753369, 57753664, 57753903, 57754114, 57754392, 57754637, 57754872, 57755034, 57755306, 57755521, 57755777, 57756003, 57756209, 57756457, 57756676, 57756898, 57757138, 57757771, 57758060, 57758312, 57758549, 57758873, 57759150, 57759354, 57759632, 57759897, 57760152, 57760444, 57760660, 57760952, 57761203, 57761464, 57761856, 57762086, 57762270, 57762526, 57762770, 57763029, 57763284, 57763551, 57763791, 57764034, 57764297, 57764566, 57764808, 57765073, 57765331, 57765561, 57765873, 57766105, 57766355, 57766630, 57766893, 57767209, 57767548, 57767769, 57767981, 57768253, 57768558, 57768818, 57769111, 57769380, 57769605, 57770048, 57770351, 57770591, 57770921, 57771167, 57771383, 57771626, 57771943, 57772204, 57772476, 57772796, 57773070, 57773336, 57773636, 57773901, 57774195, 57774493, 57774750, 57775063, 57775370, 57775555, 57775832, 57776111, 57776360, 57776599, 57776864, 57777125, 57777337, 57777601, 57777846, 57778240, 57778538, 57778819, 57779123, 57779367, 57779711, 57780028, 57780315, 57780568, 57780891, 57781155, 57781413, 57781650, 57781920, 57782231, 57782481, 57782778, 57783066, 57783310, 57783602, 57783883, 57784182, 57784431, 57784686, 57784965, 57785222, 57785471, 57785749, 57786028, 57786432, 57786700, 57786951, 57787246, 57787531, 57787818, 57788081, 57788351, 57788679, 57788870, 57789177, 57789379, 57789583, 57789837, 57790127, 57790444, 57790681, 57790922, 57791200, 57791436, 57791659, 57791875, 57792164, 57792447, 57792704, 57792946, 57793106, 57793418, 57793666, 57793952, 57794226, 57794624, 57794870, 57795144, 57795364, 57795638, 57795901, 57796128, 57796374, 57796543, 57796784, 57797067, 57797312, 57797646, 57797905, 57798179, 57798382, 57798650, 57798873, 57799199, 57799403, 57799602, 57799910, 57800208, 57800450, 57800678, 57800970, 57801228, 57801420, 57801644, 57801861, 57802111, 57802348, 57802816, 57803069, 57803400, 57803659, 57803919, 57804231, 57804516, 57804747, 57804982, 57805303, 57805546, 57805815, 57806055, 57806321, 57806539, 57806775, 57806994, 57807247, 57807488, 57807678, 57807945, 57808256, 57808476, 57808743, 57809071, 57809298, 57809550, 57809811, 57810072, 57810357, 57810615, 57811008, 57811288, 57811519, 57811767, 57812015, 57812282, 57812475, 57812773, 57813062, 57813330, 57813570, 57813785, 57814102, 57814351, 57814544, 57814848, 57815094, 57815374, 57815718, 57816018, 57816275, 57816561, 57816797, 57817077, 57817348, 57817598, 57817825, 57818083, 57818374, 57818690, 57819200, 57819474, 57819700, 57820009, 57820250, 57820455, 57820681, 57820932, 57821184, 57821529, 57821844, 57822054, 57822298, 57822547, 57822854, 57823123, 57823375, 57823708, 57823949, 57824199, 57824441, 57824699, 57825001, 57825266, 57825525, 57825765, 57826102, 57826334, 57826626, 57826857, 57827392, 57827663, 57827833, 57828049, 57828219, 57828518, 57828790, 57829052, 57829319, 57829596, 57829817, 57830075, 57830367, 57830632, 57830867, 57831110, 57831355, 57831624, 57831917, 57832163, 57832408, 57832622, 57832889, 57833186, 57833450, 57833676, 57833891, 57834120, 57834379, 57834682, 57834996, 57835584, 57835828, 57836106, 57836377, 57836630, 57836880, 57837201, 57837463, 57837708, 57837957, 57838191, 57838440, 57838684, 57838948, 57839245, 57839529, 57839842, 57840066, 57840290, 57840491, 57840703, 57841058, 57841296, 57841515, 57841685, 57841940, 57842164, 57842424, 57842668, 57842930, 57843121, 57843349, 57843776, 57844052, 57844270, 57844518, 57844775, 57845044, 57845309, 57845596, 57845833, 57846082, 57846314, 57846542, 57846707, 57846944, 57847186, 57847434, 57847660, 57847889, 57848137, 57848347, 57848573, 57848802, 57849054, 57849300, 57849549, 57849804, 57850015, 57850301, 57850589, 57850826, 57851034, 57851312, 57851551, 57851968, 57852168, 57852421, 57852697, 57852951, 57853164, 57853403, 57853666, 57853885, 57854120, 57854324, 57854572, 57854840, 57854995, 57855310, 57855524, 57855823, 57856099, 57856307, 57856606, 57856852, 57857142, 57857394, 57857709, 57857971, 57858163, 57858398, 57858628, 57858822, 57859040, 57859277, 57859499, 57859748, 57860160, 57860408, 57860643, 57860983, 57861205, 57861471, 57861737, 57861967, 57862232, 57862499, 57862659, 57862857, 57863087, 57863342, 57863555, 57863815, 57864069, 57864323, 57864532, 57864815, 57865045, 57865335, 57865622, 57865852, 57866072, 57866304, 57866494, 57866738, 57867029, 57867345, 57867580, 57867843, 57868021, 57868352, 57868552, 57868885, 57869150, 57869400, 57869607, 57869869, 57870140, 57870397, 57870649, 57870916, 57871141, 57871435, 57871692, 57871982, 57872213, 57872411, 57872659, 57872878, 57873076, 57873281, 57873510, 57873690, 57873915, 57874155, 57874497, 57874709, 57874912, 57875164, 57875522, 57875793, 57876025, 57876247, 57876544, 57876782, 57876966, 57877180, 57877452, 57877708, 57878016, 57878285, 57878509, 57878750, 57878943, 57879150, 57879373, 57879645, 57879873, 57880115, 57880408, 57880652, 57880922, 57881160, 57881351, 57881587, 57881816, 57882052, 57882274, 57882487, 57882764, 57882933, 57883256, 57883569, 57883826, 57884044, 57884293, 57884736, 57884978, 57885184, 57885412, 57885636, 57885856, 57886168, 57886429, 57886625, 57886909, 57887118, 57887338, 57887650, 57887947, 57888162, 57888432, 57888681, 57888966, 57889202, 57889461, 57889683, 57890024, 57890314, 57890527, 57890773, 57891015, 57891334, 57891579, 57891799, 57892085, 57892269, 57892469, 57892928, 57893184, 57893522, 57893744, 57893912, 57894060, 57894265, 57894443, 57894661, 57894915, 57895175, 57895417, 57895646, 57895855, 57896138, 57896417, 57896613, 57896811, 57897069, 57897297, 57897458, 57897694, 57897864, 57898167, 57898406, 57898630, 57898917, 57899177, 57899430, 57899599, 57899912, 57900075, 57900316, 57900522, 57900788, 57901120, 57901345, 57901607, 57901834, 57902100, 57902385, 57902609, 57902854, 57903056, 57903306, 57903603, 57903874, 57904107, 57904382, 57904551, 57904789, 57905035, 57905285, 57905465, 57905689, 57905927, 57906152, 57906476, 57906643, 57906807, 57907068, 57907288, 57907514, 57907764, 57908021, 57908313, 57908605, 57908810, 57704199, 57728749, 57966656, 57966913, 57967196, 57967425, 57967723, 57967995, 57968322, 57968529, 57968757, 57969060, 57969352, 57969598, 57969860, 57970083, 57970377, 57970661, 57970873, 57971083, 57971251, 57971583, 57971840, 57972094, 57972347, 57972603, 57972807, 57973095, 57973318, 57973590, 57973893, 57974091, 57974330, 57974559, 57974848, 57975138, 57975365, 57975612, 57975898, 57976058, 57976272, 57976525, 57976779, 57976980, 57977146, 57977345, 57977546, 57977729, 57977957, 57978174, 57978491, 57978759, 57978950, 57979190, 57979425, 57979673, 57979930, 57980140, 57980339, 57980488, 57980684, 57980783, 57981044, 57981219, 57981434, 57981683, 57981902, 57982146, 57982299, 57982525, 57982771, 57983040, 57983247, 57983449, 57983669, 57983899, 57983992, 57984242, 57984409, 57984637, 57984771, 57985039, 57985267, 57985482, 57985649, 57985953, 57986222, 57986447, 57986593, 57986902, 57987128, 57987204, 57987481, 57987701, 57987934, 57988178, 57988483, 57988713, 57988963, 57989212, 57989417, 57989659, 57989858, 57989974, 57990162, 57990418, 57990649, 57990885, 57991232, 57991482, 57991710, 57991936, 57992123, 57992315, 57992555, 57992659, 57992910, 57993148, 57993368, 57993654, 57993982, 57994086, 57994339, 57994611, 57994857, 57995043, 57995290, 57995363, 57995582, 57995796, 57996057, 57996263, 57996537, 57996741, 57996929, 57997141, 57997357, 57997562, 57997786, 57998012, 57998231, 57998381, 57998623, 57998831, 57999424, 57999696, 57999768, 57999913, 58000086, 58000248, 58000399, 58000499, 58000734, 58000922, 58001116, 58001356, 58001561, 58001759, 58001980, 58002141, 58002323, 58002542, 58002731, 58003010, 58003283, 58003387, 58003632, 58003841, 58004067, 58004272, 58004485, 58004620, 58004838, 58005089, 58005276, 58005478, 58005710, 58005947, 58006179, 58006516, 58006774, 58006985, 58007254, 58007616, 58007891, 58008132, 58008291, 58008420, 58008584, 58008807, 58009036, 58009237, 58009456, 58009622, 58009790, 58010046, 58010264, 58010388, 58010643, 58010897, 58011154, 58011462, 58011539, 58011749, 58011975, 58012286, 58012521, 58012757, 58012963, 58013186, 58013392, 58013584, 58013863, 58014046, 58014225, 58014466, 58014599, 58014822, 58014981, 58015199, 58015425, 58015808, 58015923, 58016133, 58016385, 58016601, 58016824, 58017037, 58017308, 58017477, 58017720, 58018003, 58018226, 58018376, 58018559, 58018764, 58019028, 58019298, 58019525, 58019789, 58020033, 58020279, 58020545, 58021205, 58021498, 58021751, 58021986, 58022313, 58022592, 58022807, 58023087, 58023353, 58023608, 58024000, 58024219, 58024513, 58024764, 58025028, 58025321, 58025550, 58025734, 58025994, 58026238, 58026497, 58026754, 58027022, 58027261, 58027504, 58027765, 58028036, 58028279, 58028546, 58028806, 58029035, 58029345, 58029576, 58029826, 58030099, 58030364, 58030680, 58031019, 58031239, 58031451, 58031723, 58032192, 58032445, 58032737, 58033008, 58033232, 58033527, 58033825, 58034064, 58034391, 58034637, 58034853, 58035097, 58035414, 58035677, 58035950, 58036267, 58036541, 58036807, 58037099, 58037361, 58037662, 58037959, 58038216, 58038526, 58038836, 58039022, 58039302, 58039583, 58039822, 58040384, 58040649, 58040908, 58041122, 58041390, 58041637, 58041912, 58042211, 58042496, 58042802, 58043044, 58043387, 58043703, 58043989, 58044246, 58044569, 58044832, 58045089, 58045328, 58045598, 58045910, 58046161, 58046461, 58046747, 58046990, 58047281, 58047562, 58047857, 58048104, 58048576, 58048847, 58049097, 58049340, 58049609, 58049883, 58050152, 58050418, 58050664, 58050952, 58051229, 58051505, 58051758, 58052023, 58052343, 58052526, 58052826, 58053020, 58053230, 58053476, 58053755, 58054063, 58054297, 58054534, 58054807, 58055037, 58055267, 58055484, 58055766, 58056039, 58056292, 58056526, 58056768, 58057067, 58057305, 58057586, 58057855, 58058182, 58058423, 58058689, 58058901, 58059168, 58059424, 58059647, 58059889, 58060055, 58060293, 58060570, 58060809, 58061135, 58061392, 58061656, 58061853, 58062121, 58062337, 58062656, 58062855, 58063046, 58063345, 58063634, 58063874, 58064094, 58064380, 58064632, 58064960, 58065177, 58065391, 58065630, 58065854, 58066105, 58066365, 58066688, 58066940, 58067196, 58067505, 58067783, 58068014, 58068250, 58068568, 58068805, 58069067, 58069294, 58069551, 58069762, 58069992, 58070204, 58070452, 58070693, 58070876, 58071142, 58071451, 58071664, 58071934, 58072257, 58072476, 58072717, 58073152, 58073400, 58073681, 58073931, 58074213, 58074486, 58074713, 58074956, 58075199, 58075460, 58075650, 58075952, 58076237, 58076501, 58076734, 58076945, 58077257, 58077513, 58077712, 58078012, 58078254, 58078530, 58078868, 58079166, 58079417, 58079699, 58079927, 58080201, 58080467, 58080710, 58080941, 58081344, 58081628, 58081936, 58082200, 58082466, 58082685, 58082989, 58083222, 58083423, 58083646, 58083889, 58084138, 58084476, 58084785, 58084983, 58085223, 58085466, 58085770, 58086034, 58086274, 58086600, 58086831, 58087077, 58087311, 58087570, 58087863, 58088121, 58088372, 58088605, 58088933, 58089157, 58089536, 58089762, 58090015, 58090284, 58090448, 58090656, 58090818, 58091110, 58091374, 58091630, 58091891, 58092159, 58092369, 58092623, 58092909, 58093165, 58093401, 58093637, 58093874, 58094137, 58094428, 58094672, 58094911, 58095120, 58095380, 58095666, 58095929, 58096151, 58096363, 58096589, 58096833, 58097131, 58097728, 58098048, 58098287, 58098559, 58098825, 58099057, 58099298, 58099613, 58099868, 58100105, 58100351, 58100581, 58100823, 58101051, 58101305, 58101594, 58101865, 58102173, 58102390, 58102617, 58102821, 58103034, 58103395, 58103635, 58103856, 58104032, 58104288, 58104514, 58104777, 58105024, 58105288, 58105484, 58105920, 58106158, 58106438, 58106659, 58106909, 58107170, 58107441, 58107706, 58107995, 58108233, 58108484, 58108720, 58108951, 58109122, 58109362, 58109605, 58109856, 58110087, 58110317, 58110567, 58110779, 58111006, 58111235, 58111488, 58111736, 58111987, 58112243, 58112456, 58112744, 58113031, 58113271, 58113483, 58113761, 58114112, 58114310, 58114510, 58114766, 58115042, 58115297, 58115514, 58115754, 58116025, 58116248, 58116488, 58116697, 58116949, 58117220, 58117377, 58117694, 58117910, 58118213, 58118494, 58118705, 58119007, 58119255, 58119550, 58119805, 58120122, 58120394, 58120589, 58120833, 58121066, 58121263, 58121481, 58121721, 58121944, 58122304, 58122639, 58122890, 58123128, 58123472, 58123699, 58123969, 58124238, 58124471, 58124739, 58125013, 58125175, 58125376, 58125608, 58125866, 58126084, 58126347, 58126605, 58126862, 58127075, 58127362, 58127595, 58127889, 58128181, 58128413, 58128637, 58128875, 58129070, 58129318, 58129612, 58129930, 58130496, 58130763, 58130944, 58131203, 58131409, 58131748, 58132015, 58132266, 58132476, 58132743, 58133017, 58133277, 58133530, 58133800, 58134028, 58134325, 58134583, 58134879, 58135114, 58135316, 58135567, 58135791, 58135994, 58136204, 58136439, 58136624, 58136856, 58137102, 58137448, 58137664, 58137872, 58138132, 58138688, 58138964, 58139198, 58139426, 58139618, 58139862, 58140052, 58140268, 58140546, 58140806, 58141124, 58141399, 58141629, 58141877, 58142077, 58142287, 58142514, 58142791, 58143024, 58143271, 58143569, 58143818, 58144094, 58144337, 58144534, 58144775, 58145010, 58145252, 58145479, 58145698, 58145982, 58146158, 58146485, 58146880, 58147141, 58147363, 58147617, 58147849, 58148096, 58148310, 58148544, 58148773, 58148997, 58149313, 58149581, 58149781, 58150069, 58150283, 58150509, 58150827, 58151129, 58151349, 58151626, 58151879, 58152169, 58152411, 58152674, 58152900, 58153243, 58153537, 58153755, 58154006, 58154253, 58154577, 58155072, 58155296, 58155585, 58155774, 58155978, 58156190, 58156451, 58156797, 58157024, 58157196, 58157348, 58157556, 58157740, 58157961, 58158219, 58158484, 58158731, 58158966, 58159178, 58159464, 58159747, 58159946, 58160147, 58160410, 58160642, 58160807, 58161049, 58161223, 58161530, 58161773, 58162000, 58162290, 58162556, 58162814, 58163264, 58163581, 58163749, 58163995, 58164206, 58164476, 58164726, 58164957, 58165226, 58165455, 58165725, 58166016, 58166245, 58166494, 58166702, 58166955, 58167257, 58167535, 58167775, 58168054, 58168227, 58168468, 58168718, 58168971, 58169154, 58169379, 58169621, 58169849, 58170181, 58170351, 58170519, 58170782, 58171007, 58171456, 58171711, 58171976, 58172272, 58172568, 58172778, 58173003, 58173237, 58173495, 58173755, 58174039, 58174274, 58174578, 58174855, 58175189, 58175401, 58175634, 58175943, 58176240, 58176491, 58176759, 58176986, 58177288, 58177575, 58177791, 58178006, 58178178, 58178514, 58178775, 58179036, 58179291, 58179648, 58179856, 58180149, 58180377, 58180654, 58180966, 58181168, 58181413, 58181649, 58181839, 58182134, 58182366, 58182619, 58182911, 58183076, 58183295, 58183553, 58183812, 58184018, 58184190, 58184391, 58184596, 58184783, 58185016, 58185237, 58185558, 58185830, 58186027, 58186270, 58186512, 58186767, 58187031, 58187246, 58187450, 58187840, 58188048, 58188155, 58188423, 58188605, 58188826, 58189079, 58189308, 58189560, 58189720, 58189949, 58190207, 58190414, 58190628, 58190837, 58191063, 58191296, 58191397, 58191653, 58191827, 58192063, 58192204, 58192481, 58192722, 58192944, 58193117, 58193427, 58193703, 58193936, 58194089, 58194407, 58194640, 58194727, 58195016, 58195242, 58195481, 58196032, 58196345, 58196584, 58196841, 58197095, 58197307, 58197551, 58197758, 58197879, 58198081, 58198341, 58198578, 58198822, 58199053, 58199312, 58199549, 58199779, 58199973, 58200173, 58200422, 58200533, 58200790, 58201037, 58201262, 58201554, 58201888, 58201999, 58202255, 58202536, 58202791, 58202988, 58203243, 58203330, 58203561, 58203785, 58204224, 58204439, 58204722, 58204937, 58205134, 58205356, 58205581, 58205799, 58206033, 58206269, 58206496, 58206653, 58206906, 58207123, 58207414, 58207697, 58207782, 58207942, 58208122, 58208294, 58208455, 58208565, 58208814, 58209011, 58209212, 58209459, 58209670, 58209874, 58210105, 58210274, 58210461, 58210687, 58210881, 58211167, 58211446, 58211557, 58211809, 58212024, 58212416, 58212629, 58212848, 58212990, 58213214, 58213467, 58213662, 58213869, 58214108, 58214353, 58214592, 58214935, 58215200, 58215417, 58215697, 58215904, 58216186, 58216431, 58216590, 58216727, 58216898, 58217128, 58217361, 58217572, 58217798, 58217974, 58218149, 58218413, 58218639, 58218771, 58219034, 58219295, 58219561, 58219877, 58219964, 58220188, 58220608, 58220926, 58221168, 58221413, 58221624, 58221851, 58222063, 58222260, 58222547, 58222734, 58222918, 58223167, 58223307, 58223537, 58223703, 58223930, 58224164, 58224482, 58224606, 58224833, 58225092, 58225315, 58225545, 58225763, 58226039, 58226222, 58226468, 58226757, 58226984, 58227140, 58227327, 58227538, 58227808, 58228084, 58228317, 58228800, 58229048, 58229301, 58229570, 58230232, 58230511, 58230787, 58231031, 58231310, 58231598, 58231840, 58232123, 58232378, 58232637, 58232871, 58233112, 58233402, 58233683, 58233970, 58234258, 58234501, 58234743, 58235035, 58235308, 58235594, 58235859, 58236144, 58236414, 58236992, 58237279, 58237539, 58237824, 58238118, 58238407, 58238688, 58238948, 58239229, 58239485, 58239766, 58240054, 58240333, 58240620, 58240881, 58241140, 58241422, 58241714, 58241970, 58242261, 58242547, 58242844, 58243137, 58243427, 58243707, 58243981, 58244266, 58244558, 58245184, 58245477, 58245767, 58246055, 58246336, 58246630, 58246915, 58247196, 58247447, 58247741, 58248021, 58248310, 58248598, 58248883, 58249147, 58249432, 58249708, 58249999, 58250257, 58250530, 58250818, 58251088, 58251361, 58251653, 58251915, 58252163, 58252415, 58252691, 58252932, 58253376, 58253654, 58253925, 58254211, 58254476, 58254749, 58255026, 58255308, 58255595, 58255879, 58256168, 58256432, 58256717, 58256967, 58257255, 58257546, 58257835, 58258095, 58258385, 58258661, 58258937, 58259202, 58259475, 58259709, 58259986, 58260249, 58260531, 58260831, 58261108, 58261568, 58261842, 58262088, 58262363, 58262613, 58262889, 58263134, 58263382, 58263658, 58263943, 58264188, 58264421, 58264689, 58264960, 58265226, 58265514, 58265791, 58266064, 58266316, 58266571, 58266817, 58267049, 58267319, 58267597, 58267864, 58268098, 58268397, 58268640, 58268908, 58269186, 58269436, 58269760, 58269982, 58270214, 58270455, 58270717, 58270959, 58271216, 58271441, 58271720, 58272002, 58272244, 58272488, 58272727, 58272997, 58273229, 58273460, 58273742, 58274035, 58274323, 58274597, 58274875, 58275144, 58275365, 58275589, 58275853, 58276127, 58276402, 58276653, 58276917, 58277164, 58277414, 58277952, 58278198, 58278471, 58278750, 58279029, 58279284, 58279560, 58279839, 58280103, 58280386, 58280662, 58280898, 58281125, 58281395, 58281670, 58281904, 58282156, 58282434, 58282699, 58282964, 58283220, 58283455, 58283726, 58283953, 58284233, 58284473, 58284709, 58284976, 58285246, 58285527, 58285797, 58286144, 58286394, 58286624, 58286921, 58287189, 58287454, 58287700, 58287948, 58288224, 58288489, 58288722, 58288989, 58289237, 58289507, 58289782, 58290023, 58290302, 58290584, 58290828, 58291099, 58291367, 58291607, 58291849, 58292108, 58292392, 58292671, 58292896, 58293171, 58293433, 58293709, 58293981, 58294336, 58294582, 58294858, 58295099, 58295393, 58295618, 58295905, 58296178, 58296438, 58296664, 58296942, 58297158, 58297425, 58297702, 58297941, 58298226, 58298499, 58298724, 58298989, 58299258, 58299532, 58299814, 58300087, 58300362, 58300616, 58300861, 58301132, 58301399, 58301676, 58301915, 58302190, 58302528, 58302802, 58303039, 58303284, 58303559, 58303808, 58304091, 58304364, 58304609, 58304883, 58305159, 58305406, 58305649, 58305922, 58306184, 58306435, 58306702, 58306980, 58307243, 58307507, 58307751, 58307986, 58308262, 58308536, 58308813, 58309055, 58309299, 58309549, 58309800, 58310035, 58310281, 58310720, 58310968, 58311216, 58311488, 58311739, 58312008, 58312258, 58312523, 58312807, 58313030, 58313301, 58313573, 58313813, 58314064, 58314340, 58314641, 58314923, 58315201, 58315435, 58315712, 58315982, 58316256, 58316515, 58316790, 58317061, 58317341, 58317615, 58317870, 58318099, 58318345, 58318912, 58319162, 58319432, 58319712, 58319962, 58320212, 58320493, 58320766, 58321040, 58321319, 58321586, 58321867, 58322110, 58322386, 58322654, 58322900, 58323166, 58323423, 58323667, 58323947, 58324227, 58324505, 58324740, 58325015, 58325275, 58325551, 58325800, 58326048, 58326271, 58326517, 58326758, 58327104, 58327360, 58327649, 58327888, 58328159, 58328441, 58328716, 58328997, 58329238, 58329464, 58329739, 58330010, 58330281, 58330553, 58330809, 58331066, 58331310, 58331578, 58331858, 58332136, 58332381, 58332672, 58332920, 58333160, 58333439, 58333710, 58333956, 58334229, 58334506, 58334743, 58335296, 58335579, 58335845, 58336134, 58336434, 58336685, 58336959, 58337187, 58337438, 58337711, 58337963, 58338199, 58338474, 58338754, 58339032, 58339307, 58339585, 58339860, 58340135, 58340408, 58340654, 58340933, 58341204, 58341444, 58341696, 58341989, 58342244, 58342519, 58342767, 58343042, 58343488, 58343734, 58343983, 58344223, 58344498, 58344748, 58345021, 58345291, 58345538, 58345814, 58346081, 58346357, 58346638, 58346911, 58347153, 58347432, 58347703, 58347975, 58348249, 58348530, 58348805, 58349085, 58349354, 58349631, 58349878, 58350122, 58350350, 58350602, 58350872, 58351148, 58351680, 58351957, 58352236, 58352534, 58352770, 58353040, 58353276, 58353553, 58353825, 58354060, 58354348, 58354576, 58354853, 58355152, 58355438, 58355714, 58355989, 58356228, 58356503, 58356741, 58356985, 58357260, 58357545, 58357821, 58358070, 58358352, 58358628, 58358876, 58359111, 58359388, 58359872, 58360153, 58360397, 58360679, 58360969, 58361268, 58361549, 58361826, 58362104, 58362353, 58362633, 58362915, 58363191, 58363464, 58363735, 58364008, 58364288, 58364586, 58364809, 58365107, 58365357, 58365610, 58365885, 58366150, 58366388, 58366655, 58366919, 58367166, 58367418, 58367695, 58368064, 58368341, 58368614, 58368851, 58369096, 58369386, 58369662, 58369936, 58370169, 58370442, 58370675, 58370919, 58371192, 58371467, 58371768, 58372014, 58372249, 58372481, 58372756, 58372982, 58373211, 58373455, 58373686, 58373961, 58374204, 58374473, 58374733, 58374996, 58375270, 58375508, 58375790, 58376256, 58376544, 58376819, 58377067, 58377343, 58377618, 58377892, 58378163, 58378464, 58378741, 58378975, 58379200, 58379449, 58379711, 58379959, 58380198, 58380466, 58380717, 58380963, 58381211, 58381494, 58381765, 58382044, 58382314, 58382553, 58382788, 58383080, 58383358, 58383626, 58383892, 58384448, 58384711, 58384957, 58385234, 58385504, 58385774, 58386037, 58386275, 58386539, 58386770, 58387012, 58387286, 58387560, 58387841, 58388101, 58388380, 58388626, 58388895, 58389169, 58389452, 58389717, 58389948, 58390189, 58390483, 58390766, 58391058, 58391329, 58391603, 58391869, 58392131, 58392640, 58392915, 58393150, 58393400, 58393643, 58393902, 58394167, 58394437, 58394709, 58394938, 58395205, 58395477, 58395718, 58395992, 58396261, 58396520, 58396790, 58397061, 58397285, 58397579, 58397825, 58398073, 58398313, 58398594, 58398835, 58399101, 58399370, 58399636, 58399904, 58400171, 58400412, 58400832, 58401100, 58401346, 58401616, 58401842, 58402110, 58402341, 58402581, 58402855, 58403128, 58403358, 58403632, 58403891, 58404161, 58404433, 58404707, 58404983, 58405229, 58405456, 58405678, 58405950, 58406218, 58406476, 58406733, 58406965, 58407179, 58407399, 58407627, 58407898, 58408141, 58408412, 58408674, 58409024, 58409265, 58409527, 58409790, 58410059, 58410341, 58410621, 58410895, 58411170, 58411442, 58411663, 58411956, 58412245, 58412487, 58412724, 58412992, 58413226, 58413449, 58413731, 58414007, 58414280, 58414554, 58414823, 58415065, 58415337, 58415602, 58415870, 58416115, 58416378, 58416649, 58417216, 58417493, 58417760, 58417983, 58418253, 58418493, 58418714, 58418977, 58419217, 58419459, 58419722, 58419939, 58420214, 58420455, 58420719, 58421016, 58421307, 58421535, 58421807, 58422029, 58422288, 58422555, 58422769, 58423053, 58423300, 58423574, 58423839, 58424110, 58424377, 58424638, 58424859, 58425408, 58425671, 58425933, 58426205, 58426479, 58426745, 58426959, 58427177, 58427397, 58427667, 58427888, 58428110, 58428343, 58428558, 58428792, 58429026, 58429293, 58429556, 58429795, 58430062, 58430330, 58430556, 58430799, 58431074, 58431296, 58431539, 58431813, 58432057, 58432319, 58432590, 58432856, 58433126, 57999112, 58040062, 58244838, 58449984, 58450254, 58450519, 58450787, 58451005, 58451268, 58451542, 58451804, 58452069, 58452342, 58452637, 58452879, 58453172, 58453401, 58453642, 58453918, 58454185, 58454431, 58454664, 58454909, 58455146, 58455404, 58455666, 58455877, 58456117, 58456383, 58456613, 58456850, 58457122, 58457364, 58457629, 58458176, 58458414, 58458677, 58458949, 58459234, 58459490, 58459760, 58460035, 58460297, 58460568, 58460782, 58461050, 58461286, 58461504, 58461774, 58462002, 58462262, 58462490, 58462742, 58463007, 58463227, 58463465, 58463707, 58463973, 58464228, 58464502, 58464761, 58465032, 58465304, 58465534, 58465790, 58466062, 58466368, 58466649, 58466924, 58467188, 58467441, 58467666, 58467942, 58468180, 58468416, 58468683, 58468947, 58469166, 58469402, 58469641, 58469854, 58470072, 58470212, 58470362, 58470568, 58470792, 58471041, 58471336, 58471558, 58471804, 58472058, 58472196, 58472339, 58472513, 58472726, 58472949, 58473197, 58473411, 58473632, 58473863, 58474134, 58474560, 58474778, 58474938, 58475100, 58475299, 58475456, 58475649, 58475859, 58476081, 58476328, 58476538, 58476770, 58477014, 58477274, 58477487, 58477730, 58477956, 58478192, 58478463, 58478610, 58478776, 58478976, 58479215, 58479364, 58479525, 58479746, 58479970, 58480169, 58480389, 58480645, 58480930, 58481138, 58481345, 58481559, 58481801, 58481996, 58482212, 58482436, 58482752, 58482961, 58483187, 58483401, 58483633, 58483882, 58484159, 58484465, 58484679, 58484898, 58485125, 58485374, 58485577, 58485798, 58486002, 58486211, 58486434, 58486680, 58486952, 58487236, 58487438, 58487645, 58487862, 58488092, 58488324, 58488568, 58488840, 58489075, 58489336, 58489578, 58489854, 58490139, 58490441, 58490944, 58491184, 58491448, 58491749, 58491972, 58492228, 58492509, 58492741, 58492983, 58493188, 58493397, 58493632, 58493826, 58494056, 58494275, 58494513, 58494749, 58495000, 58495274, 58495584, 58495788, 58496016, 58496251, 58496467, 58496696, 58496925, 58497187, 58497464, 58497679, 58497910, 58498160, 58498425, 58498722, 58499136, 58499373, 58499621, 58499905, 58500116, 58500338, 58500568, 58500804, 58501076, 58501362, 58501587, 58501813, 58502033, 58502260, 58502475, 58502731, 58502958, 58503189, 58503440, 58503661, 58503919, 58504198, 58504429, 58504683, 58504945, 58505152, 58505365, 58505604, 58505833, 58506091, 58506388, 58506590, 58506800, 58507328, 58507582, 58507827, 58508109, 58508413, 58508741, 58509089, 58509312, 58509548, 58509745, 58509976, 58510187, 58510412, 58510673, 58510953, 58511168, 58511369, 58511599, 58511847, 58512068, 58512305, 58512507, 58512727, 58512933, 58513147, 58513396, 58513616, 58513831, 58514085, 58514277, 58514509, 58514717, 58514947, 58515520, 58515795, 58515946, 58516128, 58516335, 58516573, 58516840, 58517078, 58517322, 58517582, 58517854, 58518136, 58518368, 58518621, 58518891, 58519033, 58519200, 58519404, 58519643, 58519881, 58520163, 58520468, 58520703, 58520973, 58521285, 58521636, 58521873, 58522122, 58522346, 58522557, 58522784, 58523044, 58523244, 58523712, 58523948, 58524151, 58524367, 58524593, 58524828, 58525084, 58525351, 58525589, 58525796, 58526030, 58526281, 58526570, 58526874, 58527097, 58527339, 58527581, 58527841, 58528126, 58528336, 58528563, 58528821, 58529034, 58529273, 58529496, 58529729, 58529974, 58530240, 58530449, 58530663, 58530911, 58531167, 58531443, 58531904, 58532162, 58532438, 58532649, 58532864, 58533081, 58533315, 58533577, 58533852, 58534063, 58534282, 58534502, 58534717, 58534962, 58535128, 58535307, 58535518, 58535779, 58535977, 58536216, 58536418, 58536650, 58536874, 58537111, 58537353, 58537621, 58537823, 58538038, 58538287, 58538496, 58538727, 58538978, 58539186, 58539403, 58539636, 58540096, 58540323, 58540559, 58540761, 58540973, 58541214, 58541487, 58541782, 58541983, 58542194, 58542417, 58542649, 58542923, 58543112, 58543318, 58543555, 58543770, 58543989, 58544194, 58544429, 58544692, 58544880, 58545102, 58545369, 58545673, 58545822, 58545986, 58546169, 58546375, 58546582, 58546819, 58547034, 58547264, 58547521, 58547723, 58547937, 58548288, 58548558, 58548828, 58549068, 58549311, 58549511, 58549738, 58549936, 58550159, 58550366, 58550567, 58550773, 58550896, 58551087, 58551307, 58551572, 58551800, 58552059, 58552330, 58552621, 58552838, 58552998, 58553171, 58553355, 58553567, 58553812, 58554032, 58554296, 58554587, 58554769, 58554962, 58555164, 58555363, 58555598, 58555789, 58555999, 58556193, 58556480, 58556722, 58556968, 58557168, 58557382, 58557623, 58557753, 58557886, 58558033, 58558196, 58558332, 58558489, 58558666, 58558851, 58559036, 58559242, 58559400, 58559575, 58559790, 58560044, 58560317, 58560512, 58560718, 58560853, 58561006, 58561193, 58561393, 58561593, 58561809, 58562025, 58562261, 58562421, 58562606, 58562805, 58563006, 58563242, 58563517, 58563703, 58563910, 58564147, 58564355, 58564672, 58564971, 58565279, 58565428, 58565603, 58565745, 58565915, 58566154, 58566424, 58566712, 58566958, 58567180, 58567412, 58567682, 58567960, 58568275, 58568488, 58568735, 58568983, 58569199, 58569438, 58569703, 58569927, 58570167, 58570305, 58570469, 58570596, 58570750, 58570941, 58571130, 58571338, 58571559, 58571810, 58572028, 58572272, 58572470, 58572864, 58573081, 58573320, 58573593, 58573805, 58574038, 58574284, 58574562, 58574772, 58575005, 58575272, 58575569, 58575771, 58575999, 58576182, 58576369, 58576573, 58576792, 58577009, 58577246, 58577530, 58577853, 58578054, 58578250, 58578473, 58578685, 58578902, 58579167, 58579354, 58579572, 58579788, 58580014, 58580202, 58580374, 58580602, 58581056, 58581199, 58581354, 58581546, 58581774, 58581910, 58582063, 58582252, 58582466, 58582719, 58582953, 58583093, 58583257, 58583456, 58583669, 58583908, 58584115, 58584347, 58584598, 58584863, 58585061, 58585282, 58585522, 58585797, 58586001, 58586213, 58586442, 58586694, 58586855, 58587027, 58587215, 58587446, 58587663, 58587813, 58587992, 58588187, 58588382, 58588584, 58588783, 58589248, 58589490, 58589762, 58589951, 58590170, 58590392, 58590632, 58590887, 58591163, 58591375, 58591636, 58591907, 58592140, 58592404, 58592605, 58592809, 58593037, 58593229, 58593444, 58593653, 58593876, 58594130, 58594428, 58594564, 58594729, 58594979, 58595240, 58595440, 58595661, 58595896, 58596081, 58596290, 58596545, 58596811, 58597014, 58597440, 58597661, 58597887, 58598125, 58598385, 58598683, 58598993, 58599188, 58599386, 58599604, 58599712, 58599852, 58600067, 58600318, 58600589, 58600776, 58600967, 58601181, 58601434, 58601671, 58601931, 58602227, 58602531, 58602723, 58602917, 58603147, 58603414, 58603705, 58603918, 58604134, 58604344, 58604596, 58604817, 58605059, 58605279, 58605632, 58605891, 58606087, 58606290, 58606513, 58606704, 58606921, 58607120, 58607319, 58607533, 58607754, 58607964, 58608184, 58608430, 58608695, 58608905, 58609128, 58609374, 58609497, 58609636, 58609852, 58610092, 58610346, 58610536, 58610742, 58610977, 58611251, 58611535, 58611736, 58611969, 58612173, 58612383, 58612585, 58612792, 58613037, 58613239, 58613474, 58613824, 58614066, 58614336, 58614631, 58614937, 58615074, 58615215, 58615403, 58615637, 58615902, 58616209, 58616421, 58616642, 58616835, 58617042, 58617195, 58617355, 58617532, 58617746, 58618004, 58618156, 58618329, 58618552, 58618798, 58619072, 58619297, 58619474, 58619641, 58619854, 58620061, 58620281, 58620496, 58620752, 58620889, 58621053, 58621235, 58621447, 58621663, 58622016, 58622238, 58622441, 58622663, 58622903, 58623184, 58623394, 58623645, 58623863, 58624100, 58624362, 58624667, 58624849, 58625068, 58625295, 58625505, 58625734, 58625925, 58626122, 58626306, 58626450, 58626588, 58626820, 58627067, 58627325, 58627507, 58627702, 58627928, 58628167, 58628376, 58628601, 58628853, 58628990, 58629133, 58629310, 58629529, 58629763, 58630208, 58630439, 58630695, 58630974, 58631270, 58631478, 58631703, 58631934, 58632112, 58632316, 58632531, 58632734, 58632965, 58633226, 58633436, 58633662, 58633901, 58634101, 58634322, 58634530, 58634744, 58634970, 58635181, 58635405, 58635650, 58635944, 58636144, 58636348, 58636575, 58636827, 58637018, 58637227, 58637475, 58637754, 58637957, 58638400, 58638600, 58638806, 58639031, 58639263, 58639500, 58639700, 58639925, 58640159, 58640372, 58640590, 58640841, 58641030, 58641222, 58641455, 58641724, 58641958, 58642168, 58642397, 58642555, 58642710, 58642893, 58643103, 58643353, 58643635, 58643836, 58644075, 58644342, 58644643, 58644838, 58645042, 58645269, 58645499, 58645694, 58645886, 58646122, 58646592, 58646866, 58647054, 58647252, 58647448, 58647652, 58647886, 58648147, 58648365, 58648603, 58648880, 58649177, 58649309, 58649462, 58649661, 58649871, 58650079, 58650316, 58650528, 58650753, 58650943, 58651151, 58651351, 58651546, 58651746, 58651969, 58652172, 58652369, 58652560, 58652777, 58652978, 58653200, 58653434, 58653635, 58653859, 58654111, 58654398, 58654784, 58655019, 58655282, 58655430, 58655567, 58655767, 58655975, 58656214, 58656467, 58656755, 58656961, 58657167, 58657378, 58657622, 58657767, 58657952, 58658152, 58658359, 58658615, 58658807, 58659007, 58659205, 58659453, 58659706, 58659987, 58660295, 58660611, 58660807, 58661017, 58661234, 58661459, 58661605, 58661745, 58661935, 58662135, 58662324, 58662512, 58662976, 58663180, 58663395, 58663592, 58663802, 58664014, 58664236, 58664483, 58664686, 58664889, 58665145, 58665351, 58665541, 58665757, 58665966, 58666212, 58666356, 58666511, 58666707, 58666914, 58667140, 58667379, 58667591, 58667800, 58668042, 58668239, 58668460, 58668694, 58668946, 58669158, 58669395, 58669641, 58669928, 58670148, 58670374, 58670633, 58670819, 58671168, 58671377, 58671594, 58671822, 58672025, 58672238, 58672446, 58672665, 58672920, 58673083, 58673290, 58673522, 58673713, 58673905, 58674126, 58674334, 58674508, 58674677, 58674889, 58675116, 58675383, 58675592, 58675808, 58676022, 58676240, 58676481, 58676692, 58676906, 58677144, 58677356, 58677592, 58677789, 58678012, 58678260, 58678457, 58678684, 58678836, 58679015, 58679360, 58679588, 58679841, 58680101, 58680286, 58680490, 58680741, 58680953, 58681165, 58681357, 58681561, 58681773, 58681902, 58682050, 58682255, 58682412, 58682597, 58682819, 58683064, 58683266, 58683489, 58683729, 58683979, 58684216, 58684454, 58684711, 58684855, 58684994, 58685173, 58685386, 58685611, 58685832, 58686031, 58686243, 58686478, 58686678, 58686896, 58687137, 58687552, 58687714, 58687880, 58688071, 58688270, 58688514, 58688655, 58688788, 58688992, 58689223, 58689468, 58689670, 58689894, 58690140, 58690402, 58690685, 58690903, 58691129, 58691387, 58691657, 58691863, 58692092, 58692277, 58692467, 58692711, 58692967, 58693228, 58693500, 58693708, 58693924, 58694127, 58694368, 58694636, 58694915, 58695225, 58695414, 58695744, 58695958, 58696179, 58696420, 58696666, 58696865, 58697074, 58697291, 58697432, 58697583, 58697805, 58698009, 58698216, 58698417, 58698637, 58698834, 58699051, 58699282, 58699427, 58699577, 58699763, 58699976, 58700179, 58700384, 58700591, 58700817, 58701060, 58701327, 58701629, 58701852, 58702095, 58702322, 58702580, 58702881, 58703131, 58703420, 58703936, 58704138, 58704350, 58704566, 58704703, 58704867, 58705082, 58705327, 58705528, 58705730, 58705946, 58706111, 58706284, 58706480, 58706612, 58706735, 58706951, 58707180, 58707412, 58707694, 58707915, 58708147, 58708356, 58708587, 58708802, 58709009, 58709217, 58709463, 58709747, 58709963, 58710217, 58710432, 58710666, 58710869, 58711066, 58711295, 58711530, 58711797, 58712128, 58712327, 58712553, 58712810, 58712970, 58713142, 58713317, 58713520, 58713754, 58713995, 58714211, 58714457, 58714704, 58714985, 58715198, 58715434, 58715685, 58715883, 58716096, 58716333, 58716527, 58716748, 58716979, 58717219, 58717427, 58717656, 58717938, 58718118, 58718324, 58718574, 58718772, 58719003, 58719163, 58719315, 58719515, 58719724, 58719948, 58720320, 58720517, 58720719, 58720953, 58721195, 58721452, 58721649, 58721845, 58722087, 58722299, 58722509, 58722717, 58722927, 58723164, 58723378, 58723584, 58723809, 58724070, 58724277, 58724508, 58724782, 58725003, 58725251, 58725404, 58725572, 58725767, 58725980, 58726200, 58726402, 58726611, 58726826, 58727052, 58727300, 58727567, 58727777, 58727997, 58728225, 58728512, 58728731, 58728972, 58729213, 58729409, 58729611, 58729839, 58730029, 58730233, 58730458, 58730696, 58730939, 58731136, 58731338, 58731538, 58731748, 58731892, 58732059, 58732268, 58732497, 58732733, 58733005, 58733291, 58733504, 58733713, 58733963, 58734249, 58734551, 58734761, 58734991, 58735229, 58735423, 58735626, 58735841, 58736055, 58736271, 58736704, 58736988, 58737320, 58737654, 58737800, 58737956, 58738126, 58738335, 58738555, 58738757, 58738914, 58739074, 58739260, 58739454, 58739682, 58739915, 58740183, 58740401, 58740631, 58740777, 58740952, 58741132, 58741371, 58741625, 58741901, 58742031, 58742169, 58742375, 58742593, 58742851, 58743084, 58743334, 58743600, 58743834, 58744073, 58744272, 58744460, 58744896, 58745097, 58745320, 58745493, 58745681, 58745890, 58746103, 58746354, 58746503, 58746677, 58746886, 58747113, 58747273, 58747446, 58747643, 58747872, 58748140, 58748342, 58748536, 58748760, 58748989, 58749265, 58749472, 58749705, 58749972, 58750174, 58750382, 58750598, 58750823, 58751003, 58751231, 58751499, 58751707, 58751911, 58752130, 58752284, 58752441, 58752615, 58753088, 58753320, 58753519, 58753743, 58753937, 58754117, 58754327, 58754551, 58754792, 58754974, 58755181, 58755424, 58755660, 58755923, 58756210, 58756501, 58756748, 58757024, 58757324, 58757532, 58757747, 58757996, 58758211, 58758419, 58758629, 58758825, 58759041, 58759255, 58759475, 58759718, 58760010, 58760220, 58760455, 58760670, 58760909, 58761280, 58761481, 58761677, 58761875, 58762079, 58762287, 58762518, 58762768, 58763048, 58763281, 58763428, 58763569, 58763734, 58763973, 58764188, 58764383, 58764602, 58764856, 58765111, 58765321, 58765537, 58765761, 58766022, 58766209, 58766395, 58766616, 58766861, 58767009, 58767178, 58767366, 58767593, 58767850, 58768136, 58768325, 58768532, 58768783, 58769001, 58769472, 58769762, 58770063, 58770262, 58770492, 58770685, 58770895, 58771113, 58771325, 58771579, 58771853, 58772156, 58772368, 58772576, 58772800, 58773057, 58773198, 58773377, 58773565, 58773770, 58773983, 58774211, 58774440, 58774656, 58774880, 58775145, 58775438, 58775647, 58775864, 58775990, 58776140, 58776299, 58776495, 58776704, 58776921, 58777179, 58777335, 58777664, 58777890, 58778101, 58778323, 58778555, 58778757, 58779006, 58779270, 58779538, 58779814, 58780009, 58780199, 58780429, 58780672, 58780806, 58780934, 58781130, 58781346, 58781484, 58781632, 58781786, 58781908, 58782042, 58782227, 58782438, 58782578, 58782730, 58782901, 58783102, 58783294, 58783488, 58783678, 58783866, 58784065, 58784288, 58784482, 58784714, 58784971, 58785171, 58785301, 58785444, 58785856, 58786068, 58786288, 58786478, 58786660, 58786875, 58787115, 58787367, 58787586, 58787815, 58788039, 58788268, 58788469, 58788678, 58788921, 58789183, 58789380, 58789604, 58789801, 58790013, 58790217, 58790449, 58790700, 58790935, 58791168, 58791360, 58791577, 58791717, 58791870, 58792021, 58792195, 58792393, 58792617, 58792818, 58793014, 58793218, 58793418, 58793626, 58794048, 58794245, 58794446, 58794679, 58794870, 58795069, 58795284, 58795509, 58795758, 58796021, 58796205, 58796420, 58796680, 58796876, 58797081, 58797298, 58797506, 58797746, 58797953, 58798192, 58798458, 58798653, 58798874, 58799112, 58799267, 58799433, 58799632, 58799839, 58800096, 58800361, 58800655, 58800823, 58801009, 58801224, 58801423, 58801635, 58801829, 58802240, 58802468, 58802732, 58802885, 58803098, 58803316, 58803536, 58803781, 58804059, 58804346, 58804555, 58804774, 58804985, 58805198, 58805395, 58805609, 58805818, 58805991, 58806170, 58806381, 58806619, 58806895, 58807202, 58807318, 58807440, 58807651, 58807887, 58808073, 58808290, 58808488, 58808690, 58808897, 58809126, 58809339, 58809561, 58809776, 58810001, 58810432, 58810672, 58810910, 58811176, 58811398, 58811626, 58811900, 58812191, 58812382, 58812605, 58812856, 58813121, 58813318, 58813522, 58813757, 58813960, 58814188, 58814401, 58814636, 58814781, 58814951, 58815153, 58815360, 58815592, 58815780, 58815993, 58816230, 58816491, 58816731, 58816974, 58817239, 58817460, 58817692, 58817946, 58818215, 58818624, 58818852, 58819114, 58819405, 58819602, 58819826, 58820075, 58820337, 58820503, 58820697, 58820900, 58821124, 58821365, 58821641, 58821946, 58822181, 58822424, 58822695, 58822849, 58823034, 58823256, 58823503, 58823764, 58824035, 58824242, 58824475, 58824683, 58824918, 58825126, 58825355, 58825593, 58825794, 58826028, 58826293, 58826816, 58827015, 58827220, 58827423, 58827610, 58827753, 58827913, 58828110, 58828315, 58828547, 58828828, 58829034, 58829235, 58829443, 58829680, 58829941, 58830124, 58830329, 58830543, 58830728, 58830939, 58831166, 58831336, 58831545, 58831748, 58831956, 58832180, 58832435, 58832700, 58832895, 58833102, 58833243, 58833410, 58833653, 58833923, 58834140, 58834371, 58834571, 58835008, 58835245, 58835430, 58835662, 58835916, 58836197, 58836400, 58836622, 58836857, 58837103, 58837306, 58837500, 58837722, 58837954, 58838201, 58838392, 58838577, 58838786, 58839035, 58839235, 58839440, 58839631, 58839848, 58840088, 58840342, 58840537, 58840742, 58840921, 58841111, 58841310, 58841522, 58841770, 58842047, 58842170, 58842315, 58842479, 58842660, 58842792, 58843200, 58843397, 58843572, 58843768, 58843999, 58844269, 58844480, 58844699, 58844921, 58845179, 58845308, 58845427, 58845587, 58845803, 58845998, 58846198, 58846394, 58846621, 58846800, 58846987, 58847198, 58847409, 58847620, 58847816, 58848013, 58848225, 58848455, 58848716, 58848856, 58849019, 58849200, 58849331, 58849473, 58849641, 58849827, 58850046, 58850274, 58850461, 58850689, 58850888, 58851085, 58851187, 58851392, 58851466, 58851579, 58851685, 58851797, 58851949, 58852123, 58852343, 58852577, 58852744, 58852956, 58853137, 58853312, 58853492, 58853684, 58853884, 58854091, 58854294, 58854534, 58854796, 58854995, 58855207, 58855439, 58855645, 58855855, 58856091, 58856344, 58856637, 58856821, 58857023, 58857238, 58857479, 58857687, 58857900, 58858138, 58858348, 58858570, 58858705, 58858846, 58859074, 58859584, 58859874, 58860120, 58860321, 58860542, 58860670, 58860800, 58860988, 58861203, 58861457, 58861628, 58861799, 58861956, 58862055, 58862117, 58862330, 58862556, 58862817, 58863077, 58863266, 58863453, 58863677, 58863880, 58864113, 58864312, 58864505, 58864737, 58864946, 58865187, 58865440, 58865721, 58865908, 58866118, 58866315, 58866509, 58866714, 58866934, 58867149, 58867392, 58867776, 58867936, 58868107, 58868290, 58868477, 58868671, 58868854, 58869052, 58869268, 58869473, 58869703, 58869921, 58870165, 58870358, 58870540, 58870657, 58870770, 58870891, 58870975, 58871137, 58871324, 58871527, 58871746, 58871873, 58872027, 58872215, 58872398, 58872581, 58872767, 58872963, 58873179, 58873388, 58873594, 58873796, 58874025, 58874172, 58874329, 58874495, 58874668, 58874894, 58875090, 58875303, 58875518, 58875968, 58876188, 58876420, 58876661, 58876895, 58877136, 58877397, 58877665, 58877751, 58877943, 58878157, 58878396, 58878538, 58878710, 58878903, 58879133, 58879376, 58879614, 58879791, 58879912, 58880032, 58880231, 58880458, 58880654, 58880844, 58881066, 58881324, 58881610, 58881816, 58882008, 58882215, 58882457, 58882644, 58882861, 58883112, 58883372, 58883589, 58883824, 58884160, 58884298, 58884450, 58884644, 58884827, 58885016, 58885191, 58885394, 58885604, 58885838, 58886077, 58886290, 58886413, 58886528, 58886657, 58886777, 58886921, 58887073, 58887270, 58887468, 58887693, 58887947, 58888237, 58888358, 58888476, 58888607, 58888766, 58888938, 58889121, 58889181, 58889323, 58889446, 58889575, 58889720, 58889883, 58890026, 58890173, 58890332, 58890534, 58890742, 58890958, 58891178, 58891408, 58891663, 58891946, 58892352, 58892551, 58892754, 58892942, 58893126, 58893344, 58893579, 58893835, 58893980, 58894130, 58894313, 58894523, 58894725, 58894931, 58895183, 58895381, 58895498, 58895630, 58895839, 58896028, 58896235, 58896426, 58896629, 58896839, 58897047, 58897233, 58897452, 58897710, 58897971, 58898167, 58898363, 58898589, 58898807, 58899034, 58899276, 58899392, 58899522, 58899677, 58899846, 58899982, 58900131, 58900544, 58900733, 58900919, 58901139, 58901364, 58901583, 58901826, 58902028, 58902264, 58902470, 58902689, 58902875, 58903063, 58903238, 58903362, 58903482, 58903567, 58903753, 58903948, 58904134, 58904305, 58904487, 58904698, 58904912, 58905128, 58905352, 58905587, 58905784, 58905985, 58906216, 58906466, 58906696, 58906908, 58907151, 58907377, 58907604, 58907750, 58907917, 58908104, 58908280, 58908456, 58908736, 58908935, 58909154, 58909344, 58909545, 58909758, 58910002, 58910266, 58910546, 58910693, 58910865, 58911060, 58911250, 58911450, 58911679, 58911950, 58912230, 58912421, 58912626, 58912783, 58912908, 58913009, 58913076, 58913265, 58913479, 58913694, 58913922, 58914068, 58914246, 58914446, 58914679, 58914826, 58914994, 58915171, 58915365, 58915560, 58915765, 58915992, 58916260, 58916465, 58916928, 58917137, 58917367, 58917631, 58917843, 58918074, 58918321, 58918606, 58918793, 58919005, 58919187, 58919406, 58919626, 58919847, 58920072, 58920314, 58920584, 58920880, 58921073, 58921283, 58921512, 58921717, 58921963, 58922158, 58922343, 58922495, 58922653, 58922846, 58923051, 58923280, 58923476, 58923708, 58923829, 58924023, 58924223, 58924356, 58924552, 58924679, 58924839, 58925120, 58925301, 58925493, 58925687, 58925905, 58926032, 58926188, 58926357, 58926567, 58926757, 58926930, 58927115, 58927288, 58927488, 58927688, 58927935, 58928102, 58928270, 58928406, 58928564, 58928736, 58928912, 58929106, 58929312, 58929509, 58929744, 58929988, 58930122, 58930271, 58930441, 58930628, 58930829, 58931064, 58931337, 58931537, 58931756, 58932002, 58932186, 58932397, 58932626, 58932874, 58933312, 58933518, 58933746, 58933984, 58934234, 58934452, 58934680, 58934811, 58934950, 58935108, 58935293, 58935514, 58935747, 58935980, 58936217, 58936438, 58936685, 58936908, 58937145, 58937422, 58937614, 58937827, 58938077, 58938379, 58938696, 58939023, 58939357, 58939704, 58940060, 58940428, 58940805, 58941504, 58941888, 58942275, 58942665, 58943061, 58943457, 58943849, 58944252, 58944660, 58945074, 58945487, 58945904, 58946321 };
//var list = new int[] { 13811776, 13812695, 13813617, 13814688, 13815756, 13819968, 18268160, 18276352, 13822568, 13828160, 13830625, 13833063, 13833930, 13834799, 13836352, 13837305, 13839762, 13841440, 13844544, 13846586, 13846834, 13847104, 13847351, 13847622, 13849479, 13852736, 13854499, 13856287, 13857920, 13860928, 13863416, 13865928, 13869120, 13870858, 13872682, 13874518, 13877312, 13879990, 13882104, 13885504, 13887155, 13888816, 13890227, 13891652, 13892397, 13893696, 13895128, 13896576, 13896838, 13897111, 13898997, 13901888, 13905115, 13910080, 13911797, 13913523, 13918272, 13921158, 13921496, 13921845, 13922914, 13924008, 13924257, 13924531, 13924779, 13926464, 13928107, 13929775, 13930152, 13930552, 13930919, 18300992, 18303407, 18305425, 18307449, 18307739, 18309184, 18310415, 18311672, 18311910, 18312171, 18313795, 18315444, 18315711, 18317376, 18319039, 18320664, 18320920, 18321315, 18322465, 18325568, 18327540, 18329470, 18333760, 18336313, 18336583, 18336863, 18337529, 18338202, 18338478, 18338765, 18340022, 18341291, 18341952, 18342253, 18342699, 18343209, 18345078, 18346965, 18350144, 18352082, 18352390, 18352710, 18352964, 18353234, 18353531, 18353838, 18354846, 18355806, 18356096, 18356396, 18358336, 18359694, 18361749, 18363815, 18366528, 18368980, 18369963, 18370956, 18371937, 18372929, 18373223, 18373527, 18374720, 18375712, 18378063, 18380424, 18381419, 18382912, 18383905, 18384909, 18387334, 18391104, 18393526, 18395958, 18399296, 18401445, 18403634, 18407488, 18409649, 18411821, 18415680, 18417616, 18418026, 18418459, 18420603, 18422756, 18423872, 18424876, 18427247, 18429630, 18432064, 18434308, 18436499, 18438699, 18439258, 18440256, 18442287, 18444330, 18445322, 18448448, 18450824, 18453212, 18456640, 18458332, 18459815, 18461253, 18464832, 18467267, 18469690, 18473024, 18475585, 18478156, 18481216, 18483087, 18485263, 18489408, 18491762, 18494126, 18497600, 18499460, 18501907, 18505792, 18508220, 18510661, 18513984, 18516250, 18516546, 18516851, 18519215, 18522176, 18524821, 18527477, 18530368, 18532878, 18534749, 18536632, 18323577, 18332012, 18413743, 18446324, 18546752, 18548734, 18551192, 18554944, 18557651, 18560366, 18563136, 18565256, 18567622, 18571328, 18573505, 18575695, 18579520, 18581774, 18584494, 18587712, 18590011, 18592318, 18595904, 18599021, 18601239, 18604096, 18605463, 18606840, 18612288, 18615315, 18617474, 18620480, 18623041, 18625612, 18628672, 18630803, 18632913, 18636864, 18639429, 18642005, 18645056, 18647304, 18649539, 18653248, 18655265, 18657293, 18661440, 18663714, 18665435, 18667166, 18669632, 18671408, 18673845, 18677824, 18680068, 18682325, 18686016, 18688492, 18690259, 18692036, 18692305, 18694208, 18696526, 18698854, 18700563, 18702400, 18704422, 18706455, 18706870, 18707307, 18707600, 18707905, 18710592, 18713188, 18715586, 18718784, 18720915, 18723059, 18726976, 18728995, 18731807, 18734631, 18735168, 18735587, 18737630, 18739683, 18743360, 18745604, 18747941, 18751552, 18753468, 18755392, 18757332, 18759744, 18761700, 18763664, 18765377, 18767936, 18769751, 18771578, 18773495, 18776128, 18778081, 18780044, 18781979, 18784320, 18786269, 18788228, 18790169, 18792512, 18794432, 18796361, 18798325, 18553661, 18554051, 18554467, 18562476, 18808896, 18812191, 18817088, 18819830, 18822584, 18825280, 18827334, 18829437, 18831549, 18833472, 18835167, 18836908, 18838655, 18841664, 18843188, 18845768, 18849856, 18851944, 18854042, 18855654, 18858048, 18859604, 18861167, 18863105, 18866240, 18867965, 18869711, 18871947, 18874432, 18874723, 18875038, 18877019, 18879145, 18882624, 18884585, 18884885, 18885209, 18885458, 18885732, 18886007, 18886307, 18886560, 18886837, 18890816, 18893071, 18894298, 18895551, 18899008, 18900780, 18903476, 18907200, 18909983, 18915392, 18918148, 18923584, 18926321, 18931776, 18934696, 18939968, 18942640, 18945318, 18948160, 18950825, 18953368, 18956352, 18958897, 18961450, 18964544, 18967235, 18972736, 18975883, 18980928, 18984011, 18989120, 18992876, 18997312, 19001232, 19005504, 19009388, 19013696, 19017550, 19021888, 19024400, 19030080, 19033923, 19038272, 19042096, 19046464, 19050218, 19051960, 19054656, 19058075, 19071040, 19074313, 19079232, 19082531, 19087424, 19090557, 19095616, 19098920, 19103808, 19107085, 19112000, 19115267, 19120192, 19123363, 19128384, 19131848, 19136576, 19139807, 19144768, 19146521, 19147410, 19152960, 19156450, 19161152, 19164558, 19166310, 19169344, 19171977, 19174621, 19177536, 19179881, 19182713, 19185728, 19188095, 19190470, 19193920, 19196653, 19202112, 19204817, 19210304, 19213059, 19215490, 19218496, 19221267, 19226688, 19229481, 19234880, 19237514, 19240149, 19243072, 19245190, 19246882, 19248585, 19251264, 19253384, 19255815, 19259456, 19261598, 19263750, 19267648, 19269501, 19271890, 19275840, 19278157, 19280484, 19284032, 19285404, 19287983, 19292224, 19294563, 19296714, 19298425, 19300416, 19302729, 19305054, 19308608, 19310664, 19311021, 19311381, 19312863, 19314354, 19316800, 19318942, 19321032, 19333184, 19335863, 19338553, 19341376, 19344062, 19349568, 19352500, 19354374, 19357760, 19359599, 19361450, 19365952, 19369292, 19371627, 19374144, 19376686, 19379256, 19382336, 19385161, 19390528, 19393374, 19396008, 19398720, 19401726, 19406912, 19409596, 19412290, 19415104, 19417765, 19423296, 19426185, 19431488, 19434184, 19436788, 19439680, 19442360, 19445052, 19447872, 19450591, 19453202, 19456064, 19458277, 19460514, 19464256, 19466899, 19469555, 19472448, 19475305, 19480640, 19483300, 19485973, 19488832, 19491507, 19497024, 19499783, 19502057, 19505216, 19507918, 19510632, 19513408, 19516021, 19521600, 19524392, 19529792, 19532490, 19537984, 19540975, 19546176, 19549026, 19551628, 19554368, 19557306, 19562560, 19565521, 19568438, 19570752, 19572846, 19573160, 19573468, 19578944, 19581891, 19595328, 19598128, 19603520, 19606305, 19611712, 19614593, 19619904, 19622841, 19628096, 19630720, 19636288, 19639205, 19644480, 19647276, 19652672, 19655615, 19660864, 19663820, 19669056, 19671999, 19677248, 19680208, 19685440, 19688300, 19690400, 19693632, 19696315, 19699014, 19701824, 19703922, 19706859, 19710016, 19712841, 19718208, 19721517, 19724834, 19725189, 19726400, 19728229, 19730079, 19734592, 19736826, 19739015, 19742784, 19745513, 19750976, 19753713, 19759168, 19761918, 19764678, 19767360, 19769682, 19772191, 19775552, 19778293, 19783744, 19786501, 19789268, 19791936, 19794460, 19796800, 19800128, 19802921, 19805806, 19808320, 19810513, 19812728, 19814117, 19816512, 19818220, 19818530, 19818848, 19820566, 19822295, 19824704, 19826532, 19828261, 19830004, 19832896, 19835029, 19837117, 19841088, 19843882, 19846688, 19600903, 19857472, 19860260, 19865664, 19868547, 19871438, 19873856, 19876007, 19876288, 19876583, 19878470, 19882048, 19883920, 19885811, 19887329, 19890240, 19892016, 19893800, 19894091, 19894442, 19898432, 19900809, 19902929, 19906624, 19909950, 19912270, 19914816, 19916703, 19918789, 19923008, 19925626, 19928255, 19931200, 19933293, 19935382, 19939392, 19941483, 19943585, 19947584, 19950148, 19952781, 19955776, 19957864, 19959964, 19963968, 19966649, 19969254, 19972160, 19974243, 19976338, 19980352, 19982441, 19983936, 19985443, 19988544, 19991007, 19993040, 19996736, 19998864, 20001008, 20004928, 20007187, 20008908, 20010640, 20013120, 20015153, 20017123, 20019106, 20021312, 20023322, 20025362, 20027412, 20029504, 20031472, 20034121, 20037696, 20040456, 20043174, 20043523, 20045888, 20048254, 20050628, 20054080, 20056288, 20056619, 20056953, 20059404, 20062272, 20064683, 20067276, 20070464, 20072835, 20075136, 20078656, 20080941, 20083238, 20083563, 20083900, 20086848, 20089043, 20091217, 20095040, 20096893, 20098753, 20103232, 20106088, 20119616, 20122573, 20125125, 20127808, 20130674, 20136000, 20139101, 20144192, 20147061, 20152384, 20155302, 20160576, 20163575, 20168768, 20171767, 20176960, 20179858, 20185152, 20188219, 20193344, 20196262, 20201536, 20204639, 20209728, 20212625, 20217920, 20221091, 20226112, 20229023, 20234304, 20237206, 20242496, 20245336, 20250688, 20253610, 20258880, 20261844, 20267072, 20269994, 20275264, 20278113, 20283456, 20285976, 20288516, 20291648, 20294179, 20296695, 20299840, 20302358, 20304889, 20308032, 20310564, 20316224, 20319120, 20324416, 20327454, 20332608, 20335503, 20340800, 20343479, 20348992, 20351947, 20354472, 20357184, 20360277, 20365376, 20368569, 20133547, 20142214, 20381760, 20385221, 20389952, 20391685, 20392564, 20398144, 20401618, 20406336, 20409621, 20414528, 20417845, 20422720, 20425466, 20427568, 20430912, 20433639, 20439104, 20441972, 20447296, 20450693, 20455488, 20457590, 20459698, 20463680, 20465792, 20468495, 20471872, 20473968, 20476073, 20480064, 20482164, 20484257, 20488256, 20491087, 20496448, 20499585, 20504640, 20507850, 20512832, 20514907, 20516994, 20521024, 20523112, 20529216, 20532471, 20534802, 20537408, 20539643, 20541862, 20545600, 20548386, 20550707, 20553792, 20556059, 20558331, 20561984, 20564271, 20566581, 20570176, 20572588, 20575006, 20575330, 20575666, 20578368, 20580923, 20583113, 20586560, 20588561, 20590557, 20594752, 20596850, 20598884, 20602944, 20605058, 20607171, 20611136, 20613127, 20615111, 20619328, 20621590, 20624044, 20627520, 20629582, 20631546, 20633520, 20396028, 20526353, 20643904, 20646599, 20646908, 20647226, 20647547, 20647878, 20648196, 20648522, 20648894, 20649274, 20652096, 20655824, 20657344, 20659551, 20659859, 20660288, 20660616, 20660953, 20663595, 20665499, 20668480, 20670681, 20673303, 20676672, 20679202, 20681759, 20684864, 20687821, 20693056, 20695701, 20698424, 20701248, 20703333, 20705428, 20709440, 20712002, 20717632, 20720529, 20723134, 20725824, 20728734, 20734016, 20736653, 20742208, 20745110, 20750400, 20753015, 20755651, 20758592, 20761074, 20763825, 20766784, 20769528, 20772284, 20774976, 20777449, 20780177, 20783168, 20785936, 20788720, 20791360, 20793337, 20799552, 20803097, 20805044, 20807744, 20810832, 20813932, 20814246, 20815936, 20817763, 20819602, 20819880, 20820905, 20824128, 20826078, 20827825, 20829634, 20832320, 20834140, 20836471, 20838857, 20839299, 20840512, 20843166, 20845832, 20848704, 20851554, 20854146, 20856896, 20859415, 20861946, 20865088, 20867781, 20870049, 20873280, 20875355, 20877441, 20881472, 20884392, 20886478, 20889664, 20891755, 20893862, 20690456, 20714886, 20731670, 20739299, 20748024, 20906048, 20909068, 20914240, 20917838, 20922432, 20925030, 20930624, 20933427, 20935968, 20938816, 20940758, 20942710, 20944792, 20947008, 20948740, 20950480, 20952201, 20955200, 20956985, 20958773, 20963392, 20966204, 20971584, 20974537, 20979776, 20982761, 20987968, 20990862, 20991141, 20991431, 20991715, 20992011, 20993883, 20996160, 20998354, 21000564, 21004352, 21007047, 21009171, 21012544, 21014805, 21017079, 21020736, 21022742, 21025282, 21028928, 21030719, 21032520, 21034275, 21037120, 21038954, 21040798, 21042577, 21045312, 21048033, 21050764, 21053504, 21055285, 21057240, 21059204, 21061696, 21063382, 21063733, 21064093, 21064442, 21064801, 21065158, 21065524, 21065877, 21066237, 21069888, 21072331, 21074824, 21078080, 21080678, 21086272, 21089433, 21091752, 21094464, 21096766, 21099088, 21102656, 21104918, 21107191, 21108685, 21110848, 21112614, 21114388, 21116153, 21119040, 21120569, 21122108, 21123901, 21127232, 21129158, 21131091, 21132682, 21135424, 21136960, 21138504, 21140116, 21141742, 21143616, 21145348, 21147093, 21148847, 21151808, 21153353, 21154910, 21156475, 21157966, 20911882, 20920427, 20927820, 20961620, 20969410, 20977750, 20985644, 21019076, 21083288, 21168192, 21169669, 21171182, 21172704, 21174009, 21176384, 21177925, 21179475, 21181146, 21182825, 21184576, 21186161, 21187884, 21189615, 21190947, 21192768, 21194433, 21196107, 21197668, 21200960, 21202774, 21204598, 21209152, 21212422, 21214409, 21217344, 21219231, 21220908, 21225536, 21228527, 21233728, 21236421, 21238350, 21241920, 21243753, 21245593, 21247415, 21250112, 21252704, 21255308, 21258304, 21260223, 21262254, 21264251, 21266496, 21268356, 21270235, 21272097, 21274688, 21276549, 21278461, 21280367, 21282880, 21284755, 21286590, 21288413, 21291072, 21292980, 21294887, 21296780, 21299264, 21301137, 21303022, 21304895, 21307456, 21308894, 21310882, 21312878, 21315648, 21317071, 21318622, 21320181, 21321877, 21323840, 21325376, 21326922, 21328845, 21332032, 21333402, 21334781, 21336290, 21337809, 21340224, 21341620, 21343129, 21344646, 21346142, 21348416, 21349991, 21351573, 21353100, 21354638, 21356608, 21358287, 21359884, 21361488, 21363100, 21364800, 21366379, 21367968, 21369535, 21371113, 21372992, 21374290, 21376076, 21377869, 21379356, 21381184, 21382628, 21384079, 21386025, 21389376, 21391188, 21393014, 21394812, 21397568, 21399252, 21400949, 21401625, 21402358, 21402696, 21403045, 21405760, 21407427, 21413952, 21417504, 21419341, 21430336, 21434010, 21438528, 21441568, 21444620, 21446720, 21448665, 21450361, 21452066, 21454912, 21456764, 21458631, 21460510, 21463104, 21464920, 21466712, 21468513, 21471296, 21473171, 21475287, 21479488, 21481568, 21483704, 21487680, 21489914, 21491813, 21493723, 21495872, 21497735, 21499743, 21501811, 21504064, 21506256, 21508212, 21510180, 21512256, 21514186, 21515509, 21516847, 21517172, 21517510, 21520448, 21522733, 21525164, 21528640, 21530647, 21532974, 21684224, 21692416, 21536832, 21539033, 21541251, 21545024, 21547687, 21548012, 21548345, 21549987, 21551641, 21553216, 21554505, 21557471, 21561408, 21564978, 21569600, 21572557, 21577792, 21580520, 21585984, 21589141, 21594176, 21597102, 21602368, 21605600, 21700608, 21708800, 21610560, 21614339, 21618752, 21620775, 21622806, 21626944, 21629163, 21631282, 21635136, 21637956, 21643328, 21645885, 21648455, 21651520, 21654389, 21659712, 21662393, 21664942, 21667904, 21670587, 21673284, 21676096, 21677948, 21679937, 21583258, 21600040, 21640788, 21657061, 21681942, 21477418, 21575522, 21725248, 21727312, 21729361, 21733440, 21735489, 21737550, 21741632, 21743693, 21745740, 21749824, 21753550, 21758016, 21762012, 21766208, 21768978, 21774400, 21777895, 21782592, 21784271, 21785958, 21787977, 21790784, 21794752, 21798976, 21801421, 21803877, 21807168, 21809570, 21812164, 21815360, 21817206, 21819071, 21820897, 21823552, 21825423, 21827312, 21828973, 21831744, 21833265, 21834798, 21836465, 21839936, 21841955, 21843992, 21845963, 21848128, 21850300, 21852481, 21856320, 21858460, 21861119, 21864512, 21867178, 21869857, 21872704, 21874794, 21877799, 21880896, 21882983, 21885079, 21889088, 21892139, 21897280, 21900251, 21905472, 21908448, 21913664, 21916305, 21921856, 21924699, 21927137, 21930048, 21933835, 21938240, 21942286, 21946432, 21948447, 21950467, 21951870, 21954624, 21956988, 21959364, 21962816, 21965146, 21967271, 21971008, 21973826, 21919137, 21987392, 21989996, 21992166, 21995584, 21998070, 22000567, 22003776, 22005401, 22008148, 22011968, 22014767, 22020160, 22022887, 22025623, 22028352, 22030983, 22036544, 22039779, 22044736, 22047756, 22049364, 22050960, 22052928, 22054427, 22056144, 22057939, 22061120, 22062493, 22064078, 22065673, 22069312, 22071236, 22072606, 22073987, 22077504, 22241280, 22249472, 22079431, 22081519, 22085696, 22088044, 22090402, 22092049, 22093888, 22094992, 22096074, 22098527, 22102080, 22104876, 22106950, 22110272, 22112878, 22118464, 22120805, 22123359, 22126656, 22129112, 22131578, 22133166, 22134848, 22137640, 22140444, 22143040, 22145513, 22147461, 22151232, 22153295, 22155369, 22159424, 22162209, 22167616, 22170457, 22172906, 22175808, 22178559, 22181320, 22184000, 22186379, 22188676, 22190949, 22191229, 22191522, 22191797, 22192192, 22194945, 22197712, 22200384, 22202339, 22203824, 22205318, 22206808, 22208576, 22210402, 22212236, 22214277, 22216768, 22219166, 22221577, 22224960, 22226910, 22228742, 22230587, 22233152, 22234888, 22236927, 22238983, 22239349, 22239726, 22240094, 22240473, 22240848, 22017575, 22165038, 22034207, 22042784, 22116169, 22265920, 22268028, 22269811, 22271604, 22274112, 22275887, 22277681, 22279487, 22282304, 22284384, 22286442, 22288514, 22290496, 22292188, 22293873, 22295571, 22298688, 22300484, 22302667, 22306880, 22310087, 22313248, 22313539, 22315072, 22316939, 22318817, 22320683, 22323264, 22326509, 22331456, 22334708, 22339648, 22342480, 22345320, 22347840, 22349794, 22352607, 22356032, 22358255, 22519808, 22528000, 22360491, 22361710, 22364224, 22366337, 22368461, 22372416, 22375732, 22380608, 22383946, 22384396, 22384856, 22386265, 22388800, 22392229, 22396992, 22399433, 22402335, 22405184, 22407248, 22407600, 22407963, 22408329, 22408703, 22409064, 22409435, 22409801, 22410176, 22410542, 22410920, 22411279, 22411647, 22412011, 22413376, 22414932, 22416495, 22418055, 22419625, 22420311, 22421568, 22422692, 22423826, 22429760, 22433569, 22437952, 22441819, 22442703, 22443594, 22446144, 22448036, 22454336, 22457876, 22462528, 22465495, 22468027, 22536192, 22544384, 22470720, 22472244, 22473780, 22475895, 22478912, 22480636, 22482368, 22487104, 22489608, 22495296, 22498219, 22503488, 22507012, 22511680, 22514543, 22517156, 22304815, 22427625, 22451566, 22492522, 22560832, 22563374, 22565932, 22569024, 22571614, 22573538, 22577216, 22580115, 22585408, 22589434, 22593600, 22597653, 22601792, 22603792, 22605804, 22609984, 22613012, 22615102, 22618176, 22620699, 22623231, 22626368, 22629037, 22634560, 22637784, 22640038, 22642752, 22645503, 22648263, 22650944, 22653285, 22655533, 22659136, 22661482, 22663838, 22667328, 22669782, 22672526, 22675520, 22676734, 22677961, 22680090, 22682229, 22682684, 22683712, 22684221, 22684739, 22687212, 22691904, 22694400, 22696904, 22700096, 22702297, 22703475, 22704663, 22708288, 22710113, 22711292, 22712482, 22713409, 22716480, 22719397, 22724672, 22727432, 22732864, 22735231, 22737609, 22741056, 22744158, 22749248, 22752146, 22757440, 22760698, 22763026, 22765632, 22766297, 22766969, 22767547, 22768135, 22770530, 22773824, 22775994, 22778173, 22782016, 22784915, 22787393, 22790208, 22792660, 22795122, 22795820, 22796529, 22798400, 22800005, 22802092, 22804191, 22806592, 22808538, 22810574, 22583023, 22632253, 22746689, 22754704, 22689693, 22822976, 22825129, 22827205, 22831168, 22833283, 22835409, 22839360, 22841488, 22843500, 22847552, 22849624, 22851711, 22855744, 22857911, 22859260, 22860621, 22863936, 22865639, 22868088, 22872128, 22874581, 22876528, 22880320, 22882262, 22884390, 22886527, 22888512, 22890238, 22892320, 22894414, 22896704, 22898072, 22901053, 22904896, 22907810, 22913088, 22915608, 22918140, 22921280, 22923813, 22926333, 22929472, 22931993, 22937664, 22940784, 22945856, 22948741, 22954048, 22956930, 22962240, 22965294, 22970432, 22973188, 22978624, 22981329, 22986816, 22989738, 22995008, 22997928, 23003200, 23006121, 23011392, 23014313, 23019584, 23022033, 23024494, 23027776, 23030431, 23035968, 23038947, 23041229, 23044160, 23048170, 23052352, 23055294, 23060544, 23063265, 23068736, 23071742, 22910742, 22934528, 22984045, 23085120, 23087823, 23093312, 23096211, 23101504, 23104342, 23109696, 23112439, 23117888, 23120683, 23126080, 23129055, 23134272, 23137374, 23142464, 23145755, 23150656, 23153972, 23155704, 23158848, 23162161, 23167040, 23170143, 23175232, 23178332, 23183424, 23185778, 23188142, 23191616, 23193963, 23196320, 23198735, 23199061, 23199397, 23199808, 23200482, 23202880, 23205263, 23208000, 23210393, 23212430, 23216192, 23218963, 23221348, 23224384, 23226504, 23229086, 23232576, 23234716, 23236917, 23240768, 23243393, 23246115, 23248960, 23252032, 23257152, 23260200, 23265344, 23267892, 23273536, 23276857, 23281728, 23284463, 23287208, 23289920, 23292122, 23294105, 23298112, 23300267, 23302436, 23306304, 23308535, 23310501, 23312478, 23314496, 23316432, 23317708, 23318994, 23320290, 23322688, 23324639, 23326596, 23330880, 23333539, 23335516, 23090712, 23099037, 23107070, 23115223, 23123649, 23132147, 23140653, 23156582, 23173293, 23181480, 23214521, 23255052, 23270387, 23347264, 23349979, 23352666, 23355456, 23358402, 23361383, 23361861, 23363648, 23365192, 23367153, 23368972, 23371840, 23374061, 23377276, 23380032, 23383859, 23388224, 23391623, 23393654, 23396416, 23397945, 23400502, 23404608, 23407298, 23412800, 23416765, 23418288, 23420992, 23421477, 23423800, 23424287, 23426656, 23429184, 23430834, 23432405, 23437376, 23439577, 23441789, 23443581, 23445568, 23447314, 23601152, 23609344, 23617536, 23625728, 23449073, 23450779, 23453760, 23457110, 23633920, 23642112, 23650304, 23658496, 23461952, 23463908, 23465874, 23467506, 23470144, 23471787, 23473443, 23478336, 23482046, 23486528, 23666688, 23674880, 23683072, 23691264, 23699456, 23707648, 23489515, 23491290, 23494720, 23498731, 23715840, 23724032, 23732224, 23740416, 23748608, 23756800, 23502912, 23505738, 23511104, 23513970, 23519296, 23522567, 23527488, 23530632, 23535680, 23539716, 23543872, 23545551, 23547242, 23547563, 23547893, 23552064, 23554386, 23557198, 23560256, 23561099, 23561956, 23564005, 23568448, 23571123, 23573808, 23574103, 23576640, 23579841, 23584832, 23587575, 23593024, 23595923, 23409339, 23773248, 23776114, 23781440, 23784168, 23789632, 23792466, 23797824, 23800508, 23803151, 23806016, 23808949, 23814208, 23816760, 23819264, 23822400, 23824904, 23826981, 23830592, 23833245, 23838784, 23841775, 23846976, 23849723, 23855168, 23858113, 23863360, 23866299, 23871552, 23874015, 23876489, 23879744, 23882183, 23884040, 23885908, 23887936, 23889792, 23891944, 23896128, 23898347, 23900574, 23904320, 23907083, 23909062, 23912512, 23914771, 23917045, 23920704, 23923040, 23925024, 23928896, 23931404, 23933926, 23937088, 23939073, 23941477, 23945280, 23947257, 23949246, 23953472, 23955739, 23958374, 23961664, 23964162, 23966673, 23969856, 23972087, 23974063, 23978048, 23980002, 23981909, 23986240, 23988637, 23991280, 23994432, 23996625, 23998882, 24002624, 24005297, 24010816, 24014154, 24019008, 24021780, 24035392, 24038771, 24040975, 24043584, 24045411, 24047307, 24051776, 24055012, 24056861, 24059968, 24062493, 24065031, 24068160, 24069697, 24071469, 24073190, 24076352, 24078280, 24080352, 24084544, 24087637, 24092736, 24095679, 24097784, 24100928, 24103051, 24105011, 24109120, 24111087, 24113060, 24114374, 24117312, 24120361, 24125504, 24128073, 24130599, 24133696, 24136206, 24138855, 24141888, 24143647, 24145352, 24150080, 24152839, 24154672, 24158272, 24160480, 24162698, 24166464, 24168532, 24170915, 24174656, 24176394, 24178080, 24179816, 24182848, 24184778, 24186729, 24187004, 24187289, 24191040, 24193241, 24194812, 24196393, 24199232, 24200815, 24202676, 24204544, 24207424, 24209824, 24210281, 24210735, 24212666, 24215616, 24289280, 24219672, 24223808, 24225892, 24232000, 24235455, 24237046, 24240192, 24242123, 24244059, 24244372, 24244696, 24248384, 24251094, 24253735, 24256576, 24259293, 24262042, 24264768, 24267376, 24270019, 24272960, 24275670, 24278418, 24281152, 24283584, 24285859, 24229338, 24305728, 24308016, 24310901, 24313920, 24316629, 24319363, 24322112, 24324482, 24327216, 24330304, 24333513, 24338496, 24341204, 24343942, 24346688, 24348934, 24351316, 24354880, 24357520, 24363072, 24365469, 24371264, 24375240, 24379456, 24383409, 24387648, 24390330, 24395840, 24399264, 24404032, 24406230, 24408439, 24412224, 24559616, 24567808, 24414820, 24417458, 24420416, 24423364, 24428608, 24431412, 24436800, 24439320, 24441851, 24444992, 24448107, 24453184, 24455954, 24457261, 24458674, 24461376, 24463791, 24466280, 24469568, 24472943, 24477760, 24480984, 24485952, 24488621, 24494144, 24497061, 24502336, 24504749, 24507180, 24510528, 24513059, 24515515, 24518720, 24521297, 24523883, 24526912, 24529842, 24532321, 24535104, 24538200, 24541308, 24543296, 24545000, 24546862, 24551488, 24554270, 24557068, 24557379, 24584256, 24588259, 24592448, 24594765, 24597095, 24600640, 24602951, 24605275, 24608832, 24610229, 24611638, 24617024, 24621035, 24625216, 24627530, 24629798, 24633408, 24637416, 24641600, 24645617, 24649792, 24653790, 24657984, 24659829, 24661686, 24666176, 24669108, 24670530, 24671965, 24674368, 24675802, 24678109, 24680426, 24682560, 24684241, 24686560, 24690752, 24693336, 24695930, 24698944, 24700703, 24702626, 24704613, 24707136, 24708929, 24710656, 24712392, 24715328, 24717143, 24719010, 24723520, 24726214, 24728702, 24731712, 24838144, 24734066, 24739904, 24742865, 24748096, 24750932, 24756288, 24759156, 24761841, 24764480, 24766850, 24768664, 24772672, 24774910, 24777160, 24777515, 24777882, 24780864, 24783419, 24783803, 24784196, 24786176, 24789056, 24791138, 24793227, 24795161, 24797248, 24797519, 24797800, 24799674, 24801555, 24805440, 24807447, 24808576, 24809665, 24811548, 24813632, 24815297, 24816917, 24818662, 24821824, 24823555, 24825258, 24826941, 24830016, 24831944, 24833883, 24835651, 24623342, 24688890, 24720890, 24738030, 24745576, 24746745, 24753510, 24770490, 24772066, 24780426, 24854592, 24857233, 24859882, 24862784, 24865080, 24867511, 24870976, 24872857, 24874747, 24876189, 24879168, 24881846, 24884531, 24887360, 24889911, 24891013, 24892128, 24895552, 24898358, 24900112, 24903744, 24905669, 24907603, 24911936, 24914410, 24920128, 24923183, 24925221, 24928320, 24930942, 24933542, 24936512, 24938113, 24939419, 24940733, 24942042, 24944704, 24946014, 24947331, 24948939, 24950555, 24952896, 24954366, 24955683, 24957007, 24958761, 24961088, 24962657, 24964235, 24965877, 24967526, 24969280, 24970861, 24972198, 24973545, 24975403, 24977472, 24978786, 24980110, 24981875, 24983650, 24985664, 24987451, 24989135, 24990828, 24993856, 24995941, 24997222, 24998513, 25000095, 25002048, 25003691, 25005342, 25006945, 25008556, 25010240, 25011557, 25013118, 25014688, 25016225, 25018432, 25019747, 25021071, 25022384, 25023705, 25026624, 25028348, 25029911, 25031482, 25033037, 25034816, 25036283, 25037756, 25039072, 25040397, 25043008, 25044608, 25046172, 25047744, 25049300, 25051200, 25052502, 25053810, 25055380, 25056959, 25059392, 25061068, 25062639, 25064219, 25065848, 25067584, 25069342, 25071267, 25073113, 25074989, 25075294, 25075776, 25077575, 25079703, 25081468, 25083968, 25086059, 25088252, 25092160, 25094138, 25094407, 25094688, 25096389, 25098102, 25100352, 25102037, 25103922, 25105802, 24917453, 25090129, 25116736, 25118612, 25120495, 25122365, 25124928, 25126806, 25128701, 25130579, 25133120, 25135005, 25136915, 25138817, 25141312, 25143066, 25144951, 25146845, 25149504, 25151142, 25152846, 25154560, 25157696, 25159289, 25161027, 25162777, 25165888, 25167475, 25169209, 25170951, 25172318, 25174080, 25175941, 25177813, 25179193, 25182272, 25184060, 25185856, 25186152, 25186458, 25186753, 25187059, 25190464, 25192452, 25198656, 25201994, 25204017, 25206026, 25206336, 25206848, 25370624, 25210903, 25212217, 25215040, 25216766, 25218505, 25220302, 25223232, 25225148, 25227073, 25231424, 25233749, 25235529, 25237321, 25239616, 25241681, 25243729, 25245789, 25247808, 25249746, 25251767, 25253798, 25256000, 25257893, 25259953, 25262026, 25264192, 25266097, 25268080, 25272384, 25274788, 25277203, 25280576, 25282949, 25285701, 25288768, 25292356, 25296960, 25299195, 25301451, 25305152, 25308046, 25313344, 25316103, 25321536, 25324439, 25329728, 25332303, 25337920, 25341157, 25346112, 25349541, 25354304, 25357718, 25362496, 25364633, 25366779, 25195774, 25318862, 25334892, 25387072, 25390993, 25395264, 25398106, 25403456, 25406285, 25640960, 25649152, 25411648, 25415184, 25419840, 25421797, 25423762, 25425784, 25428032, 25429671, 25431319, 25436224, 25439199, 25441186, 25444416, 25446853, 25449307, 25449583, 25449868, 25450130, 25452608, 25455428, 25460800, 25463605, 25466431, 25468992, 25471469, 25477184, 25481193, 25485376, 25487713, 25490088, 25493568, 25496500, 25501760, 25504479, 25509952, 25513450, 25518144, 25520843, 25523550, 25526336, 25528082, 25529273, 25530528, 25534528, 25537042, 25538831, 25540631, 25540987, 25542720, 25545050, 25547394, 25550912, 25553343, 25553623, 25553910, 25559104, 25562186, 25564558, 25567296, 25569624, 25571961, 25575488, 25577803, 25580130, 25583680, 25586865, 25591872, 25594335, 25596807, 25600064, 25603095, 25605581, 25608256, 25610828, 25616448, 25620255, 25624640, 25627841, 25632832, 25635969, 25665600, 25669100, 25673792, 25677463, 25681984, 25685232, 25690176, 25693312, 25698368, 25701879, 25706560, 25709924, 25713301, 25714752, 25715720, 25717741, 25718868, 25722944, 25725638, 25728335, 25731136, 25733829, 25736536, 25739328, 25741871, 25744261, 25747520, 25749883, 25752260, 25755712, 25757957, 25760013, 25763904, 25765875, 25767855, 25769805, 25772096, 25774617, 25777151, 25780288, 25782821, 25785340, 25788480, 25791034, 25793601, 25796672, 25799210, 25801759, 25804864, 25807384, 25809916, 25813056, 25815903, 25821248, 25824210, 25829440, 25832161, 25837632, 25840695, 25845824, 25849363, 25854016, 25857157, 25862208, 25864834, 25867389, 25870400, 25872713, 25875037, 25875365, 25875704, 25876008, 25876325, 25876630, 25878592, 25880693, 25882806, 25886784, 25888808, 25890811, 25892824, 25894976, 25896989, 25898988, 25900997, 25903168, 25905180, 25907182, 25909196, 25911360, 25913371, 25915372, 25917385, 25818853, 25826922, 25835215, 25859771, 25927744, 25929818, 25931881, 25935936, 25937993, 25940061, 25944128, 25946211, 25948109, 25950017, 25952320, 25954416, 25960512, 25964368, 25968704, 25972409, 25976896, 25980060, 25982295, 25985088, 25987232, 25989387, 25993280, 25995927, 25998297, 26001472, 26003267, 26005071, 26009664, 26011974, 26013537, 26015117, 26017856, 26019405, 26020640, 26021893, 26023566, 26026048, 26027258, 26028485, 26030007, 26034240, 26036893, 26039559, 26042432, 26044673, 26046583, 26048510, 26050624, 26052496, 26054403, 26056257, 26058816, 26060614, 26062230, 26063858, 26067008, 26069254, 26071407, 26075200, 26076890, 26078596, 26080287, 26083392, 26086021, 26088662, 26091584, 26094276, 26095931, 26097597, 26099776, 26101435, 26103054, 26104681, 26107968, 26110249, 26112368, 26116160, 26118033, 26119860, 26124352, 26126685, 26128277, 26129883, 26132544, 26134820, 26137115, 26140736, 26143265, 26145822, 26146124, 26146437, 26146751, 26147077, 26147385, 26147704, 26148013, 26148331, 26148928, 26149253, 26149565, 26149888, 26157120, 26161181, 26165312, 26168730, 26170724, 26173504, 26175124, 26176757, 26178378, 26180005, 25933955, 25942127, 25958262, 26153940, 26189888, 26192612, 26194725, 26198080, 26200221, 26202375, 26206272, 26208665, 26210705, 26214464, 26217574, 26222656, 26224626, 26226641, 26230848, 26233447, 26235738, 26239040, 26241249, 26243469, 26247232, 26249632, 26251795, 26255424, 26257987, 26260559, 26263616, 26266035, 26268102, 26271808, 26274061, 26276322, 26280000, 26282322, 26283337, 26284362, 26285973, 26288192, 26291157, 26293117, 26296384, 26298273, 26301582, 26303837, 26304160, 26304576, 26307412, 26309624, 26312768, 26314979, 26317086, 26443776, 26451968, 26320960, 26323835, 26329152, 26332014, 26337344, 26340553, 26345536, 26348826, 26353728, 26357003, 26361920, 26364582, 26367256, 26370112, 26372323, 26374073, 26375832, 26376204, 26378304, 26381078, 26383857, 26384228, 26386496, 26389304, 26394688, 26397413, 26402880, 26405852, 26408835, 26411072, 26412378, 26415512, 26419264, 26421021, 26422790, 26427456, 26429779, 26431045, 26432320, 26435648, 26437658, 26468416, 26471589, 26473852, 26476608, 26477651, 26478704, 26480987, 26482591, 26484800, 26486041, 26487091, 26488151, 26490015, 26490734, 26491598, 26492992, 26493615, 26494191, 26495229, 26496225, 26501184, 26504042, 26506580, 26509376, 26511793, 26514223, 26517568, 26520721, 26523036, 26525760, 26528007, 26530266, 26533952, 26536277, 26538811, 26542144, 26544638, 26547141, 26550336, 26553349, 26555759, 26558528, 26562542, 26566720, 26568911, 26571115, 26574912, 26577044, 26579629, 26583104, 26585230, 26587366, 26588950, 26591296, 26594060, 26599488, 26603242, 26607680, 26609650, 26611631, 26615872, 26618000, 26620082, 26624064, 26626022, 26627992, 26630034, 26632256, 26634180, 26636114, 26636432, 26636761, 26640448, 26642621, 26645057, 26648640, 26650848, 26653065, 26656832, 26659461, 26661265, 26665024, 26667609, 26670206, 26673216, 26676015, 26681408, 26684732, 26689600, 26692240, 26693260, 26694291, 26695956, 26697792, 26698808, 26699834, 26701450, 26703078, 26705984, 26708112, 26708546, 26708989, 26711065, 26714176, 26716782, 26719342, 26596835, 26730560, 26734306, 26738061, 26738752, 26739156, 26739442, 26739739, 26742145, 26744563, 26746944, 26748762, 26750798, 26752843, 26755136, 26757173, 26759324, 26763328, 26765340, 26767365, 26771520, 26773998, 26776061, 26779712, 26781751, 26783813, 26784116, 26784430, 26787904, 26789990, 26792278, 26796096, 26798182, 26800320, 26804288, 26806349, 26808479, 26812480, 26814561, 26816668, 26820672, 26822764, 26824277, 26825803, 26827179, 26828864, 26830845, 26832836, 26837056, 26839275, 26841719, 26845248, 26846607, 26847973, 26849976, 26851988, 26853440, 26854210, 26856280, 26984448, 26992640, 26857980, 26861632, 26863608, 26864196, 26864794, 26869824, 26872827, 26874294, 26875771, 26878016, 26880082, 26886208, 26890228, 26892267, 26894400, 26896613, 26898839, 26902592, 26904779, 26907016, 26910784, 26913703, 26918976, 26922222, 26925481, 26925965, 26927168, 26929185, 26931208, 26932780, 26935360, 26939119, 26943552, 26946026, 26948512, 26949168, 26951744, 26954272, 26956817, 26957943, 26959936, 26963497, 26968128, 26969534, 26970950, 26976320, 26980124, 27009088, 27011400, 27017280, 27020299, 27021550, 27025472, 27029007, 27033664, 27035617, 27037580, 27038830, 27041856, 27044280, 27046713, 27050048, 27052277, 27054108, 27058240, 27061885, 27066432, 27069856, 27074624, 27076337, 27078060, 27079662, 27081274, 27082816, 27083930, 27085365, 27262976, 27271168, 27086813, 27091008, 27094069, 27099200, 27102137, 27107392, 27111241, 27115584, 27118565, 27120830, 27123776, 27126530, 27129295, 27131968, 27134572, 27137224, 27140160, 27142457, 27144763, 27148352, 27151677, 27156544, 27159313, 27164736, 27168297, 27169967, 27172928, 27175542, 27178167, 27181120, 27183288, 27185487, 27189312, 27191242, 27193181, 27195282, 27197504, 27200515, 27203536, 27205696, 27279360, 27287552, 27207744, 27213888, 27217442, 27219627, 27222080, 27223551, 27225031, 27226747, 27230272, 27233682, 27238464, 27242343, 27246656, 27250184, 27295744, 27303936, 27254848, 27257746, 27260653, 27014406, 27022811, 27211290, 27320384, 27322989, 27328576, 27332576, 27336768, 27340042, 27344960, 27347851, 27350750, 27353152, 27355141, 27358129, 27361344, 27364894, 27369536, 27372682, 27377728, 27380820, 27385920, 27388388, 27574272, 27582464, 27390869, 27391531, 27394112, 27397257, 27402304, 27405554, 27410496, 27412640, 27590656, 27598848, 27414792, 27418688, 27421020, 27426880, 27429859, 27431995, 27435072, 27437111, 27439158, 27443264, 27446043, 27448412, 27451456, 27453637, 27455830, 27459648, 27461821, 27463998, 27467840, 27470133, 27472438, 27476032, 27478613, 27484224, 27487627, 27489169, 27490720, 27491359, 27492416, 27493589, 27494768, 27497080, 27607040, 27615232, 27500608, 27502823, 27505049, 27508800, 27511564, 27516992, 27520148, 27522412, 27525184, 27527804, 27530442, 27533376, 27535372, 27537715, 27541568, 27544031, 27546503, 27547678, 27549760, 27552033, 27554317, 27555771, 27557952, 27559958, 27561974, 27566144, 27568306, 27569995, 27571694, 27631680, 27634778, 27639872, 27642567, 27642871, 27643183, 27648064, 27650601, 27652670, 27656256, 27658522, 27660798, 27664448, 27666662, 27668098, 27669544, 27672640, 27674244, 27676077, 27677919, 27680832, 27682872, 27684857, 27686852, 27689024, 27690772, 27692421, 27694080, 27697216, 27699286, 27701462, 27705408, 27707650, 27709904, 27713600, 27715731, 27718007, 27721792, 27723918, 27726052, 27729984, 27732527, 27734745, 27738176, 27740487, 27742487, 27746368, 27748297, 27749748, 27751269, 27752726, 27754560, 27757443, 27762752, 27765607, 27770944, 27773658, 27779136, 27781874, 27787328, 27790101, 27795520, 27798595, 27803712, 27806785, 27811904, 27814575, 27820096, 27823057, 27828288, 27831206, 27836480, 27839056, 27841650, 27844672, 27847202, 27849885, 27852864, 27855902, 27861056, 27863750, 27866456, 27869248, 27871903, 27874349, 27877440, 27880284, 27893824, 27896693, 27902016, 27905068, 27910208, 27913439, 27918400, 27921426, 27926592, 27929469, 27934784, 27937798, 27942976, 27946228, 27951168, 27953447, 27955739, 27959360, 27962837, 27967552, 27970579, 27972673, 27975744, 27978862, 27983936, 27987306, 27992128, 27995474, 28000320, 28003598, 28006890, 28007174, 28008512, 28012422, 28016704, 28018428, 28019297, 28024896, 28028162, 28033088, 28036538, 28041280, 28044564, 28049472, 28052105, 28054851, 28057664, 28060027, 28062399, 28065856, 28068106, 28070486, 28074048, 28076422, 28078892, 28082240, 28084847, 28090432, 28093070, 28095792, 28098624, 28101513, 28103831, 28104139, 28106816, 28109747, 28111872, 28112193, 28112523, 28112829, 28113143, 28115008, 28116630, 28118195, 28119715, 28123200, 28125275, 28127221, 28131392, 28134464, 28139584, 28143371, 28155968, 28158398, 28160845, 28164160, 28166531, 28169079, 28171635, 28171924, 28172352, 28174508, 28176685, 28180544, 28182657, 28184720, 28188736, 28190698, 28192668, 28192957, 28193257, 28196928, 28199107, 28201223, 28205120, 28207487, 28209865, 28211099, 28213312, 28215102, 28216902, 28218445, 28219998, 28221504, 28222935, 28224533, 28226140, 28229696, 28232413, 28233806, 28235208, 28237888, 28239314, 28241487, 28243672, 28246080, 28247397, 28249383, 28251374, 28254272, 28255729, 28257760, 28259709, 28262464, 28264529, 28265575, 28266632, 28270656, 28273080, 28275442, 28278848, 28280786, 28282675, 28287040, 28289376, 28292151, 28295232, 28296771, 28298459, 28303424, 28306581, 28308070, 28311616, 28312090, 28315963, 28319808, 28322631, 28324304, 28326103, 28328000, 28330288, 28331701, 28333757, 28336192, 28338579, 28340074, 28341777, 28344384, 28348081, 28349636, 28352576, 28353935, 28356526, 28358055, 28360768, 28362991, 28366894, 28368960, 28370660, 28372646, 28377152, 28379383, 28382775, 28385344, 28388799, 28393536, 28396669, 28401728, 28405350, 28398522, 28407031, 28284997, 28300555, 28390498, 28418112, 28420159, 28423895, 28426304, 28429034, 28430423, 28431491, 28434496, 28437704, 28439332, 28442688, 28444376, 28446132, 28448003, 28450880, 28453053, 28455282, 28459072, 28460988, 28467264, 28471291, 28471570, 28471859, 28472549, 28473250, 28473847, 28475456, 28476623, 28477801, 28480505, 28483648, 28484290, 28484945, 28485564, 28486191, 28486933, 28487689, 28489526, 28491840, 28493950, 28496076, 28497666, 28499269, 28500032, 28500719, 28502590, 28504486, 28505418, 28506362, 28507123, 28508224, 28509354, 28510494, 28511864, 28513244, 28514231, 28516416, 28518702, 28521001, 28522446, 28524608, 28525886, 28527176, 28528197, 28529229, 28532800, 28534943, 28536303, 28537676, 28539024, 28540992, 28542174, 28543368, 28549184, 28552894, 28557376, 28560268, 28672000, 28565568, 28568774, 28573760, 28576706, 28581952, 28585872, 28590144, 28592461, 28680192, 28688384, 28696576, 28704768, 28712960, 28721152, 28729344, 28737536, 28745728, 28753920, 28762112, 28770304, 28594792, 28778496, 28598336, 28602306, 28606528, 28609002, 28611485, 28614720, 28786688, 28794880, 28617730, 28620165, 28622912, 28803072, 28811264, 28819456, 28624744, 28627250, 28631104, 28633985, 28639296, 28641764, 28647488, 28651539, 28655680, 28657915, 28660161, 28660485, 28660819, 28661143, 28663872, 28666770, 28668632, 28595084, 28644241, 28661479, 28835904, 28839060, 28841324, 28844096, 28845739, 28848999, 28852288, 28855409, 28860480, 28863512, 28868672, 28871880, 28876864, 28880076, 28885056, 28888268, 28893248, 28896615, 28901440, 28904802, 28908172, 28909632, 28910809, 28911829, 28912862, 28913902, 28914956, 28915644, 28917824, 28920458, 28926016, 28929287, 28934208, 28936849, 28939496, 28942400, 28944898, 28947007, 28950592, 28952607, 28954632, 28956605, 28958784, 28960990, 28963211, 28966976, 28968950, 28971488, 28975168, 28977101, 28979045, 28983360, 28985781, 28987686, 28991552, 28993886, 28996229, 28999744, 29002046, 29004022, 29007936, 29010267, 29012607, 29016128, 29018630, 29020665, 29024320, 29026481, 29028652, 29032512, 29034603, 29036573, 29040704, 29043686, 29046677, 29048896, 29051063, 29057088, 29060153, 29062607, 29065280, 29068182, 29073472, 29076421, 29079378, 29081664, 29083581, 29085501, 29087431, 28866537, 28923101, 29038555, 29054118, 29071094, 29098048, 29101264, 29106240, 29109480, 29114432, 29116959, 29119495, 29122624, 29125213, 29127629, 29130816, 29133224, 29135645, 29139008, 29141054, 29143468, 29145891, 29147200, 29148361, 29150297, 29152244, 29155392, 29157040, 29158117, 29159202, 29160920, 29163584, 29166652, 29169137, 29171776, 29173487, 29175700, 29177923, 29179968, 29181520, 29184120, 29188160, 29189689, 29192153, 29196352, 29198456, 29200692, 29204544, 29206722, 29208910, 29212736, 29214878, 29216986, 29220928, 29222980, 29225043, 29226920, 29229120, 29231358, 29233607, 29235107, 29237312, 29239250, 29242073, 29245504, 29247880, 29253696, 29257681, 29261888, 29264470, 29266686, 29270080, 29272577, 29275135, 29278272, 29280494, 29282536, 29286464, 29288443, 29290372, 29292410, 29294656, 29296672, 29298701, 29300384, 29302848, 29305899, 29311040, 29313789, 29315815, 29319232, 29320895, 29323064, 29325242, 29325535, 29327424, 29329000, 29330584, 29332997, 29335616, 29337193, 29338780, 29343808, 29346955, 29349189, 29249667, 29308259, 29360192, 29363198, 29366214, 29368384, 29370213, 29372398, 29374594, 29376576, 29378338, 29378745, 29379162, 29380405, 29381663, 29384768, 29387771, 29392960, 29396098, 29401152, 29404770, 29409344, 29413376, 29417536, 29421533, 29423534, 29425728, 29429670, 29614080, 29622272, 29433920, 29437663, 29442112, 29445701, 29450304, 29453298, 29458496, 29461175, 29463861, 29466688, 29468106, 29469753, 29471411, 29474880, 29477123, 29479391, 29483072, 29485180, 29487297, 29491264, 29493221, 29495580, 29499456, 29501370, 29503354, 29505197, 29507648, 29509925, 29512215, 29515840, 29517709, 29520015, 29524032, 29525843, 29527663, 29532224, 29534883, 29540416, 29544468, 29548608, 29551902, 29553989, 29556800, 29558892, 29560988, 29564992, 29567221, 29569628, 29573184, 29575901, 29578582, 29581376, 29583673, 29585981, 29589568, 29592132, 29594667, 29597760, 29600139, 29602239, 29605952, 29608557, 29611175, 29390898, 29638720, 29641609, 29646912, 29649467, 29652030, 29655104, 29657391, 29663296, 29666740, 29671488, 29674737, 29679680, 29682300, 29683768, 29685238, 29687872, 29690138, 29692749, 29696064, 29699026, 29704256, 29707256, 29712448, 29714969, 29717457, 29720640, 29723520, 29728832, 29731644, 29737024, 29739837, 29742225, 29745216, 29747318, 29749431, 29753408, 29756580, 29758820, 29761600, 29763810, 29766029, 29767872, 29769792, 29771449, 29773116, 29775072, 29777984, 29779858, 29781745, 29786176, 29788946, 29794368, 29797562, 29802560, 29805859, 29810752, 29814736, 29818944, 29822693, 29827136, 29829887, 29835328, 29838364, 29843520, 29847410, 29851712, 29855657, 29892608, 29900800, 29859904, 29863552, 29867264, 29867607, 29868096, 29869499, 29870913, 29872463, 29876288, 29879128, 29884480, 29887197, 29917248, 29920299, 29925440, 29928584, 29931739, 29933632, 29935034, 29936624, 29938224, 29941824, 29944407, 29946950, 29950016, 29952553, 29955101, 29958208, 29960768, 29963257, 29966400, 29970433, 29974592, 29977838, 29982784, 29986366, 29990976, 29992415, 29994050, 29995763, 29999168, 30000895, 30003502, 30007360, 30009847, 30010325, 30015552, 30018087, 30020638, 30023744, 30025976, 30027972, 30031936, 30035551, 30040128, 30042043, 30043925, 30045435, 30171136, 30179328, 30187520, 30195712, 30048320, 30050265, 30052222, 30054122, 30056512, 30058410, 30060321, 30062226, 30064704, 30068546, 30072896, 30075355, 30077828, 30079254, 30081088, 30085096, 30089280, 30091578, 30203904, 30212096, 30097472, 30101484, 30105664, 30109669, 30113856, 30116133, 30118420, 30119994, 30122048, 30123473, 30124910, 30126302, 30127706, 30130240, 30131674, 30133685, 30135709, 30138432, 30140456, 30142471, 30144498, 30146624, 30148276, 30149668, 30151072, 30151375, 30151686, 30153110, 30154816, 30158232, 30163008, 30165285, 30167576, 30169097, 29923367, 30005305, 30029976, 30093887, 30095705, 29981097, 30228544, 30230273, 30232014, 30234233, 30236736, 30238784, 30240842, 30242515, 30244928, 30246756, 30248590, 30250409, 30253120, 30254939, 30256766, 30258496, 30261312, 30265294, 30269504, 30272928, 30277696, 30279425, 30281163, 30283280, 30285888, 30287934, 30289988, 30290280, 30290582, 30290863, 30291155, 30294080, 30296321, 30298346, 30300386, 30300675, 30302272, 30304024, 30305729, 30307551, 30310464, 30312151, 30313851, 30315644, 30318656, 30320634, 30322621, 30324212, 30326848, 30328759, 30330613, 30332092, 30333525, 30333852, 30334192, 30334484, 30335040, 30335314, 30335597, 30335881, 30336175, 30338899, 30343232, 30345609, 30347999, 30351424, 30353275, 30355286, 30357306, 30359616, 30361221, 30361531, 30361854, 30363925, 30366009, 30367808, 30369531, 30372413, 30376000, 30377766, 30379542, 30381424, 30384192, 30386038, 30387896, 30389767, 30392384, 30395338, 30400576, 30403464, 30408768, 30411640, 30416960, 30419919, 30422889, 30423185, 30425152, 30428174, 30431207, 30431524, 30433344, 30435279, 30437223, 30438560, 30441536, 30443181, 30444834, 30446368, 30447911, 30449728, 30451269, 30452954, 30454647, 30455958, 30457920, 30459424, 30460936, 30462594, 30464260, 30466112, 30467643, 30469280, 30470925, 30472246, 30474304, 30476016, 30477736, 30479374, 30398304, 30406361, 30414520, 30490688, 30492302, 30494062, 30495831, 30498880, 30500440, 30502109, 30503787, 30507072, 30508729, 30510513, 30512307, 30513634, 30515264, 30516866, 30518476, 30520152, 30523456, 30525257, 30527067, 30528399, 30529740, 30531648, 30533405, 30535087, 30536778, 30539840, 30541412, 30543192, 30544982, 30548032, 30550179, 30552288, 30554403, 30556224, 30557495, 30559164, 30560842, 30562554, 30564416, 30566068, 30567732, 30569391, 30572608, 30574202, 30575804, 30577418, 30580800, 30582754, 30584717, 30588992, 30592029, 30592332, 30592646, 30592971, 30593304, 30597184, 30600675, 30602803, 30605376, 30607193, 30609129, 30610920, 30613568, 30615796, 30618118, 30621760, 30623903, 30626184, 30629952, 30631834, 30633701, 30635509, 30638144, 30640020, 30641881, 30643799, 30646336, 30647846, 30649368, 30651327, 30654528, 30655973, 30657429, 30659396, 30662720, 30664407, 30666105, 30667782, 30670912, 30672491, 30674081, 30675701, 30677326, 30679104, 30680569, 30682045, 30683530, 30685018, 30687296, 30689033, 30690782, 30692245, 30695488, 30697275, 30699071, 30700507, 30701952, 30703680, 30705281, 30705580, 30705889, 30706181, 30706485, 30711872, 30715382, 30720064, 30722703, 30728256, 30731956, 30736448, 30739575, 30752832, 30755885, 30756212, 30756548, 30758184, 30761024, 30763015, 30765021, 30766595, 30769216, 30770844, 30772487, 30774095, 30777408, 30779274, 30781150, 30783139, 30785600, 30787494, 30789400, 30791169, 30793792, 30795943, 30798105, 30799952, 30801984, 30804898, 30810176, 30812589, 30815012, 30818368, 30820980, 30822242, 30823521, 30826560, 30828893, 30834752, 30837757, 30840007, 30842944, 30845059, 30847189, 30851136, 30853385, 30856273, 30859328, 30861850, 30864349, 30867520, 30870352, 30875712, 30879707, 30883904, 30887750, 30892096, 30895465, 30900288, 30902964, 30905559, 30908480, 30910685, 30912901, 30916672, 30919090, 30921278, 30924864, 30927271, 30929706, 30933056, 30935185, 30937075, 30941248, 30943660, 30946083, 30949440, 30951163, 30953390, 30957632, 30959581, 30961540, 30965824, 30968186, 30970500, 30974016, 30977066, 30982208, 30984459, 30986720, 30990400, 30992728, 30994863, 30998592, 31000796, 31003009, 30807820, 30831902, 30898124, 30938922, 31014976, 31017213, 31020058, 31023168, 31026006, 31268864, 31277056, 31031360, 31034351, 31039552, 31043508, 31047744, 31048067, 31048399, 31048702, 31049016, 31049327, 31049647, 31049944, 31050250, 31051858, 31053549, 31055936, 31057572, 31059882, 31064128, 31066170, 31068226, 31072320, 31074761, 31076077, 31077410, 31080512, 31082512, 31084817, 31088704, 31091152, 31093614, 31096896, 31099866, 31105088, 31108960, 31110370, 31113280, 31114840, 31116414, 31117956, 31121472, 31124595, 31129664, 31132956, 31137856, 31141343, 31143678, 31146048, 31147535, 31149422, 31151316, 31154240, 31156216, 31162432, 31165838, 31167546, 31170624, 31172987, 31175364, 31178816, 31181389, 31183968, 31187008, 31190522, 31195200, 31197715, 31200239, 31200531, 31203392, 31206275, 31211584, 31214092, 31216613, 31219776, 31222473, 31227968, 31231735, 31236160, 31239443, 31244352, 31247164, 31249587, 31252544, 31255304, 31260736, 31263518, 31266311, 31266588, 31126693, 31293504, 31296410, 31301696, 31304650, 31304941, 31305242, 31305512, 31305791, 31309888, 31547392, 31555584, 31563776, 31571968, 31313767, 31318080, 31321341, 31326272, 31329883, 31334464, 31337845, 31342656, 31346605, 31350848, 31354138, 31359040, 31362869, 31367232, 31370561, 31372796, 31375424, 31377723, 31380033, 31383616, 31385884, 31387771, 31389668, 31391808, 31393813, 31395642, 31400000, 31402491, 31404993, 31408192, 31410122, 31412405, 31416384, 31418707, 31421041, 31424576, 31427149, 31428461, 31429781, 31430095, 31432768, 31435377, 31437998, 31440960, 31443573, 31443880, 31444196, 31446352, 31449152, 31451386, 31453639, 31457344, 31460488, 31465536, 31468924, 31473728, 31477479, 31481920, 31484569, 31487231, 31490112, 31491130, 31492166, 31493560, 31494972, 31496457, 31498304, 31500284, 31502281, 31506496, 31509796, 31514688, 31517814, 31522880, 31525594, 31531072, 31534423, 31536272, 31539264, 31541136, 31543017, 31544955, 31299351, 31397478, 31414703, 31430420, 31520518, 31528933, 31588416, 31590467, 31592579, 31596608, 31598786, 31600940, 31604800, 31606834, 31608877, 31612992, 31615122, 31617261, 31621184, 31623320, 31625468, 31625791, 31626123, 31626429, 31626746, 31627023, 31629376, 31631622, 31633883, 31637568, 31639557, 31641109, 31642671, 31643981, 31645760, 31648668, 31651585, 31653952, 31656152, 31658624, 31662144, 31664612, 31667102, 31670336, 31672868, 31678528, 31681633, 31684124, 31686720, 31689858, 31694912, 31697327, 31699740, 31703104, 31705689, 31708138, 31711296, 31713063, 31714840, 31719488, 31721754, 31722055, 31722367, 31722659, 31722958, 31726049, 31727680, 31730012, 31732355, 31735872, 31739036, 31741015, 31744064, 31746208, 31748362, 31752256, 31754368, 31756221, 31758081, 31760448, 31762444, 31765022, 31768640, 31771224, 31773820, 31776832, 31778505, 31781533, 31785024, 31786801, 31788583, 31789768, 31790963, 31793216, 31794862, 31796416, 31801408, 31804879, 31809600, 31811779, 31813968, 31815596, 31817792, 31821288, 31825984, 31827711, 31829447, 31834176, 31837651, 31838487, 31839339, 31594746, 31675964, 31693013, 31797981, 31850560, 31853911, 31858752, 31861375, 31863344, 31865325, 31866944, 31868370, 31869840, 31871321, 31872899, 31875136, 31876891, 31878661, 31879764, 31880930, 31883328, 31885233, 31887030, 31888837, 31891520, 31893856, 31896659, 31899712, 31900317, 31900933, 31902483, 31904031, 31905656, 31907904, 31910453, 31913009, 31916096, 31918513, 31921174, 31924288, 31926698, 31929116, 31932480, 31934669, 31936980, 31940672, 31943287, 31945909, 31948864, 31951294, 31957056, 32104448, 32112640, 31960163, 31965248, 32120832, 32129024, 31968535, 31973440, 31975947, 31977714, 31981632, 31984171, 31986718, 31989824, 31992621, 31994927, 31998016, 32000355, 32002703, 32006208, 32008517, 32010882, 32014400, 32016698, 32019005, 32022592, 32025386, 32027578, 32030784, 32033498, 32036227, 32038976, 32041345, 32041664, 32041992, 32047168, 32049879, 32052575, 32055360, 32058058, 32060768, 32063552, 32065789, 32068273, 32071744, 32073325, 32074918, 32075364, 32075820, 32077777, 32079936, 32081548, 32083170, 32084973, 32086652, 32088128, 32089404, 32091549, 32093710, 32096320, 32098082, 32099983, 32101892, 32102419, 31954391, 31971032, 31979494, 32044692, 32046599, 32062993, 32137216, 32145408, 32153600, 32161792, 32169984, 32178176, 32186368, 32194560, 32211008, 32213137, 32215277, 32219200, 32221342, 32223747, 32227392, 32229475, 32231580, 32235584, 32237709, 32239124, 32240552, 32242114, 32243776, 32244075, 32244385, 32244687, 32245000, 32246446, 32464896, 32473088, 32247907, 32249831, 32251968, 32253357, 32254758, 32256344, 32260160, 32262356, 32264561, 32265586, 32268352, 32271078, 32276544, 32280173, 32481280, 32489472, 32284736, 32287378, 32290034, 32292928, 32294894, 32296848, 32497664, 32505856, 32301120, 32303668, 32306226, 32307604, 32309312, 32312273, 32315244, 32317504, 32318777, 32321441, 32325696, 32328548, 32331408, 32332100, 32332802, 32333888, 32334843, 32337015, 32339199, 32342080, 32344264, 32346433, 32350272, 32352327, 32354389, 32355975, 32358464, 32359514, 32360574, 32362595, 32366656, 32370653, 32374848, 32376851, 32378865, 32383040, 32385215, 32387380, 32391232, 32393401, 32395583, 32399424, 32401604, 32403777, 32405963, 32407616, 32409147, 32412112, 32415808, 32417505, 32419212, 32421553, 32424000, 32425588, 32427185, 32432192, 32434872, 32437198, 32440384, 32442733, 32445093, 32448576, 32450932, 32456768, 32460496, 32461695, 32462903, 32217407, 32233684, 32257940, 32266622, 32273813, 32298809, 32429853, 32522304, 32524501, 32526708, 32530496, 32776192, 32784384, 32532398, 32538688, 32792576, 32800768, 32541950, 32543778, 32546880, 32549731, 32552590, 32555072, 32557167, 32563264, 32566384, 32571456, 32574393, 32579648, 32583114, 32587840, 32590923, 32596032, 32599625, 32604224, 32808960, 32817152, 32607465, 32609370, 32612416, 32615522, 32620608, 32623007, 32625413, 32628800, 32631776, 32636992, 32639837, 32645184, 32648092, 32653376, 32656066, 32658690, 32825344, 32833536, 32661568, 32664610, 32841728, 32849920, 32669760, 32672103, 32674457, 32677952, 32680640, 32682659, 32686144, 32688098, 32690067, 32691712, 32694336, 32696347, 32698366, 32702528, 32858112, 32866304, 32704998, 32710720, 32714326, 32718912, 32721593, 32724252, 32727104, 32730443, 32735296, 32737630, 32739974, 32743488, 32746224, 32748452, 32751680, 32753595, 32755520, 32759872, 32762262, 32764676, 32768064, 32770087, 32772122, 32535650, 32560277, 32569310, 32882752, 32885569, 32890944, 32894561, 32899136, 32902826, 32907328, 32910908, 32915520, 32917739, 33136640, 33144832, 32919967, 32923712, 32926296, 32928537, 32931904, 32934834, 33153024, 33161216, 32940096, 32942436, 32944785, 32948288, 32950145, 32953227, 32956480, 32958467, 32960464, 32964672, 32968620, 32972864, 32976531, 32981056, 32983663, 32989248, 32992506, 32997440, 33000295, 33002506, 33169408, 33177600, 33185792, 33193984, 33005632, 33008900, 33013824, 33016788, 33022016, 33025611, 33030208, 33032958, 33038400, 33041704, 33046592, 33048607, 33050635, 33054784, 33057204, 33058864, 33062976, 33065482, 33067998, 33071168, 33072965, 33075028, 33079360, 33082783, 33087552, 33089588, 33091636, 33095744, 33098082, 33100491, 33103936, 33106261, 33112128, 33115612, 33120320, 33122716, 33125121, 33126628, 33128512, 33129421, 33130341, 33132097, 33133863, 33108596, 32888394, 32922541, 33035719, 33045017, 33210432, 33213325, 33215476, 33218624, 33220450, 33221853, 33223264, 33224321, 33225386, 33226816, 33228110, 33235008, 33238539, 33243200, 33246739, 33247964, 33251392, 33254878, 33259584, 33263110, 33267776, 33271326, 33275968, 33277990, 33280022, 33284160, 33286224, 33288880, 33292352, 33295106, 33300544, 33304072, 33308736, 33312291, 33316928, 33319131, 33321346, 33325120, 33328613, 33333312, 33336794, 33341504, 33343953, 33344803, 33345668, 33349696, 33352393, 33353148, 33353917, 33357888, 33359850, 33362514, 33366080, 33367420, 33368770, 33369077, 33369392, 33374272, 33376744, 33379258, 33382464, 33384592, 33386751, 33390656, 33393194, 33395663, 33398848, 33400665, 33402491, 33407040, 33409858, 33410677, 33411507, 33415232, 33417099, 33418760, 33420432, 33423424, 33425511, 33427641, 33431616, 33433804, 33436002, 33439808, 33441883, 33444050, 33448000, 33449798, 33451606, 33453419, 33456192, 33458582, 33460984, 33231678, 33297754, 33472576, 33475156, 33477529, 33480768, 33483110, 33485461, 33488960, 33491315, 33491639, 33491975, 33494350, 33497152, 33499495, 33501848, 33505344, 33508090, 33509314, 33510545, 33511664, 33513536, 33515872, 33518206, 33521728, 33523868, 33526484, 33529920, 33532961, 33538112, 33540561, 33543020, 33546304, 33549419, 33554496, 33557212, 33562688, 33565380, 33568028, 33570880, 33573661, 33579072, 33581974, 33584894, 33585212, 33587264, 33590188, 33595456, 33598215, 33603648, 33606384, 33611840, 33614775, 33620032, 33622982, 33628224, 33631067, 33636416, 33639175, 33644608, 33647368, 33652800, 33655719, 33660992, 33663878, 33669184, 33672091, 33677376, 33679830, 33682295, 33685568, 33688028, 33690124, 33693760, 33696566, 33701952, 33704837, 33710144, 33712997, 33718336, 33721179, 33734720, 33737567, 33742912, 33745826, 33751104, 33754210, 33759296, 33762496, 33767488, 33770720, 33775680, 33778745, 33783872, 33786755, 33792064, 33795080, 33800256, 33803282, 33808448, 33811562, 33816640, 33819668, 33824832, 33827390, 33833024, 33836030, 33841216, 33844145, 33849408, 33852443, 33857600, 33859697, 33861810, 33865792, 33867906, 33873984, 33877269, 33882176, 33885440, 33890368, 33893768, 33898560, 33901847, 33906752, 33910211, 33911975, 33914944, 33917596, 33920212, 33923136, 33925884, 33928567, 33931328, 33933926, 33936532, 33939520, 33941718, 33944016, 33947712, 33949960, 33952222, 33955904, 33958072, 33958395, 33958727, 33959050, 33959384, 33960598, 33961822, 33964096, 33965303, 33967861, 33972288, 33975365, 33980480, 33983579, 33829957, 33996864, 33999751, 34001204, 34002729, 34003020, 34003321, 34003609, 34005056, 34007122, 34009248, 34013248, 34015792, 34016084, 34016387, 34018278, 34021440, 34022872, 34024313, 34025884, 34027468, 34029632, 34031296, 34032700, 34034111, 34035763, 34037824, 34039377, 34040941, 34042811, 34046016, 34048647, 34051289, 34054208, 34056837, 34059522, 34062400, 34063955, 34064433, 34065524, 34066010, 34070592, 34072894, 34074922, 34078784, 34081238, 34083702, 34086976, 34088688, 34089160, 34089862, 34095168, 34098954, 34103360, 34106854, 34109099, 34111552, 34114450, 34117358, 34119744, 34122004, 34124145, 34127936, 34129799, 34131673, 34133181, 34136128, 34137622, 34139550, 34140892, 34144320, 34146104, 34149283, 34152512, 34155220, 34156615, 34158196, 34250752, 34160704, 34258944, 34162402, 34164728, 34168896, 34170628, 34173590, 34177088, 34180957, 34185280, 34188300, 34193472, 34197007, 34198789, 34201664, 34203205, 34206815, 34208262, 34209856, 34211479, 34215005, 34218048, 34220389, 34222132, 34226240, 34228036, 34234432, 34267136, 34237685, 34239692, 34242624, 34244630, 34246700, 34248591, 34068302, 34101319, 34183131, 34190041, 34231348, 34283584, 34286047, 34286886, 34287737, 34288504, 34289282, 34289919, 34537472, 34545664, 34553856, 34562048, 34291776, 34294161, 34296553, 34297292, 34299968, 34302944, 34308160, 34311071, 34316352, 34319117, 34324544, 34327501, 34332736, 34335461, 34340928, 34343885, 34349120, 34352074, 34357312, 34359918, 34362543, 34365504, 34368285, 34373696, 34376599, 34381888, 34384865, 34390080, 34392998, 34398272, 34401054, 34406464, 34409246, 34414656, 34417603, 34422848, 34425766, 34431040, 34433744, 34436434, 34439232, 34441770, 34444337, 34447424, 34449986, 34455616, 34458507, 34463808, 34466521, 34469213, 34472000, 34474294, 34476598, 34480192, 34482481, 34484944, 34488384, 34490589, 34492805, 34496576, 34499066, 34501393, 34504768, 34507045, 34509335, 34512960, 34514954, 34517174, 34521152, 34523361, 34525583, 34529344, 34531324, 34533596, 34314017, 34321901, 34330457, 34338249, 34346790, 34347828, 34355040, 34371174, 34379555, 34387774, 34395758, 34403819, 34578496, 34581706, 34586688, 34589287, 34591894, 34594880, 34596780, 34598771, 34603072, 34606318, 34611264, 34614505, 34619456, 34622652, 34627648, 34630896, 34635840, 34638233, 34640634, 34644032, 34646522, 34648530, 34650599, 34652224, 34653033, 34653323, 34653623, 34656667, 34660416, 34662307, 34664211, 34666329, 34668608, 34670617, 34672632, 34673140, 34673658, 34676800, 34678458, 34680051, 34681656, 34682240, 34682834, 34683448, 34684072, 34684992, 34685560, 34686083, 34686612, 34687137, 34687725, 34689315, 34690920, 34693184, 34695244, 34695728, 34701376, 34703477, 34707139, 34709568, 34712873, 34717760, 34721644, 34723480, 34725952, 34727451, 34728991, 34730716, 34734144, 34832384, 34735995, 34737809, 34739938, 34742336, 34744783, 34746280, 34750528, 34752589, 34755735, 34758720, 34762658, 34764126, 34766912, 34769869, 34775104, 34778164, 34783296, 34786298, 34789260, 34789584, 34791488, 34793315, 34795148, 34797009, 34799680, 34801831, 34803994, 34807872, 34810583, 34813267, 34816064, 34816432, 34816810, 34819380, 34821959, 34822247, 34822545, 34822836, 34823140, 34823590, 34824256, 34824551, 34824857, 34825159, 34825470, 34825762, 34826065, 34826338, 34826622, 34829391, 34714329, 34848832, 34851300, 34857024, 34860037, 34862276, 34865216, 34867405, 34869603, 34871395, 34873408, 34875698, 34878000, 34881600, 34884450, 34889792, 34892654, 34893003, 34893368, 34895634, 34897984, 34900675, 34903432, 34903731, 34904040, 34906176, 34908011, 34910353, 35102720, 35110912, 34914368, 34918105, 35119104, 35127296, 35135488, 35143680, 34922560, 34925835, 34930752, 34932918, 34938944, 34942995, 35151872, 35160064, 35168256, 35176448, 35184640, 35192832, 35201024, 35209216, 35217408, 35225600, 35233792, 35241984, 34947136, 34949734, 34955328, 34959235, 34963520, 34966267, 34971712, 34975325, 34979904, 34983830, 35250176, 35258368, 35266560, 35274752, 34988096, 34992058, 34996288, 34999388, 35004480, 35007321, 35012672, 35015148, 35020864, 35024581, 35282944, 35291136, 35299328, 35307520, 35029056, 35032433, 35037248, 35039188, 35041139, 35045440, 35048000, 35053632, 35315712, 35323904, 35332096, 35340288, 35057600, 35061824, 35348480, 35356672, 35064896, 35070016, 35073464, 35078208, 35364864, 35373056, 35080738, 35086400, 35089285, 35091624, 35094592, 35096866, 35099154, 34935097, 35389504, 35392725, 35397696, 35400420, 35643392, 35651584, 35403154, 35405888, 35408427, 35414080, 35659776, 35667968, 35676160, 35684352, 35417947, 35422272, 35426261, 35430464, 35432684, 35438656, 35442045, 35443805, 35446848, 35449679, 35452520, 35455040, 35456898, 35459391, 35463232, 35465935, 35468651, 35471424, 35473709, 35476005, 35479616, 35481459, 35483259, 35485496, 35487808, 35490477, 35493217, 35496000, 35498568, 35501240, 35504192, 35506331, 35508506, 35512384, 35514931, 35517010, 35520576, 35523017, 35528768, 35532382, 35536960, 35540775, 35545152, 35548061, 35553344, 35556257, 35561536, 35564341, 35567164, 35569728, 35572231, 35574807, 35577920, 35581241, 35586112, 35588487, 35590825, 35594304, 35597085, 35602496, 35605550, 35610688, 35613242, 35616005, 35618880, 35621877, 35627072, 35629656, 35632263, 35635264, 35637936, 35525423, 35551038, 35559237, 35608138, 35640831, 35395953, 35412282, 35428469, 35436063, 35600115, 35624899, 35700800, 35704721, 35708992, 35710952, 35712925, 35714771, 35717184, 35719791, 35722406, 35725376, 35728271, 35733568, 35737362, 35741760, 35745354, 35749952, 35753612, 35758144, 35761280, 35766336, 35769266, 35774528, 35777182, 35779748, 35782720, 35784345, 35786031, 35790912, 35794503, 35954688, 35799104, 35962880, 35802178, 35804371, 35807296, 35809339, 35811392, 35812653, 35815488, 35817012, 35818555, 35820478, 35823680, 35825613, 35827556, 35829490, 35831434, 35831872, 35832170, 35834462, 35836764, 35840064, 35842616, 35844588, 35848256, 35849965, 35851684, 35853096, 35854523, 35855395, 35856448, 35858495, 35860553, 35860864, 35861184, 35861531, 35861888, 35862215, 35862549, 35862878, 35863217, 35863578, 35863949, 35864640, 35864961, 35867737, 35872832, 35875588, 35877959, 35881024, 35883374, 35889216, 35892463, 35897408, 35899784, 35902619, 35905600, 35908096, 35910604, 35913792, 35916129, 35917258, 35918449, 35921984, 35923990, 35925994, 35928007, 35930176, 35932160, 35934530, 35938368, 35940245, 35942135, 35942489, 35942853, 35943240, 35943635, 35946560, 35948345, 35949905, 35951475, 35953038, 35732054, 35756737, 35764198, 35771953, 35870304, 35886789, 35895222, 35797068, 35979328, 35980949, 35982580, 35984173, 35985776, 35987520, 35989121, 35990763, 35992413, 35995712, 35997493, 36000585, 36003904, 36007479, 36012096, 36014972, 36017640, 36020288, 36022393, 36024694, 36028480, 36030905, 36033337, 36033655, 36033982, 36036672, 36038930, 36040871, 36044864, 36047051, 36049252, 36050979, 36053056, 36055215, 36057383, 36059071, 36061248, 36063132, 36065079, 36066714, 36069440, 36071512, 36073548, 36077632, 36079626, 36081655, 36083640, 36085824, 36087839, 36088115, 36088401, 36090361, 36233216, 36241408, 36092328, 36092625, 36092930, 36093226, 36094016, 36096200, 36098395, 36102208, 36104128, 36106952, 36110400, 36112668, 36114943, 36118592, 36120654, 36123360, 36126784, 36129316, 36131862, 36134976, 36136985, 36139677, 36143168, 36145440, 36147723, 36151360, 36154041, 36155676, 36157323, 36159552, 36161701, 36161994, 36162295, 36163827, 36167744, 36170239, 36172744, 36175936, 36178475, 36181196, 36184128, 36186233, 36188401, 36192320, 36194474, 36195108, 36195752, 36196109, 36196478, 36197856, 36200512, 36203567, 36206632, 36206902, 36208704, 36211615, 36216896, 36219794, 36222703, 36225088, 36226983, 36228894, 36230818, 36165368, 36214535, 36042821, 36075591, 36100304, 36257856, 36260283, 36262721, 36266048, 36268017, 36269374, 36270742, 36272027, 36274240, 36275856, 36277483, 36279055, 36280637, 36282432, 36284088, 36285671, 36287252, 36288782, 36290624, 36291927, 36293241, 36294814, 36296400, 36298816, 36300426, 36302066, 36303714, 36307008, 36308917, 36310536, 36312163, 36315200, 36316888, 36318793, 36320704, 36323392, 36325473, 36327131, 36328800, 36331584, 36333201, 36334830, 36336468, 36339776, 36341418, 36343045, 36344681, 36346268, 36347968, 36349614, 36351268, 36353054, 36356160, 36357475, 36358797, 36360510, 36362230, 36364352, 36366254, 36367950, 36369653, 36370995, 36372544, 36374154, 36375773, 36377404, 36379041, 36380736, 36382243, 36384038, 36385860, 36387206, 36388928, 36391262, 36393613, 36393933, 36394264, 36397120, 36399484, 36399776, 36400080, 36400379, 36400683, 36402619, 36405312, 36407080, 36408997, 36410903, 36413504, 36415405, 36417391, 36419341, 36421696, 36423730, 36425766, 36427298, 36429888, 36432092, 36434322, 36438080, 36440087, 36441680, 36443296, 36446272, 36448142, 36449475, 36450818, 36454464, 36456370, 36457737, 36459114, 36462656, 36464410, 36465961, 36467522, 36470848, 36472532, 36474227, 36475934, 36477364, 36479040, 36480687, 36482344, 36483752, 36485219, 36487232, 36488851, 36490328, 36491816, 36493428, 36495424, 36496835, 36498308, 36499669, 36501039, 36503616, 36505147, 36506589, 36508040, 36509675, 36338103, 36436306, 36520000, 36522082, 36524179, 36528192, 36530363, 36533250, 36536384, 36539630, 36544576, 36548281, 36552768, 36556798, 36560960, 36564271, 36569152, 36571067, 36572968, 36574400, 36577344, 36578790, 36580247, 36582576, 36585536, 36587037, 36588554, 36590611, 36593728, 36595831, 36597947, 36601920, 36604087, 36606168, 36610112, 36612163, 36614223, 36618304, 36620332, 36622745, 36626496, 36629028, 36634688, 36638093, 36642880, 36646177, 36651072, 36653255, 36655447, 36659264, 36661483, 36663765, 36667456, 36670028, 36672609, 36675648, 36678146, 36683840, 36687468, 36692032, 36695263, 36695589, 36695924, 36697920, 36700224, 36702241, 36704316, 36708416, 36710532, 36713494, 36716608, 36718809, 36721027, 36724800, 36727727, 36732992, 36736272, 36738464, 36741184, 36743434, 36745649, 36749376, 36751900, 36752191, 36752493, 36753801, 36755125, 36757568, 36759731, 36762691, 36765760, 36768133, 36770523, 36772160, 36631575, 36782144, 36784522, 36786738, 36790336, 36792635, 36794946, 36798528, 36800709, 36802960, 36806720, 36808995, 36811281, 36814912, 36817380, 36823104, 36826865, 36831296, 36833690, 36835328, 36836973, 36839488, 36841683, 36843863, 36847680, 36850153, 36852641, 36855872, 36858275, 36861021, 36864064, 36866630, 36869204, 36872256, 36875025, 36875345, 36875679, 36880448, 36884333, 36888640, 36891505, 36896832, 36899720, 36905024, 36907895, 36913216, 36915986, 36921408, 36924792, 36929600, 36932178, 36934479, 36937792, 36941214, 36944647, 36944936, 36945237, 36945514, 36945984, 36948845, 36951715, 36952014, 36952322, 36952616, 36952922, 36953207, 36954176, 36957394, 36962368, 36965913, 36970560, 36973296, 36976086, 36976373, 36976671, 36976948, 36978752, 36980408, 36982074, 36984106, 36986944, 36989026, 36991120, 36995136, 36997134, 36999876, 37003328, 37006010, 37008706, 37011520, 37013491, 37016276, 37019712, 37021160, 37022672, 37024464, 37027904, 37030089, 37032287, 37044288, 37046844, 37052480, 37055468, 37060672, 37063288, 37063602, 37063929, 37065988, 37068864, 37071157, 37073466, 37077056, 37079014, 37081422, 37085248, 37087141, 37089048, 37091458, 37093440, 37095338, 37097247, 37099157, 37101632, 37104743, 37107863, 37109824, 37111532, 37112852, 37114189, 37115464, 37116754, 37117027, 37117318, 37117621, 37118016, 37119633, 37121264, 37122858, 37126208, 37127999, 37129799, 37131551, 37134400, 37136180, 37137968, 37140096, 37142592, 37144773, 37146905, 37148802, 37150784, 37152326, 37153883, 37156342, 37158976, 37161520, 37164079, 37167168, 37169316, 37171425, 37175360, 37177360, 37179371, 37183552, 37185784, 37187683, 37189596, 37191744, 37193304, 37195297, 37197301, 37199936, 37201934, 37203922, 37205919, 37208128, 37210129, 37212119, 37214119, 37216320, 37218320, 37220310, 37222308, 37224512, 37226511, 37228499, 37230498, 37232704, 37234703, 37236693, 37238694, 37240896, 37242917, 37244930, 37246953, 37249088, 37251140, 37253176, 37257280, 37259325, 37261379, 37265472, 37267524, 37269564, 37273664, 37275702, 37277752, 37281856, 37283905, 37285947, 37290048, 37292082, 37294131, 37295628, 37049821, 37058074, 37306432, 37308457, 37310491, 37314624, 37317594, 37322816, 37326069, 37331008, 37333879, 37339200, 37342213, 37344482, 37347392, 37349924, 37355584, 37358722, 37363776, 37367031, 37371968, 37375401, 37380160, 37383150, 37388352, 37390904, 37391211, 37391531, 37391826, 37392130, 37394047, 37396544, 37398867, 37401199, 37401579, 37401970, 37402263, 37402567, 37402899, 37403241, 37403528, 37403824, 37404114, 37404736, 37407064, 37409403, 37412928, 37414768, 37416456, 37418156, 37421120, 37423208, 37424619, 37426044, 37429312, 37430928, 37433150, 37437504, 37440428, 37445696, 37448547, 37453888, 37456637, 37462080, 37464844, 37467601, 37470272, 37472803, 37475306, 37478464, 37480937, 37483425, 37486656, 37489184, 37494848, 37498031, 37503040, 37505912, 37511232, 37514670, 37518251, 37519424, 37522170, 37527616, 37530429, 37535808, 37538832, 37541868, 37544000, 37545883, 37547900, 37552192, 37555238, 37352471, 37568576, 37571560, 37574073, 37576768, 37579606, 37582456, 37584960, 37586493, 37588039, 37589537, 37591106, 37593152, 37595606, 37598069, 37601344, 37603931, 37609536, 37612718, 37614497, 37617728, 37619532, 37621343, 37625920, 37628922, 37634112, 37637534, 37638727, 37639925, 37642304, 37644025, 37645764, 37647517, 37650496, 37652816, 37654435, 37656063, 37658688, 37660098, 37662420, 37666880, 37669824, 37672182, 37675072, 37676725, 37678401, 37679509, 37683264, 37685177, 37691456, 37694489, 37696059, 37699648, 37701845, 37704054, 37707840, 37711049, 37716032, 37719086, 37721100, 37724224, 37725432, 37726631, 37732416, 37735789, 37740608, 37743641, 37746141, 37748800, 37751223, 37753652, 37756992, 37759334, 37761563, 37765184, 37767693, 37770215, 37773376, 37775983, 37778267, 37781568, 37783664, 37785770, 37787512, 37789760, 37791863, 37793979, 37797952, 37800080, 37801390, 37822464, 37830656, 37806144, 37809768, 37814336, 37818264, 37607106, 37664055, 37688888, 37802710, 37805190, 37805511, 37729994, 37847104, 37849084, 37851798, 37855296, 37858016, 37860748, 37861064, 37863488, 37866199, 37868921, 37871680, 37874220, 37876813, 37879872, 37882346, 37884838, 37888064, 37891220, 37892767, 37894322, 37896256, 37898104, 37900783, 37904448, 37906285, 37908129, 37912640, 37914968, 37916550, 37918149, 37920832, 37922652, 37925023, 37929024, 37931412, 37933198, 37937216, 37939163, 37941620, 37943571, 37945408, 37947149, 37949205, 37951275, 37953600, 37955314, 37957430, 37959556, 37960377, 37961792, 37963153, 37964525, 37965991, 37967470, 37967763, 37969984, 37973886, 37978176, 37982098, 37986368, 37986747, 37987141, 37989485, 37994560, 37997641, 38100992, 38109184, 38002752, 38005534, 38117376, 38125568, 38008323, 38010944, 38012616, 38015135, 38019136, 38020937, 38022748, 38027328, 38030513, 38032241, 38035520, 38037582, 38039654, 38043712, 38045825, 38047973, 38051904, 38053854, 38055810, 38056503, 38057209, 38057901, 38060096, 38062241, 38133760, 38141952, 38064395, 38068288, 38070482, 38076480, 38080154, 38081493, 38082840, 38084672, 38086368, 38087702, 38089046, 38090761, 38092864, 38096697, 37861392, 37910443, 37926888, 37935652, 37992147, 38074142, 38158400, 38160589, 38162791, 38166592, 38168789, 38170968, 38412288, 38420480, 38428672, 38436864, 38445056, 38453248, 38174784, 38177619, 38182976, 38186331, 38461440, 38469632, 38191168, 38194580, 38199360, 38200724, 38202096, 38204480, 38477824, 38486016, 38207552, 38209119, 38210694, 38212547, 38215744, 38217603, 38219470, 38223936, 38226217, 38228350, 38494208, 38502400, 38232128, 38235248, 38240320, 38242997, 38248512, 38251873, 38256704, 38260717, 38264896, 38267272, 38273088, 38276815, 38281280, 38283898, 38289472, 38293241, 38297664, 38301219, 38305856, 38307627, 38309407, 38314048, 38317323, 38319588, 38322240, 38326023, 38330432, 38333486, 38338624, 38340805, 38342996, 38346816, 38349753, 38352274, 38355008, 38357176, 38359356, 38363200, 38510592, 38518784, 38365388, 38367823, 38371392, 38374597, 38379584, 38381685, 38383796, 38387776, 38391363, 38395968, 38398854, 38404160, 38407971, 38180463, 38245681, 38269658, 38286526, 38535232, 38537405, 38539322, 38541249, 38543424, 38545269, 38548303, 38551616, 38553444, 38555282, 38557187, 38559808, 38563646, 38568000, 38570584, 38573176, 38576192, 38578620, 38580861, 38584384, 38585994, 38587615, 38592576, 38595206, 38600768, 38604129, 38608960, 38611614, 38613628, 38617152, 38619535, 38621928, 38625344, 38628455, 38633536, 38636153, 38638756, 38641728, 38643318, 38644920, 38647207, 38649920, 38652243, 38654577, 38658112, 38660624, 38662976, 38666304, 38670214, 38674496, 38677637, 38682688, 38684890, 38687101, 38690880, 38692758, 38694988, 38699072, 38702309, 38707264, 38710740, 38715456, 38718058, 38720666, 38723648, 38725834, 38728270, 38731840, 38734107, 38736385, 38740032, 38743087, 38745509, 38748224, 38750608, 38752984, 38756416, 38758608, 38761138, 38764608, 38766222, 38767844, 38772800, 38775819, 38780992, 38784496, 38797376, 38800881, 38805568, 38809032, 38813760, 38817235, 38819072, 38821952, 38823931, 38825919, 38830144, 38832510, 38834892, 38838336, 38841144, 38843963, 38846528, 38848935, 38850684, 38854720, 38856971, 38858498, 38862912, 38865311, 38866614, 38867926, 38871104, 38873414, 38876031, 38879296, 38880902, 38882517, 38883203, 38883899, 38887488, 38889862, 38890537, 38891223, 38892802, 38895680, 38897866, 38900066, 38901277, 38902497, 38903872, 38904894, 38905363, 38905841, 38908661, 38912064, 38914180, 38916309, 38917103, 38917911, 38920256, 38921438, 38924506, 38927584, 38928448, 38929254, 38930772, 38932300, 38934258, 38936640, 38937336, 38938042, 38940269, 38942502, 38944832, 38946885, 38949240, 38953024, 38954725, 38956377, 38958439, 38961216, 38963290, 38965377, 38969408, 38971468, 38973651, 38977600, 38979771, 38981957, 38985792, 38988028, 38989828, 38991638, 38993984, 38995796, 38997125, 38998464, 39002176, 39004463, 39006768, 39010368, 39012426, 39014494, 39018560, 39020676, 39022838, 39026752, 39029455, 39034944, 39037968, 39043136, 39045760, 39059520, 39062666, 39067712, 39070872, 39075904, 39078783, 39084096, 39087083, 39092288, 39094741, 39097203, 39100480, 39103139, 39108672, 39111729, 39116864, 39119841, 39125056, 39128017, 39130304, 39133248, 39135937, 39141440, 39144381, 39149632, 39152188, 39157824, 39161480, 39166016, 39168805, 39171602, 39174208, 39176545, 39182400, 39185703, 39185984, 39186276, 39186557, 39186847, 39187129, 39187419, 39187702, 39187994, 39188293, 39190592, 39193549, 39198784, 39201505, 39204238, 39206976, 39209551, 39212085, 39215168, 39217425, 39219693, 39219967, 39220252, 39220566, 39220892, 39221285, 39223360, 39226321, 39231552, 39234211, 39236880, 39239744, 39242415, 39247936, 39250962, 39256128, 39259147, 39264320, 39267343, 39272512, 39275534, 39280704, 39283730, 39288896, 39291947, 39297088, 39300137, 39305280, 39308333, 39321664, 39324713, 39329856, 39332906, 39338048, 39341100, 39346240, 39349289, 39354432, 39357481, 39362624, 39365674, 39370816, 39373866, 39379008, 39382056, 39387200, 39390250, 39395392, 39398441, 39400945, 39403584, 39406872, 39411776, 39414376, 39417065, 39419968, 39422782, 39425375, 39428160, 39430881, 39436352, 39439608, 39444544, 39446623, 39448710, 39452736, 39455018, 39457319, 39460928, 39463303, 39465691, 39469120, 39471504, 39474046, 39477312, 39479500, 39481699, 39485504, 39487852, 39490484, 39493696, 39495993, 39498308, 39499002, 39499750, 39501888, 39503165, 39505077, 39506999, 39508315, 39510080, 39512146, 39514217, 39518272, 39521068, 39526464, 39530092, 39531807, 39534656, 39536380, 39538069, 39539897, 39542848, 39544805, 39546718, 39551040, 39553449, 39555774, 39559232, 39561541, 39563861, 39575552, 39567424, 39569033, 39570624, 39572248, 39433622, 39592000, 39594657, 39600192, 39603383, 39608384, 39610906, 39613295, 39616576, 39619367, 39622166, 39624768, 39627301, 39628822, 39632960, 39634661, 39638667, 39641152, 39644859, 39649344, 39653254, 39657536, 39661451, 39663222, 39665728, 39667590, 39670661, 39673920, 39676660, 39682112, 39685725, 39687166, 39690304, 39691829, 39693924, 39698496, 39702086, 39706688, 39710473, 39714880, 39718745, 39719218, 39723072, 39724986, 39728336, 39731264, 39733185, 39734516, 39735808, 39737202, 39739456, 39741423, 39743402, 39747648, 39750192, 39755840, 39759648, 39764032, 39767532, 39772224, 39774929, 39780416, 39783221, 39785419, 39788608, 39792089, 39796800, 39800347, 39804992, 39809020, 39813184, 39817177, 39821376, 39823914, 39826462, 39829568, 39832440, 39837760, 39841203, 39678457, 39695331, 39854144, 39857249, 39862336, 39865248, 39870528, 39873469, 39878720, 39881557, 39886912, 39889742, 39892101, 39895104, 39897208, 39899321, 39903296, 39905828, 39908068, 39911488, 39913759, 39916041, 39919680, 39922455, 39927872, 39930608, 39932578, 39936064, 39938300, 39940551, 39944256, 39946622, 39949260, 39952448, 39954908, 39957381, 39960640, 39963453, 39964684, 39965974, 39968832, 39971080, 39973946, 39977024, 39979888, 39985216, 39988069, 39993408, 39995881, 39998365, 40001600, 40004321, 40006515, 40009792, 40012263, 40014746, 40017984, 40020450, 40022959, 40026176, 40027390, 40028661, 40030474, 40032348, 40034368, 40035638, 40036497, 40037413, 40039632, 40042560, 40045743, 40050752, 40052936, 40055130, 40058944, 40061213, 40062618, 40064035, 40065099, 40067136, 40068820, 40070517, 40075328, 40079322, 40083520, 40086718, 40088634, 40091712, 40093318, 40095995, 40099904, 40103290, 40116288, 40119610, 40124480, 40128409, 40129981, 40132672, 40134928, 40370176, 40378368, 40386560, 40394752, 40137196, 40140864, 40143992, 40149056, 40152144, 40157248, 40160439, 40165440, 40168310, 40170709, 40173632, 40175923, 40178180, 40181824, 40184069, 40190016, 40192988, 40198208, 40200992, 40203628, 40206400, 40209162, 40211878, 40214592, 40216443, 40218705, 40222784, 40224731, 40226688, 40230976, 40233209, 40235164, 40239168, 40241259, 40243291, 40247360, 40249607, 40251196, 40252845, 40255552, 40257492, 40260034, 40263744, 40266435, 40269139, 40269425, 40269723, 40270024, 40270334, 40270628, 40271936, 40274368, 40276809, 40280128, 40282536, 40284787, 40288320, 40290743, 40293182, 40294404, 40296512, 40298513, 40300525, 40304704, 40308095, 40309655, 40311224, 40312896, 40314420, 40316032, 40402944, 40411136, 40317657, 40318217, 40318788, 40321088, 40322313, 40323688, 40325072, 40326724, 40328385, 40329280, 40329899, 40331632, 40333378, 40337472, 40419328, 40427520, 40339707, 40341756, 40345664, 40348010, 40353856, 40357855, 40362048, 40363077, 40364115, 40365222, 40366337, 40121538, 40131566, 40147121, 40155375, 40163352, 40187080, 40195820, 40220977, 40221843, 40443968, 40447714, 40452160, 40455780, 40460352, 40461879, 40463417, 40468544, 40472473, 40476736, 40697856, 40706048, 40480139, 40484928, 40488324, 40493120, 40496346, 40501312, 40504877, 40509504, 40513342, 40517696, 40714240, 40722432, 40521035, 40525888, 40529500, 40531542, 40534080, 40536291, 40538510, 40542272, 40544497, 40546653, 40550464, 40554249, 40558656, 40561939, 40566848, 40569539, 40575040, 40578421, 40583232, 40586713, 40591424, 40594988, 40599616, 40730624, 40738816, 40747008, 40603671, 40607808, 40611758, 40616000, 40618430, 40624192, 40627657, 40632384, 40755200, 40763392, 40771584, 40779776, 40635626, 40637928, 40640576, 40644584, 40648768, 40650484, 40652210, 40653536, 40654871, 40656960, 40658138, 40660135, 40662140, 40663301, 40665152, 40666392, 40667640, 40668813, 40669996, 40673344, 40675629, 40677458, 40681536, 40684660, 40689728, 40693241, 40796224, 40799651, 40804416, 40806767, 40809129, 40812608, 40815275, 40815586, 40815906, 40817759, 40820800, 40823282, 40825774, 40828992, 40830853, 40833162, 40837184, 40839478, 40841785, 40845376, 40847871, 40850615, 40853568, 40856283, 40858974, 40861760, 40864203, 40866828, 40869952, 40872564, 40875228, 40878144, 40880709, 40882945, 40886336, 40888737, 40891210, 40894528, 40897027, 40899469, 40902720, 40905098, 40907541, 40910912, 40913034, 40915381, 40919104, 40921933, 40924797, 40927296, 40929843, 40932275, 40935488, 40938389, 40941302, 40942436, 40943680, 40946000, 40948345, 40951872, 40954583, 40956970, 40960064, 40962383, 40968256, 40971964, 40976448, 40979095, 40981711, 40984640, 40987263, 40992832, 40995593, 40997995, 41001024, 41003597, 41009216, 41013080, 41017408, 41019340, 41021281, 41025600, 41028954, 41031029, 41033792, 41035253, 41036724, 41038064, 41041984, 41045912, 40964769, 40990063, 41006143, 41039415, 41058368, 41061029, 41063725, 41066560, 41068968, 41074752, 41077628, 41082944, 41085771, 41091136, 41094059, 41099328, 41102289, 41107520, 41110888, 41115712, 41118494, 41123904, 41126659, 41132096, 41135249, 41135590, 41135943, 41140288, 41143137, 41145755, 41148480, 41151192, 41153912, 41154231, 41156672, 41158991, 41164864, 41168905, 41173056, 41175735, 41312256, 41320448, 41178425, 41181248, 41183952, 41189440, 41192429, 41192924, 41195003, 41197632, 41200706, 41202294, 41203893, 41204366, 41205824, 41207480, 41209173, 41210674, 41212185, 41214016, 41215063, 41216345, 41217645, 41219328, 41222208, 41223866, 41225533, 41226870, 41228217, 41230400, 41232317, 41233811, 41235320, 41238592, 41240677, 41242222, 41243784, 41245135, 41246784, 41248238, 41249705, 41251618, 41254976, 41257228, 41259497, 41263168, 41266093, 41268012, 41271360, 41273145, 41274882, 41279552, 41281904, 41283818, 41285692, 41287744, 41289103, 41290691, 41292243, 41293869, 41295936, 41297892, 41299800, 41301810, 41304128, 41305544, 41306919, 41308375, 41309786, 41071832, 41080443, 41088682, 41097008, 41105647, 41121238, 41161322, 41186930, 41129800, 41154558, 41195498, 41277279, 41336896, 41338896, 41340325, 41341773, 41343287, 41345088, 41346496, 41347917, 41349735, 41353280, 41356987, 41361472, 41363669, 41365881, 41369664, 41371655, 41374019, 41377856, 41380661, 41383478, 41384362, 41386048, 41387458, 41388880, 41389815, 41390762, 41392188, 41394240, 41396170, 41398110, 41399835, 41401570, 41401920, 41402432, 41404082, 41405744, 41406037, 41406342, 41406698, 41407063, 41407371, 41407688, 41410624, 41412601, 41414617, 41416644, 41418816, 41420201, 41423574, 41427008, 41430390, 41435200, 41437733, 41440278, 41443392, 41445907, 41451584, 41454952, 41456703, 41459776, 41461015, 41462313, 41462607, 41462913, 41464787, 41467968, 41469806, 41471652, 41473453, 41476160, 41478082, 41480014, 41481931, 41484352, 41590784, 41488408, 41492544, 41495590, 41500736, 41504215, 41508928, 41511484, 41517120, 41520376, 41522092, 41523767, 41524048, 41524339, 41524667, 41525312, 41525627, 41525951, 41528180, 41530421, 41533504, 41535198, 41537107, 41539026, 41541696, 41543460, 41545445, 41547378, 41549888, 41551422, 41554029, 41558080, 41559956, 41561788, 41562092, 41562406, 41562700, 41563002, 41563304, 41563615, 41566272, 41567754, 41568054, 41568365, 41568661, 41568966, 41570991, 41574464, 41577034, 41579615, 41582656, 41584350, 41585348, 41586358, 41588142, 41607232, 41609721, 41612220, 41615424, 41617619, 41619778, 41621949, 41623616, 41624590, 41627148, 41631808, 41633932, 41636064, 41640000, 41642217, 41644412, 41648192, 41650546, 41652911, 41656384, 41658429, 41660484, 41662553, 41664576, 41666479, 41669221, 41672768, 41674789, 41676822, 41680960, 41683073, 41685622, 41689152, 41691831, 41694521, 41697344, 41699576, 41701206, 41702849, 41705536, 41707489, 41708194, 41708911, 41710363, 41711823, 41713728, 41715350, 41717269, 41719200, 41721920, 41723634, 41724947, 41726268, 41727897, 41730112, 41731445, 41732788, 41734406, 41736034, 41738304, 41740035, 41741690, 41743352, 41746496, 41748052, 41749618, 41751192, 41752840, 41754688, 41756309, 41757943, 41759251, 41760566, 41762880, 41764207, 41765513, 41766827, 41768387, 41771072, 41773303, 41775546, 41779264, 41781593, 41783536, 41785616, 41787456, 41789032, 41789338, 41789655, 41795648, 41798715, 41799041, 41799375, 41799657, 41799950, 41803840, 41805853, 41807743, 41809643, 41812032, 41813781, 41815619, 41817442, 41820224, 41822130, 41824034, 41825942, 41828416, 41830654, 41832264, 41833887, 41836608, 41838179, 41839737, 41841308, 41842841, 41844800, 41846406, 41848024, 41849677, 41852992, 41854715, 41856501, 41858235, 41629714, 41678920, 41792710, 41801998, 41638267, 41869376, 41870988, 41872441, 41873903, 41875379, 41877568, 41878944, 41880329, 41881852, 41883439, 41885760, 41886912, 41888771, 41890639, 41893952, 41896351, 41902144, 41906038, 41910336, 41913831, 41918528, 41922018, 41923935, 41926720, 41929095, 41931485, 41934912, 41936997, 41938725, 41940461, 41943104, 41945484, 41947346, 41949217, 41951296, 41953171, 41955360, 41959488, 41961741, 41964006, 41967680, 41969840, 41972304, 41975872, 41978335, 41980806, 41984064, 41986252, 41988317, 41992256, 41994119, 41995990, 41997804, 42000448, 42002437, 42004440, 42006262, 42008640, 42011183, 42013743, 42014751, 42016832, 42019287, 42021803, 42025024, 42027088, 42029339, 42033216, 42035516, 42037827, 42041408, 42043670, 42043975, 42044296, 42049600, 42053218, 42057792, 42061322, 42061640, 42061968, 42065984, 42068842, 42070435, 42072087, 42074176, 42075779, 42077786, 42079861, 42082368, 42083756, 42085297, 42086847, 42090560, 42093476, 42093752, 42094037, 42094318, 42094609, 42096321, 42098752, 42101179, 42106944, 42110477, 42115136, 42118021, 42119729, 41900237, 42103623, 42131520, 42133689, 42135035, 42136390, 42137807, 42139712, 42141826, 42143956, 42147904, 42150571, 42156096, 42159590, 42164288, 42167803, 42172480, 42175307, 42180672, 42183450, 42188864, 42191660, 42197056, 42200683, 42205248, 42208880, 42209174, 42209478, 42209762, 42210056, 42210352, 42210659, 42210949, 42211252, 42211534, 42211826, 42212120, 42212425, 42212736, 42213057, 42213440, 42213743, 42216016, 42218301, 42221632, 42224686, 42225029, 42225381, 42229824, 42233153, 42238016, 42241282, 42246208, 42385408, 42393600, 42250153, 42254400, 42257898, 42262592, 42266065, 42270784, 42274386, 42278976, 42282536, 42284094, 42287168, 42288821, 42290539, 42291853, 42295360, 42297465, 42299623, 42303552, 42306419, 42308221, 42311744, 42313549, 42315365, 42317224, 42319936, 42321799, 42323672, 42325570, 42328128, 42330025, 42331933, 42333828, 42336320, 42338216, 42340124, 42341985, 42344512, 42346405, 42348307, 42352704, 42355766, 42360896, 42363899, 42369088, 42372073, 42377280, 42380210, 42410048, 42412964, 42418240, 42421071, 42426432, 42429277, 42434624, 42437491, 42442816, 42445651, 42447626, 42449614, 42449919, 42450236, 42450545, 42451008, 42451329, 42451662, 42451960, 42452267, 42454696, 42456600, 42459200, 42461273, 42463191, 42465120, 42467392, 42469296, 42471187, 42473090, 42475584, 42477502, 42479410, 42481331, 42483776, 42485610, 42487998, 42491968, 42494351, 42496286, 42500160, 42501992, 42504377, 42508352, 42512251, 42663936, 42672128, 42516544, 42520468, 42524736, 42526850, 42528975, 42532928, 42535527, 42541120, 42680320, 42688512, 42543948, 42546266, 42549312, 42550613, 42551934, 42553386, 42554855, 42555151, 42557504, 42561280, 42565696, 42568158, 42570630, 42573888, 42576342, 42578206, 42582080, 42584500, 42586872, 42590272, 42592730, 42594504, 42596289, 42598464, 42600154, 42601852, 42603561, 42606656, 42608354, 42611286, 42614848, 42617160, 42619487, 42623040, 42625369, 42631232, 42634211, 42636448, 42639424, 42641487, 42643563, 42647616, 42651059, 42655808, 42658353, 42660921, 42704960, 42708174, 42713152, 42715788, 42721344, 42724357, 42729536, 42732967, 42737728, 42740370, 42743041, 42745920, 42748757, 42754112, 42756912, 42762304, 42765106, 42767490, 42770496, 42772532, 42774576, 42778688, 42781798, 42786880, 42789423, 42791262, 42793113, 42795072, 42958848, 42967040, 42796314, 42798853, 42975232, 42983424, 42803264, 42805322, 42807394, 42811456, 42813577, 42815930, 42819648, 42822682, 42827840, 42830032, 42832235, 42832525, 42832828, 42836032, 42839053, 42844224, 42847208, 42849408, 42852416, 42854351, 42856237, 42858233, 42860608, 42862528, 42864462, 42866107, 42867761, 42868110, 42868800, 42871443, 42874098, 42875467, 42876992, 42878340, 42879642, 42881412, 42883128, 42885184, 42886422, 42888171, 42889932, 42893376, 42896379, 42901568, 42904583, 42905720, 42906867, 42909760, 42912038, 42913286, 42914540, 42915338, 42916145, 42917952, 42918851, 42920650, 42922458, 42926144, 42929181, 42931534, 42934336, 42935686, 42937043, 42939288, 42942528, 42943710, 42944902, 42945548, 42946204, 42950720, 42953824, 42955942, 42718439, 42727390, 42751540, 42759699, 42999872, 43002419, 43004974, 43008064, 43010841, 43011135, 43011439, 43013484, 43016256, 43018676, 43021107, 43024448, 43026867, 43029353, 43032640, 43035180, 43253760, 43261952, 43040832, 43044394, 43049024, 43051323, 43053574, 43057216, 43059705, 43062285, 43065408, 43068554, 43073600, 43075721, 43077853, 43081792, 43084661, 43089984, 43092646, 43095141, 43098176, 43100518, 43102867, 43106368, 43108854, 43114560, 43117406, 43119965, 43122752, 43123985, 43125229, 43127387, 43130944, 43133204, 43135469, 43139136, 43141117, 43142761, 43144418, 43144702, 43147328, 43149972, 43152630, 43153142, 43155520, 43157862, 43160214, 43163712, 43165754, 43167938, 43171904, 43174360, 43180096, 43183404, 43186722, 43188288, 43189171, 43190595, 43192086, 43194163, 43196480, 43197546, 43198583, 43200663, 43204672, 43206608, 43208608, 43208993, 43209387, 43210724, 43270144, 43278336, 43212864, 43214202, 43215552, 43217806, 43221056, 43223111, 43225175, 43227077, 43229248, 43232309, 43237440, 43239642, 43241858, 43245632, 43247894, 43250605, 43037735, 43087271, 43176827, 43294784, 43297736, 43302976, 43305672, 43307564, 43309465, 43311168, 43312553, 43313882, 43315221, 43319360, 43321927, 43327552, 43331581, 43335744, 43338309, 43340959, 43343936, 43345929, 43347931, 43352128, 43354879, 43357493, 43360320, 43363012, 43365714, 43368512, 43370071, 43372892, 43376704, 43379000, 43381307, 43382246, 43383195, 43384896, 43386496, 43389290, 43393088, 43396032, 43401280, 43404331, 43409472, 43411757, 43414054, 43417664, 43420384, 43423037, 43425856, 43427484, 43429122, 43434048, 43548672, 43556864, 43437029, 43439430, 43442240, 43445159, 43565056, 43573248, 43450432, 43453831, 43581440, 43589632, 43458624, 43462664, 43597824, 43606016, 43466816, 43470462, 43475008, 43476650, 43478305, 43480023, 43483200, 43485842, 43488491, 43491392, 43494012, 43495417, 43499584, 43502511, 43505450, 43507776, 43509816, 43512007, 43515968, 43518061, 43520164, 43521724, 43524160, 43525626, 43527104, 43532352, 43535057, 43540544, 43543475, 43622464, 43625376, 43627350, 43630656, 43633113, 43638848, 43642122, 43647040, 43649768, 43652509, 43655232, 43657405, 43659859, 43663424, 43665863, 43668313, 43671616, 43673628, 43679808, 43682896, 43688000, 43690705, 43696192, 43699736, 43704384, 43706852, 43712576, 43716103, 43720768, 43723304, 43725861, 43728960, 43732146, 43737152, 43739290, 43741443, 43745344, 43747924, 43753536, 43756584, 43761728, 43764442, 43766994, 43769920, 43771714, 43773765, 43778112, 43780621, 43782577, 43786304, 43788429, 43790564, 43794496, 43796589, 43799044, 43802688, 43805463, 43808248, 43810880, 43813185, 43819072, 43822798, 43827264, 43829616, 43832074, 43835456, 43838657, 43843648, 43846765, 43851840, 43854261, 43856694, 43860032, 43862250, 43864744, 43868224, 43870691, 43873167, 43635582, 43676710, 43884608, 43887453, 43892800, 43896207, 43900992, 43904042, 43905878, 43909184, 43911317, 43913458, 43917376, 43919745, 43925568, 43929006, 43930961, 43933760, 43935953, 43938155, 43941952, 43944099, 43947030, 43950144, 43952127, 43954120, 43958336, 43961428, 43966528, 43969803, 43971914, 43974720, 43976983, 43978927, 43980849, 43982912, 43986417, 43991104, 43993247, 43995400, 43997246, 43999296, 44001052, 44002818, 44007488, 44009818, 44011047, 44012287, 44012741, 44013204, 44015680, 44017184, 44018501, 44019825, 44023872, 44025920, 44027462, 44029016, 44032064, 44034279, 44034553, 44034833, 44036840, 44040256, 44042703, 44045159, 44045506, 44045862, 44046350, 44048448, 44050451, 44052405, 44054176, 44056640, 44058726, 44060823, 44064832, 44066983, 44069358, 44073024, 44075034, 44077055, 44078774, 44081216, 44083332, 44085458, 44089408, 44091435, 44093538, 44095653, 44095949, 44097600, 44099679, 44101771, 44105792, 44107848, 44110449, 44113984, 44115757, 44117546, 44122176, 44124769, 44126957, 44129151, 44130368, 44131056, 44132143, 44133245, 44146752, 44149593, 44154944, 44157756, 44163136, 44165948, 44171328, 44174132, 44179520, 44182326, 44187712, 44190528, 44195904, 44198710, 44204096, 44207245, 44212288, 44215068, 44220480, 44223313, 44225916, 44228672, 44231215, 44233767, 44236864, 44239453, 44242043, 44245056, 44248076, 44253248, 44256203, 44261440, 44264457, 44269632, 44272242, 44274864, 44277824, 44280439, 44283040, 44286016, 44288565, 44291123, 44294208, 44296769, 44299406, 44302400, 44302720, 44303050, 44306177, 44309320, 44309663, 44310592, 44313205, 44315826, 44318784, 44321350, 44323440, 44326976, 44330239, 44335168, 44338468, 44343360, 44346643, 44351552, 44355584, 44359744, 44363654, 44367936, 44371270, 44376128, 44379567, 44384320, 44387083, 44392512, 44395265, 44408896, 44411609, 44414334, 44417088, 44419734, 44422005, 44425280, 44428010, 44430698, 44433472, 44435373, 44437806, 44441664, 44444700, 44449856, 44452896, 44458048, 44461090, 44466240, 44469280, 44474432, 44477110, 44479798, 44482624, 44485000, 44490816, 44493912, 44496280, 44499008, 44500864, 44502794, 44504863, 44507200, 44509531, 44511874, 44512171, 44512478, 44515392, 44517530, 44520220, 44523584, 44525410, 44527248, 44529439, 44531776, 44533113, 44534457, 44536369, 44538290, 44539968, 44541348, 44543248, 44545155, 44548160, 44550780, 44552793, 44556352, 44558443, 44560491, 44564544, 44566691, 44568439, 44570138, 44572736, 44575195, 44577804, 44580928, 44582545, 44585436, 44586802, 44589120, 44590382, 44591659, 44594124, 44596599, 44597312, 44598868, 44599336, 44601026, 44602472, 44603555, 44605504, 44607669, 44608138, 44611474, 44613696, 44617008, 44618489, 44621888, 44623584, 44626244, 44630080, 44632603, 44634234, 44638272, 44639987, 44643748, 44644236, 44646464, 44648066, 44650334, 44662784, 44653056, 44654656, 44657537, 44679232, 44683039, 44683604, 44684180, 44687424, 44689869, 44691391, 44692926, 44695616, 44697911, 44699778, 44701656, 44702629, 44703808, 44704563, 44705331, 44706527, 44707735, 44708457, 44709193, 44709784, 44710385, 44710927, 44712000, 44712541, 44713093, 44715616, 44720192, 44722795, 44725411, 44728384, 44730983, 44733531, 44736576, 44739490, 44742424, 44742744, 44744768, 44747656, 44750561, 44750880, 44752960, 44755750, 44761152, 44764107, 44769344, 44772177, 44777536, 44780482, 44785728, 44788657, 44793920, 44796352, 44798795, 44802112, 44804562, 44806990, 44810304, 44812739, 44815186, 44818496, 44820943, 44823373, 44826688, 44828906, 44831135, 44834880, 44838466, 44840300, 44843072, 44844787, 44846513, 44848083, 44851264, 44852880, 44854508, 44855850, 44857203, 44859456, 44860716, 44862943, 44865184, 44867648, 44869636, 44871608, 44875840, 44878964, 44882101, 44884032, 44885601, 44888505, 44892224, 44894744, 44897276, 44900416, 44902457, 44904865, 44908608, 44911092, 44913588, 44916800, 44919333, 44921858, 44924992, 44927389, 44929793, 44931207, 44718152, 44758560, 44767074, 44775018, 44783442, 44791595, 44792818, 44849663, 44941376, 44943757, 44946095, 44949568, 44952149, 44954653, 44957760, 44960255, 44965952, 44969352, 44974144, 44976980, 44979879, 44982336, 44983877, 44986722, 44990528, 44992237, 44994969, 44998720, 45001965, 45003336, 45006912, 45008541, 45010182, 45012126, 45015104, 45017263, 45019434, 45023296, 45025608, 45027696, 45029791, 45031488, 45033480, 45035254, 45037036, 45039680, 45041731, 45043840, 45045958, 45047872, 45049563, 45051707, 45053868, 45056064, 45058156, 45059962, 45061774, 45064256, 45065961, 45067881, 45069759, 45070053, 45070358, 45070630, 45070912, 45071200, 45072448, 45074903, 45077369, 45080640, 45083067, 45084634, 45088832, 45091971, 45095121, 45097024, 45098817, 45101648, 45105216, 45107927, 45110655, 45113408, 45116112, 45118012, 45121600, 45123748, 45441024, 45449216, 45125909, 45129792, 45132905, 45137984, 45141019, 45146176, 45457408, 45465600, 45149991, 45154368, 45158210, 45162560, 45166293, 45170752, 45174473, 45178944, 45182029, 45187136, 45191066, 45195328, 45198428, 45203520, 45207560, 45211712, 45473792, 45481984, 45215345, 45219904, 45223076, 45228096, 45231275, 45236288, 45240038, 45244480, 45490176, 45498368, 45506560, 45514752, 45247027, 45252672, 45256509, 45260864, 45264779, 45269056, 45272840, 45277248, 45522944, 45531136, 45281176, 45285440, 45539328, 45547520, 45555712, 45563904, 45289365, 45293632, 45572096, 45580288, 45588480, 45596672, 45297414, 45301824, 45305176, 45310016, 45313175, 45318208, 45322124, 45326400, 45329862, 45334592, 45338149, 45342784, 45345359, 45347163, 45604864, 45613056, 45350976, 45354628, 45621248, 45629440, 45637632, 45645824, 45359168, 45362189, 45654016, 45662208, 45367360, 45371074, 45670400, 45678592, 45375552, 45378912, 45686784, 45694976, 45703168, 45711360, 45383744, 45385884, 45388035, 45391936, 45394050, 45400128, 45719552, 45727744, 45403946, 45406022, 45735936, 45744128, 45752320, 45760512, 45408320, 45412369, 45416512, 45420551, 45424704, 45427228, 45768704, 45776896, 45785088, 45793280, 45801472, 45809664, 45432896, 45436419, 45817856, 45826048, 45842496, 45846536, 46833664, 46841856, 46850048, 46858240, 46866432, 46874624, 45850688, 45854595, 45858880, 45862650, 45867072, 45871119, 46882816, 46891008, 45875264, 46899200, 46907392, 46915584, 46923776, 46931968, 46940160, 46948352, 46956544, 46964736, 45879322, 45881108, 45883456, 45884718, 45885991, 45888398, 45891648, 45894058, 45896476, 45899840, 45901944, 45903978, 45908032, 45910012, 45912004, 45916224, 45918709, 45921030, 45924416, 45926575, 45928742, 45929012, 45929294, 45932608, 45935096, 45937341, 45940800, 45943956, 45948992, 45952005, 45957184, 45960925, 45965376, 45968384, 45971403, 45973568, 45975048, 45975316, 45975595, 45977576, 45979565, 45981760, 45983596, 45984681, 45985826, 45989952, 45992948, 45998144, 46001347, 46006336, 46008976, 46014528, 46017614, 46022720, 46026313, 46972928, 46981120, 46030912, 46033481, 46039104, 46042451, 46047296, 46049209, 46051132, 46055488, 46057872, 46063680, 46067663, 46071872, 46075208, 46080064, 46083121, 46088256, 46091490, 46096448, 46099095, 46101725, 46104640, 46107620, 46112832, 46115817, 46121024, 46123424, 46125836, 46129216, 46131956, 46137408, 46140273, 46141933, 46145600, 46148627, 46153792, 46155883, 46157993, 46158774, 46159506, 46160183, 46160868, 46989312, 46161984, 46163448, 46164918, 46170176, 46174036, 46178368, 46181392, 46182873, 46184576, 46186560, 46189408, 46190676, 46191853, 46194752, 46196751, 46198034, 46199765, 46202944, 46204764, 46207073, 46211136, 46212639, 46214016, 46215432, 46218173, 46218498, 46219328, 46220825, 46222489, 46223987, 46227520, 46229968, 46233387, 46235712, 46239239, 46240537, 46242379, 46243904, 46245742, 46247316, 46252096, 46253540, 46256147, 46997504, 46257970, 46260288, 46262924, 46264210, 46265761, 46268480, 46272105, 46273416, 46274578, 46276672, 46279716, 47005696, 46280208, 46281755, 46284864, 46286109, 46287211, 47013888, 46288697, 46290286, 46293056, 46294506, 46296789, 46301248, 46304480, 46305930, 46309440, 46310817, 46313661, 46315062, 46317632, 46319023, 46321143, 46325824, 46329592, 46331134, 46334016, 46335506, 46337821, 46339292, 46342208, 46343554, 46345815, 46346151, 46346497, 46347997, 46350400, 46351823, 46353182, 46354626, 46355815, 46358592, 46361720, 46363131, 46366784, 46368140, 46369614, 47022080, 46371391, 46374976, 46377912, 46379486, 46381070, 46383168, 46386301, 46387889, 46391360, 47030272, 46393133, 46394620, 46397536, 46399552, 46402652, 46407744, 46411209, 46415936, 46419976, 46424128, 46426664, 46428354, 46430700, 47038464, 46432320, 46433875, 46436506, 46440512, 46443969, 46445289, 46446471, 46448704, 46449951, 46451407, 46456896, 46459183, 46461481, 46462918, 46465088, 46466500, 46468935, 46470366, 46473280, 46474759, 46477838, 46481472, 46483776, 46485288, 46487617, 46489664, 46492863, 46494314, 46497856, 46499273, 46501565, 46506048, 46509753, 46514240, 46517502, 46519021, 46522432, 46524132, 46528015, 46530624, 46534073, 46535500, 46537076, 46538816, 46542274, 46547008, 46550873, 46555200, 46558384, 46559909, 46563392, 46566065, 46568747, 46571584, 46574192, 46575687, 46577134, 46579776, 46581616, 46583082, 46584502, 46585984, 46587968, 46589375, 46590736, 46592364, 46593943, 46596160, 46597893, 46598182, 46598489, 46600556, 46600961, 46604352, 46606240, 46608146, 46610043, 46612544, 46614423, 46616309, 46618189, 46620736, 46622607, 46624405, 46626208, 46628928, 46630530, 46632169, 46633822, 46637120, 46639793, 46641652, 46645312, 46648402, 46653504, 46656059, 46658623, 46658899, 46659188, 46661696, 46663634, 46665506, 46667331, 46669888, 46671751, 46678080, 47046656, 47054848, 46681697, 46686272, 46689757, 46694464, 46697000, 46697269, 46697559, 46697845, 46698141, 46698397, 46698674, 46698929, 46699204, 46699484, 46699760, 46700040, 46700317, 46700573, 46700851, 46701104, 46701381, 46701710, 46702051, 46702656, 46702997, 46703281, 46703638, 46703924, 46704283, 46704581, 46704939, 46705238, 46705600, 46705888, 46706191, 46706454, 46706741, 46707010, 46707290, 46707559, 46707839, 46708109, 46708390, 46708650, 46708934, 46709201, 46709479, 46709747, 46710037, 46710327, 46710848, 46711135, 46711463, 46711802, 46712132, 46712455, 46713086, 46713357, 46713637, 46713893, 46714171, 46714426, 46714702, 46714958, 46717005, 46717274, 46717532, 46717889, 46718169, 46718533, 46719040, 46719301, 46719587, 46719870, 46720149, 46720422, 46720703, 46720980, 46722107, 46722393, 46722679, 46723832, 46724119, 46724396, 46724746, 46725119, 46725451, 46725755, 46726010, 46726289, 46726572, 46726833, 46727232, 46727516, 46727811, 46728145, 46728465, 46729150, 46729450, 46730151, 46730416, 46730772, 46731060, 46731327, 46731629, 46731919, 46732244, 46733824, 46735424, 46737035, 46737290, 46737572, 46738775, 46739034, 46739317, 46739574, 46741549, 46741826, 46743616, 46745614, 46745903, 46746159, 46746459, 46746738, 46747005, 46747328, 46747618, 46747912, 46749784, 46751808, 46753642, 46754862, 46756104, 46756455, 46756789, 46757164, 46757522, 46757778, 46758044, 46758324, 46758640, 46758916, 46759254, 46759545, 46760000, 46760313, 46760597, 46760856, 46761139, 46761791, 46762051, 46762336, 46762997, 46763382, 46763671, 46764080, 46764358, 46764656, 46764955, 46765522, 46765781, 46766063, 46768192, 46769803, 46770066, 46771647, 46771934, 46772835, 46773193, 46774108, 46774367, 46774751, 46775034, 46776384, 46778035, 46778316, 46778573, 46778854, 46779111, 46780786, 46781065, 46781317, 46783138, 46784576, 46786419, 46786679, 46786961, 46787321, 46787609, 46787932, 46788243, 46788511, 46789475, 46789766, 46790024, 46790959, 46791239, 46792768, 46794078, 46794575, 46795912, 46796198, 46797489, 46797799, 46798085, 46799368, 46799674, 46800960, 46802968, 46803304, 46803561, 46805543, 46805823, 46806663, 46806967, 46807291, 46808142, 46808535, 46809152, 46810687, 46810945, 46811226, 46812784, 46813064, 46813368, 46814470, 46814969, 46815489, 46817344, 46818456, 46820262, 46820566, 46822589, 46822914, 46823231, 46825536, 46827338, 46827625, 46827935, 46830140, 46832319, 46832884, 45906024, 45955028, 46011632, 46036066, 46038372, 46094125, 46110610, 46118811, 46134808, 46151689, 46166443, 46175461, 46201360, 46266242, 46298243, 46323331, 46324995, 46325334, 46332954, 46333207, 46404668, 46413078, 46421698, 46422083, 46503334, 46511564, 46520817, 46521176, 46521559, 46521943, 46529557, 46529904, 46544203, 46544604, 46545029, 46545431, 46545856, 46546299, 46552288, 46552623, 46675361, 47071296, 47073557, 47073928, 47074322, 47074570, 47074842, 47079488, 47083353, 47085385, 47087680, 47089468, 47091219, 47093154, 47095872, 47097519, 47099121, 47100209, 47101258, 47102229, 47104064, 47105489, 47106865, 47108588, 47110320, 47110764, 47111217, 47112256, 47113002, 47114776, 47116560, 47117459, 47118371, 47120448, 47121523, 47122249, 47122985, 47123359, 47123696, 47123982, 47124278, 47124553, 47124854, 47125114, 47125399, 47125691, 47126004, 47128640, 47130740, 47131127, 47131525, 47131815, 47132112, 47133037, 47133970, 47134230, 47134498, 47136832, 47138335, 47139729, 47141135, 47142803, 47144484, 47145024, 47145301, 47146657, 47148022, 47149049, 47150026, 47151506, 47153216, 47154963, 47156723, 47161408, 47163238, 47165077, 47165746, 47169600, 47173357, 47177792, 47179293, 47180801, 47181049, 47181320, 47181582, 47181868, 47182124, 47182402, 47182708, 47183034, 47185984, 47188020, 47189132, 47190268, 47191523, 47194176, 47195636, 47197115, 47199123, 47201158, 47201461, 47202368, 47205457, 47208499, 47209354, 47210560, 47212511, 47214473, 47215725, 47216936, 47217280, 47217726, 47218752, 47221167, 47223592, 47226944, 47229236, 47231480, 47233737, 47234039, 47235136, 47238364, 47243328, 47246729, 47249422, 47251520, 47253317, 47255962, 47259712, 47262124, 47264545, 47267904, 47269883, 47271169, 47272465, 47273780, 47276096, 47277938, 47279790, 47281125, 47282468, 47284288, 47285929, 47287885, 47289850, 47292480, 47294451, 47296296, 47298150, 47300672, 47302569, 47304846, 47308864, 47310758, 47312661, 47313568, 47314485, 47315604, 47317056, 47319755, 47323486, 47325248, 47329076, 47333440, 47337032, 47338956, 47341632, 47344321, 47347020, 47347873, 47348737, 47349824, 47350448, 47351424, 47352411, 47352996, 47353593, 47358016, 47361771, 47363677, 47366208, 47367307, 47368414, 47370339, 47372280, 47374400, 47376328, 47379334, 47382592, 47384718, 48111616, 48119808, 47386852, 47390784, 47392940, 47395791, 47398976, 47402979, 47407168, 47410550, 47415360, 47418031, 47423552, 47426347, 47431744, 47435482, 47439936, 47441746, 47443565, 47448128, 47452107, 47456320, 47459445, 47461132, 47462830, 47464512, 47465665, 47467610, 47472704, 47476241, 47480896, 47483820, 48128000, 48136192, 48144384, 48152576, 47486756, 47489088, 47491039, 47497280, 47500672, 47505472, 47508754, 47511143, 47513664, 47517499, 48160768, 48168960, 47521856, 47524445, 47527045, 47530048, 47532498, 47538240, 47541540, 47546432, 47549059, 47551200, 47554624, 47557111, 47562816, 47566090, 47571008, 47574699, 47579200, 47580685, 47582180, 47583969, 47587392, 47589670, 47591960, 47595584, 47598137, 47599653, 47601181, 47603776, 47605347, 47607896, 47611968, 47613525, 47615094, 47617006, 47620160, 47621630, 47623109, 47628352, 47630952, 47631904, 47632868, 47636544, 47638649, 47641035, 47644736, 47648295, 47652928, 47655709, 47658499, 47661120, 47663343, 47665619, 47669312, 47671602, 47673905, 47677504, 47680229, 47685696, 47688830, 47693888, 47696439, 47698493, 47702080, 47705837, 47710272, 47713600, 47718464, 47720778, 47723105, 47726656, 47728773, 47730638, 47732515, 47734848, 47736918, 47738999, 47743040, 47745068, 47747105, 47751232, 47754083, 47756619, 47759424, 47761334, 47763258, 47767616, 47769943, 47772542, 47775808, 47778073, 47780348, 47784000, 47786452, 47788923, 47792192, 47794113, 47796044, 47800384, 47802805, 47805448, 47808576, 47810117, 47811616, 47813920, 47816768, 47818608, 47820399, 47822193, 47824960, 47826431, 47827857, 47829867, 47833152, 47835075, 47836948, 47838601, 47841344, 47842556, 47843777, 47845968, 47849536, 47851410, 47853240, 47854949, 47857728, 47859192, 47860665, 47862694, 47865920, 47868611, 47871311, 47874112, 47876155, 47877731, 47879317, 47882304, 47884022, 47885911, 47887811, 47890496, 47892514, 47895078, 47898688, 47901042, 47903408, 47906880, 47909346, 47912055, 47915072, 47916395, 47917676, 47919443, 47923264, 47926277, 47931456, 47934192, 47936636, 47939648, 47941777, 47943106, 47944446, 47947840, 47950184, 47952783, 47956032, 47957755, 47959462, 47961179, 47964224, 47966119, 47968950, 47972416, 47974819, 47977232, 47980608, 47982372, 47984212, 47986062, 47988800, 47990653, 47992003, 47993362, 47995068, 47996992, 47998801, 48000621, 48002062, 48003514, 48005184, 48006588, 48008622, 48010666, 48013376, 48015756, 48018495, 48021568, 48023647, 48025680, 48027484, 48029760, 48031975, 48034199, 48037952, 48039851, 48041605, 48043370, 48046144, 48047904, 48049740, 48051594, 48054336, 48055997, 48057947, 48062528, 48065873, 48070720, 48073844, 48078912, 48080937, 48082969, 48084631, 48086305, 48086637, 48087104, 48089281, 48091467, 48093075, 48095296, 48098132, 48100995, 48103488, 48104816, 48107157, 48109508, 48109808, 47159550, 47166423, 47168184, 47168478, 47168783, 47169069, 47177125, 47177398, 48185408, 48188899, 48193600, 48195383, 48197175, 48197508, 48197852, 48198190, 48198539, 48201792, 48203604, 48209984, 48213312, 48218176, 49225728, 48221436, 48226368, 48230289, 48234560, 48237094, 48239639, 48242752, 48245478, 48250944, 48254116, 48255994, 48259136, 48260636, 48262144, 48264377, 48267328, 48269674, 48272033, 48275520, 48277269, 48278874, 48280489, 48282049, 48283712, 48285343, 48286983, 48291904, 48295091, 48297076, 48300096, 48302989, 48305893, 48308288, 48310454, 48312905, 48316480, 48318425, 48320385, 48324672, 48327445, 48329425, 48332864, 48335416, 48337979, 48341056, 48343162, 48345487, 48349248, 48351120, 48353003, 48355143, 48357440, 48360169, 48362910, 48365632, 48368019, 48370101, 48373824, 48375816, 48377819, 48378122, 48378437, 48382016, 48383979, 48385634, 48390208, 48393274, 48398400, 48400455, 48402519, 48404248, 48406592, 48408271, 48409958, 48411975, 48414784, 48416676, 48418588, 48420561, 48422976, 48425299, 48427635, 48431168, 48433394, 48435308, 48439360, 48441493, 48443636, 48445254, 48447552, 48449679, 48451817, 48455744, 48457698, 48459837, 48461980, 48463936, 48465744, 48467297, 48468859, 48472128, 48473781, 48475355, 48476941, 48478283, 48480320, 48482045, 48483779, 48485447, 48488512, 48490001, 48491502, 48493194, 48496704, 48498472, 48500246, 48501845, 48504896, 48506530, 48508174, 48509866, 48511568, 48513088, 48514457, 48516078, 48517708, 48519373, 48521280, 48522887, 48524500, 48525589, 48526704, 48529472, 48531185, 48533320, 48535535, 48537664, 48539410, 48541355, 48543258, 48545856, 48547335, 48549245, 48551165, 48554048, 48555662, 48557503, 48562240, 48566223, 48570432, 48572239, 48574034, 48575459, 48578624, 48580456, 48582275, 48584099, 48586816, 48588384, 48589959, 48595008, 48597809, 48599901, 48603200, 48604767, 48606345, 48608066, 48611392, 48613186, 48614989, 48616741, 48619584, 48620966, 48622358, 48624277, 48627776, 48629601, 48631368, 48632970, 48635968, 48637495, 48639034, 48640445, 48641865, 48644160, 48645907, 48647773, 48649651, 48652352, 48653862, 48655279, 48656706, 48658285, 48660544, 48661834, 48663131, 48664595, 48666070, 48668736, 48670274, 48672183, 48674157, 48676928, 48678403, 48679947, 48681500, 48681817, 48682144, 48682450, 48682768, 48685120, 48687127, 48689275, 48691435, 48693312, 48694906, 48697935, 48701504, 48703384, 48705279, 48707284, 48709696, 48711757, 48713831, 48717888, 48720177, 48722694, 48726080, 48727817, 48729565, 48734272, 48736961, 48738606, 48740260, 48742464, 48744465, 48746909, 48750656, 48753064, 48755482, 48758848, 48760515, 48762636, 48764768, 48767040, 48768628, 48770320, 48772023, 48775232, 48778083, 48780531, 48783424, 48785454, 48787546, 48789126, 48791616, 48793570, 48795535, 48797096, 48799808, 48801470, 48803143, 48808000, 48811431, 48816192, 48818794, 48820880, 48824384, 48826962, 48832576, 48836246, 48840768, 48844288, 48848960, 48851006, 48853062, 48857152, 48860188, 48865344, 48868669, 48873536, 48877372, 48881728, 48884593, 48889920, 48893255, 48898112, 48901623, 48901914, 48902217, 48906304, 48909728, 48911576, 48914496, 48917383, 48922688, 48926141, 48930880, 48934420, 48939072, 48942493, 48947264, 48950284, 48955456, 48959213, 48963648, 48965945, 48968259, 48971840, 48974102, 48976878, 48980032, 48981731, 48983437, 48985216, 48988224, 48990491, 48992773, 48996416, 48999197, 49001665, 49004608, 49006784, 49008981, 49012800, 49015211, 49017462, 49019788, 49020992, 49022018, 49023551, 49025096, 49029184, 49031277, 49037376, 49039891, 49041139, 49042397, 49045568, 49047548, 49049876, 49052214, 49052646, 49233920, 49242112, 49053760, 49056935, 49060123, 49060394, 49061952, 49064727, 49067515, 49070144, 49072696, 49078336, 49081166, 49086528, 49089642, 49091158, 49094720, 49097500, 49102912, 49105707, 49111104, 49114177, 49250304, 49258496, 49119296, 49122210, 49127488, 49131406, 49135680, 49138979, 49143872, 49146667, 49149472, 49152064, 49154068, 49156956, 49160256, 49162790, 49165333, 49168448, 49171071, 49176640, 49179413, 49181664, 49184832, 49186314, 49187808, 49190027, 49193024, 49194898, 49196727, 49198322, 49201216, 49203180, 49205161, 49207041, 49209408, 49211364, 49213336, 49215373, 49217600, 49219760, 49221930, 48206924, 48209097, 48209403, 48216562, 48216867, 48217184, 48217487, 48217803, 48225494, 48225807, 48233964, 48242356, 48248640, 49274944, 49278383, 49283136, 49286206, 49291328, 49294507, 49299520, 49302227, 49307712, 49311481, 49315904, 49318765, 49324096, 49326933, 49329781, 49332288, 49334503, 49336519, 49338549, 49340480, 49342125, 49343991, 49345852, 49348672, 49350552, 49352444, 49356864, 49359983, 49365056, 49367419, 49369790, 49373248, 49375498, 49377516, 49381440, 49383699, 49385967, 49389632, 49392121, 49394148, 49396188, 49396499, 49397824, 49401099, 49403357, 49406016, 49407967, 49414208, 49417305, 49419317, 49422400, 49424151, 49425757, 49430592, 49433541, 49435731, 49438784, 49440926, 49443079, 49446976, 49449111, 49451951, 49455168, 49457988, 49463360, 49465974, 49471552, 49474595, 49479744, 49483446, 49487936, 49490787, 49496128, 49499777, 49502575, 49504320, 49505686, 50315264, 49509081, 49512512, 49514695, 49516697, 49518711, 49520704, 49522593, 49524895, 49528896, 49531703, 49534518, 49537088, 49539100, 49545280, 49548717, 49553472, 49556278, 49561664, 49564527, 49566796, 49569856, 49572812, 49578048, 49580362, 50323456, 50331648, 49582684, 49583636, 49586240, 49588209, 49590171, 49590976, 49591791, 49594432, 49596388, 49598075, 49599733, 49600967, 49602624, 49605258, 49607900, 49610816, 49613361, 49615287, 49617227, 49617543, 49619008, 49620428, 49621858, 49623371, 49624953, 49627200, 49628861, 49631728, 49635392, 49637631, 49639881, 49643584, 49645616, 49647654, 49649704, 49651776, 49653523, 49654931, 49656350, 49657668, 49658996, 49659433, 49659968, 49661302, 49662646, 49668160, 49671103, 49672498, 49676352, 49678965, 49681592, 49684544, 49686135, 49688206, 49690285, 49692736, 49694625, 49695981, 49697347, 49700928, 49703506, 49705138, 49706791, 49709120, 49710738, 49713451, 49716175, 49717312, 49718210, 49719237, 49720274, 49721560, 49722856, 49724065, 49725504, 49726507, 49727520, 49727907, 49728304, 49728692, 49729090, 49729872, 49730662, 49731957, 49733696, 49735480, 49738639, 49741888, 49743633, 49745333, 49747045, 49750080, 49752423, 49754762, 49758272, 49759684, 49761109, 49761553, 49762007, 49764138, 49766464, 49767797, 49769144, 49774656, 49777670, 49779055, 49780451, 49782848, 49785043, 49791040, 49794927, 49799232, 49803180, 49803813, 49804456, 49807424, 49809141, 49811422, 49815616, 49818581, 49821558, 49823808, 49825442, 49827105, 49828777, 49832000, 49834348, 49840192, 49844032, 49844670, 49845320, 49846243, 49848384, 49850498, 49852624, 49856576, 49858974, 49861365, 49864768, 49866461, 49868164, 49872960, 49875826, 49881152, 49883799, 49885461, 49887134, 49889344, 49891011, 49893090, 49895179, 49897536, 49899793, 49902315, 49905728, 49909166, 49913920, 49916942, 49922112, 49924610, 49927119, 49930304, 49932101, 49934781, 49938496, 49940097, 49941710, 49946688, 49949792, 49951741, 49954880, 49958139, 49963072, 49965463, 49967863, 49971264, 49973945, 49976350, 49979456, 49981626, 49983809, 49987648, 49989778, 49992326, 50339840, 50348032, 49995840, 49998233, 50000639, 50004032, 50005790, 50008324, 50012224, 50014941, 50020416, 50023119, 50028608, 50032394, 50356224, 50364416, 50036800, 50039264, 50044992, 50048824, 50053184, 50056911, 50061376, 50064978, 50069568, 50073418, 50077760, 50080209, 50082672, 50085952, 50088453, 50090999, 50372608, 50380800, 50094144, 50097317, 50102336, 50105136, 50107946, 50110528, 50112900, 50115535, 50118720, 50121147, 50123584, 50125163, 50126912, 50128325, 50129747, 50132056, 50135104, 50139080, 50143296, 50145658, 50148029, 50151488, 50153717, 50159680, 50162668, 50167872, 50170937, 50176064, 50178841, 50184256, 50388992, 50397184, 50187803, 50192448, 50196426, 50200640, 50203414, 50208832, 50211555, 50214016, 50217024, 50219562, 50222112, 50225216, 50227175, 50229661, 50405376, 50413568, 50233408, 50235514, 50237629, 50241600, 50243534, 50246335, 50249792, 50252800, 50257984, 50260625, 50266176, 50269911, 50274368, 50276109, 50277858, 50282560, 50284904, 50287730, 50290752, 50293494, 50296248, 50298944, 50301251, 50307136, 50310061, 50430016, 50433286, 50438208, 50441625, 50443548, 50446400, 50449121, 50454592, 50457348, 50460116, 50462784, 50464352, 50466018, 50467693, 50469256, 50470976, 50472734, 50474503, 50479168, 50482231, 50487360, 50490173, 50492064, 50495552, 50497960, 50500377, 50503744, 50505587, 50507558, 50509537, 50510222, 50511936, 50513499, 50515075, 50517120, 50520128, 50521444, 50522770, 50525045, 50528320, 50529819, 50531324, 50532972, 50536512, 50538731, 50540961, 50542382, 50544704, 50548258, 50552896, 50554820, 50556755, 50561088, 50563679, 50565788, 50569280, 50571536, 50573803, 50577472, 50579811, 50580211, 50580618, 50581039, 50581470, 50585664, 50588199, 50590738, 50593856, 50595224, 50596602, 50602048, 50605785, 50606822, 50607869, 50610240, 50612208, 50614298, 50618432, 50621799, 51470336, 51478528, 50625178, 50626624, 50627634, 50630398, 50634816, 50638129, 50643008, 50645239, 50651200, 50654778, 50659392, 50661510, 50662971, 50665098, 50667584, 50670318, 51486720, 51494912, 50673379, 50675776, 50677942, 50680507, 50683968, 50686279, 50688601, 50692160, 50694680, 50696925, 50700352, 50702802, 50705261, 50708544, 50711037, 50713170, 50716736, 50718723, 50720726, 50722750, 50724928, 50727052, 50729183, 50733120, 50735244, 50737353, 50741312, 50743654, 50746007, 50749504, 50751646, 50754192, 50757696, 50760051, 50762418, 50765888, 50767813, 50769742, 50771683, 50774080, 50775337, 50777066, 50778862, 50779903, 50781014, 50782272, 50783235, 50784770, 50786385, 50788201, 50790464, 50793047, 50795639, 50798656, 50801489, 50806848, 50809639, 50815040, 50817868, 50820287, 50823232, 50826757, 50831424, 50833987, 50836563, 50839616, 50841630, 50843960, 50847808, 50850232, 50852666, 50854021, 50856000, 50857310, 50858631, 50859866, 50861113, 50862326, 50864192, 50865518, 50866856, 50869178, 50872384, 50874182, 50875989, 50877623, 50880576, 50882157, 50883750, 50885319, 50888768, 50891025, 50893288, 50893762, 50894441, 50896960, 50900364, 50905152, 50908818, 50913344, 50917126, 50917643, 50918610, 50919680, 50921536, 50923615, 50927518, 50929728, 50930877, 50932540, 50934229, 50937920, 50941368, 50943023, 50946112, 50947584, 50949707, 50954304, 50957674, 50958697, 50962496, 50963670, 50966577, 50967765, 50970688, 50971834, 50974444, 50975957, 50978880, 50980534, 50982769, 50987072, 50990347, 50991541, 50995264, 50996312, 50999004, 51003456, 51007002, 51008877, 51011648, 51013547, 51017511, 51019840, 51022026, 51023192, 51026040, 51028032, 51030648, 51036224, 51039525, 51044416, 51047838, 51048761, 51052608, 51054116, 51055665, 51057032, 51060800, 51062786, 51066546, 51068992, 51071070, 51072551, 51077184, 51079228, 51081924, 51085376, 51089044, 51090058, 51092333, 51093568, 51095625, 51096810, 51099770, 51101760, 51104944, 51109952, 51113825, 51114332, 51118144, 51119393, 51122819, 51126336, 51130399, 51131851, 51134528, 51135718, 51138704, 51142720, 51145403, 51146767, 51148143, 51150912, 51153346, 51154358, 51156138, 51159104, 51160943, 51163582, 51167296, 51169934, 51172630, 51175488, 51177406, 51179332, 51181270, 51183680, 51185612, 51187275, 51191872, 51194997, 51198082, 51200064, 51201493, 51202709, 51203940, 51204716, 51205505, 51206789, 51208256, 51209165, 51210086, 51210921, 51211768, 51213054, 51503104, 51511296, 51216448, 51219885, 51224640, 51228390, 51232832, 51236794, 51241024, 51244835, 51249216, 51251614, 51257408, 51261403, 51265600, 51269609, 51273792, 51277513, 51281984, 51285773, 51290176, 51292857, 51519488, 51527680, 51298368, 51302145, 51306560, 51310460, 51535872, 51544064, 51314752, 51318805, 51322944, 51326282, 51331136, 51335114, 51339328, 51341877, 51552256, 51560448, 51347520, 51351355, 51355712, 51358155, 51363904, 51367871, 51372096, 51376029, 51380288, 51382463, 51568640, 51576832, 51585024, 51593216, 51384648, 51388480, 51391010, 51396672, 51400573, 51404864, 51601408, 51609600, 51617792, 51625984, 51408757, 51413056, 51415781, 51421248, 51424537, 51429440, 51432075, 51437632, 51440453, 51445824, 51449677, 51454016, 51457416, 51462208, 51464828, 51467304, 50451852, 50648039, 51642432, 51646330, 51650624, 51652637, 51654661, 51658816, 51661809, 51667008, 51670213, 51675200, 52682752, 52690944, 52699136, 52707328, 51678363, 51683392, 51686715, 51691584, 52715520, 52723712, 51695592, 51699776, 51703766, 51707968, 52731904, 52740096, 51711489, 51716160, 51718908, 51724352, 52748288, 52756480, 51727723, 51732544, 51734935, 51740736, 51744547, 51748928, 51752430, 51753457, 51757120, 51760844, 51765312, 51769146, 51773504, 51777242, 51781696, 51785624, 51789888, 51792925, 51795072, 51795391, 51795722, 51796008, 51796302, 51796580, 51796870, 51797136, 51797414, 51798080, 51798403, 51802026, 51806272, 51809290, 51814464, 51817289, 51822656, 51826052, 51830848, 51834204, 51839040, 51841025, 51843022, 51847232, 51850139, 51852202, 51855424, 51858052, 51860693, 51863616, 51865728, 51868318, 51871808, 51873745, 51875693, 51880000, 51882541, 51884562, 51888192, 51890775, 51893373, 51896384, 51898341, 51900765, 51904576, 51906847, 51909130, 51912768, 51915473, 51917687, 51920960, 51922886, 51924823, 51929152, 51931352, 51933339, 51937344, 51939930, 51942529, 51945536, 51947481, 51949405, 51951341, 51953728, 51955669, 51957615, 51959576, 51961920, 51963981, 51965963, 51970112, 51972249, 51974397, 51978304, 51980546, 51982538, 51986496, 51988849, 51991217, 51994688, 51996800, 51998728, 52000665, 52002880, 52004875, 52007045, 52011072, 52013611, 52016160, 52019264, 52021191, 52023173, 52025166, 52027456, 52029518, 52031447, 52035648, 52038121, 52040606, 52042032, 52043840, 52045550, 52047270, 52049486, 52052032, 52054022, 52056023, 52057636, 52060224, 52062938, 52065664, 52068416, 52070296, 52071865, 52073440, 52076608, 52078635, 52080812, 52084800, 52087213, 52089636, 52091246, 52092992, 52094470, 52095956, 52097126, 52101184, 52104323, 52109376, 52111263, 52113159, 52114518, 52117568, 52119192, 52120827, 52121726, 52122637, 52125760, 52129722, 52130770, 52133952, 52135717, 52138549, 52139863, 52141380, 52142144, 52144418, 52145843, 52148159, 52764672, 52150336, 52151843, 52153361, 52155538, 52158528, 52160801, 52163080, 52164644, 52166720, 52168108, 52170876, 52171841, 52174912, 52176066, 52178705, 52180167, 52183104, 52184176, 52187362, 52191296, 52194302, 52195273, 52196733, 52198041, 52199488, 52201010, 52202540, 52204004, 52207680, 52210413, 52213157, 52215872, 52218339, 52224064, 52227450, 52232256, 52235169, 52237352, 52240448, 52242760, 52245018, 52248640, 52250916, 52252955, 52256832, 52259839, 52262800, 52265024, 52266818, 52268756, 52270649, 52273216, 52275087, 52276985, 52278925, 52281408, 52283405, 52286062, 52289600, 52292054, 52294519, 52297792, 52300107, 52302101, 52304105, 52305984, 52307564, 52310763, 52314176, 52316519, 52318872, 52322368, 52325200, 52327350, 52330560, 52332296, 52334041, 52338752, 52341219, 52342824, 52344440, 52346944, 52348691, 52350157, 52351633, 52355136, 52356923, 52358344, 52359777, 52363328, 52365274, 52365598, 52365933, 52367582, 52369243, 52371520, 52372967, 52374809, 52376662, 52377168, 52377624, 52379712, 52381278, 52383388, 52387904, 52390590, 52393287, 52396096, 52398274, 52400501, 52404288, 52406620, 52408962, 52412480, 52414747, 52417116, 52420672, 52423063, 52425465, 52428864, 52431168, 52433214, 52435270, 52435552, 52437056, 52438359, 52439673, 52441263, 52445248, 52448684, 52453440, 52455387, 52457346, 52459233, 52461632, 52464230, 52469824, 52473295, 52478016, 52479491, 52481102, 52482759, 52484430, 52486208, 52487854, 52489119, 52490402, 52491763, 52494400, 52496518, 52498549, 52500015, 52502592, 52504053, 52505529, 52506783, 52508055, 52510784, 52512463, 52513948, 52515666, 52516919, 52518976, 52521553, 52524143, 52527168, 52529392, 52531530, 52535360, 52537562, 52539708, 52543552, 52545373, 52547334, 52549099, 52551744, 52553521, 52555489, 52557244, 52559936, 52561703, 52563734, 52565639, 52568128, 52569876, 52571880, 52573719, 52576320, 52578367, 52580351, 52582117, 52584512, 52586286, 52588305, 52592704, 52596065, 52597735, 52600896, 52602380, 52603872, 52609088, 52612139, 52613720, 52615258, 52617280, 52619072, 52621271, 52623479, 52625472, 52627242, 52629108, 52630982, 52633664, 52635307, 52638035, 52641856, 52644153, 52646462, 52650048, 52652088, 52653778, 52655476, 52656790, 52658240, 52659716, 52661201, 52662723, 52664254, 52666432, 52667751, 52669403, 52671064, 52672397, 52674624, 52675960, 52677308, 52679074, 52680848, 51665003, 51673364, 51714225, 51722268, 51730107, 51738739, 51739007, 51754500, 51812316, 51820124, 51927011, 51935339, 51967953, 51976629, 51984541, 52033387, 52098301, 52188335, 52466839, 52781120, 52785153, 52789312, 52792840, 52797504, 52800466, 52805696, 52809227, 52813888, 52817106, 52822080, 52825909, 52830272, 52833090, 52838464, 52841583, 52844712, 52846656, 52848263, 52849942, 52851630, 52854848, 52856908, 52859361, 52863040, 52866412, 52871232, 52874743, 52879424, 52882576, 52887616, 52890797, 52895808, 52898789, 52901063, 52904000, 52906143, 52908300, 52912192, 52914914, 52915242, 52915580, 52920384, 52922881, 52925674, 52928576, 52931744, 52936768, 52939923, 52944960, 52947748, 52953152, 52956548, 52961344, 52963763, 52966192, 52969536, 52972249, 52974282, 52977728, 52980004, 52982290, 52983890, 52985920, 52988482, 52991109, 52994112, 52996720, 52999291, 53002304, 53004353, 53006414, 53010496, 53013242, 53015517, 53018688, 53021261, 53023897, 53026880, 53029484, 53032037, 53035072, 53037618, 53040228, 53043264, 53045839, 53048458, 53051456, 53054048, 53056704, 53059648, 53061617, 53063731, 53067840, 53070834, 53076032, 53079507, 53084224, 53086166, 53088178, 53092416, 53821440, 53829632, 53096177, 53100608, 53103227, 53105031, 53108800, 53110772, 53112755, 53114647, 53116992, 53118703, 53120424, 53122528, 53125184, 53126840, 53128507, 53133376, 53136049, 53141568, 53144453, 53149760, 53152908, 53157952, 53160639, 53163064, 53165503, 53165783, 53166144, 53166463, 53166791, 53167107, 53167433, 53169704, 53174336, 53176655, 53178990, 53182528, 53185060, 53187501, 53190720, 53192966, 53195228, 53196775, 53198912, 53201783, 53207104, 53209924, 53215296, 53217922, 53220557, 53221357, 53222168, 53223488, 53224321, 53227388, 53231680, 53234894, 53239872, 53242778, 53245692, 53248064, 53249587, 53250625, 53251675, 53253391, 53256256, 53259132, 53261307, 53264448, 53267183, 53269462, 53272640, 53275307, 53277983, 53280832, 53283318, 53285851, 53289024, 53291584, 53294154, 53295515, 53297216, 53297702, 53298201, 53299934, 53301673, 53305408, 53307274, 53307545, 53837824, 53846016, 53307829, 53313600, 53317121, 53321792, 53325311, 53329984, 53332560, 53335125, 53338176, 53341441, 53346368, 53348199, 53350039, 53351672, 53854208, 53862400, 53354560, 53357729, 53360966, 53362752, 53364386, 53367617, 53370944, 53372358, 53373781, 53374620, 53375468, 53375839, 53376221, 53376580, 53376950, 53377300, 53377661, 53378027, 53378400, 53379136, 53379499, 53379864, 53380239, 53380604, 53380979, 53383267, 53387328, 53389893, 53392468, 53395520, 53398207, 53400141, 53402089, 53403712, 53405123, 53407759, 53411904, 53413675, 53415453, 53417355, 53420096, 53422972, 53428288, 53431697, 53436480, 53437958, 53439444, 53440985, 53442535, 53444672, 53446307, 53448050, 53452864, 53455879, 53870592, 53878784, 53461056, 53464438, 53469248, 53471008, 53472777, 53473977, 53477440, 53480656, 53485632, 53487440, 53489259, 53491684, 53493824, 53495007, 53496200, 53499034, 53502016, 53503943, 53505881, 53508000, 53510208, 53512825, 53515450, 53518400, 53521095, 53522545, 53524003, 53524889, 53526592, 53886976, 53530649, 53534784, 53538567, 53539080, 53539601, 53540324, 53541057, 53542976, 53544541, 53547777, 53551168, 53553079, 53555407, 53559360, 53562149, 53563719, 53567552, 53569727, 53571279, 53572810, 53575744, 53577082, 53578429, 53583936, 53586982, 53592128, 53595032, 53597070, 53600320, 53602660, 53605013, 53608512, 53610686, 53612808, 53616704, 53620028, 53624896, 53626748, 53628613, 53633088, 53635787, 53637417, 53639060, 53641280, 53642961, 53645865, 53649472, 53652047, 53654635, 53654902, 53655180, 53657664, 53659350, 53661674, 53665856, 53668598, 53674048, 53676790, 53682240, 53684954, 53687676, 53690432, 53691963, 53693527, 53695101, 53698624, 53702307, 53704276, 53706816, 53708857, 53710907, 53715008, 53718872, 53720821, 53723200, 53724990, 53727641, 53729119, 53731392, 53733305, 53737091, 53739584, 53741742, 53743665, 53747776, 53750033, 53755968, 53759733, 53895168, 53903360, 53764160, 53766213, 53768276, 53772352, 53911552, 53919744, 53775581, 53776926, 53780544, 53782822, 53785112, 53788736, 53791017, 53796928, 53800692, 53927936, 53805120, 53806773, 53808491, 53813312, 53816461, 53818531, 52803439, 52835922, 52853678, 52869918, 52950546, 53138869, 53147582, 53155580, 53449803, 53752304, 53778282, 52918066, 53204665, 53212754, 53944384, 53947732, 53952576, 53955086, 53957611, 53960768, 53963432, 53965411, 53968960, 53970521, 53972085, 53973572, 53977152, 53980008, 53985344, 53988370, 53993536, 53995734, 53997943, 54001728, 54003786, 54005759, 54009920, 54012763, 54015618, 54015931, 54016254, 54018112, 54019748, 54021546, 54023354, 54026304, 54027946, 54029542, 54031492, 54034496, 54038099, 54039713, 54042688, 54044253, 54046666, 54050880, 54054811, 54056214, 54059072, 54060687, 54062713, 54064176, 54067264, 54068967, 54071055, 54075456, 54077877, 54080044, 54083648, 54086505, 54091840, 54094538, 54097245, 54100032, 54101568, 54104234, 54108224, 54110451, 54112695, 54114182, 54116416, 54118531, 54120663, 54122143, 54124608, 54127347, 54132800, 54136162, 54140992, 54143999, 54149184, 54153009, 54157376, 54158866, 54160365, 54162409, 54165568, 54167061, 54168565, 54169735, 54170915, 54172132, 54173760, 54174767, 54175785, 54178296, 54181952, 54185309, 54190144, 54193904, 54198336, 54200969, 54203611, 54206528, 54208452, 54214720, 54218701, 54220128, 54984704, 54992896, 54222912, 54224903, 54226905, 54231104, 54233315, 54234621, 54235938, 54237158, 54239296, 54240565, 55001088, 55009280, 54241962, 54244553, 54247488, 54248739, 54250009, 54252498, 54255680, 54258198, 54260723, 54263872, 54266391, 54268804, 54272064, 54273464, 54274876, 54277494, 54280256, 54282363, 54283461, 54284578, 54288448, 54291186, 54293044, 54294915, 54296640, 54298110, 54299533, 54300958, 54304832, 54306255, 54307978, 54310570, 54313024, 54314516, 54317663, 54321216, 54324151, 54324410, 54324688, 54324945, 54325225, 54325511, 54325792, 54326077, 54326356, 54326614, 54326894, 54327151, 54327430, 54327687, 54327967, 54328225, 54328504, 54328787, 54329408, 54329691, 54329971, 54330229, 54330508, 54330767, 54331047, 54331334, 54331615, 54331871, 54332152, 54332410, 54332690, 54332977, 54333256, 54333544, 54333825, 54334083, 54334364, 54334623, 54334905, 54335161, 54335441, 54335700, 54335980, 54336265, 54336544, 54336828, 54337108, 54337600, 54337882, 54338140, 54338420, 54338754, 54339097, 54339430, 54339775, 54340053, 54340384, 54340674, 54341042, 54341345, 54341713, 54342004, 54342370, 54342659, 54343025, 54343284, 54343564, 54343850, 54344127, 54344384, 54344664, 54344997, 54345341, 54345792, 54346160, 54346462, 54346829, 54347086, 54347367, 54347654, 54347934, 54348193, 54348474, 54348808, 54349154, 54349443, 54349809, 54350111, 54350479, 54350738, 54351019, 54351306, 54351588, 54351847, 54352128, 54352388, 54352670, 54352956, 54353237, 54353496, 54353984, 54354319, 54354663, 54354953, 54355322, 54355626, 54355994, 54356252, 54356533, 54356821, 54357103, 54357362, 54357642, 54357933, 54358302, 54358606, 54358974, 54359229, 54359507, 54359795, 54360075, 54360364, 54360645, 54360904, 54361185, 54361445, 54361726, 54362176, 54362458, 54362718, 54363000, 54363333, 54363677, 54363968, 54364335, 54364638, 54365005, 54365263, 54365544, 54365830, 54366112, 54366369, 54366649, 54366982, 54367326, 54367617, 54367985, 54368287, 54368656, 54368915, 54369200, 54369487, 54369767, 54370368, 54370649, 54370983, 54371329, 54371620, 54371988, 54372291, 54372659, 54372916, 54373194, 54373480, 54373756, 54374013, 54374292, 54374624, 54374968, 54375258, 54375626, 54375929, 54376295, 54376590, 54376895, 54377153, 54377431, 54377713, 54377994, 54378560, 54378840, 54379170, 54379508, 54379798, 54380166, 54380469, 54380834, 54381136, 54381502, 54383205, 54386752, 54389173, 54391605, 54394944, 54397157, 54403136, 54406301, 54408320, 54410351, 54410632, 54410923, 54411328, 54411619, 54412867, 54414125, 54416018, 54419520, 54421877, 54424244, 54427712, 54429826, 54431163, 54432509, 54433535, 54434574, 54434868, 54435904, 54437854, 54439814, 54440082, 54440363, 54440620, 54440899, 54441185, 54441465, 54441724, 54442005, 54442338, 54442682, 54442972, 54443338, 54443641, 54444096, 54444355, 54444636, 54444923, 54445204, 54445462, 54445743, 54446076, 54446421, 54446713, 54447082, 54447386, 54447752, 54448012, 54448294, 54448578, 54448860, 54449119, 54449399, 54449732, 54450075, 54450407, 54450751, 54451042, 54451414, 54451716, 54452288, 54452545, 54452825, 54453114, 54453394, 54453652, 54453929, 54454257, 54454596, 54454885, 54455254, 54455557, 54455925, 54456313, 54456715, 54456975, 54457260, 54457516, 54457797, 54458086, 54458368, 54458627, 54458908, 54459241, 54459584, 54459874, 54460480, 54460785, 54461154, 54461434, 54461724, 54461982, 54462259, 54462547, 54462826, 54463084, 54463363, 54463698, 54464044, 54464334, 54464701, 54465004, 54465372, 54465631, 54465908, 54466195, 54466476, 54466735, 54467017, 54467350, 54467694, 54467985, 54468672, 54468976, 54469340, 54469598, 54469879, 54470166, 54470447, 54470705, 54470985, 54471318, 54471662, 54471954, 54472322, 54472626, 54472996, 54473255, 54473536, 54473823, 54474104, 54474362, 54474643, 54474976, 54475317, 54475608, 54475977, 54476278, 54476864, 54477161, 54477523, 54477783, 54478065, 54478352, 54478632, 54478891, 54479172, 54479505, 54479850, 54480140, 54480506, 54480796, 54481163, 54481466, 54481832, 54482103, 54482398, 54482657, 54482938, 54483223, 54483504, 54483763, 54484045, 54484377, 54485056, 54485346, 54485713, 54486015, 54486380, 54486637, 54486919, 54487207, 54487489, 54487748, 54488027, 54488360, 54488704, 54488996, 54489365, 54489656, 54490026, 54490330, 54490699, 54490978, 54491267, 54491524, 54491805, 54492095, 54492379, 54492635, 54493248, 54493550, 54493917, 54494197, 54494486, 54494745, 54495026, 54495313, 54495594, 54495850, 54496131, 54496389, 54496670, 54497004, 54497347, 54497646, 54498010, 54498290, 54498580, 54498838, 54499119, 54499378, 54499659, 54499945, 54500223, 54500510, 54500791, 54501049, 54501440, 54501772, 54502116, 54502418, 54502786, 54503075, 54503372, 54503632, 54503913, 54504200, 54504480, 54504765, 54505047, 54505306, 54505587, 54505843, 54506120, 54506378, 54506652, 54506938, 54507218, 54507476, 54507757, 54508089, 54508433, 54508720, 54509000, 54509258, 54509632, 54509964, 54510310, 54510613, 54510983, 54511241, 54511522, 54511809, 54512089, 54512348, 54512629, 54512960, 54513303, 54513606, 54513974, 54514277, 54514645, 54514904, 54515184, 54515470, 54515750, 54516005, 54516283, 54516616, 54516961, 54517262, 54517824, 54518083, 54518363, 54518650, 54518931, 54519191, 54519473, 54519806, 54520151, 54520455, 54520822, 54521081, 54521362, 54521653, 54521935, 54522194, 54522474, 54522805, 54523150, 54523452, 54523820, 54524078, 54524359, 54524647, 54524929, 54525188, 54525467, 54526016, 54526361, 54526666, 54527035, 54527294, 54527574, 54527862, 54528145, 54528403, 54528683, 54529016, 54529361, 54529664, 54530032, 54530389, 54530646, 54530927, 54531214, 54531495, 54531751, 54532026, 54532284, 54532564, 54532849, 54533131, 54533388, 54533667, 54534208, 54534579, 54534848, 54535136, 54535399, 54535686, 54535944, 54536224, 54536510, 54536790, 54537049, 54537331, 54537634, 54537999, 54538258, 54538538, 54538822, 54539102, 54539360, 54539641, 54539945, 54540313, 54540572, 54540853, 54541137, 54541417, 54541676, 54541956, 54542400, 54542764, 54543023, 54543303, 54543588, 54543867, 54544125, 54544406, 54544707, 54545073, 54545329, 54545609, 54545894, 54546173, 54546431, 54546711, 54547014, 54547380, 54547639, 54547920, 54548203, 54548483, 54548742, 54549023, 54549326, 54549689, 54549951, 54550235, 54550592, 54550889, 54551283, 54551672, 54552005, 54552401, 54553098, 54553354, 54553636, 54553921, 54554202, 54554461, 54554742, 54554998, 54555279, 54555562, 54555842, 54556101, 54556383, 54556642, 54556918, 54557196, 54557472, 54557728, 54558006, 54558261, 54558784, 54559066, 54559345, 54559601, 54559878, 54560134, 54560411, 54560692, 54560969, 54561224, 54561502, 54561758, 54562037, 54562320, 54562597, 54562853, 54563130, 54563386, 54563667, 54563952, 54564233, 54564492, 54564773, 54565033, 54565315, 54565599, 54565878, 54566138, 54566420, 54566976, 54567258, 54567517, 54567799, 54568085, 54568365, 54568648, 54568928, 54569186, 54569467, 54569726, 54570006, 54570263, 54570544, 54570803, 54571083, 54571369, 54571648, 54571906, 54572188, 54572447, 54572727, 54572986, 54573269, 54573527, 54573808, 54574068, 54574349, 54574609, 54575168, 54575454, 54575735, 54575993, 54576275, 54576535, 54576817, 54577102, 54577380, 54577640, 54577922, 54578181, 54578461, 54578745, 54579026, 54579285, 54579566, 54579901, 54580245, 54580577, 54580919, 54581253, 54581599, 54581932, 54582277, 54582611, 54582955, 54583360, 54583703, 54584036, 54584381, 54584715, 54585060, 54585391, 54585734, 54586067, 54586412, 54586746, 54587090, 54587423, 54587767, 54588100, 54588443, 54588777, 54589123, 54589459, 54589806, 54590140, 54590484, 54590817, 54591162, 54591552, 54591843, 54592122, 54592454, 54592735, 54593065, 54593346, 54593677, 54593957, 54594248, 54594552, 54594919, 54595223, 54595587, 54595891, 54596258, 54596562, 54596928, 54597233, 54597602, 54597907, 54598274, 54598577, 54598943, 54599247, 54599744, 54600048, 54600413, 54600717, 54601086, 54601390, 54601756, 54602058, 54602422, 54602725, 54603091, 54603396, 54603762, 54604066, 54604433, 54604738, 54605106, 54605410, 54605778, 54606083, 54606449, 54606754, 54607121, 54607425, 54607936, 54608240, 54608606, 54608910, 54609279, 54609583, 54609946, 54610237, 54610605, 54610897, 54611266, 54611556, 54611925, 54612216, 54612585, 54612876, 54613245, 54613535, 54613902, 54614192, 54614562, 54614854, 54615221, 54615511, 54616128, 54616420, 54616787, 54617078, 54617446, 54617737, 54618105, 54618396, 54618763, 54619053, 54619419, 54619709, 54620075, 54620366, 54620728, 54621019, 54621385, 54621677, 54622043, 54622331, 54622695, 54622984, 54623348, 54623638, 54624320, 54624609, 54624976, 54625265, 54625630, 54625921, 54626289, 54626580, 54626948, 54627238, 54627602, 54627893, 54628258, 54628549, 54628914, 54629205, 54629573, 54629863, 54630229, 54630520, 54630886, 54631176, 54631539, 54631829, 54632512, 54632805, 54633170, 54633457, 54633824, 54634116, 54634483, 54634772, 54635142, 54635433, 54635801, 54636090, 54636456, 54636748, 54637115, 54637407, 54637771, 54638063, 54638425, 54638684, 54638966, 54639249, 54639530, 54639791, 54640074, 54640333, 54640704, 54640989, 54641272, 54641532, 54641814, 54642073, 54642355, 54642640, 54642922, 54643182, 54643463, 54643722, 54644001, 54644286, 54644567, 54644825, 54645107, 54645367, 54645649, 54645934, 54646214, 54646473, 54646753, 54647012, 54647293, 54647550, 54647829, 54648114, 54648393, 54648896, 54649177, 54649434, 54649712, 54649997, 54650278, 54650534, 54650814, 54651070, 54651351, 54651638, 54651918, 54652173, 54652453, 54652712, 54652993, 54653273, 54653554, 54653812, 54654094, 54654354, 54654635, 54654920, 54655202, 54655460, 54655742, 54655999, 54656279, 54656565, 54657088, 54657347, 54657624, 54657882, 54658160, 54658445, 54658727, 54658986, 54659267, 54659526, 54659806, 54660065, 54660345, 54660604, 54660886, 54661170, 54661450, 54661707, 54661987, 54662245, 54662525, 54662810, 54663090, 54663348, 54663626, 54663885, 54664166, 54664422, 54664702, 54665280, 54665559, 54665840, 54666118, 54666376, 54666657, 54666915, 54667194, 54667451, 54667731, 54668015, 54668296, 54668554, 54668833, 54669092, 54669375, 54669634, 54669914, 54670197, 54670478, 54670738, 54671019, 54671277, 54671557, 54671840, 54672122, 54672405, 54672687, 54672945, 54673472, 54673731, 54674013, 54674271, 54674550, 54674835, 54675115, 54675372, 54675654, 54681664, 54684673, 54689856, 54693855, 54698048, 54700875, 54706240, 54709838, 54714432, 55017472, 54717814, 54722624, 54726644, 54730816, 54734046, 54739008, 54742047, 54747200, 54751230, 54755392, 54757868, 54763584, 54766800, 55025664, 54771776, 54774774, 54779968, 54782560, 54785825, 54786102, 54786361, 54786645, 54786925, 54787183, 54787464, 54788160, 54788494, 54788772, 54789062, 54789365, 54789723, 54790080, 54790346, 54790635, 54790931, 54791217, 54791504, 54791800, 54792085, 54792380, 54793139, 54793910, 54794195, 54794490, 54794775, 54795069, 54795354, 54795650, 54795934, 54796352, 54796730, 54797015, 54797310, 54797595, 54797890, 54798173, 54798468, 54798754, 54799048, 54799333, 54799627, 54799913, 54800207, 54800492, 54800788, 54801072, 54801367, 54801653, 54801949, 54802244, 54802528, 54802814, 54803108, 54803394, 54803691, 54803977, 54804544, 54804830, 54805125, 54805411, 54805705, 54805991, 54806287, 54806573, 54806869, 54807226, 54807518, 54807800, 54808083, 54808375, 54808655, 54808946, 54809207, 54809491, 54809759, 54810037, 54810324, 54810621, 54810915, 54811199, 54811481, 54811773, 54812070, 54812357, 54812736, 54813030, 54813317, 54813614, 54813911, 54814198, 54814479, 54814771, 54815059, 54815356, 54815651, 54815936, 54816232, 54816518, 54816813, 54817099, 54817397, 54817685, 54817971, 54818265, 54818552, 54818848, 54819135, 54819431, 54819714, 54820007, 54820302, 54820928, 54821225, 54821512, 54821795, 54822088, 54822375, 54822672, 54822959, 54823256, 54823538, 54823831, 54824194, 54824490, 54824777, 54825063, 54825360, 54825655, 54825941, 54826237, 54826522, 54826807, 54827102, 54827389, 54827686, 54827980, 54828265, 54828551, 54829120, 54829406, 54829701, 54829979, 54830237, 54830520, 54830805, 54831066, 54831403, 54831752, 54832087, 54832433, 54832727, 54833034, 54833339, 54833621, 54833978, 54834338, 54834696, 54834981, 54835243, 54835528, 54835811, 54836073, 54836420, 54836756, 54837312, 54837618, 54837924, 54838208, 54838469, 54838752, 54839035, 54839296, 54839645, 54839982, 54840273, 54840576, 54840862, 54841221, 54841581, 54841942, 54842225, 54842583, 54842940, 54843225, 54843488, 54843771, 54844055, 54844316, 54844578, 54844861, 54845504, 54845852, 54846146, 54846450, 54846755, 54847115, 54847476, 54847838, 54848148, 54848432, 54848718, 54849029, 54849390, 54849678, 54849990, 54850299, 54850585, 54850868, 54851128, 54851412, 54851692, 54851975, 54852259, 54852521, 54852806, 54853068, 54853696, 54853982, 54854292, 54854579, 54854889, 54855176, 54855485, 54855821, 54856169, 54856454, 54856765, 54857058, 54857363, 54857652, 54857962, 54858246, 54858612, 54858977, 54859260, 54859519, 54859803, 54860085, 54860346, 54860630, 54860966, 54861314, 54861888, 54862179, 54862485, 54862848, 54863215, 54863499, 54863761, 54864044, 54864328, 54864590, 54864926, 54865274, 54865618, 54865951, 54866243, 54866547, 54866829, 54867191, 54867553, 54867814, 54868074, 54868383, 54868671, 54868981, 54869271, 54869583, 54870080, 54870367, 54870681, 54870973, 54871254, 54871515, 54871794, 54872077, 54872358, 54872619, 54872902, 54873185, 54873490, 54873776, 54874078, 54874391, 54874695, 54875005, 54875294, 54875606, 54875888, 54876150, 54876430, 54876710, 54876968, 54877257, 54877569, 54877849, 54878272, 54878609, 54878942, 54879285, 54879579, 54879863, 54880158, 54880449, 54880731, 54881011, 54881322, 54881610, 54881892, 54882153, 54882434, 54882718, 54882978, 54883260, 54883523, 54883858, 54884206, 54884498, 54884802, 54885088, 54885396, 54885679, 54885985, 54886464, 54886740, 54886996, 54887275, 54887532, 54887811, 54888090, 54888347, 54888628, 54888908, 54889165, 54889423, 54889701, 54890061, 54890422, 54890747, 54891068, 54891347, 54891709, 54892068, 54892344, 54892601, 54892881, 54893138, 54893418, 54893700, 54894006, 54894656, 54894963, 54895244, 54895547, 54895832, 54896139, 54896425, 54896733, 54897063, 54897405, 54897680, 54897981, 54898265, 54898570, 54898868, 54899176, 54899460, 54899767, 54900051, 54900346, 54900632, 54900929, 54901189, 54901471, 54901753, 54902036, 54902298, 54902848, 54903157, 54903441, 54903744, 54904025, 54904285, 54904568, 54904847, 54905127, 54905388, 54905671, 54905932, 54906215, 54906476, 54906760, 54907093, 54907437, 54907721, 54908028, 54908318, 54908623, 54908908, 54909215, 54909501, 54909811, 54910147, 54910495, 54911040, 54911322, 54911604, 54911967, 54912332, 54912593, 54912851, 54913137, 54913446, 54913731, 54914024, 54914308, 54914617, 54914877, 54915159, 54915441, 54915722, 54915981, 54916267, 54916575, 54916862, 54917171, 54917432, 54917715, 54917996, 54918280, 54918541, 54918826, 54919232, 54919490, 54919768, 54920049, 54920331, 54920590, 54920873, 54921178, 54921513, 54921857, 54922143, 54922451, 54922732, 54923012, 54923290, 54923594, 54923881, 54924190, 54924523, 54924868, 54925176, 54925461, 54925809, 54926144, 54926438, 54926723, 54927006, 54927424, 54927716, 54928021, 54928326, 54928630, 54928911, 54929193, 54929477, 54929805, 54930133, 54930498, 54930823, 54931181, 54931543, 54931906, 54932271, 54932530, 54932811, 54933115, 54933376, 54933660, 54933942, 54934222, 54934483, 54934767, 54935048, 54935616, 54935961, 54936242, 54936502, 54936785, 54937066, 54937327, 54937608, 54937945, 54938293, 54938588, 54938875, 54939159, 54939453, 54939746, 54940051, 54940416, 54940782, 54941068, 54941380, 54941665, 54941973, 54942258, 54942565, 54942874, 54943158, 54943808, 54944118, 54944400, 54944709, 54944989, 54945294, 54945584, 54945864, 54946147, 54946453, 54946710, 54946990, 54947269, 54947548, 54947804, 54948082, 54948421, 54948751, 54949028, 54949331, 54949644, 54949946, 54950257, 54950559, 54950869, 54951155, 54951464, 54952000, 54952308, 54952614, 54952899, 54953184, 54953491, 54954081, 54954391 };
Array.Sort(list);
Span<byte> dest = stackalloc byte[1024 * 128];
Span<uint> buf = stackalloc uint[256];
var encoder = new PForEncoder(dest, buf);
try
{
var i = 0;
foreach (var item in list)
{
if(++i == 38)
{
Console.WriteLine();
}
if (!encoder.TryAdd(item))
{
Console.WriteLine("Failed to add");
}
}
var s = encoder.TryClose();
Console.WriteLine(encoder.SizeInBytes);
Span<int> nums = stackalloc int[256];
var decoder = new PForDecoder(dest, nums);
int index = 0;
while (true)
{
if(index == 464)
{
Console.WriteLine();
}
var cur = decoder.TryDecode();
if (cur.Length == 0)
break;
for (int j = 0; j < cur.Length; j++)
{
if (list[index++] != cur[j])
{
Console.WriteLine("Diff @ " + (index-1));
return;
}
}
}
Console.WriteLine(index == list.Length);
}
finally
{
}
}
}
/* This integer encoder is using the following scheme for compression the data.
* We enforce that the data is sent to us in order (and zero is not a valid option)
* We record delta of deltas of the changes.
* We assume that there are going to be patterns to the deltas, but it may not be as simple as
just the same delta between numbers.
The format is composed of the following commands
* 0b0 - repeat last delta
* 0b1[n:5 bits][x:4 bits] - following x numbers with n bits with sign bit, negative numbers indicate back reference
* 0b00 - two zero bits - repeat last delta
* 0b01[3 bits] - where the 3 bits represents a reference to a previous delta
* 0b10[6 bits] - where the 6 bits represent the number of times to repeat the last delta
* 0b110[1 - 4 bits]0 - where the xxx is the up to 4 conscutive 1 bits representing the number of bytes to read from the
stream to a new delta
* 0b111 - EOF marker
*/
public unsafe ref struct IntegerEncoder
{
private readonly Span<byte> _output;
private readonly int _maxNumOfBits;
private int _previousValue;
private int _bitPos;
private int _previousDelta;
private int _repeatedPreviousDelta;
private const int PreviousDeltasLength = 8;
private fixed int _previousDeltas[PreviousDeltasLength];
public static readonly (int BitsForValue, uint ControlValue, int ControlValueBitLength, long MaxValueForEncoding)[] Encodings = {
(BitsForValue: 7, ControlValue: 0b10, ControlValueBitLength: 2, MaxValueForEncoding: 1U << 6),
(BitsForValue: 9, ControlValue: 0b110, ControlValueBitLength: 3, MaxValueForEncoding: 1U << 8),
(BitsForValue: 12, ControlValue: 0b1110, ControlValueBitLength: 4, MaxValueForEncoding: 1U << 11),
(BitsForValue: 32, ControlValue: 0b1111, ControlValueBitLength: 4, MaxValueForEncoding: 1U << 31)
};
public int Size => (_bitPos + 7) / 8;
public IntegerEncoder(Span<byte> output)
{
_output = output;
_previousValue = 0;
_bitPos = 0;
_maxNumOfBits = output.Length * 8;
_previousDelta = 0;
_repeatedPreviousDelta = 0;
}
public bool TryAdd(int value)
{
if (_previousValue >= value)
throw new ArgumentOutOfRangeException($"The value {value} must be larger than the previous value for this encoding: {_previousValue}");
int delta = (int)(value - _previousValue);
var deltaOfDelta = delta - _previousDelta;
_previousValue = value;
if (deltaOfDelta == 0)
{
if (_repeatedPreviousDelta++ > 8)
{
_bitPos -= 8;// go back 8 bits, which is the size that we have, and overwrite
var r = TryPushBits((ulong)(0b10_000_000 | _repeatedPreviousDelta), 8);
if (_repeatedPreviousDelta == 64)
_repeatedPreviousDelta = 0;
return r;
}
return TryPushBits(0, 2);
}
for (int i = 0; i < PreviousDeltasLength; i++) // try to find it from previous
{
if (_previousDeltas[i] == delta)
{
return TryPushBits(0b01_000 & (ulong)i, 5);
}
}
fixed (int* pPrev = _previousDeltas)
{
// move them all 1 step back
var span = new Span<int>(pPrev, PreviousDeltasLength);
span[1..].CopyTo(span);
}
_previousDeltas[PreviousDeltasLength - 1] = _previousDelta;
_previousDelta = delta;
// we are doing it this way to ensure that we are writing once, to avoid having temporary buffers
uint zigzag = (uint)((deltaOfDelta << 1) ^ (deltaOfDelta >> 31));
(int bits, ulong output) = (4 - BitOperations.LeadingZeroCount(zigzag) / 8) switch
{
1 => (8 + 5, 0b110____1_0UL << 8 | zigzag),
2 => (16 + 6, 0b110___11_0UL << 16 | zigzag),
3 => (24 + 7, 0b110__111_0UL << 24 | zigzag),
4 => (32 + 8, 0b110_1111_0UL << 32 | zigzag),
_ => throw new ArgumentOutOfRangeException("zigzag value has other than 4 bytes?! " + zigzag)
};
return TryPushBits(output, bits);
}
// see:
// https://github.com/facebookarchive/beringei/blob/75c3002b179d99c8709323d605e7d4b53484035c/beringei/lib/BitUtil.cpp#L17
private bool TryPushBits(ulong value, int bitsInValue)
{
if (_bitPos + bitsInValue > _maxNumOfBits)
{
return false;
}
int bitsAvailable = (_bitPos & 0x7) != 0 ? (8 - (_bitPos & 0x7)) : 0;
var bytePos = _bitPos / 8;
_bitPos += bitsInValue;
if (bitsInValue <= bitsAvailable)
{
// Everything fits inside the last byte
_output[bytePos] += (byte)(value << (bitsAvailable - bitsInValue));
return true;
}
int bitsLeft = bitsInValue;
if (bitsAvailable > 0)
{
// Fill up the last byte
_output[bytePos++] += (byte)(value >> (bitsInValue - bitsAvailable));
bitsLeft -= bitsAvailable;
}
while (bitsLeft >= 8)
{
// Enough bits for a dedicated byte
_output[bytePos++] = (byte)((value >> (bitsLeft - 8)) & 0xFF);
bitsLeft -= 8;
}
if (bitsLeft != 0)
{
// Start a new byte with the rest of the bits
_output[bytePos] += (byte)((value & ((1U << bitsLeft) - 1)) << (8 - bitsLeft));
}
return true;
}
public bool TryFlush(out int size)
{
var r = TryPushBits(0b11_11111ul, 7);
size = (_bitPos + 7) / 8;
return r;
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment