ref: 6c06e97860e82dbc8a4bd3a90ed36057046e52ec
parent: 307ecd87596c4927ee0c972cca568ba03d5ebb6c
author: Olav Sørensen <olav.sorensen@live.no>
date: Tue Mar 10 15:58:14 EDT 2020
Pushed v1.11 code - Bugfix: The Help screen scrollbars could act strange when switching subjects - Bugfix: Some of the Instr. Ed. (+ extension) scrollbars could be moved with the up/down pushbuttons even if the current instrument is not allocated. This is not supposed to be possible. - Bugfix: In the Instr. Ed. screen, the "Add" button (vol/pan env.) could lead to a crash if the current instrument wasn't allocated. - Bugfix: The piano in the Instr. Ed. screen could show wrong keypresses if extremely low or high pitches were being played. - The up/down pushbutton delay has been increased, it's too fast in original FT2 (in my opinion). - The 4-tap cubic spline interpolation table (for the audio mixer) has been recalculated in higher precision and more phases. It should in theory be better, but I can't personally hear any difference. - Windows: The DPI-scaling is now per-monitor aware instead of system aware. Maybe this solve the issue of blurry pixels for some people... - Don't warn the user when loading a song with stereo samples. They will be mixed to mono anyway, and I don't think it's an important warning to show. - Fixed some minor grammar errors in some GUI texts
--- a/src/ft2_header.h
+++ b/src/ft2_header.h
@@ -12,7 +12,7 @@
#endif
#include "ft2_replayer.h"
-#define PROG_VER_STR "1.10"
+#define PROG_VER_STR "1.11"
// do NOT change these! It will only mess things up...
--- a/src/ft2_help.c
+++ b/src/ft2_help.c
@@ -451,8 +451,11 @@
fHlp_Nr = Nr;
fHlp_Line = 0;
+ // force update even if new pos value was to be the same as old
+ scrollBars[SB_HELP_SCROLL].oldPos = 0xFFFFFFFF;
+
setScrollBarEnd(SB_HELP_SCROLL, subjLen[fHlp_Nr]);
- setScrollBarPos(SB_HELP_SCROLL, fHlp_Line, false);
+ setScrollBarPos(SB_HELP_SCROLL, 0, false);
}
void rbHelpFeatures(void)
--- a/src/ft2_inst_ed.c
+++ b/src/ft2_inst_ed.c
@@ -20,6 +20,7 @@
#include "ft2_sample_loader.h"
#include "ft2_diskop.h"
#include "ft2_module_loader.h"
+#include "ft2_tables.h"
#ifdef _MSC_VER
#pragma pack(push)
@@ -257,32 +258,38 @@
void midiChDown(void)
{
- scrollBarScrollLeft(SB_INST_EXT_MIDI_CH, 1);
+ if (editor.curInstr != 0 && instr[editor.curInstr] != NULL)
+ scrollBarScrollLeft(SB_INST_EXT_MIDI_CH, 1);
}
void midiChUp(void)
{
- scrollBarScrollRight(SB_INST_EXT_MIDI_CH, 1);
+ if (editor.curInstr != 0 && instr[editor.curInstr] != NULL)
+ scrollBarScrollRight(SB_INST_EXT_MIDI_CH, 1);
}
void midiPrgDown(void)
{
- scrollBarScrollLeft(SB_INST_EXT_MIDI_PRG, 1);
+ if (editor.curInstr != 0 && instr[editor.curInstr] != NULL)
+ scrollBarScrollLeft(SB_INST_EXT_MIDI_PRG, 1);
}
void midiPrgUp(void)
{
- scrollBarScrollRight(SB_INST_EXT_MIDI_PRG, 1);
+ if (editor.curInstr != 0 && instr[editor.curInstr] != NULL)
+ scrollBarScrollRight(SB_INST_EXT_MIDI_PRG, 1);
}
void midiBendDown(void)
{
- scrollBarScrollLeft(SB_INST_EXT_MIDI_BEND, 1);
+ if (editor.curInstr != 0 && instr[editor.curInstr] != NULL)
+ scrollBarScrollLeft(SB_INST_EXT_MIDI_BEND, 1);
}
void midiBendUp(void)
{
- scrollBarScrollRight(SB_INST_EXT_MIDI_BEND, 1);
+ if (editor.curInstr != 0 && instr[editor.curInstr] != NULL)
+ scrollBarScrollRight(SB_INST_EXT_MIDI_BEND, 1);
}
void sbMidiChPos(uint32_t pos)
@@ -553,7 +560,7 @@
static void setStdVolEnvelope(instrTyp *ins, uint8_t num)
{
- if (editor.curInstr == 0)
+ if (editor.curInstr == 0 || ins == NULL)
return;
pauseMusic();
@@ -576,7 +583,7 @@
static void setStdPanEnvelope(instrTyp *ins, uint8_t num)
{
- if (editor.curInstr == 0)
+ if (editor.curInstr == 0 || ins == NULL)
return;
pauseMusic();
@@ -660,73 +667,73 @@
void volPreDef1(void)
{
- if (editor.curInstr > 0)
+ if (editor.curInstr != 0 && instr[editor.curInstr] != NULL)
setOrStoreVolEnvPreset(1 - 1);
}
void volPreDef2(void)
{
- if (editor.curInstr > 0)
+ if (editor.curInstr != 0 && instr[editor.curInstr] != NULL)
setOrStoreVolEnvPreset(2 - 1);
}
void volPreDef3(void)
{
- if (editor.curInstr > 0)
+ if (editor.curInstr != 0 && instr[editor.curInstr] != NULL)
setOrStoreVolEnvPreset(3 - 1);
}
void volPreDef4(void)
{
- if (editor.curInstr > 0)
+ if (editor.curInstr != 0 && instr[editor.curInstr] != NULL)
setOrStoreVolEnvPreset(4 - 1);
}
void volPreDef5(void)
{
- if (editor.curInstr > 0)
+ if (editor.curInstr != 0 && instr[editor.curInstr] != NULL)
setOrStoreVolEnvPreset(5 - 1);
}
void volPreDef6(void)
{
- if (editor.curInstr > 0)
+ if (editor.curInstr != 0 && instr[editor.curInstr] != NULL)
setOrStoreVolEnvPreset(6 - 1);
}
void panPreDef1(void)
{
- if (editor.curInstr > 0)
+ if (editor.curInstr != 0 && instr[editor.curInstr] != NULL)
setOrStorePanEnvPreset(1 - 1);
}
void panPreDef2(void)
{
- if (editor.curInstr > 0)
+ if (editor.curInstr != 0 && instr[editor.curInstr] != NULL)
setOrStorePanEnvPreset(2 - 1);
}
void panPreDef3(void)
{
- if (editor.curInstr > 0)
+ if (editor.curInstr != 0 && instr[editor.curInstr] != NULL)
setOrStorePanEnvPreset(3 - 1);
}
void panPreDef4(void)
{
- if (editor.curInstr > 0)
+ if (editor.curInstr != 0 && instr[editor.curInstr] != NULL)
setOrStorePanEnvPreset(4 - 1);
}
void panPreDef5(void)
{
- if (editor.curInstr > 0)
+ if (editor.curInstr != 0 && instr[editor.curInstr] != NULL)
setOrStorePanEnvPreset(5 - 1);
}
void panPreDef6(void)
{
- if (editor.curInstr > 0)
+ if (editor.curInstr != 0 && instr[editor.curInstr] != NULL)
setOrStorePanEnvPreset(6 - 1);
}
@@ -800,9 +807,11 @@
{
int16_t i, ant;
instrTyp *ins = instr[editor.curInstr];
+ if (editor.curInstr == 0 || ins == NULL)
+ return;
ant = ins->envVPAnt;
- if (ins == NULL || editor.curInstr == 0 || ant >= 12)
+ if (ant >= 12)
return;
i = (int16_t)editor.currVolEnvPoint;
@@ -989,9 +998,11 @@
{
int16_t i, ant;
instrTyp *ins = instr[editor.curInstr];
+ if (ins == NULL || editor.curInstr == 0)
+ return;
ant = ins->envPPAnt;
- if (ins == NULL || editor.curInstr == 0 || ant >= 12)
+ if (ant >= 12)
return;
i = (int16_t)editor.currPanEnvPoint;
@@ -1176,72 +1187,86 @@
void volDown(void)
{
- scrollBarScrollLeft(SB_INST_VOL, 1);
+ if (editor.curInstr != 0 && instr[editor.curInstr] != NULL)
+ scrollBarScrollLeft(SB_INST_VOL, 1);
}
void volUp(void)
{
- scrollBarScrollRight(SB_INST_VOL, 1);
+ if (editor.curInstr != 0 && instr[editor.curInstr] != NULL)
+ scrollBarScrollRight(SB_INST_VOL, 1);
}
void panDown(void)
{
- scrollBarScrollLeft(SB_INST_PAN, 1);
+ if (editor.curInstr != 0 && instr[editor.curInstr] != NULL)
+ scrollBarScrollLeft(SB_INST_PAN, 1);
}
void panUp(void)
{
- scrollBarScrollRight(SB_INST_PAN, 1);
+ if (editor.curInstr != 0 && instr[editor.curInstr] != NULL)
+ scrollBarScrollRight(SB_INST_PAN, 1);
}
void ftuneDown(void)
{
- scrollBarScrollLeft(SB_INST_FTUNE, 1);
+ if (editor.curInstr != 0 && instr[editor.curInstr] != NULL)
+ scrollBarScrollLeft(SB_INST_FTUNE, 1);
}
void ftuneUp(void)
{
- scrollBarScrollRight(SB_INST_FTUNE, 1);
+ if (editor.curInstr != 0 && instr[editor.curInstr] != NULL)
+ scrollBarScrollRight(SB_INST_FTUNE, 1);
}
void fadeoutDown(void)
{
- scrollBarScrollLeft(SB_INST_FADEOUT, 1);
+ if (editor.curInstr != 0 && instr[editor.curInstr] != NULL)
+ scrollBarScrollLeft(SB_INST_FADEOUT, 1);
}
void fadeoutUp(void)
{
- scrollBarScrollRight(SB_INST_FADEOUT, 1);
+ if (editor.curInstr != 0 && instr[editor.curInstr] != NULL)
+ scrollBarScrollRight(SB_INST_FADEOUT, 1);
}
void vibSpeedDown(void)
{
- scrollBarScrollLeft(SB_INST_VIBSPEED, 1);
+ if (editor.curInstr != 0 && instr[editor.curInstr] != NULL)
+ scrollBarScrollLeft(SB_INST_VIBSPEED, 1);
}
void vibSpeedUp(void)
{
- scrollBarScrollRight(SB_INST_VIBSPEED, 1);
+ if (editor.curInstr != 0 && instr[editor.curInstr] != NULL)
+ scrollBarScrollRight(SB_INST_VIBSPEED, 1);
}
void vibDepthDown(void)
{
- scrollBarScrollLeft(SB_INST_VIBDEPTH, 1);
+ if (editor.curInstr != 0 && instr[editor.curInstr] != NULL)
+ scrollBarScrollLeft(SB_INST_VIBDEPTH, 1);
}
void vibDepthUp(void)
{
- scrollBarScrollRight(SB_INST_VIBDEPTH, 1);
+ if (editor.curInstr != 0 && instr[editor.curInstr] != NULL)
+ scrollBarScrollRight(SB_INST_VIBDEPTH, 1);
}
void vibSweepDown(void)
{
- scrollBarScrollLeft(SB_INST_VIBSWEEP, 1);
+ if (editor.curInstr != 0 && instr[editor.curInstr] != NULL)
+ scrollBarScrollLeft(SB_INST_VIBSWEEP, 1);
}
void vibSweepUp(void)
{
- scrollBarScrollRight(SB_INST_VIBSWEEP, 1);
+ if (editor.curInstr != 0 && instr[editor.curInstr] != NULL)
+ scrollBarScrollRight(SB_INST_VIBSWEEP, 1);
}
void setVolumeScroll(uint32_t pos)
@@ -1553,7 +1578,7 @@
uint16_t x;
number = 0;
- if (instr[editor.curInstr] != NULL && editor.curInstr > 0)
+ if (instr[editor.curInstr] != NULL && editor.curInstr != 0)
number = instr[editor.curInstr]->ta[note];
x = keyDigitXPos[key] + (octave * 77);
@@ -1583,8 +1608,8 @@
memset(pianoKeyStatus, 0, sizeof (pianoKeyStatus));
for (uint8_t i = 0; i < 96; i++)
{
- key = i % 12;
- octave = i / 12;
+ key = noteTab1[i];
+ octave = noteTab2[i];
if (keyIsBlackTab[key])
drawBlackPianoKey(key, octave, false);
@@ -1602,8 +1627,11 @@
instrTyp *ins;
if (!editor.ui.instEditorShown)
- return false;
+ return false; // area not clicked
+ if (editor.curInstr == 0 || instr[editor.curInstr] == NULL)
+ return true; // area clicked, but don't do anything
+
mx = mouse.x;
my = mouse.y;
@@ -1621,8 +1649,6 @@
}
ins = instr[editor.curInstr];
- if (ins == NULL)
- return true;
mx -= 8;
if (my < 378)
@@ -1665,7 +1691,7 @@
if (ins->ta[note] != editor.curSmp)
{
ins->ta[note] = editor.curSmp;
- writePianoNumber(note, note % 12, octave);
+ writePianoNumber(note, noteTab2[note], octave);
setSongModifiedFlag();
}
}
@@ -1673,45 +1699,40 @@
return true;
}
-static uint8_t getNote(uint8_t i) // returns 1..96
+/* 8bitbubsy: This is my new version of FT2's buggy getNote().
+** It's used to convert a channel's period into a piano key number.
+**
+** It's probably slower in "Amiga frequencies" mode, but at least it doesn't
+** have weird overflow/underflow patterns.
+**
+** Warning: This function intentionally doesn't clamp the output value!
+*/
+static int32_t getPianoKey(int32_t period, int32_t finetune, int32_t relativeTone, bool linearFrequencies)
{
- int8_t fineTune;
- uint8_t note;
- int32_t period, loPeriod, hiPeriod, tmpPeriod, tableIndex;
- stmTyp *ch;
+ int32_t note;
- ch = &stm[i];
+ finetune >>= 3; // FT2 does this in the replayer internally
- fineTune = (ch->fineTune >> 3) + 16;
- hiPeriod = 8 * 12 * 16;
- loPeriod = 0;
- period = ch->finalPeriod;
-
- for (i = 0; i < 8; i++)
+ if (linearFrequencies)
{
- tmpPeriod = (((loPeriod + hiPeriod) >> 1) & 0xFFFFFFF0) + fineTune;
-
- tableIndex = tmpPeriod - 8;
- if (tableIndex < 0) // added security check
- tableIndex = 0;
-
- if (period >= note2Period[tableIndex])
- hiPeriod = tmpPeriod - fineTune;
- else
- loPeriod = tmpPeriod - fineTune;
+ period = ((10 * 12 * 16 * 4) - period) - (finetune << 2);
+ note = (period + (1 << 5)) >> 6; // rounded
}
+ else
+ {
+ double dNote = (log2(period * (1.0 / (1712.0 * 16.0))) * -12.0) - (finetune * (1.0 / 16.0));
+ note = (int32_t)(dNote + 0.5); // rounded
+ }
- if (loPeriod >= ((8*12*16) + 15) - 1) // FT2 bug: off-by-one error
- loPeriod = (8*12*16) + 15;
-
- note = (uint8_t)(((loPeriod + 8) >> 4) - ch->relTonNr) + 1;
+ note -= relativeTone;
return note;
}
-void drawPiano(void) // draw piano in idle mode
+void drawPiano(void) // draw piano in idle mode (jamming keys)
{
bool keyDown, newStatus[96];
- uint8_t key, note, octave;
+ uint8_t key, octave;
+ int32_t note;
stmTyp *ch;
memset(newStatus, 0, sizeof (newStatus));
@@ -1722,11 +1743,11 @@
for (uint8_t i = 0; i < song.antChn; i++)
{
ch = &stm[i];
- if (ch->instrNr == editor.curInstr)
+ if (ch->instrNr == editor.curInstr && ch->envSustainActive)
{
- note = getNote(i);
- if (ch->envSustainActive)
- newStatus[(note - 1) % 96] = true;
+ note = getPianoKey(ch->finalPeriod, ch->fineTune, ch->relTonNr, linearFrqTab);
+ if (note >= 0 && note <= 95)
+ newStatus[note] = true;
}
}
}
@@ -1737,8 +1758,8 @@
keyDown = newStatus[i];
if (pianoKeyStatus[i] ^ keyDown)
{
- key = i % 12;
- octave = i / 12;
+ key = noteTab1[i];
+ octave = noteTab2[i];
if (keyIsBlackTab[key])
drawBlackPianoKey(key, octave, keyDown);
@@ -1750,42 +1771,11 @@
}
}
-static uint8_t getNoteReplayer(syncedChannel_t *ch) // returns 1..96
+void drawPianoReplayer(chSyncData_t *chSyncData) // draw piano with synced replayer state (song playing)
{
- int8_t fineTune;
- uint8_t note;
- int32_t period, loPeriod, hiPeriod, tmpPeriod, tableIndex;
-
- fineTune = (ch->fineTune >> 3) + 16;
- hiPeriod = 8 * 12 * 16;
- loPeriod = 0;
- period = ch->finalPeriod;
-
- for (uint8_t i = 0; i < 8; i++)
- {
- tmpPeriod = (((loPeriod + hiPeriod) >> 1) & 0xFFFFFFF0) + fineTune;
-
- tableIndex = tmpPeriod - 8;
- if (tableIndex < 0) // added security check
- tableIndex = 0;
-
- if (period >= note2Period[tableIndex])
- hiPeriod = tmpPeriod - fineTune;
- else
- loPeriod = tmpPeriod - fineTune;
- }
-
- if (loPeriod >= ((8*12*16) + 15) - 1) // FT2 bug: off-by-one error
- loPeriod = (8*12*16) + 15;
-
- note = (uint8_t)(((loPeriod + 8) >> 4) - ch->relTonNr) + 1;
- return note;
-}
-
-void drawPianoReplayer(chSyncData_t *chSyncData) // draw piano with synced replayer datas
-{
bool keyDown, newStatus[96];
- uint8_t key, note, octave;
+ uint8_t key, octave;
+ int32_t note;
syncedChannel_t *ch;
memset(newStatus, 0, sizeof (newStatus));
@@ -1796,11 +1786,11 @@
for (uint8_t i = 0; i < song.antChn; i++)
{
ch = &chSyncData->channels[i];
- if (ch->instrNr == editor.curInstr)
+ if (ch->instrNr == editor.curInstr && ch->envSustainActive)
{
- note = getNoteReplayer(ch);
- if (ch->envSustainActive)
- newStatus[(note - 1) % 96] = true;
+ note = getPianoKey(ch->finalPeriod, ch->fineTune, ch->relTonNr, linearFrqTab);
+ if (note >= 0 && note <= 95)
+ newStatus[note] = true;
}
}
}
@@ -1811,8 +1801,8 @@
keyDown = newStatus[i];
if (pianoKeyStatus[i] ^ keyDown)
{
- key = i % 12;
- octave = i / 12;
+ key = noteTab1[i];
+ octave = noteTab2[i];
if (keyIsBlackTab[key])
drawBlackPianoKey(key, octave, keyDown);
--- /dev/null
+++ b/src/ft2_intrp_table.c
@@ -1,0 +1,1036 @@
+#include <stdint.h>
+#include "ft2_intrp_table.h"
+
+/* 4-tap cubic spline table
+**
+** This table was generated using a modified version of Schism Tracker's lutgen.cpp
+** with 15-bit precision and 4096 phases.
+*/
+
+const int16_t cubicSplineTable[CUBIC_WIDTH * CUBIC_PHASES] =
+{
+ 0, 32767, 0, 0, -4, 32767, 4, 0, -8, 32767, 8, 0, -12, 32767, 12, 0,
+ -16, 32767, 16, 0, -20, 32767, 20, 0, -24, 32767, 24, 0, -28, 32767, 28, 0,
+ -32, 32767, 32, 0, -36, 32767, 36, 0, -40, 32767, 40, 0, -44, 32767, 44, 0,
+ -48, 32767, 49, 0, -52, 32767, 53, 0, -56, 32767, 57, 0, -60, 32767, 61, 0,
+ -64, 32767, 65, 0, -67, 32766, 69, 0, -71, 32766, 73, 0, -75, 32766, 77, 0,
+ -79, 32765, 82, 0, -83, 32765, 86, 0, -87, 32765, 90, 0, -91, 32766, 94, -1,
+ -95, 32766, 98, -1, -99, 32766, 102, -1, -103, 32765, 107, -1, -107, 32765, 111, -1,
+ -110, 32764, 115, -1, -114, 32764, 119, -1, -118, 32764, 123, -1, -122, 32763, 128, -1,
+ -126, 32763, 132, -1, -130, 32763, 136, -1, -134, 32763, 140, -1, -138, 32762, 145, -1,
+ -141, 32761, 149, -1, -145, 32761, 153, -1, -149, 32760, 158, -1, -153, 32760, 162, -1,
+ -157, 32761, 166, -2, -161, 32760, 171, -2, -165, 32760, 175, -2, -168, 32759, 179, -2,
+ -172, 32758, 184, -2, -176, 32758, 188, -2, -180, 32758, 192, -2, -184, 32757, 197, -2,
+ -188, 32757, 201, -2, -191, 32756, 205, -2, -195, 32755, 210, -2, -199, 32756, 214, -3,
+ -203, 32756, 218, -3, -207, 32755, 223, -3, -210, 32754, 227, -3, -214, 32753, 232, -3,
+ -218, 32753, 236, -3, -222, 32752, 241, -3, -225, 32751, 245, -3, -229, 32751, 249, -3,
+ -233, 32750, 254, -3, -237, 32751, 258, -4, -241, 32750, 263, -4, -244, 32749, 267, -4,
+ -248, 32748, 272, -4, -252, 32748, 276, -4, -256, 32747, 281, -4, -259, 32746, 285, -4,
+ -263, 32745, 290, -4, -267, 32746, 294, -5, -271, 32745, 299, -5, -274, 32744, 303, -5,
+ -278, 32743, 308, -5, -282, 32742, 313, -5, -285, 32741, 317, -5, -289, 32740, 322, -5,
+ -293, 32741, 326, -6, -297, 32740, 331, -6, -300, 32739, 335, -6, -304, 32738, 340, -6,
+ -308, 32737, 345, -6, -311, 32736, 349, -6, -315, 32735, 354, -6, -319, 32735, 359, -7,
+ -322, 32734, 363, -7, -326, 32733, 368, -7, -330, 32733, 372, -7, -333, 32731, 377, -7,
+ -337, 32730, 382, -7, -341, 32731, 386, -8, -344, 32729, 391, -8, -348, 32728, 396, -8,
+ -352, 32727, 401, -8, -355, 32726, 405, -8, -359, 32725, 410, -8, -363, 32725, 415, -9,
+ -366, 32724, 419, -9, -370, 32723, 424, -9, -373, 32721, 429, -9, -377, 32720, 434, -9,
+ -381, 32721, 438, -10, -384, 32719, 443, -10, -388, 32718, 448, -10, -392, 32717, 453, -10,
+ -395, 32716, 457, -10, -399, 32715, 462, -10, -402, 32714, 467, -11, -406, 32713, 472, -11,
+ -410, 32712, 477, -11, -413, 32711, 481, -11, -417, 32710, 486, -11, -420, 32709, 491, -12,
+ -424, 32708, 496, -12, -427, 32706, 501, -12, -431, 32705, 506, -12, -435, 32705, 511, -13,
+ -438, 32704, 515, -13, -442, 32703, 520, -13, -445, 32701, 525, -13, -449, 32700, 530, -13,
+ -452, 32699, 535, -14, -456, 32698, 540, -14, -459, 32696, 545, -14, -463, 32695, 550, -14,
+ -466, 32694, 555, -15, -470, 32693, 560, -15, -473, 32691, 565, -15, -477, 32690, 570, -15,
+ -481, 32690, 575, -16, -484, 32689, 579, -16, -488, 32688, 584, -16, -491, 32686, 589, -16,
+ -495, 32685, 594, -16, -498, 32684, 599, -17, -502, 32683, 604, -17, -505, 32681, 609, -17,
+ -508, 32679, 614, -17, -512, 32679, 619, -18, -515, 32676, 625, -18, -519, 32675, 630, -18,
+ -522, 32673, 635, -18, -526, 32673, 640, -19, -529, 32671, 645, -19, -533, 32670, 650, -19,
+ -536, 32669, 655, -20, -540, 32668, 660, -20, -543, 32666, 665, -20, -547, 32665, 670, -20,
+ -550, 32664, 675, -21, -553, 32662, 680, -21, -557, 32661, 685, -21, -560, 32658, 691, -21,
+ -564, 32658, 696, -22, -567, 32656, 701, -22, -571, 32655, 706, -22, -574, 32654, 711, -23,
+ -577, 32652, 716, -23, -581, 32650, 722, -23, -584, 32648, 727, -23, -588, 32648, 732, -24,
+ -591, 32646, 737, -24, -594, 32644, 742, -24, -598, 32644, 747, -25, -601, 32641, 753, -25,
+ -605, 32640, 758, -25, -608, 32639, 763, -26, -611, 32637, 768, -26, -615, 32635, 774, -26,
+ -618, 32633, 779, -26, -621, 32632, 784, -27, -625, 32631, 789, -27, -628, 32628, 795, -27,
+ -631, 32627, 800, -28, -635, 32626, 805, -28, -638, 32624, 810, -28, -641, 32622, 816, -29,
+ -645, 32621, 821, -29, -648, 32619, 826, -29, -651, 32617, 832, -30, -655, 32616, 837, -30,
+ -658, 32614, 842, -30, -661, 32612, 848, -31, -665, 32611, 853, -31, -668, 32609, 858, -31,
+ -671, 32607, 864, -32, -675, 32606, 869, -32, -678, 32603, 875, -32, -681, 32602, 880, -33,
+ -685, 32601, 885, -33, -688, 32598, 891, -33, -691, 32597, 896, -34, -694, 32594, 902, -34,
+ -698, 32593, 907, -34, -701, 32592, 912, -35, -704, 32589, 918, -35, -708, 32588, 923, -35,
+ -711, 32586, 929, -36, -714, 32584, 934, -36, -717, 32581, 940, -36, -721, 32581, 945, -37,
+ -724, 32578, 951, -37, -727, 32577, 956, -38, -730, 32575, 961, -38, -734, 32573, 967, -38,
+ -737, 32572, 972, -39, -740, 32569, 978, -39, -743, 32566, 984, -39, -746, 32565, 989, -40,
+ -750, 32563, 995, -40, -753, 32561, 1000, -40, -756, 32559, 1006, -41, -759, 32557, 1011, -41,
+ -762, 32555, 1017, -42, -766, 32554, 1022, -42, -769, 32551, 1028, -42, -772, 32550, 1033, -43,
+ -775, 32547, 1039, -43, -778, 32545, 1045, -44, -782, 32544, 1050, -44, -785, 32541, 1056, -44,
+ -788, 32540, 1061, -45, -791, 32537, 1067, -45, -794, 32535, 1073, -46, -798, 32534, 1078, -46,
+ -801, 32531, 1084, -46, -804, 32529, 1090, -47, -807, 32527, 1095, -47, -810, 32525, 1101, -48,
+ -813, 32522, 1107, -48, -816, 32520, 1112, -48, -820, 32519, 1118, -49, -823, 32516, 1124, -49,
+ -826, 32515, 1129, -50, -829, 32512, 1135, -50, -832, 32509, 1141, -50, -835, 32508, 1146, -51,
+ -838, 32505, 1152, -51, -841, 32503, 1158, -52, -845, 32501, 1164, -52, -848, 32500, 1169, -53,
+ -851, 32497, 1175, -53, -854, 32494, 1181, -53, -857, 32492, 1187, -54, -860, 32490, 1192, -54,
+ -863, 32488, 1198, -55, -866, 32485, 1204, -55, -869, 32483, 1210, -56, -872, 32480, 1216, -56,
+ -876, 32479, 1221, -56, -879, 32477, 1227, -57, -882, 32474, 1233, -57, -885, 32472, 1239, -58,
+ -888, 32469, 1245, -58, -891, 32468, 1250, -59, -894, 32465, 1256, -59, -897, 32463, 1262, -60,
+ -900, 32460, 1268, -60, -903, 32457, 1274, -60, -906, 32455, 1280, -61, -909, 32452, 1286, -61,
+ -912, 32451, 1291, -62, -915, 32448, 1297, -62, -918, 32446, 1303, -63, -921, 32443, 1309, -63,
+ -924, 32441, 1315, -64, -927, 32438, 1321, -64, -930, 32436, 1327, -65, -933, 32433, 1333, -65,
+ -936, 32431, 1339, -66, -939, 32428, 1345, -66, -942, 32425, 1351, -66, -945, 32423, 1357, -67,
+ -948, 32420, 1363, -67, -951, 32418, 1369, -68, -954, 32415, 1375, -68, -957, 32413, 1381, -69,
+ -960, 32410, 1387, -69, -963, 32408, 1393, -70, -966, 32405, 1399, -70, -969, 32403, 1405, -71,
+ -972, 32400, 1411, -71, -975, 32398, 1417, -72, -978, 32395, 1423, -72, -981, 32393, 1429, -73,
+ -984, 32390, 1435, -73, -987, 32388, 1441, -74, -990, 32385, 1447, -74, -993, 32383, 1453, -75,
+ -996, 32380, 1459, -75, -999, 32378, 1465, -76, -1002, 32375, 1471, -76, -1004, 32372, 1477, -77,
+ -1007, 32369, 1483, -77, -1010, 32367, 1489, -78, -1013, 32364, 1495, -78, -1016, 32361, 1502, -79,
+ -1019, 32358, 1508, -79, -1022, 32356, 1514, -80, -1025, 32353, 1520, -80, -1028, 32351, 1526, -81,
+ -1031, 32348, 1532, -81, -1034, 32346, 1538, -82, -1036, 32341, 1545, -82, -1039, 32339, 1551, -83,
+ -1042, 32337, 1557, -84, -1045, 32334, 1563, -84, -1048, 32332, 1569, -85, -1051, 32329, 1575, -85,
+ -1054, 32326, 1582, -86, -1057, 32323, 1588, -86, -1059, 32320, 1594, -87, -1062, 32317, 1600, -87,
+ -1065, 32314, 1607, -88, -1068, 32311, 1613, -88, -1071, 32309, 1619, -89, -1074, 32306, 1625, -89,
+ -1076, 32303, 1631, -90, -1079, 32300, 1638, -91, -1082, 32297, 1644, -91, -1085, 32295, 1650, -92,
+ -1088, 32291, 1657, -92, -1091, 32289, 1663, -93, -1093, 32285, 1669, -93, -1096, 32283, 1675, -94,
+ -1099, 32279, 1682, -94, -1102, 32277, 1688, -95, -1105, 32275, 1694, -96, -1107, 32270, 1701, -96,
+ -1110, 32268, 1707, -97, -1113, 32265, 1713, -97, -1116, 32262, 1720, -98, -1119, 32259, 1726, -98,
+ -1121, 32256, 1732, -99, -1124, 32252, 1739, -99, -1127, 32250, 1745, -100, -1130, 32248, 1751, -101,
+ -1133, 32244, 1758, -101, -1135, 32241, 1764, -102, -1138, 32237, 1771, -102, -1141, 32235, 1777, -103,
+ -1144, 32233, 1783, -104, -1146, 32228, 1790, -104, -1149, 32226, 1796, -105, -1152, 32222, 1803, -105,
+ -1155, 32220, 1809, -106, -1157, 32215, 1816, -106, -1160, 32213, 1822, -107, -1163, 32211, 1828, -108,
+ -1166, 32207, 1835, -108, -1168, 32204, 1841, -109, -1171, 32200, 1848, -109, -1174, 32198, 1854, -110,
+ -1176, 32194, 1861, -111, -1179, 32191, 1867, -111, -1182, 32188, 1874, -112, -1185, 32185, 1880, -112,
+ -1187, 32181, 1887, -113, -1190, 32179, 1893, -114, -1193, 32175, 1900, -114, -1195, 32172, 1906, -115,
+ -1198, 32168, 1913, -115, -1201, 32166, 1919, -116, -1203, 32162, 1926, -117, -1206, 32158, 1933, -117,
+ -1209, 32156, 1939, -118, -1211, 32152, 1946, -119, -1214, 32149, 1952, -119, -1217, 32146, 1959, -120,
+ -1219, 32142, 1965, -120, -1222, 32139, 1972, -121, -1225, 32136, 1979, -122, -1227, 32132, 1985, -122,
+ -1230, 32129, 1992, -123, -1233, 32126, 1998, -123, -1235, 32122, 2005, -124, -1238, 32119, 2012, -125,
+ -1241, 32116, 2018, -125, -1243, 32112, 2025, -126, -1246, 32109, 2032, -127, -1248, 32105, 2038, -127,
+ -1251, 32102, 2045, -128, -1254, 32100, 2051, -129, -1256, 32095, 2058, -129, -1259, 32092, 2065, -130,
+ -1262, 32089, 2072, -131, -1264, 32085, 2078, -131, -1267, 32082, 2085, -132, -1269, 32077, 2092, -132,
+ -1272, 32075, 2098, -133, -1274, 32071, 2105, -134, -1277, 32067, 2112, -134, -1280, 32065, 2118, -135,
+ -1282, 32061, 2125, -136, -1285, 32057, 2132, -136, -1287, 32053, 2139, -137, -1290, 32051, 2145, -138,
+ -1293, 32047, 2152, -138, -1295, 32043, 2159, -139, -1298, 32040, 2166, -140, -1300, 32036, 2172, -140,
+ -1303, 32033, 2179, -141, -1305, 32029, 2186, -142, -1308, 32025, 2193, -142, -1310, 32021, 2200, -143,
+ -1313, 32019, 2206, -144, -1315, 32014, 2213, -144, -1318, 32011, 2220, -145, -1321, 32008, 2227, -146,
+ -1323, 32003, 2234, -146, -1326, 32000, 2241, -147, -1328, 31997, 2247, -148, -1331, 31993, 2254, -148,
+ -1333, 31989, 2261, -149, -1336, 31986, 2268, -150, -1338, 31981, 2275, -150, -1341, 31978, 2282, -151,
+ -1343, 31974, 2289, -152, -1346, 31972, 2295, -153, -1348, 31967, 2302, -153, -1351, 31964, 2309, -154,
+ -1353, 31960, 2316, -155, -1356, 31956, 2323, -155, -1358, 31952, 2330, -156, -1361, 31949, 2337, -157,
+ -1363, 31944, 2344, -157, -1366, 31941, 2351, -158, -1368, 31937, 2358, -159, -1370, 31932, 2365, -159,
+ -1373, 31930, 2371, -160, -1375, 31926, 2378, -161, -1378, 31923, 2385, -162, -1380, 31918, 2392, -162,
+ -1383, 31915, 2399, -163, -1385, 31911, 2406, -164, -1388, 31907, 2413, -164, -1390, 31903, 2420, -165,
+ -1392, 31899, 2427, -166, -1395, 31896, 2434, -167, -1397, 31891, 2441, -167, -1400, 31888, 2448, -168,
+ -1402, 31884, 2455, -169, -1405, 31880, 2462, -169, -1407, 31876, 2469, -170, -1409, 31872, 2476, -171,
+ -1412, 31869, 2483, -172, -1414, 31863, 2491, -172, -1417, 31860, 2498, -173, -1419, 31856, 2505, -174,
+ -1421, 31852, 2512, -175, -1424, 31848, 2519, -175, -1426, 31844, 2526, -176, -1429, 31841, 2533, -177,
+ -1431, 31836, 2540, -177, -1433, 31832, 2547, -178, -1436, 31829, 2554, -179, -1438, 31825, 2561, -180,
+ -1440, 31820, 2568, -180, -1443, 31816, 2576, -181, -1445, 31812, 2583, -182, -1448, 31809, 2590, -183,
+ -1450, 31804, 2597, -183, -1452, 31800, 2604, -184, -1455, 31797, 2611, -185, -1457, 31793, 2618, -186,
+ -1459, 31787, 2626, -186, -1462, 31784, 2633, -187, -1464, 31780, 2640, -188, -1466, 31776, 2647, -189,
+ -1469, 31772, 2654, -189, -1471, 31768, 2661, -190, -1473, 31763, 2669, -191, -1476, 31760, 2676, -192,
+ -1478, 31755, 2683, -192, -1480, 31751, 2690, -193, -1483, 31748, 2697, -194, -1485, 31743, 2705, -195,
+ -1487, 31739, 2712, -196, -1489, 31734, 2719, -196, -1492, 31731, 2726, -197, -1494, 31726, 2734, -198,
+ -1496, 31722, 2741, -199, -1499, 31718, 2748, -199, -1501, 31714, 2755, -200, -1503, 31709, 2763, -201,
+ -1506, 31706, 2770, -202, -1508, 31702, 2777, -203, -1510, 31696, 2785, -203, -1512, 31692, 2792, -204,
+ -1515, 31689, 2799, -205, -1517, 31685, 2806, -206, -1519, 31679, 2814, -206, -1521, 31675, 2821, -207,
+ -1524, 31672, 2828, -208, -1526, 31667, 2836, -209, -1528, 31663, 2843, -210, -1530, 31658, 2850, -210,
+ -1533, 31654, 2858, -211, -1535, 31650, 2865, -212, -1537, 31646, 2872, -213, -1539, 31641, 2880, -214,
+ -1542, 31637, 2887, -214, -1544, 31632, 2895, -215, -1546, 31628, 2902, -216, -1548, 31624, 2909, -217,
+ -1550, 31619, 2917, -218, -1553, 31615, 2924, -218, -1555, 31611, 2931, -219, -1557, 31606, 2939, -220,
+ -1559, 31602, 2946, -221, -1561, 31597, 2954, -222, -1564, 31593, 2961, -222, -1566, 31588, 2969, -223,
+ -1568, 31584, 2976, -224, -1570, 31580, 2983, -225, -1572, 31575, 2991, -226, -1575, 31571, 2998, -226,
+ -1577, 31566, 3006, -227, -1579, 31562, 3013, -228, -1581, 31557, 3021, -229, -1583, 31553, 3028, -230,
+ -1585, 31548, 3036, -231, -1588, 31544, 3043, -231, -1590, 31539, 3051, -232, -1592, 31535, 3058, -233,
+ -1594, 31530, 3066, -234, -1596, 31526, 3073, -235, -1598, 31520, 3081, -235, -1600, 31516, 3088, -236,
+ -1603, 31512, 3096, -237, -1605, 31508, 3103, -238, -1607, 31503, 3111, -239, -1609, 31499, 3118, -240,
+ -1611, 31493, 3126, -240, -1613, 31489, 3133, -241, -1615, 31484, 3141, -242, -1617, 31479, 3149, -243,
+ -1620, 31476, 3156, -244, -1622, 31471, 3164, -245, -1624, 31467, 3171, -246, -1626, 31461, 3179, -246,
+ -1628, 31457, 3186, -247, -1630, 31452, 3194, -248, -1632, 31447, 3202, -249, -1634, 31443, 3209, -250,
+ -1636, 31438, 3217, -251, -1638, 31433, 3224, -251, -1641, 31429, 3232, -252, -1643, 31424, 3240, -253,
+ -1645, 31420, 3247, -254, -1647, 31415, 3255, -255, -1649, 31410, 3263, -256, -1651, 31406, 3270, -257,
+ -1653, 31400, 3278, -257, -1655, 31395, 3286, -258, -1657, 31391, 3293, -259, -1659, 31386, 3301, -260,
+ -1661, 31381, 3309, -261, -1663, 31377, 3316, -262, -1665, 31372, 3324, -263, -1667, 31367, 3332, -264,
+ -1669, 31362, 3339, -264, -1671, 31357, 3347, -265, -1673, 31352, 3355, -266, -1675, 31347, 3363, -267,
+ -1677, 31343, 3370, -268, -1680, 31339, 3378, -269, -1682, 31334, 3386, -270, -1684, 31329, 3393, -270,
+ -1686, 31324, 3401, -271, -1688, 31319, 3409, -272, -1690, 31314, 3417, -273, -1692, 31310, 3424, -274,
+ -1694, 31305, 3432, -275, -1696, 31300, 3440, -276, -1698, 31295, 3448, -277, -1700, 31290, 3456, -278,
+ -1702, 31285, 3463, -278, -1704, 31280, 3471, -279, -1706, 31275, 3479, -280, -1708, 31270, 3487, -281,
+ -1709, 31264, 3495, -282, -1711, 31260, 3502, -283, -1713, 31255, 3510, -284, -1715, 31250, 3518, -285,
+ -1717, 31245, 3526, -286, -1719, 31239, 3534, -286, -1721, 31235, 3541, -287, -1723, 31230, 3549, -288,
+ -1725, 31225, 3557, -289, -1727, 31220, 3565, -290, -1729, 31215, 3573, -291, -1731, 31210, 3581, -292,
+ -1733, 31205, 3589, -293, -1735, 31201, 3596, -294, -1737, 31196, 3604, -295, -1739, 31191, 3612, -296,
+ -1741, 31185, 3620, -296, -1743, 31180, 3628, -297, -1745, 31175, 3636, -298, -1746, 31169, 3644, -299,
+ -1748, 31164, 3652, -300, -1750, 31159, 3660, -301, -1752, 31154, 3668, -302, -1754, 31149, 3676, -303,
+ -1756, 31145, 3683, -304, -1758, 31140, 3691, -305, -1760, 31135, 3699, -306, -1762, 31129, 3707, -306,
+ -1764, 31124, 3715, -307, -1765, 31118, 3723, -308, -1767, 31113, 3731, -309, -1769, 31108, 3739, -310,
+ -1771, 31103, 3747, -311, -1773, 31098, 3755, -312, -1775, 31093, 3763, -313, -1777, 31088, 3771, -314,
+ -1779, 31083, 3779, -315, -1780, 31077, 3787, -316, -1782, 31072, 3795, -317, -1784, 31067, 3803, -318,
+ -1786, 31062, 3811, -319, -1788, 31057, 3819, -320, -1790, 31051, 3827, -320, -1792, 31046, 3835, -321,
+ -1793, 31040, 3843, -322, -1795, 31035, 3851, -323, -1797, 31030, 3859, -324, -1799, 31025, 3867, -325,
+ -1801, 31020, 3875, -326, -1803, 31015, 3883, -327, -1804, 31008, 3892, -328, -1806, 31003, 3900, -329,
+ -1808, 30998, 3908, -330, -1810, 30993, 3916, -331, -1812, 30988, 3924, -332, -1813, 30982, 3932, -333,
+ -1815, 30977, 3940, -334, -1817, 30972, 3948, -335, -1819, 30967, 3956, -336, -1821, 30962, 3964, -337,
+ -1823, 30956, 3973, -338, -1824, 30949, 3981, -338, -1826, 30944, 3989, -339, -1828, 30939, 3997, -340,
+ -1830, 30934, 4005, -341, -1831, 30928, 4013, -342, -1833, 30923, 4021, -343, -1835, 30918, 4029, -344,
+ -1837, 30912, 4038, -345, -1839, 30907, 4046, -346, -1840, 30901, 4054, -347, -1842, 30896, 4062, -348,
+ -1844, 30891, 4070, -349, -1846, 30885, 4079, -350, -1847, 30879, 4087, -351, -1849, 30874, 4095, -352,
+ -1851, 30869, 4103, -353, -1853, 30864, 4111, -354, -1854, 30858, 4119, -355, -1856, 30852, 4128, -356,
+ -1858, 30847, 4136, -357, -1859, 30841, 4144, -358, -1861, 30836, 4152, -359, -1863, 30830, 4161, -360,
+ -1865, 30825, 4169, -361, -1866, 30819, 4177, -362, -1868, 30814, 4185, -363, -1870, 30808, 4194, -364,
+ -1872, 30803, 4202, -365, -1873, 30797, 4210, -366, -1875, 30792, 4218, -367, -1877, 30786, 4227, -368,
+ -1878, 30780, 4235, -369, -1880, 30775, 4243, -370, -1882, 30769, 4252, -371, -1883, 30763, 4260, -372,
+ -1885, 30758, 4268, -373, -1887, 30753, 4276, -374, -1888, 30746, 4285, -375, -1890, 30741, 4293, -376,
+ -1892, 30736, 4301, -377, -1894, 30730, 4310, -378, -1895, 30724, 4318, -379, -1897, 30719, 4326, -380,
+ -1899, 30713, 4335, -381, -1900, 30707, 4343, -382, -1902, 30702, 4351, -383, -1903, 30695, 4360, -384,
+ -1905, 30690, 4368, -385, -1907, 30685, 4376, -386, -1908, 30678, 4385, -387, -1910, 30673, 4393, -388,
+ -1912, 30667, 4402, -389, -1913, 30661, 4410, -390, -1915, 30656, 4418, -391, -1917, 30650, 4427, -392,
+ -1918, 30644, 4435, -393, -1920, 30639, 4443, -394, -1922, 30633, 4452, -395, -1923, 30627, 4460, -396,
+ -1925, 30621, 4469, -397, -1926, 30615, 4477, -398, -1928, 30609, 4486, -399, -1930, 30604, 4494, -400,
+ -1931, 30598, 4502, -401, -1933, 30592, 4511, -402, -1934, 30586, 4519, -403, -1936, 30580, 4528, -404,
+ -1938, 30575, 4536, -405, -1939, 30568, 4545, -406, -1941, 30563, 4553, -407, -1942, 30556, 4562, -408,
+ -1944, 30551, 4570, -409, -1946, 30545, 4579, -410, -1947, 30539, 4587, -411, -1949, 30533, 4596, -412,
+ -1950, 30527, 4604, -413, -1952, 30521, 4613, -414, -1953, 30515, 4621, -415, -1955, 30509, 4630, -416,
+ -1956, 30503, 4638, -417, -1958, 30497, 4647, -418, -1960, 30492, 4655, -419, -1961, 30485, 4664, -420,
+ -1963, 30480, 4672, -421, -1964, 30473, 4681, -422, -1966, 30468, 4689, -423, -1967, 30462, 4698, -425,
+ -1969, 30457, 4706, -426, -1970, 30450, 4715, -427, -1972, 30445, 4723, -428, -1973, 30438, 4732, -429,
+ -1975, 30432, 4741, -430, -1977, 30427, 4749, -431, -1978, 30420, 4758, -432, -1980, 30415, 4766, -433,
+ -1981, 30408, 4775, -434, -1983, 30403, 4783, -435, -1984, 30396, 4792, -436, -1986, 30390, 4801, -437,
+ -1987, 30384, 4809, -438, -1989, 30378, 4818, -439, -1990, 30372, 4826, -440, -1992, 30366, 4835, -441,
+ -1993, 30359, 4844, -442, -1995, 30354, 4852, -443, -1996, 30347, 4861, -444, -1998, 30342, 4870, -446,
+ -1999, 30336, 4878, -447, -2000, 30329, 4887, -448, -2002, 30323, 4896, -449, -2003, 30317, 4904, -450,
+ -2005, 30311, 4913, -451, -2006, 30305, 4921, -452, -2008, 30299, 4930, -453, -2009, 30292, 4939, -454,
+ -2011, 30286, 4948, -455, -2012, 30280, 4956, -456, -2014, 30274, 4965, -457, -2015, 30267, 4974, -458,
+ -2017, 30262, 4982, -459, -2018, 30255, 4991, -460, -2019, 30249, 5000, -462, -2021, 30244, 5008, -463,
+ -2022, 30237, 5017, -464, -2024, 30231, 5026, -465, -2025, 30224, 5035, -466, -2027, 30219, 5043, -467,
+ -2028, 30212, 5052, -468, -2029, 30205, 5061, -469, -2031, 30200, 5069, -470, -2032, 30193, 5078, -471,
+ -2034, 30187, 5087, -472, -2035, 30180, 5096, -473, -2036, 30174, 5104, -474, -2038, 30169, 5113, -476,
+ -2039, 30162, 5122, -477, -2041, 30156, 5131, -478, -2042, 30149, 5140, -479, -2043, 30143, 5148, -480,
+ -2045, 30137, 5157, -481, -2046, 30130, 5166, -482, -2048, 30124, 5175, -483, -2049, 30117, 5184, -484,
+ -2050, 30111, 5192, -485, -2052, 30105, 5201, -486, -2053, 30099, 5210, -488, -2055, 30093, 5219, -489,
+ -2056, 30086, 5228, -490, -2057, 30080, 5236, -491, -2059, 30074, 5245, -492, -2060, 30067, 5254, -493,
+ -2061, 30060, 5263, -494, -2063, 30054, 5272, -495, -2064, 30047, 5281, -496, -2065, 30041, 5289, -497,
+ -2067, 30036, 5298, -499, -2068, 30029, 5307, -500, -2069, 30022, 5316, -501, -2071, 30016, 5325, -502,
+ -2072, 30009, 5334, -503, -2073, 30002, 5343, -504, -2075, 29996, 5352, -505, -2076, 29990, 5360, -506,
+ -2077, 29983, 5369, -507, -2079, 29977, 5378, -508, -2080, 29971, 5387, -510, -2081, 29964, 5396, -511,
+ -2083, 29958, 5405, -512, -2084, 29951, 5414, -513, -2085, 29944, 5423, -514, -2087, 29938, 5432, -515,
+ -2088, 29931, 5441, -516, -2089, 29924, 5450, -517, -2090, 29918, 5458, -518, -2092, 29913, 5467, -520,
+ -2093, 29906, 5476, -521, -2094, 29899, 5485, -522, -2096, 29893, 5494, -523, -2097, 29886, 5503, -524,
+ -2098, 29879, 5512, -525, -2099, 29872, 5521, -526, -2101, 29866, 5530, -527, -2102, 29860, 5539, -529,
+ -2103, 29853, 5548, -530, -2105, 29847, 5557, -531, -2106, 29840, 5566, -532, -2107, 29833, 5575, -533,
+ -2108, 29826, 5584, -534, -2110, 29820, 5593, -535, -2111, 29813, 5602, -536, -2112, 29807, 5611, -538,
+ -2113, 29800, 5620, -539, -2115, 29794, 5629, -540, -2116, 29787, 5638, -541, -2117, 29780, 5647, -542,
+ -2118, 29773, 5656, -543, -2120, 29767, 5665, -544, -2121, 29760, 5674, -545, -2122, 29754, 5683, -547,
+ -2123, 29747, 5692, -548, -2124, 29740, 5701, -549, -2126, 29734, 5710, -550, -2127, 29727, 5719, -551,
+ -2128, 29719, 5729, -552, -2129, 29712, 5738, -553, -2130, 29706, 5747, -555, -2132, 29700, 5756, -556,
+ -2133, 29693, 5765, -557, -2134, 29686, 5774, -558, -2135, 29679, 5783, -559, -2136, 29672, 5792, -560,
+ -2138, 29666, 5801, -561, -2139, 29660, 5810, -563, -2140, 29653, 5819, -564, -2141, 29645, 5829, -565,
+ -2142, 29638, 5838, -566, -2144, 29632, 5847, -567, -2145, 29625, 5856, -568, -2146, 29618, 5865, -569,
+ -2147, 29612, 5874, -571, -2148, 29605, 5883, -572, -2149, 29598, 5892, -573, -2151, 29591, 5902, -574,
+ -2152, 29584, 5911, -575, -2153, 29577, 5920, -576, -2154, 29571, 5929, -578, -2155, 29564, 5938, -579,
+ -2156, 29557, 5947, -580, -2158, 29551, 5956, -581, -2159, 29543, 5966, -582, -2160, 29536, 5975, -583,
+ -2161, 29529, 5984, -584, -2162, 29523, 5993, -586, -2163, 29516, 6002, -587, -2164, 29508, 6012, -588,
+ -2165, 29501, 6021, -589, -2167, 29495, 6030, -590, -2168, 29488, 6039, -591, -2169, 29482, 6048, -593,
+ -2170, 29474, 6058, -594, -2171, 29467, 6067, -595, -2172, 29460, 6076, -596, -2173, 29453, 6085, -597,
+ -2174, 29446, 6094, -598, -2176, 29440, 6104, -600, -2177, 29433, 6113, -601, -2178, 29426, 6122, -602,
+ -2179, 29419, 6131, -603, -2180, 29411, 6141, -604, -2181, 29404, 6150, -605, -2182, 29398, 6159, -607,
+ -2183, 29391, 6168, -608, -2184, 29383, 6178, -609, -2185, 29376, 6187, -610, -2186, 29369, 6196, -611,
+ -2188, 29363, 6206, -613, -2189, 29356, 6215, -614, -2190, 29349, 6224, -615, -2191, 29342, 6233, -616,
+ -2192, 29334, 6243, -617, -2193, 29327, 6252, -618, -2194, 29321, 6261, -620, -2195, 29313, 6271, -621,
+ -2196, 29306, 6280, -622, -2197, 29299, 6289, -623, -2198, 29292, 6298, -624, -2199, 29284, 6308, -625,
+ -2200, 29278, 6317, -627, -2201, 29271, 6326, -628, -2202, 29263, 6336, -629, -2203, 29256, 6345, -630,
+ -2204, 29249, 6354, -631, -2205, 29242, 6364, -633, -2206, 29235, 6373, -634, -2207, 29228, 6382, -635,
+ -2208, 29220, 6392, -636, -2209, 29213, 6401, -637, -2211, 29207, 6411, -639, -2212, 29200, 6420, -640,
+ -2213, 29193, 6429, -641, -2214, 29185, 6439, -642, -2215, 29178, 6448, -643, -2216, 29171, 6457, -644,
+ -2217, 29164, 6467, -646, -2218, 29157, 6476, -647, -2219, 29149, 6486, -648, -2220, 29142, 6495, -649,
+ -2221, 29135, 6504, -650, -2222, 29128, 6514, -652, -2223, 29121, 6523, -653, -2224, 29113, 6533, -654,
+ -2224, 29105, 6542, -655, -2225, 29098, 6551, -656, -2226, 29091, 6561, -658, -2227, 29084, 6570, -659,
+ -2228, 29076, 6580, -660, -2229, 29069, 6589, -661, -2230, 29061, 6599, -662, -2231, 29055, 6608, -664,
+ -2232, 29048, 6617, -665, -2233, 29040, 6627, -666, -2234, 29033, 6636, -667, -2235, 29025, 6646, -668,
+ -2236, 29019, 6655, -670, -2237, 29011, 6665, -671, -2238, 29004, 6674, -672, -2239, 28996, 6684, -673,
+ -2240, 28990, 6693, -675, -2241, 28982, 6703, -676, -2242, 28975, 6712, -677, -2243, 28967, 6722, -678,
+ -2244, 28960, 6731, -679, -2245, 28953, 6741, -681, -2245, 28945, 6750, -682, -2246, 28937, 6760, -683,
+ -2247, 28930, 6769, -684, -2248, 28922, 6779, -685, -2249, 28916, 6788, -687, -2250, 28908, 6798, -688,
+ -2251, 28901, 6807, -689, -2252, 28893, 6817, -690, -2253, 28886, 6826, -691, -2254, 28879, 6836, -693,
+ -2255, 28872, 6845, -694, -2255, 28863, 6855, -695, -2256, 28856, 6864, -696, -2257, 28849, 6874, -698,
+ -2258, 28842, 6883, -699, -2259, 28834, 6893, -700, -2260, 28826, 6903, -701, -2261, 28819, 6912, -702,
+ -2262, 28812, 6922, -704, -2263, 28805, 6931, -705, -2263, 28796, 6941, -706, -2264, 28789, 6950, -707,
+ -2265, 28782, 6960, -709, -2266, 28774, 6970, -710, -2267, 28767, 6979, -711, -2268, 28759, 6989, -712,
+ -2269, 28752, 6998, -713, -2269, 28744, 7008, -715, -2270, 28736, 7018, -716, -2271, 28729, 7027, -717,
+ -2272, 28721, 7037, -718, -2273, 28715, 7046, -720, -2274, 28707, 7056, -721, -2275, 28699, 7066, -722,
+ -2275, 28691, 7075, -723, -2276, 28684, 7085, -725, -2277, 28676, 7095, -726, -2278, 28669, 7104, -727,
+ -2279, 28661, 7114, -728, -2280, 28654, 7123, -729, -2280, 28646, 7133, -731, -2281, 28638, 7143, -732,
+ -2282, 28631, 7152, -733, -2283, 28623, 7162, -734, -2284, 28616, 7172, -736, -2284, 28608, 7181, -737,
+ -2285, 28600, 7191, -738, -2286, 28592, 7201, -739, -2287, 28586, 7210, -741, -2288, 28578, 7220, -742,
+ -2289, 28570, 7230, -743, -2289, 28562, 7239, -744, -2290, 28555, 7249, -746, -2291, 28547, 7259, -747,
+ -2292, 28540, 7268, -748, -2292, 28531, 7278, -749, -2293, 28524, 7288, -751, -2294, 28516, 7298, -752,
+ -2295, 28509, 7307, -753, -2296, 28501, 7317, -754, -2296, 28493, 7327, -756, -2297, 28486, 7336, -757,
+ -2298, 28478, 7346, -758, -2299, 28470, 7356, -759, -2299, 28462, 7366, -761, -2300, 28455, 7375, -762,
+ -2301, 28447, 7385, -763, -2302, 28439, 7395, -764, -2302, 28431, 7405, -766, -2303, 28424, 7414, -767,
+ -2304, 28416, 7424, -768, -2305, 28408, 7434, -769, -2305, 28400, 7444, -771, -2306, 28393, 7453, -772,
+ -2307, 28385, 7463, -773, -2308, 28377, 7473, -774, -2308, 28369, 7483, -776, -2309, 28362, 7492, -777,
+ -2310, 28354, 7502, -778, -2311, 28346, 7512, -779, -2311, 28338, 7522, -781, -2312, 28331, 7531, -782,
+ -2313, 28323, 7541, -783, -2314, 28315, 7551, -784, -2314, 28307, 7561, -786, -2315, 28299, 7571, -787,
+ -2316, 28292, 7580, -788, -2316, 28283, 7590, -789, -2317, 28276, 7600, -791, -2318, 28268, 7610, -792,
+ -2319, 28260, 7620, -793, -2319, 28252, 7629, -794, -2320, 28245, 7639, -796, -2321, 28237, 7649, -797,
+ -2321, 28228, 7659, -798, -2322, 28220, 7669, -799, -2323, 28213, 7679, -801, -2323, 28205, 7688, -802,
+ -2324, 28197, 7698, -803, -2325, 28189, 7708, -804, -2325, 28181, 7718, -806, -2326, 28173, 7728, -807,
+ -2327, 28165, 7738, -808, -2327, 28157, 7748, -810, -2328, 28150, 7757, -811, -2329, 28142, 7767, -812,
+ -2329, 28133, 7777, -813, -2330, 28126, 7787, -815, -2331, 28118, 7797, -816, -2331, 28109, 7807, -817,
+ -2332, 28101, 7817, -818, -2333, 28094, 7827, -820, -2333, 28086, 7836, -821, -2334, 28078, 7846, -822,
+ -2335, 28070, 7856, -823, -2335, 28062, 7866, -825, -2336, 28054, 7876, -826, -2337, 28046, 7886, -827,
+ -2337, 28038, 7896, -829, -2338, 28030, 7906, -830, -2338, 28021, 7916, -831, -2339, 28013, 7926, -832,
+ -2340, 28006, 7936, -834, -2340, 27998, 7945, -835, -2341, 27990, 7955, -836, -2342, 27982, 7965, -837,
+ -2342, 27974, 7975, -839, -2343, 27966, 7985, -840, -2343, 27957, 7995, -841, -2344, 27950, 8005, -843,
+ -2345, 27942, 8015, -844, -2345, 27933, 8025, -845, -2346, 27925, 8035, -846, -2346, 27917, 8045, -848,
+ -2347, 27909, 8055, -849, -2348, 27901, 8065, -850, -2348, 27892, 8075, -851, -2349, 27885, 8085, -853,
+ -2349, 27876, 8095, -854, -2350, 27868, 8105, -855, -2351, 27861, 8115, -857, -2351, 27852, 8125, -858,
+ -2352, 27844, 8135, -859, -2352, 27835, 8145, -860, -2353, 27828, 8155, -862, -2353, 27819, 8165, -863,
+ -2354, 27811, 8175, -864, -2355, 27804, 8185, -866, -2355, 27795, 8195, -867, -2356, 27787, 8205, -868,
+ -2356, 27778, 8215, -869, -2357, 27771, 8225, -871, -2357, 27762, 8235, -872, -2358, 27754, 8245, -873,
+ -2359, 27747, 8255, -875, -2359, 27738, 8265, -876, -2360, 27730, 8275, -877, -2360, 27721, 8285, -878,
+ -2361, 27714, 8295, -880, -2361, 27705, 8305, -881, -2362, 27697, 8315, -882, -2362, 27689, 8325, -884,
+ -2363, 27681, 8335, -885, -2363, 27672, 8345, -886, -2364, 27664, 8355, -887, -2364, 27656, 8365, -889,
+ -2365, 27648, 8375, -890, -2365, 27639, 8385, -891, -2366, 27632, 8395, -893, -2367, 27624, 8405, -894,
+ -2367, 27615, 8415, -895, -2368, 27607, 8425, -896, -2368, 27598, 8436, -898, -2369, 27590, 8446, -899,
+ -2369, 27581, 8456, -900, -2370, 27574, 8466, -902, -2370, 27565, 8476, -903, -2371, 27557, 8486, -904,
+ -2371, 27549, 8496, -906, -2372, 27541, 8506, -907, -2372, 27532, 8516, -908, -2373, 27524, 8526, -909,
+ -2373, 27516, 8536, -911, -2374, 27507, 8547, -912, -2374, 27498, 8557, -913, -2374, 27490, 8567, -915,
+ -2375, 27482, 8577, -916, -2375, 27473, 8587, -917, -2376, 27466, 8597, -919, -2376, 27457, 8607, -920,
+ -2377, 27449, 8617, -921, -2377, 27439, 8628, -922, -2378, 27432, 8638, -924, -2378, 27423, 8648, -925,
+ -2379, 27415, 8658, -926, -2379, 27407, 8668, -928, -2380, 27399, 8678, -929, -2380, 27390, 8688, -930,
+ -2381, 27382, 8699, -932, -2381, 27373, 8709, -933, -2381, 27364, 8719, -934, -2382, 27356, 8729, -935,
+ -2382, 27348, 8739, -937, -2383, 27340, 8749, -938, -2383, 27331, 8759, -939, -2384, 27323, 8770, -941,
+ -2384, 27314, 8780, -942, -2384, 27305, 8790, -943, -2385, 27298, 8800, -945, -2385, 27289, 8810, -946,
+ -2386, 27280, 8821, -947, -2386, 27271, 8831, -948, -2387, 27264, 8841, -950, -2387, 27255, 8851, -951,
+ -2387, 27246, 8861, -952, -2388, 27238, 8872, -954, -2388, 27229, 8882, -955, -2389, 27221, 8892, -956,
+ -2389, 27213, 8902, -958, -2389, 27204, 8912, -959, -2390, 27195, 8923, -960, -2390, 27186, 8933, -961,
+ -2391, 27179, 8943, -963, -2391, 27170, 8953, -964, -2391, 27161, 8963, -965, -2392, 27153, 8974, -967,
+ -2392, 27144, 8984, -968, -2393, 27136, 8994, -969, -2393, 27128, 9004, -971, -2393, 27118, 9015, -972,
+ -2394, 27110, 9025, -973, -2394, 27102, 9035, -975, -2394, 27093, 9045, -976, -2395, 27084, 9056, -977,
+ -2395, 27076, 9066, -979, -2396, 27068, 9076, -980, -2396, 27059, 9086, -981, -2396, 27049, 9097, -982,
+ -2397, 27042, 9107, -984, -2397, 27033, 9117, -985, -2397, 27024, 9127, -986, -2398, 27016, 9138, -988,
+ -2398, 27007, 9148, -989, -2398, 26998, 9158, -990, -2399, 26991, 9168, -992, -2399, 26981, 9179, -993,
+ -2399, 26972, 9189, -994, -2400, 26965, 9199, -996, -2400, 26955, 9210, -997, -2401, 26947, 9220, -998,
+ -2401, 26939, 9230, -1000, -2401, 26930, 9240, -1001, -2402, 26921, 9251, -1002, -2402, 26912, 9261, -1003,
+ -2402, 26904, 9271, -1005, -2402, 26894, 9282, -1006, -2403, 26886, 9292, -1007, -2403, 26878, 9302, -1009,
+ -2403, 26868, 9313, -1010, -2404, 26860, 9323, -1011, -2404, 26852, 9333, -1013, -2404, 26842, 9344, -1014,
+ -2405, 26834, 9354, -1015, -2405, 26826, 9364, -1017, -2405, 26816, 9375, -1018, -2406, 26808, 9385, -1019,
+ -2406, 26800, 9395, -1021, -2406, 26790, 9406, -1022, -2406, 26781, 9416, -1023, -2407, 26774, 9426, -1025,
+ -2407, 26764, 9437, -1026, -2407, 26755, 9447, -1027, -2408, 26747, 9457, -1028, -2408, 26738, 9468, -1030,
+ -2408, 26729, 9478, -1031, -2409, 26721, 9488, -1032, -2409, 26712, 9499, -1034, -2409, 26703, 9509, -1035,
+ -2409, 26693, 9520, -1036, -2410, 26686, 9530, -1038, -2410, 26677, 9540, -1039, -2410, 26667, 9551, -1040,
+ -2410, 26659, 9561, -1042, -2411, 26651, 9571, -1043, -2411, 26641, 9582, -1044, -2411, 26633, 9592, -1046,
+ -2411, 26623, 9603, -1047, -2412, 26615, 9613, -1048, -2412, 26607, 9623, -1050, -2412, 26597, 9634, -1051,
+ -2412, 26588, 9644, -1052, -2413, 26581, 9654, -1054, -2413, 26571, 9665, -1055, -2413, 26562, 9675, -1056,
+ -2413, 26553, 9686, -1058, -2414, 26545, 9696, -1059, -2414, 26535, 9707, -1060, -2414, 26527, 9717, -1062,
+ -2414, 26518, 9727, -1063, -2415, 26509, 9738, -1064, -2415, 26501, 9748, -1066, -2415, 26491, 9759, -1067,
+ -2415, 26482, 9769, -1068, -2415, 26473, 9779, -1069, -2416, 26465, 9790, -1071, -2416, 26456, 9800, -1072,
+ -2416, 26446, 9811, -1073, -2416, 26438, 9821, -1075, -2417, 26429, 9832, -1076, -2417, 26420, 9842, -1077,
+ -2417, 26411, 9853, -1079, -2417, 26402, 9863, -1080, -2417, 26393, 9873, -1081, -2418, 26385, 9884, -1083,
+ -2418, 26376, 9894, -1084, -2418, 26366, 9905, -1085, -2418, 26358, 9915, -1087, -2418, 26348, 9926, -1088,
+ -2419, 26340, 9936, -1089, -2419, 26331, 9947, -1091, -2419, 26322, 9957, -1092, -2419, 26312, 9968, -1093,
+ -2419, 26304, 9978, -1095, -2419, 26294, 9989, -1096, -2420, 26286, 9999, -1097, -2420, 26277, 10010, -1099,
+ -2420, 26268, 10020, -1100, -2420, 26259, 10030, -1101, -2420, 26250, 10041, -1103, -2421, 26242, 10051, -1104,
+ -2421, 26232, 10062, -1105, -2421, 26224, 10072, -1107, -2421, 26214, 10083, -1108, -2421, 26205, 10093, -1109,
+ -2421, 26196, 10104, -1111, -2421, 26187, 10114, -1112, -2422, 26178, 10125, -1113, -2422, 26170, 10135, -1115,
+ -2422, 26160, 10146, -1116, -2422, 26151, 10156, -1117, -2422, 26142, 10167, -1119, -2422, 26132, 10178, -1120,
+ -2422, 26123, 10188, -1121, -2423, 26115, 10199, -1123, -2423, 26106, 10209, -1124, -2423, 26096, 10220, -1125,
+ -2423, 26088, 10230, -1127, -2423, 26078, 10241, -1128, -2423, 26069, 10251, -1129, -2423, 26060, 10262, -1131,
+ -2424, 26052, 10272, -1132, -2424, 26042, 10283, -1133, -2424, 26034, 10293, -1135, -2424, 26024, 10304, -1136,
+ -2424, 26015, 10314, -1137, -2424, 26006, 10325, -1139, -2424, 25996, 10336, -1140, -2424, 25987, 10346, -1141,
+ -2424, 25978, 10357, -1143, -2425, 25970, 10367, -1144, -2425, 25960, 10378, -1145, -2425, 25952, 10388, -1147,
+ -2425, 25942, 10399, -1148, -2425, 25933, 10409, -1149, -2425, 25924, 10420, -1151, -2425, 25914, 10431, -1152,
+ -2425, 25905, 10441, -1153, -2425, 25896, 10452, -1155, -2425, 25887, 10462, -1156, -2425, 25877, 10473, -1157,
+ -2426, 25870, 10483, -1159, -2426, 25860, 10494, -1160, -2426, 25850, 10505, -1161, -2426, 25842, 10515, -1163,
+ -2426, 25832, 10526, -1164, -2426, 25823, 10536, -1165, -2426, 25814, 10547, -1167, -2426, 25804, 10558, -1168,
+ -2426, 25795, 10568, -1169, -2426, 25786, 10579, -1171, -2426, 25777, 10589, -1172, -2426, 25767, 10600, -1173,
+ -2426, 25758, 10611, -1175, -2426, 25749, 10621, -1176, -2427, 25740, 10632, -1177, -2427, 25732, 10642, -1179,
+ -2427, 25722, 10653, -1180, -2427, 25712, 10664, -1181, -2427, 25704, 10674, -1183, -2427, 25694, 10685, -1184,
+ -2427, 25684, 10696, -1185, -2427, 25676, 10706, -1187, -2427, 25666, 10717, -1188, -2427, 25657, 10727, -1189,
+ -2427, 25648, 10738, -1191, -2427, 25638, 10749, -1192, -2427, 25629, 10759, -1193, -2427, 25620, 10770, -1195,
+ -2427, 25610, 10781, -1196, -2427, 25601, 10791, -1197, -2427, 25592, 10802, -1199, -2427, 25582, 10813, -1200,
+ -2427, 25573, 10823, -1201, -2427, 25564, 10834, -1203, -2427, 25555, 10844, -1204, -2427, 25545, 10855, -1205,
+ -2427, 25536, 10866, -1207, -2427, 25527, 10876, -1208, -2427, 25517, 10887, -1209, -2427, 25508, 10898, -1211,
+ -2427, 25499, 10908, -1212, -2427, 25489, 10919, -1213, -2427, 25480, 10930, -1215, -2427, 25471, 10940, -1216,
+ -2427, 25461, 10951, -1217, -2427, 25452, 10962, -1219, -2427, 25443, 10972, -1220, -2427, 25433, 10983, -1221,
+ -2427, 25424, 10994, -1223, -2427, 25414, 11005, -1224, -2427, 25405, 11015, -1225, -2427, 25396, 11026, -1227,
+ -2427, 25386, 11037, -1228, -2427, 25377, 11047, -1229, -2427, 25368, 11058, -1231, -2427, 25358, 11069, -1232,
+ -2427, 25349, 11079, -1233, -2427, 25340, 11090, -1235, -2427, 25330, 11101, -1236, -2427, 25321, 11111, -1237,
+ -2427, 25312, 11122, -1239, -2427, 25302, 11133, -1240, -2427, 25292, 11144, -1241, -2427, 25284, 11154, -1243,
+ -2427, 25274, 11165, -1244, -2427, 25264, 11176, -1245, -2427, 25256, 11186, -1247, -2427, 25246, 11197, -1248,
+ -2427, 25236, 11208, -1249, -2427, 25227, 11219, -1251, -2426, 25217, 11229, -1252, -2426, 25207, 11240, -1253,
+ -2426, 25198, 11251, -1255, -2426, 25189, 11261, -1256, -2426, 25179, 11272, -1257, -2426, 25170, 11283, -1259,
+ -2426, 25160, 11294, -1260, -2426, 25151, 11304, -1261, -2426, 25142, 11315, -1263, -2426, 25132, 11326, -1264,
+ -2426, 25122, 11337, -1265, -2426, 25114, 11347, -1267, -2426, 25104, 11358, -1268, -2426, 25094, 11369, -1269,
+ -2426, 25085, 11380, -1271, -2425, 25075, 11390, -1272, -2425, 25065, 11401, -1273, -2425, 25055, 11412, -1274,
+ -2425, 25047, 11422, -1276, -2425, 25037, 11433, -1277, -2425, 25027, 11444, -1278, -2425, 25018, 11455, -1280,
+ -2425, 25008, 11466, -1281, -2425, 24999, 11476, -1282, -2425, 24990, 11487, -1284, -2424, 24979, 11498, -1285,
+ -2424, 24969, 11509, -1286, -2424, 24961, 11519, -1288, -2424, 24951, 11530, -1289, -2424, 24941, 11541, -1290,
+ -2424, 24932, 11552, -1292, -2424, 24923, 11562, -1293, -2424, 24913, 11573, -1294, -2424, 24904, 11584, -1296,
+ -2423, 24893, 11595, -1297, -2423, 24883, 11606, -1298, -2423, 24875, 11616, -1300, -2423, 24865, 11627, -1301,
+ -2423, 24855, 11638, -1302, -2423, 24846, 11649, -1304, -2423, 24837, 11659, -1305, -2423, 24827, 11670, -1306,
+ -2422, 24817, 11681, -1308, -2422, 24807, 11692, -1309, -2422, 24797, 11703, -1310, -2422, 24789, 11713, -1312,
+ -2422, 24779, 11724, -1313, -2422, 24769, 11735, -1314, -2422, 24760, 11746, -1316, -2421, 24749, 11757, -1317,
+ -2421, 24740, 11767, -1318, -2421, 24731, 11778, -1320, -2421, 24721, 11789, -1321, -2421, 24711, 11800, -1322,
+ -2421, 24702, 11811, -1324, -2421, 24692, 11822, -1325, -2420, 24682, 11832, -1326, -2420, 24673, 11843, -1328,
+ -2420, 24663, 11854, -1329, -2420, 24653, 11865, -1330, -2420, 24644, 11876, -1332, -2420, 24635, 11886, -1333,
+ -2419, 24624, 11897, -1334, -2419, 24615, 11908, -1336, -2419, 24605, 11919, -1337, -2419, 24595, 11930, -1338,
+ -2419, 24586, 11941, -1340, -2419, 24577, 11951, -1341, -2418, 24566, 11962, -1342, -2418, 24557, 11973, -1344,
+ -2418, 24547, 11984, -1345, -2418, 24537, 11995, -1346, -2418, 24528, 12006, -1348, -2417, 24518, 12016, -1349,
+ -2417, 24508, 12027, -1350, -2417, 24499, 12038, -1352, -2417, 24489, 12049, -1353, -2417, 24479, 12060, -1354,
+ -2416, 24469, 12071, -1356, -2416, 24459, 12082, -1357, -2416, 24450, 12092, -1358, -2416, 24441, 12103, -1360,
+ -2416, 24431, 12114, -1361, -2415, 24420, 12125, -1362, -2415, 24411, 12136, -1364, -2415, 24401, 12147, -1365,
+ -2415, 24391, 12158, -1366, -2415, 24382, 12168, -1367, -2414, 24372, 12179, -1369, -2414, 24362, 12190, -1370,
+ -2414, 24352, 12201, -1371, -2414, 24343, 12212, -1373, -2413, 24332, 12223, -1374, -2413, 24322, 12234, -1375,
+ -2413, 24314, 12244, -1377, -2413, 24304, 12255, -1378, -2413, 24294, 12266, -1379, -2412, 24284, 12277, -1381,
+ -2412, 24274, 12288, -1382, -2412, 24264, 12299, -1383, -2412, 24255, 12310, -1385, -2411, 24244, 12321, -1386,
+ -2411, 24234, 12332, -1387, -2411, 24226, 12342, -1389, -2411, 24216, 12353, -1390, -2410, 24205, 12364, -1391,
+ -2410, 24196, 12375, -1393, -2410, 24186, 12386, -1394, -2410, 24176, 12397, -1395, -2409, 24166, 12408, -1397,
+ -2409, 24156, 12419, -1398, -2409, 24146, 12430, -1399, -2409, 24138, 12440, -1401, -2408, 24127, 12451, -1402,
+ -2408, 24117, 12462, -1403, -2408, 24107, 12473, -1404, -2408, 24098, 12484, -1406, -2407, 24087, 12495, -1407,
+ -2407, 24077, 12506, -1408, -2407, 24068, 12517, -1410, -2406, 24057, 12528, -1411, -2406, 24047, 12539, -1412,
+ -2406, 24039, 12549, -1414, -2406, 24029, 12560, -1415, -2405, 24018, 12571, -1416, -2405, 24009, 12582, -1418,
+ -2405, 23999, 12593, -1419, -2404, 23988, 12604, -1420, -2404, 23979, 12615, -1422, -2404, 23969, 12626, -1423,
+ -2404, 23959, 12637, -1424, -2403, 23949, 12648, -1426, -2403, 23939, 12659, -1427, -2403, 23929, 12670, -1428,
+ -2402, 23918, 12681, -1429, -2402, 23910, 12691, -1431, -2402, 23900, 12702, -1432, -2402, 23890, 12713, -1433,
+ -2401, 23880, 12724, -1435, -2401, 23870, 12735, -1436, -2401, 23860, 12746, -1437, -2400, 23850, 12757, -1439,
+ -2400, 23840, 12768, -1440, -2400, 23830, 12779, -1441, -2399, 23820, 12790, -1443, -2399, 23810, 12801, -1444,
+ -2399, 23800, 12812, -1445, -2398, 23790, 12823, -1447, -2398, 23780, 12834, -1448, -2398, 23770, 12845, -1449,
+ -2397, 23759, 12856, -1450, -2397, 23751, 12866, -1452, -2397, 23741, 12877, -1453, -2396, 23730, 12888, -1454,
+ -2396, 23721, 12899, -1456, -2396, 23711, 12910, -1457, -2395, 23700, 12921, -1458, -2395, 23691, 12932, -1460,
+ -2395, 23681, 12943, -1461, -2394, 23670, 12954, -1462, -2394, 23661, 12965, -1464, -2394, 23651, 12976, -1465,
+ -2393, 23640, 12987, -1466, -2393, 23631, 12998, -1468, -2393, 23621, 13009, -1469, -2392, 23610, 13020, -1470,
+ -2392, 23600, 13031, -1471, -2392, 23591, 13042, -1473, -2391, 23580, 13053, -1474, -2391, 23570, 13064, -1475,
+ -2391, 23561, 13075, -1477, -2390, 23550, 13086, -1478, -2390, 23540, 13097, -1479, -2389, 23530, 13108, -1481,
+ -2389, 23520, 13119, -1482, -2389, 23510, 13130, -1483, -2388, 23499, 13141, -1484, -2388, 23490, 13152, -1486,
+ -2388, 23480, 13163, -1487, -2387, 23470, 13173, -1488, -2387, 23461, 13184, -1490, -2387, 23451, 13195, -1491,
+ -2386, 23440, 13206, -1492, -2386, 23431, 13217, -1494, -2385, 23420, 13228, -1495, -2385, 23410, 13239, -1496,
+ -2385, 23400, 13250, -1497, -2384, 23390, 13261, -1499, -2384, 23380, 13272, -1500, -2383, 23369, 13283, -1501,
+ -2383, 23360, 13294, -1503, -2383, 23350, 13305, -1504, -2382, 23339, 13316, -1505, -2382, 23330, 13327, -1507,
+ -2381, 23319, 13338, -1508, -2381, 23309, 13349, -1509, -2381, 23299, 13360, -1510, -2380, 23289, 13371, -1512,
+ -2380, 23279, 13382, -1513, -2379, 23268, 13393, -1514, -2379, 23259, 13404, -1516, -2379, 23249, 13415, -1517,
+ -2378, 23238, 13426, -1518, -2378, 23229, 13437, -1520, -2377, 23218, 13448, -1521, -2377, 23208, 13459, -1522,
+ -2377, 23198, 13470, -1523, -2376, 23188, 13481, -1525, -2376, 23178, 13492, -1526, -2375, 23167, 13503, -1527,
+ -2375, 23158, 13514, -1529, -2374, 23147, 13525, -1530, -2374, 23137, 13536, -1531, -2374, 23127, 13547, -1532,
+ -2373, 23117, 13558, -1534, -2373, 23107, 13569, -1535, -2372, 23096, 13580, -1536, -2372, 23087, 13591, -1538,
+ -2371, 23076, 13602, -1539, -2371, 23066, 13613, -1540, -2371, 23057, 13624, -1542, -2370, 23045, 13636, -1543,
+ -2370, 23035, 13647, -1544, -2369, 23024, 13658, -1545, -2369, 23015, 13669, -1547, -2368, 23004, 13680, -1548,
+ -2368, 22994, 13691, -1549, -2367, 22984, 13702, -1551, -2367, 22974, 13713, -1552, -2367, 22964, 13724, -1553,
+ -2366, 22953, 13735, -1554, -2366, 22944, 13746, -1556, -2365, 22933, 13757, -1557, -2365, 22923, 13768, -1558,
+ -2364, 22913, 13779, -1560, -2364, 22903, 13790, -1561, -2363, 22892, 13801, -1562, -2363, 22882, 13812, -1563,
+ -2362, 22872, 13823, -1565, -2362, 22862, 13834, -1566, -2361, 22851, 13845, -1567, -2361, 22842, 13856, -1569,
+ -2360, 22831, 13867, -1570, -2360, 22821, 13878, -1571, -2359, 22810, 13889, -1572, -2359, 22801, 13900, -1574,
+ -2359, 22791, 13911, -1575, -2358, 22780, 13922, -1576, -2358, 22770, 13933, -1577, -2357, 22760, 13944, -1579,
+ -2357, 22750, 13955, -1580, -2356, 22738, 13967, -1581, -2356, 22729, 13978, -1583, -2355, 22718, 13989, -1584,
+ -2355, 22708, 14000, -1585, -2354, 22697, 14011, -1586, -2354, 22688, 14022, -1588, -2353, 22677, 14033, -1589,
+ -2353, 22667, 14044, -1590, -2352, 22657, 14055, -1592, -2352, 22647, 14066, -1593, -2351, 22636, 14077, -1594,
+ -2351, 22626, 14088, -1595, -2350, 22616, 14099, -1597, -2350, 22606, 14110, -1598, -2349, 22595, 14121, -1599,
+ -2349, 22585, 14132, -1600, -2348, 22575, 14143, -1602, -2348, 22565, 14154, -1603, -2347, 22554, 14165, -1604,
+ -2347, 22544, 14177, -1606, -2346, 22533, 14188, -1607, -2345, 22522, 14199, -1608, -2345, 22512, 14210, -1609,
+ -2344, 22502, 14221, -1611, -2344, 22492, 14232, -1612, -2343, 22481, 14243, -1613, -2343, 22471, 14254, -1614,
+ -2342, 22461, 14265, -1616, -2342, 22451, 14276, -1617, -2341, 22440, 14287, -1618, -2341, 22430, 14298, -1619,
+ -2340, 22420, 14309, -1621, -2340, 22410, 14320, -1622, -2339, 22399, 14331, -1623, -2339, 22389, 14342, -1624,
+ -2338, 22378, 14354, -1626, -2337, 22367, 14365, -1627, -2337, 22357, 14376, -1628, -2336, 22347, 14387, -1630,
+ -2336, 22337, 14398, -1631, -2335, 22326, 14409, -1632, -2335, 22316, 14420, -1633, -2334, 22306, 14431, -1635,
+ -2334, 22296, 14442, -1636, -2333, 22285, 14453, -1637, -2332, 22274, 14464, -1638, -2332, 22265, 14475, -1640,
+ -2331, 22254, 14486, -1641, -2331, 22244, 14497, -1642, -2330, 22232, 14509, -1643, -2330, 22223, 14520, -1645,
+ -2329, 22212, 14531, -1646, -2329, 22202, 14542, -1647, -2328, 22191, 14553, -1648, -2327, 22181, 14564, -1650,
+ -2327, 22171, 14575, -1651, -2326, 22160, 14586, -1652, -2326, 22150, 14597, -1653, -2325, 22140, 14608, -1655,
+ -2325, 22130, 14619, -1656, -2324, 22119, 14630, -1657, -2323, 22107, 14642, -1658, -2323, 22098, 14653, -1660,
+ -2322, 22087, 14664, -1661, -2322, 22077, 14675, -1662, -2321, 22066, 14686, -1663, -2320, 22056, 14697, -1665,
+ -2320, 22046, 14708, -1666, -2319, 22035, 14719, -1667, -2319, 22025, 14730, -1668, -2318, 22015, 14741, -1670,
+ -2317, 22004, 14752, -1671, -2317, 21994, 14763, -1672, -2316, 21982, 14775, -1673, -2316, 21973, 14786, -1675,
+ -2315, 21962, 14797, -1676, -2314, 21951, 14808, -1677, -2314, 21941, 14819, -1678, -2313, 21931, 14830, -1680,
+ -2313, 21921, 14841, -1681, -2312, 21910, 14852, -1682, -2311, 21899, 14863, -1683, -2311, 21890, 14874, -1685,
+ -2310, 21879, 14885, -1686, -2310, 21868, 14897, -1687, -2309, 21857, 14908, -1688, -2308, 21847, 14919, -1690,
+ -2308, 21837, 14930, -1691, -2307, 21826, 14941, -1692, -2306, 21815, 14952, -1693, -2306, 21805, 14963, -1694,
+ -2305, 21795, 14974, -1696, -2305, 21785, 14985, -1697, -2304, 21774, 14996, -1698, -2303, 21763, 15007, -1699,
+ -2303, 21753, 15019, -1701, -2302, 21742, 15030, -1702, -2301, 21731, 15041, -1703, -2301, 21721, 15052, -1704,
+ -2300, 21711, 15063, -1706, -2300, 21701, 15074, -1707, -2299, 21690, 15085, -1708, -2298, 21679, 15096, -1709,
+ -2298, 21669, 15107, -1710, -2297, 21659, 15118, -1712, -2296, 21647, 15130, -1713, -2296, 21637, 15141, -1714,
+ -2295, 21626, 15152, -1715, -2294, 21616, 15163, -1717, -2294, 21606, 15174, -1718, -2293, 21595, 15185, -1719,
+ -2292, 21584, 15196, -1720, -2292, 21575, 15207, -1722, -2291, 21564, 15218, -1723, -2290, 21553, 15229, -1724,
+ -2290, 21542, 15241, -1725, -2289, 21531, 15252, -1726, -2288, 21521, 15263, -1728, -2288, 21511, 15274, -1729,
+ -2287, 21500, 15285, -1730, -2286, 21489, 15296, -1731, -2286, 21480, 15307, -1733, -2285, 21469, 15318, -1734,
+ -2284, 21458, 15329, -1735, -2284, 21447, 15341, -1736, -2283, 21436, 15352, -1737, -2282, 21426, 15363, -1739,
+ -2282, 21416, 15374, -1740, -2281, 21405, 15385, -1741, -2280, 21394, 15396, -1742, -2280, 21384, 15407, -1743,
+ -2279, 21374, 15418, -1745, -2278, 21363, 15429, -1746, -2278, 21353, 15440, -1747, -2277, 21341, 15452, -1748,
+ -2276, 21331, 15463, -1750, -2276, 21321, 15474, -1751, -2275, 21310, 15485, -1752, -2274, 21299, 15496, -1753,
+ -2274, 21289, 15507, -1754, -2273, 21279, 15518, -1756, -2272, 21268, 15529, -1757, -2271, 21257, 15540, -1758,
+ -2271, 21246, 15552, -1759, -2270, 21235, 15563, -1760, -2269, 21225, 15574, -1762, -2269, 21215, 15585, -1763,
+ -2268, 21204, 15596, -1764, -2267, 21193, 15607, -1765, -2267, 21183, 15618, -1766, -2266, 21173, 15629, -1768,
+ -2265, 21162, 15640, -1769, -2264, 21150, 15652, -1770, -2264, 21140, 15663, -1771, -2263, 21129, 15674, -1772,
+ -2262, 21119, 15685, -1774, -2262, 21109, 15696, -1775, -2261, 21098, 15707, -1776, -2260, 21087, 15718, -1777,
+ -2259, 21076, 15729, -1778, -2259, 21067, 15740, -1780, -2258, 21055, 15752, -1781, -2257, 21044, 15763, -1782,
+ -2257, 21034, 15774, -1783, -2256, 21023, 15785, -1784, -2255, 21013, 15796, -1786, -2254, 21002, 15807, -1787,
+ -2254, 20992, 15818, -1788, -2253, 20981, 15829, -1789, -2252, 20970, 15840, -1790, -2251, 20959, 15852, -1792,
+ -2251, 20949, 15863, -1793, -2250, 20938, 15874, -1794, -2249, 20927, 15885, -1795, -2249, 20917, 15896, -1796,
+ -2248, 20906, 15907, -1797, -2247, 20896, 15918, -1799, -2246, 20885, 15929, -1800, -2246, 20875, 15940, -1801,
+ -2245, 20863, 15952, -1802, -2244, 20852, 15963, -1803, -2243, 20842, 15974, -1805, -2243, 20832, 15985, -1806,
+ -2242, 20821, 15996, -1807, -2241, 20810, 16007, -1808, -2240, 20799, 16018, -1809, -2240, 20789, 16029, -1810,
+ -2239, 20779, 16040, -1812, -2238, 20767, 16052, -1813, -2237, 20756, 16063, -1814, -2237, 20746, 16074, -1815,
+ -2236, 20735, 16085, -1816, -2235, 20725, 16096, -1818, -2234, 20714, 16107, -1819, -2233, 20703, 16118, -1820,
+ -2233, 20693, 16129, -1821, -2232, 20682, 16140, -1822, -2231, 20670, 16152, -1823, -2230, 20660, 16163, -1825,
+ -2230, 20650, 16174, -1826, -2229, 20639, 16185, -1827, -2228, 20628, 16196, -1828, -2227, 20617, 16207, -1829,
+ -2227, 20607, 16218, -1830, -2226, 20597, 16229, -1832, -2225, 20586, 16240, -1833, -2224, 20574, 16252, -1834,
+ -2223, 20563, 16263, -1835, -2223, 20553, 16274, -1836, -2222, 20542, 16285, -1837, -2221, 20532, 16296, -1839,
+ -2220, 20521, 16307, -1840, -2220, 20511, 16318, -1841, -2219, 20500, 16329, -1842, -2218, 20489, 16340, -1843,
+ -2217, 20478, 16351, -1844, -2216, 20466, 16363, -1845, -2216, 20457, 16374, -1847, -2215, 20446, 16385, -1848,
+ -2214, 20435, 16396, -1849, -2213, 20424, 16407, -1850, -2212, 20413, 16418, -1851, -2212, 20403, 16429, -1852,
+ -2211, 20393, 16440, -1854, -2210, 20382, 16451, -1855, -2209, 20370, 16463, -1856, -2208, 20359, 16474, -1857,
+ -2208, 20349, 16485, -1858, -2207, 20338, 16496, -1859, -2206, 20327, 16507, -1860, -2205, 20317, 16518, -1862,
+ -2204, 20306, 16529, -1863, -2204, 20296, 16540, -1864, -2203, 20285, 16551, -1865, -2202, 20273, 16563, -1866,
+ -2201, 20262, 16574, -1867, -2200, 20251, 16585, -1868, -2199, 20241, 16596, -1870, -2199, 20231, 16607, -1871,
+ -2198, 20220, 16618, -1872, -2197, 20209, 16629, -1873, -2196, 20198, 16640, -1874, -2195, 20187, 16651, -1875,
+ -2195, 20177, 16662, -1876, -2194, 20166, 16674, -1878, -2193, 20155, 16685, -1879, -2192, 20144, 16696, -1880,
+ -2191, 20133, 16707, -1881, -2190, 20122, 16718, -1882, -2190, 20112, 16729, -1883, -2189, 20101, 16740, -1884,
+ -2188, 20091, 16751, -1886, -2187, 20080, 16762, -1887, -2186, 20069, 16773, -1888, -2185, 20057, 16785, -1889,
+ -2185, 20047, 16796, -1890, -2184, 20036, 16807, -1891, -2183, 20025, 16818, -1892, -2182, 20014, 16829, -1893,
+ -2181, 20004, 16840, -1895, -2180, 19993, 16851, -1896, -2179, 19982, 16862, -1897, -2179, 19972, 16873, -1898,
+ -2178, 19961, 16884, -1899, -2177, 19950, 16895, -1900, -2176, 19938, 16907, -1901, -2175, 19927, 16918, -1902,
+ -2174, 19917, 16929, -1904, -2174, 19907, 16940, -1905, -2173, 19896, 16951, -1906, -2172, 19885, 16962, -1907,
+ -2171, 19874, 16973, -1908, -2170, 19863, 16984, -1909, -2169, 19852, 16995, -1910, -2168, 19841, 17006, -1911,
+ -2168, 19831, 17018, -1913, -2167, 19820, 17029, -1914, -2166, 19809, 17040, -1915, -2165, 19798, 17051, -1916,
+ -2164, 19787, 17062, -1917, -2163, 19776, 17073, -1918, -2162, 19765, 17084, -1919, -2161, 19754, 17095, -1920,
+ -2161, 19744, 17106, -1921, -2160, 19733, 17117, -1922, -2159, 19723, 17128, -1924, -2158, 19712, 17139, -1925,
+ -2157, 19700, 17151, -1926, -2156, 19689, 17162, -1927, -2155, 19678, 17173, -1928, -2154, 19667, 17184, -1929,
+ -2154, 19657, 17195, -1930, -2153, 19646, 17206, -1931, -2152, 19635, 17217, -1932, -2151, 19625, 17228, -1934,
+ -2150, 19614, 17239, -1935, -2149, 19603, 17250, -1936, -2148, 19592, 17261, -1937, -2147, 19581, 17272, -1938,
+ -2146, 19569, 17284, -1939, -2146, 19559, 17295, -1940, -2145, 19548, 17306, -1941, -2144, 19537, 17317, -1942,
+ -2143, 19526, 17328, -1943, -2142, 19515, 17339, -1944, -2141, 19505, 17350, -1946, -2140, 19494, 17361, -1947,
+ -2139, 19483, 17372, -1948, -2138, 19472, 17383, -1949, -2137, 19461, 17394, -1950, -2137, 19451, 17405, -1951,
+ -2136, 19440, 17416, -1952, -2135, 19429, 17427, -1953, -2134, 19417, 17439, -1954, -2133, 19406, 17450, -1955,
+ -2132, 19395, 17461, -1956, -2131, 19384, 17472, -1957, -2130, 19374, 17483, -1959, -2129, 19363, 17494, -1960,
+ -2128, 19352, 17505, -1961, -2127, 19341, 17516, -1962, -2127, 19331, 17527, -1963, -2126, 19320, 17538, -1964,
+ -2125, 19309, 17549, -1965, -2124, 19298, 17560, -1966, -2123, 19287, 17571, -1967, -2122, 19276, 17582, -1968,
+ -2121, 19265, 17593, -1969, -2120, 19253, 17605, -1970, -2119, 19242, 17616, -1971, -2118, 19231, 17627, -1972,
+ -2117, 19221, 17638, -1974, -2116, 19210, 17649, -1975, -2116, 19200, 17660, -1976, -2115, 19189, 17671, -1977,
+ -2114, 19178, 17682, -1978, -2113, 19167, 17693, -1979, -2112, 19156, 17704, -1980, -2111, 19145, 17715, -1981,
+ -2110, 19134, 17726, -1982, -2109, 19123, 17737, -1983, -2108, 19112, 17748, -1984, -2107, 19101, 17759, -1985,
+ -2106, 19090, 17770, -1986, -2105, 19079, 17781, -1987, -2104, 19068, 17792, -1988, -2103, 19056, 17804, -1989,
+ -2102, 19046, 17815, -1991, -2101, 19035, 17826, -1992, -2101, 19025, 17837, -1993, -2100, 19014, 17848, -1994,
+ -2099, 19003, 17859, -1995, -2098, 18992, 17870, -1996, -2097, 18981, 17881, -1997, -2096, 18970, 17892, -1998,
+ -2095, 18959, 17903, -1999, -2094, 18948, 17914, -2000, -2093, 18937, 17925, -2001, -2092, 18926, 17936, -2002,
+ -2091, 18915, 17947, -2003, -2090, 18904, 17958, -2004, -2089, 18893, 17969, -2005, -2088, 18882, 17980, -2006,
+ -2087, 18871, 17991, -2007, -2086, 18860, 18002, -2008, -2085, 18849, 18013, -2009, -2084, 18838, 18024, -2010,
+ -2083, 18827, 18035, -2011, -2082, 18816, 18046, -2012, -2081, 18805, 18057, -2013, -2080, 18794, 18068, -2014,
+ -2079, 18783, 18080, -2016, -2079, 18773, 18091, -2017, -2078, 18762, 18102, -2018, -2077, 18751, 18113, -2019,
+ -2076, 18740, 18124, -2020, -2075, 18729, 18135, -2021, -2074, 18718, 18146, -2022, -2073, 18707, 18157, -2023,
+ -2072, 18696, 18168, -2024, -2071, 18685, 18179, -2025, -2070, 18674, 18190, -2026, -2069, 18663, 18201, -2027,
+ -2068, 18652, 18212, -2028, -2067, 18641, 18223, -2029, -2066, 18630, 18234, -2030, -2065, 18619, 18245, -2031,
+ -2064, 18608, 18256, -2032, -2063, 18597, 18267, -2033, -2062, 18586, 18278, -2034, -2061, 18575, 18289, -2035,
+ -2060, 18564, 18300, -2036, -2059, 18553, 18311, -2037, -2058, 18542, 18322, -2038, -2057, 18531, 18333, -2039,
+ -2056, 18520, 18344, -2040, -2055, 18509, 18355, -2041, -2054, 18498, 18366, -2042, -2053, 18487, 18377, -2043,
+ -2052, 18476, 18388, -2044, -2051, 18465, 18399, -2045, -2050, 18454, 18410, -2046, -2049, 18443, 18421, -2047,
+ -2048, 18432, 18432, -2048, -2047, 18421, 18443, -2049, -2046, 18410, 18454, -2050, -2045, 18399, 18465, -2051,
+ -2044, 18388, 18476, -2052, -2043, 18377, 18487, -2053, -2042, 18366, 18498, -2054, -2041, 18355, 18509, -2055,
+ -2040, 18344, 18520, -2056, -2039, 18333, 18531, -2057, -2038, 18322, 18542, -2058, -2037, 18311, 18553, -2059,
+ -2036, 18300, 18564, -2060, -2035, 18289, 18575, -2061, -2034, 18278, 18586, -2062, -2033, 18267, 18597, -2063,
+ -2032, 18256, 18608, -2064, -2031, 18245, 18619, -2065, -2030, 18234, 18630, -2066, -2029, 18223, 18641, -2067,
+ -2028, 18212, 18652, -2068, -2027, 18201, 18663, -2069, -2026, 18190, 18674, -2070, -2025, 18179, 18685, -2071,
+ -2024, 18168, 18696, -2072, -2023, 18157, 18707, -2073, -2022, 18146, 18718, -2074, -2021, 18135, 18729, -2075,
+ -2020, 18124, 18740, -2076, -2019, 18113, 18751, -2077, -2018, 18102, 18762, -2078, -2017, 18091, 18773, -2079,
+ -2016, 18080, 18783, -2079, -2014, 18068, 18794, -2080, -2013, 18057, 18805, -2081, -2012, 18046, 18816, -2082,
+ -2011, 18035, 18827, -2083, -2010, 18024, 18838, -2084, -2009, 18013, 18849, -2085, -2008, 18002, 18860, -2086,
+ -2007, 17991, 18871, -2087, -2006, 17980, 18882, -2088, -2005, 17969, 18893, -2089, -2004, 17958, 18904, -2090,
+ -2003, 17947, 18915, -2091, -2002, 17936, 18926, -2092, -2001, 17925, 18937, -2093, -2000, 17914, 18948, -2094,
+ -1999, 17903, 18959, -2095, -1998, 17892, 18970, -2096, -1997, 17881, 18981, -2097, -1996, 17870, 18992, -2098,
+ -1995, 17859, 19003, -2099, -1994, 17848, 19014, -2100, -1993, 17837, 19025, -2101, -1992, 17826, 19035, -2101,
+ -1991, 17815, 19046, -2102, -1989, 17804, 19056, -2103, -1988, 17792, 19068, -2104, -1987, 17781, 19079, -2105,
+ -1986, 17770, 19090, -2106, -1985, 17759, 19101, -2107, -1984, 17748, 19112, -2108, -1983, 17737, 19123, -2109,
+ -1982, 17726, 19134, -2110, -1981, 17715, 19145, -2111, -1980, 17704, 19156, -2112, -1979, 17693, 19167, -2113,
+ -1978, 17682, 19178, -2114, -1977, 17671, 19189, -2115, -1976, 17660, 19200, -2116, -1975, 17649, 19210, -2116,
+ -1974, 17638, 19221, -2117, -1972, 17627, 19231, -2118, -1971, 17616, 19242, -2119, -1970, 17605, 19253, -2120,
+ -1969, 17593, 19265, -2121, -1968, 17582, 19276, -2122, -1967, 17571, 19287, -2123, -1966, 17560, 19298, -2124,
+ -1965, 17549, 19309, -2125, -1964, 17538, 19320, -2126, -1963, 17527, 19331, -2127, -1962, 17516, 19341, -2127,
+ -1961, 17505, 19352, -2128, -1960, 17494, 19363, -2129, -1959, 17483, 19374, -2130, -1957, 17472, 19384, -2131,
+ -1956, 17461, 19395, -2132, -1955, 17450, 19406, -2133, -1954, 17439, 19417, -2134, -1953, 17427, 19429, -2135,
+ -1952, 17416, 19440, -2136, -1951, 17405, 19451, -2137, -1950, 17394, 19461, -2137, -1949, 17383, 19472, -2138,
+ -1948, 17372, 19483, -2139, -1947, 17361, 19494, -2140, -1946, 17350, 19505, -2141, -1944, 17339, 19515, -2142,
+ -1943, 17328, 19526, -2143, -1942, 17317, 19537, -2144, -1941, 17306, 19548, -2145, -1940, 17295, 19559, -2146,
+ -1939, 17284, 19569, -2146, -1938, 17272, 19581, -2147, -1937, 17261, 19592, -2148, -1936, 17250, 19603, -2149,
+ -1935, 17239, 19614, -2150, -1934, 17228, 19625, -2151, -1932, 17217, 19635, -2152, -1931, 17206, 19646, -2153,
+ -1930, 17195, 19657, -2154, -1929, 17184, 19667, -2154, -1928, 17173, 19678, -2155, -1927, 17162, 19689, -2156,
+ -1926, 17151, 19700, -2157, -1925, 17139, 19712, -2158, -1924, 17128, 19723, -2159, -1922, 17117, 19733, -2160,
+ -1921, 17106, 19744, -2161, -1920, 17095, 19754, -2161, -1919, 17084, 19765, -2162, -1918, 17073, 19776, -2163,
+ -1917, 17062, 19787, -2164, -1916, 17051, 19798, -2165, -1915, 17040, 19809, -2166, -1914, 17029, 19820, -2167,
+ -1913, 17018, 19831, -2168, -1911, 17006, 19841, -2168, -1910, 16995, 19852, -2169, -1909, 16984, 19863, -2170,
+ -1908, 16973, 19874, -2171, -1907, 16962, 19885, -2172, -1906, 16951, 19896, -2173, -1905, 16940, 19907, -2174,
+ -1904, 16929, 19917, -2174, -1902, 16918, 19927, -2175, -1901, 16907, 19938, -2176, -1900, 16895, 19950, -2177,
+ -1899, 16884, 19961, -2178, -1898, 16873, 19972, -2179, -1897, 16862, 19982, -2179, -1896, 16851, 19993, -2180,
+ -1895, 16840, 20004, -2181, -1893, 16829, 20014, -2182, -1892, 16818, 20025, -2183, -1891, 16807, 20036, -2184,
+ -1890, 16796, 20047, -2185, -1889, 16785, 20057, -2185, -1888, 16773, 20069, -2186, -1887, 16762, 20080, -2187,
+ -1886, 16751, 20091, -2188, -1884, 16740, 20101, -2189, -1883, 16729, 20112, -2190, -1882, 16718, 20122, -2190,
+ -1881, 16707, 20133, -2191, -1880, 16696, 20144, -2192, -1879, 16685, 20155, -2193, -1878, 16674, 20166, -2194,
+ -1876, 16662, 20177, -2195, -1875, 16651, 20187, -2195, -1874, 16640, 20198, -2196, -1873, 16629, 20209, -2197,
+ -1872, 16618, 20220, -2198, -1871, 16607, 20231, -2199, -1870, 16596, 20241, -2199, -1868, 16585, 20251, -2200,
+ -1867, 16574, 20262, -2201, -1866, 16563, 20273, -2202, -1865, 16551, 20285, -2203, -1864, 16540, 20296, -2204,
+ -1863, 16529, 20306, -2204, -1862, 16518, 20317, -2205, -1860, 16507, 20327, -2206, -1859, 16496, 20338, -2207,
+ -1858, 16485, 20349, -2208, -1857, 16474, 20359, -2208, -1856, 16463, 20370, -2209, -1855, 16451, 20382, -2210,
+ -1854, 16440, 20393, -2211, -1852, 16429, 20403, -2212, -1851, 16418, 20413, -2212, -1850, 16407, 20424, -2213,
+ -1849, 16396, 20435, -2214, -1848, 16385, 20446, -2215, -1847, 16374, 20457, -2216, -1845, 16363, 20466, -2216,
+ -1844, 16351, 20478, -2217, -1843, 16340, 20489, -2218, -1842, 16329, 20500, -2219, -1841, 16318, 20511, -2220,
+ -1840, 16307, 20521, -2220, -1839, 16296, 20532, -2221, -1837, 16285, 20542, -2222, -1836, 16274, 20553, -2223,
+ -1835, 16263, 20563, -2223, -1834, 16252, 20574, -2224, -1833, 16240, 20586, -2225, -1832, 16229, 20597, -2226,
+ -1830, 16218, 20607, -2227, -1829, 16207, 20617, -2227, -1828, 16196, 20628, -2228, -1827, 16185, 20639, -2229,
+ -1826, 16174, 20650, -2230, -1825, 16163, 20660, -2230, -1823, 16152, 20670, -2231, -1822, 16140, 20682, -2232,
+ -1821, 16129, 20693, -2233, -1820, 16118, 20703, -2233, -1819, 16107, 20714, -2234, -1818, 16096, 20725, -2235,
+ -1816, 16085, 20735, -2236, -1815, 16074, 20746, -2237, -1814, 16063, 20756, -2237, -1813, 16052, 20767, -2238,
+ -1812, 16040, 20779, -2239, -1810, 16029, 20789, -2240, -1809, 16018, 20799, -2240, -1808, 16007, 20810, -2241,
+ -1807, 15996, 20821, -2242, -1806, 15985, 20832, -2243, -1805, 15974, 20842, -2243, -1803, 15963, 20852, -2244,
+ -1802, 15952, 20863, -2245, -1801, 15940, 20875, -2246, -1800, 15929, 20885, -2246, -1799, 15918, 20896, -2247,
+ -1797, 15907, 20906, -2248, -1796, 15896, 20917, -2249, -1795, 15885, 20927, -2249, -1794, 15874, 20938, -2250,
+ -1793, 15863, 20949, -2251, -1792, 15852, 20959, -2251, -1790, 15840, 20970, -2252, -1789, 15829, 20981, -2253,
+ -1788, 15818, 20992, -2254, -1787, 15807, 21002, -2254, -1786, 15796, 21013, -2255, -1784, 15785, 21023, -2256,
+ -1783, 15774, 21034, -2257, -1782, 15763, 21044, -2257, -1781, 15752, 21055, -2258, -1780, 15740, 21067, -2259,
+ -1778, 15729, 21076, -2259, -1777, 15718, 21087, -2260, -1776, 15707, 21098, -2261, -1775, 15696, 21109, -2262,
+ -1774, 15685, 21119, -2262, -1772, 15674, 21129, -2263, -1771, 15663, 21140, -2264, -1770, 15652, 21150, -2264,
+ -1769, 15640, 21162, -2265, -1768, 15629, 21173, -2266, -1766, 15618, 21183, -2267, -1765, 15607, 21193, -2267,
+ -1764, 15596, 21204, -2268, -1763, 15585, 21215, -2269, -1762, 15574, 21225, -2269, -1760, 15563, 21235, -2270,
+ -1759, 15552, 21246, -2271, -1758, 15540, 21257, -2271, -1757, 15529, 21268, -2272, -1756, 15518, 21279, -2273,
+ -1754, 15507, 21289, -2274, -1753, 15496, 21299, -2274, -1752, 15485, 21310, -2275, -1751, 15474, 21321, -2276,
+ -1750, 15463, 21331, -2276, -1748, 15452, 21341, -2277, -1747, 15440, 21353, -2278, -1746, 15429, 21363, -2278,
+ -1745, 15418, 21374, -2279, -1743, 15407, 21384, -2280, -1742, 15396, 21394, -2280, -1741, 15385, 21405, -2281,
+ -1740, 15374, 21416, -2282, -1739, 15363, 21426, -2282, -1737, 15352, 21436, -2283, -1736, 15341, 21447, -2284,
+ -1735, 15329, 21458, -2284, -1734, 15318, 21469, -2285, -1733, 15307, 21480, -2286, -1731, 15296, 21489, -2286,
+ -1730, 15285, 21500, -2287, -1729, 15274, 21511, -2288, -1728, 15263, 21521, -2288, -1726, 15252, 21531, -2289,
+ -1725, 15241, 21542, -2290, -1724, 15229, 21553, -2290, -1723, 15218, 21564, -2291, -1722, 15207, 21575, -2292,
+ -1720, 15196, 21584, -2292, -1719, 15185, 21595, -2293, -1718, 15174, 21606, -2294, -1717, 15163, 21616, -2294,
+ -1715, 15152, 21626, -2295, -1714, 15141, 21637, -2296, -1713, 15130, 21647, -2296, -1712, 15118, 21659, -2297,
+ -1710, 15107, 21669, -2298, -1709, 15096, 21679, -2298, -1708, 15085, 21690, -2299, -1707, 15074, 21701, -2300,
+ -1706, 15063, 21711, -2300, -1704, 15052, 21721, -2301, -1703, 15041, 21731, -2301, -1702, 15030, 21742, -2302,
+ -1701, 15019, 21753, -2303, -1699, 15007, 21763, -2303, -1698, 14996, 21774, -2304, -1697, 14985, 21785, -2305,
+ -1696, 14974, 21795, -2305, -1694, 14963, 21805, -2306, -1693, 14952, 21815, -2306, -1692, 14941, 21826, -2307,
+ -1691, 14930, 21837, -2308, -1690, 14919, 21847, -2308, -1688, 14908, 21857, -2309, -1687, 14897, 21868, -2310,
+ -1686, 14885, 21879, -2310, -1685, 14874, 21890, -2311, -1683, 14863, 21899, -2311, -1682, 14852, 21910, -2312,
+ -1681, 14841, 21921, -2313, -1680, 14830, 21931, -2313, -1678, 14819, 21941, -2314, -1677, 14808, 21951, -2314,
+ -1676, 14797, 21962, -2315, -1675, 14786, 21973, -2316, -1673, 14775, 21982, -2316, -1672, 14763, 21994, -2317,
+ -1671, 14752, 22004, -2317, -1670, 14741, 22015, -2318, -1668, 14730, 22025, -2319, -1667, 14719, 22035, -2319,
+ -1666, 14708, 22046, -2320, -1665, 14697, 22056, -2320, -1663, 14686, 22066, -2321, -1662, 14675, 22077, -2322,
+ -1661, 14664, 22087, -2322, -1660, 14653, 22098, -2323, -1658, 14642, 22107, -2323, -1657, 14630, 22119, -2324,
+ -1656, 14619, 22130, -2325, -1655, 14608, 22140, -2325, -1653, 14597, 22150, -2326, -1652, 14586, 22160, -2326,
+ -1651, 14575, 22171, -2327, -1650, 14564, 22181, -2327, -1648, 14553, 22191, -2328, -1647, 14542, 22202, -2329,
+ -1646, 14531, 22212, -2329, -1645, 14520, 22223, -2330, -1643, 14509, 22232, -2330, -1642, 14497, 22244, -2331,
+ -1641, 14486, 22254, -2331, -1640, 14475, 22265, -2332, -1638, 14464, 22274, -2332, -1637, 14453, 22285, -2333,
+ -1636, 14442, 22296, -2334, -1635, 14431, 22306, -2334, -1633, 14420, 22316, -2335, -1632, 14409, 22326, -2335,
+ -1631, 14398, 22337, -2336, -1630, 14387, 22347, -2336, -1628, 14376, 22357, -2337, -1627, 14365, 22367, -2337,
+ -1626, 14354, 22378, -2338, -1624, 14342, 22389, -2339, -1623, 14331, 22399, -2339, -1622, 14320, 22410, -2340,
+ -1621, 14309, 22420, -2340, -1619, 14298, 22430, -2341, -1618, 14287, 22440, -2341, -1617, 14276, 22451, -2342,
+ -1616, 14265, 22461, -2342, -1614, 14254, 22471, -2343, -1613, 14243, 22481, -2343, -1612, 14232, 22492, -2344,
+ -1611, 14221, 22502, -2344, -1609, 14210, 22512, -2345, -1608, 14199, 22522, -2345, -1607, 14188, 22533, -2346,
+ -1606, 14177, 22544, -2347, -1604, 14165, 22554, -2347, -1603, 14154, 22565, -2348, -1602, 14143, 22575, -2348,
+ -1600, 14132, 22585, -2349, -1599, 14121, 22595, -2349, -1598, 14110, 22606, -2350, -1597, 14099, 22616, -2350,
+ -1595, 14088, 22626, -2351, -1594, 14077, 22636, -2351, -1593, 14066, 22647, -2352, -1592, 14055, 22657, -2352,
+ -1590, 14044, 22667, -2353, -1589, 14033, 22677, -2353, -1588, 14022, 22688, -2354, -1586, 14011, 22697, -2354,
+ -1585, 14000, 22708, -2355, -1584, 13989, 22718, -2355, -1583, 13978, 22729, -2356, -1581, 13967, 22738, -2356,
+ -1580, 13955, 22750, -2357, -1579, 13944, 22760, -2357, -1577, 13933, 22770, -2358, -1576, 13922, 22780, -2358,
+ -1575, 13911, 22791, -2359, -1574, 13900, 22801, -2359, -1572, 13889, 22810, -2359, -1571, 13878, 22821, -2360,
+ -1570, 13867, 22831, -2360, -1569, 13856, 22842, -2361, -1567, 13845, 22851, -2361, -1566, 13834, 22862, -2362,
+ -1565, 13823, 22872, -2362, -1563, 13812, 22882, -2363, -1562, 13801, 22892, -2363, -1561, 13790, 22903, -2364,
+ -1560, 13779, 22913, -2364, -1558, 13768, 22923, -2365, -1557, 13757, 22933, -2365, -1556, 13746, 22944, -2366,
+ -1554, 13735, 22953, -2366, -1553, 13724, 22964, -2367, -1552, 13713, 22974, -2367, -1551, 13702, 22984, -2367,
+ -1549, 13691, 22994, -2368, -1548, 13680, 23004, -2368, -1547, 13669, 23015, -2369, -1545, 13658, 23024, -2369,
+ -1544, 13647, 23035, -2370, -1543, 13636, 23045, -2370, -1542, 13624, 23057, -2371, -1540, 13613, 23066, -2371,
+ -1539, 13602, 23076, -2371, -1538, 13591, 23087, -2372, -1536, 13580, 23096, -2372, -1535, 13569, 23107, -2373,
+ -1534, 13558, 23117, -2373, -1532, 13547, 23127, -2374, -1531, 13536, 23137, -2374, -1530, 13525, 23147, -2374,
+ -1529, 13514, 23158, -2375, -1527, 13503, 23167, -2375, -1526, 13492, 23178, -2376, -1525, 13481, 23188, -2376,
+ -1523, 13470, 23198, -2377, -1522, 13459, 23208, -2377, -1521, 13448, 23218, -2377, -1520, 13437, 23229, -2378,
+ -1518, 13426, 23238, -2378, -1517, 13415, 23249, -2379, -1516, 13404, 23259, -2379, -1514, 13393, 23268, -2379,
+ -1513, 13382, 23279, -2380, -1512, 13371, 23289, -2380, -1510, 13360, 23299, -2381, -1509, 13349, 23309, -2381,
+ -1508, 13338, 23319, -2381, -1507, 13327, 23330, -2382, -1505, 13316, 23339, -2382, -1504, 13305, 23350, -2383,
+ -1503, 13294, 23360, -2383, -1501, 13283, 23369, -2383, -1500, 13272, 23380, -2384, -1499, 13261, 23390, -2384,
+ -1497, 13250, 23400, -2385, -1496, 13239, 23410, -2385, -1495, 13228, 23420, -2385, -1494, 13217, 23431, -2386,
+ -1492, 13206, 23440, -2386, -1491, 13195, 23451, -2387, -1490, 13184, 23461, -2387, -1488, 13173, 23470, -2387,
+ -1487, 13163, 23480, -2388, -1486, 13152, 23490, -2388, -1484, 13141, 23499, -2388, -1483, 13130, 23510, -2389,
+ -1482, 13119, 23520, -2389, -1481, 13108, 23530, -2389, -1479, 13097, 23540, -2390, -1478, 13086, 23550, -2390,
+ -1477, 13075, 23561, -2391, -1475, 13064, 23570, -2391, -1474, 13053, 23580, -2391, -1473, 13042, 23591, -2392,
+ -1471, 13031, 23600, -2392, -1470, 13020, 23610, -2392, -1469, 13009, 23621, -2393, -1468, 12998, 23631, -2393,
+ -1466, 12987, 23640, -2393, -1465, 12976, 23651, -2394, -1464, 12965, 23661, -2394, -1462, 12954, 23670, -2394,
+ -1461, 12943, 23681, -2395, -1460, 12932, 23691, -2395, -1458, 12921, 23700, -2395, -1457, 12910, 23711, -2396,
+ -1456, 12899, 23721, -2396, -1454, 12888, 23730, -2396, -1453, 12877, 23741, -2397, -1452, 12866, 23751, -2397,
+ -1450, 12856, 23759, -2397, -1449, 12845, 23770, -2398, -1448, 12834, 23780, -2398, -1447, 12823, 23790, -2398,
+ -1445, 12812, 23800, -2399, -1444, 12801, 23810, -2399, -1443, 12790, 23820, -2399, -1441, 12779, 23830, -2400,
+ -1440, 12768, 23840, -2400, -1439, 12757, 23850, -2400, -1437, 12746, 23860, -2401, -1436, 12735, 23870, -2401,
+ -1435, 12724, 23880, -2401, -1433, 12713, 23890, -2402, -1432, 12702, 23900, -2402, -1431, 12691, 23910, -2402,
+ -1429, 12681, 23918, -2402, -1428, 12670, 23929, -2403, -1427, 12659, 23939, -2403, -1426, 12648, 23949, -2403,
+ -1424, 12637, 23959, -2404, -1423, 12626, 23969, -2404, -1422, 12615, 23979, -2404, -1420, 12604, 23988, -2404,
+ -1419, 12593, 23999, -2405, -1418, 12582, 24009, -2405, -1416, 12571, 24018, -2405, -1415, 12560, 24029, -2406,
+ -1414, 12549, 24039, -2406, -1412, 12539, 24047, -2406, -1411, 12528, 24057, -2406, -1410, 12517, 24068, -2407,
+ -1408, 12506, 24077, -2407, -1407, 12495, 24087, -2407, -1406, 12484, 24098, -2408, -1404, 12473, 24107, -2408,
+ -1403, 12462, 24117, -2408, -1402, 12451, 24127, -2408, -1401, 12440, 24138, -2409, -1399, 12430, 24146, -2409,
+ -1398, 12419, 24156, -2409, -1397, 12408, 24166, -2409, -1395, 12397, 24176, -2410, -1394, 12386, 24186, -2410,
+ -1393, 12375, 24196, -2410, -1391, 12364, 24205, -2410, -1390, 12353, 24216, -2411, -1389, 12342, 24226, -2411,
+ -1387, 12332, 24234, -2411, -1386, 12321, 24244, -2411, -1385, 12310, 24255, -2412, -1383, 12299, 24264, -2412,
+ -1382, 12288, 24274, -2412, -1381, 12277, 24284, -2412, -1379, 12266, 24294, -2413, -1378, 12255, 24304, -2413,
+ -1377, 12244, 24314, -2413, -1375, 12234, 24322, -2413, -1374, 12223, 24332, -2413, -1373, 12212, 24343, -2414,
+ -1371, 12201, 24352, -2414, -1370, 12190, 24362, -2414, -1369, 12179, 24372, -2414, -1367, 12168, 24382, -2415,
+ -1366, 12158, 24391, -2415, -1365, 12147, 24401, -2415, -1364, 12136, 24411, -2415, -1362, 12125, 24420, -2415,
+ -1361, 12114, 24431, -2416, -1360, 12103, 24441, -2416, -1358, 12092, 24450, -2416, -1357, 12082, 24459, -2416,
+ -1356, 12071, 24469, -2416, -1354, 12060, 24479, -2417, -1353, 12049, 24489, -2417, -1352, 12038, 24499, -2417,
+ -1350, 12027, 24508, -2417, -1349, 12016, 24518, -2417, -1348, 12006, 24528, -2418, -1346, 11995, 24537, -2418,
+ -1345, 11984, 24547, -2418, -1344, 11973, 24557, -2418, -1342, 11962, 24566, -2418, -1341, 11951, 24577, -2419,
+ -1340, 11941, 24586, -2419, -1338, 11930, 24595, -2419, -1337, 11919, 24605, -2419, -1336, 11908, 24615, -2419,
+ -1334, 11897, 24624, -2419, -1333, 11886, 24635, -2420, -1332, 11876, 24644, -2420, -1330, 11865, 24653, -2420,
+ -1329, 11854, 24663, -2420, -1328, 11843, 24673, -2420, -1326, 11832, 24682, -2420, -1325, 11822, 24692, -2421,
+ -1324, 11811, 24702, -2421, -1322, 11800, 24711, -2421, -1321, 11789, 24721, -2421, -1320, 11778, 24731, -2421,
+ -1318, 11767, 24740, -2421, -1317, 11757, 24749, -2421, -1316, 11746, 24760, -2422, -1314, 11735, 24769, -2422,
+ -1313, 11724, 24779, -2422, -1312, 11713, 24789, -2422, -1310, 11703, 24797, -2422, -1309, 11692, 24807, -2422,
+ -1308, 11681, 24817, -2422, -1306, 11670, 24827, -2423, -1305, 11659, 24837, -2423, -1304, 11649, 24846, -2423,
+ -1302, 11638, 24855, -2423, -1301, 11627, 24865, -2423, -1300, 11616, 24875, -2423, -1298, 11606, 24883, -2423,
+ -1297, 11595, 24893, -2423, -1296, 11584, 24904, -2424, -1294, 11573, 24913, -2424, -1293, 11562, 24923, -2424,
+ -1292, 11552, 24932, -2424, -1290, 11541, 24941, -2424, -1289, 11530, 24951, -2424, -1288, 11519, 24961, -2424,
+ -1286, 11509, 24969, -2424, -1285, 11498, 24979, -2424, -1284, 11487, 24990, -2425, -1282, 11476, 24999, -2425,
+ -1281, 11466, 25008, -2425, -1280, 11455, 25018, -2425, -1278, 11444, 25027, -2425, -1277, 11433, 25037, -2425,
+ -1276, 11422, 25047, -2425, -1274, 11412, 25055, -2425, -1273, 11401, 25065, -2425, -1272, 11390, 25075, -2425,
+ -1271, 11380, 25085, -2426, -1269, 11369, 25094, -2426, -1268, 11358, 25104, -2426, -1267, 11347, 25114, -2426,
+ -1265, 11337, 25122, -2426, -1264, 11326, 25132, -2426, -1263, 11315, 25142, -2426, -1261, 11304, 25151, -2426,
+ -1260, 11294, 25160, -2426, -1259, 11283, 25170, -2426, -1257, 11272, 25179, -2426, -1256, 11261, 25189, -2426,
+ -1255, 11251, 25198, -2426, -1253, 11240, 25207, -2426, -1252, 11229, 25217, -2426, -1251, 11219, 25227, -2427,
+ -1249, 11208, 25236, -2427, -1248, 11197, 25246, -2427, -1247, 11186, 25256, -2427, -1245, 11176, 25264, -2427,
+ -1244, 11165, 25274, -2427, -1243, 11154, 25284, -2427, -1241, 11144, 25292, -2427, -1240, 11133, 25302, -2427,
+ -1239, 11122, 25312, -2427, -1237, 11111, 25321, -2427, -1236, 11101, 25330, -2427, -1235, 11090, 25340, -2427,
+ -1233, 11079, 25349, -2427, -1232, 11069, 25358, -2427, -1231, 11058, 25368, -2427, -1229, 11047, 25377, -2427,
+ -1228, 11037, 25386, -2427, -1227, 11026, 25396, -2427, -1225, 11015, 25405, -2427, -1224, 11005, 25414, -2427,
+ -1223, 10994, 25424, -2427, -1221, 10983, 25433, -2427, -1220, 10972, 25443, -2427, -1219, 10962, 25452, -2427,
+ -1217, 10951, 25461, -2427, -1216, 10940, 25471, -2427, -1215, 10930, 25480, -2427, -1213, 10919, 25489, -2427,
+ -1212, 10908, 25499, -2427, -1211, 10898, 25508, -2427, -1209, 10887, 25517, -2427, -1208, 10876, 25527, -2427,
+ -1207, 10866, 25536, -2427, -1205, 10855, 25545, -2427, -1204, 10844, 25555, -2427, -1203, 10834, 25564, -2427,
+ -1201, 10823, 25573, -2427, -1200, 10813, 25582, -2427, -1199, 10802, 25592, -2427, -1197, 10791, 25601, -2427,
+ -1196, 10781, 25610, -2427, -1195, 10770, 25620, -2427, -1193, 10759, 25629, -2427, -1192, 10749, 25638, -2427,
+ -1191, 10738, 25648, -2427, -1189, 10727, 25657, -2427, -1188, 10717, 25666, -2427, -1187, 10706, 25676, -2427,
+ -1185, 10696, 25684, -2427, -1184, 10685, 25694, -2427, -1183, 10674, 25704, -2427, -1181, 10664, 25712, -2427,
+ -1180, 10653, 25722, -2427, -1179, 10642, 25732, -2427, -1177, 10632, 25740, -2427, -1176, 10621, 25749, -2426,
+ -1175, 10611, 25758, -2426, -1173, 10600, 25767, -2426, -1172, 10589, 25777, -2426, -1171, 10579, 25786, -2426,
+ -1169, 10568, 25795, -2426, -1168, 10558, 25804, -2426, -1167, 10547, 25814, -2426, -1165, 10536, 25823, -2426,
+ -1164, 10526, 25832, -2426, -1163, 10515, 25842, -2426, -1161, 10505, 25850, -2426, -1160, 10494, 25860, -2426,
+ -1159, 10483, 25870, -2426, -1157, 10473, 25877, -2425, -1156, 10462, 25887, -2425, -1155, 10452, 25896, -2425,
+ -1153, 10441, 25905, -2425, -1152, 10431, 25914, -2425, -1151, 10420, 25924, -2425, -1149, 10409, 25933, -2425,
+ -1148, 10399, 25942, -2425, -1147, 10388, 25952, -2425, -1145, 10378, 25960, -2425, -1144, 10367, 25970, -2425,
+ -1143, 10357, 25978, -2424, -1141, 10346, 25987, -2424, -1140, 10336, 25996, -2424, -1139, 10325, 26006, -2424,
+ -1137, 10314, 26015, -2424, -1136, 10304, 26024, -2424, -1135, 10293, 26034, -2424, -1133, 10283, 26042, -2424,
+ -1132, 10272, 26052, -2424, -1131, 10262, 26060, -2423, -1129, 10251, 26069, -2423, -1128, 10241, 26078, -2423,
+ -1127, 10230, 26088, -2423, -1125, 10220, 26096, -2423, -1124, 10209, 26106, -2423, -1123, 10199, 26115, -2423,
+ -1121, 10188, 26123, -2422, -1120, 10178, 26132, -2422, -1119, 10167, 26142, -2422, -1117, 10156, 26151, -2422,
+ -1116, 10146, 26160, -2422, -1115, 10135, 26170, -2422, -1113, 10125, 26178, -2422, -1112, 10114, 26187, -2421,
+ -1111, 10104, 26196, -2421, -1109, 10093, 26205, -2421, -1108, 10083, 26214, -2421, -1107, 10072, 26224, -2421,
+ -1105, 10062, 26232, -2421, -1104, 10051, 26242, -2421, -1103, 10041, 26250, -2420, -1101, 10030, 26259, -2420,
+ -1100, 10020, 26268, -2420, -1099, 10010, 26277, -2420, -1097, 9999, 26286, -2420, -1096, 9989, 26294, -2419,
+ -1095, 9978, 26304, -2419, -1093, 9968, 26312, -2419, -1092, 9957, 26322, -2419, -1091, 9947, 26331, -2419,
+ -1089, 9936, 26340, -2419, -1088, 9926, 26348, -2418, -1087, 9915, 26358, -2418, -1085, 9905, 26366, -2418,
+ -1084, 9894, 26376, -2418, -1083, 9884, 26385, -2418, -1081, 9873, 26393, -2417, -1080, 9863, 26402, -2417,
+ -1079, 9853, 26411, -2417, -1077, 9842, 26420, -2417, -1076, 9832, 26429, -2417, -1075, 9821, 26438, -2416,
+ -1073, 9811, 26446, -2416, -1072, 9800, 26456, -2416, -1071, 9790, 26465, -2416, -1069, 9779, 26473, -2415,
+ -1068, 9769, 26482, -2415, -1067, 9759, 26491, -2415, -1066, 9748, 26501, -2415, -1064, 9738, 26509, -2415,
+ -1063, 9727, 26518, -2414, -1062, 9717, 26527, -2414, -1060, 9707, 26535, -2414, -1059, 9696, 26545, -2414,
+ -1058, 9686, 26553, -2413, -1056, 9675, 26562, -2413, -1055, 9665, 26571, -2413, -1054, 9654, 26581, -2413,
+ -1052, 9644, 26588, -2412, -1051, 9634, 26597, -2412, -1050, 9623, 26607, -2412, -1048, 9613, 26615, -2412,
+ -1047, 9603, 26623, -2411, -1046, 9592, 26633, -2411, -1044, 9582, 26641, -2411, -1043, 9571, 26651, -2411,
+ -1042, 9561, 26659, -2410, -1040, 9551, 26667, -2410, -1039, 9540, 26677, -2410, -1038, 9530, 26686, -2410,
+ -1036, 9520, 26693, -2409, -1035, 9509, 26703, -2409, -1034, 9499, 26712, -2409, -1032, 9488, 26721, -2409,
+ -1031, 9478, 26729, -2408, -1030, 9468, 26738, -2408, -1028, 9457, 26747, -2408, -1027, 9447, 26755, -2407,
+ -1026, 9437, 26764, -2407, -1025, 9426, 26774, -2407, -1023, 9416, 26781, -2406, -1022, 9406, 26790, -2406,
+ -1021, 9395, 26800, -2406, -1019, 9385, 26808, -2406, -1018, 9375, 26816, -2405, -1017, 9364, 26826, -2405,
+ -1015, 9354, 26834, -2405, -1014, 9344, 26842, -2404, -1013, 9333, 26852, -2404, -1011, 9323, 26860, -2404,
+ -1010, 9313, 26868, -2403, -1009, 9302, 26878, -2403, -1007, 9292, 26886, -2403, -1006, 9282, 26894, -2402,
+ -1005, 9271, 26904, -2402, -1003, 9261, 26912, -2402, -1002, 9251, 26921, -2402, -1001, 9240, 26930, -2401,
+ -1000, 9230, 26939, -2401, -998, 9220, 26947, -2401, -997, 9210, 26955, -2400, -996, 9199, 26965, -2400,
+ -994, 9189, 26972, -2399, -993, 9179, 26981, -2399, -992, 9168, 26991, -2399, -990, 9158, 26998, -2398,
+ -989, 9148, 27007, -2398, -988, 9138, 27016, -2398, -986, 9127, 27024, -2397, -985, 9117, 27033, -2397,
+ -984, 9107, 27042, -2397, -982, 9097, 27049, -2396, -981, 9086, 27059, -2396, -980, 9076, 27068, -2396,
+ -979, 9066, 27076, -2395, -977, 9056, 27084, -2395, -976, 9045, 27093, -2394, -975, 9035, 27102, -2394,
+ -973, 9025, 27110, -2394, -972, 9015, 27118, -2393, -971, 9004, 27128, -2393, -969, 8994, 27136, -2393,
+ -968, 8984, 27144, -2392, -967, 8974, 27153, -2392, -965, 8963, 27161, -2391, -964, 8953, 27170, -2391,
+ -963, 8943, 27179, -2391, -961, 8933, 27186, -2390, -960, 8923, 27195, -2390, -959, 8912, 27204, -2389,
+ -958, 8902, 27213, -2389, -956, 8892, 27221, -2389, -955, 8882, 27229, -2388, -954, 8872, 27238, -2388,
+ -952, 8861, 27246, -2387, -951, 8851, 27255, -2387, -950, 8841, 27264, -2387, -948, 8831, 27271, -2386,
+ -947, 8821, 27280, -2386, -946, 8810, 27289, -2385, -945, 8800, 27298, -2385, -943, 8790, 27305, -2384,
+ -942, 8780, 27314, -2384, -941, 8770, 27323, -2384, -939, 8759, 27331, -2383, -938, 8749, 27340, -2383,
+ -937, 8739, 27348, -2382, -935, 8729, 27356, -2382, -934, 8719, 27364, -2381, -933, 8709, 27373, -2381,
+ -932, 8699, 27382, -2381, -930, 8688, 27390, -2380, -929, 8678, 27399, -2380, -928, 8668, 27407, -2379,
+ -926, 8658, 27415, -2379, -925, 8648, 27423, -2378, -924, 8638, 27432, -2378, -922, 8628, 27439, -2377,
+ -921, 8617, 27449, -2377, -920, 8607, 27457, -2376, -919, 8597, 27466, -2376, -917, 8587, 27473, -2375,
+ -916, 8577, 27482, -2375, -915, 8567, 27490, -2374, -913, 8557, 27498, -2374, -912, 8547, 27507, -2374,
+ -911, 8536, 27516, -2373, -909, 8526, 27524, -2373, -908, 8516, 27532, -2372, -907, 8506, 27541, -2372,
+ -906, 8496, 27549, -2371, -904, 8486, 27557, -2371, -903, 8476, 27565, -2370, -902, 8466, 27574, -2370,
+ -900, 8456, 27581, -2369, -899, 8446, 27590, -2369, -898, 8436, 27598, -2368, -896, 8425, 27607, -2368,
+ -895, 8415, 27615, -2367, -894, 8405, 27624, -2367, -893, 8395, 27632, -2366, -891, 8385, 27639, -2365,
+ -890, 8375, 27648, -2365, -889, 8365, 27656, -2364, -887, 8355, 27664, -2364, -886, 8345, 27672, -2363,
+ -885, 8335, 27681, -2363, -884, 8325, 27689, -2362, -882, 8315, 27697, -2362, -881, 8305, 27705, -2361,
+ -880, 8295, 27714, -2361, -878, 8285, 27721, -2360, -877, 8275, 27730, -2360, -876, 8265, 27738, -2359,
+ -875, 8255, 27747, -2359, -873, 8245, 27754, -2358, -872, 8235, 27762, -2357, -871, 8225, 27771, -2357,
+ -869, 8215, 27778, -2356, -868, 8205, 27787, -2356, -867, 8195, 27795, -2355, -866, 8185, 27804, -2355,
+ -864, 8175, 27811, -2354, -863, 8165, 27819, -2353, -862, 8155, 27828, -2353, -860, 8145, 27835, -2352,
+ -859, 8135, 27844, -2352, -858, 8125, 27852, -2351, -857, 8115, 27861, -2351, -855, 8105, 27868, -2350,
+ -854, 8095, 27876, -2349, -853, 8085, 27885, -2349, -851, 8075, 27892, -2348, -850, 8065, 27901, -2348,
+ -849, 8055, 27909, -2347, -848, 8045, 27917, -2346, -846, 8035, 27925, -2346, -845, 8025, 27933, -2345,
+ -844, 8015, 27942, -2345, -843, 8005, 27950, -2344, -841, 7995, 27957, -2343, -840, 7985, 27966, -2343,
+ -839, 7975, 27974, -2342, -837, 7965, 27982, -2342, -836, 7955, 27990, -2341, -835, 7945, 27998, -2340,
+ -834, 7936, 28006, -2340, -832, 7926, 28013, -2339, -831, 7916, 28021, -2338, -830, 7906, 28030, -2338,
+ -829, 7896, 28038, -2337, -827, 7886, 28046, -2337, -826, 7876, 28054, -2336, -825, 7866, 28062, -2335,
+ -823, 7856, 28070, -2335, -822, 7846, 28078, -2334, -821, 7836, 28086, -2333, -820, 7827, 28094, -2333,
+ -818, 7817, 28101, -2332, -817, 7807, 28109, -2331, -816, 7797, 28118, -2331, -815, 7787, 28126, -2330,
+ -813, 7777, 28133, -2329, -812, 7767, 28142, -2329, -811, 7757, 28150, -2328, -810, 7748, 28157, -2327,
+ -808, 7738, 28165, -2327, -807, 7728, 28173, -2326, -806, 7718, 28181, -2325, -804, 7708, 28189, -2325,
+ -803, 7698, 28197, -2324, -802, 7688, 28205, -2323, -801, 7679, 28213, -2323, -799, 7669, 28220, -2322,
+ -798, 7659, 28228, -2321, -797, 7649, 28237, -2321, -796, 7639, 28245, -2320, -794, 7629, 28252, -2319,
+ -793, 7620, 28260, -2319, -792, 7610, 28268, -2318, -791, 7600, 28276, -2317, -789, 7590, 28283, -2316,
+ -788, 7580, 28292, -2316, -787, 7571, 28299, -2315, -786, 7561, 28307, -2314, -784, 7551, 28315, -2314,
+ -783, 7541, 28323, -2313, -782, 7531, 28331, -2312, -781, 7522, 28338, -2311, -779, 7512, 28346, -2311,
+ -778, 7502, 28354, -2310, -777, 7492, 28362, -2309, -776, 7483, 28369, -2308, -774, 7473, 28377, -2308,
+ -773, 7463, 28385, -2307, -772, 7453, 28393, -2306, -771, 7444, 28400, -2305, -769, 7434, 28408, -2305,
+ -768, 7424, 28416, -2304, -767, 7414, 28424, -2303, -766, 7405, 28431, -2302, -764, 7395, 28439, -2302,
+ -763, 7385, 28447, -2301, -762, 7375, 28455, -2300, -761, 7366, 28462, -2299, -759, 7356, 28470, -2299,
+ -758, 7346, 28478, -2298, -757, 7336, 28486, -2297, -756, 7327, 28493, -2296, -754, 7317, 28501, -2296,
+ -753, 7307, 28509, -2295, -752, 7298, 28516, -2294, -751, 7288, 28524, -2293, -749, 7278, 28531, -2292,
+ -748, 7268, 28540, -2292, -747, 7259, 28547, -2291, -746, 7249, 28555, -2290, -744, 7239, 28562, -2289,
+ -743, 7230, 28570, -2289, -742, 7220, 28578, -2288, -741, 7210, 28586, -2287, -739, 7201, 28592, -2286,
+ -738, 7191, 28600, -2285, -737, 7181, 28608, -2284, -736, 7172, 28616, -2284, -734, 7162, 28623, -2283,
+ -733, 7152, 28631, -2282, -732, 7143, 28638, -2281, -731, 7133, 28646, -2280, -729, 7123, 28654, -2280,
+ -728, 7114, 28661, -2279, -727, 7104, 28669, -2278, -726, 7095, 28676, -2277, -725, 7085, 28684, -2276,
+ -723, 7075, 28691, -2275, -722, 7066, 28699, -2275, -721, 7056, 28707, -2274, -720, 7046, 28715, -2273,
+ -718, 7037, 28721, -2272, -717, 7027, 28729, -2271, -716, 7018, 28736, -2270, -715, 7008, 28744, -2269,
+ -713, 6998, 28752, -2269, -712, 6989, 28759, -2268, -711, 6979, 28767, -2267, -710, 6970, 28774, -2266,
+ -709, 6960, 28782, -2265, -707, 6950, 28789, -2264, -706, 6941, 28796, -2263, -705, 6931, 28805, -2263,
+ -704, 6922, 28812, -2262, -702, 6912, 28819, -2261, -701, 6903, 28826, -2260, -700, 6893, 28834, -2259,
+ -699, 6883, 28842, -2258, -698, 6874, 28849, -2257, -696, 6864, 28856, -2256, -695, 6855, 28863, -2255,
+ -694, 6845, 28872, -2255, -693, 6836, 28879, -2254, -691, 6826, 28886, -2253, -690, 6817, 28893, -2252,
+ -689, 6807, 28901, -2251, -688, 6798, 28908, -2250, -687, 6788, 28916, -2249, -685, 6779, 28922, -2248,
+ -684, 6769, 28930, -2247, -683, 6760, 28937, -2246, -682, 6750, 28945, -2245, -681, 6741, 28953, -2245,
+ -679, 6731, 28960, -2244, -678, 6722, 28967, -2243, -677, 6712, 28975, -2242, -676, 6703, 28982, -2241,
+ -675, 6693, 28990, -2240, -673, 6684, 28996, -2239, -672, 6674, 29004, -2238, -671, 6665, 29011, -2237,
+ -670, 6655, 29019, -2236, -668, 6646, 29025, -2235, -667, 6636, 29033, -2234, -666, 6627, 29040, -2233,
+ -665, 6617, 29048, -2232, -664, 6608, 29055, -2231, -662, 6599, 29061, -2230, -661, 6589, 29069, -2229,
+ -660, 6580, 29076, -2228, -659, 6570, 29084, -2227, -658, 6561, 29091, -2226, -656, 6551, 29098, -2225,
+ -655, 6542, 29105, -2224, -654, 6533, 29113, -2224, -653, 6523, 29121, -2223, -652, 6514, 29128, -2222,
+ -650, 6504, 29135, -2221, -649, 6495, 29142, -2220, -648, 6486, 29149, -2219, -647, 6476, 29157, -2218,
+ -646, 6467, 29164, -2217, -644, 6457, 29171, -2216, -643, 6448, 29178, -2215, -642, 6439, 29185, -2214,
+ -641, 6429, 29193, -2213, -640, 6420, 29200, -2212, -639, 6411, 29207, -2211, -637, 6401, 29213, -2209,
+ -636, 6392, 29220, -2208, -635, 6382, 29228, -2207, -634, 6373, 29235, -2206, -633, 6364, 29242, -2205,
+ -631, 6354, 29249, -2204, -630, 6345, 29256, -2203, -629, 6336, 29263, -2202, -628, 6326, 29271, -2201,
+ -627, 6317, 29278, -2200, -625, 6308, 29284, -2199, -624, 6298, 29292, -2198, -623, 6289, 29299, -2197,
+ -622, 6280, 29306, -2196, -621, 6271, 29313, -2195, -620, 6261, 29321, -2194, -618, 6252, 29327, -2193,
+ -617, 6243, 29334, -2192, -616, 6233, 29342, -2191, -615, 6224, 29349, -2190, -614, 6215, 29356, -2189,
+ -613, 6206, 29363, -2188, -611, 6196, 29369, -2186, -610, 6187, 29376, -2185, -609, 6178, 29383, -2184,
+ -608, 6168, 29391, -2183, -607, 6159, 29398, -2182, -605, 6150, 29404, -2181, -604, 6141, 29411, -2180,
+ -603, 6131, 29419, -2179, -602, 6122, 29426, -2178, -601, 6113, 29433, -2177, -600, 6104, 29440, -2176,
+ -598, 6094, 29446, -2174, -597, 6085, 29453, -2173, -596, 6076, 29460, -2172, -595, 6067, 29467, -2171,
+ -594, 6058, 29474, -2170, -593, 6048, 29482, -2169, -591, 6039, 29488, -2168, -590, 6030, 29495, -2167,
+ -589, 6021, 29501, -2165, -588, 6012, 29508, -2164, -587, 6002, 29516, -2163, -586, 5993, 29523, -2162,
+ -584, 5984, 29529, -2161, -583, 5975, 29536, -2160, -582, 5966, 29543, -2159, -581, 5956, 29551, -2158,
+ -580, 5947, 29557, -2156, -579, 5938, 29564, -2155, -578, 5929, 29571, -2154, -576, 5920, 29577, -2153,
+ -575, 5911, 29584, -2152, -574, 5902, 29591, -2151, -573, 5892, 29598, -2149, -572, 5883, 29605, -2148,
+ -571, 5874, 29612, -2147, -569, 5865, 29618, -2146, -568, 5856, 29625, -2145, -567, 5847, 29632, -2144,
+ -566, 5838, 29638, -2142, -565, 5829, 29645, -2141, -564, 5819, 29653, -2140, -563, 5810, 29660, -2139,
+ -561, 5801, 29666, -2138, -560, 5792, 29672, -2136, -559, 5783, 29679, -2135, -558, 5774, 29686, -2134,
+ -557, 5765, 29693, -2133, -556, 5756, 29700, -2132, -555, 5747, 29706, -2130, -553, 5738, 29712, -2129,
+ -552, 5729, 29719, -2128, -551, 5719, 29727, -2127, -550, 5710, 29734, -2126, -549, 5701, 29740, -2124,
+ -548, 5692, 29747, -2123, -547, 5683, 29754, -2122, -545, 5674, 29760, -2121, -544, 5665, 29767, -2120,
+ -543, 5656, 29773, -2118, -542, 5647, 29780, -2117, -541, 5638, 29787, -2116, -540, 5629, 29794, -2115,
+ -539, 5620, 29800, -2113, -538, 5611, 29807, -2112, -536, 5602, 29813, -2111, -535, 5593, 29820, -2110,
+ -534, 5584, 29826, -2108, -533, 5575, 29833, -2107, -532, 5566, 29840, -2106, -531, 5557, 29847, -2105,
+ -530, 5548, 29853, -2103, -529, 5539, 29860, -2102, -527, 5530, 29866, -2101, -526, 5521, 29872, -2099,
+ -525, 5512, 29879, -2098, -524, 5503, 29886, -2097, -523, 5494, 29893, -2096, -522, 5485, 29899, -2094,
+ -521, 5476, 29906, -2093, -520, 5467, 29913, -2092, -518, 5458, 29918, -2090, -517, 5450, 29924, -2089,
+ -516, 5441, 29931, -2088, -515, 5432, 29938, -2087, -514, 5423, 29944, -2085, -513, 5414, 29951, -2084,
+ -512, 5405, 29958, -2083, -511, 5396, 29964, -2081, -510, 5387, 29971, -2080, -508, 5378, 29977, -2079,
+ -507, 5369, 29983, -2077, -506, 5360, 29990, -2076, -505, 5352, 29996, -2075, -504, 5343, 30002, -2073,
+ -503, 5334, 30009, -2072, -502, 5325, 30016, -2071, -501, 5316, 30022, -2069, -500, 5307, 30029, -2068,
+ -499, 5298, 30036, -2067, -497, 5289, 30041, -2065, -496, 5281, 30047, -2064, -495, 5272, 30054, -2063,
+ -494, 5263, 30060, -2061, -493, 5254, 30067, -2060, -492, 5245, 30074, -2059, -491, 5236, 30080, -2057,
+ -490, 5228, 30086, -2056, -489, 5219, 30093, -2055, -488, 5210, 30099, -2053, -486, 5201, 30105, -2052,
+ -485, 5192, 30111, -2050, -484, 5184, 30117, -2049, -483, 5175, 30124, -2048, -482, 5166, 30130, -2046,
+ -481, 5157, 30137, -2045, -480, 5148, 30143, -2043, -479, 5140, 30149, -2042, -478, 5131, 30156, -2041,
+ -477, 5122, 30162, -2039, -476, 5113, 30169, -2038, -474, 5104, 30174, -2036, -473, 5096, 30180, -2035,
+ -472, 5087, 30187, -2034, -471, 5078, 30193, -2032, -470, 5069, 30200, -2031, -469, 5061, 30205, -2029,
+ -468, 5052, 30212, -2028, -467, 5043, 30219, -2027, -466, 5035, 30224, -2025, -465, 5026, 30231, -2024,
+ -464, 5017, 30237, -2022, -463, 5008, 30244, -2021, -462, 5000, 30249, -2019, -460, 4991, 30255, -2018,
+ -459, 4982, 30262, -2017, -458, 4974, 30267, -2015, -457, 4965, 30274, -2014, -456, 4956, 30280, -2012,
+ -455, 4948, 30286, -2011, -454, 4939, 30292, -2009, -453, 4930, 30299, -2008, -452, 4921, 30305, -2006,
+ -451, 4913, 30311, -2005, -450, 4904, 30317, -2003, -449, 4896, 30323, -2002, -448, 4887, 30329, -2000,
+ -447, 4878, 30336, -1999, -446, 4870, 30342, -1998, -444, 4861, 30347, -1996, -443, 4852, 30354, -1995,
+ -442, 4844, 30359, -1993, -441, 4835, 30366, -1992, -440, 4826, 30372, -1990, -439, 4818, 30378, -1989,
+ -438, 4809, 30384, -1987, -437, 4801, 30390, -1986, -436, 4792, 30396, -1984, -435, 4783, 30403, -1983,
+ -434, 4775, 30408, -1981, -433, 4766, 30415, -1980, -432, 4758, 30420, -1978, -431, 4749, 30427, -1977,
+ -430, 4741, 30432, -1975, -429, 4732, 30438, -1973, -428, 4723, 30445, -1972, -427, 4715, 30450, -1970,
+ -426, 4706, 30457, -1969, -425, 4698, 30462, -1967, -423, 4689, 30468, -1966, -422, 4681, 30473, -1964,
+ -421, 4672, 30480, -1963, -420, 4664, 30485, -1961, -419, 4655, 30492, -1960, -418, 4647, 30497, -1958,
+ -417, 4638, 30503, -1956, -416, 4630, 30509, -1955, -415, 4621, 30515, -1953, -414, 4613, 30521, -1952,
+ -413, 4604, 30527, -1950, -412, 4596, 30533, -1949, -411, 4587, 30539, -1947, -410, 4579, 30545, -1946,
+ -409, 4570, 30551, -1944, -408, 4562, 30556, -1942, -407, 4553, 30563, -1941, -406, 4545, 30568, -1939,
+ -405, 4536, 30575, -1938, -404, 4528, 30580, -1936, -403, 4519, 30586, -1934, -402, 4511, 30592, -1933,
+ -401, 4502, 30598, -1931, -400, 4494, 30604, -1930, -399, 4486, 30609, -1928, -398, 4477, 30615, -1926,
+ -397, 4469, 30621, -1925, -396, 4460, 30627, -1923, -395, 4452, 30633, -1922, -394, 4443, 30639, -1920,
+ -393, 4435, 30644, -1918, -392, 4427, 30650, -1917, -391, 4418, 30656, -1915, -390, 4410, 30661, -1913,
+ -389, 4402, 30667, -1912, -388, 4393, 30673, -1910, -387, 4385, 30678, -1908, -386, 4376, 30685, -1907,
+ -385, 4368, 30690, -1905, -384, 4360, 30695, -1903, -383, 4351, 30702, -1902, -382, 4343, 30707, -1900,
+ -381, 4335, 30713, -1899, -380, 4326, 30719, -1897, -379, 4318, 30724, -1895, -378, 4310, 30730, -1894,
+ -377, 4301, 30736, -1892, -376, 4293, 30741, -1890, -375, 4285, 30746, -1888, -374, 4276, 30753, -1887,
+ -373, 4268, 30758, -1885, -372, 4260, 30763, -1883, -371, 4252, 30769, -1882, -370, 4243, 30775, -1880,
+ -369, 4235, 30780, -1878, -368, 4227, 30786, -1877, -367, 4218, 30792, -1875, -366, 4210, 30797, -1873,
+ -365, 4202, 30803, -1872, -364, 4194, 30808, -1870, -363, 4185, 30814, -1868, -362, 4177, 30819, -1866,
+ -361, 4169, 30825, -1865, -360, 4161, 30830, -1863, -359, 4152, 30836, -1861, -358, 4144, 30841, -1859,
+ -357, 4136, 30847, -1858, -356, 4128, 30852, -1856, -355, 4119, 30858, -1854, -354, 4111, 30864, -1853,
+ -353, 4103, 30869, -1851, -352, 4095, 30874, -1849, -351, 4087, 30879, -1847, -350, 4079, 30885, -1846,
+ -349, 4070, 30891, -1844, -348, 4062, 30896, -1842, -347, 4054, 30901, -1840, -346, 4046, 30907, -1839,
+ -345, 4038, 30912, -1837, -344, 4029, 30918, -1835, -343, 4021, 30923, -1833, -342, 4013, 30928, -1831,
+ -341, 4005, 30934, -1830, -340, 3997, 30939, -1828, -339, 3989, 30944, -1826, -338, 3981, 30949, -1824,
+ -338, 3973, 30956, -1823, -337, 3964, 30962, -1821, -336, 3956, 30967, -1819, -335, 3948, 30972, -1817,
+ -334, 3940, 30977, -1815, -333, 3932, 30982, -1813, -332, 3924, 30988, -1812, -331, 3916, 30993, -1810,
+ -330, 3908, 30998, -1808, -329, 3900, 31003, -1806, -328, 3892, 31008, -1804, -327, 3883, 31015, -1803,
+ -326, 3875, 31020, -1801, -325, 3867, 31025, -1799, -324, 3859, 31030, -1797, -323, 3851, 31035, -1795,
+ -322, 3843, 31040, -1793, -321, 3835, 31046, -1792, -320, 3827, 31051, -1790, -320, 3819, 31057, -1788,
+ -319, 3811, 31062, -1786, -318, 3803, 31067, -1784, -317, 3795, 31072, -1782, -316, 3787, 31077, -1780,
+ -315, 3779, 31083, -1779, -314, 3771, 31088, -1777, -313, 3763, 31093, -1775, -312, 3755, 31098, -1773,
+ -311, 3747, 31103, -1771, -310, 3739, 31108, -1769, -309, 3731, 31113, -1767, -308, 3723, 31118, -1765,
+ -307, 3715, 31124, -1764, -306, 3707, 31129, -1762, -306, 3699, 31135, -1760, -305, 3691, 31140, -1758,
+ -304, 3683, 31145, -1756, -303, 3676, 31149, -1754, -302, 3668, 31154, -1752, -301, 3660, 31159, -1750,
+ -300, 3652, 31164, -1748, -299, 3644, 31169, -1746, -298, 3636, 31175, -1745, -297, 3628, 31180, -1743,
+ -296, 3620, 31185, -1741, -296, 3612, 31191, -1739, -295, 3604, 31196, -1737, -294, 3596, 31201, -1735,
+ -293, 3589, 31205, -1733, -292, 3581, 31210, -1731, -291, 3573, 31215, -1729, -290, 3565, 31220, -1727,
+ -289, 3557, 31225, -1725, -288, 3549, 31230, -1723, -287, 3541, 31235, -1721, -286, 3534, 31239, -1719,
+ -286, 3526, 31245, -1717, -285, 3518, 31250, -1715, -284, 3510, 31255, -1713, -283, 3502, 31260, -1711,
+ -282, 3495, 31264, -1709, -281, 3487, 31270, -1708, -280, 3479, 31275, -1706, -279, 3471, 31280, -1704,
+ -278, 3463, 31285, -1702, -278, 3456, 31290, -1700, -277, 3448, 31295, -1698, -276, 3440, 31300, -1696,
+ -275, 3432, 31305, -1694, -274, 3424, 31310, -1692, -273, 3417, 31314, -1690, -272, 3409, 31319, -1688,
+ -271, 3401, 31324, -1686, -270, 3393, 31329, -1684, -270, 3386, 31334, -1682, -269, 3378, 31339, -1680,
+ -268, 3370, 31343, -1677, -267, 3363, 31347, -1675, -266, 3355, 31352, -1673, -265, 3347, 31357, -1671,
+ -264, 3339, 31362, -1669, -264, 3332, 31367, -1667, -263, 3324, 31372, -1665, -262, 3316, 31377, -1663,
+ -261, 3309, 31381, -1661, -260, 3301, 31386, -1659, -259, 3293, 31391, -1657, -258, 3286, 31395, -1655,
+ -257, 3278, 31400, -1653, -257, 3270, 31406, -1651, -256, 3263, 31410, -1649, -255, 3255, 31415, -1647,
+ -254, 3247, 31420, -1645, -253, 3240, 31424, -1643, -252, 3232, 31429, -1641, -251, 3224, 31433, -1638,
+ -251, 3217, 31438, -1636, -250, 3209, 31443, -1634, -249, 3202, 31447, -1632, -248, 3194, 31452, -1630,
+ -247, 3186, 31457, -1628, -246, 3179, 31461, -1626, -246, 3171, 31467, -1624, -245, 3164, 31471, -1622,
+ -244, 3156, 31476, -1620, -243, 3149, 31479, -1617, -242, 3141, 31484, -1615, -241, 3133, 31489, -1613,
+ -240, 3126, 31493, -1611, -240, 3118, 31499, -1609, -239, 3111, 31503, -1607, -238, 3103, 31508, -1605,
+ -237, 3096, 31512, -1603, -236, 3088, 31516, -1600, -235, 3081, 31520, -1598, -235, 3073, 31526, -1596,
+ -234, 3066, 31530, -1594, -233, 3058, 31535, -1592, -232, 3051, 31539, -1590, -231, 3043, 31544, -1588,
+ -231, 3036, 31548, -1585, -230, 3028, 31553, -1583, -229, 3021, 31557, -1581, -228, 3013, 31562, -1579,
+ -227, 3006, 31566, -1577, -226, 2998, 31571, -1575, -226, 2991, 31575, -1572, -225, 2983, 31580, -1570,
+ -224, 2976, 31584, -1568, -223, 2969, 31588, -1566, -222, 2961, 31593, -1564, -222, 2954, 31597, -1561,
+ -221, 2946, 31602, -1559, -220, 2939, 31606, -1557, -219, 2931, 31611, -1555, -218, 2924, 31615, -1553,
+ -218, 2917, 31619, -1550, -217, 2909, 31624, -1548, -216, 2902, 31628, -1546, -215, 2895, 31632, -1544,
+ -214, 2887, 31637, -1542, -214, 2880, 31641, -1539, -213, 2872, 31646, -1537, -212, 2865, 31650, -1535,
+ -211, 2858, 31654, -1533, -210, 2850, 31658, -1530, -210, 2843, 31663, -1528, -209, 2836, 31667, -1526,
+ -208, 2828, 31672, -1524, -207, 2821, 31675, -1521, -206, 2814, 31679, -1519, -206, 2806, 31685, -1517,
+ -205, 2799, 31689, -1515, -204, 2792, 31692, -1512, -203, 2785, 31696, -1510, -203, 2777, 31702, -1508,
+ -202, 2770, 31706, -1506, -201, 2763, 31709, -1503, -200, 2755, 31714, -1501, -199, 2748, 31718, -1499,
+ -199, 2741, 31722, -1496, -198, 2734, 31726, -1494, -197, 2726, 31731, -1492, -196, 2719, 31734, -1489,
+ -196, 2712, 31739, -1487, -195, 2705, 31743, -1485, -194, 2697, 31748, -1483, -193, 2690, 31751, -1480,
+ -192, 2683, 31755, -1478, -192, 2676, 31760, -1476, -191, 2669, 31763, -1473, -190, 2661, 31768, -1471,
+ -189, 2654, 31772, -1469, -189, 2647, 31776, -1466, -188, 2640, 31780, -1464, -187, 2633, 31784, -1462,
+ -186, 2626, 31787, -1459, -186, 2618, 31793, -1457, -185, 2611, 31797, -1455, -184, 2604, 31800, -1452,
+ -183, 2597, 31804, -1450, -183, 2590, 31809, -1448, -182, 2583, 31812, -1445, -181, 2576, 31816, -1443,
+ -180, 2568, 31820, -1440, -180, 2561, 31825, -1438, -179, 2554, 31829, -1436, -178, 2547, 31832, -1433,
+ -177, 2540, 31836, -1431, -177, 2533, 31841, -1429, -176, 2526, 31844, -1426, -175, 2519, 31848, -1424,
+ -175, 2512, 31852, -1421, -174, 2505, 31856, -1419, -173, 2498, 31860, -1417, -172, 2491, 31863, -1414,
+ -172, 2483, 31869, -1412, -171, 2476, 31872, -1409, -170, 2469, 31876, -1407, -169, 2462, 31880, -1405,
+ -169, 2455, 31884, -1402, -168, 2448, 31888, -1400, -167, 2441, 31891, -1397, -167, 2434, 31896, -1395,
+ -166, 2427, 31899, -1392, -165, 2420, 31903, -1390, -164, 2413, 31907, -1388, -164, 2406, 31911, -1385,
+ -163, 2399, 31915, -1383, -162, 2392, 31918, -1380, -162, 2385, 31923, -1378, -161, 2378, 31926, -1375,
+ -160, 2371, 31930, -1373, -159, 2365, 31932, -1370, -159, 2358, 31937, -1368, -158, 2351, 31941, -1366,
+ -157, 2344, 31944, -1363, -157, 2337, 31949, -1361, -156, 2330, 31952, -1358, -155, 2323, 31956, -1356,
+ -155, 2316, 31960, -1353, -154, 2309, 31964, -1351, -153, 2302, 31967, -1348, -153, 2295, 31972, -1346,
+ -152, 2289, 31974, -1343, -151, 2282, 31978, -1341, -150, 2275, 31981, -1338, -150, 2268, 31986, -1336,
+ -149, 2261, 31989, -1333, -148, 2254, 31993, -1331, -148, 2247, 31997, -1328, -147, 2241, 32000, -1326,
+ -146, 2234, 32003, -1323, -146, 2227, 32008, -1321, -145, 2220, 32011, -1318, -144, 2213, 32014, -1315,
+ -144, 2206, 32019, -1313, -143, 2200, 32021, -1310, -142, 2193, 32025, -1308, -142, 2186, 32029, -1305,
+ -141, 2179, 32033, -1303, -140, 2172, 32036, -1300, -140, 2166, 32040, -1298, -139, 2159, 32043, -1295,
+ -138, 2152, 32047, -1293, -138, 2145, 32051, -1290, -137, 2139, 32053, -1287, -136, 2132, 32057, -1285,
+ -136, 2125, 32061, -1282, -135, 2118, 32065, -1280, -134, 2112, 32067, -1277, -134, 2105, 32071, -1274,
+ -133, 2098, 32075, -1272, -132, 2092, 32077, -1269, -132, 2085, 32082, -1267, -131, 2078, 32085, -1264,
+ -131, 2072, 32089, -1262, -130, 2065, 32092, -1259, -129, 2058, 32095, -1256, -129, 2051, 32100, -1254,
+ -128, 2045, 32102, -1251, -127, 2038, 32105, -1248, -127, 2032, 32109, -1246, -126, 2025, 32112, -1243,
+ -125, 2018, 32116, -1241, -125, 2012, 32119, -1238, -124, 2005, 32122, -1235, -123, 1998, 32126, -1233,
+ -123, 1992, 32129, -1230, -122, 1985, 32132, -1227, -122, 1979, 32136, -1225, -121, 1972, 32139, -1222,
+ -120, 1965, 32142, -1219, -120, 1959, 32146, -1217, -119, 1952, 32149, -1214, -119, 1946, 32152, -1211,
+ -118, 1939, 32156, -1209, -117, 1933, 32158, -1206, -117, 1926, 32162, -1203, -116, 1919, 32166, -1201,
+ -115, 1913, 32168, -1198, -115, 1906, 32172, -1195, -114, 1900, 32175, -1193, -114, 1893, 32179, -1190,
+ -113, 1887, 32181, -1187, -112, 1880, 32185, -1185, -112, 1874, 32188, -1182, -111, 1867, 32191, -1179,
+ -111, 1861, 32194, -1176, -110, 1854, 32198, -1174, -109, 1848, 32200, -1171, -109, 1841, 32204, -1168,
+ -108, 1835, 32207, -1166, -108, 1828, 32211, -1163, -107, 1822, 32213, -1160, -106, 1816, 32215, -1157,
+ -106, 1809, 32220, -1155, -105, 1803, 32222, -1152, -105, 1796, 32226, -1149, -104, 1790, 32228, -1146,
+ -104, 1783, 32233, -1144, -103, 1777, 32235, -1141, -102, 1771, 32237, -1138, -102, 1764, 32241, -1135,
+ -101, 1758, 32244, -1133, -101, 1751, 32248, -1130, -100, 1745, 32250, -1127, -99, 1739, 32252, -1124,
+ -99, 1732, 32256, -1121, -98, 1726, 32259, -1119, -98, 1720, 32262, -1116, -97, 1713, 32265, -1113,
+ -97, 1707, 32268, -1110, -96, 1701, 32270, -1107, -96, 1694, 32275, -1105, -95, 1688, 32277, -1102,
+ -94, 1682, 32279, -1099, -94, 1675, 32283, -1096, -93, 1669, 32285, -1093, -93, 1663, 32289, -1091,
+ -92, 1657, 32291, -1088, -92, 1650, 32295, -1085, -91, 1644, 32297, -1082, -91, 1638, 32300, -1079,
+ -90, 1631, 32303, -1076, -89, 1625, 32306, -1074, -89, 1619, 32309, -1071, -88, 1613, 32311, -1068,
+ -88, 1607, 32314, -1065, -87, 1600, 32317, -1062, -87, 1594, 32320, -1059, -86, 1588, 32323, -1057,
+ -86, 1582, 32326, -1054, -85, 1575, 32329, -1051, -85, 1569, 32332, -1048, -84, 1563, 32334, -1045,
+ -84, 1557, 32337, -1042, -83, 1551, 32339, -1039, -82, 1545, 32341, -1036, -82, 1538, 32346, -1034,
+ -81, 1532, 32348, -1031, -81, 1526, 32351, -1028, -80, 1520, 32353, -1025, -80, 1514, 32356, -1022,
+ -79, 1508, 32358, -1019, -79, 1502, 32361, -1016, -78, 1495, 32364, -1013, -78, 1489, 32367, -1010,
+ -77, 1483, 32369, -1007, -77, 1477, 32372, -1004, -76, 1471, 32375, -1002, -76, 1465, 32378, -999,
+ -75, 1459, 32380, -996, -75, 1453, 32383, -993, -74, 1447, 32385, -990, -74, 1441, 32388, -987,
+ -73, 1435, 32390, -984, -73, 1429, 32393, -981, -72, 1423, 32395, -978, -72, 1417, 32398, -975,
+ -71, 1411, 32400, -972, -71, 1405, 32403, -969, -70, 1399, 32405, -966, -70, 1393, 32408, -963,
+ -69, 1387, 32410, -960, -69, 1381, 32413, -957, -68, 1375, 32415, -954, -68, 1369, 32418, -951,
+ -67, 1363, 32420, -948, -67, 1357, 32423, -945, -66, 1351, 32425, -942, -66, 1345, 32428, -939,
+ -66, 1339, 32431, -936, -65, 1333, 32433, -933, -65, 1327, 32436, -930, -64, 1321, 32438, -927,
+ -64, 1315, 32441, -924, -63, 1309, 32443, -921, -63, 1303, 32446, -918, -62, 1297, 32448, -915,
+ -62, 1291, 32451, -912, -61, 1286, 32452, -909, -61, 1280, 32455, -906, -60, 1274, 32457, -903,
+ -60, 1268, 32460, -900, -60, 1262, 32463, -897, -59, 1256, 32465, -894, -59, 1250, 32468, -891,
+ -58, 1245, 32469, -888, -58, 1239, 32472, -885, -57, 1233, 32474, -882, -57, 1227, 32477, -879,
+ -56, 1221, 32479, -876, -56, 1216, 32480, -872, -56, 1210, 32483, -869, -55, 1204, 32485, -866,
+ -55, 1198, 32488, -863, -54, 1192, 32490, -860, -54, 1187, 32492, -857, -53, 1181, 32494, -854,
+ -53, 1175, 32497, -851, -53, 1169, 32500, -848, -52, 1164, 32501, -845, -52, 1158, 32503, -841,
+ -51, 1152, 32505, -838, -51, 1146, 32508, -835, -50, 1141, 32509, -832, -50, 1135, 32512, -829,
+ -50, 1129, 32515, -826, -49, 1124, 32516, -823, -49, 1118, 32519, -820, -48, 1112, 32520, -816,
+ -48, 1107, 32522, -813, -48, 1101, 32525, -810, -47, 1095, 32527, -807, -47, 1090, 32529, -804,
+ -46, 1084, 32531, -801, -46, 1078, 32534, -798, -46, 1073, 32535, -794, -45, 1067, 32537, -791,
+ -45, 1061, 32540, -788, -44, 1056, 32541, -785, -44, 1050, 32544, -782, -44, 1045, 32545, -778,
+ -43, 1039, 32547, -775, -43, 1033, 32550, -772, -42, 1028, 32551, -769, -42, 1022, 32554, -766,
+ -42, 1017, 32555, -762, -41, 1011, 32557, -759, -41, 1006, 32559, -756, -40, 1000, 32561, -753,
+ -40, 995, 32563, -750, -40, 989, 32565, -746, -39, 984, 32566, -743, -39, 978, 32569, -740,
+ -39, 972, 32572, -737, -38, 967, 32573, -734, -38, 961, 32575, -730, -38, 956, 32577, -727,
+ -37, 951, 32578, -724, -37, 945, 32581, -721, -36, 940, 32581, -717, -36, 934, 32584, -714,
+ -36, 929, 32586, -711, -35, 923, 32588, -708, -35, 918, 32589, -704, -35, 912, 32592, -701,
+ -34, 907, 32593, -698, -34, 902, 32594, -694, -34, 896, 32597, -691, -33, 891, 32598, -688,
+ -33, 885, 32601, -685, -33, 880, 32602, -681, -32, 875, 32603, -678, -32, 869, 32606, -675,
+ -32, 864, 32607, -671, -31, 858, 32609, -668, -31, 853, 32611, -665, -31, 848, 32612, -661,
+ -30, 842, 32614, -658, -30, 837, 32616, -655, -30, 832, 32617, -651, -29, 826, 32619, -648,
+ -29, 821, 32621, -645, -29, 816, 32622, -641, -28, 810, 32624, -638, -28, 805, 32626, -635,
+ -28, 800, 32627, -631, -27, 795, 32628, -628, -27, 789, 32631, -625, -27, 784, 32632, -621,
+ -26, 779, 32633, -618, -26, 774, 32635, -615, -26, 768, 32637, -611, -26, 763, 32639, -608,
+ -25, 758, 32640, -605, -25, 753, 32641, -601, -25, 747, 32644, -598, -24, 742, 32644, -594,
+ -24, 737, 32646, -591, -24, 732, 32648, -588, -23, 727, 32648, -584, -23, 722, 32650, -581,
+ -23, 716, 32652, -577, -23, 711, 32654, -574, -22, 706, 32655, -571, -22, 701, 32656, -567,
+ -22, 696, 32658, -564, -21, 691, 32658, -560, -21, 685, 32661, -557, -21, 680, 32662, -553,
+ -21, 675, 32664, -550, -20, 670, 32665, -547, -20, 665, 32666, -543, -20, 660, 32668, -540,
+ -20, 655, 32669, -536, -19, 650, 32670, -533, -19, 645, 32671, -529, -19, 640, 32673, -526,
+ -18, 635, 32673, -522, -18, 630, 32675, -519, -18, 625, 32676, -515, -18, 619, 32679, -512,
+ -17, 614, 32679, -508, -17, 609, 32681, -505, -17, 604, 32683, -502, -17, 599, 32684, -498,
+ -16, 594, 32685, -495, -16, 589, 32686, -491, -16, 584, 32688, -488, -16, 579, 32689, -484,
+ -16, 575, 32690, -481, -15, 570, 32690, -477, -15, 565, 32691, -473, -15, 560, 32693, -470,
+ -15, 555, 32694, -466, -14, 550, 32695, -463, -14, 545, 32696, -459, -14, 540, 32698, -456,
+ -14, 535, 32699, -452, -13, 530, 32700, -449, -13, 525, 32701, -445, -13, 520, 32703, -442,
+ -13, 515, 32704, -438, -13, 511, 32705, -435, -12, 506, 32705, -431, -12, 501, 32706, -427,
+ -12, 496, 32708, -424, -12, 491, 32709, -420, -11, 486, 32710, -417, -11, 481, 32711, -413,
+ -11, 477, 32712, -410, -11, 472, 32713, -406, -11, 467, 32714, -402, -10, 462, 32715, -399,
+ -10, 457, 32716, -395, -10, 453, 32717, -392, -10, 448, 32718, -388, -10, 443, 32719, -384,
+ -10, 438, 32721, -381, -9, 434, 32720, -377, -9, 429, 32721, -373, -9, 424, 32723, -370,
+ -9, 419, 32724, -366, -9, 415, 32725, -363, -8, 410, 32725, -359, -8, 405, 32726, -355,
+ -8, 401, 32727, -352, -8, 396, 32728, -348, -8, 391, 32729, -344, -8, 386, 32731, -341,
+ -7, 382, 32730, -337, -7, 377, 32731, -333, -7, 372, 32733, -330, -7, 368, 32733, -326,
+ -7, 363, 32734, -322, -7, 359, 32735, -319, -6, 354, 32735, -315, -6, 349, 32736, -311,
+ -6, 345, 32737, -308, -6, 340, 32738, -304, -6, 335, 32739, -300, -6, 331, 32740, -297,
+ -6, 326, 32741, -293, -5, 322, 32740, -289, -5, 317, 32741, -285, -5, 313, 32742, -282,
+ -5, 308, 32743, -278, -5, 303, 32744, -274, -5, 299, 32745, -271, -5, 294, 32746, -267,
+ -4, 290, 32745, -263, -4, 285, 32746, -259, -4, 281, 32747, -256, -4, 276, 32748, -252,
+ -4, 272, 32748, -248, -4, 267, 32749, -244, -4, 263, 32750, -241, -4, 258, 32751, -237,
+ -3, 254, 32750, -233, -3, 249, 32751, -229, -3, 245, 32751, -225, -3, 241, 32752, -222,
+ -3, 236, 32753, -218, -3, 232, 32753, -214, -3, 227, 32754, -210, -3, 223, 32755, -207,
+ -3, 218, 32756, -203, -3, 214, 32756, -199, -2, 210, 32755, -195, -2, 205, 32756, -191,
+ -2, 201, 32757, -188, -2, 197, 32757, -184, -2, 192, 32758, -180, -2, 188, 32758, -176,
+ -2, 184, 32758, -172, -2, 179, 32759, -168, -2, 175, 32760, -165, -2, 171, 32760, -161,
+ -2, 166, 32761, -157, -1, 162, 32760, -153, -1, 158, 32760, -149, -1, 153, 32761, -145,
+ -1, 149, 32761, -141, -1, 145, 32762, -138, -1, 140, 32763, -134, -1, 136, 32763, -130,
+ -1, 132, 32763, -126, -1, 128, 32763, -122, -1, 123, 32764, -118, -1, 119, 32764, -114,
+ -1, 115, 32764, -110, -1, 111, 32765, -107, -1, 107, 32765, -103, -1, 102, 32766, -99,
+ -1, 98, 32766, -95, -1, 94, 32766, -91, 0, 90, 32765, -87, 0, 86, 32765, -83,
+ 0, 82, 32765, -79, 0, 77, 32766, -75, 0, 73, 32766, -71, 0, 69, 32766, -67,
+ 0, 65, 32767, -64, 0, 61, 32767, -60, 0, 57, 32767, -56, 0, 53, 32767, -52,
+ 0, 49, 32767, -48, 0, 44, 32767, -44, 0, 40, 32767, -40, 0, 36, 32767, -36,
+ 0, 32, 32767, -32, 0, 28, 32767, -28, 0, 24, 32767, -24, 0, 20, 32767, -20,
+ 0, 16, 32767, -16, 0, 12, 32767, -12, 0, 8, 32767, -8, 0, 4, 32767, -4
+};
--- /dev/null
+++ b/src/ft2_intrp_table.h
@@ -1,0 +1,17 @@
+#pragma once
+
+#include <stdint.h>
+
+// number of bits for fractional sample position in audio mixer
+#define FRAC_BITS 16
+
+#define CUBIC_WIDTH 4
+#define CUBIC_WIDTH_BITS 2
+#define CUBIC_PHASES 4096
+#define CUBIC_PHASES_BITS 12
+
+#define CUBIC_FSHIFT (FRAC_BITS-(CUBIC_PHASES_BITS+CUBIC_WIDTH_BITS))
+#define CUBIC_FMASK ((CUBIC_WIDTH*CUBIC_PHASES)-CUBIC_WIDTH)
+#define CUBIC_QUANTSHIFT 15
+
+extern const int16_t cubicSplineTable[CUBIC_WIDTH * CUBIC_PHASES];
--- a/src/ft2_mix.c
+++ b/src/ft2_mix.c
@@ -2,7 +2,7 @@
#include <stdbool.h>
#include "ft2_mix.h"
#include "ft2_mix_macros.h"
-#include "ft2_tables.h"
+#include "ft2_intrp_table.h"
/*
** --------------------- 32-bit fixed-point audio channel mixer ---------------------
--- a/src/ft2_mix_macros.h
+++ b/src/ft2_mix_macros.h
@@ -106,15 +106,15 @@
// in: int32_t s0,s1,s2,s3 = -128..127 | f = 0..65535 (frac) | out: 16-bit s0 (will exceed 16-bits because of overshoot)
#define INTERPOLATE8(s0, s1, s2, s3, f) \
{ \
- const int16_t *t = fastSincTable + ((f >> 6) & 0x3FC); \
- s0 = ((s0 * t[0]) + (s1 * t[1]) + (s2 * t[2]) + (s3 * t[3])) >> (FAST_SINC_TABLE_BITS - 8); \
+ const int16_t *t = cubicSplineTable + ((f >> CUBIC_FSHIFT) & CUBIC_FMASK); \
+ s0 = ((s0 * t[0]) + (s1 * t[1]) + (s2 * t[2]) + (s3 * t[3])) >> (CUBIC_QUANTSHIFT-8); \
} \
// in: int32_t s0,s1,s2,s3 = -32768..32767 | f = 0..65535 (frac) | out: 16-bit s0 (will exceed 16-bits because of overshoot)
#define INTERPOLATE16(s0, s1, s2, s3, f) \
{ \
- const int16_t *t = fastSincTable + ((f >> 6) & 0x3FC); \
- s0 = ((s0 * t[0]) + (s1 * t[1]) + (s2 * t[2]) + (s3 * t[3])) >> FAST_SINC_TABLE_BITS; \
+ const int16_t *t = cubicSplineTable + ((f >> CUBIC_FSHIFT) & CUBIC_FMASK); \
+ s0 = ((s0 * t[0]) + (s1 * t[1]) + (s2 * t[2]) + (s3 * t[3])) >> CUBIC_QUANTSHIFT; \
} \
#define RENDER_8BIT_SMP_INTRP \
--- a/src/ft2_module_loader.c
+++ b/src/ft2_module_loader.c
@@ -128,7 +128,7 @@
#endif
static volatile uint8_t loadedFormat;
-static volatile bool stereoSamplesWarn, linearFreqTable, musicIsLoading, moduleLoaded, moduleFailedToLoad;
+static volatile bool linearFreqTable, musicIsLoading, moduleLoaded, moduleFailedToLoad;
static uint8_t oldPlayMode, pattBuff[12288];
static const uint8_t stmEff[16] = { 0, 0, 11, 0, 10, 2, 1, 3, 4, 7, 0, 5 ,6, 0, 0, 0 };
static SDL_Thread *thread;
@@ -1108,8 +1108,6 @@
showMsg = fromExternalThread ? okBoxThreadSafe : okBox;
- stereoSamplesWarn = false;
-
rewind(f);
// start loading S3M
@@ -1606,10 +1604,7 @@
len *= 2;
if (stereoSample) // stereo
- {
- stereoSamplesWarn = true;
len *= 2;
- }
tmpSmp = (int8_t *)malloc(len + LOOP_FIX_LEN);
if (tmpSmp == NULL)
@@ -1708,9 +1703,6 @@
}
}
- if (stereoSamplesWarn)
- showMsg(0, "System message", "Stereo samples were found and will be converted to mono.");
-
// non-FT2: fix overflown 9xx and illegal 3xx slides
for (i = 0; i < ap; i++)
@@ -1804,7 +1796,6 @@
showMsg = fromExternalThread ? okBoxThreadSafe : okBox;
- stereoSamplesWarn = false;
linearFreqTable = false;
if (editor.tmpFilenameU == NULL)
@@ -1963,9 +1954,6 @@
}
}
- if (stereoSamplesWarn)
- showMsg(0, "System message", "Stereo samples were found and will be converted to mono.");
-
fclose(f);
moduleLoaded = true;
@@ -2322,8 +2310,6 @@
s->origPek = newPtr;
s->pek = s->origPek + SMP_DAT_OFFSET;
}
-
- stereoSamplesWarn = true;
}
}
--- a/src/ft2_nibbles.c
+++ b/src/ft2_nibbles.c
@@ -23,8 +23,8 @@
"The \"Wrap\" option controls whether it's possible to walk through",
"the screen edges or not. Turn it on and use your brain to get",
"the maximum out of this feature.",
- "The \"Surround\" option turns nibbles into a completely different",
- "game. Don't change this option during play! (You'll see why)",
+ "The \"Surround\" option turns Nibbles into a completely different",
+ "game. Don't change this option during play! (you'll see why)",
"We wish you many hours of fun playing this game."
};
#define NIBBLES_HELP_LINES (sizeof (NI_HelpText) / sizeof (char *))
@@ -43,7 +43,7 @@
static const char nibblesCheatCode1[] = "skip", nibblesCheatCode2[] = "triton";
static char nibblesCheatBuffer[16];
-const char convHexTable2[10] = { 7, 8, 9, 10, 11, 12, 13, 16, 17, 18 };
+static const char convHexTable2[10] = { 7, 8, 9, 10, 11, 12, 13, 16, 17, 18 };
static const uint8_t NI_Speeds[4] = { 12, 8, 6, 4 };
static bool NI_EternalLives;
static uint8_t NI_CheatIndex, NI_CurSpeed, NI_CurTick60Hz, NI_CurSpeed60Hz, NI_Screen[51][23], NI_Level;
@@ -265,7 +265,7 @@
{
if (editor.NI_Play)
{
- okBox(0, "System message", "No highscoretable is available during play.");
+ okBox(0, "System message", "The highscore table is not available during play.");
return;
}
@@ -781,13 +781,13 @@
{
if (editor.NI_Play)
{
- if (okBox(2, "Nibbles request", "Restart the current game of nibbles?") != 1)
+ if (okBox(2, "Nibbles request", "Restart the current game of Nibbles?") != 1)
return;
}
if (config.NI_Surround && config.NI_AntPlayers == 0)
{
- okBox(0, "Nibbles message", "\"Surround\" is not appropriate in one-player mode.");
+ okBox(0, "Nibbles message", "Surround mode is not appropriate in one-player mode.");
return;
}
@@ -812,7 +812,7 @@
{
if (editor.NI_Play)
{
- okBox(0, "System message", "No help available during play.");
+ okBox(0, "System message", "Help is not available during play.");
return;
}
@@ -827,7 +827,7 @@
{
if (editor.NI_Play)
{
- if (okBox(2, "System request", "Quit current game of nibbles?") == 1)
+ if (okBox(2, "System request", "Quit current game of Nibbles?") == 1)
{
editor.NI_Play = false;
exitNibblesScreen();
@@ -910,7 +910,7 @@
{
if (scancode == SDL_SCANCODE_ESCAPE)
{
- if (okBox(2, "System request", "Quit current game of nibbles?") == 1)
+ if (okBox(2, "System request", "Quit current game of Nibbles?") == 1)
{
editor.NI_Play = false;
exitNibblesScreen();
--- a/src/ft2_pattern_ed.c
+++ b/src/ft2_pattern_ed.c
@@ -527,7 +527,7 @@
pushButtons[PB_POSED_PATT_UP].y = 20;
pushButtons[PB_POSED_PATT_DOWN].y = 20;
pushButtons[PB_POSED_DEL].y = 35;
- pushButtons[PB_SWAP_BANK].caption = "Swap b.";
+ pushButtons[PB_SWAP_BANK].caption = "Swap B.";
pushButtons[PB_SWAP_BANK].caption2 = NULL;
pushButtons[PB_SWAP_BANK].x = 162;
pushButtons[PB_SWAP_BANK].y = 35;
@@ -582,7 +582,7 @@
pushButtons[PB_POSED_PATT_DOWN].y = 19;
pushButtons[PB_POSED_DEL].y = 33;
pushButtons[PB_SWAP_BANK].caption = "Swap";
- pushButtons[PB_SWAP_BANK].caption2 = "bank";
+ pushButtons[PB_SWAP_BANK].caption2 = "Bank";
pushButtons[PB_SWAP_BANK].x = 590;
pushButtons[PB_SWAP_BANK].y = 144;
pushButtons[PB_SWAP_BANK].w = 39;
@@ -614,6 +614,11 @@
p->y = iSwitchY[i & 7];
}
}
+
+ // force update even if new values were to be the same as the old ones
+ scrollBars[SB_POS_ED].oldEnd = 0xFFFFFFFF;
+ scrollBars[SB_POS_ED].oldPage = 0xFFFFFFFF;
+ scrollBars[SB_POS_ED].oldPos = 0xFFFFFFFF;
}
void patternEditorExtended(void)
@@ -652,11 +657,6 @@
drawFramework(2, 2, 51, 20, FRAMEWORK_TYPE2);
drawFramework(2, 31, 51, 20, FRAMEWORK_TYPE2);
-
- // force updating of end/page/length when showing scrollbar
- scrollBars[SB_POS_ED].oldEnd = 0xFFFFFFFF;
- scrollBars[SB_POS_ED].oldPage = 0xFFFFFFFF;
- scrollBars[SB_POS_ED].oldPos = 0xFFFFFFFF;
showScrollBar(SB_POS_ED);
--- a/src/ft2_pushbuttons.c
+++ b/src/ft2_pushbuttons.c
@@ -126,7 +126,7 @@
{ 590, 90, 39, 16, 0, 0, "69-70", NULL, NULL, pbSetInstrBank14 },
{ 590, 107, 39, 16, 0, 0, "71-78", NULL, NULL, pbSetInstrBank15 },
{ 590, 124, 39, 16, 0, 0, "79-80", NULL, NULL, pbSetInstrBank16 },
- { 590, 144, 39, 27, 0, 0, "Swap", "bank", NULL, pbSwapInstrBank },
+ { 590, 144, 39, 27, 0, 0, "Swap", "Bank", NULL, pbSwapInstrBank },
{ 566, 99, 18, 13, 1, 4, ARROW_UP_STRING, NULL, sampleListScrollUp, NULL },
{ 566, 140, 18, 13, 1, 4, ARROW_DOWN_STRING, NULL, sampleListScrollDown, NULL },
@@ -151,8 +151,8 @@
// ------ HELP SCREEN PUSHBUTTONS ------
//x, y, w, h, p, d, text #1, text #2, funcOnDown, funcOnUp
{ 3, 155, 59, 16, 0, 0, "Exit", NULL, NULL, exitHelpScreen },
- { 611, 2, 18, 13, 0, 0, ARROW_UP_STRING, NULL, helpScrollUp, NULL },
- { 611, 158, 18, 13, 0, 0, ARROW_DOWN_STRING, NULL, helpScrollDown, NULL },
+ { 611, 2, 18, 13, 1, 2, ARROW_UP_STRING, NULL, helpScrollUp, NULL },
+ { 611, 158, 18, 13, 1, 2, ARROW_DOWN_STRING, NULL, helpScrollDown, NULL },
// ------ PATTERN EDITOR PUSHBUTTONS ------
//x, y, w, h, p, d, text #1, text #2, funcOnDown, funcOnUp
@@ -357,7 +357,7 @@
{ 70, 2, 58, 16, 0, 0, "Save", NULL, NULL, pbDiskOpSave },
{ 70, 19, 58, 16, 0, 0, "Delete", NULL, NULL, pbDiskOpDelete },
{ 70, 36, 58, 16, 0, 0, "Rename", NULL, NULL, pbDiskOpRename },
- { 70, 53, 58, 16, 0, 0, "Make dir", NULL, NULL, pbDiskOpMakeDir },
+ { 70, 53, 58, 16, 0, 0, "Make dir.", NULL, NULL, pbDiskOpMakeDir },
{ 70, 70, 58, 16, 0, 0, "Refresh", NULL, NULL, pbDiskOpRefresh },
{ 70, 87, 58, 16, 0, 0, "Set path", NULL, NULL, pbDiskOpSetPath },
{ 70, 104, 58, 16, 0, 0, "Show all", NULL, NULL, pbDiskOpShowAll },
--- a/src/ft2_pushbuttons.h
+++ b/src/ft2_pushbuttons.h
@@ -346,7 +346,7 @@
#define RADIOBUTTON_STATES 3
// amount of frames to wait
-#define BUTTON_DOWN_DELAY 8
+#define BUTTON_DOWN_DELAY 16
// font #1/#2 special characters (used for buttons)
#define ARROW_UP_STRING "\x05"
--- a/src/ft2_replayer.c
+++ b/src/ft2_replayer.c
@@ -1502,37 +1502,37 @@
}
}
-int16_t relocateTon(int16_t period, int8_t relativeNote, stmTyp *ch)
+// for arpeggio and portamento (semitone-slide mode)
+static int16_t relocateTon(int16_t period, uint8_t arpNote, stmTyp *ch)
{
- int8_t fineTune;
- int32_t loPeriod, hiPeriod, tmpPeriod, tableIndex;
+ int32_t fineTune, loPeriod, hiPeriod, tmpPeriod, tableIndex;
- fineTune = (ch->fineTune >> 3) + 16;
- hiPeriod = 8 * 12 * 16;
+ fineTune = ((ch->fineTune >> 3) + 16) << 1;
+ hiPeriod = (8 * 12 * 16) * 2;
loPeriod = 0;
for (int8_t i = 0; i < 8; i++)
{
- tmpPeriod = (((loPeriod + hiPeriod) >> 1) & 0xFFFFFFF0) + fineTune;
+ tmpPeriod = (((loPeriod + hiPeriod) >> 1) & 0xFFFFFFE0) + fineTune;
- tableIndex = tmpPeriod - 8;
- if (tableIndex < 0) // added security check
- tableIndex = 0;
+ tableIndex = (tmpPeriod - 16) >> 1;
+ tableIndex = CLAMP(tableIndex, 0, 1935); // 8bitbubsy: added security check
if (period >= note2Period[tableIndex])
- hiPeriod = tmpPeriod - fineTune;
+ hiPeriod = (tmpPeriod - fineTune) & 0xFFFFFFE0;
else
- loPeriod = tmpPeriod - fineTune;
+ loPeriod = (tmpPeriod - fineTune) & 0xFFFFFFE0;
}
- tmpPeriod = loPeriod + fineTune + (relativeNote << 4);
- if (tmpPeriod < 0) // added security check
+ tmpPeriod = loPeriod + fineTune + (arpNote << 5);
+
+ if (tmpPeriod < 0) // 8bitbubsy: added security check
tmpPeriod = 0;
- if (tmpPeriod >= ((8*12*16)+15)-1) // FT2 bug: off-by-one edge case
- tmpPeriod = (8*12*16)+15;
+ if (tmpPeriod >= (8*12*16+15)*2-1) // FT2 bug: off-by-one edge case
+ tmpPeriod = (8*12*16+15)*2;
- return note2Period[tmpPeriod];
+ return note2Period[tmpPeriod>>1];
}
static void tonePorta(stmTyp *ch)
@@ -1559,7 +1559,7 @@
}
}
- if (ch->glissFunk) // semi-tone slide flag
+ if (ch->glissFunk) // semitone-slide flag
ch->outPeriod = relocateTon(ch->realPeriod, 0, ch);
else
ch->outPeriod = ch->realPeriod;
--- a/src/ft2_replayer.h
+++ b/src/ft2_replayer.h
@@ -244,7 +244,6 @@
void resetOldRates(void);
void tuneSample(sampleTyp *s, int32_t midCFreq);
uint32_t getFrequenceValue(int32_t period);
-int16_t relocateTon(int16_t period, int8_t relativeNote, stmTyp *ch);
bool allocateInstr(int16_t nr);
void freeInstr(int16_t nr);
--- a/src/ft2_tables.c
+++ b/src/ft2_tables.c
@@ -436,80 +436,6 @@
65536
};
-/* 8bitbubsy: This table was taken from Tables.cpp (the OpenMPT project)
-**
-** Comment from Tables.cpp:
-** "Reversed sinc coefficients for 4x256 taps polyphase FIR resampling filter (SchismTracker's lutgen.c
-** should generate a very similar table, but it's more precise)"
-*/
-const int16_t fastSincTable[256 * 4] =
-{ // Cubic Spline
- 0, 16384, 0, 0, -31, 16383, 32, 0, -63, 16381, 65, 0, -93, 16378, 100, -1,
- -124, 16374, 135, -1, -153, 16368, 172, -3, -183, 16361, 209, -4, -211, 16353, 247, -5,
- -240, 16344, 287, -7, -268, 16334, 327, -9, -295, 16322, 368, -12, -322, 16310, 410, -14,
- -348, 16296, 453, -17, -374, 16281, 497, -20, -400, 16265, 541, -23, -425, 16248, 587, -26,
- -450, 16230, 634, -30, -474, 16210, 681, -33, -497, 16190, 729, -37, -521, 16168, 778, -41,
- -543, 16145, 828, -46, -566, 16121, 878, -50, -588, 16097, 930, -55, -609, 16071, 982, -60,
- -630, 16044, 1035, -65, -651, 16016, 1089, -70, -671, 15987, 1144, -75, -691, 15957, 1199, -81,
- -710, 15926, 1255, -87, -729, 15894, 1312, -93, -748, 15861, 1370, -99, -766, 15827, 1428, -105,
- -784, 15792, 1488, -112, -801, 15756, 1547, -118, -818, 15719, 1608, -125, -834, 15681, 1669, -132,
- -850, 15642, 1731, -139, -866, 15602, 1794, -146, -881, 15561, 1857, -153, -896, 15520, 1921, -161,
- -911, 15477, 1986, -168, -925, 15434, 2051, -176, -939, 15390, 2117, -184, -952, 15344, 2184, -192,
- -965, 15298, 2251, -200, -978, 15251, 2319, -208, -990, 15204, 2387, -216, -1002, 15155, 2456, -225,
- -1014, 15106, 2526, -234, -1025, 15055, 2596, -242, -1036, 15004, 2666, -251, -1046, 14952, 2738, -260,
- -1056, 14899, 2810, -269, -1066, 14846, 2882, -278, -1075, 14792, 2955, -287, -1084, 14737, 3028, -296,
- -1093, 14681, 3102, -306, -1102, 14624, 3177, -315, -1110, 14567, 3252, -325, -1118, 14509, 3327, -334,
- -1125, 14450, 3403, -344, -1132, 14390, 3480, -354, -1139, 14330, 3556, -364, -1145, 14269, 3634, -374,
- -1152, 14208, 3712, -384, -1157, 14145, 3790, -394, -1163, 14082, 3868, -404, -1168, 14018, 3947, -414,
- -1173, 13954, 4027, -424, -1178, 13889, 4107, -434, -1182, 13823, 4187, -445, -1186, 13757, 4268, -455,
- -1190, 13690, 4349, -465, -1193, 13623, 4430, -476, -1196, 13555, 4512, -486, -1199, 13486, 4594, -497,
- -1202, 13417, 4676, -507, -1204, 13347, 4759, -518, -1206, 13276, 4842, -528, -1208, 13205, 4926, -539,
- -1210, 13134, 5010, -550, -1211, 13061, 5094, -560, -1212, 12989, 5178, -571, -1212, 12915, 5262, -581,
- -1213, 12842, 5347, -592, -1213, 12767, 5432, -603, -1213, 12693, 5518, -613, -1213, 12617, 5603, -624,
- -1212, 12542, 5689, -635, -1211, 12466, 5775, -645, -1210, 12389, 5862, -656, -1209, 12312, 5948, -667,
- -1208, 12234, 6035, -677, -1206, 12156, 6122, -688, -1204, 12078, 6209, -698, -1202, 11999, 6296, -709,
- -1200, 11920, 6384, -720, -1197, 11840, 6471, -730, -1194, 11760, 6559, -740, -1191, 11679, 6647, -751,
- -1188, 11598, 6735, -761, -1184, 11517, 6823, -772, -1181, 11436, 6911, -782, -1177, 11354, 6999, -792,
- -1173, 11271, 7088, -802, -1168, 11189, 7176, -812, -1164, 11106, 7265, -822, -1159, 11022, 7354, -832,
- -1155, 10939, 7442, -842, -1150, 10855, 7531, -852, -1144, 10771, 7620, -862, -1139, 10686, 7709, -872,
- -1134, 10602, 7798, -882, -1128, 10516, 7886, -891, -1122, 10431, 7975, -901, -1116, 10346, 8064, -910,
- -1110, 10260, 8153, -919, -1103, 10174, 8242, -929, -1097, 10088, 8331, -938, -1090, 10001, 8420, -947,
- -1083, 9915, 8508, -956, -1076, 9828, 8597, -965, -1069, 9741, 8686, -973, -1062, 9654, 8774, -982,
- -1054, 9566, 8863, -991, -1047, 9479, 8951, -999, -1039, 9391, 9039, -1007, -1031, 9303, 9127, -1015,
- -1024, 9216, 9216, -1024, -1015, 9127, 9303, -1031, -1007, 9039, 9391, -1039, -999, 8951, 9479, -1047,
- -991, 8863, 9566, -1054, -982, 8774, 9654, -1062, -973, 8686, 9741, -1069, -965, 8597, 9828, -1076,
- -956, 8508, 9915, -1083, -947, 8420, 10001, -1090, -938, 8331, 10088, -1097, -929, 8242, 10174, -1103,
- -919, 8153, 10260, -1110, -910, 8064, 10346, -1116, -901, 7975, 10431, -1122, -891, 7886, 10516, -1128,
- -882, 7798, 10602, -1134, -872, 7709, 10686, -1139, -862, 7620, 10771, -1144, -852, 7531, 10855, -1150,
- -842, 7442, 10939, -1155, -832, 7354, 11022, -1159, -822, 7265, 11106, -1164, -812, 7176, 11189, -1168,
- -802, 7088, 11271, -1173, -792, 6999, 11354, -1177, -782, 6911, 11436, -1181, -772, 6823, 11517, -1184,
- -761, 6735, 11598, -1188, -751, 6647, 11679, -1191, -740, 6559, 11760, -1194, -730, 6471, 11840, -1197,
- -720, 6384, 11920, -1200, -709, 6296, 11999, -1202, -698, 6209, 12078, -1204, -688, 6122, 12156, -1206,
- -677, 6035, 12234, -1208, -667, 5948, 12312, -1209, -656, 5862, 12389, -1210, -645, 5775, 12466, -1211,
- -635, 5689, 12542, -1212, -624, 5603, 12617, -1213, -613, 5518, 12693, -1213, -603, 5432, 12767, -1213,
- -592, 5347, 12842, -1213, -581, 5262, 12915, -1212, -571, 5178, 12989, -1212, -560, 5094, 13061, -1211,
- -550, 5010, 13134, -1210, -539, 4926, 13205, -1208, -528, 4842, 13276, -1206, -518, 4759, 13347, -1204,
- -507, 4676, 13417, -1202, -497, 4594, 13486, -1199, -486, 4512, 13555, -1196, -476, 4430, 13623, -1193,
- -465, 4349, 13690, -1190, -455, 4268, 13757, -1186, -445, 4187, 13823, -1182, -434, 4107, 13889, -1178,
- -424, 4027, 13954, -1173, -414, 3947, 14018, -1168, -404, 3868, 14082, -1163, -394, 3790, 14145, -1157,
- -384, 3712, 14208, -1152, -374, 3634, 14269, -1145, -364, 3556, 14330, -1139, -354, 3480, 14390, -1132,
- -344, 3403, 14450, -1125, -334, 3327, 14509, -1118, -325, 3252, 14567, -1110, -315, 3177, 14624, -1102,
- -306, 3102, 14681, -1093, -296, 3028, 14737, -1084, -287, 2955, 14792, -1075, -278, 2882, 14846, -1066,
- -269, 2810, 14899, -1056, -260, 2738, 14952, -1046, -251, 2666, 15004, -1036, -242, 2596, 15055, -1025,
- -234, 2526, 15106, -1014, -225, 2456, 15155, -1002, -216, 2387, 15204, -990, -208, 2319, 15251, -978,
- -200, 2251, 15298, -965, -192, 2184, 15344, -952, -184, 2117, 15390, -939, -176, 2051, 15434, -925,
- -168, 1986, 15477, -911, -161, 1921, 15520, -896, -153, 1857, 15561, -881, -146, 1794, 15602, -866,
- -139, 1731, 15642, -850, -132, 1669, 15681, -834, -125, 1608, 15719, -818, -118, 1547, 15756, -801,
- -112, 1488, 15792, -784, -105, 1428, 15827, -766, -99, 1370, 15861, -748, -93, 1312, 15894, -729,
- -87, 1255, 15926, -710, -81, 1199, 15957, -691, -75, 1144, 15987, -671, -70, 1089, 16016, -651,
- -65, 1035, 16044, -630, -60, 982, 16071, -609, -55, 930, 16097, -588, -50, 878, 16121, -566,
- -46, 828, 16145, -543, -41, 778, 16168, -521, -37, 729, 16190, -497, -33, 681, 16210, -474,
- -30, 634, 16230, -450, -26, 587, 16248, -425, -23, 541, 16265, -400, -20, 497, 16281, -374,
- -17, 453, 16296, -348, -14, 410, 16310, -322, -12, 368, 16322, -295, -9, 327, 16334, -268,
- -7, 287, 16344, -240, -5, 247, 16353, -211, -4, 209, 16361, -183, -3, 172, 16368, -153,
- -1, 135, 16374, -124, -1, 100, 16378, -93, 0, 65, 16381, -63, 0, 32, 16383, -31
-};
-
/* ----------------------------------------------------------------------- */
/* GUI TABLES */
/* ----------------------------------------------------------------------- */
@@ -831,7 +757,7 @@
'0', '1', '2'
};
-const int16_t sinusTables[256 * 5] =
+const int16_t sinusTables[256 * 5] = // for 3D stars in About screen
{
0, 201, 402, 603, 804, 1005, 1206, 1407, 1608, 1809,
2009, 2210, 2410, 2611, 2811, 3011, 3212, 3412, 3612, 3811,
--- a/src/ft2_tables.h
+++ b/src/ft2_tables.h
@@ -7,7 +7,6 @@
#include "ft2_config.h" // CONFIG_FILE_SIZE
#define LOG_TABLE_BITS 24
-#define FAST_SINC_TABLE_BITS 14
#define KEY2VOL_ENTRIES (signed)(sizeof (key2VolTab) / sizeof (SDL_Keycode))
#define KEY2EFX_ENTRIES (signed)(sizeof (key2EfxTab) / sizeof (SDL_Keycode))
@@ -22,12 +21,11 @@
extern const uint32_t logTab[768];
extern const uint32_t panningTab[257];
-extern const int16_t fastSincTable[256 * 4];
extern pal16 palTable[12][16];
extern const uint16_t chanWidths[6];
extern const pattCoordsMouse_t pattCoordMouseTable[2][2][2];
-extern const int16_t sinusTables[256 * 5];
+extern const int16_t sinusTables[256 * 5]; // for 3D stars in About screen
extern const uint8_t noteTab1[96];
extern const uint8_t noteTab2[96];
extern const uint8_t hex2Dec[256];
--- a/vs2019_project/ft2-clone/ft2-clone.vcxproj
+++ b/vs2019_project/ft2-clone/ft2-clone.vcxproj
@@ -141,7 +141,7 @@
<PostBuildEvent />
<Manifest />
<Manifest>
- <EnableDpiAwareness>true</EnableDpiAwareness>
+ <EnableDpiAwareness>PerMonitorHighDPIAware</EnableDpiAwareness>
</Manifest>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
@@ -212,7 +212,7 @@
</ResourceCompile>
<Manifest />
<Manifest>
- <EnableDpiAwareness>true</EnableDpiAwareness>
+ <EnableDpiAwareness>PerMonitorHighDPIAware</EnableDpiAwareness>
</Manifest>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
@@ -258,7 +258,7 @@
</Command>
</PreBuildEvent>
<Manifest>
- <EnableDpiAwareness>true</EnableDpiAwareness>
+ <EnableDpiAwareness>PerMonitorHighDPIAware</EnableDpiAwareness>
</Manifest>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
@@ -312,7 +312,7 @@
<PreprocessorDefinitions>_WIN64</PreprocessorDefinitions>
</ResourceCompile>
<Manifest>
- <EnableDpiAwareness>true</EnableDpiAwareness>
+ <EnableDpiAwareness>PerMonitorHighDPIAware</EnableDpiAwareness>
</Manifest>
</ItemDefinitionGroup>
<ItemGroup>
@@ -334,6 +334,7 @@
<ClCompile Include="..\..\src\ft2_gui.c" />
<ClCompile Include="..\..\src\ft2_help.c" />
<ClCompile Include="..\..\src\ft2_inst_ed.c" />
+ <ClCompile Include="..\..\src\ft2_intrp_table.c" />
<ClCompile Include="..\..\src\ft2_keyboard.c" />
<ClCompile Include="..\..\src\ft2_main.c" />
<ClCompile Include="..\..\src\ft2_midi.c" />
@@ -402,6 +403,7 @@
<ClInclude Include="..\..\src\ft2_header.h" />
<ClInclude Include="..\..\src\ft2_help.h" />
<ClInclude Include="..\..\src\ft2_inst_ed.h" />
+ <ClInclude Include="..\..\src\ft2_intrp_table.h" />
<ClInclude Include="..\..\src\ft2_keyboard.h" />
<ClInclude Include="..\..\src\ft2_midi.h" />
<ClInclude Include="..\..\src\ft2_mix.h" />
--- a/vs2019_project/ft2-clone/ft2-clone.vcxproj.filters
+++ b/vs2019_project/ft2-clone/ft2-clone.vcxproj.filters
@@ -71,6 +71,7 @@
<ClCompile Include="..\..\src\ft2_palette.c" />
<ClCompile Include="..\..\src\ft2_scopedraw.c" />
<ClCompile Include="..\..\src\ft2_tables.c" />
+ <ClCompile Include="..\..\src\ft2_intrp_table.c" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\src\ft2_audio.h">
@@ -203,6 +204,9 @@
<Filter>headers</Filter>
</ClInclude>
<ClInclude Include="..\..\src\ft2_tables.h">
+ <Filter>headers</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\src\ft2_intrp_table.h">
<Filter>headers</Filter>
</ClInclude>
</ItemGroup>